c++通讯录管理系统.doc

上传人:数据九部 文档编号:10129573 上传时间:2021-04-22 格式:DOC 页数:28 大小:285.50KB
返回 下载 相关 举报
c++通讯录管理系统.doc_第1页
第1页 / 共28页
c++通讯录管理系统.doc_第2页
第2页 / 共28页
c++通讯录管理系统.doc_第3页
第3页 / 共28页
c++通讯录管理系统.doc_第4页
第4页 / 共28页
c++通讯录管理系统.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《c++通讯录管理系统.doc》由会员分享,可在线阅读,更多相关《c++通讯录管理系统.doc(28页珍藏版)》请在三一文库上搜索。

1、通讯录管理系统专 业: 班 级: 软件112班 姓 名: 常婉娜 学 号: 201101014201 指导教师: 郭永锋 目 录1 课程设计目的31.1课程设计目的31.2课程设计题目31.3题目要求32 需求分析52.1功能需求分析52.2方法需求分析63 概要设计73.1系统功能模块图73.2设计思想74 详细设计84.1主菜单84.2添加记录94.3删除记录94.4显示记录104.5修改记录114.6查询记录124.7排序记录135 课程设计源代码135.1主菜单源代码135.2增加记录源代码135.3删除记录源代码155.4显示记录源代码175.5修改记录源代码185.6查询记录源代码

2、215.6排序记录源代码216 测试分析236.1主菜单236.2增加记录236.3删除记录246.4显示记录246.5修改记录256.6查询记录256.7排序记录266.7退出记录267.课程设计总结27 8.课程设计总结281.课程设计目的1.1课程设计的目的C/C+课程设计是将C/C+理论教学与实践环节相结合的关键步骤,为学生提供了一个既动手又动脑,将课本上的理论知识和实践有机的结合起来,独立分析和解决实际问题的机会。通过本次课程设计,使学生:l 进一步学习和巩固C/C+课程的核心内容,加深对面向过程(或对象)程序设计思想的正确理解。l 提高学生分析问题、解决问题以及综合利用C语言进行程

3、序设计的能力。培养学生结构化程序、模块化程序设计的方法和能力。l 熟练掌握C/C+程序设计技能及上机调试方法,为今后学习其他专业课程打好基础。具备一定的计算机应用及软件开发能力,培养独立分析问题、解决问题及查阅资料、获取新知识的能力,以适应技术不断更新的计算机行业特点1.2课程设计的题目通讯录管理。 1.3题目要求1.3.1问题描述(功能要求):学生信息包括:编号,分组 ,姓名,固话,手机号,QQ号码,E-mail,家庭住址。(1)能建立、修改和增删学生通讯录(2)能够按多种方式进行查询1.3.2问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关

4、系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法); (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告以及系统使用说明书。2.需求分析2.1功能需求分析 通讯录主要有以下模块:通讯录界面设计、添加记录、删除记录、显示记录、修改记录、查询记录,排序记录。2.1.1通讯录主菜单主要功能是设计通讯录的界面,能够提示用户的实际操作等。按照序号来实现相应的操作,其中:添加记录,删除记录,显示记录,修改记录,查询记录, 退出系统。2.1.2通讯录添加记录模块增加一个或几个人的记录,并可选择继续

5、输入或退出2.1.3通讯录删除记录模块删除已输入的记录。输入姓名查找要删除的记录,若找到,提示是否确定删除,若选择是,则删除该人信息,若选择否,则取消;若没找到,提示无此人信息。2.1.6通讯录查询记录模块可按姓名查找某人记录,也可查找某个组的所有记录。若找到,则显示所有人的记录,否则提示未找到,无论查找成功否,应还可选择继续查找或退出。2.1.4通讯录显示记录模块主要是显示所有的联系人的信息2.1.5通讯录修改记录模块修改某人的记录。输入姓名并查找,若找到,显示该人的所有信息,并可进行修改;否则提示无此人信息2.1.6通讯录登录模块该模块在进入主界面之前先执行,用于对进入系统的用户进行身份验

6、证,若用户输入正确的用户名及用户密码,则进入主界面,否则输入超过3次错误则退出程序。处理方法:用户名及用户密码可保存在一文件中,校验时从文件中读入数据进行校验。在系统中应增加一个用户管理模块,在其中可新增用户,修改用户信息等。2.1.7通讯录排序记录模块可分别按分组、编号或姓名进行排序2.1.8通讯录系统帮助模块显示开发者姓名、班级、开发完成日期、版本号和指导老师等信息。2.1.8通讯录退出模块2.2 方法需求分析该系统由于数据可能会很大,故采用文件操作,能够打开或修改指定文件及将多个文件组成一个文件。而联系人的信息则通过类的对象来保存,它完全使用类来实现,充分体现面向对象的程序设计特点。3.

7、概要设计3.1 系统功能模块图2.1 系统功能模块图通讯录系 统 添加联系人删除联系人查询联系人修改信息显示所有联系人排序联系人系统帮助 退出登陆 3.2 设计思想通讯录系统是用面向对象的方法设计,在类中定义 add_person( ),del_person( ),show_all( ),alter( ),select( ),save_new( )等方法和num ,name,group,phone,hpone,addr,email,QQ等属性来实现通讯录的各种操作。3.3 主要代码描述3.31添加联系人的实现;通过输入联系人的如下信息:姓名、电话、QQ、邮编、地址,固化,编号,分组,并把输入的

8、信息保存对象的属性,创建或者打开文件,并向文件中写入新添加的联系人信息void comm_info:add_users()system(cls);char m=Y;cout请添加联系人:endl;coutendl;coutendlname;coutendlnum;coutendlgroup;coutendlhphone;coutendlmphone;coutendlqq;coutendlemail;coutendladdr;save_new();coutendl添加成功!endl;cout是否继续添加(Y/N)?m;if(m=Y)add_users();elsemenu();system(cl

9、s); 3.32删除联系人的实现首先输入你要删除姓名,删除操作时采用输入的姓名 与文件中的姓名 比较,从头到尾开始遍历,如果没有的话,将提示:对不起!联系人中没你要找的人!如果找到,则提示删除联系人的所有信息和这个人的信息已经从你的通讯录中删除的信息!void comm_info:del_users()ofstream outData(temp.txt, ios:out);/?ifstream inData(comm_info.txt, ios:in); /?if (!outData | !inData)coutendl 对不起,找不到文件! endl;system(pause);return

10、;string sign;coutendlsign;bool flag=true;string str;while (inDataname)/inData name :从inData读入一个字符串,直到遇到文件结束符其值才为假getline(inData, str);/读取一行字符,然后文件指针指向下一行开头if(name=sign)/如果删除的姓名匹配则将这个人信息输出cout endl 您要删除的联系人信息:endlendl;coutname strendl;flag=false;break;/跳出循环/程序没有跳出出循环说明姓名不匹配,然后将这些人信息存入临时文件outDataname

11、strendlendl;/没写则全部删除if (flag)coutendl对不起,通讯录中没有此联系人!endl;elsewhile (getline(inData, str)outDatastrendl;outData.close();/关闭comm_info.txt文件inData.close();/关闭temp.txt文件char m=Y;coutendl确定删除此联系人(Y/N)?m;if(m=Y)/下面就将临时文件中的记录重新输出到原始文件,因为临时文件中存放的都是不匹配的信息,这样就达到了删除的效果ofstream out(comm_info.txt, ios:out);/?ifs

12、tream in(temp.txt, ios:in);if (!out|!in)cout对不起不能打开文件!endl;system(pause);return; while (getline(in, str)outstrendl;out.close();/?in.close();cout此人的的信息已从通讯录中删除!endl;elsemenu(); system(pause); menu();3.33显示所有联系人的实现:把文件中的各种信息读取并显示出来,代码如下void comm_info:show_users()ifstream inData(comm_info.txt,ios:in);

13、if(!inData)cout对不起,没有找到您需要的文件!endl;system(pause);return;bool falg=true;string std;while(getline(inData,std)/?if(falg)cout所有联系人信息如下:endl;coutstdendl;falg=false;if(falg)coutendl你的通讯录中没有联系人!endl;elsecoutendl所有的联系人已经输出!endl;inData.close();system(pause);menu();3.34 查询联系人模块 对文件进行遍历,将联系人的所有信息都显示出来。具体代码见3.4

14、中。3.35 修改联系人模块只要输入来联系人的名字,进行文件爱你的遍历查找到联系人的信息,而后进行修改。具体代码见3.4中。3.36排序通讯录模块只要输入来联系人的名字,进行文件爱你的遍历查找到联系人的信息,而后进行排序。具体代码见3.4中。3.37登陆通讯录模块该模块在进入主界面之前先执行,用于对进入系统的用户进行身份验证,若用户输入正确的用户名及用户密码,则进入主界面,否则输入超过3次错误则退出程序,具体代码见3.4中。3.38系统帮助通讯录模块显示开发者姓名、班级、开发完成日期、版本号和指导老师等信息。具体代码见3.4中。3.38关闭通讯录模块 提示谢谢使用!具体代码见3.4中。3.4

15、程序详细代码#include #include /#include #include /输入/输出文件流类,实现输入/输出#include #include /容器#include /sort排序using namespace std;/登录int login(string usename,string pwd)if(usename=changwanna & pwd=201)return 1;elsereturn 0; class comm_info/ 类 public:string login();void menu();void add_users();/添加void find_users

16、();/查找void del_users();/删除void edit_users();/修改 void sort_users();/排序 friend bool comp(const comm_info &a, const comm_info &b );void show_users();/显示所有人信息void help(); /系统帮助void save_new();/保存新增加的联系人void leave();private: string name; /姓名 long num; /编号char group16; /分组char hphone16; /固话home_phone char

17、 mphone16; /手机号mobile_phone char qq16; /QQ号码 char email20; /e-mail地址 string addr; /家庭住址或通信地址;/首页void comm_info:menu()comm_info info;system(cls);/清屏int n;coutendl;coutendl;coutendl; couttendl;coutt 欢迎进入通讯录管理系统! endl;coutt 1 添加 endl;coutt 2 查询 endl;coutt 3 删除 endl; coutt 4 修改 endl; coutt 5 排序 endl; co

18、utt 6 显示所有人信息 endl; coutt 7 系统帮助 endl; coutt 8 退出 endl; couttendl;coutendlsetw(42)n;system(cls); switch(n)case 1:coutsetw(53)*你选择了添加*endl;info.add_users();break;/函数调用case 2:coutsetw(50)*你选择了查询*endl;info.find_users();break;case 3:coutsetw(50)*你选择了删除*endl;info.del_users();break;case 4:coutsetw(50)*你选择

19、了修改*endl;info.edit_users();break; case 5:coutsetw(53)*你选择了排序*endl;info.sort_users();break; case 6:coutsetw(55)*你选择了显示所有人信息*endl;info.show_users();break;case 7:coutsetw(53)*你选择了系统帮助*endl;info.help();break;case 8:info.leave();break;/添加联系人void comm_info:add_users()system(cls);char m=Y;cout请添加联系人:endl;c

20、outendl;coutendlname;coutendlnum;coutendlgroup;coutendlhphone;coutendlmphone;coutendlqq;coutendlemail;coutendladdr;save_new();coutendl添加成功!endl;cout是否继续添加(Y/N)?m;if(m=Y)add_users();elsemenu();system(cls); /保存新增加的联系人void comm_info:save_new()ofstream outData(comm_info.txt,ios:app);/ofstream outData定义输

21、出文件流对象outData;ios:app使添加信息不被覆盖,追加文件 if (!outData) cout打开文件失败!endl; system(pause);return; outDataname num group hphone mphone qq email addrendlendl;outData.close();/文件关闭/查找联系人void comm_info:find_users()ifstream inData(comm_info.txt,ios:in);/输入文件,创建一个输入文件流对象inDate,输入文件为程序所在文件夹中的名为info.txt的文件(如同cin输入一样

22、)if(!inData)cout对不起,没有找到您所需要的文件!endl; system(pause);return;string sign;coutendlsign;bool flag=true;string str;while(inDataname)getline(inData,str);/str存储读入的内容,必为string类if(name=sign)coutendl您所查找的联系人信息如下:endlendl;coutnamestrendl;flag=false;break;if(flag) /flag=truecoutendl;cout对不起,此联系人不存在!endl;inData.

23、close();/system(cls);coutm;if(m=Y)find_users();elsemenu();system(cls);/删除联系人void comm_info:del_users()ofstream outData(temp.txt, ios:out);/?ifstream inData(comm_info.txt, ios:in); /?if (!outData | !inData)coutendl 对不起,找不到文件! endl;system(pause);return;string sign;coutendlsign;bool flag=true;string st

24、r;while (inDataname)/inData name :从inData读入一个字符串,直到遇到文件结束符其值才为假getline(inData, str);/读取一行字符,然后文件指针指向下一行开头if(name=sign)/如果删除的姓名匹配则将这个人信息输出cout endl 您要删除的联系人信息:endlendl;coutname strendl;flag=false;break;/跳出循环/程序没有跳出出循环说明姓名不匹配,然后将这些人信息存入临时文件outDataname strendlendl;/没写则全部删除if (flag)coutendl对不起,通讯录中没有此联系

25、人!endl;elsewhile (getline(inData, str)outDatastrendl;outData.close();/关闭comm_info.txt文件inData.close();/关闭temp.txt文件char m=Y;coutendl确定删除此联系人(Y/N)?m;if(m=Y)/下面就将临时文件中的记录重新输出到原始文件,因为临时文件中存放的都是不匹配的信息,这样就达到了删除的效果ofstream out(comm_info.txt, ios:out);/?ifstream in(temp.txt, ios:in);if (!out|!in)cout对不起不能打

26、开文件!endl;system(pause);return; while (getline(in, str)outstrendl;out.close();/?in.close();cout此人的的信息已从通讯录中删除!endl;elsemenu(); system(pause); menu();/修改void comm_info:edit_users() ofstream outData(temp.txt, ios:out);ifstream inData(comm_info.txt, ios:in); if (!outData|!inData)cout对不起,找不到文件! endl;syst

27、em(pause);return;string sign;coutendlsign;bool flag=true;string str;while (inDataname)getline(inData,str);if (sign=name)coutendl 你想修改的联系人: endlendl;coutname strendl;cout endl请根据下面提示修改信息:endl;coutendlname;coutendlnum;coutendlgroup;coutendlhphone;coutendlmphone;coutendlqq;coutendlemail;coutendladdr;sa

28、ve_new();flag = false;break;outDataname strendlendl;/没有此句则文件只保留修改的一条if(flag)coutendl对不起,通讯录中没你找的人!endl;elsewhile (getline(inData, str)outDatastrendl;/?outData.close();inData.close();ofstream out(info.txt, ios:out);ifstream in(temp.txt, ios:in);if (!out|!in)coutendl 对不起,不能打开文件!endlendl;system(pause);

29、return;while (getline(in,str)outstrendl;/?out.close();in.close();coutendl此人信息已经在你的通迅录中修改!endl;system(pause); menu();/排序bool comp( const comm_info &a, const comm_info &b )if( string(a.name) != string(b.name) )return string(a.name) string(b.name);/?system(pause); return 0;void comm_info:sort_users()sy

30、stem(cls);comm_info info100;vector vtp;int i=0;ifstream inData(comm_info.txt,ios:in);if(!inData)cout endl 对不起,不能打开文件! endl endl;system(pause);return;cout排序前:infoi.groupinfoi.nameinfoi.numinfoi.hphoneinfoi.mphoneinfoi.qqinfoi.emailinfoi.addr ;vtp.push_back(infoi);i+;for(i=0;ivtp.size()-1;i+)cout姓名:in

31、foi.name 编号:infoi.num 分组infoi.group 固话:infoi.hphone 手机:infoi.mphone QQ号:infoi.qq 邮箱:infoi.email 家庭住址:infoi.addrendl;sort(vtp.begin(),vtp.end(),comp);coutendl排序后endl; for(i=1;ivtp.size();i+)cout姓名:vtpi.name 编号:vtpi.num 分组vtpi.group 固话:vtpi.hphone 手机:vtpi.mphone QQ号:vtpi.qq 邮箱:vtpi.email 家庭住址:vtpi.add

32、r endl;inData.close();system(pause);menu();/显示所有信息void comm_info:show_users()ifstream inData(comm_info.txt,ios:in); if(!inData)cout对不起,没有找到您需要的文件!endl;system(pause);return;bool falg=true;string std;while(getline(inData,std)/?if(falg)cout所有联系人信息如下:endl;coutstdendl;falg=false;if(falg)coutendl你的通讯录中没有联系人!endl;elsecoutendl所有的联系人已经输出!endl;inData.close();system(pause);menu();/系统帮助void comm_info:help()coutendlendlendl;coutsetw(60)endl;coutsetw(60) 开发者:常婉娜 endl;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1