




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c+通讯录程序设计题目: 通讯录程序设计 课程: c+程序设计 专业: 姓名: 班级: 学号: 指导教师: 信息科学与工程学院 2012-5-211概要本次课程设计是利用c+做了一个班级通讯录,本次课程设计主要使 用类与对象、数组与指针等方法. 通过本次通讯录的课程设计熟悉运用c+语言,主要包括数组与指针,类与对象,string, 作用域等,通过数组和指针解决数据级对象之间的联系和协调,经过类与对象的定义,建立函数等方法输入,再进行运行,最后实现通讯录中的输入、排序输出、修改、删除的功能。关键词:c+,面向对象,数组,指针目录一、设计任务分析1二、模块设计1三、主要数据结构5四、流程图6五、源代码6六、测试情况21七、小结23八、参考文献24iiii通讯录程序设计一、 设计任务分析实现以下功能: 1) 通讯录编辑(添加、删除); 2) 按不同的项进行查找; 3) 对已存在的通讯录按不同的项排序; 4) 将通讯录写入文件; 5) 从文件读入通讯录。 二、 模块设计本次程序设计主要设计了六个模块(主要是:a.add(),a.del(),a.correct(),a.find1(),a.list1(),a.read(),a.write())a.add()函数用于通讯录中的信息进行添加,主要流程如下:a.del()函数用于通讯录中的信息进行删除,主要流程如下:a.correct()函数用于通讯录中的信息进行修改,主要流程如下:a.find1()函数用于通讯录中的信息进行查找,主要流程如下:a.list1()函数用于通讯录中的信息进行排序,主要流程如下:a.read()函数用于从文本文件中读取信息,主要流程如下:a.write()函数用于将信息写入文本文件,主要流程如下:三、 主要数据结构结构数组:struct student /结构体char no13; /学号char name20; /姓名char address100; /地址char tel_no12; /电话char post_code7; /邮编char e_mail40; /e-mailclass inter /派生类private: /派生类增加或替代的私有成员student st35;public: /派生类增加或替代的公有成员void add(char no13,char name20,char address100,char tel_no12,char post_code7,char e_mail40); /成员函数,添加联系人void del(char name20); /成员函数,删除联系人void find1(char no13); /成员函数,按学号查找联系人void find2(char name20); /成员函数,按姓名查找联系人void list1(); /成员函数,排序联系人void list2(); /成员函数,排序联系人int correct(char name20); /成员函数,修改联系人void read(); /成员函数,读取文本文件void write(); /成员函数,写入文本文件void format(); /成员函数,格式化内存保存的数据int back() /成员函数,返回首页void print(int i) /成员函数,输出显示四、 流程图五、 源代码#include#include#includestruct student /结构体char no13;char name20;char address100;char tel_no12;char post_code7;char e_mail40;class interprivate:student st35;public:void add(char no13,char name20,char address100,char tel_no12,char post_code7,char e_mail40);void del(char name20);void find1(char no13);void find2(char name20);void list1();void list2();int correct(char name20);void read();void write();void format();int back()coutback;if(back!=0)return 1;elsereturn 0;void print(int i)cout学号:sti.noendl;cout姓名:endl;cout地址:sti.addressendl;cout电话号码:sti.tel_noendl;cout邮编:sti.post_codeendl;coute_mail:sti.e_mailendl;/主函数 首页int main()inter a;a.format();char select1;coutendl;top:couttt# endltt# # endltt# 通 迅 录 # endl tt# # endltt# 1. 通讯录编辑 4. 联系人排序 # endl tt# # endltt# 2. 查询联系人 5. 打开通讯录 # endltt# # endltt# 3. 保存通讯录 6. 格式化数据 # endl tt# # endltt# endltt endlendl select1;switch(select1)case 1:cout (1)添加联系人:endl;cout (2)删除联系人:endl;cout (3)修改联系人:endl;char select2;coutselect2;switch(select2)case 1:cout 输入要添加的联系人资料:endl;char no13; char name20; char address100; char tel_no12; char post_code7; char e_mail40;coutno;coutname;coutaddress;couttel_no;coutpost_code; coute_mail;a.add(no,name,address,tel_no,post_code,e_mail);coutback_add;if(back_add!=0)goto top;elsegoto bottom;break;case 2:coutname2;a.del(name2);coutback_del;if(back_del!=0)goto top;elsegoto bottom;break;case 3:coutname3;if(a.correct(name3)goto top;else goto bottom;break;break;case 2:cout (1)根据姓名查找endl;cout (2)根据学号查找endl;char select3;coutselect3;switch(select3)case 1:char name420;coutname4;a.find2(name4);coutback_f1;if(back_f1!=0)goto top;elsegoto bottom;break;case 2:char no413;coutno4;a.find1(no4);coutback_f2;if(back_f2!=0)goto top;elsegoto bottom;break;break;case 3:a.write();coutback_w;if(back_w!=0)goto top;elsegoto bottom;break;case 4:cout (1)按学号排序:endl;cout (2)按姓名排序:endl;coutselect4;switch(select4)case 1:a.list1();coutback;if(back!=0)goto top;elsegoto bottom;break;case 2:a.list2();coutback1;if(back1!=0)goto top;elsegoto bottom;break;break;case 5:a.read();coutback_r;if(back_r!=0)goto top;elsegoto bottom;break;case 6:coutselect5;if(select5=y|select5=y)a.format();coutback_f;if(back_f!=0)goto top;elsegoto bottom;break;bottom:cout *成功退出系统,欢迎再次使用!*endl;return 0;/添加联系人void inter:add(char no13,char name20,char address100,char tel_no12,char post_code7,char e_mail40)int x=1;for(int i=0;i35;i+)if(!strcmp(sti.no,0)strcpy(sti.address,address);strcpy(sti.e_mail,e_mail);strcpy(,name);strcpy(sti.no,no);strcpy(sti.post_code,post_code);strcpy(sti.tel_no,tel_no);x=0;if(x=0)break;/删除联系人void inter:del(char name20)int x=1;for(int i=0;i35;i+)if(!strcmp(,name) strcpy(sti.address,0);strcpy(sti.e_mail,0);strcpy(,0);strcpy(sti.no,0);strcpy(sti.post_code,0);strcpy(sti.tel_no,0); x=0; cout” 删除此联系人成功!”endl;if(x=1)cout 输入有误,没有找到此联系人!endl;/修改联系人int inter:correct(char name30)int x;for(int i=0;i35;i+)if(!strcmp(,name)x=i;char select;cout (1)修改姓名:endl;cout (2)修改学号:endl;cout (3)修改地址:endl;cout (4)修改邮编:endl;cout (5)修改电话号码:endl;cout (6)修改e_mail:endl;coutselect;switch(select)case 1:coutname1;strcpy(,name1);cout 修改成功!endl;return back();break;case 2:coutno1;strcpy(sti.no,no1);cout 修改成功!endl;return back();break;case 3:coutaddress1;strcpy(stx.address,address1);cout 修改成功!endl;return back();break;case 4:coutpost_code1;strcpy(stx.post_code,post_code1);cout 修改成功!endl;return back();break;case 5:couttel_no1;strcpy(stx.tel_no,tel_no1);cout 修改成功!endl;return back();break;case 6:coute_mail1;strcpy(stx.e_mail,e_mail1);cout 修改成功!endl;return back();break;/按学号查询联系人void inter:find1(char no13)int x,y=1,z=1;for(int i=0;i35;i+)if(!strcmp(sti.no,no)x=i;z=0;else y=0;if(z=0)break;if(y=0)cout 没有查到此学号的相关记录!endl; print(x);/按姓名查询联系人void inter:find2(char name20)int x,y=1,z=1;for(int i=0;i35;i+)if(!strcmp(,name)x=i;z=0;else y=0;if(z=0)break;if(y=0)cout 没有查到此人相关记录!endl;print(x);/读取文件void inter:read()char name120;coutname1;strcat(name1,.txt);ifstream file(name1);char line120;char no120;char name120;char address120;char post_code120;char tel_no120;char e_mail120;int time=0;file.getline(line,120);while(!file.eof()for(int k=0;k35;k+)if(time=0)strcpy(no,line);time=1;for(int i=0;i120;i+)if(noi=:)i+;for(int j=0;j13;j+)stk.noj=noi;i+;file.getline(line,120,n);if(time=1)strcpy(name,line);time=2;for(int i=0;i120;i+)if(namei=:)i+;for(int j=0;j20;j+)j=namei;i+;file.getline(line,120,n);if(time= 2)strcpy(address,line);time=3;for(int i=0;i120;i+)if(addressi=:)i+;for(int j=0;j100;j+)stk.addressj=addressi;i+;file.getline(line,120,n);if(time=3)strcpy(tel_no,line);time=4;for(int i=0;i120;i+)if(tel_noi=:)i+;for(int j=0;j12;j+)stk.tel_noj=tel_noi;i+;file.getline(line,120,n);if(time=4)strcpy(post_code,line);time=5;for(int i=0;i120;i+)if(post_codei=:)i+;for(int j=0;j7;j+)stk.post_codej=post_codei;i+;file.getline(line,120,n);if(time=5)strcpy(e_mail,line);time=0;for(int i=0;i120;i+)if(e_maili=:)i+;for(int j=0;j40;j+)stk.e_mailj=e_maili;i+;file.getline(line,120,n);file.close();/写入文件void inter:write()char name20;coutname;strcat(name,.txt);ofstream savefile(name);for(int i=0;i35;i+)savefile 学号:sti.no” ”; savefile 姓名:” ”; savefile 地址:sti.address” ”; savefile 电话号码:sti.tel_no” ”; savefile 邮编:sti.post_code” ”; savefile e_mail:sti.e_mailendl;savefile.close(); cout” 保存成功!”endl;/按学号排序void inter:list1()for(int i=0;i34;i+)for(int j=0;j0)char no13; char name20; char address100; char tel_no12; char post_code7; char e_mail40;strcpy(no,stj.no);strcpy(stj.no,stj+1.no);strcpy(stj+1.no,no);strcpy(name,);strcpy(,stj+1.name);strcpy(stj+1.name,name); strcpy(address,stj.address);strcpy(stj.address,stj+1.address);strcpy(stj+1.address,address);strcpy(tel_no,stj.tel_no);strcpy(stj.tel_no,stj+1.tel_no);strcpy(stj+1.tel_no,tel_no);strcpy(post_code,stj.post_code);strcpy(stj.post_code,stj+1.post_code);strcpy(stj+1.post_code,post_code);strcpy(e_mail,stj.e_mail);strcpy(stj.e_mail,stj+1.e_mail);strcpy(stj+1.e_mail,e_mail);for(int k=0;k35;k+)int x=0;if(strcmp(stk.no,0)print(k);x=1;if(x=1)coutendl;cout-endl;/按姓名排序void inter:list2()for(int i=0;i34;i+)for(int j=0;j0)char no13; char name20; char address100; char tel_no12; char post_code7; char e_mail40;strcpy(no,stj.no);strcpy(stj.no,stj+1.no);strcpy(stj+1.no,no);strcpy(name,);strcpy(,stj+1.name);strcpy(stj+1.name,name); strcpy(address,stj.address);strcpy(stj.address,stj+1.address);strcpy(stj+1.address,address);strcpy(tel_no,stj.tel_no);strcpy(stj.tel_no,stj+1.tel_no);strcpy(stj+1.tel_no,tel_no);strcpy(post_code,stj.post_code);strcpy(stj.post_code,stj+1.post_code);strcpy(stj+1.post_code,post_code);strcpy(e_mail,stj.e_mail);strcpy(stj.e_mail,stj+1.e_mail);strcpy(stj+1.e_mail,e_mail);for(int k=0;k35;k+)int x=0;if(strcmp(stk.no,0)print(k);x=1;if(x=1)coutendl;cout-endl;/格式化void inter:format()for(int i=0;i35;i+)strcpy(sti.address,0);strcpy(sti.e_mail,0);strcpy(,0);strcpy(sti.no,0);strcpy(sti.post_code,0);strcpy(sti.tel_no,0);六、 测试情况运行程序,首页显示如下:按1选择通讯录编辑,编辑通讯录,显示(1)添加联系人,(2)删除联系人,(3)修改联系人,运行后结果如下:第一次使用,按1添加联系人,填入相关信息,运行图如下:返回首页,按2可以查找联系人,可以根据姓名查找和学号查找 返回首页,按4可以进行排序,可以根据姓名和学号排序,按姓名排序需要自己编辑的姓氏排序规则才能使用将资料写入文件功能是将编辑好的通讯录写入文本文件,文本文件的名字可以自己输入。将文件读入程序,是将文本文件中的信息读入程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粉状化妆品制造工新员工考核试卷及答案
- 拍卖业务员新员工考核试卷及答案
- 1,4-丁二醇装置操作工基础知识考核试卷及答案
- 钎焊材料冶炼成型工职业技能考核试卷及答案
- 丁苯胶乳装置操作工技能巩固考核试卷及答案
- 电商客服话术技巧与客户管理方案
- 2025年心血管科常见疾病危急抢救答案及解析
- 2025年神经外科颅内肿瘤手术操作技巧模拟考试卷答案及解析
- 生物识别门禁考勤系统创新创业项目商业计划书
- 电商仓储库存管理流程优化方案
- 泰戈尔简介课件
- 2025年继电保护实操考试题带答案
- (2025)国库知识竞赛题库及答案
- (2025年标准)产假提前上班协议书
- 医院价格委员会管理制度及实施
- 2025年重庆市面向社会公开选拔社区专职工作者后备库人选考试(综合知识)历年参考题库含答案详解(5套)
- 《全球哮喘管理和预防策略(GINA 2025)》解读
- 2025年广东省中考语文试卷(含答案解析)
- (高清版)T∕CES 243-2023 《构网型储能系统并网技术规范》
- 山东淄博小升初数学真题试卷
- 网约车公司风险管理制度
评论
0/150
提交评论