1、C 通讯录课程设计报告资料 淮 海 工 学 院 计算机工程学院课程设计报告设计名称: C+程序设计课程设计 姓 名: 学 号: 专业班级: 系 (院): 计算机工程学院 设计时间: 2014.6.92014.6.20 设计地点: 计算机网络技术室 成绩:指导教师评语: 签名: 年 月 日1课程设计目的本课程设计是网络工程专业重要的实践性环节之一,是在学生学习完C+程序设计课程后进行的一次全面的综合练习。本课程设计的目的和任务:(1)巩固和加深学生对C+课程的基本知识的理解和掌握;(2)掌握C+编程和程序调试的基本技能;(3)利用C+进行简单软件设计的基本思路和方法;(4)提高运用C+解决实际问
2、题的能力;(5)掌握书写程序设计说明文档的能力。2课程设计任务与要求:每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。以本班同学的具体数据为背景,设计一个本班同学通讯录。实现功能:1) 通讯录编辑(添加、删除)。2) 按不同的项进行查找。3) 对已存在的通讯录按不同的项排序。4) 将通讯录写入文件5) 从文件读入通讯录备注:通讯录至少应该有以下数据项:姓名,地址,电话,邮编,E-mail。3课程设计说明书(1)需求分析(功能设计) 本通讯录包括编辑、查找、排序、录入文件、读取文件和格式化六项总功能。其中编辑通讯录又包括添加联系人、修改联系人和删除联系人三项功能;查
3、找联系人包括“按学号查找”和“按姓名查找”两项功能;排列联系人也包括“按姓名查找”和“按学号查找”两项功能。 联系人的具体信息包括:学号、姓名、地址、电话、邮编、邮箱。 每执行完一项功能,按相应的提示键返回主界面。 具体功能模块图介绍:图(1)图(2)系统流程图:RT图(3)(2)详细设计(各模块流程图)(1)主函数:是通过一个多分支语句switch(select)实现的,其中有的分支语句中,又包含有一个多分支语句switch(select i)i=1,2,3,每一个分支语句结束通过输入T/t回到界面底部,或输入R/r回到主界面。1123212312456图(4)(2)添加联系人:additi
4、on()函数 利用for循环,和strcmp函数进行学号的比较,当学号不为0时,开始录入信息;当,当学号为0结束否是否是图(5)(3)删除联系人:del函数() For循环,strcmp比较,定义一个变量x,并赋值为1,如果输入的姓名与通讯录中的相同,然后就将学生的所有基本信息都赋予0,如果输入的姓名不相同,就将变量的值赋为0,再用if()判断,如果变量值为0,就输出输入姓名有错这一信息。 否 是否是(4)修改联系人:correct()函数 图(6) For循环,strcmp比较,定义一个变量,如果输入的姓名与通讯录中已有的相同,就将改序号赋给变量,输出一个修改的内容界面,然后用switch(
5、)语句,输入相应的选项,分别修改学生的基本信息。12456图(7)(5)查找联系人:find()函数按学号进行查找,定义三个变量x,y,x,y,z分别赋值为1,字符串比较函数,如果输入的学号与通讯录的相同,将学生数组的序号赋给变量x,z赋值为0,如果相等,将y的值赋为0,如果z的值为0,break语句,跳出整个for循环,然后执行下面的语句,输出那个序号学生的信息,如果学号不相同,说明没有此人,则输入的学号找不到。同理按姓名查找也是这样。图(8)(6)按序排列:list()函数若按姓名排序,通过冒泡排序法,n个数从小到大排序,总共要比较n-1趟,每趟比较要比较n-1次,通过一个中间变量将两个字
6、符串调换位置,进行排序。现将姓名排序,然后再将对应学生的基本信息分别排序。否是否是图(9)(3)代码设计(函数主要代码及注释)(1)/头文件#include#include#include#include#include(2)/结构体和类的定义struct student char num12; char name30; char address100; char tel12; char post7; char email30;class interprivate: student st35;public: void addition(char num12,char name30,char a
7、ddress100,char tel12,char post7,char email30); void del(char name30); void find1(char num12); void find2(char name30); void list1(); void list2(); int correct(char name30); void format(); void write(); void read(); void print(int i); int back(); ;(3)/添加联系人void inter:addition(char num12,char name30,c
8、har address100,char tel12,char post7,char email30) int x=1;/定义一个整型变量用于判断 for(int i=0;i35;i+) if(!strcmp(sti.num,0) strcpy(sti.num,num); strcpy(sti.name,name); strcpy(sti.address,address); strcpy(sti.tel,tel); strcpy(sti.post,post); strcpy(sti.email,email); x=0; if(x=0) break; (4)/删除联系人 void inter:de
9、l(char name30) bool temp=0;/定义一个布尔变量用于判断 for(int i=0;i35;i+) if(!strcmp(sti.name,name)/如果姓名相同 temp=1; strcpy(sti.address,0);/将0复制给数组 strcpy(sti.email,0); strcpy(sti.name,0); strcpy(sti.num,0); strcpy(sti.post,0); strcpy(sti.tel,0); cout*删除成功!*endl; if(!temp) cout*查无此人!*endl; (5)/修改联系人int inter:corre
10、ct(char name30) int x; for(int i=0;i35;i+) if(!strcmp(sti.name,name) x=i; cout *修改内容* endl; cout * endl; cout * (1)修改姓名: * endl; cout * (2)修改学号: * endl; cout * (3)修改地址: * endl; cout * (4)修改邮编: * endl; cout * (5)修改电话号码: * endl; cout * (6)修改email: * endl; cout * endl; coutselect; switch(select)/多分支语句
11、case 1: coutname1; strcpy(stx.name,name1); cout* 修改成功! *endl; return back(); break; case 2: coutnum1; strcpy(stx.num,num1); cout* 修改成功! *endl; return back(); break; case 3: coutaddress1; strcpy(stx.address,address1); cout* 修改成功! *endl; return back(); break; case 4: coutpost1; strcpy(stx.post,post1);
12、 cout* 修改成功! *endl; return back(); break; case 5: couttel1; strcpy(stx.tel,tel1); cout* 修改成功! *endl; return back(); break; case 6: coutemail1; strcpy(stx.email,email1); cout* 修改成功! *endl; return back(); break; return 0;(6)/按学号查找void inter:find1(char num12) bool temp=0; for(int i=0;i35;i+) if(!strcmp
13、(sti.num,num)/字符串比较如果学号相同 temp=1;print(i); /调用print()成员函数输出基本信息 if(!temp) cout*输入的学号查找不到!*endl; (7)/按学号排序void inter:list1() for(int i=0;i34;i+)/冒泡法排序 for(int j=0;j0)/比较两个字符串的大小 char num12; char name30; char address100; char tel12; char post7; char email30; strcpy(num,stj.num);/将学号信息交换 strcpy(stj.num
14、,stj+1.num); strcpy(stj+1.num,num); strcpy(name,stj.name);/将姓名信息交换 strcpy(stj.name,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,stj.tel);/将号码信息交换 strcpy(stj.tel,stj+1.tel); strcpy(stj+1.tel,tel
15、); strcpy(post,stj.post);/将邮编信息交换 strcpy(stj.post,stj+1.post); strcpy(stj+1.post,post); strcpy(email,stj.email);/将邮箱信息交换 strcpy(stj.email,stj+1.email); strcpy(stj+1.email,email); for(int k=0;k35;k+) if(strcmp(stk.num,0) print(k); (8)/导入文件void inter:write() int i; ofstream outfile(通讯录.txt,ios:out);/打
16、开文件 if(!outfile)/打开文件 cerropen 通讯录.txt error!endl; exit(1); for(i=0;i35;i+)/导入文件 outfilesetiosflags(ios:left)setw(4)sti.num setw(6)sti.name setw(6)sti.address setw(12)sti.tel setw(7)sti.post setw(15)sti.emailendl; outfile.close();/关闭文件 coutendl; cout资料已保存endl;(9)/读取文件void inter:read() ifstream infil
17、e(通讯录.txt,ios:out);/打开文件 if(!infile)/打开文件 cerropen 通讯录.txt error!endl; exit(1); for(int i=0; i sti.num; infilesti.name; infilesti.address; infilesti.tel; infilesti.post; infilesti.email; print(i); (10)/删除全部文件void inter:format() for(int i=0;i35;i+) strcpy(sti.address,0); strcpy(sti.email,0); strcpy(s
18、ti.name,0); strcpy(sti.num,0); strcpy(sti.post,0); strcpy(sti.tel,0); (11)/输出联系人void inter:print(int i) coutsetw(4)sti.num setw(6)sti.name setw(6) sti.address setw(12)sti.tel setw(7)sti.post setw(15)sti.emailendl;(12)/返回int inter: back() cout *退出请按T,回到主菜单请按R(不计大小写):* back; if(back=R|back=r) return 1
19、; else return 0;(13)/输出菜单(自定义函数)void display() cout *通讯录¥*endl; cout*功能选择*:endl; cout *endl; cout * (1)通讯录编辑 *endl;/功能列表 cout * (2)查找联系人 *endl; cout * (3)排列联系人 *endl; cout * (4)录入文件 *endl; cout * (5)读取文件 *endl; cout * (6)格式化 *endl; cout * endl; coutselect1; switch(select1) case 1: cout *通讯录编辑* endl;
20、 cout * endl; cout * (1)添加: * endl; cout * (2)删除: * endl; cout * (3)修改: * endl; cout * endl; SetColor(2,0); coutselect2; switch(select2) case 1: cout*请输入要添加的资料:*endl; char num12; char name30; char address100; char tel12; char post7; char email30; coutnum; coutname; coutaddress; couttel; coutpost; co
21、utemail; a.addition(num,name,address,tel,post,email); cout添加成功!endl; cout *退出请按T,回到主菜单请按R(不计大小写):* back_addition; if(back_addition=R|back_addition=r) system(cls);SetColor(3,0);goto top; else goto bottom; break; case 2: cout*输入要删除人的姓名:*name2; a.del(name2); cout *退出请按T,回到主菜单请按R(不计大小写):* back_del; if(back_del=R|back_del=r) system(cls);SetColor(3,0);goto top; else cout*输入有误!*endl;goto bottom; break; c
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1