C通讯录课程设计报告资料.docx
- 文档编号:7733006
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:33
- 大小:434.83KB
C通讯录课程设计报告资料.docx
《C通讯录课程设计报告资料.docx》由会员分享,可在线阅读,更多相关《C通讯录课程设计报告资料.docx(33页珍藏版)》请在冰豆网上搜索。
C通讯录课程设计报告资料
淮海工学院计算机工程学院
课程设计报告
设计名称:
C++程序设计课程设计
姓名:
学号:
专业班级:
系(院):
计算机工程学院
设计时间:
2014.6.9——2014.6.20
设计地点:
计算机网络技术室
成绩:
指导教师评语:
签名:
年月日
1.课程设计目的
本课程设计是网络工程专业重要的实践性环节之一,是在学生学习完《C++程序设计》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
(1)巩固和加深学生对C++课程的基本知识的理解和掌握;
(2)掌握C++编程和程序调试的基本技能;(3)利用C++进行简单软件设计的基本思路和方法;(4)提高运用C++解决实际问题的能力;(5)掌握书写程序设计说明文档的能力。
2.课程设计任务与要求:
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
以本班同学的具体数据为背景,设计一个本班同学通讯录。
实现功能:
1) 通讯录编辑(添加、删除)。
2) 按不同的项进行查找。
3) 对已存在的通讯录按不同的项排序。
4) 将通讯录写入文件
5) 从文件读入通讯录
备注:
通讯录至少应该有以下数据项:
姓名,地址,电话,邮编,E-mail。
3.课程设计说明书
(1)需求分析(功能设计)
本通讯录包括编辑、查找、排序、录入文件、读取文件和格式化六项总功能。
其中
编辑通讯录又包括添加联系人、修改联系人和删除联系人三项功能;查找联系人包括“按学号查找”和“按姓名查找”两项功能;排列联系人也包括“按姓名查找”和“按学号查找”两项功能。
联系人的具体信息包括:
学号、姓名、地址、电话、邮编、邮箱。
每执行完一项功能,按相应的提示键返回主界面。
具体功能模块图介绍:
图
(1)
图
(2)
系统流程图:
R
T
图(3)
(2)详细设计(各模块流程图)
(1)主函数:
是通过一个多分支语句switch(select)实现的,其中有的分支语句中,又包含有一个多分支语句switch(selecti)[i=1,2,3],每一个分支语句结束通过输入T/t回到界面底部,或输入R/r回到主界面。
1
1
2
3
2
1
2
3
1
2
4
5
6
图(4)
(2)添加联系人:
addition()函数
利用for循环,和strcmp函数进行学号的比较,当学号不为0时,开始录入信息;当,当学号为0结束
否
是
否
是
图(5)
(3)删除联系人:
del函数()
For循环,strcmp比较,定义一个变量x,并赋值为1,如果输入的姓名与通讯录中的相同,然后就将学生的所有基本信息都赋予0,如果输入的姓名不相同,就将变量的值赋为0,再用if()判断,如果变量值为0,就输出输入姓名有错这一信息。
否
是
否
是
(4)修改联系人:
correct()函数图(6)
For循环,strcmp比较,定义一个变量,如果输入的姓名与通讯录中已有的相同,就将改序号赋给变量,输出一个修改的内容界面,然后用switch()语句,输入相应的选项,分别修改学生的基本信息。
1
2
4
5
6
图(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次,通过一个中间变量将两个字符串调换位置,进行排序。
现将姓名排序,然后再将对应学生的基本信息分别排序。
否
是
否
是
图(9)
(3)代码设计(函数主要代码及注释)
(1)//头文件
#include
#include
#include
#include
#include
(2)//结构体和类的定义
structstudent
{
charnum[12];
charname[30];
charaddress[100];
chartel[12];
charpost[7];
charemail[30];
};
classinter
{
private:
studentst[35];
public:
voidaddition(charnum[12],charname[30],charaddress[100],chartel[12],charpost[7],charemail[30]);
voiddel(charname[30]);
voidfind1(charnum[12]);
voidfind2(charname[30]);
voidlist1();
voidlist2();
intcorrect(charname[30]);
voidformat();
voidwrite();
voidread();
voidprint(inti);
intback();
};
(3)//添加联系人
voidinter:
:
addition(charnum[12],charname[30],charaddress[100],chartel[12],charpost[7],charemail[30])
{
intx=1;//定义一个整型变量用于判断
for(inti=0;i<35;i++)
{
if(!
strcmp(st[i].num,"0"))
{
strcpy(st[i].num,num);
strcpy(st[i].name,name);
strcpy(st[i].address,address);
strcpy(st[i].tel,tel);
strcpy(st[i].post,post);
strcpy(st[i].email,email);
x=0;
}
if(x==0)
break;
}
}
(4)//删除联系人
voidinter:
:
del(charname[30])
{
booltemp=0;//定义一个布尔变量用于判断
for(inti=0;i<35;i++)
{
if(!
strcmp(st[i].name,name))//如果姓名相同
{
temp=1;
strcpy(st[i].address,"0");//将0复制给数组
strcpy(st[i].email,"0");
strcpy(st[i].name,"0");
strcpy(st[i].num,"0");
strcpy(st[i].post,"0");
strcpy(st[i].tel,"0");
cout<<"*****删除成功!
*******"< } } if(! temp) { cout<<"*****查无此人! *******"< } } (5)//修改联系人 intinter: : correct(charname[30]) { intx; for(inti=0;i<35;i++) { if(! strcmp(st[i].name,name)) { x=i; cout<<"*修改内容*"< cout<<"**************************"< cout<<"* (1)修改姓名: *"< cout<<"* (2)修改学号: *"< cout<<"*(3)修改地址: *"< cout<<"*(4)修改邮编: *"< cout<<"*(5)修改电话号码: *"< cout<<"*(6)修改email: *"< cout<<"**************************"< cout<<"***请选择: ***"; charselect; cin>>select; switch(select)//多分支语句 { case'1': cout<<"***输入要修改的姓名: ***";//选择1开始修改姓名 charname1[30]; cin>>name1; strcpy(st[x].name,name1); cout<<"***修改成功! ***"< returnback(); break; case'2': cout<<"***输入要修改的学号: ***"; charnum1[12]; cin>>num1; strcpy(st[x].num,num1); cout<<"***修改成功! ***"< returnback(); break; case'3': cout<<"***输入要修改的地址: ***"; charaddress1[100]; cin>>address1; strcpy(st[x].address,address1); cout<<"***修改成功! ***"< returnback(); break; case'4': cout<<"***输入要修改的邮编: ***"; charpost1[7]; cin>>post1; strcpy(st[x].post,post1); cout<<"***修改成功! ***"< returnback(); break; case'5': cout<<"***输入要修改的电话号码: ***"; chartel1[12]; cin>>tel1; strcpy(st[x].tel,tel1); cout<<"***修改成功! ***"< returnback(); break; case'6': cout<<"***输入要修改的email: ***"; charemail1[30]; cin>>email1; strcpy(st[x].email,email1); cout<<"***修改成功! ***"< returnback(); break; } } } return0; } (6)//按学号查找 voidinter: : find1(charnum[12]) { booltemp=0; for(inti=0;i<35;i++) { if(! strcmp(st[i].num,num))//字符串比较如果学号相同 {temp=1;print(i);} //调用print()成员函数输出基本信息 } if(! temp) cout<<"***输入的学号查找不到! ! ! ***"< } (7)//按学号排序 voidinter: : list1() { for(inti=0;i<34;i++)//冒泡法排序 { for(intj=0;j<34-i;j++) { if(strcmp(st[j].num,st[j+1].num)>0)//比较两个字符串的大小 { charnum[12]; charname[30]; charaddress[100]; chartel[12]; charpost[7]; charemail[30]; strcpy(num,st[j].num);//将学号信息交换 strcpy(st[j].num,st[j+1].num); strcpy(st[j+1].num,num); strcpy(name,st[j].name);//将姓名信息交换 strcpy(st[j].name,st[j+1].name); strcpy(st[j+1].name,name); strcpy(address,st[j].address);//将地址信息交换 strcpy(st[j].address,st[j+1].address); strcpy(st[j+1].address,address); strcpy(tel,st[j].tel);//将号码信息交换 strcpy(st[j].tel,st[j+1].tel); strcpy(st[j+1].tel,tel); strcpy(post,st[j].post);//将邮编信息交换 strcpy(st[j].post,st[j+1].post); strcpy(st[j+1].post,post); strcpy(email,st[j].email);//将邮箱信息交换 strcpy(st[j].email,st[j+1].email); strcpy(st[j+1].email,email); } } } for(intk=0;k<35;k++) { if(strcmp(st[k].num,"0")) print(k); } } (8)//导入文件 voidinter: : write() { inti; ofstreamoutfile("通讯录.txt",ios: : out);//打开文件 if(! outfile)//打开文件 { cerr<<"open通讯录.txterror! "< exit (1); } for(i=0;i<35;i++)//导入文件 { outfile< : left)< } outfile.close();//关闭文件 cout< cout<<"资料已保存"< } (9)//读取文件 voidinter: : read() { ifstreaminfile("通讯录.txt",ios: : out);//打开文件 if(! infile)//打开文件 { cerr<<"open通讯录.txterror! "< exit (1); } for(inti=0;i<35;i++)//读取文件 { infile>>st[i].num; infile>>st[i].name; infile>>st[i].address; infile>>st[i].tel; infile>>st[i].post; infile>>st[i].email; print(i); } } (10)//删除全部文件 voidinter: : format() { for(inti=0;i<35;i++) { strcpy(st[i].address,"0"); strcpy(st[i].email,"0"); strcpy(st[i].name,"0"); strcpy(st[i].num,"0"); strcpy(st[i].post,"0"); strcpy(st[i].tel,"0"); } } (11)//输出联系人 voidinter: : print(inti) { cout< < <<""< } (12)//返回 intinter: : back() { cout<<"***退出请按T,回到主菜单请按R(不计大小写): ***"< charback; cin>>back; if(back=='R'||back=='r') return1; else return0; } (13)//输出菜单(自定义函数) voiddisplay() {cout<<"***通讯录¥***"< cout<<"***功能选择***: "< cout<<"********************************"< cout<<"* (1)通讯录编辑*"< cout<<"* (2)查找联系人*"< cout<<"*(3)排列联系人*"< cout<<"*(4)录入文件*"< cout<<"*(5)读取文件*"< cout<<"*(6)格式化*"< cout<<"********************************"< cout<<"***请选择***: "; } (14)//设置颜色 voidSetColor(unsignedshortForeColor=6,unsignedshortBackGroundColor=6)//给参数默认值//可以接受0/1/2个参数 { HANDLEhCon=GetStdHandle(STD_OUTPUT_HANDLE);//关于颜色的输入输出语句 SetConsoleTextAttribute(hCon,ForeColor|BackGroundColor); } (15)//主函数 intmain() { intera; a.format(); SetColor(3,0); top: display(); SetColor(5,0); charselect1; cin>>select1; switch(select1) { case'1': cout<<"*通讯录编辑*"< cout<<"*****************"< cout<<"* (1)添加: *"< cout<<"* (2)删除: *"< cout<<"*(3)修改: *"< cout<<"*****************"< SetColor(2,0); cout<<"***请选择***: "; charselect2; cin>>select2; switch(select2) { case'1': cout<<"***请输入要添加的资料: ***"< charnum[12]; charname[30]; charaddress[100]; chartel[12]; charpost[7]; charemail[30]; cout<<"输入学号: "; cin>>num; cout<<"输入姓名: "; cin>>name; cout<<"输入地址: "; cin>>address; cout<<"输入电话号码: "; cin>>tel; cout<<"输入邮编: "; cin>>post; cout<<"输入email: "; cin>>email; a.addition(num,name,address,tel,post,email); cout<<"添加成功! "< cout<<"***退出请按T,回到主菜单请按R(不计大小写): ***"< charback_addition; cin>>back_addition; if(back_addition=='R'||back_addition=='r') {system("cls");SetColor(3,0);gototop;} else gotobottom; break; case'2': cout<<"***输入要删除人的姓名: ***"< charname2[30]; cin>>name2; a.del(name2); cout<<"***退出请按T,回到主菜单请按R(不计大小写): ***"< charback_del; cin>>back_del; if(back_del=='R'||back_del=='r') {system("cls");SetColor(3,0);gototop;} else {cout<<"****输入有误! *****"< break; c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录课程设计报告资料 通讯录 课程设计 报告 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)