1、i 安徽农业大学经济技术学院 C+程序设计课程设计报告书 20192019 年 1212 月 2525 日 课题名称 姓 名 学 号 院 系 专 业 指导 教师 起止 日期 XXX 通讯录管理系统 XXX XXX XXX 软件工程 2019 年 12 月 25 日 2 C+程序设计课程设计任务书 下达时间: 20192019 年 1212 月 2323 日 设计时间:一周 指导教师: XXXXXX完成班级: 20182018 级软件工程专业 【设计目的】 本课程设计是在学生学完C+C+课程后进行的一次全面的综合练习,是计 算机学科重要的实 践性环节之一, 目的旨在利用编程知识与技巧, 达到理论
2、与实 践的统一。做到: (1 1) 巩固和加深对 C+C+g序设计课程的基本知识的理解和掌握; (2 2) 掌握和提高 C+C+编程和程序调试基本技能; ( 3 3) 进一步理解和运用结构化程序设计的思想和方法; ( 4 4) 基本掌握面向对象程序设计的基本思路和方法; (5 5)提高运用 C+C+解决简单的面向对象的程序设计问题的能力; ( 6 6) 掌握科学地撰写程序设计说明文档和总结报告的能力。 【设计内容和任务】 可以在指定的题目中任意选择一题, 也可以自选题目, 若选题相同, 程序基 本相同或撰写 报告基本相同的情况下, 经查证属于相互抄袭的, 均以零分计入成 绩。参考题目如下: 1
3、 1、GPAGPA 计算器 2 2、学生信息管理系统 3 3、学生成绩管理系统 4 4、商品库存管理系统 5 5、图书馆管理系统 6 6、职工工资信息管理系统 7 7、聊天程序 8 8、通讯录 【设计要求】 采用教师指导、 学生自学和独立编程的操作方式, 先由学生查阅与本课程设 计有关的书籍 和资料,利用 visualvisual C+6.0C+6.0 设计环境与开发工具,要求如下: 1 1 、分析课程设计题目 2 2、 写出详细设计说明; 3 3、 编写程序代码、调试程序使其能正确运行,能正确地接受输入,产生正 确的结果,界面 友好,便于操作和使用; 4 4、课题完成后必须按要求提交课程设计
4、报告,且设计报告必须符合规范 【设计报告】 装订 顺序依次为封面、任务书、目录、正文、参考文献、附录。 正文内容包括:系统需求分析,总体设 计,详细设计,系统调试,结果分析 和总结等。 3 正文格式如下:一级标题(左对齐,宋体粗四号),二级标题(左对齐,宋体小四号,加粗) ; 正文:小四,宋体,两边分散对齐;行间距 1.151.15 倍;左边距:3cm3cm,右边距 2cm2cm; 【提交要求】 每位同学提交纸质设计报告书一份 (用 A4A4 纸双面打印),要求编排格式统一、 规 范,内容充实,并附带电子版 (以自己的学号和姓名命名文件名 ) 。 【设计时间与地点】时间:共一周,包括实习动员与
5、任务布置;查阅资料、分析与设计;编写程序, 进行调试;成果验收,完成设计报告。 地点:实验室、图书馆等 【设计成绩评定】 设计成绩是依据在设计中的表现综合评定,包括: 设计纪律( 10%10%):设计中 遵守纪律,服从管理,以及设计态度等因素,如 有严重违纪,可按学校有关规定直接评为不及格。 设计正确性( 40%40%):根据设计运行正常和异常评定相应等级 设计界面( 10%10%):根据图形 界面评定 设计报告( 30%30%):设计报告的完成情况 考核形式( 10%10%):通过提问及验收时间 等评定 备注:在实验结果的基础上, 发表了学术论文的同学可以直接评为优秀成绩。 目录 通讯录管理
6、系统 . 5 一、系统简介 . 5 二、系统演示 . 6 2.1 、通讯录管理系统功能图 .6 6 2.2 、各功能说明 .7 7 三、软件设计 . 7 3.1 、总体设计(主函数设计) .7 7 3.2 、主页面设计 .8 8 3.3 、各功能实现 .9 9 3.3.1 、添加联系人 . 9 3.3.2 、显示联系人 . 11 4 3.3.3 、删除联系人 . 13 3.3.4 、查找联系人 . 14 3.3.5 、修改联系人 . 15 3.3.6 、清空联系人 . 17 3.3.7 、退出系统 . 17 3.4 、系统调试 .1818 四、总结 . 18 4.1 、设计心得 .1818 4
7、.2 、设计不足之处 .1818 五、附录 . 19 5 5.1 参考文献.1919 5.2 源程序代码.1919 通讯录管理系统 系统简介 通讯录管理系统 项目名称通讯录管理系统作者XXXXXX 时间20192019 年 1212 月 2525 日班级1818 软件工程 1 1 班 代码量300300 行编程环境VisualVisual StudioStudio 20132013 项目简介 本通讯录信息管理系统用计算机管理电子通讯录的一种计算机应用 技术的创新,在计算机还未普及之前通讯管理都是由联系人采用名片,笔 录手工记账的方式来操作的现在一般的通讯录管理都是采用计算机作为 工具的实用的
8、计算机通讯录管理程序来帮助人们进行更有效的通讯录信 息管理。通讯录管理系统是典型的信息管理系统,其开发主要包括后台数 据库的建立和维护以及前端应用程序的开发两个方面。要求应用程序功能 完备, ,易使用等特点。 6 实现通讯录管理系统的基本功能,可以实现电话用户的查 询、电话 号码的查询、电话号码所在地的查询、电话号码的添加 及删除、修改等功能,以方 便人们的记录和通讯。 二、系统演示 2.1、通讯录管理系统功能图 项目目的 7 2.2、各功能说明 该程序可以实现通讯录管理系统的一些基本功能, 比如手机用户的查询、 话号 码的查询、电话号码所在地的查询、电话号码的添加及删除、修改等功能 以方便人
9、们 的记录和通讯。 三、软件设计 3.1、总体设计(主函数设计) 主函数中调用的大量的自定义函数,首先设置通讯录结构体变量, 调用主菜单界面, 示主菜单。然后通过一个选择语句, 实现功能的选择。在外面嵌套循环语句,实现程序反复 使用。主 函数代码如下: int main() Addressbooks abs; II 通讯录中结构体变量 abs.m_Size = 0; II 初始化人数 int seclect; II 用户选择的功能 while ( true ) showMenu(); II 菜单显示功能 cout 请选择功能: seclect; II 用户输入选择的功能 switch (sec
10、lect) break; case 5: modifyPerso n( break; 8 case 6: clea nPers on( break; case 0: /退岀系统 cout 已退岀系统 endl; system( pause); return 0; break; system( pause); return 0; 3.2、主页面设计 该功能主要是显示用户使用界面,以便提升用户的交互体验。菜单显示功能代码如下: void showMenu()菜单显示功能 cout en dl; cout * 1 、添加联系人*en dl; cout * 2 、显示联系人*en dl; cout *
11、 3、删除联系人*en dl; cout * 4、查找联系人*en dl; cout * 5、修改联系人*en dl; cout * 6 、清空联系人*en dl; cout * 0 、退岀系统*en dl; cout m Size = MAX判断通讯录中人数是否已满 cout 通讯录已满,无法添加 endl; return else /添加姓名 stri ng n ame; cout 请输入姓名: n ame; abs-pers on Array abs-m_Size.m_Name = n ame; /添加性别 int sex = 0; 11 cout 请输入性别:1.男 2. 女 sex;
12、 if (sex = 1 | sex = 2) abs-personArray abs-m Size.m Sex = sex; break; cout 输入有误,请重新输入: endl; /添加年龄 int age; cout 请输入年龄: age; abs-pers on Array abs-m_Size.m_Age = age; /添加联系电话 stri ng pho ne; cout 请输入联系电话: phone; abs-pers on Array abs-m_Size.m_Ph one = phone; /添加家庭住址 stri ng address; cout 请输入家庭住址: a
13、ddress; abs-pers on Array abs-m_Size.m_Addr = address; abs-m Size+; /更新通讯录人数 cout 添加成功m Size = 0) cout 当前记录为空 endl; else for ( int i = 0; i m_Size; i+) cout 姓名:personArrayi.m Name t; cout 性别:personArrayi.m_Sex = 1 ?男:女) t cout 年龄:personArrayi.m Age t; cout 电话:personArrayi.m Phone t; cout 住址:personAr
14、rayi.m_Addr endl; system( pause); system( cls); /查询联系人 int isExist( Addressbooks * abs, stringname for ( int i = 0; i m_Size; i+) 13 if ( abs-personArrayi.m Name =name return i; /如果有此人,返回下标 return -1; /如果没有此人,返回-1 3.3.3、删除联系人 删除联系人功能是输入联系人的联系方式(号码)或者姓名,即可删除联系人的信息。 在这里用了判断的语句,如果删除联系人在所在的库里(即1 1、添加联系人
15、),则会提示 删 除成功!否则会提示查无此人。 删除联系人函数代码如下: 3、删除联系人 void deletePerson( Addressbooks * abs) cout 请输入需要删除的联系人: n ame; 14 int ret = isExist( abs, name); if (ret != -1) for (int i = ret; i m_Size; i+) else cout 查无此人 endl; system( pause); system( cls); 3.3.4、查找联系人 该函数的主要功能是输入联系人姓名或者某一类属性,便可以显示该属性下存在的所有 联系人的信息。如
16、果没有发现此类属性,则提示查无此人! 查找联系人函数代码如下: II4、查找联系人 void findPerson( Addressbooks * abs) cout 请输入需要查找的联系人: n ame; int ret = isExist( abs, name); if (ret != -1) cout 姓名:personArrayret.m Name t; cout 性别:personArrayret.m_Sex = 1 ?男:女) t cout 年龄:personArrayret.m Age t; cout 电话:personArrayret.m_Phone t; cout 住址:pe
17、rsonArrayret.m_Addr endl; else J cout 查无此人 endl; 15 system( pause); system( cls); 3.3.5、修改联系人 选择修改联系人,可以输入联系人姓名信息接入更改选项,重新输入联系人信息, 便会 在原有的数据基础上修改数据。修改完成后,提示修改成功! 修改指定联系人代码如下: 5、修改指定联系人信息 void modifyPerson( Addressbooks * abs) cout 请输入需要修改的联系人: n ame; int ret = isExist( abs, name); if (ret != -1) 16
18、/添加姓名 stri ng n ame; cout 请输入姓名: n ame; abs-pers on Arrayret.m_Name = n ame; /添加性别 int sex = 0; cout 请输入性别:1.男 2. 女 sex; if (sex = 1 | sex = 2) cout 输入有误,请重新输入: endl; /添加年龄 int age; cout 请输入年龄: age; abs-pers on Arrayret.m_Age = age; /添加联系电话 stri ng pho ne; cout 请输入联系电话: phone; abs-pers on Arrayret.m
19、_Ph one = pho ne; /添加家庭住址 stri ng address; cout 请输入家庭住址: address; abs-pers on Arrayret.m_Addr = address; cout 修改成功 endl; else cout 查无此人 endl; system( pause); system( cls); 3.3.6、清空联系人 选择清空联系人,便可以清空已经保存的联系人所有的数据。 清空联系人代码如下: /6、清空联系人 void cleanPerson( Addressbooks * abs) char clew; cout 是否确认清空?( y/n )
20、 clew; if (clew =y) abs-m_Size = 0; cout 通讯录已清空! endl; else system( pause); system( cls); 3.3.7、退出系统 在主函数中实现,实现直接退出系统。代码如下: switch (seclect) 18 fin dPers on( break; clea nPers on( break; case 0: /退岀系统 cout 已退岀系统 endl; system( pause); return 0; break; 3.4、系统调试 四、总结 4.1、设计心得 经过这次C语言课程设计,让我学到了很多有用的东西,巩
21、固了之前的学习, 让我 学到了在教室和做题中学不到的一些知识,通过这个课程设计的学习,使我初步理解和运用 结构化程序设计的思想和方法。 其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:返回值函数 两者在主函数中的调用是不同的。C语言的一些标准库函数不太了解, 容易忘记添加头文件 就调用函数,往 往形成错误找了很久没找到,还有对函数调用的正确使用不够熟悉。 更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C C 语言的重要性。这个通讯录管理系统都是在自己知识范围内完成的,界面清晰简单,绝对实 用。 通过 C C 语言课程设计的学习, 我认识到学好计算机知
22、识需要我们不断的实践操作,只 有重视实践操作,才能学到最有用的知识。 不仅仅是学习 C C 语言,学习其他知识,都要重在 实践,所以后在 学习过程中,我会更加注视实践操作,使自己学到有用的知识。 4.2、设计不足之处 首先是: :本来 C C 语言文件操作。上课是不太熟的,但这个课程设计里面需要用到了文件 的调用、打开和保 存方式,所以我并没有使用文件操作来保存数据。因为要达到多种功能, 19 五、附录 5.1 参考文献 11 谭浩强C+C+程序设计(第三版)清华大学出版社 20152015 22 吴国栋、孙立C C 语言程序设计教程中国农业出版社 33 哗哩哗哩黑马程序员匠心之作|C+|C+
23、教程从 0 0 到 1 1 入门编程。 5.2 源程序代码 程序源代码如下: #i nclude iostream #i nclude stri ng #define MAX1000 II 最大人数 using namespacestd; void showMenu()菜单显示功能 cout en dl; cout * 1 、添加联系人*en dl; cout * 2 、显示联系人*en dl; cout * 3、删除联系人*en dl; cout * 4、查找联系人*en dl; cout * 5、修改联系人*en dl; cout * 6 、清空联系人*en dl; cout * 0 、退
24、出系统 *en dl; cout m Size = MAX判断通讯录中人数是否已满 cout 通讯录已满,无法添加 endl; return ; else /添加姓名 stri ng n ame; cout 请输入姓名: n ame; abs-pers on Array abs-m_Size.m_Name = n ame; /添加性别 int sex = 0; cout 请输入性别:1.男 2. 女 sex; if (sex = 1 | sex = 2) cout 输入有误,请重新输入: endl; /添加年龄 int age; cout 请输入年龄: age; abs-pers on Arr
25、ay abs-m_Size.m_Age = age; /添加联系电话 stri ng pho ne; cout 请输入联系电话: phone; 21 abs-pers on Array abs-m_Size.m_Ph one = phone; /添加家庭住址 stri ng address; cout 请输入家庭住址: address; abs-pers on Array abs-m_Size.m_Addr = address; abs-m_Size+; /更新通讯录人数 cout 添加成功m Size = 0) cout 当前记录为空 endl; else for ( int i = 0;
26、i m_Size; i+) cout 姓名:personArrayi.m Name t; cout 性别:personArrayi.m_Sex = 1 ?男:女) t cout 年龄:personArrayi.m Age t; cout 电话:personArrayi.m Phone t; cout 住址:personArrayi.m_Addr endl; system( pause); system( cls); /查询联系人 int isExist( Addressbooks * abs, stringname 22 f c )r ( int i = 0; i m Size; i+) if
27、(abs-personArrayi.m Name =n ame return i; /如果有此人,返回下标 return 1; /如果没有此人,返回-1 /3、删除联系人 void deletePerson( Addressbooks * abs) cout 请输入需要删除的联系人: n ame; int ret = isExist( abs, name); if (ret != -1) for (int i = ret; i m_Size; i+) abs-pers on Arrayi =abs-pers on Arrayi + 1; abs-m_Size-; cout 删除成功! endl
28、; else cout 查无此人 endl; system( pause); system( cls); /4、查找联系人 void findPerson( Addressbooks * abs) cout 请输入需要查找的联系人: n ame; int ret = isExist( abs, name); if (ret != -1) cout 姓名:personArrayret.m_Name t 23 cout 性别: personArrayret.m Sex = 1 ? 男:女) t; cout 年龄:personArrayret.m_Age t; cout 电话: personArra
29、yret.m Phone t cout 住址: personArrayret.m Addr endl; else cout 查无此人 endl; system( pause); system( cls); /5、修改指定联系人信息 void modifyPerson( Addressbooks * abs) cout 请输入需要修改的联系人: n ame; int ret = isExist( abs, name); if (ret != -1) /添加姓名 stri ng n ame; cout 请输入姓名: n ame; abs-pers on Arrayret.m_Name = n am
30、e; /添加性别 int sex = 0; cout 请输入性别:1.男 2. 女 sex; if (sex = 1 | sex = 2) cout 输入有误,请重新输入: endl; /添加年龄 int age; cout 请输入年龄: age; abs-pers on Arrayret.m_Age = age; 24 /添加联系电话 stri ng pho ne; cout 请输入联系电话: phone; abs-pers on Arrayret.m_Ph one = pho ne; /添加家庭住址 stri ng address; cout 请输入家庭住址: address; abs-p
31、ers on Arrayret.m_Addr = address; cout 修改成功 endl; else cout 查无此人 endl; system( pause); system( cls); 6、清空联系人 void cleanPerson( Addressbooks * abs) char clew; cout 是否确认清空?( y/n ) clew; if (clew =y) abs-m_Size = 0; cout 通讯录已清空! endl; else system( pause); system( cls); int main() Addressbooks abs; /通讯录
32、中结构体变量 abs.m_Size = 0; /初始化人数 int seclect; /用户选择的功能 25 while ( true ) showMenu(); /菜单显示功能 cout 请选择功能: seclect; /用户输入选择的功能 switch (seclect) case 1: addPerson( /添加联系人函数 break; case 2: showPers on( break; case 3: deletePers on( break; case 4: fin dPers on( break; case 5: modifyPerso n( break; case 6: clea nPers on( break; case 0: /退岀系统 cout 已退岀系统 endl; system( pause); return 0; break; system( pause); return 0; 26 成绩及评语: 指导教师(签字): 系主任(签字): 20192019 年月 日