集中上机实习报告指导教师:甘玲姓名:何波学号:2010211995班级:0421002时间:2010-11-182/34目录第1章需求分析.........................................................31.1问题描述.........................................................31.2功能要求.........................................................31.3问题的解决方案...................................................3第2章系统设计.........................................................42.1数据设计.........................................................42.1.1类设计.....................................................42.1.2类之间的关系...............................................52.1.3函数设计...................................................52.2结构设计.........................................................62.2.1模块设计...................................................62.2.2模块功能星系描述...........................................62.2.3系统流程图.................................................8第3章系统实现.........................................................93.1类实现...........................................................93.2函数实现........................................................113.3主函数实现......................................................27第4章系统测试........................................................284.1模块测试........................................................284.2课程设计过程中遇到的问题........................................33总结....................................................................343/34第1章需求分析1.1问题描述用C++开发一个学生通信录系统。要求:分析学生通信录的类及层次图;实现简单的通信录管理,能够输入通信录卡片(实现增、删、改等功能),能够分组,并能够实现按名字(或其他方式)查询功能;实现界面:可以是DOS界面,功能按提示方式输入实现;可以是Windows界面,功能用菜单形式,输入界面用对话框形式。1.2功能要求本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供按类别查找功能,可以对数据进行修改、删除、添加等操作。综合考虑,作为一个学生通讯录系统,系统应该具备以下功能:1.新增联系人信息;2.修改联系人信息;3.删除联系人信息;4.按不同的项进行查找某个联系人的信息;5.从文件读入通讯录。6.将通讯录写入文件;7.清除文件中的所有信息。1.3问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)根据问题描述,设计系统的类层次;(3)完成类层次中各个类的描述;(4)完成类中各个成员函数的定义;(5)完成系统的应用模块;4/34(6)功能调试;(7)完成系统总结报告。第2章系统设计2.1数据设计2.1.1类设计一共设计了2个类,分别是基本信息类basiciInfo,学生类Student。basiciInfo#Name:char#No:string#classNum:string#Age:string#Sex:char#Tel:string;#address:char#next:basiciInfo*+basiciInfo(char*,string,string,string,char*,string,char*)+friendclassStudentStudent-ptb:basiciInfo*+Student()+~Student()+Search(char):void+Search(string):void+Insert():void+Delete():void+Modify():void5/34+Query():void+Count():void+Save():void+ReadFile():void+ShowAll():void+DesTory():void+Output(basiciInfo*):void2.1.2类之间的关系本程序中定义了基本信息类basiciInfo,包含了表示学生基本信息的数据成员,包括姓名、学号、班级年龄、性别、电话和地址;学生类Student中则定义了各种操作,包括添加、删除、修改联系人的信息等等。程序中学生类Student定义为基本信息类basiciInfo的友元类,这样学生类中的各个函数便可以访问基本信息类中的各个基本信息了。2.1.3函数设计定义了如下函数,其功能分别如下:voidSearch(charName[20]);//按姓名查找联系人voidSearch(stringNo);//按学号查找联系人voidInsert();//添加联系人信息voidDelete();//删除联系人信息voidModify();//修改联系人信息voidQuery();//查询联系人信息voidCount();//统计联系人信息voidSave();//保存数据voidReadFile();//读入数据voidShowAll();//查看所有联系人信息voidDesTory();//清除文件信息voidOutput(basiciInfo*p);//输出某一结点的信息6/342.2结构设计2.2.1模块设计系统功能模块图学生通讯录新增联系人查看全部信息保存数据查询联系人修改联系人删除联系人清除通讯录统计退出系统本次程序设计主要设计了八个模块。分别是:1.新增联系人模块:用函数voidInsert()实现2.删除联系人模块:用函数voidDelete()实现3.修改联系人模块:用函数voidModify()实现4.查询模块:用函数voidQuery()实现5.保存数据模块:用函数voidSave()实现6.查看全部信息模块:用函数voidShowAll()实现7.清除通讯录模块:用函数voidDesTory()实现8.统计模块:用函数voidCount()实现2.2.2各模块功能详细描述1.进入主函数进入主函数的主菜单,这是一个无限循环的菜单。当进入主菜单后,用户可以选择以下选项:1.新增联系人2.删除联系人3.修改联系人4.查询详细信息5.保存数据6.查看全部信息7.清除通讯录8.统计0.退出系统7/342.新增联系人(1)按照提示依次输入学生信息:学号,姓名,班级,年龄,性别,电话和地址。如果输入的学号已经存在的话就提示是否修改该学生的信息。这是可以选择Y修改,执行“修改联系人”这个函数;或者选择N回到主菜单。(2)输入完成第一个联系人的信息后会提示是否继续添加联系人信息。这时可以输入Y继续添加,输入N回到主菜单。3.删除联系人根据提示输入要删除的联系人的学号,如果找到了该学生,则询问是否删除,否则返回主菜单。4.修改联系人(1)根据提示输入要修改的联系人的学号,如果没有找到该学生,则返回主菜单;否则显示所要修改的联系人的所有信息,并提示用户选择要修改的信息,并输入新的信息,完成修改。(2)用户完成修改后可以输入Y继续修改,也可以输入N回到主菜单。5.查询详细信息用户可以选择按学号、名字、电话号码查找联系人的详细信息。用户选择按某一项功能查找后,系统提示用户输入相应的学号、名字或者电话号码,如果查找成功,则显示该联系人的详细信息,并提示用户是否继续查询;否则返回主菜单。6.保存数据当用户选择保存数据时,系统将会向文件写入学生通讯录信息,把链表中的结点都保存到文件中。7.查看全部信息从头结点开始输出链表的每一个结点的信息,并按照一定格式进行显示。8.清除通讯录将外部文件中的所有联系人的信息全部删除。建立一个输出流文件用来连接存储信息的文本,将数据存储到文本。8/349.统计用户可以通过两种方式系统通讯录中联系人的数目。一是按性别统计,而是按班级统计。如果用户选择按性别统计,系统统计后则输出男生、女生的人数;如果用户选择按班级统计,则会提示用户输入班级号,系统统计后则输出人数。10.退出系统退出系统前提示用户是否保存所有操作,用户输入Y后系统保存用户的所有操作并退出,用户输入N后直接退出系统。2.2.3系统流程图9/34调用新增函数调用查看函数调用保存函数调用查询函数调用修改函数调用删除函数调用清除函数调用统计函数开始调用菜单函数choose=1&&choose=8输入choose的值NY退出系统第3章系统实现3.1类实现基本信息类basiciInfoclassbasiciInfo//基本信息类{public:basiciInfo(char*Name,stringNo,stringclassNum,stringAge,char*Sex,stringTel,char*address);//基本信息类的构造函数10/34friendclassStudent;//友元类protected:charName[20];//姓名stringNo;//学号stringclassNum;//班级stringAge;//年龄charSex[10];//性别stringTel;//电话charaddress[50];//地址basiciInfo*next;//指向下一结点};学生类StudentclassStudent//学生类{public:Student();//学生类的构造函数~Student();//学生类的析构函数voidSearch(charName[20]);//按姓名查找联系人voidSearch(stringNo);//按学号查找联系人voidInsert();//添加联系人信息voidDelete();//删除联系人信息voidModify();//修改联系人信息voidQuery();//查询联系人信息voidCount();//统计联系人信息voidSave();//保存数据voidReadFile();//读入数据voidShowAll();//查看所有联系人信息voidDesTory();//清除文件信息voidOutput(basiciInfo*p);//输出某一结点的信息private:basiciInfo*ptb;//指向基本信息类的指针11/34};3.2函数实现以下是本程序中所有函数的实现:basiciInfo::basiciInfo(char*Name,stringNo,stringclassNum