C++面向对象程序设计---通讯录课程设计报告8.doc_第1页
C++面向对象程序设计---通讯录课程设计报告8.doc_第2页
C++面向对象程序设计---通讯录课程设计报告8.doc_第3页
C++面向对象程序设计---通讯录课程设计报告8.doc_第4页
C++面向对象程序设计---通讯录课程设计报告8.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+面向对象程序设计课程设计报告设计题目: 学生学号: 学生姓名: 专业班级: 学生成绩: 指导教师: 计算机科学与技术系20*-*-*一、 设计任务分析实现以下功能: 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=R|back=r)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 计科N082 endltt 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;cout 请选择:select2;switch(select2)case 1:cout 输入添加的资料:endl;char no13; char name20; char address100; char tel_no12; char post_code7; char e_mail40;cout 输入学号:no;cout 输入姓名:name;cout 输入地址:address;cout 输入电话号码:tel_no;cout 输入邮编:post_code; cout 输入E_mail:e_mail;a.add(no,name,address,tel_no,post_code,e_mail);coutback_add;if(back_add=R|back_add=r)goto top;elsegoto bottom;break;case 2:cout 输入要删除人的姓名:name2;a.del(name2);coutback_del;if(back_del=R|back_del=r)goto top;elsegoto bottom;break;case 3:cout 输入需要修改人的姓名:name3;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=R|back_f1=r)goto top;elsegoto bottom;break;case 2:char no413;coutno4;a.find1(no4);coutback_f2;if(back_f2=R|back_f2=r)goto top;elsegoto bottom;break;break;case 3:a.write();coutback_w;if(back_w=R|back_w=r)goto top;elsegoto bottom;break;case 4:cout (1)按学号排序:endl;cout (2)按姓名排序:endl;coutselect4;switch(select4)case 1:a.list1();coutback;if(back=R|back=r)goto top;elsegoto bottom;break;case 2:a.list2();coutback1;if(back1=R|back1=r)goto top;elsegoto bottom;break;break;case 5:a.read();coutback_r;if(back_r=R|back_r=r)goto top;elsegoto bottom;break;case 6:coutselect5;if(select5=Y|select5=y)a.format();coutback_f;if(back_f=R|back_f=r)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);else x=0;if(x=0)cout error:输入姓名错误!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.noendl; savefile 姓名:endl; savefile 地址:sti.addressendl; savefile 电话号码:sti.tel_noendl; savefile 邮编:sti.post_codeendl; savefile E_MAIL:sti.e_mailendl;savefile.close();/按学号排序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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论