1、通讯录程序设计概要本次课程设计是利用C+做了一个班级通讯录,本次课程设计主要使 用类与对象、数组与指针等方法. 通过本次通讯录的课程设计熟悉运用C+语言,主要包括数组与指针,类与对象,string, 作用域等,通过数组和指针解决数据级对象之间的联系和协调,经过类与对象的定义,建立函数等方法输入,再进行运行,最后实现通讯录中的输入、排序输出、修改、删除的功能。关键词:C+,面向对象,数组,指针目录一、设计任务分析1二、模块设计1三、主要数据结构5四、流程图6五、源代码6六、测试情况21七、小结23八、参考文献24一、 设计任务分析实现以下功能: 1) 通讯录编辑(添加、删除); 2) 按不同的项
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()函数用于通讯录中的信息进行排序,主要流
3、程如下: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 no1
4、3,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
5、(); /成员函数,读取文本文件 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;
6、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)
7、 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; coutE_MAIL:sti.e_mailendl; ;/主函数 首页int main() inter a; a.format(); char select1; coutendl;top:couttt# endl tt# # endl tt# 通 迅 录 # endl tt# #
8、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(select1) case 1:cout (1)添加联系人:endl; cout (2)删除联系人:endl; cout (3)修改联系人:endl; char select2; coutselect2; switch(select2) case 1:cout 输入要添加的联
9、系人资料: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; else goto bottom; break; case 2:coutname2;
10、a.del(name2); coutback_del; if(back_del!=0) goto top; else goto 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); cou
11、tback_f1; if(back_f1!=0) goto top; else goto bottom; break; case 2:char no413; coutno4; a.find1(no4); coutback_f2; if(back_f2!=0) goto top; else goto bottom; break; break; case 3:a.write(); coutback_w; if(back_w!=0) goto top; else goto bottom; break; case 4:cout (1)按学号排序:endl; cout (2)按姓名排序:endl; co
12、utselect4; switch(select4) case 1:a.list1(); coutback; if(back!=0) goto top; else goto bottom; break; case 2:a.list2(); coutback1; if(back1!=0) goto top; else goto bottom; break; break; case 5:a.read(); coutback_r; if(back_r!=0) goto top; else goto bottom; break; case 6:coutselect5; if(select5=Y|sel
13、ect5=y) a.format(); coutback_f; if(back_f!=0) 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,add
14、ress); strcpy(sti.e_mail,e_mail); strcpy(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
15、.name,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(sti.name,name) x=i; char select; cout (1)修改姓名:endl; cout (2)修改学号:endl; cout (3)修改地址:endl; c
16、out (4)修改邮编:endl; cout (5)修改电话号码:endl; cout (6)修改E_MAIL:endl; 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 修
17、改成功!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; /
18、按学号查询联系人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(sti.name,name) x=i; z=0; else y=0; if(z=0) break; i
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2