还剩48页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
北华航天工业学院毕业论文摘要C++作为一种面向的程序设计语言,在现在的计算机领域上,应用的很广泛,市场对熟练掌握C++语言的人才需求量也在日益的增加作为一种软件开发的计算机语言,C++拥有简单方便的特点,同时具有信息隐蔽的特点,可以根据自己的意愿对自己设计的信息进行封装,是信息安全在软件的维护方面,是面向对象进行维护,可以使信息的修改,系统的大体模块清新,使用方便所以在全国的各个高校,都在开设C++这门课程,可见在计算机方面C++具有很高的地位!本次课设意在培养C++在软件的开发方面的意识,为以后更多的计算机语言的学习做好基础!当前各高校对职工的需求量更大,高校要想对高效的各类职员的信息进行管理,就必须要拥有一个完善的人员信息管理系统,以实现人员信息的方便查找等功能,方便了人与哪的流通等这次课设的题目正在尝试的解决这个问题关键词系统设计类信息信息存储图数据成员成员函数查改排序目录TOC\o1-3\h\z\u摘要1目录1第1章绪论
11.1课程设计的目的
11.2课程设计的背景和意义
11.
2.1课程设计的背景
11.
2.2课程设计的意义
21.3课程设计环境2第2章需求分析
32.1问题描述
32.2功能要求
32.3问题的解决方案3第3章系统设计
43.1数据设计
43.
1.1类设计
43.
1.2类之间的关系
43.
1.3函数设计
53.2结构设计
53.
2.1系统流程图
53.
2.2界面设计6第4章系统实现
74.1类实现
74.2函数实现
104.3主函数实现17第5章系统测试
205.1模块测试
205.2课程设计过程中遇到的问题25总结25致谢26参考文献28附录29第1章绪论
1.1课程设计的目的
1、巩固所学的C以及C++知识,以达到熟练掌握语法以及编程规范的目的
2、将所学的编程语言与实际问题结合起来,达到学为所用的母的
3、提高独立思考问题的目的,通过对所给问题的分析,来提高分析解决问题的目的
1.2课程设计的背景和意义
1.
2.1课程设计的背景
1.理论研究基础
(1)类代表了某一批对象的共性和特征,类是对象的抽象,而对象是类的一个实例
(2)友元成员函数可以引用类中的所有成员
(3)派生类可以继承基类的所有公用的数据成员,当继承方式是protected方式的时候,派生类可以继承积累中的protected类型的成员,但是不可以继承积累的私有的成员
(4)运用seekg和tellp函数可以计算已知文件的存储的对象的个数以二进制的方式进行数据的存储的时候便于运用指针进行对数据的操作
(5)运用冒泡法对数据进行排序可以实现对数据按由小到大或者由大到小的方式进行排序
(6)当类的成员函数定义成为友元函数的时候,在main函数中可以直接调用,不需要和一般的成员函数一样需要用对象调用
(7)运用goto进行循环的时候,可以使程序根据自己的意愿进行循环的使用
(8)运用工程的方式进行程序的运行的时候,可以对每个类进行以头文件的形式存储,再添加到工程中,可以使程序的main函数清晰
(9)在程序的开头设置了全局的变量,可以在程序中运用并可以在程序中输出
2.技术层面的支持
(1)、经过一年来对MicrosoftVisualC++
6.0软件的使用,在此环境下的兼容了C与C++的语法,可以运用此软件进行C++程序的编写,同时运行此编译器对数据的内存空间的开辟不能满足自己需要的空间的时候,可以在工程的参数中进行适当的修改
(2)、在MicrosoftVisualC++
6.0的环境下,编译器提供的变量的存储空间有限,但是在工程的设置中,改变参数可以使程序正常的运行
1.
2.2课程设计的意义通过本次课设来检验对所学的编程语言的掌握情况,从而使我们对所学习的知识的掌握,同时提高了自己对问题的分析能力,可以从一个题目中来发掘未知的问题以及功能,提高了做事谨慎的能力,同时也规范了自己的编程规范
1.3课程设计环境软件环境在WindowsXP系统中,VisualC++
6.0环境下运行硬件环境图书馆五楼计算机系软件一或软三实验室第2章需求分析
2.1问题描述某高校有四类员工教师、实验员、行政人员,教师兼行政人员;共有的信息包括编号、姓名、性别、年龄等其中,教师还包含的信息有所在系部、专业、职称;实验员还包含的信息由所在实验室、职务;行政人员还包含的信息有政治面貌、职称等
2.2功能要求
(1)基本功能1添加功能程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加2查询功能可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息3显示功能可显示当前系统中所有记录,每条记录占据一行4编辑功能可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性5)删除功能主要实现对已添加的人员记录进行删除如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存6统计功能能根据多种参数进行人员的统计例如,统计四类人员数量以及总数,或者统计男、女员工的数量,或者统计某年龄段人员的数量等7)保存功能可将当前系统中各类人员记录存入文件中,存入方式任意8)读取功能可将保存在文件中的人员信息读入到当前系统中,供用户进行使用
(2)扩展功能在完成以上基本功能的基础上,可自行进行扩展或完善,例如1添加人员记录时,考虑各种数据的有效性2)组合查询功能的实现3)可按人员的某些信息进行排序4)对文件的读写使用二进制信息
2.3问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;2)分析系统中的各个实体及它们之间的关系;3)根据问题描述,设计系统的类层次;4)完成类层次中各个类的描述;5)完成类中各个成员函数的定义;6)完成系统的应用模块;7)功能调试;8)完成系统总结报告第3章系统设计
3.1数据设计
3.
1.1类设计根据题目的要求的四类人员,本系统中总共定义了四个了类,teacher类(教师类)、experience类(实验员类)、govern类(行政人员类)、tego类(教师兼行政人员类)在四个类中均有num(编号)、name(姓名)、sex(性别)、age(年龄)四个数据成员,teacher类中还有xi(系部)、zhuan()专业、zhi(职称)三个数据成员,experience类中还有addr(所在实验室)、post(职务)两个数据成员,govern类中还有main(政治面貌)、zhicheng(职称)两个数据成员,tego类中的数据成员是teacher类和govern类的数据成员的总和在每个类中均有是个友元的成员函数friendvoidget1(添加函数);friendvoidchaxun1(按编号查询函数);friendvoidchaxun11(按姓名查询函数);friendvoidxianshi1(信息显示函数);friendvoidshanchu1(按编号删除函数);friendvoidshanchu11(按姓名查询函数);friendvoidtongji1(信息统计函数);friendvoidbianji1(信息编辑函数);friendvoidpaixu1(按编号排序函数);friendvoidpaixu11(按年龄查询函数)(四个类中函数基本形同,不一一列出)
3.
1.2类之间的关系由于四类人员均含有编号、姓名、年龄、性别四种信息,同时教师兼行政人员类含有教师类和行政人员类的共育信息,所以,teacher类是基类,experience类和govern类是由teacher类派生,tego类是teacher类和govern类共同派生
3.
1.3函数设计四个类中都有是个友元的成员函数,main函数中定义了八个函数来实现功能四分类中的成员函数基本一样(以teacher类为例说明)friendvoidget1(添加函数);friendvoidchaxun1(按编号查询函数);friendvoidchaxun11(按姓名查询函数);friendvoidxianshi1(信息显示函数);friendvoidshanchu1(按编号删除函数);friendvoidshanchu11(按姓名查询函数);friendvoidtongji1(信息统计函数);friendvoidbianji1(信息编辑函数);friendvoidpaixu1(按编号排序函数);friendvoidpaixu11(按年龄查询函数)main函数中的函数为voidshuru(添加功能)、voidchaxun(查询功能)、voidxianshi(显示功能)、voidbianji(编辑功能)、voidshanchu(删除功能)、voidtongji(统计功能)、voidpaixu(排序功能)、voidtuichu(退出功能)在main函数中分别调用各个类中的函数,来实现对各个类的操作四个类中分别封装了对各自类的数据成员的操作,具体实现可以表示如下main函数----成员函数-------数据成员
3.2结构设计
3.
2.1系统流程图
3.
2.
1.1人员类如图派生派生派生
3.
2.
1.2函数关系图调用注释各类中的成员函数分别与main函数的各个功能函数相对应
3.
2.
1.3系统使用流程图继续使用
3.
2.2界面设计使用时的界面如下图
3.
2.2-1退出时的界面如下图
3.
2.2-2第4章系统实现
4.1类实现各类均使用友元函数,方便main函数调用//教师类classteacher{protected:charxi
[20];//系部charzhuan
[20]//;专业charzhi
[20];//职称intnum;//编号charname
[20];//姓名charsex
[20];//性别intage;//年龄public:teacher{}//构造函数friendvoidget1;//添加函数friendvoidchaxun1;//编号查询函数friendvoidchaxun11;//姓名查询函数friendvoidxianshi1;//显示函数friendvoidshanchu1;//按编号删除函数friendvoidshanchu11;//按姓名删除函数friendvoidtongji1;//统计函数friendvoidbianji1;//编辑函数friendvoidpaixu1;//排序函数friendvoidpaixu11;//排序函数};//实验员类classexperience:publicteacher{protected:charaddr
[20];//所在实验室charpost
[20];//职务public:experience{}//构造函数friendvoidget2;//添加函数friendvoidchaxun2;//编号查询函数friendvoidchaxun22;//姓名查询函数friendvoidxianshi2;//显示函数friendvoidshanchu2;//按编号删除函数friendvoidshanchu22;//按姓名删除函数friendvoidtongji2;//统计函数friendvoidbianji2;//编辑函数friendvoidpaixu2;//按编号排序函数friendvoidpaixu22;//按年龄排序函数};//行政人员类classgovern:publicteacher{protected:charmain
[20];//政治面貌charzhicheng
[20];//职称public:govern{}friendvoidget3;//构造函数friendvoidget3;//添加函数friendvoidchaxun3;//编号查询函数friendvoidchaxun33;//姓名查询函数friendvoidxianshi3;//显示函数friendvoidshanchu3;//按编号删除函数friendvoidshanchu33;//按姓名删除函数friendvoidtongji3;//统计函数friendvoidbianji3;//编辑函数friendvoidpaixu3;//按编号排序函数friendvoidpaixu33;//按年龄排序函数};//教师兼行政人员类classtego:publicgovern:publicteacher{public:tego{}//构造函数friendvoidget4;//添加函数friendvoidchaxun4;//编号查询函数friendvoidchaxun44;//姓名查询函数friendvoidxianshi4;//显示函数friendvoidshanchu4;//按编号删除函数friendvoidshanchu44;//按姓名删除函数friendvoidtongji4;//统计函数friendvoidbianji4;//编辑函数friendvoidpaixu4;//按编号排序函数friendvoidpaixu44;//按年龄排序函数};
4.2函数实现
一、四个类的成员函数
1、添加函数friendvoidget(主要运用循环对每个数据成员的添加)cout请输入要输入的教师的人数;cinn;cout教师编号姓名性别年龄系部专业职称endl;fori=aa;in+aa;i++{cout输入第i-aa+1个教师的信息;yy:cint[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhi;fork=1;k=i;k++{ift[i].num==t[i-k].num{cout教师号i-k+1存在,重新添加:;gotoyy;}}ift[i].num==-1break;forintkk=0;;kk++{ift[i].num0||t[i].age=0||strcmpt[i].sexmstrcmpt[i].sexf{cout数据有误,重新输入endl;cout输入第i-aa+1个教师的信息;cint[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhi;}elsebreak;}}
2、查询函数friendvoidchaxun(以按编号查询为例,主要运用循环)cout请输入要查询的教师的编号;cink;fori=0;iaa;i++{ifk==t[i].num{cout该教师的信息为endl;cout该教师的编号为t[i].numendl;cout该教师的姓名为t[i].nameendl;cout该教师的性别为t[i].sexendl;cout该教师的年龄为t[i].ageendl;cout该教师的系部为t[i].xiendl;cout该教师的专业为t[i].zhuanendl;cout该教师的职称为t[i].zhiendl;q=1;break;}}
3、编辑函数friendvoidbianji(主要运用循环先查找再编辑)cout请输入您要编辑的教师的编号endl;intkjww;cink;fori=0;iaa;i++{ifk==t[i].num{cout原来教师的信息为endl;cout教师编号姓名性别年龄系部专业职称endl;coutt[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhiendl;cout请输入您要修改的信息endl;q=1;yy:cint[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhi;ww=t[i].num;forj=0;ji;j++{ifww==t[j].num{cout编号重复,请重新输入!endl;gotoyy;}elsebreak;}forj=i+1;jaa;j++{ifww==t[j].num{cout编号重复,请重新输入!endl;gotoyy;}elsebreak;}}}
4、显示函数friendvoidxianshi(主要运用循环来循环输出)cout教师所有信息如下:endl;cout教师编号姓名性别年龄系部专业职称endl;fori=0;iaa;i++{coutt[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhiendl;}
5、删除函数friendvoidshanchu(以编号删除为例,运用循环来先查找再覆盖原信息来删除,查找时与查询一样,在此不写出)fori=aaa;iaa-1;i++{t[i].num=t[i+1].num;strcpyt[i].namet[i+1].name;strcpyt[i].sext[i+1].sex;t[i].age=t[i+1].age;strcpyt[i].xit[i+1].xi;strcpyt[i].zhuant[i+1].zhuan;strcpyt[i].zhit[i+1].zhi;}
6、统计函数friendvoidtongji(利用循环对人员性别对全局变量自增)fori=0;iaa;i++{ifstrcmpt[i].sexm==0a1++;elsea2++;}cout男女教师总数为a1+a2endl;cout男教师数为:a1女教师数为:a2endl;coutendl;}
7、排序函数friendvioidpaixu(主要运用起泡法排序,以按编号排序为例)forj=0;jaa-1;j++{fori=0;iaa-j-1;i++{ift[i].aget[i+1].age{z1=t[i].num;t[i].num=t[i+1].num;t[i+1].num=z1;z2=t[i].age;t[i].age=t[i+1].age;t[i+1].age=z2;strcpyz3t[i].sex;strcpyt[i].sext[i+1].sex;strcpyt[i+1].sexz3;strcpyz4t[i].xi;strcpyt[i].xit[i+1].xi;strcpyt[i+1].xiz4;strcpyz5t[i].name;strcpyt[i].namet[i+1].name;strcpyt[i+1].namez5;strcpyz6t[i].zhuan;strcpyt[i].zhuant[i+1].zhuan;strcpyt[i+1].zhuanz6;strcpyz7t[i].zhi;strcpyt[i].zhit[i+1].zhi;strcpyt[i+1].zhiz7;}}}
二、main函数中调用的的功能函数主要运用if——else语句实现选择性的调用类中的函数,以及goto语句实现循环以及switch——case语句实现选择性分支//输入功能voidshuru{cout请选择您要输入的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;switchg{case1:{get1;break;}case2:{get2;break;}case3:{get3;break;}case4:{get4;break;}default:cout无此选项endl;}}//查询功能voidchaxun{cout请选择您要查询的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;switchg{case1:{cout请选择查询方法
1、按编号查询;
2、按姓名查询!;intgg;cingg;ifgg==1{chaxun1;}ifgg==2{chaxun11;}break;}case2:{cout请选择查询方法
1、按编号查询;
2、按姓名查询!;intgg;cingg;ifgg==1{chaxun2;}ifgg==2{chaxun22;}break;}case3:{cout请选择查询方法
1、按编号查询;
2、按姓名查询!;intgg;cingg;ifgg==1{chaxun3;}ifgg==2{chaxun33;}break;}case4:{cout请选择查询方法
1、按编号查询;
2、按姓名查询!;intgg;cingg;ifgg==1{chaxun4;}ifgg==2{chaxun44;}break;}default:cout无此选项endl;}}//删除功能voidshanchu{cout请选择您要删除的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;witchg{case1:{cout请选择删除方法
1、按编号删除;
2、按姓名删除!;intgg;cingg;ifgg==1{shanchu1;}ifgg==2{shanchu11;}break;}case2:{cout请选择删除方法
1、按编号删除;
2、按姓名删除!;intgg;cingg;ifgg==1{shanchu2;}ifgg==2{shanchu22;}break;}case3:{cout请选择删除方法
1、按编号删除;
2、按姓名删除!;intgg;cingg;ifgg==1{shanchu3;}ifgg==2{shanchu33;}break;}case4:{cout请选择删除方法
1、按编号删除;
2、按姓名删除!;intgg;cingg;ifgg==1{shanchu4;}ifgg==2{shanchu44;}break;}default:cout无此选项endl;}}//编辑功能voidbianji{cout请选择您要编辑的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;switchg{case1:{bianji1;break;}case2:{bianji2;break;}case3:{bianji3;break;}case4:{bianji4;break;}default:cout无此选项endl;}}//显示功能voidxianshi{cout请选择您要显示的人员类型的代号endlcout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;switchg{case1:{xianshi1;break;}case2:{xianshi2;break;}case3:{xianshi3;break;}case4:{xianshi4;break;}default:cout无此选项endl;}}//排序功能voidpaixu{cout请选择您要排序的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;switchg{case1:{cout请选择排序方法
1、按编号由小到大排序;
2、按年龄由小到大排序!;intgg;cingg;ifgg==1{paixu1;}ifgg==2{paixu11;}break;}case2:{cout请选择排序方法
1、按编号由小到大排序;
2、按年龄由小到大排序!;intgg;cingg;ifgg==1{paixu2;}ifgg==2{paixu22;}break;}case3:{cout请选择排序方法
1、按编号由小到大排序;
2、按年龄由小到大排序!;intgg;cingg;ifgg==1{paixu3;}ifgg==2{paixu33;}break;}case4:{cout请选择排序方法
1、按编号由小到大排序;
2、按年龄由小到大排序!;intgg;cingg;ifgg==1{paixu4;}ifgg==2{paixu44;}break;}default:cout无此选项endl;}}//统计功能voidtongji{cout请选择您要统计的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员
5、四类人员总数endl;intg;cing;switchg{case1:{cout统计结果如下endl;tongji1;break;}case2:{cout统计结果如下endl;tongji2;break;}case3:{cout统计结果如下endl;tongji3;break;}case4:{cout统计结果如下endl;cout统计结果如下endl;tongji4;break;}case5:{cout统计结果如下endl;cout四类人员的总数为a1+a2+b1+b2+c1+c2+d1+d2endl;cout四类人员中男职工总数为:a1+b1+c1+d1endl;cout四类人员中男职工总数为:a2+b2+c2+d2endl;break;}default:cout无此选项endl;}}//退出功能voidtuichu{cout*********************************************************endl;cout**endl;cout*谢谢本次使用,欢迎您下次使用!endl;cout**endl;cout*北华航天工业学院*endl;cout********************************************************endl;coutendl;}
4.3主函数实现在main函数中,首先对登录的界面进行了设定,其次运用switch——else分支语句进行选择性的分支调用各个功能函数以实现各个功能,同时运用了goto语句来实现每一个功能实现后都可以见到界面intmain{cout************************************************************endl;cout**endl;cout*★★★【欢迎使用北华航天工业学院人员信息查询系统】★★★*endl;cout**endl;cout************************************************************endl;y:coutendl;cout该系统的的功能有:endl;coutendl;cout******************************************************endl;cout*
1、信息添加功能
2、信息查询功能*endl;cout**endl;cout*
3、信息显示功能
4、信息编辑功能*endl;cout**endl;cout*
5、信息删除功能
6、信息统计功能*endl;cout**endl;cout*
7、信息排序功能
8、退出*endl;cout******************************************************endl;cout请输入您需要的功能代号:;intm;cinm;ifm==1{y1:shuru;stringf1;cout是否继续此功能,是请按Y,否请按N!;cinf1;iff1==Ngotoy;elsegotoy1;}ifm==2{y2:chaxun;stringf2;cout是否继续此功能,是请按Y,否请按N!;cinf2;iff2==Ngotoy;elsegotoy2;}ifm==3{y3:xianshi;stringf3;cout是否继续此功能,是请按Y,否请按N!;cinf3;iff3==Ngotoy;elsegotoy3;}ifm==4{y4:bianji;cout是否继续此功能,是请按Y,否请按N!;stringf4;cinf4;iff4==Ngotoy;elsegotoy4;}ifm==5{y5:shanchu;stringf5;cout是否继续此功能,是请按Y,否请按N!;cinf5;iff5==Ngotoy;elsegotoy5;}ifm==6{y6:tongji;stringf6;cout是否继续此功能,是请按Y,否请按N!;cinf6;iff6==Ngotoy;elsegotoy6;}ifm==7{y7:paixu;stringf7;cout是否继续此功能,是请按Y,否请按N!;cinf7;iff7==Ngotoy;elsegotoy7;}ifm==8{tuichu;}return0;}第5章系统测试
5.1模块测试
1、系统第一次使用时的界面,主要运用cout输出语句,并对对输出内容进行了排版来实现是登录是美观!图
5.1-
12、这是每一个功能使用完之后,都会自动的跳回这个界面主要在main函数中运用了goto循环语句来实现图
5.1-
23、输入功能的使用界面,在使用的时候选择输入人员的类别,同时输入要输入的人数,当输入重复的编号的时候,提示重复,当输入年龄小于0或性别不规范时,提示错误,重新输入主要运用for循环和goto寻循环实现退出后返回主界面图
5.1-
34、显示功能使用界面,主要运用for循环退出后返回主界面图
5.1-
45、统计功能使用,主要运用for循环和全局变量退出后返回主界面图
5.1-
56、(上面两个图为排序,两种排序方法,主要运用了起泡法排序,退出后返回主界面)图
5.1-6图
5.1-
77、下图是查询功能使用,两种查询方法,运用for循环实现,退出后返回主界面图
5.1-
88、(上面两个图为编辑功能图,编辑后显示信息,编辑实现,退出后返回主界面)图
5.1-9图
5.1-
109、删除功能,删除后又显示信息,发现已删除退出后返回主界面图
5.1-11图
5.1-
1210、退出功能,程序结束图
5.1-
135.2课程设计过程中遇到的问题在本次课设过程中,我遇到的问题以及解决方法如下
1、二进制存储数据的时候无法计算已存对象的个数通过老师的讲解和课下自己看书,以解决上述问题
2、存储字符类型的数据的时候,无法在文件中读出通过老师的讲解和课下与同学的讨论,将字符型数据由string定义改为char定义,解决上述问题
3、在程序编译的时候总是编译不过去,出现系统的错误通过向老师请教,问题出在了自己定义的变量过多,是编译器分配的空间不足,通过老师的讲解,问题已解决总结本次课设共计用时九天,本系统总体上对题目要求的基本功能都已实现,同时拓展了排序,信息等数据要求有效的功能,同时排序,删除,查询三种功能都包含两种方法在可是期间出现的错误,经过老师的细心和耐心的帮助,已经解决,但是同时因为自己的能力有限,不能继续拓展更大的功能排序,退出,添加,显示,编辑这几个功能应该比较完善,特别添加可以对任意的信息添加,同时避免了重复和数据的有效性问题排序,显示两种功能都可以正常的运行,同时输出正确的结果统计同时可以统计所有的人员的信息,但是,一直都是按性别进行统计的,由于时间有限,没有完成按年龄段等统计删除的时候也只是一个个的删除,没有实现多个删除这是遗憾查询也是没有实现多个查询这次课设最大的缺点就是代码过长,同时变量使用过多,造成编译器分配的内存不足,同时使用静态的数组,造成内存空间浪费,应该为动态的数组!致谢课设期间,仅仅凭借自己一个人的力量是不够的,在本次课设过程中,老师给了我很大的帮助,特别是在自己根本不知道哪里存在问题的时候,老师伸出了援助之手,在此我向老师表示深深的感谢!同时,同学的一些提醒,是自己的思路更加的宽广,在此也向同学表示感谢!最后,我再次对老师和同学的帮助表示深深的感谢!参考文献
[1]C++面向对象程序设计,谭浩强编著,清华大学出版社;
[2]C++大学教程(第二版),PaulJamesDeitel著,邱仲藩等译,北京电子工业出版社
[3]C++程序设计(第三版),JackW.Davidson著,刘瑞挺等译,北京电子工业出版社
[4]C程序设计(第三版),谭浩强著,清华大学出版社
[5]C/C++程序设计,Decoder著,北京中国铁道出版社
[6]C++语言命令详解(第二版),BrianOverland著,董梁等译,北京电子工业出版社
[7]C/C++程序设计大全,P.J.Deitel著,薛万鹏等译,北京机械工业出版社
[8]标准C++宝典,AlStevens著,林丽闽等译,北京电子工业出版社
[9]MasteringVisualC++
6.0SybexInc,MichaelJ.Young著
[10]C语言程序设计题解与上机指导(第三版),谭浩强著,清华大学出版社附录程序代码如下所示#includeiostream#includestring#includefstreaminta1a2b1b2c1c2d1d2;usingnamespacestd;classteacher//教师类{private:charxi
[20];charzhuan
[20];charzhi
[20];protected:intnum;charname
[20];charsex
[20];intage;public:teacher{}friendvoidget1;friendvoidchaxun1;friendvoidchaxun11;friendvoidxianshi1;friendvoidshanchu1;friendvoidshanchu11;friendvoidtongji1;friendvoidbianji1;friendvoidpaixu1;friendvoidpaixu11;};voidget1//输入函数{intinkaa;teachert
[100];ifstreaminfiled:\\teacher.datios::in|ios::binary;if!infile{cerropenerror!endl;abort;}infile.seekg0ios::end;aa=infile.tellg/sizeoft
[0];infile.seekg0ios::beg;fori=0;iaa;i++{infile.readchar*t[i]sizeoft[i];}infile.close;cout请输入要输入的教师的人数;cinn;cout教师编号姓名性别年龄系部专业职称endl;fori=aa;in+aa;i++{cout输入第i-aa+1个教师的信息;yy:cint[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhi;fork=1;k=i;k++{ift[i].num==t[i-k].num{cout教师号i-k+1存在,重新添加:;gotoyy;}}ift[i].num==-1break;forintkk=0;;kk++{ift[i].num0||t[i].age=0||strcmpt[i].sexmstrcmpt[i].sexf{cout数据有误,重新输入endl;cout输入第i-aa+1个教师的信息;cint[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhi;}elsebreak;}}cout是否保存?保存请按Y,不保存请按N!;stringcc;cincc;ifcc==Y{ofstreamoutfiled:\\teacher.datios::out|ios::binary;if!outfile{cerropenerror!endl;abort;}fori=0;iaa+n;i++{outfile.writechar*t[i]sizeoft[i];}cout保存成功!endl;outfile.close;}}voidchaxun1//查询函数{intikaaq=2;teachert
[100];ifstreaminfiled:\\teacher.datios::in|ios::binary;if!infile{cerropenerror!endl;abort;}infile.seekg0ios::end;aa=infile.tellg/sizeoft
[0];infile.seekg0ios::beg;fori=0;iaa;i++{infile.readchar*t[i]sizeoft[i];}infile.close;cout请输入要查询的教师的编号;cink;fori=0;iaa;i++{ifk==t[i].num{cout该教师的信息为endl;cout该教师的编号为t[i].numendl;cout该教师的姓名为t[i].nameendl;cout该教师的性别为t[i].sexendl;cout该教师的年龄为t[i].ageendl;cout该教师的系部为t[i].xiendl;cout该教师的专业为t[i].zhuanendl;cout该教师的职称为t[i].zhiendl;q=1;break;}}ifq!=1{cout无此教师编号!endl;}}voidchaxun11{intiaaq=2;chark
[20];teachert
[100];ifstreaminfiled:\\teacher.datios::in|ios::binary;if!infile{cerropenerror!endl;abort;}infile.seekg0ios::end;aa=infile.tellg/sizeoft
[0];infile.seekg0ios::beg;fori=0;iaa;i++{infile.readchar*t[i]sizeoft[i];}infile.close;cout请输入要查询的教师的姓名;cink;fori=0;iaa;i++{ifstrcmpt[i].namek==0{cout该教师的信息为endl;cout该教师的编号为t[i].numendl;cout该教师的姓名为t[i].nameendl;cout该教师的性别为t[i].sexendl;cout该教师的年龄为t[i].ageendl;cout该教师的系部为t[i].xiendl;cout该教师的专业为t[i].zhuanendl;cout该教师的职称为t[i].zhiendl;q=1;}}ifq!=1{cout无此教师姓名!endl;}}voidxianshi1//显示函数{intiaa;teachert
[100];ifstreaminfiled:\\teacher.datios::in|ios::binary;if!infile{cerropenerror!endl;abort;}infile.seekg0ios::end;aa=infile.tellg/sizeoft
[0];infile.seekg0ios::beg;fori=0;iaa;i++{infile.readchar*t[i]sizeoft[i];}infile.close;cout教师所有信息如下endl;cout教师编号姓名性别年龄系部专业职称endl;fori=0;iaa;i++{coutt[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhiendl;}}voidbianji1//编辑函数{intiaaq=2;teachert
[100];ifstreaminfiled:\\teacher.datios::in|ios::binary;if!infile{cerropenerror!endl;abort;}infile.seekg0ios::end;aa=infile.tellg/sizeoft
[0];infile.seekg0ios::beg;fori=0;iaa;i++{infile.readchar*t[i]sizeoft[i];}infile.close;cout请输入您要编辑的教师的编号endl;intkjww;cink;fori=0;iaa;i++{ifk==t[i].num{cout原来教师的信息为endl;cout教师编号姓名性别年龄系部专业职称endl;coutt[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhiendl;cout请输入您要修改的信息endl;q=1;yy:cint[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhi;ww=t[i].num;forj=0;ji;j++{ifww==t[j].num{cout编号重复,请重新输入!endl;gotoyy;}elsebreak;}forj=i+1;jaa;j++{ifww==t[j].num{cout编号重复,请重新输入!endl;gotoyy;}elsebreak;}}}ifq==1{cout是否保存?保存请按Y,不保存请按N!;stringcc;cincc;ifcc==Y{ofstreamoutfiled:\\teacher.datios::out|ios::binary;if!outfile{cerropenerror!endl;abort;}fori=0;iaa;i++{outfile.writechar*t[i]sizeoft[i];}cout保存成功!endl;outfile.close;}}ifq!=1{cout无此人!endl;}}voidshanchu1//删除函数{intinaaaaaq=2;teachert
[100];ifstreaminfiled:\\teacher.datios::in|ios::binary;if!infile{cerropenerror!endl;abort;}infile.seekg0ios::end;aa=infile.tellg/sizeoft
[0];infile.seekg0ios::beg;fori=0;iaa;i++{infile.readchar*t[i]sizeoft[i];}infile.close;cout请输入要删除的教师的编号;cinn;fori=0;iaa;i++{ifn==t[i].num{cout原信息为endl;cout教师编号t[i].num姓名t[i].name性别t[i].sex年龄t[i].age系部t[i].xi专业t[i].zhuan职称t[i].zhiendl;aaa=i-1;q=1;break;}}ifq!=1{cout无此人!endl;}ifq==1{cout是否删除,是请按Y不删除请按N;stringk;cink;ifk==Y{fori=aaa;iaa-1;i++{t[i].num=t[i+1].num;strcpyt[i].namet[i+1].name;strcpyt[i].sext[i+1].sex;t[i].age=t[i+1].age;strcpyt[i].xit[i+1].xi;strcpyt[i].zhuant[i+1].zhuan;strcpyt[i].zhit[i+1].zhi;}}ofstreamoutfiled:\\teacher.datios::out|ios::binary;if!outfile{cerropenerror!endl;abort;}fori=0;iaa-1;i++{outfile.writechar*t[i]sizeoft[i];}outfile.close;}cout删除成功!;}voidshanchu11{intiaaaaaq=2;charn
[20];teachert
[100];ifstreaminfiled:\\teacher.datios::in|ios::binary;if!infile{cerropenerror!endl;abort;}infile.seekg0ios::end;aa=infile.tellg/sizeoft
[0];infile.seekg0ios::beg;fori=0;iaa;i++{infile.readchar*t[i]sizeoft[i];}infile.close;cout请输入要删除的教师的姓名;cinn;fori=0;iaa;i++{ifstrcmpt[i].namen==0{cout原信息为endl;cout教师编号t[i].num姓名t[i].name性别t[i].sex年龄t[i].age系部t[i].xi专业t[i].zhuan职称t[i].zhiendl;aaa=i-1;q=1;break;}}ifq!=1{cout无此人!endl;}ifq==1{cout是否删除,是请按Y不删除请按N;stringk;cink;ifk==Y{fori=aaa;iaa-1;i++{t[i].num=t[i+1].num;strcpyt[i].namet[i+1].name;strcpyt[i].sext[i+1].sex;t[i].age=t[i+1].age;strcpyt[i].xit[i+1].xi;strcpyt[i].zhuant[i+1].zhuan;strcpyt[i].zhit[i+1].zhi;}}ofstreamoutfiled:\\teacher.datios::out|ios::binary;if!outfile{cerropenerror!endl;abort;}fori=0;iaa-1;i++{outfile.writechar*t[i]sizeoft[i];}outfile.close;}cout删除成功!;}voidpaixu1//排序函数{intiaa;teachert
[100];ifstreaminfiled:\\teacher.datios::in|ios::binary;if!infile{cerropenerror!endl;abort;}infile.seekg0ios::end;aa=infile.tellg/sizeoft
[0];infile.seekg0ios::beg;fori=0;iaa;i++{infile.readchar*t[i]sizeoft[i];}infile.close;intjz1z2;charz3
[20]z4
[20]z5
[20]z6
[20]z7
[20];forj=0;jaa-1;j++{fori=0;iaa-j-1;i++{ift[i].numt[i+1].num{z1=t[i].num;t[i].num=t[i+1].num;t[i+1].num=z1;z2=t[i].age;t[i].age=t[i+1].age;t[i+1].age=z2;strcpyz3t[i].sex;strcpyt[i].sext[i+1].sex;strcpyt[i+1].sexz3;strcpyz4t[i].xi;strcpyt[i].xit[i+1].xi;strcpyt[i+1].xiz4;strcpyz5t[i].name;strcpyt[i].namet[i+1].name;strcpyt[i+1].namez5;strcpyz6t[i].zhuan;strcpyt[i].zhuant[i+1].zhuan;strcpyt[i+1].zhuanz6;strcpyz7t[i].zhi;strcpyt[i].zhit[i+1].zhi;strcpyt[i+1].zhiz7;}}}cout排序后的信息为endl;cout教师编号姓名性别年龄系部专业职称endl;fori=0;iaa;i++{coutt[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhiendl;}}voidpaixu11{intiaa;teachert
[100];ifstreaminfiled:\\teacher.datios::in|ios::binary;if!infile{cerropenerror!endl;abort;}infile.seekg0ios::end;aa=infile.tellg/sizeoft
[0];infile.seekg0ios::beg;fori=0;iaa;i++{infile.readchar*t[i]sizeoft[i];}infile.close;intjz1z2;charz3
[20]z4
[20]z5
[20]z6
[20]z7
[20];forj=0;jaa-1;j++{fori=0;iaa-j-1;i++{ift[i].aget[i+1].age{z1=t[i].num;t[i].num=t[i+1].num;t[i+1].num=z1;z2=t[i].age;t[i].age=t[i+1].age;t[i+1].age=z2;strcpyz3t[i].sex;strcpyt[i].sext[i+1].sex;strcpyt[i+1].sexz3;strcpyz4t[i].xi;strcpyt[i].xit[i+1].xi;strcpyt[i+1].xiz4;strcpyz5t[i].name;strcpyt[i].namet[i+1].name;strcpyt[i+1].namez5;strcpyz6t[i].zhuan;strcpyt[i].zhuant[i+1].zhuan;strcpyt[i+1].zhuanz6;strcpyz7t[i].zhi;strcpyt[i].zhit[i+1].zhi;strcpyt[i+1].zhiz7;}}}cout排序后的信息为endl;cout教师编号姓名性别年龄系部专业职称endl;fori=0;iaa;i++{coutt[i].numt[i].namet[i].sext[i].aget[i].xit[i].zhuant[i].zhiendl;}}voidtongji1//统计函数{intiaa;teachert
[100];ifstreaminfiled:\\teacher.datios::in|ios::binary;if!infile{cerropenerror!endl;abort;}infile.seekg0ios::end;aa=infile.tellg/sizeoft
[0];infile.seekg0ios::beg;fori=0;iaa;i++{infile.readchar*t[i]sizeoft[i];}infile.close;fori=0;iaa;i++{ifstrcmpt[i].sexm==0a1++;elsea2++;}cout男女教师总数为a1+a2endl;cout男教师数为:a1女教师数为:a2endl;coutendl;}voidshuru//输入功能{cout请选择您要输入的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;switchg{case1:{get1;break;}case2:{get2;break;}case3:{get3;break;}case4:{get4;break;}default:cout无此选项endl;}}voidchaxun//查询功能{cout请选择您要查询的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;switchg{case1:{cout请选择查询方法
1、按编号查询;
2、按姓名查询!;intgg;cingg;ifgg==1{chaxun1;}ifgg==2{chaxun11;}break;}case2:{cout请选择查询方法
1、按编号查询;
2、按姓名查询!;intgg;cingg;ifgg==1{chaxun2;}ifgg==2{chaxun22;}break;}case3:{cout请选择查询方法
1、按编号查询;
2、按姓名查询!;intgg;cingg;ifgg==1{chaxun3;}ifgg==2{chaxun33;}break;}case4:{cout请选择查询方法
1、按编号查询;
2、按姓名查询!;intgg;cingg;ifgg==1{chaxun4;}ifgg==2{chaxun44;}break;}default:cout无此选项endl;}}voidshanchu//删除功能{cout请选择您要删除的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;switchg{case1:{cout请选择删除方法
1、按编号删除;
2、按姓名删除!;intgg;cingg;ifgg==1{shanchu1;}ifgg==2{shanchu11;}break;}case2:{cout请选择删除方法
1、按编号删除;
2、按姓名删除!;intgg;cingg;ifgg==1{shanchu2;}ifgg==2{shanchu22;}break;}case3:{cout请选择删除方法
1、按编号删除;
2、按姓名删除!;intgg;cingg;ifgg==1{shanchu3;}ifgg==2{shanchu33;}break;}case4:{cout请选择删除方法
1、按编号删除;
2、按姓名删除!;intgg;cingg;ifgg==1{shanchu4;}ifgg==2{shanchu44;}break;}default:cout无此选项endl;}}voidbianji//编辑功能{cout请选择您要编辑的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;switchg{case1:{bianji1;break;}case2:{bianji2;break;}case3:{bianji3;break;}case4:{bianji4;break;}default:cout无此选项endl;}}voidxianshi//显示功能{cout请选择您要显示的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;switchg{case1:{xianshi1;break;}case2:{xianshi2;break;}case3:{xianshi3;break;}case4:{xianshi4;break;}default:cout无此选项endl;}}voidpaixu//排序功能{cout请选择您要排序的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员endl;intg;cing;switchg{case1:{cout请选择排序方法
1、按编号由小到大排序;
2、按年龄由小到大排序!;intgg;cingg;ifgg==1{paixu1;}ifgg==2{paixu11;}break;}case2:{cout请选择排序方法
1、按编号由小到大排序;
2、按年龄由小到大排序!;intgg;cingg;ifgg==1{paixu2;}ifgg==2{paixu22;}break;}case3:{cout请选择排序方法
1、按编号由小到大排序;
2、按年龄由小到大排序!;intgg;cingg;ifgg==1{paixu3;}ifgg==2{paixu33;}break;}case4:{cout请选择排序方法
1、按编号由小到大排序;
2、按年龄由小到大排序!;intgg;cingg;ifgg==1{paixu4;}ifgg==2{paixu44;}break;}default:cout无此选项endl;}}voidtongji//统计功能{cout请选择您要统计的人员类型的代号endl;cout
1、教师
2、实验员
3、行政人员
4、教师兼行政人员
5、四类人员总数endl;intg;cing;switchg{case1:{cout统计结果如下endl;tongji1;break;}case2:{cout统计结果如下endl;tongji2;break;}case3:{cout统计结果如下endl;tongji3;break;}case4:{cout统计结果如下endl;cout统计结果如下endl;tongji4;break;}case5:{cout统计结果如下endl;cout四类人员的总数为a1+a2+b1+b2+c1+c2+d1+d2endl;cout四类人员中男职工总数为:a1+b1+c1+d1endl;cout四类人员中男职工总数为:a2+b2+c2+d2endl;break;}default:cout无此选项endl;}}voidtuichu//退出功能{cout********************************************************************endl;coutendl;cout谢谢本次使用,欢迎您下次使用!endl;coutendl;cout北华航天工业学院endl;cout********************************************************************endl;coutendl;}intmain{cout************************************************************endl;cout**endl;cout*★★★【欢迎使用北华航天工业学院人员信息查询系统】★★★*endl;cout**endl;cout************************************************************endl;y:coutendl;cout该系统的的功能有:endl;coutendl;cout******************************************************endl;cout*
1、信息添加功能
2、信息查询功能*endl;cout**endl;cout*
3、信息显示功能
4、信息编辑功能*endl;cout**endl;cout*
5、信息删除功能
6、信息统计功能*endl;cout**endl;cout*
7、信息排序功能
8、退出*endl;cout******************************************************endl;cout请输入您需要的功能代号:;intm;cinm;ifm==1{y1:shuru;stringf1;cout是否继续此功能,是请按Y,否请按N!;cinf1;iff1==Ngotoy;elsegotoy1;}ifm==2{y2:chaxun;stringf2;cout是否继续此功能,是请按Y,否请按N!;cinf2;iff2==Ngotoy;elsegotoy2;}ifm==3{y3:xianshi;stringf3;cout是否继续此功能,是请按Y,否请按N!;cinf3;iff3==Ngotoy;elsegotoy3;}ifm==4{y4:bianji;cout是否继续此功能,是请按Y,否请按N!;stringf4;cinf4;iff4==Ngotoy;elsegotoy4;}ifm==5{y5:shanchu;stringf5;cout是否继续此功能,是请按Y,否请按N!;cinf5;iff5==Ngotoy;elsegotoy5;}ifm==6{y6:tongji;stringf6;cout是否继续此功能,是请按Y,否请按N!;cinf6;iff6==Ngotoy;elsegotoy6;}ifm==7{y7:paixu;stringf7;cout是否继续此功能,是请按Y,否请按N!;cinf7;iff7==Ngotoy;elsegotoy7;}ifm==8{tuichu;}else{cout无此功能,重新选择功能代号!endl;gotoy;}return0;}指导教师评语及设计成绩评语课程设计成绩指导教师日期年月日退出系统继续使用按N后按Y继续使用使用,继续按Y,退出按N根据序号选择功能添加,查询,编辑,显示,排序,删除,统计,退出共八类功能函数main函数中的功能函数教师兼行政人员类的成员函数行政人员类的成员函数实验员类的成员函数教师类的成员函数main函数使用界面教师兼行政人员类行政人员类实验员类教师类1。