c集中上机报告-学生通信录.docx

上传人:小飞机 文档编号:2076826 上传时间:2023-01-07 格式:DOCX 页数:34 大小:242.90KB
返回 下载 相关 举报
c集中上机报告-学生通信录.docx_第1页
第1页 / 共34页
c集中上机报告-学生通信录.docx_第2页
第2页 / 共34页
c集中上机报告-学生通信录.docx_第3页
第3页 / 共34页
c集中上机报告-学生通信录.docx_第4页
第4页 / 共34页
c集中上机报告-学生通信录.docx_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《c集中上机报告-学生通信录.docx》由会员分享,可在线阅读,更多相关《c集中上机报告-学生通信录.docx(34页珍藏版)》请在三一办公上搜索。

1、集中上机实习报告 指导教师: 甘玲 姓 名: 何波 学 号: 2010211995 班 级: 0421002 时 间: 2010-11-18 目 录第1章 需求分析31.1问题描述3 1.2 功能要求3 1.3 问题的解决方案3第2章 系统设计4 2.1 数据设计4 2.1.1 类设计4 2.1.2 类之间的关系5 2.1.3 函数设计5 2.2 结构设计6 2.2.1 模块设计6 2.2.2 模块功能星系描述62.2.3 系统流程图8第3章 系统实现9 3.1 类实现9 3.2 函数实现11 3.3 主函数实现27第4章 系统测试28 4.1 模块测试28 4.2 课程设计过程中遇到的问题3

2、3总结34 34 / 34第1章 需求分析1.1 问题描述用C+开发一个学生通信录系统。要求:分析学生通信录的类及层次图;实现简单的通信录管理,能够输入通信录卡片(实现增、删、改等功能),能够分组,并能够实现按名字(或其他方式)查询功能;实现界面:可以是DOS界面,功能按提示方式输入实现;可以是Windows界面,功能用菜单形式,输入界面用对话框形式。1.2 功能要求本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供按类别查找功能,可以对数据进行修改、删除、添加等操作。综合考虑,作为一个学生通讯录系统,系统应该具备以下功能:1.新增联系人信息; 2.修改联系人信息;3

3、.删除联系人信息;4.按不同的项进行查找某个联系人的信息;5.从文件读入通讯录。6.将通讯录写入文件;7.清除文件中的所有信息。1.3 问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述; (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)完成系统总结报告。 第2章 系统设计2.1 数据设计2.1.1 类设计一共设计了2个类,分别是基本信息类basiciInfo,学生类Student。 basiciInfo#

4、Name:char # No:string # classNum :string # Age:string # Sex:char # Tel:string; # address:char # next:basiciInfo *+ basiciInfo(char *,string ,string ,string ,char * ,string ,char * )+ friend class StudentStudent- ptb:basiciInfo *+ Student()+ Student()+ Search(char):void+ Search(string):void+ Insert()

5、:void+ Delete():void+ Modify():void+ Query():void+ Count():void+ Save():void+ ReadFile():void+ ShowAll():void+ DesTory():void+ Output(basiciInfo *):void2.1.2 类之间的关系本程序中定义了基本信息类basiciInfo,包含了表示学生基本信息的数据成员,包括姓名、学号、班级年龄、性别、电话和地址; 学生类Student中则定义了各种操作,包括添加、删除、修改联系人的信息等等。程序中学生类Student定义为基本信息类basiciInfo的友元

6、类,这样学生类中的各个函数便可以访问基本信息类中的各个基本信息了。2.1.3 函数设计定义了如下函数,其功能分别如下:void Search(char Name20); /按姓名查找联系人 void Search(string No); /按学号查找联系人void Insert(); /添加联系人信息 void Delete(); /删除联系人信息 void Modify(); /修改联系人信息void Query(); /查询联系人信息 void Count(); /统计联系人信息void Save(); /保存数据 void ReadFile(); /读入数据 void ShowAll()

7、; /查看所有联系人信息void DesTory(); /清除文件信息void Output(basiciInfo *p); /输出某一结点的信息2.2 结构设计2.2.1 模块设计系统功能模块图本次程序设计主要设计了八个模块。分别是:1. 新增联系人模块:用函数void Insert()实现 2. 删除联系人模块:用函数void Delete()实现 3. 修改联系人模块:用函数void Modify()实现 4. 查询模块:用函数void Query()实现 5. 保存数据模块:用函数void Save()实现 6. 查看全部信息模块:用函数void ShowAll ()实现 7. 清除通

8、讯录模块:用函数void DesTory()实现 8. 统计模块:用函数void Count()实现 2.2.2 各模块功能详细描述1.进入主函数进入主函数的主菜单,这是一个无限循环的菜单。当进入主菜单后,用户可以选择以下选项:1. 新增联系人 2. 删除联系人 3.修改联系人 4. 查询详细信息 5.保存数据 6. 查看全部信息7.清除通讯录 8. 统计 0.退出系统2.新增联系人 (1)按照提示依次输入学生信息:学号,姓名,班级,年龄,性别,电话和地址。如果输入的学号已经存在的话就提示是否修改该学生的信息。这是可以选择Y修改,执行“修改联系人”这个函数;或者选择N回到主菜单。(2)输入完成

9、第一个联系人的信息后会提示是否继续添加联系人信息。这时可以输入Y继续添加,输入N回到 主菜单。3.删除联系人根据提示输入要删除的联系人的学号,如果找到了该学生,则询问是否删除,否则返回主菜单。4.修改联系人 (1)根据提示输入要修改的联系人的学号,如果没有找到该学生,则返回主菜单;否则显示所要修改的联系人的所有信息,并提示用户选择要修改的信息,并输入新的信息,完成修改。(2)用户完成修改后可以输入Y继续修改,也可以输入N回到主菜单。5.查询详细信息用户可以选择按学号、名字、电话号码查找联系人的详细信息。用户选择按某一项功能查找后,系统提示用户输入相应的学号、名字或者电话号码,如果查找成功,则显

10、示该联系人的详细信息,并提示用户是否继续查询;否则返回主菜单。6.保存数据 当用户选择保存数据时,系统将会向文件写入学生通讯录信息,把链表中的结点都保存到文件中。7.查看全部信息从头结点开始输出链表的每一个结点的信息,并按照一定格式进行显示。8.清除通讯录将外部文件中的所有联系人的信息全部删除。建立一个输出流文件用来连接存储信息的文本,将数据存储到文本。9.统计 用户可以通过两种方式系统通讯录中联系人的数目。一是按性别统计,而是按班级统计。如果用户选择按性别统计,系统统计后则输出男生、女生的人数;如果用户选择按班级统计,则会提示用户输入班级号,系统统计后则输出人数。10.退出系统 退出系统前提

11、示用户是否保存所有操作,用户输入Y后系统保存用户的所有操作并退出,用户输入N后直接退出系统。2.2.3 系统流程图第3章 系统实现3.1 类实现基本信息类basiciInfoclass basiciInfo /基本信息类public: basiciInfo(char *Name,string No,string classNum,string Age,char *Sex,string Tel,char *address); /基本信息类的构造函数friend class Student; /友元类protected: char Name20; /姓名string No; /学号string c

12、lassNum; /班级 string Age; /年龄char Sex10; /性别string Tel; /电话char address50; /地址 basiciInfo *next; /指向下一结点;学生类Studentclass Student /学生类public:Student(); /学生类的构造函数Student(); /学生类的析构函数void Search(char Name20); /按姓名查找联系人 void Search(string No); /按学号查找联系人void Insert(); /添加联系人信息 void Delete(); /删除联系人信息 void

13、 Modify(); /修改联系人信息void Query(); /查询联系人信息 void Count(); /统计联系人信息void Save(); /保存数据 void ReadFile(); /读入数据 void ShowAll(); /查看所有联系人信息void DesTory(); /清除文件信息void Output(basiciInfo *p); /输出某一结点的信息private:basiciInfo *ptb; /指向基本信息类的指针;3.2 函数实现以下是本程序中所有函数的实现:basiciInfo:basiciInfo(char *Name,string No,stri

14、ng classNum,string Age,char *Sex,string Tel,char *address) /基本信息类的构造函数的实现 strcpy(this-Name,Name); strcpy(this-Sex,Sex);strcpy(this-address,address);this-No=No; this-classNum=classNum; this-Age=Age;this-Tel=Tel;Student:Student() /学生类的构造函数的实现 ptb=0;ReadFile();Student:Student() /学生类的析构函数的实现 basiciInfo

15、*p; p=ptb; while(p) p=p-next; delete ptb; ptb=p; ptb=0; void Student:Output(basiciInfo *p) /输出某一结点的信息coutt姓名: Nameendl;coutt学号: Noendl;coutt班级: classNumendl;coutt年龄: Ageendl;coutt性别: Sexendl;coutt电话: Telendl;coutt地址: addressendl;void Student:Insert()basiciInfo *p,*p2; /新结点指针 string No,Age,Tel,classN

16、um;char Name20,Sex10,address50; char c;coutnt=新增学生通讯录=n; /输入学生信息 coutNo; basiciInfo *p1;p1=ptb;while(p1) if(p1-No=No) break; else p1=p1-next; if(p1!=NULL)coutc;if(toupper(c)=Y)coutt该学生信息为:endl;Search(No);coutendl;Modify();return ;elsereturn ;coutName; coutclassNum;coutAge;coutSex;coutTel;coutaddress

17、;p=new basiciInfo(Name,No,classNum,Age,Sex,Tel,address);p-next=0; /学生结点加入链表,插入到尾部if(ptb) /若已经存在结点 p2=ptb; while(p2-next) /查找尾结点 p2=p2-next; p2-next=p; else /若不存在结点,即为表空 ptb=p; coutnt=添加成功=nendl;coutc;if(toupper(c)=Y)Insert();return ;elsereturn ;void Student:Delete() /删除联系人信息 char c;string No; coutnt

18、=删除信息=n; coutNo; coutNo=No) break; else p2=p1; p1=p1-next; if(p1!=NULL) /若找到结点,则删除 coutt所要删除的学生的信息如下:nendl;Output(p1);coutc;if(toupper(c)!=Y)return;if(p1=ptb) /若要删除的结点是第一个结点 ptb=p1-next; delete p1; else /若要删除的结点是后续结点 p2-next=p1-next; delete p1; coutt=删除成功=n;coutt是否继续删除(Y/N) c;if(toupper(c)=Y)Delete(

19、);return ;elsereturn ; else /未找到结点 coutt未找到该学生!n; getch();void Student:Modify() /修改联系人信息 basiciInfo *p1;char c;string n; /临时学号p1=ptb;coutn;while(p1) if(p1-No=n) break; else p1=p1-next; if(p1!=NULL) /若找到结点 coutnt所要修改的学生的信息如下:nendl;Output(p1);do coutn= 修改信息 =endl;coutn1. 修改姓名 2.修改学号 3.修改班级 4. 修改年龄 n5.

20、 修改性别 6. 修改联系方式 7.修改地址 8. 退出修改 nendl;coutc;if(c!=8)coutp1-Name; break;case 2: cinp1-No; break;case 3: cinp1-classNum; break;case 4: cinp1-Age; break;case 5: cinp1-Sex; break;case 6: cinp1-Tel; break;case 7: cinp1-address; break;default: break;if(c!=8)coutc;if(toupper(c)=Y)Modify();return ;elsebreak;

21、while(c!=8); else coutt未找到该学生!n; system(pause); void Student:Save() /保存联系人信息,写入到文件 ofstream fbasiciInfo(Person.txt,ios:out); char c; coutc; if(toupper(c)!=Y)return; basiciInfo *p=ptb; while(p) fbasiciInfoName No classNum Age Sex Tel addressnext; fbasiciInfo.close(); coutNameNoclassNumAgeSexTeladdres

22、s;while(fbasiciInfo.good() p=new basiciInfo(Name,No,classNum,Age,Sex,Tel,address);p-next=0; if(ptb) /若已经存在结点 /插入到尾部 basiciInfo *p2; p2=ptb; while(p2-next) /查找尾结点 p2=p2-next; p2-next=p; else /若不存在结点 ptb=p; fbasiciInfoNameNoclassNumAgeSexTeladdress;fbasiciInfo.close(); void Student:Search(string No) /

23、按string 类型查找basiciInfo *p1;p1=ptb;while(p1) if(p1-No=No) break; else p1=p1-next; if(p1!=NULL)Output(p1);elsecoutt未找到该学生Name,Name)=0)count+;Output(p1);p1=p1-next; if(count)coutt查询成功!endl;coutnt共找到 count 个名字为 Name 的同学nendl;elsecoutnt未找到该学生!nendl;system(pause);void Student:Query() /查询联系人信息char c;string

24、 No,Tel;char Name20;docoutc;coutendl;switch(c)case 1: coutNo;Search(No); ; break;case 2: coutName;Search(Name); ; break;case 3: coutTel;Search(Tel); ;break;case 4:break;default: coutt输入有误 请重新输入!n;while(c!=1&c!=2&c!=3&c!=4);if (c=4)coutt 正在退出. nendl;coutc;if(toupper(c)=Y)Query();return ;elsereturn ;s

25、ystem(pause);void Student:ShowAll() /输出全部信息char c;if(ptb=0) coutc;if(toupper(c)=Y)Insert();return;elsereturn ;else if(ptb!=0)basiciInfo *p;p=ptb;coutsetw(5)n= 联系人信息 =endl;coutsetw(5)姓名setw(12)学号setw(10)班级setw(8)年龄setw(5)性别setw(12)电话setw(20)地址endl;while(p)coutsetw(5)Namesetw(12)Nosetw(10)classNumsetw

26、(8)Agesetw(5)Sexsetw(12)Telsetw(20)addressnext;coutendl;system(pause);void Student:DesTory() /清除文件信息char c;coutnt=清除信息=n;coutt警告: 清除通讯录信息会导致您保存的信息完全消失!nendl;coutc;if(toupper(c)!=Y)return;elsebasiciInfo *p; p=ptb; while(p) p=p-next; delete ptb; ptb=p; ptb=0;ofstream fbasiciInfo(Person.txt);fbasiciInf

27、o.close();void Student:Count() /统计联系人 basiciInfo *p1; string cla; int count=0,Boy=0,Girl=0,c=0; p1=ptb; coutnt你可以通过以下方式统计:endl; coutt1、按性别统计endl; coutt2、按班级统计endl; coutch; while(ch!=1&ch!=2) coutendl; coutch; if(ch=1) while(p1) count+; if(strcmp(p1-Sex,m)=0|strcmp(p1-Sex,M)=0) Boy+; if(strcmp(p1-Sex

28、,f)=0|strcmp(p1-Sex,F)=0) Girl+; p1=p1-next; coutnt总共有 count份通讯录nendl; coutt男生: Boyt 女生: Girlnendl; system(pause); else if(ch=2) coutcla; while(p1) if(cla=p1-classNum) c+; p1=p1-next; if(c=0) coutt该班不存在学生!nendl; else coutt共有c个学生nendl; system(pause); void menu() /主菜单system(cls);cout =endl;cout t 1.新增联系人 t endl;cout t 2.删除联系人 t endl;cout t 3.修改联系人 t endl;cout t 4.查询详细信息 t endl;cout t 5.保存数据 t endl;cout t 6.查看全部信息 t endl;cout t 7.清除通讯录 t endl;cout t 8.统计 t endl;cout t 0.退出系统 t endl;cout =endl;coutchoose;switch(choose) case 1: s.Insert(); break; case 2: s.Delete(); break; case 3: s.Modify(); br

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号