简单的通信管理系统--课程设计.docx_第1页
简单的通信管理系统--课程设计.docx_第2页
简单的通信管理系统--课程设计.docx_第3页
简单的通信管理系统--课程设计.docx_第4页
简单的通信管理系统--课程设计.docx_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

目录一 课程设计目的-2二 题目-2三 设计分析-21 算法分析-22 类图-33 流程图-4四 程序-5五 测试和运行结果-171 开始运行-172 添加功能-173显示功能-184 排序功能-185 修改功能-196删除功能-197 查询功能-208 退出系统-21六 小结-21一、课程设计目的课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。二、题目通信录人员信息至少包括姓名、性别、电话、地址、邮政编码、邮箱、QQ号码和类别(例如:同学、朋友等)具体功能:1 输入人员信息功能 2 查询人员信息功能1)能够根据姓名、电话精确查询人员信息2)能根据地址粗略查询人员信息3 根据姓名对人员信息排序输出信息4 根据姓名、电话修改人员信息;5 根据姓名、电话删除人员信息;6、 显示所有人员信息三、设计分析1、算法分析“简单的通信管理系统”包括六个模块:输入,查询,按姓名顺序,修改,删除,输出。其中查询模块中又有按姓名,按电话号码和按地址查询,修改模块又有按电话号码和按名字修改,删除模块也有按电话号码和按名字删除。这六个模块既相互联系又相互独立。功能:定义菜单函数,通过输出函数显示系统功能。利用switch语句实现多分支选择结构。算法思路:switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句。2、类图Person-tel:string-name:string-name:string-sex:string-qq:string-address:string-post:string-type:string+add():Void+search():Void+sort():Void+change():Void+del():Void+print():Void输出菜单menuch!=null输入操作chch=3ch=4ch=5ch=6调用排序人员函数:sort()break;调用修改信息函数:change();break调用删除人员函数:del();break调用输出函数:display();breakDefault输入操作ch退出系统开始YNNNNNNYYYYYmain()3、流程图ch=2ch=1调用查询人员函数:search()调用录入人员函数:add()break;break;YN四、程序#include#include#include#includeusing namespace std;#define M 200 /可以存信息总量int N=0; /人员总量class Personpublic:Person();void add(); /添加人员信息void search(); /查询某人员信息void sort(); /排序全部人员信息void change(); /修改某人员信息 void del(); /删除某人员信息void display(); /显示全部人员信息private:string tel,name,sex,qq,address,post,mail,type;/按姓名对人员排序void Person:sort()int i,j;string stel,telM,sname,ssex,sqq,saddress,spost,smail,stype,nameM,sexM,qqM,addressM,postM,mailM,typeM;ifstream infile(f1.txt,ios:in); if(!infile)cerr open errorendl;exit(1);for(i=0;iteli;infilenamei;infilesexi;infileqqi;infileaddressi;infileposti;infilemaili;infiletypei;infile.close();ofstream outfile(f1.txt,ios:out);if(!outfile) cerr open errorendl; exit(1); /运用直接排序法for(i=0;iN;i+)for(j=0;jnamej+1)sname=namej;namej=namej+1;namej+1=sname;stel=telj;telj=telj+1;telj+1=stel;ssex=sexj;sexj=sexj+1;sexj+1=ssex;sqq=qqj;qqj=qqj+1;qqj+1=sqq;saddress=addressj;addressj=addressj+1;addressj+1=saddress;spost=postj;postj=postj+1;postj+1=spost;smail=mailj;mailj=mailj+1;mailj+1=smail;stype=typej;typej=typej+1;typej+1=stype;/排序完后重新写进文件和输出for(i=0;iN;i+) coutsetw(9)teli;outfileteli ;coutsetw(9)namei;outfilenamei ;coutsetw(9)sexi;outfilesexi ;coutsetw(9)qqi;outfileqqi ;coutsetw(9)addressi;outfileaddressi ;coutsetw(9)posti;outfileposti ;coutsetw(9)maili;outfilemaili ;coutsetw(9)typeiendl;outfiletypei endl;outfile.close();cout已排序成功!endl;Person:Person() /添加文件void Person:add()string addtel,addname,addsex,addqq,addaddress,addpost,addmail,addtype;/-以追加的方式录入信息,直接将信息追加到以前文件的末尾-ofstream outfile(f1.txt,ios:app);if(!outfile) cerr open errorendl; exit(1); N=N+1;/-依次输入相应的数据,并且追加到之前的文件中去-cout请输入您要添加的数据endl;coutaddtel;outfileaddtel ;coutaddname;outfileaddname ;coutaddsex;outfileaddsex ;coutaddqq;outfileaddqq ;coutaddaddress;outfileaddaddress ;coutaddpost;outfileaddpost ;coutaddmail;outfileaddmail ;coutaddtype;outfileaddtypeendl;outfile.close();cout已添加成功!endl;/删除文件void Person:del()int i,w=0;char ch;string n,telM,searchname,nameM,sexM,qqM,addressM,postM,mailM,typeM;ifstream infile(f1.txt,ios:in); if(!infile)cerr open errorendl;exit(1);for(i=0;iteli;coutsetw(9)namei;coutsetw(9)sexi;coutsetw(9)qqi;coutsetw(9)addressi;coutsetw(9)posti;coutsetw(9)maili;coutsetw(9)typei;coutsetw(9)typeiendl;infile.close();ofstream outfile(f1.txt,ios:out);if(!outfile) cerr open errorendl; exit(1); couta.按电话号码删除 b.按姓名删除endl;coutch; if(ch=a) coutn;for(i=0;iN;i+) if(teli!=n) outfileteli ; outfilenamei ; outfilesexi ;outfileqqi ;outfileaddressi ;outfileposti ;outfilemaili ;outfiletypei endl;else w+; cout已删除成功!endl; else if(ch=b) coutsearchname;for(i=0;iN;i+) if(namei!=searchname) outfileteli ; outfilenamei ; outfilesexi ;outfileqqi ;outfileaddressi ;outfileposti ;outfilemaili ;outfiletypei endl;else w+; cout已删除成功!endl; else for(i=0;iN;i+)outfileteli ; outfilenamei ; outfilesexi ;outfileqqi ;outfileaddressi ;outfileposti ;outfilemaili ;outfiletypei endl; cout无此选项!endl;if(w)N=N-w; elsecout无此人信息!endl;outfile.close();/修改文件 void Person:change()int i,w=0;char ch;string changetel,changename,telM,nameM,sexM,qqM,addressM,postM,mailM,typeM;ifstream infile(f1.txt,ios:in); if(!infile)cerr open errorendl;exit(1);for(i=0;iteli;infilenamei;infilesexi;infileqqi;infileaddressi;infileposti;infilemaili;infiletypei;infile.close();ofstream outfile(f1.txt,ios:out);if(!outfile) cerr open errorendl; exit(1); couta.按电话号码修改 b.按姓名修改endl;coutch; if(ch=a|ch=b)if(ch=a)coutchangetel;elsecoutchangename;for(i=0;iN;i+)if(teli=changetel|namei=changename)w=1;coutendlsetw(9)teli;coutsetw(9)namei;coutsetw(9)sexi;coutsetw(9)qqi;coutsetw(9)addressi;coutsetw(9)posti;coutsetw(9)maili;coutsetw(9)typeiendlendl;cout请选择你要修改的项:endl0退出并保存修改 1电话号码 2姓名 3性别 4QQ 5家庭住址 6邮编 7邮箱 8属性ch;while(ch!=0) switch(ch) case 1:cout请输入新电话号码:teli;break; case 2:cout请输入新姓名:namei;break; case 3:cout请输入新性别:sexi;break; case 4:cout请输入新QQ:qqi;break; case 5:cout请输入新家庭住址:addressi;break; case 6:cout请输入新邮编:posti;break; case 7:cout请输入新邮箱:maili;break; case 8:cout请输入新属性:typei;break; default:cout没有此选项!endl;break; cout请选择修改项:ch;if(w=0) cout无此人信息!endl;else cout无此选项!endl;/把修改后的数据写进文件for(i=0;iN;i+) outfileteli ;outfilenamei ;outfilesexi ;outfileqqi ;outfileaddressi ;outfileposti ;outfilemaili ;outfiletypei endl;outfile.close();cout已修改成功!endl;/查询文件void Person:search()int i,w=0;char ch;string n,telM,searchname,searchaddress,nameM,sexM,qqM,addressM,bM8,postM,mailM,typeM; couta.按电话号码查找 b.按姓名查找 c.按地址查找endl;ifstream infile(f1.txt,ios:in); if(!infile)cerr open errorendl;exit(1);for(i=0;iteli;bi0=teli;infilenamei;bi1=namei;infilesexi;bi2=sexi;infileqqi;bi3=qqi;infileaddressi;bi4=addressi;infileposti;bi5=posti;infilemaili;bi6=maili;infiletypei;bi7=typei;coutch; if(ch=a|ch=b|ch=c)if(ch=a)coutn;else if(ch=b)coutsearchname;else coutsearchaddress;for(i=0;iN;i+)if(teli=n|namei=searchname|addressi=searchaddress)w=1; coutsetw(9)bi0; coutsetw(9)bi1; coutsetw(6)bi2; coutsetw(12)bi3;coutsetw(9)bi4;coutsetw(9)bi5;coutsetw(15)bi6;coutsetw(6)bi7endl;if(w=0) cout无此人信息!endl;else cout没有此选项!endl;/显示文件void Person:display()int k;string tel,name,sex,qq,address,post,mail,type;ifstream infile(f1.txt,ios:in); if(!infile)cerr 0open errorendl;exit(1);cout电话号码 姓名 性别 QQ 家庭住址 邮编 邮箱 属性endl;for(k=0;ktel;coutsetw(9)name;coutsetw(9)sex;coutsetw(6)qq;coutsetw(12)address;coutsetw(9)post;coutsetw(9)mail;coutsetw(15)type;coutsetw(6)typech;while(ch!=0)/system(cls);switch(ch)case 1:person.add();break;case 2:person.search();break;case 3:person.sort();break;case 4:person.change();break;case 5:person.del();break;case 6:person.display();break;case 0:cout退出系统!;break;default:cout没有此选项!ch;void menu()cout+endl;cout 1.添加一个联系人 endl;cout 2.查询联系人 endl;cout 3.按名字排序所有联系人 endl;cout 4.修改联系人 endl;cout 5.删除一个联系人 endl;cout 6.显示全部联系人信息 endl;cout 0.退出系统 endl;cout+endl;cout请选择功能06. endl;五、测试和运行结果1 开始运行:如下图1显示命令菜单,可供选择的有06六个命令,只要输入对应功能的序号就可以进入操作。图12 添加功能:如图2所示选择操作“1”,进入了添加人员的功能,根据提示输入电话号码等信息。重复操作,输入了5个人的信息。图23 显示功能:如下图3所示选择操作“6”,显示了刚刚输入的5个人员信息,但是还没有排序。 图34 排序功能:如下图4所示选择操作“3”,输出按姓名排序后的人员信息。 图45 修改功能:如下图5所示选择操作“4”,根据提示输入“b”按姓名修改,修改人姓名“梁彦波”,要修改的项“5”家庭地址,改为“江西”,“0”修改完成。效果如图6,可以看到梁彦波的地址已经被修改为“江西”。 图56 删除功能:如图6所示选择操作“5”,之后会显示系统中所有人员,并提示删除方法,输入“a”按电话号码删除。输入,按回车键后,提示删除成功。可以通过图7看效

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论