




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 C+程序设计大作业通讯录管理系统PAGE 第64页 C+程序设计大作业通讯录管理系统通讯录管理系统实验报告通讯录管理系统实验报告项目名称:项目名称:设计通讯录管理系统 姓名学号完成时间指导教师: 日期: 年 月 日目 录目 录 一、需求分析开发背景1项目目标1运行环境2程序分析2.1技术要点 .3项目任务书.4技术路线3.1 总体方案43.2 详细设计5四、工程进度13 五、测试报告15六、个人小结.28一、需求分析1.1开发背景日益繁多的人际交往使得我们认识的或者将要认识的人会越来越多,从而很难搞清楚与每个人之间的联系方式,特别是对于做经常出差的人来说更是难,所以通讯录能够便捷的给我们带来
2、所需要的相关信息。然而,纸质的通讯录已经不能满足我们的要求,更新麻烦,查询困难等缺点是纸质通讯录所不能克服的。在此情况下,迫切需要一个电子版的通讯录来满足我们的需求。而随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。这就需要有一个使用的通讯录管理系统,用户可以方便的通过自己电脑的通讯录管理系统,来随时查阅自己所需要的信息,而不必再大费周折去翻开那繁琐的记事本。通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。
3、任务提出者:陈思宏,程丙,彭星 开发者:陈思宏,程丙,彭星 用 户:所有群体 1.2项目目标通过该系统,能让每一个使用该系统的用户能轻松的进行通讯录的管理和使用,能自由的增加和删除通讯记录;能自由的分组和删除已经分的组;能方便的修改通讯记录的姓名、手机号、家用电话号码、性别、电子邮件等等;同时能实现对每条记录按名字(英语、中文即可)首写字母的自动排序,从而更加方便了用户的查询和使用;也能通过记录名字首写字母或者确定名字查询海量记录中的某一个通讯录名单。 用户功能结构图:退出系统退出系统添加记录删除记录查询记录修改记录通讯录管理系统功能图自动排序自动排序通讯录管理系统组操作组添加组删除图1-1二
4、,功能说明:添加记录:需要用户手工输入记录即某一个通讯人的姓名、性别、电话、邮件,同时还要选择群组。在添加修改记录:可以对通讯人的每一个属性进行修改,当修改姓名时,将按首写字母顺序自动进行排序,当要把通讯人移动到另一个群组里面时,此记录将会在当前组里删除,在将要移动到的目标群组里添加进去,并且自动进行排序。查询记录:可以按姓名或者名字首写字母进行查询。组操作:在组操作里可以添加群组,添加群组时,会自生成一个此群组的一个文件,同时可以删除群组,在删除群组时,将会把要删除群组里的通讯人全部移到一个默认群组里面(nogroup),同时对默认群组进行自动排序。删除记录:先要通过确定的通讯人姓名来查询此
5、人是否存在在这个通讯录里,如果存在就将其删除,如果没有就返回没有该通讯人。1.3运行环境 软件:运行在Windows软件环境下硬件:PC机或笔记本电脑;最低配置:要求内存大于128M,硬盘大于1G。二、 程序分析 2.1技术要点 (一) 所需类:student: 个人记录类,即通讯人类,包括姓名、性别、电话、邮件等属性 group:群组类,即通讯录要分组的类 gstudent:包括群组的个人记录类 sort:用于排序、删除,计数的类。主要用于对记录、群组的删除,对记录的排序,同时还用于对某一个群组里通讯人个数的计数,也用于计数通讯录里有多少个群组。用于对每一个群组里的通讯人记录按其姓名首写字母
6、进行排序,当新添加一个通讯人记录在文档里时,或者对某一个通讯人的姓名修改了后,其首写在字母在文档里的排序就不是顺序排列了,因而此时就需要进行重新排序。 addStu:增加通讯人记录类。需要用户输入通讯人信息,然而会自动保存在相应的文档中去 delStu: 删除通讯人记录类。当用户输入要删除的名字后,系统就会去找这个通讯人的记录,如果找不到就返回无此通讯人记录,如果找到了就显示出这个人的所有信息,然而提醒用户是否要删除,当用户确定要删除里,然而就会将此通讯人记录从所在文档里删除掉。 groupOperation:组操作类。此类里可以进行群组的增加、删除。还实现了通讯人记录在两个群组之间的移动。
7、modify: 修改类。此类主要实现了对用户需要修改的通讯人记录进行各种修改,其中每一个通讯人属性都可以修改,包括姓名、性别、电话、群组等等 searchStu:搜索类。用户可以通过姓名首写字母或者确定的名字进行搜索,如果搜索到了就显示出来,搜索不到就显示无此记录。此类出实现了多态的功能。 showStu:显示类。主要实现对全部浏览查看时的一些显示功能。显示方式为显示每一个群组的名字,后跟此群组里有多少个通讯人,然后再在此群组下面显示此群组全部通讯人信息。紧接着就显示下一个群组的信息,至到把所有的通讯人记录信息都显示出来为止。 chinese:截取首写字母类。当通讯人姓名为英文时,直接截取第一
8、个字符。但是当通讯人记录为一中文时,此时就需要对其进行一系统的处理,最终返回一个中文首写字拼音的首字母。 printMain:功能选择类。主要完成对各种功能类的调用并实现其功能。是主函数的主要入口。 (二) 继承关系如下:student student group gstudent(三).操作流程通讯录管理系统添加删除通讯录管理系统添加删除修改组操作查询退出操作数为17时YN查看图 1- 22.2项目任务书1.陈思宏负责系统整体方案设计,相关类的设计,删除功能设计以及完善工作。2.程丙负责主界面的设计,修改和增加记录功能设计3.彭星负责组操作功能,查询操作功能设计以及相关测试三、技术路线3.1
9、总体方案3.1.1.首先设计一个student其类,主要包括通讯个人记录的相关属性。同时设计了一个group类,用于存放通讯人所在组的名称。然后是gstudent记录类,继承了student和group类,这样就实现了一个完整的个人记录类。从而我们就可以通过这个gstudent类完成相关的各种操作,包括将整个记录写入文档、从文档里读出来存放在一个临时记录里以供使用。3.1.2每一个通讯个人记录信息都以二进制开式存放在文件中,同时其记录信息是存放在用户设定的群组里面的。如 ”小明” 被放在“我的好友”这个群组里,那么“小明“这条记录信息就存放在“我的好友.txt”这个文档里面,其它则一样。3.1
10、.3 每一群组都将建一个文件,用以保存相关个人记录信息。同时群组信息也将保存在”group.txt” 文件里面,以方便对群组的操作。3.1.4 每一个群组文件里的个人记录都是按个人姓名首写字母来顺序排序的。3.1.5 我们能过main函数来调用 各种功能函数,如 图 1- 23.2详细设计3.2.1程序详细思路Main()函数先初始化printMain类,并调用printMian类中的print()成员函数并显示登陆界面类。然后再通过登陆界面中的功能选项进行选择操作。 功能一:浏览查看所有信息。调用showStu类中的allshow()成员函数。同时allshow()成员函数里面会调用 sho
11、wStu类中showstudent(char name)成员函数。showstudent(char name)类中又会调用sort类的count()成员工函数,用以计算每一个群组中有多少个通讯人。 功能二:搜索查询通讯人信息。调用searchStu类中的searchList()成员函数。在searchList()里又调用了以下四个成员函数(searchStu类中的类)void searchInfor(char groupname,char findname);void searchInfor(char groupname,char findname);void search(char name
12、);void search(char name); 此四个类用到了面像对象程序设计中的多态性,其中以下每一个成员函数均要调用sort类的count()函数,用以计算群组中的通讯人数。 功能三:群组操作。调用groupOperation类中的groupList()成员函数。其中groupList()中又调用了groupOperation类中的void addgroup()和void delGroup();成员函数。同时void delGroup()成员函数又调用了groupOperation类中的 int groupdel(char temp);用以删除除group.txt里的该组记录。 功能四
13、:增加通讯信息操作。调用addStu类中的add()成员函数。能过用户人工输入通讯人相关信息,并且存入文档中。此功能主要调用了sort类中的startSort()排序函数。chinese类中的Conver()成员函数等。 功能五:删除通讯人信息操作。调用delStu类中的delName()成员函数。delName()主要调用void delStudent(char delname);。然后void delStudent(char delname);又调用char *delInfor(char groupname,char findname);共同完成删除功能操作。 功能六:修改通讯人信息操作。
14、调用modify类中的mod()成员函数。mod()又调用了void find(char groupname);。同时void find(char groupname);又调用了sort类中的count(),chinese类中的Conver()成员函数等其它相关操作类中的函数。 功能七:退出系统操作。exit(1) 退出系统。实现功能图如下图 1-3showStu显示类图 1-3showStu显示类showstudentSort排序类count计算通讯人数Gcount计算群组数Sort排序类count计算通讯人数Gcount计算群组数startSort排序startdel 删除searchSt
15、u搜索类searchStu搜索类searchInfor(a,a)searchInfor(a,a)search(a)search(a)printMain选择功能类1. 全部浏览搜索组操作增加删除修改printMain选择功能类1. 全部浏览搜索组操作增加删除修改7. 退出groupOperation组操作类groupListgroupOperation组操作类groupListaddgroup delGroupgroupdelchinese类Conver() 转换chinese类Conver() 转换List() 中文内码表addStu 添加类add()delStudelStu删除类delNam
16、e()delStudent()delInforExit(1)退出系统工程 Exit(1)退出系统工程 MModify修改类add()find()3.3.2 面向 实现了的特性有封装、继承、多态等性 所有的功能操作都是通过对象调用类成员函数和成员变量来完成各种功能操作的,即实现了类的封装等特性,同时gstudent类继承了student和group两个类,实现了类的继承性,在searchStu搜索类中有这样的成员函数 void searchInfor(char groupname,char findname);void searchInfor(char groupname,char findna
17、me);void search(char name);void search(char name);即实现了C+的多态性,还有一些其它函数里也实现了同样的多态性特性3.3.3 类名:student私有成员: char PreWord; 通讯人姓名首写字母 char name20; 通讯人姓名 char mobile13; 移动电话 char telephone13; 家用电话 char email30; 电子邮件 char sex20; 性别 公用成员: student(); 默认构造函数student(char word,char thisname,char thismobile,char
18、thistelephone,char thisemail,char thissex) 自定义构造函数void studshow() 输出student中的记录信息void studName() 输出student 中的Name即姓名void SetPre(char thisPre) 设置记录姓名首写字母void SetStuMobile(char thismobile) 设置记录移动电话void SetStuTele(char thistelephone) 设置记录家用电话void SetStuEmail(char thisEmail) 设置记录电子邮件void SetStuSex(char
19、thisSex) 设置记录性别char *GetsStuName() 返回记录姓名char GetWord() 返回记录姓名首字母 功能:基类,用于被其它类继承,以实现对通讯录的各种操作。 实现步骤:定义类名声明私有成员声明公有成员函数、默认构造函数、自定义构造函数初始化各成员函数和自定义构造函数对类进行封装源程见附录二类名:group私有成员: char gname20 存放群组名称公有成员: group(char m=no group) 自定义默认构造函数 char *GetName() 返回群组名称 void SetName(char name) 设置群组名称 void gshow()
20、显示输出群组名friend ostream &operator(ostream&out,group dt) 运算符重载友元函数 功能:用于对群组的各种操作,并且用于被其它类继承 实现步骤:(一) 定义类名(二) 声明私有成员(三) 声明公有成员函数、默认构造函数、自定义构造函数(四) 初始化各成员函数和自定义构造函数(五) 对类进行封装源程见附录二 类名: gstudent 继承方式:多重公有继承 基类: student,group 私有成员:createtime20 创建日期 公有成员: gstudent(); 默认构造函数 gstudent(char word,char thisname,
21、char thismobile,char thistelephone,char thisemail,char thissex,char thisgroupname=no group) 自定义构造函数,同时对基类进行初始化功能: 形成一个完整的通讯个人记录信息类 实现步骤:(一) 定义类名(二) 声明私有成员(三) 声明公有成员函数、默认构造函数、自定义构造函数(四) 初始化各成员函数和自定义构造函数(五) 对类进行封装源程见附录二类名:addStu公有成员: void add(); 用于增加通讯录个人记录信息功能:增加通讯录中通讯人记录信息 实现步骤:(一) 定义类名(二) 声明私有成员(三)
22、 声明公有成员函数、默认构造函数、自定义构造函数(四) 初始化各成员函数和自定义构造函数(五) 对类进行封装源程见附录二类名:delStu公有成员: void delStudent(char delname); 查找要删除人信息,找到就调用delInforvoid delName(); 用户输入要删除的名字,再调用delStudentchar *delInfor(char groupname,char findname); 输入该人信息,并让用户确认是否删除,确认则从文件里删除掉,否则就退出此函数 功能: 当用户要删除某一个通讯人信息时,输入此人姓名在通讯录系统里先查找此人信息,如果找到就返回
23、给用户,以确认是否删除,如果确认删除就将此信息从文档里删除掉。 实现步骤:(一) 定义类名(二) 声明私有成员(三) 声明公有成员函数、默认构造函数、自定义构造函数(四) 初始化各成员函数和自定义构造函数(五) 对类进行封装源程见附录二类名:sort私有成员: char sortname20; 排序文件名,即群组名或者group公有成员: sort(); 默认构造函数 sort(char thisname); 自定义构造函数 char *GetSortName() 返回排序文件名void SetSortName(char thisname); 设置排序文件名 void startSort();
24、 排序 void startdel(); 删除某一个记录 int count(); 对某一群组里面的数据记录进行个数统计 int Gcount(); 对group里的文件群组个数进行统计功能: 对某一群组里的通讯人记录按首写字母顺序排序,对某一群组里通讯人进行个数统计,对group文件里群组个数统计,同时也可以删除某一通讯人记录。 实现步骤:(一) 定义类名(二) 声明私有成员(三) 声明公有成员函数、默认构造函数、自定义构造函数(四) 初始化各成员函数和自定义构造函数(五) 对类进行封装源程见附录二类名:groupOperation公有成员: void addgroup(); 增加群组 vo
25、id delGroup(); int groupdel(char temp); void GroupList(); 组操作入口 char *g_list(gstudent &one); void divGroup(char destgroup,char souregroup,gstudent &one,int i);功能: 实现了群组操作的种功能 实现步骤:(一) 定义类名(二) 声明私有成员(三) 声明公有成员函数、默认构造函数、自定义构造函数(四) 初始化各成员函数和自定义构造函数(五) 对类进行封装源程见附录二类名:modify私有成员:int mod_calc; 用于判断是否修改 ch
26、ar findname20; 修改通讯人姓名公有成员:modify() 默认构造函数 modify(char name) 自定义构造函数 void setName(char name); 设置构造函数 void find(char groupname); 进行各种属性的修改 void mod(); 修改记录入口,查找并调用find函数 功能: 通过用户输入确定的名字,先在通讯录里查询是否有此记录,如果没有就返回没有此记录信息,反之,则可进行对各种属性的修改。实现步骤:(一) 定义类名(二) 声明私有成员(三) 声明公有成员函数、默认构造函数、自定义构造函数(四) 初始化各成员函数和自定义构造函
27、数(五) 对类进行封装源程见附录二类名:searchStu公有成员: void searchInfor(char groupname,char findname); 显示查询结果void searchInfor(char groupname,char findname); 显示查询结果void search(char name); 按姓名查询void search(char name); 按姓名首写字母查询void searchList(); 查询入口,选择查询方式功能: 当进入搜索界面时,用户可以选择两种方式查询,一种是以通讯人姓名查询,一种是通讯人姓名首写字母查询。当查询到用户要搜索的结果
28、时,则显示此通讯人的相关信息,如果没有就返回无此信息。 实现步骤:(一) 定义类名(二) 声明私有成员(三) 声明公有成员函数、默认构造函数、自定义构造函数(四) 初始化各成员函数和自定义构造函数(五) 对类进行封装源程见附录二类名:showStu公有成员: void showstudent(char name);显示一个群组里面的所有通讯人信息 void allshow(); 显示群组,在每一个群组里又调用showstudent功能:实现对全部浏览查看时的一些显示功能。显示方式为显示每一个群组的名字,后跟此群组里有多少个通讯人,然后再在此群组下面显示此群组全部通讯人信息。紧接着就显示下一个群
29、组的信息,至到把所有的通讯人记录信息都显示出来为止。 实现步骤:(一) 定义类名(二) 声明私有成员(三) 声明公有成员函数、默认构造函数、自定义构造函数(四) 初始化各成员函数和自定义构造函数(五) 对类进行封装源程见附录二类名:chinese公有成员:chinese(); 默认构造函数chinese(char str) 自定义构造函数void SetName(char str)设置构造函数char List(int n) 中文内码列表char Conver() 截取首写字母功能: 主要完成对通讯人姓名首写字母的截取,如果是英文时,直接截取其第一个字母,如果是汉字的话,就通过汉字内码,再转换
30、为首写汉字的拼音首写字母。 实现步骤:(一) 定义类名(二) 声明私有成员(三) 声明公有成员函数、默认构造函数、自定义构造函数(四) 初始化各成员函数和自定义构造函数(五) 对类进行封装源程见附录二类名:printMain公有成员:void print(); 各种功能类的调用功能: 通讯录系统入口,以完成对各种功能类的调用,从而实现对整个通讯录系统的各种操作。 实现步骤:(一) 定义类名(二) 声明私有成员(三) 声明公有成员函数、默认构造函数、自定义构造函数(四) 初始化各成员函数和自定义构造函数(五) 对类进行封装源程见附录二四、工程进度分析阶段通过小组商议,选定通讯录管理系统收集相关资
31、料,确定通讯录管理系统需要实现的各种功能,其中确定了增加、删除、修改通讯人记录信息,同时还在进行分组,对组里的数据进行排序,可任意将某一个通讯人进行移组,可以增加、删除群组等功能操作。进行设计思路整理,并小组讨论具体实现方案查阅相关资料,掌握必需的知识和技能进行再思路整理和小组讨论,构思功能流程图统一思想,小组分工实现部分创建win32工程Main()函数的设计,main()函数设计简单,调用 printMain类中的print()方法即可,print()方法即为操作的功能入口设计程序的框架首选设计了student和group类,以确定通讯个人的相关信息我们按照类的继承顺序进行设计。用gstu
32、dent继承student和group两个基类,以确定通讯个人的完整信息再设计操作入口类printMain,用户通过此界面进行所有的功能操作然后再进行分工设计,小组成员每人负责某几块小组成员都完成自己的任务后,再进行组合,修改相关错误,最终完成了一个完整的通讯录管理系统对一个完整的通讯管理系统进行彻底的错误修改和相关功能操作的修改和完善2进行反复的连编和运行,直到最后得到一个没有错误的完正可用的系统程序测试部分通过功能操作入口处开始测试,接着测试通讯个人记录信息添加、删除、修改,群组的删除、添加。同时还要测试在添加或者修改通讯人记录信息时,是否能正确的进行排序,是否能正确的截取通讯人姓名的首写
33、字母。在进行群组操作测试中也重点测试了群组删除时,当前群组信息是否已经移动默认群组里面以及默信群组里面是否也进行了正确的排序。关于文件的读写也进行了较长时间测试。其间也进行其它一些细节问题的测试。最终确保完成了一个正确无误的通讯录系统程序五、测试报告测试顺序:群组操作 添加三个群组 nogroup(默认群组),friend,family添加通讯个人信息修改通讯个人信息删除通讯个人信息查询删除family群组注:在每次操作后均用全部浏览来查看通讯个人信息,以观看其它测试结果 测试数据: 陈思宏07923108312 HYPERLINK mailto: male nogr
34、oup 程 丙07923108312 HYPERLINK mailto: male friend 彭 星07923108312 HYPERLINK mailto:px px male friend 何 洁07923108123 HYPERLINK mailto:hj hj female family 张靓颖07923108001 zly female family 测试结果如下: 主界面 群组操作主界面 Nogroup创建成功friend群组创建成功faimly创建成功增加群组后浏览结果陈思
35、宏个人信息添加成功程丙个人信息添加成功彭星个人信息添加成功何洁个人信息添加成功张靓颖个人信息添加成功通讯个人信息添加成功后浏览修改姓名何洁为何小洁张靓颖移动电话修改成功 家用电话同张靓颖电子邮件修改成功张靓颖群组操作成功修改操作后浏览删除彭星个人信息成功删除个人信息后浏览按确定名字“李明“无结果按确定姓名查询“陈思宏“的个信息成功按首写字母查询L无结果按首写字母c查询结果成功查询返回主界面再次全部浏览通讯录删除family群组成功删除群组后浏览全部通讯录退出系统测试完成,程序能实现相应的功能。 测试总结: 以上测试即为此次测试的主要流程,整个测试过程进行得非常顺利,没有出现异常错误,其测试结果
36、与预期结果完全吻合,完全达到了测试的目标,同时也实现这次C+大作业的要求,充分体会到了面向对象程序设计的优势和特性,总而方之,此次总体测试是一次非常成功的测试 此次测试中主要生成了四个文件group.txt,nogroup.txt,friend.txt,family.txt。group.txt主要保存的是群组信息,其它三个文件是保存各个群组里的通讯人信息。 当然,要开发一个好的系统不是一件容易的事情,虽然我们小组在有限的时间里付出了最大的努力去实现应有的功能,尽最大可能的去开发出一个功能完善,界面美观的通讯录管理系统,但是还是觉得有很多不够完善的地方,这也充分让我们感觉到了学无至境的真正涵义。
37、 故而,此次成功的测试我们感到非常开心,同时也会再接再厉以求更加完善的通讯录系统开发程序。 六、个人小结1陈思宏个人小结通过这次大作业让我学到很多实质性的东西,也让我更加深刻的理解了面向对象程序设计中类的抽象、封装、继承和多态的优点,同时也让我对一个系统开发的整套系统开发流程有了更深层次的了解和掌握。对程序的组织和框架也有了更深一步的理解。由于是小组共同合作开发此系统,所以这也充分让我体会到了团队合作巨大力量和作用,这也充分培养了我们的团队合作精神。在开发的过程中团队的开发细节非常重要,如果某一个人开发的功能模块出现了即使一点点小错误就有可能造成整个系统的失败,所谓“一招走错,全盘皆输”的道理
38、在这里也表现得淋漓尽致,所以团队的偕作是至关重要的。当然这体开发体验给我带来的还有很多以前没有的知识,让我充分体会到了认真的完成一件事情是多么的受益。当然由于此系统只能在DOS环境下运行和操作,故而多少与可视化编程有一些出入,从而更加促进了我进一步学习VC可视化编程的信心和勇气。2程丙个人小结相信学会用C+解决问题不仅是自己能力的一种提高,而且还会改善学习与处事的方法。因为从我们的老师那里,我们清楚的知道,学习C+就如同一种对人生的思考,对于程序里面的逻辑思维真的有如对人生的一种思考,一个个函数就是人生中的一件件事情。要经历过了,具备了才能造就一个好的人生。对于程序来说,如果缺少了其中一个环节
39、就得不到输出结果,人生亦是如此。以前学习C+没有这样的体会,是老师让我们知道学习的心得,所以我很感谢老师,他不只是教会我们一门课的学习,也教会了我们学习的方法。记得他讲过:“学习最终是无师自通的。”我也朝着这方向迈进,他也教会了我们一些对待人生的态度。这里说说老师对我们的信赖,对我们大作业的那种认真的态度,让同学们自己去选题,自己去组织小组,再自觉去完成,这样提高了学习的气氛与同学们学习的动力。彭星个人小结通过本次大实验,对C+的面向对象思想有了一个更深的认识,对c+中四个主要特性封装、隐藏、继承、多态懂的也更多,除此之外,在编写程序时不断犯错和改正调试的过程中,阅读程序的能力也有了明显的提高
40、,最后就是链表类的使用是让我知道类还可以这样用。进一步熟悉和掌握了C+面向对象程序设计的思想,能够使用面向对象的程序设计思想解决实际问题,学会了如何将课堂所学课本知识运用到解决实际问题中去,并且学会了在实践中对知识进行检验,通过大作业,进一步认识了自我,锻炼自我的各方面能力,增强了自信,学会了积极乐观的人生态度。附录一: 参考文献:Bjarne Stroustrup.C+程序设计语言.高等教育出版社.2003谭浩强.C+面向对象程序程序设计.清华大学出版社.2006钱能.C+程序设计教程.清华大学出版社.2005张国锋等.C+程序设计实用教程.清华大学出版社.1996 附录二:类名:stude
41、nt源程序: class studentpublic:student();student(char word,char thisname,char thismobile,char thistelephone,char thisemail,char thissex) PreWord=word; strcpy(name,thisname); strcpy(mobile,thismobile); strcpy(telephone,thistelephone); strcpy(email,thisemail); strcpy(sex,thissex);void studshow()cout setw(
42、7)PreWordsetw(10)namesetw(13)mobilesetw(13)telephonesetw(16)emailsetw(8)sex ;void studName()coutname;char *GetsStuName()return name;char GetWord()return PreWord;void SetPre(char thisPre)PreWord=thisPre;void SetStuName(char thisname)strcpy(name,thisname);void SetStuMobile(char thismobile) strcpy(mobi
43、le,thismobile);void SetStuTele(char thistelephone)strcpy(telephone,thistelephone);void SetStuEmail(char thisEmail)strcpy(email,thisEmail);void SetStuSex(char thisSex)strcpy(sex,thisSex);private:char PreWord;char name20; char mobile13;char telephone13;char email30; char sex20; 类名:group源程序:class group
44、char gname20;public:group(char m=no group)strcpy(gname,m);friend ostream &operator(ostream&out,group dt)outdt.gnamen;return out;char *GetName()return gname;void SetName(char name)strcpy(gname,name);void gshow()coutsetw(4)gname;类名: gstudent源程序:class gstudent:public student,public grouppublic:gstudent
45、();gstudent(char word,char thisname,char thismobile,char thistelephone,char thisemail,char thissex,char thisgroupname=no group): student(word,thisname,thismobile,thistelephone,thisemail,thissex),group(thisgroupname); /构造函数 void ShowStudent() studshow(); gshow();private:char createtime20;/创建日期;类名:add
46、Stu源程序:class addStupublic: void add();void addStu:add()char word; char name20; char mobile13;char telephone13;char email30; char sex10;char groupx20;char str30;int groupp;nam:coutname;if(strlen(name)10)cout the length must be less than 10endl;goto nam;chinese chin(name); word=chin.Conver();mob:coutm
47、obile;if(strlen(mobile)!=11)cout the length must be 11endl;goto mob;tel:couttelephone;if(strlen(telephone)!=11)cout the length must be 11endl;goto tel;eam:coutemail;if(!strstr(email,)&!strstr(email,.) coutthe situtation is errorendl; goto eam; coutsex;if(!strcmp(sex,male)|!strcmp(sex,female)else cou
48、tThe sex must be male or femal: ;goto sexal; coutPlease choose groupendl;/beginfile open and read group num20; group m(yes); ifstream groupfile(group.txt,ios:binary);int i=0; int k;sort a(group);k=a.Gcount();for(i=0;ik;i+)groupfile.seekg(i)*sizeof(m),ios:beg);groupfile.read(char *)&m,sizeof(m); numi
49、.SetName(m.GetName();if(i!=k-1) cout i- - - - - -m.GetName()endl;elsecout i- - - - - -m.GetName();/输出已有分组 groupfile.close(); coutgroupp;/输入要添加到那一组中if(groupp(k-1)coutPlease choose again: ;goto choo;strcpy(groupx,numgroupp.GetName(); gstudent addstudent(word,name,mobile,telephone,email,sex,groupx);/将个
50、人数据写入类中 strcpy(str,numgroupp.GetName();strcat(str,.txt);/确定将数据放入那一个文件夹 ofstream fin(str,ios:binary|ios:app);fin.write(char *)&addstudent,sizeof(addstudent);/将数据写入文件fin.close();/coutnumgroupp.GetName();sort number(numgroupp.GetName();number.startSort();/end file open and read类名:delStu源程序:class delStu
51、public: void delStudent(char delname); void delName(); char *delInfor(char groupname,char findname);void delStu:delName()char delname20;coutdelname;delStudent(delname);void delStu:delStudent(char delname) group m(delete);char temp20; ifstream groupfile(group.txt,ios:binary);int i=0,j;int del_calc=0;
52、sort a(group);j=a.Gcount();for(i=0;ij;i+)groupfile.seekg(i)*sizeof(m),ios:beg);groupfile.read(char *)&m,sizeof(m);/coutm.GetName()endl; strcpy(temp,m.GetName();if(strcmp(delInfor(m.GetName(),delname),y) del_calc+; /coutI love youendl; sort del_one(temp); del_one.startdel();if(del_calc=0)coutnttendl;
53、coutttt Have not the person informationendl;coutttendlendl;elsedel_calc=0;groupfile.close();char *delStu:delInfor(char groupname,char findname) gstudent one; int i=0,j; char choice; char tempstr20; sort a(groupname); j=a.count(); strcat(groupname,.txt); fstream stufile(groupname,ios:in|ios:out|ios:b
54、inary|ios:nocreate); for(i=0;ij;i+)stufile.seekg(i)*sizeof(one),ios:beg);stufile.read(char *)&one,sizeof(one);/* I F 开始* if(strcmp(findname,one.GetsStuName()=0) /如果查找字串与记录字串相同则执行 couttempstr; choice=tempstr0; if(strlen(tempstr)!=1) coutt Please input again:; goto dele; if(choice=Y) coutt You have de
55、leted the information as follow:endl; cout setw(7)PreWordsetw(10)namesetw(13)mobilesetw(13)telephonesetw(16)emailsetw(8)sexsetw(10)group endl; cout setw(7)*setw(10)*setw(13)*setw(13)*setw(16)*setw(8)*setw(9)*endl; one.ShowStudent();coutendl;one.SetStuName(delete110);stufile.seekp(i)*sizeof(one),ios:
56、beg); stufile.write(char *)&one,sizeof(one);/将组名写入文件/break; else if(choice=N) else coutt Please input again:; goto dele; return groupname;/* I F 结束* stufile.close(); return y;类名:sort源程序:class sortpublic:sort();sort(char thisname); char *GetSortName()return sortname;void SetSortName(char thisname);vo
57、id startSort();void startdel(); int count();int Gcount();private: char sortname20;sort:sort(char thisname)strcpy(sortname,thisname);strcat(sortname,.txt); void sort:SetSortName(char thisname)strcpy(sortname,thisname);/排序开始void sort:startSort() gstudent one100; /定义100个个人信息数组 ifstream groupfile(sortna
58、me,ios:binary|ios:nocreate);int i;/计数 int j,k;j=count(); /确定有多少个个人信息 /存数组开始 for(i=0;ij;i+)groupfile.seekg(i)*sizeof(onei),ios:beg);/移动指针位置groupfile.read(char *)&onei,sizeof(onei);/读出个人信息的到one对象里 onei.studshow();/onei.studshow();/coutendl; /存数组结束groupfile.close();/关闭文件for(i=0;ij;i+) for(k=i;konek.Get
59、Word() gstudent temp; temp=onei; onei=onek; onek=temp; /* for(i=0;ij;i+) onei.studshow();coutendl; */ ofstream infile(sortname,ios:binary);/*记录存放在文档里开始* for(i=0;ij;i+)infile.seekp(i)*sizeof(onei),ios:beg);/移动指针位置infile.write(char *)&onei,sizeof(onei);/写入 /*记录存放在文档里结束*infile.close();/关闭文件/排序结束/删除开始void sort:startdel()int calc=0; gstudent one100; /定义100个个人信息数组 ifstream groupfile(sortname,ios:binary|ios:nocreate);int i;/计数 int j,k;j=count(); /确定有多少个个人信息 /存数组开始 for(i=0;ij;i+)groupfile.seekg(i)*sizeof(onei),ios:beg);/移动指针位置groupfile.read(char *)&onei,sizeof(onei);/读出个人信息的到one对象里 /存数组结束groupfile.cl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程技术咨询合同
- 出租车公司转让合同
- 房地产团购协议合同
- 场化清运作业承包合同书
- 2025年新乡a2货运从业资格证考试
- 建房施工安全责任协议书
- 医药行业客户关系管理策略
- 食堂供货商供货合同协议书
- 手房改房转让合同
- 2025年西藏驾校考试客货运从业资格证考试题库
- 行为规范教育中学校长在国旗下讲话:严格要求自己规范自己的行为
- 2024年12月广东广州市港务局直属事业单位引进紧缺专业人才8人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- DBJ50-T-100-2022 建筑边坡工程施工质量验收标准
- 2025年宁夏工商职业技术学院高职单招职业适应性测试近5年常考版参考题库含答案解析
- DB11-T 1004-2023 房屋建筑使用安全检查评定技术规程
- 《艺术与传播》课件
- 烹饪安全知识培训课件
- 2024年广东职业技术学院高职单招语文历年参考题库含答案解析
- 2025年湖北宜昌枝江金润源集团招聘17人高频重点提升(共500题)附带答案详解
- 2023CSCO儿童及青少年白血病诊疗指南
- 第一单元 阅读综合实践(同步课件)【知识精研】七年级语文下册高效课堂(统编版)
评论
0/150
提交评论