还剩22页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
目录
一、系统开发相关情况1
(一)开发背景1
(二)系统开发的目标1
二、系统以及需求分析1
(一)系统目标1
三、程序功能描述以及模块结构2
(一)功能模块描述及主要类描述2
(二)程序流程图错误!未定义书签
(三)数据结构表用户使用说明与调试结果.....
(一)使用说明4
(二)调试结果4
(三)优缺点分析7
五、总结7参考文献:错误!未定义书签附录学生通讯录管理系统源码(C++)friend classManage;;class Manageprivate:Person person;public:Manage person=0;Load;^Manage Person*p;p=person;whilep{p=p-next;delete person;person=p;}person=0;void Findchar Name
[20];〃按姓名查找void Findstring ID;〃按编号查找void Add;〃添加加信息void Delete;〃删除信息void Modifystring ID;//修改信息void Query;〃查询信息void TJ;〃清除文件信息void Save;〃保存数据void Load;〃读入数据void Look;〃预览void DesTory;void OutputPerson*pcout〈〈〃\t\t学号〃〈〈p-〉No〈endl;cout/z\t\t姓名:/,p-Name«endl;性别〃〈p-Sexendl;cout/z\t\t年龄〃p-Age〈endl;coutz,\t\t联系电话〃p-Tel〈〈endl;coutendl;};void Manage::Addsystem〃cls〃;Person*p,*p2;〃新结点指针string No,Age,Tel;char Name
[20],Sex
[10];char c;cout〈〃\n**新增学生通讯录**\n〃;〃输入学生信息coutV〈”输入学号:\t”;cinNo;coutendl;Person*pl;pl=person;while plifpl-No==No|break;elsepl=pl-next;ifpl!=NULL{cout«〃该学号已存在,是否修改该学生信息Y/N〃〈endl;cinc;if toupperc=二Ycout〈“该学生信息为:,,«endl;Find No;coutendl;Modify No;return;elsereturn;}cout〈〃输入姓名:\t〃;cinName;coutendl;cout«〃输入性别\t〃;cinSex;coutendl;cout“输入年龄:\t;cinAge;coutendl;cout〈〈输入联系方式\t”;cinTel;coutendl;p=new PersonNo,Name,Sex,Age,Tel;p-next=0;〃学生结点加入链表if person〃若已经存在结点p2=person;whilep2-next〃查找尾结点{p2=p2-next;p2-next=p;〃连接else〃若不存在结点表空person=p;〃连接system〃cls〃;cout/z\t\t\t***添加成功***\n〃〈endl;cout〈〃是否继续添加Y/N z/endl;cinc;if toupperc二二Y{Add;return;else return;void Manage::Delete〃删除人员{system〃cls〃;char c;string No;cout«〃\n**删除信息**\n〃;cout〃输入要删除的学生cinNo;coutendl;〃查找要删除的结点Person*pl,*p2;pl=person;while plifpl-No==No break;elsep2=pl;pl=pl-next;}〃删除结点ifpl!=NULL〃若找到结点,则删除cout〃所要删除的学生的信息如下\n〃〈〈endl;Outputpl;cout确定是否删除Y/N:cinc;if toupperc!=’Y return;//system z/pausezz;ifpl==person〃若要删除的结点是第一个结点{person=pl-next;delete pl;else〃若要删除的结点是后续结点{p2-next=pl-next;delete pl;cout〈〃\t\t***删除成功***\n〃;cout〃是否继续删除Y/N/zendl;cinc;if toupperc==,YDelete;return;elsereturn;else〃未找到结点cout«〃未找到该学生!\n〃;getch;void Manage::Modifystring ID{Person*pl;char c;pl二person;while plifpl-No==IDbreak;elsepl=pl-next;ifpl!=NULL〃若找到结点system〃cls〃;cout”所要修改的学生的信息如下\n〃〈〈endl;Output pl;docout«〃l•修改姓名
2.修改性别3,修改年龄
4.修改联系方式
5.退出修改\nz/endl;cout〈〃请选择1-5要修改的信息\n〃〈〈endl;cinc;ifc!=5cout〈〃请输入新的信息:switch ccaser:cinpl-Name;break;case2:cinpl-Sex;break;case3:cinpl-Age;break;case4:cinpl-Tel;break;default:break;}}whilec!=’5;system〃cls〃;cout,z\t***修改成功***\n〃endl;cout〈〃是否继续修改Y/N:z/endl;cinc;if toupperc==,Ycout”请输入要修改人员的ID:cinID;coutendl;ModifyID;returnelsereturnelse〃未找到结点cout〈〈〃未找到该学生!\n〃;getch;〃暂停void Manage::Save〃数据写入到文件{ofstream fPerson/zPerson.txt〃,ios::out;char c;cout«,,\n保存数据,是否继续?[Y/N]:;cinc;if toupperc!=’Yreturn;Person*p=person;whilepfPersonp-No,z,,p-Name/,z,p-Sexz/〃〈p-Age〈〈〃z/«p-Tel«endl;p=p-next;fPerson.close;cout«,,\n保存成功...\n”;systempause;void Manage::Load〃数据读入{ifstream fPerson;Person*p=person;string No,Age,Tel;char Name
[20],Sex
[10];fPerson.openperson,txt〃,ios::in;fPersonNoNameSexAgeTel;while fPerson.good p=new PersonNo,Name,Sex,Age,Tel;p-next=0;〃员工结点加入链表if person〃若已经存在结点Person*p2;p2=person;whilep2-next〃查找尾结点p2=p2-next;p2-next=p;〃连接else〃若不存在结点表空person=p;//连接fPersonNoNameSexAgeTel;fPerson.close;}void Manage::Find string IDPerson*pl;pl=person;while plifpl-No==IDbreak;elsepl=pl-next;ifpl!=NULLOutputpl;elsecout”未找到该学生endl;}void Manage::Findchar Name
[20]Person*pl;int count=0;pl=person;while plif strcmp pl-Name,Name=0count++;Output pl;}pl=pl-next;if count{cout,,\t查询成功!!!,,endl;cout〈〃\n共找到/zcountz/个名字为的同学\n〃〈〈endl;elsecout«,,\n\t\t未找到该学生!!!\n〃〈〈endl;void Manage::Query{char c;stringID,Tel;char Name
[20];do{随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统本文介绍了在Microsoft VisualC++
6.0环境下开发一个通讯录的过程本系统界面友好,操作简单,比较实用
一、系统开发相关情况(-)开发背景面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力(-)系统开发的目标为了更好地适应我校的要求,进一步提供全方位的信息服务,通讯录在实施后应该能够达到以下的目标★能够准确地记录学生的相关信息★系统界面友好、操作简单易行,查询灵活方便,数据储存安全可靠★系统维护安全、方便、可靠,并且能够实现实用性,先进性的要求
二、系统以及需求分析(-)系统目标除了前面所述,通讯录还应该具有以下功能⑴原始数据修改简单方便;⑵方便的数据查询;⑶删除数据方便简单,稳定性好;
(4)数据计算自动完成,尽量减少人工干预;cout«/zl.按学号查找
2.按名字查找
3.按电话号码查找
4.退出查找〃《endl;cinc;//system〃cls〃;coutendl;switch ccase1:{cout〈〃输入学号ID:cinID;Find ID;};break;case2:{cout〈〃输入姓名Name:cinName;FindName;};break;case3:{cout〈〈〃输入电话号码Tel〃〈endl;cinTel;Find Tel;};break;case4:break;default:cout〈〃输入有误请重新输入!!!\n〃〈endl;}whilec!=,V c!=2c!=3c!二4;cout/z\t\t\t***查找成功***\n〃〈endl;cout〈〃是否继续查找Y/N〃〈〈endl;cinc;if toupperc二二YQuery;return;else return;system pause;void Manage::Look〃设置字体颜色SetConsoleTextAttribute GetStdHandleSTDOUTPUT_HANDLE,FOREGROUN D_INTENSITYF0REGR0UND_RED|FOREGROUND_GREEN;system//cls//;Person*pl;int count=0;char c;pl=person;while plcoutz/ID:,,pl-No//\t姓名z/pl-Nameendl;count++;pl=pl-next;if count!=0coutz,\n\t\t预览成功!!!\n,z«endl;cout〃查询详细信息Y/N:〃;cinc;if toupperc==,Y{Query;return;elsereturn;elsecout〃尚未创建通讯录,是否创建Y/N〃endl;cinc;if toupperc==,YAdd;return;}elsereturn;}void Manage::DesTory{〃设置字体为红色SetConsoleTextAttribute GetStdHandleSTD_OUTPUT_HANDLE,FOREGROUN D_INTENSITYFOREGROUND_RED;char c;system〃cls〃;cout〈〃\n\t\t\t**清除信息**\n〃;cout«〃警告:\n清除通讯录信息会导致您保存的信息完全消失!!!\n〃〈〈endl;cout«”★是否决定清除通讯录信息Y/N:,,endl;cinc;if toupperc!=’Yreturn;cout〈〃请再次确认Y/N〃〈endl;cinc;if toupperc!=’Yreturn;elsePerson*p;p=person;while p{p=p-next;delete person;person=p;person=0;//ofstream fPerson/zperson.txt〃;//fPerson.close;system z/pause,z;}void Manage::TJ{Person*pl;int count=0,Boy=0,Girl=0;pl二person;while plcount++;if strcmppl-Sex,〃男〃=0Boy++;ifstrcmppl-Sex,〃女〃=0Girl++;pl=pl-next;cout〈〃\n总共有〃〈count〈〈〃份通讯录\n〃〈endl;cout〈〃男生女生〃Girl〈〈〃\n〃〈endl;systempause;int mainvoidManage m;int c;do〃设置字体为绿色SetConsoleTextAttributeGetStdHandleSTD_OUTPUT_HANDLE,F0REGR0UND_IN TENSITYFOREGROUND_GREEN;system〃cls〃;cout/zz/«endl;cout/z★☆\t
1.新增通讯录\t^★〃endl;cout/z★☆\t
2.删除通讯录\t^★,zendl;coutzz★☆\t
3.修改通讯录★〃endl;cout〈〃★☆\t
4.查询详细信息冒☆★,,endl;coutzz★☆\t
5.保存数据★〃endl;coutzz★☆\t
6.预览信息★〃endl;coutz/★☆\t
7.清除通讯录\t^★/zendl;coutzz★☆\t
8.统计★〃endl;cout/z===================================//end1;cout〈〈〃0—退出\t请选择1-8:〃;cinc;switch ccase1:m.Add;break;case2:m.Delete;break;case3:{system〃cls〃;cout〈”请输入要修改人员的ID:,、cin»ID;coutendl;m.Modify ID;};break;case4:{system〃cls〃;m.Query;};break;case5:m.Save;break;case6:m.Look;break;case7:m.DesTory;break;case8:m.TJ;break;default:break;}}whilec!=0;char s;cout«”\n★是否要保存您的所有操作Y/N:,,«endl;cins;if touppers==,Ym.Save;return0;
三、程序功能描述以及模块结构-功能模块描述及主要类描述模块一增加人员函数Add;增加通讯录基本信息模块二删除人员函数Delete;删除指定的学生的基本信息模块三修改人员函数Modify;修改指定的通讯录基本信息模块四查询人员信息函数Query;查询指定的学生信息模块五数据存盘,载入函数Save以及Load;储存与载入基本信息模块六预览数据void Look;预览比较详细的信息模块七删除通讯录void DesTory;删除已载入的所有的信息模块八基础数据设置函数void TJ;;统计男女的人数,以及总人数本通讯录采用了面向对象的程序设计方法所有的方法均以类为基础所涉及到的类包括class Person基本员工类;该类是一个基类,设置了属于保护类的学生基本属性,以及构造函数Person charID,char*Name,int Duty可以给学生类型继承oClass Manage管理类;该类定义了管理函数,即前文所述八个模块功能的实现方法,链表的使用也包括其中此类的作能在于将所有功能模块集成并定义本系统使用的主要方法
(二)程序流程图图3-1程序流程图
(三)数据结构表序号成员名数据类型长度字段含义1No string学号2Name char20名字3Sex char10性别4Tel string20联系方式5Age string年龄表3-1数据结构表、用户使用说明与调试结果-使用说明这是一个关于通讯录管理系统,具有录入、输出、删除、查询、修改、保存、统计等功能,建立了一个含有学号、姓名、性别、联系方式等成员的类的变量class Person已从文本录入了范例数据调试过程中,可按照有关提示进行相关操作增加通讯录按“1”键;删除通讯录按“2”键;修改通讯录按“3”键;查询详细通讯录按“4”键;保存通讯录数据设置按“5”键;预览通讯录按“6”键;清除通讯录按“7”键;统计数据按“8”键二调试结果★代码中运用了switch语句调用各子函数,数字
1、
2、
3、
4、
5、
6、
7、8等七个数字新数细录★☆☆★删信譬录★☆☆★修通心录★☆☆★自查讯像★☆☆★望心保★☆改通录☆★预★☆询通☆★讯★☆通☆★讯★☆详☆★讯代表不同的指令一退出请选择〉8123456783姓名姓名姓名远姓名元姓名用姓名心周姓名易超第姓名麻姓名吴★系统启动时,会自动在存放该系统的磁盘根目录之下装入一个数据文件:person.txt,调试时一个数据文件都已经写入部分数据,使用功能“6—预览通讯录”,显示如下预览成功”,询详细信息〈丫/〉N3-I4~14—I★指令n”为退回主界面,“y”代表进入查询详细信息界面可以按照学号、名字、电话号码查找较详细信息查询详细信息《Y/N y『入学节ID学拥卷麻姓釉男性飘普系电语.我学号查找按名字查找按电话号码查找.退出查找
2.
3.4否继续查找《》Y/N48找成功***★指令“2—删除通讯录”代表调用删除人员函数Delete,要求操作者输入学生的相关ID,*删除信息**前人庭删窿函学生ID20男学煦各姓釉电话性峥露系刘八y***删除成功***D:D:D:D:D:D:D:D:D:123456789444444444-#=f#:482020:20系统根据操作者输出的ID,找出对应的记录,然后删除该学生的信息,如果删除的是第一个结点,则pl-next,指向第二个结点;下图示范了删除第一个节点之后的显示结果如果删除的是第i个0in就把下一个结点地址赋给前一个结点地址;如果找不到对应的ID,则不会删除任何一个记录,并输出“未找到!”★指令”3一修改人员”代表调用修改人员函数Modify,体统根据操作者输入的ID找到对应的记录,将新输入的数据对应地赋给要修改的各成员41文釉除话系性露姓岩富.修改姓名.修改性别修改年龄修改联系方式退出修改
23.
4.
5.清输入新的信息夕部主修改年龄.修改联系方式退出修改催法姓々修诙性别
1.
2.3,
45.★指令“5—保存数据”表示调用存盘函数Save,输入Y或者N”以进一步操作保详细录★☆☆★★☆预数鲁录☆★★☆墓信心录☆★通信★☆讯☆★★☆录☆★新通★☆☆★删讯甬★☆☆★修讯★☆☆★查通讯L退出请选择〉85保存数据.是否继续[「Y/N y保存成功...善楼任意键继缥…★指令“8—统计调用TJ;函数,按照男、女统计人数:总共有份通讯录4820#=:4112345678-男生女生408;青按任意键继续..•★指令“7—清除通讯录调用DesToryO清除已存数据:
(三)优缺点分析优点★系统中包含了输入、输出、保存、删除、查询、修改等多种功能,系统操作灵活性较强,功能较强大;★可以随意地选择不同的指令进行操作;★排版效果清晰明了,美观;★操作简单方便缺点★由于该系统对数据采用文本保存方式,所以安全性不可靠★采用链表结构操作,不能支持超大量的数据,否则运行缓慢
五、总结这次的程序设计相对于上学期还是有了进步的学生考勤管理系统要求至少要有四个类,在起初,对于定义哪四个类我是不清楚的,通过仔细的研读问题描叙终于在脑海里确定了这四个类既然是学生考勤管理系统,那由学生缺课信息中的日期我想到了时间类,这是一个很简单的类从系统的几大功能我又想到了系统的基础就是缺课学生的缺课信息,于是我又想到了一个信息类,还有两个类是根据两个统计功能想到的,在现在看来似乎有些不妥通过这次的课程设计我明白了学习程序设计语言必须要勤做实验,通过实验总结经验平时遇到的一些小问题一定要重视,越是基础的知识越要理解透彻比如指针与数组方面的知识,一旦没有弄清楚,在设计程序时就会吃亏这次的课设中,我遇到了很多的问题,有的通过思考或查看书本解决了,有的还留在脑子里,只有通过孜孜不倦的求索我们才会有进步,不懂得思考就不能真正的掌握一门知识这次的实验给以了我警示,它让我明白我所掌握的知识还很欠缺,对于继承与派生这一章的知识,我以为自己勉强掌握了,这次实验后我发现我掌握得还不够基类的保护成员公有继承到派生类,类外是否可以通过对象来访问呢,原先我认为是可以的,经过这次程序设计,我知道我错了总之,我觉得做学问不应该马虎,对于所学一定要有深入的理解,这也是我这次课设得到的启示附录通讯录系统源码C++#includeiostream#includefstream#includestring#includeconio.h#includeWindows.h//#includewindows.husing namespacestd;stringID;〃具有唯一性class Person{protected:string No;〃学号string Age;char Name
[20];//姓名char Sex
[10];〃性别string Tel;〃联系方式Person*next;public:Person stringID,char*Name,char*Sex,string Age,string Telstrcpy this-Name,Name;strcpy this-Sex,Sex;this-Tel=Tel;this-No=ID;this-Age=Age;。