c++通讯录程序设计.doc

上传人:最*** 文档编号:1617247 上传时间:2019-10-30 格式:DOC 页数:32 大小:521.50KB
返回 下载 相关 举报
c++通讯录程序设计.doc_第1页
第1页 / 共32页
c++通讯录程序设计.doc_第2页
第2页 / 共32页
c++通讯录程序设计.doc_第3页
第3页 / 共32页
点击查看更多>>
资源描述
_C+程序设计课程设计报告通讯录管理系统班级:1120551学号:03姓名: 一 课程设计题目与要求1.1题目通讯录管理系统1.2系统功能要求:(1)录入通讯录(2)修改通讯录(3)查询通讯录(可按姓名、电话、联系人类别查询)(4)删除通讯录(5)按姓名对通讯录进行排序一 课程设计题目与要求1.1题目通讯录管理系统1.2系统功能要求:(1)录入通讯录(2)修改通讯录(3)查询通讯录(可按姓名、电话、联系人类别查询)(4)删除通讯录(5)按姓名对通讯录进行排序二 需求分析21问题描述根据需求,该系统所应包含的信息有以下一些:通讯录的基本信息:姓名、地址、电话根据需求,该系统所应实现的功能有以下一些:各种基本数据的录入。如:通讯录基本信息录入。各种基本数据的修改。即:允许对已经录入的数据重新进行编辑、修改。例如修改通讯录中张三的电话信息各种基本数据的删除。例如将张三的信息从通讯录中删除基于各种数据的查询。例如输入张三姓名,查询张三的电话和地址。数据导出:将通讯录中信息导出到指定文件。数据导入:从指定文件导入通讯录信息到。2.2系统环境 采用C+语言实现,开发环境为VC+6.0,可以运行在操作系统windows98及以上皆可。2.3运行要求 能不受限制的录入通讯录信息 界面友好,操作方便,例如删除前需要提示用户是否删除 三 概要设计3.1系统流程设计根据系统要求,设计如下的系统流程。3.2系统模块设计根据系统的功能设计,如下模块1.主界面模块:完成系统菜单的显示2.功能选择模块:根据用户的选择,完成其相应的功能(1)通讯录信息录入:完成用户从界面输入通讯录,保存入系统的功能(2)通讯录信息修改:完成用户从界面输入通讯录,在系统中查询定位,并将录入的数据保存入系统的功能(3)通讯录信息查询:完成用户从界面输入查询条件,在系统查询符合条件的通讯录信息,并在界面上显示的功能。(4)通讯录信息导入:完成用户从界面输入需要导入的文件路径名称,读取该文件的内容,保存入系统,并在界面上显示导入内容的功能。(5)通讯录信息导出:完成用户从界面输入需要导出的文件路径名称,将系统中通讯录信息保存入文件中。(6)通讯录信息删除:完成用户从界面输入需要的通讯录信息的姓名,并将其从系统中删除。四 详细设计4.1数据结构设计根据系统要求,系统中需要保存的数据有通讯录的信息,其结构如下:数据项名称数据项系统表示数据类型数据长度备注姓名name字符串20地址address字符串100电话tele字符串204.2界面设计1.主界面:根据系统要求,设计一个字符界面,显示系统的菜单,为了体现友好性,将在每个菜单前显示该菜单项对应的数字用户输入菜单项前面的数字,主菜单消失,进入该模块的相应界面,进行相应的操作,完成后,回到主界面。2.输入界面:在光标下输入通讯录的信息,用空格将信息隔开3.修改界面:首先输入通讯录的姓名,显示该通讯录的详细信息,输入修改后的信息,将原来信息修改。4.删除界面: 输入需要删除的姓名,将其从通讯录中删除5.导出界面:输入需要导出的文件路径,将通讯录信息导出到文件。6.列表显示页面:将通讯录中所有记录显示,每页显示10条7.导入页面: 相关功能的整合8.查询界面: 相关功能的整合4.3模块实现1.主界面实现:调用cout函数,在屏幕上打印需要显示的字符信息,需要在显示之前调用system(“cls”)函数将前面的界面清空。 对应的实现函数menu_show();2.功能选择模块实现:接受从键盘输入的菜单选择,判断并调用相应的功能函数,完成其对应的功能。实现功能选择。对应的函数:menu_select();(1)通讯录信息录入模块实现:模块说明:从键盘接收输入的通讯录信息,在动态存储区中创建通讯录的节点,遍历链表,将其插入到通讯录链表的最后位置。模块流程:对应函数:add(struct phone * head)(2)通讯录信息修改模块实现:模块说明:从键盘接收输入的需要修改通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入修改后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。模块流程: 对应函数:update(struct phone * head)(3)通讯录信息删除模块实现:模块说明:从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。模块流程: 对应函数:delete(struct phone * head)(4)通讯录信息导入模块实现:模块说明:从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。 模块流程: 对应函数:load(struct phone * head)(5)通讯录信息导出模块实现: 模块说明:从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。 模块流程: 对应函数:save(struct phone * head)(6)通讯录信息查询模块实现:模块说明:从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。 模块流程: 对应函数:search(struct phone * head)(7)通讯录信息显示模块实现:模块说明:从键盘接收输入的需要删除通讯录的姓名,遍历链表,判断节点的姓名是否输入的姓名相等,如果相等,从键盘输入删除后的信息,保存在该节点中,改变标识变量,最后判断标识变量判断是否在链表中找到该姓名的通讯录。模块流程: 对应函数:list(struct phone * head)五 测试5.1录入通讯录测试 1.测试数据:输入张吴波 湖北汽车工业学院, 13872839461,8241470 测试结果:程序运行出现错误,如下 原因 电话输入的长度超过了电话表示的长度2.测试数据:输入张吴波 湖北汽车工业学院, 13872839461测试结果:程序运行正常,正确的插入到链表的最后位置3.测试数据:输入:张吴波 湖北汽车工业学院 8241470 425测试结果:程序运行不正常,可以将张吴波 湖北汽车工业学院, 8241470插入到链表的最后位置,但是425不能保存原因:使用了scanf(“%s”),将空格作为截止符5.2 修改通讯录测试 测试数据:在系统中存在4个名称为li的通讯录 测试结果:输入修改的姓名 li ,显示了第一个姓名为li的通讯录信息,输入修改后的信息:张吴波 湖北汽车工业学院 13872839461将第一个姓名为li的通讯录修改成功.测试数据:在系统中不存在名称为张三的通讯录,输入后,提示姓名不存在,如下图5.3导入通讯录测试 测试数据:输入C:dd.tst路径(系统中不存在该文件) 测试结果:提示不能打开文件,不能导入回车后程序结束原因:不能打开文件文件使用了exit函数测试数据:输入C:data.txt路径(系统中该文件,格式符合程序要求)测试结果:提示能将文件中的数据正确导入查询模块测试: 测试数据:输入C:data.txt路 测试结果:提示能将文件中的数据正确查询 删除模块测试 测试数据:输入C:data.txt路径 测试结果:提示能将文件中的数据正确删除 六 结论及改进设想此通讯录管理系统的程序开发,其亮点主要是引用了类来宏观调运程序,使得程序简单、明了、可读性强,在程序操作上也比较省事、方便。通讯录程序无节点,这是一个非常大的不足,急需要改进,但由于时间比较紧,就没有想这部分程序。其实,这部分程序也就是退出,需要一个好的位置来安放此程序。通讯录程序是我做的第一个比较大的程序,在专业人士看来这不算什么,但对我来说有很大的意义,他的做出激发着我更好的学好c+,更好的学好专业课。七 心得体会对第一次用C应用程序来做这么大课题的我来说,了解C语言的概念是非常重要的, C+语言既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。用C+编写的程序可读性好,生成的代码质量高。所谓C语言:是一种使用非常广泛的计算机编程语言。任何一个优秀的程序,无非有以下几点:效率高,可读性高,可重用性强,可移植性好。具体到C+程序,如果做面向对象那块,无非是合理的类的设计,在类中合理安排数据和对数据的处理,信息隐藏的特性等等。 从C应用程序目前的活跃程度,以及应用现状来说是完全能够肯定C仍然是软件工业的基础,也不会退出历史舞台的。我们也能够看到C的发展非常活跃,对于新技术新思维非常激进,C仍然广泛受到关注。八.参考文献九 附录程序源代码:#include #include #include #include #include int n,m;using namespace std;class msgpublic:msg();/默认构造函数char inter_face();/首页void add_person();/添加联系人void del_person();/删除联系人void show_all();/显示所有联系人void alter();/修改信息void select();/查询联系人void save_new();/保存新增加的联系人private: string name;/姓名string sex;/性别string num;/电话号码string ad;/地址string rl;/类型;msg:msg()name = 0;ad = 0;num = 0;sex = 0;rl = 0;/首页char msg:inter_face()cout endl;couttt* endltt endltt 通 迅 录 endl tt endltt 1. 添加新联系人. 4. 修改信息. endl tt endltt 2. 删除联系人. 5. 查询联系人. endltt endltt 3.显示所有联系人. 0. 关闭通迅录. endl tt endltt*endl endlchoose;return choose;/添加联系人void msg:add_person()cout endl 根据下面提示输入新联系人信息 endl endlname;cout num;cout rl;cout sex;cout ad;save_new();cout endl endl 新联系人信息已经保存好! endl ;/删除联系人void msg:del_person()ofstream outData(temp.txt, ios:out);ifstream inData(pbook.txt, ios:in); /if (!outData | !inData)cout endl 对不起!找不到文件! endl;system(pause);return;string sign;cout endl sign;string str1;bool flag = true;string str;while (inData name num)getline(inData, str);if (sign=name) | (sign=num)cout endl 你想删除的联系人: endl endl;cout str1 endl;cout setiosflags(ios:left) setw(17) name num str endl;flag = false;break;outData setiosflags(ios:left) setw(17) name num str endl;if (flag)cout endl 对不起!联系人中没你找的人! endl endl;elsewhile (getline(inData, str)outData str endl;outData.close();inData.close();ofstream out(pbook.txt, ios:out);ifstream in(temp.txt, ios:in);if (!out | !in)cout endl 对不起不能打开文件! endl endl;return;while (getline(in, str)out str endl;out.close();/in.close();cout endl 这个人的信息已经从你的通迅录中删除! endl endl; /显示所有联系人void msg:show_all()ifstream inData(pbook.txt,ios:in);if (!inData)cout endl 对不起!没有找到文件! endl;return;bool flag = true;string record;while (getline(inData, record)if (flag)cout endl 所有联系人信息如下: endl;cout姓名setw(18)电话setw(15)性别setw(21)类型setw(15)地址endl;cout record endl;flag = false;if (flag)cout endl 你的通迅录中没有联系人! endl endl;elsecout endl 所有联系人已经全部显示出来! endl endl;/修改信息void msg:alter()ofstream outData(temp.txt, ios:out);ifstream inData(pbook.txt, ios:in); /if (!outData | !inData)cout endl 对不起!找不到文件! endl;return;string sign;cout endl sign;string str1;bool flag = true;string str;while (inData name num)getline(inData, str);if (sign=name) | (sign=num)cout endl 你想修改的联系人: endl endl;cout str1 endl;cout setiosflags(ios:left) setw(17) name num str endl;cout endl 请根据下面提示修改信息: endl;cout name;fflush(stdin);cout num;fflush(stdin);cout sex;fflush(stdin);cout rl;fflush(stdin);cout ad;fflush(stdin);save_new();flag = false;break;outData setiosflags(ios:left) setw(17) name num str endl;if (flag)cout endl 对不起!联系人中没你找的人! endl endl;elsewhile (getline(inData, str)outData str endl;outData.close();inData.close();ofstream out(pbook.txt, ios:out);ifstream in(temp.txt, ios:in);if (!out | !in)cout endl 对不起不能打开文件! endl endl;system(pause);return;while (getline(in, str)out str endl;out.close();in.close();cout endl 这个人的信息已经在你的通迅录中修改! endl endl;/查询联系人void msg:select()ifstream inData(pbook.txt,ios:in);if (!inData)cout endl 对不起!文件找不到! endl;system(pause);return;string sign;cout endl sign;fflush(stdin);string str1;bool flag = true;string str;while (inData name num)getline(inData, str);if (name=sign) | (num=sign)cout endl 你要查找的联系人是: endl endl;cout str1 endl;cout setiosflags(ios:left) setw(17) namenum str endl;flag = false;system(pause);break;void msg:save_new()ofstream outData(pbook.txt, ios:app);if (!outData)cout endl 对不起!打开文件失败! endl endl;system(pause);return;outData setiosflags(ios:left) setw(17) name setw(16) num setw(18) sex setw(14) rl setw(20) ad endl;outData.close();void main()msg abj;docout endl;couttt* endltt endltt 通 迅 录 endl tt endltt 1. 添加新联系人. 4. 修改信息. endl tt endltt 2. 删除联系人. 5. 查询联系人. endltt endltt 3. 显示所有联系人. 0. 退出通迅录. endl tt endltt*endl endln; switch(n) case 1:abj.add_person();/添加联系人break;case 2:abj.del_person();/删除联系人break;case 3:abj.show_all();/显示所有联系人break;case 4:abj.alter();/修改信息break;case 5:abj.select();/查询联系人break;default:break;coutm;while(m=1);THANKS !致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考-可编辑修改-
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!