设计实现简单的通讯录C++课程设计.docx
- 文档编号:5682486
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:20
- 大小:89.39KB
设计实现简单的通讯录C++课程设计.docx
《设计实现简单的通讯录C++课程设计.docx》由会员分享,可在线阅读,更多相关《设计实现简单的通讯录C++课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
设计实现简单的通讯录C++课程设计
《计算机科学与应用系程序类课程设计》
设计报告书
题目:
设计并实现简单的通讯录
指导教师:
姓名:
学号:
日期:
2013/5/16
计算机科学与应用系2012-2013学年第二学期
一、需求分析
●功能需求分析:
通讯录主要有一下模块:
录入纪录、查询纪录、修改纪录、显示纪录、删除纪录、清空纪录、退出操作,其中姓名可以由字符和数字混合编码,电话号码可由字符和数字组成。
○通讯录界面设计
主要功能是设计通讯录的界面,能够提示用户的实际操作等。
我采用的是按照序号来实现相应的操作的,其中:
录入纪录(I/i),查询纪录(S/s),修改纪录(M/m),显示纪录(D/d),删除纪录(X/x),清空纪录(Q/q),退出操作(E/e)。
○通讯录添加联系人模块
主要功能是添加联系人模块,添加操作是根据用户的要求实现的。
按实际情况,将通讯录的录入选项加多,包括添加联系人的姓名,性别,出生年月,学校,班级,电话号码,邮政编码,QQ号,家庭住址,最后输入完成后,将提示是否继续输入!
○通讯录查询联系人模块
主要功能是查询已添加的联系人。
其中包括按名字查找和按班级查找。
如果没有这条记录,将提示对不起,你要查找的数据不存在!
反之,将分条显示该成员的数据。
○通讯录修改联系人模块
主要是修改联系人的信息,界面提示要输入密码
(1)和学生姓名,如果不正确,显示要修改的学生不存在。
如果正确,则显示出改联系人的所有信息,并提示根据下面提示修改信息,姓名,性别,出生年月,学校,班级,电话号码,邮政编码,QQ号,家庭住址。
○通讯录删除联系人模块
主要功能是删除不再需要的联系人。
其中包括输入你要删除输入电话或电话号码如果没有的话,将提示:
要删除的学生不存在!
如果找到,则提示删除联系人的所有信息和这个人的信息已经从你的通讯录中删除的信息!
○通讯录显示所有联系人模块
显示所有的联系人的信息,包括姓名、电话、QQ、邮编、地址并提示所有联系人已经全部显示出来!
!
○通讯录关闭通讯录模块
提示谢谢您的使用!
●环境需求分析:
操作系统:
Windows7
开发软件:
VC6.0
●方法需求分析
该系统由于数据可能会很大,故采用文件操作,能够打开或修改指定文件及将多个文件组成一个文件。
而联系人的信息则通过类的对象来保存,它完全使用类来实现,充分体现面向对象的程序设计特点。
二、系统主要功能
●?
建立文件?
?
○?
存储文件可以使用默认文件名或指定文件名。
?
?
○?
可以不保存输入记录,但需要确认是否保存输入记录。
?
?
○?
如果已经有文件,只能在其后追加?
?
○?
新增的记录可以不存入原文件中,也可以用原来的文件覆盖内存的内容。
?
?
○?
可以将指定文件的内容追加到目前内存的链表后面。
?
?
●?
文件的存取和显示?
?
○?
可以单独存取文件。
?
?
○?
可以随时显示内存中记录的全部内容。
?
?
○?
可以直接存取默认文件或指定文件。
?
?
●?
删除记录?
?
○?
可以按“姓名”方式删除记录并更新。
?
?
○?
能给出被删除记录的信息。
?
?
○?
如果已经是空表,删除时应该给出提示信息并返回主菜单。
?
?
○?
如果没有要删除的信息,输出“没有找到”的信息。
?
?
?
●?
查询记录?
?
○?
可以按“姓名”或“班级“方式查询记录。
?
?
○?
能给出查询记录的信息。
?
?
○?
如果查询的信息不存在,输出“没有找到“的信息。
?
?
●?
整体性能?
?
○?
应可以随时检索、删除或增加新记录,也可以保存或取消新的记录。
?
?
○?
姓名可由字符和数字混合编码。
?
?
○?
电话号码可由字符和数字组成。
?
?
三、流程图
四、数据结构设计
软件中使用的结构体和结构体数组,如:
strcpy(st[i].name,name);
strcpy(st[i].sex,sex);
strcpy(st[i].birth,birth);
strcpy(st[i].school,school);
st[i].Class=Class;
strcpy(st[i].tel,tel);
strcpy(st[i].box,box);
strcpy(st[i].qq,qq);
strcpy(st[i].address,address);
};
对用户的信息进行保存,他们都以二进制的形式读写。
其中:
cout<<"请输入要修改的学生的姓名:
\t";
charpName[20];
cin>>pName;
for(i=0;i 分别对姓名、地址、邮编、电话号码等进行储存 在子函数中运用了结构体数组 还运用了头文件: student.h 其中还使用大量的子函数,例如: voidinput();//增加一条通讯录信息 voidsearch();//查询指定同学的信息 voidmodify();//修改某一个同学的信息 voiddisplay();//输出全部信息 voiddeletes();//删除指定记录 voidqingkong();//清空所有记录 voidmenu();//菜单选择 voidbiaotou();//表头 五、类设计 本程序有八个公有成员函数,九个私有成员。 公有: voidinput();用于增加通讯录的成员。 voidsearch();用于查询通讯录中已经存入的成员。 voidmodify();用于对已存入通讯录的成员进行修改。 voiddisplay();用于将保存的通讯录进行输出。 voiddeletes();用于删除通讯录中已有的成员。 voidqingkong();用于将通讯录中的所有成员清空。 voidmenu();主菜单,用于用户对功能的选择。 voidbiaotou();链表的标头。 私有: charname[20];存放姓名。 charsex[4];存放性别 charbirth[10];存放生日 charschool[20];存放学校 intClass;存放班级 chartel[15];存放电话号码 charbox[10];存放邮政编码 charqq[15];存放QQ号 charaddress[20];存放家庭地址 下面贴上类的代码: classstudent { public: voidinput();//增加 voidsearch();//查询 voidmodify();//修改 voiddisplay();//输出 voiddeletes();//删除 voidqingkong();//清空 voidmenu();//菜单选择 voidbiaotou();//表头 private: charname[20];//姓名 charsex[4];//性别 charbirth[10];//出生年月 charschool[20];//学校 intClass;//班级 chartel[15];//电话号码 charbox[10];//邮政编码 charqq[15];//QQ号 charaddress[20];//家庭住址 }; 六、主要算法设计 采用模块化设计思想,定义了一个学生类,然后分别在类中定义实现各个功能的函数。 在个人类中定义了九个私有变量,分别是姓名,性别,出生年月,学校,班级,电话号码,邮政编码,QQ号,家庭住址。 由主菜单选择进入通讯录,进行功能的实现。 尽量使用简单明了的文字提示,让界面更加友好。 七、主要代码 student.h #if! defined_STUDENT_H_ #define_STUDENT_H_ #include #include #include #include usingnamespacestd; classstudent { public: voidinput();//增加 voidsearch();//查询 voidmodify();//修改 voiddisplay();//输出 voiddeletes();//删除 voidqingkong();//清空 voidmenu();//菜单选择 voidbiaotou();//表头 private: charname[20];//姓名 charsex[4];//性别 charbirth[10];//出生年月 charschool[20];//学校 intClass;//班级 chartel[15];//电话号码 charbox[10];//邮政编码 charqq[15];//QQ号 charaddress[20];//家庭住址 }; #endif /*******************************************************************/ student.cpp #include"student.h" intnum=0; inti=0; studentst[100];//学生个数 /***************************** *学生通讯录信息的输入* *****************************/ voidstudent: : input() { fstreamfile; charch='y'; //以输出方式打开文件,如果已经有此名字的文件,则其原有内容全部删除。 while(ch=='y'||ch=='Y') { cout<<"pleaseinputstudent'smessage! "< cout<<"\t请输入姓名: \t"; cin>>st[i].name; cout<<"\t请输入性别: \t"; cin>>st[i].sex; cout<<"\t请输入出生年月(如199109): "; cin>>st[i].birth; cout<<"\t请输入学校: \t"; cin>>st[i].school; cout<<"\t请输入班级(数字): \t"; cin>>st[i].Class; cout<<"\t请输入电话号码: \t"; cin>>st[i].tel; cout<<"\t请输入邮政编码: \t"; cin>>st[i].box; cout<<"\t请输入QQ号: \t"; cin>>st[i].qq; cout<<"\t请输入家庭住址: \t"; cin>>st[i].address; file< < < cout<<"\t☆继续输入? (Y/N): "; cin>>ch; num+=1; i++; } cout<<"\t您一共输入了"< \n"; file.close(); menu(); } /***************************** *学生通讯录的修改* *****************************/ voidstudent: : modify() { fstreamfile; cout<<"修改需密码,请输入 (1): "; intp; cin>>p; if(p! =1) { cout<<"\t***密码错误! ***"< return; } else { cout<<"请输入要修改的学生的姓名: \t"; charpName[20]; cin>>pName; for(i=0;i { if(strcmp(st[i].name,pName)==0) break; else { cout<<"\t要修改的学生不存在! \n";return; } } cout<<"请输入修改后的姓名: \t";cin>>name; cout<<"请输入修改后的性别: \t";cin>>sex; cout<<"请输入修改后的出生年月: ";cin>>birth; cout<<"请输入修改后的学校: \t";cin>>school; cout<<"请输入修改后的班级(数字): \t";cin>>Class; cout<<"请输入修改后的电话号码: ";cin>>tel; cout<<"请输入修改后的邮政编码: ";cin>>box; cout<<"请输入修改后的QQ号: \t";cin>>qq; cout<<"请输入修改后的家庭住址: ";cin>>address; strcpy(st[i].name,name); strcpy(st[i].sex,sex); strcpy(st[i].birth,birth); strcpy(st[i].school,school); st[i].Class=Class; strcpy(st[i].tel,tel); strcpy(st[i].box,box); strcpy(st[i].qq,qq); strcpy(st[i].address,address); } for(i=0;i { file< < < } cout<<"\t***修改成功***\n"; menu(); file.close(); } /***************************** *学生通讯录的查询* *****************************/ voidstudent: : search() { char*inputname=newchar[20]; fstreamfile; file.open("d: \\student.txt",ios: : in|ios: : out);//以读的方式打开文件 cout<<"\t1.按姓名查询"<<"☆2.按班级查询"< inta; cin>>a; if(a==1) { cout<<"\t请输入您要查询的学生的姓名: "; cin>>inputname; intflag=0; for(i=0;i<=num;i++) { if(strcmp(st[i].name,inputname)==0) { cout<<"\t姓名为"< "< biaotou(); cout< < < flag=1; } } if(flag! =1) cout<<"\t对不起,您要查找的数据不存在! "; return; } elseif(a==2) { intflag2=0; cout<<"\t请输入您要查询的学生的班级: "; intinputClass; cin>>inputClass; for(i=0;i { if(st[i].Class==inputClass) { cout<<"\t班级为"< "< biaotou(); cout< < < flag2=1; } } if(flag2! =1) cout<<"\t对不起,您要查找的数据不存在! "< } file.close(); menu(); } /***************************** *学生通讯录的输出* *****************************/ voidstudent: : display() { fstreamfile; cout<<"\t学生通讯录信息统计如下: "< biaotou(); //以输入输出方式打开文件,文件可读可写 file.open("d: \\student.txt",ios: : in|ios: : out); for(i=0;i file>>st[i].name>>st[i].sex>>st[i].birth>>st[i].school>>st[i].Class>>st[i].tel>>st[i].box>>st[i].qq>>st[i].address; file.close(); for(i=0;i { cout< < < } menu(); } /***************************** *学生通讯录的删除* *****************************/ voidstudent: : deletes() { fstreamfile; cout<<"\t需删除的学生的姓名是: "; charpName[20]; cin>>pName; for(inti=0;i { if(strcmp(st[i].name,pName)==0) break; } for(intj=i;j { studenttemp=st[j]; if(j { st[j]=st[j+1]; st[j+1]=temp; } } file.open("d: \\student.txt",ios: : out); if(i { num-=1; cout<<"\t\t姓名为"< \n"; } else { cout<<"\t要删除的学生不存在! \n"; } for(i=0;i { file< < < } } voidstudent: : qingkong() { fstreamfile; num=0; cout<<"\t**通讯录已清空! **\n"; } //********表头********** voidstudent: : biaotou() { cout<<"姓名"<<"性别"<<"出生年月"<<"学校"<<"班级" <<"电话号码"<<"邮政编码"<<"QQ号"<<"家庭住址"< } /***************************** *菜单选择函数* *****************************/ voidstudent: : menu() { while (1) { cout< cout<<"\t=zzia=zzia=zzia=zzia=zzia=zzia=\n"; cout<<"\t||制作者: 黄逸雪||\n"; cout<<"\t||◇录入纪录(I/i)||\n"; cout<<"\t||◇查询纪录(S/s)||\n"; cout<<"\t||◇修改纪录(M/m)||\n"; cout<<"\t||◇显示纪录(D/d)||\n"; cout<<"\t||◇删除纪录(X/x)||\n"; cout<<"\t||◇清空纪录(Q/q)||\n"; cout<<"\t||◇退出操作(E/e)||\n"; cout<<"\t||制作者: 李瑞晗||\n"; cout<<"\t||欢迎您的使用||\n"; cout<<"\t=zzia=zzia=zzia=zzia=zzia=zzia=\n"; cout<<"☆请输入您的选择(I/i,S/s,M/m,D/d,X/x,Q/q,E/e,不区分大小写): "; charch; cin>>ch; switch(ch) { case'i': case'I': input();break; case's': case'S': search();break; case'm': case'M': modify();break; case'd': case'D'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 实现 简单 通讯录 C+ 课程设计