1、C+面向对象程序的设计通讯录课程设计报告8C+面向对象程序设计课程设计报告设计题目: 学生学号: 学生姓名: 专业班级: 学生成绩: 指导教师: 计算机科学与技术系20*-*-*一、 设计任务分析实现以下功能: 1) 通讯录编辑(添加、删除); 2) 按不同的项进行查找; 3) 对已存在的通讯录按不同的项排序; 4) 将通讯录写入文件; 5) 从文件读入通讯录。 二、 模块设计本次程序设计主要设计了六个模块(主要是:a.add(),a.del(),a.correct(),a.find1(),a.list1(),a.read(),a.write())a.add()函数用于通讯录中的信息进行添加,
2、主要流程如下:a.del()函数用于通讯录中的信息进行删除,主要流程如下:a.correct()函数用于通讯录中的信息进行修改,主要流程如下:a.find1()函数用于通讯录中的信息进行查找,主要流程如下:a.list1()函数用于通讯录中的信息进行排序,主要流程如下:a.read()函数用于从文本文件中读取信息,主要流程如下:a.write()函数用于将信息写入文本文件,主要流程如下:三、 主要数据结构结构数组:struct student /结构体char no13; /学号char name20; /姓名char address100; /地址char tel_no12; /电话char
3、 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 fin
4、d2(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 st
5、udent /结构体 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
6、); void list1(); void list2(); int correct(char name20); void read(); void write(); void format(); int back() coutback; if(back=R|back=r) return 1; else return 0; void print(int i) cout学号:sti.noendl; cout姓名:sti.nameendl; cout地址:sti.addressendl; cout电话号码:sti.tel_noendl; cout邮编:sti.post_codeendl; cout
7、E_MAIL:sti.e_mailendl; ;/主函数 首页int main() inter a; a.format(); char select1; coutendl;top:couttt 计科N082 endl tt endl tt endl tt 通 迅 录 endl tt endl tt 1. 通讯录编辑. 4. 按序排列 . endl tt endl tt 2. 查询联系人. 5. 将文件读入程序. endl tt endl tt 3. 将资料写入文件. 6. 格式化(慎用). endl tt endl tt endl tt endlendl select1; switch(sel
8、ect1) 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
9、输入邮编: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; else goto bottom; break; case 2:cout 输入要删除人的姓名:name2; a.del(name2); coutback_del; if(back_del=R|back_del=r) goto top; else goto bottom; break; case 3:cout 输入需要修改人的姓
10、名: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; else goto bottom; break; case 2:char no413;
11、coutno4; a.find1(no4); coutback_f2; if(back_f2=R|back_f2=r) goto top; else goto bottom; break; break; case 3:a.write(); coutback_w; if(back_w=R|back_w=r) goto top; else goto bottom; break; case 4:cout (1)按学号排序:endl; cout (2)按姓名排序:endl; coutselect4; switch(select4) case 1:a.list1(); coutback; if(back
12、=R|back=r) goto top; else goto bottom; break; case 2:a.list2(); coutback1; if(back1=R|back1=r) goto top; else goto bottom; break; break; case 5:a.read(); coutback_r; if(back_r=R|back_r=r) goto top; else goto bottom; break; case 6:coutselect5; if(select5=Y|select5=y) a.format(); coutback_f; if(back_f
13、=R|back_f=r) goto top; else goto 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
14、(sti.name,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(sti.name,name) strcpy(sti.address,0); strcpy(sti.e_mail,0); strcpy(sti.name,0); strcpy(sti.no,0); strcpy(sti.p
15、ost_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(sti.name,name) x=i; char select; cout (1)修改姓名:endl; cout (2)修改学号:endl; cout (3)修改地址:endl; cout (4)修改邮编:endl; cout (5)修改电话号码:endl; cout (6)修改E_MAIL:en
16、dl; coutselect; switch(select) case 1:coutname1; strcpy(stx.name,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; str
17、cpy(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
18、 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(sti.name,name) x=i; z=0; else y=0; if(z=0) break; if(y=0) cout 输入的姓名查找不到!endl; print(x);/读取文件void inter:re
19、ad() 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=
20、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+) stk.namej=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+;