`《计算机科学与应用系程序类课程设计》设计报告书:题目:设计并实现简单的通讯录指导教师:姓名:学号:\日期: 2013/5/16 计算机科学与应用系 2012-2013学年第二学期一、需求分析●功能需求分析:;通讯录主要有一下模块:录入纪录、查询纪录、修改纪录、显示纪录、删除纪录、清空纪录、退出操作,其中姓名可以由字符和数字混合编码,电话号码可由字符和数字组成。
○通讯录界面设计主要功能是设计通讯录的界面,能够提示用户的实际操作等。
我采用的是按照序号来实现相应的操作的,其中:录入纪录(I/i),查询纪录(S/s),修改纪录(M/m),显示纪录(D/d),删除纪录(X/x),清空纪录(Q/q),退出操作(E/e)。
○通讯录添加联系人模块主要功能是添加联系人模块,添加操作是根据用户的要求实现的。
按实际情况,将通讯录的录入选项加多,包括添加联系人的姓名,性别,出生年月,学校,班级,电话号码,邮政编码, QQ号,家庭住址,最后输入完成后,将提示是否继续输入!○通讯录查询联系人模块主要功能是查询已添加的联系人。
其中包括按名字查找和按班级查找。
如果没有这条记录,将提示对不起,你要查找的数据不存在!反之,将分条显示该成员的数据。
○通讯录修改联系人模块…主要是修改联系人的信息,界面提示要输入密码(1)和学生姓名,如果不正确,显示要修改的学生不存在。
如果正确,则显示出改联系人的所有信息,并提示根据下面提示修改信息,姓名,性别,出生年月,学校,班级,电话号码,邮政编码, QQ号,家庭住址。
○通讯录删除联系人模块主要功能是删除不再需要的联系人。
其中包括输入你要删除输入电话或电话号码如果没有的话,将提示:要删除的学生不存在!如果找到,则提示删除联系人的所有信息和这个人的信息已经从你的通讯录中删除的信息!○通讯录显示所有联系人模块显示所有的联系人的信息,包括姓名、电话、QQ、邮编、地址并提示所有联系人已经全部显示出来!!○通讯录关闭通讯录模块提示谢谢您的使用!●环境需求分析:(操作系统: Windows 7开发软件:●方法需求分析该系统由于数据可能会很大,故采用文件操作,能够打开或修改指定文件及将多个文件组成一个文件。
而联系人的信息则通过类的对象来保存,它完全使用类来实现,充分体现面向对象的程序设计特点。
二、系统主要功能●建立文件○存储文件可以使用默认文件名或指定文件名。
○可以不保存输入记录,但需要确认是否保存输入记录。
!○如果已经有文件,只能在其后追加○新增的记录可以不存入原文件中,也可以用原来的文件覆盖内存的内容。
○可以将指定文件的内容追加到目前内存的链表后面。
●文件的存取和显示○可以单独存取文件。
○可以随时显示内存中记录的全部内容。
○可以直接存取默认文件或指定文件。
●删除记录¥○可以按“姓名”方式删除记录并更新。
○能给出被删除记录的信息。
○如果已经是空表,删除时应该给出提示信息并返回主菜单。
○如果没有要删除的信息,输出“没有找到”的信息。
●查询记录○可以按“姓名”或“班级“方式查询记录。
○能给出查询记录的信息。
○如果查询的信息不存在,输出“没有找到“的信息。
!●整体性能○应可以随时检索、删除或增加新记录,也可以保存或取消新的记录。
○姓名可由字符和数字混合编码。
○电话号码可由字符和数字组成。
三、流程图总菜单选项四、数据结构设计软件中使用的结构体和结构体数组,如:/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";char pName[20];cin>>pName;for(i=0;i<num;i++)·分别对姓名、地址、邮编、电话号码等进行储存在子函数中运用了结构体数组还运用了头文件:其中还使用大量的子函数,例如:void input(); ame;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<<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<<endl;;cout<<"\t☆继续输入(Y/N):";cin>>ch;num+=1;i++;}cout<<"\t您一共输入了"<<num<<"个人学生的记录。
\n";();menu();&}/****************************** 学生通讯录的修改 ******************************/void student::modify(){|fstream file;cout<<"修改需密码,请输入(1):";int p;cin>>p;if(p!=1){cout<<"\t***密码错误!***"<<endl;return;"}else{cout<<"请输入要修改的学生的姓名:\t";char pName[20];cin>>pName;for(i=0;i<num;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);}("",ios::out);for(i=0;i<num;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<<endl; /}cout<<"\t***修改成功***\n";menu();();}/****************************** 学生通讯录的查询 *$*****************************/void student::search(){char *inputname=new char[20];fstream file;("d:\\",ios::in|ios::out);姓名查询 "<<"☆2.按班级查询"<<endl;int a;;cin>>a;if(a==1){cout<<"\t请输入您要查询的学生的姓名:";cin>>inputname;int flag=0;for(i=0;i<=num;i++){@if(strcmp(st[i].name,inputname)==0){cout<<"\t姓名为"<<inputname<<"的学生的信息如下:"<<endl;biaotou();cout<<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<<endl;flag=1;~}}if(flag!=1)cout<<"\t对不起,您要查找的数据不存在!";return;}else if(a==2){…int flag2=0;cout<<"\t请输入您要查询的学生的班级:";int inputClass;cin>>inputClass;for(i=0;i<num;i++){if(st[i].Class==inputClass){)cout<<"\t班级为"<<inputClass<<"的学生的信息如下:"<<endl;biaotou();cout<<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<<endl;flag2=1;}})if(flag2!=1)cout<<"\t对不起,您要查找的数据不存在!"<<endl;}();menu();}/*****************************—* 学生通讯录的输出 ******************************/void student::display(){fstream file;cout<<"\t学生通讯录信息统计如下:"<<endl;biaotou();》ame>>st[i].sex>>st[i].birth>>st[i].school>>st[i].Class>>st[i].tel>>st[i].bo x>>st[i].qq>>st[i].address;();for(i=0;i<num;i++){cout<<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<<endl;}\menu();}/****************************** 学生通讯录的删除 ******************************/void student::deletes()%{fstream file;cout<<"\t需删除的学生的姓名是:";char pName[20];cin>>pName;for(int i=0;i<num;i++){if(strcmp(st[i].name,pName)==0)、break;}for(int j=i;j<num;j++)ame<<" "<<st[i].sex<<" "<<st[i].birth<<" "<<st[i].school<<" "<<st[i].Class<<" "<<st[i].tel<<" "<<st[i].box<<" "<<st[i].qq<<" "<<st[i].address<<endl;}}¥void student::qingkong(){fstream file;("",ios::out);num=0;cout<<"\t**通讯录已清空!**\n";}会10周的时间,学完了C++程序设计,接下来就是要学以致用,做课程设计。