C++大学人员信息管理系统报告.docx
- 文档编号:8112046
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:60
- 大小:98.98KB
C++大学人员信息管理系统报告.docx
《C++大学人员信息管理系统报告.docx》由会员分享,可在线阅读,更多相关《C++大学人员信息管理系统报告.docx(60页珍藏版)》请在冰豆网上搜索。
C++大学人员信息管理系统报告
北华航天工业学院
《基于C++的面向对象程序设计实例》
课程设计报告
报告题目:
高校人员信息管理系统
作者所在系部:
计算机科学与工程系
作者所在专业:
计算机科学与技术专业
作者所在班级:
作者姓名:
指导教师姓名:
完成时间:
北华航天工业学院教务处制
摘要
当今教育事业备受关注,如何高效方便的对高校人员进行管理是一个问题。
本文利用C++面向对象的程序设计实现了这一功能。
本系统主要有七个功能模块:
新增、更改、删除、查找、显示、全删、统计,实现了对领导、教师、学生信息的管理。
本程序已经过全面的系统测试,能够很好的运行,达到预期的效果。
关键词:
信息管理系统设计面向对象
第一章绪论
1.1课程设计的目的
课程设计是课程教学必不可缺的一个重要环节,可加深学生对该课程所学内容的进一步的了解与巩固,是将计算机课程与实际问题相连接的关键步骤。
此次程序设计综合运用所学知识解决实际问题,将课堂的书本知识有效的在程序中体现出来,让学生更理解了C++功能之强大,进一步让学生对面向对象的方法以及C++的编程思想有了较好了解和认识。
1.2课程设计的背景和意义
1.2.1课程设计的背景
本次课程设计,主要研究类的继承、抽象类、多态、虚基类以及对文件进行各项操作(如添加、修改、删除、查询、显示等)。
通过这次课程设计掌握面向对象的程序设计思路,着重掌握在C++中对文件进行查找、删除、修改等操作。
1.理论研究基础
(1)C++面向对象程序设计中类与对象的使用
(2)类的封装性和继承性。
(3)C++I/O流库的处理,二进制文件的创建与保存。
2.技术层面的支持
(1)定义基类与派生类,将数据成员与成员函数封装在类中。
(2)定义指向对象的指针,设计删除、查询、更改的算法。
(3)C++异常处理的功能与输入输出流。
1.2.2课程设计的意义
(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。
帮助了同学系统的掌握C++课程的主要内容。
(2)通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。
课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立思考的条件。
(3)通过编写一个较长的程序,实现了对人员信息的管理,激发了学生学习编程的兴趣。
1.3课程设计环境
在MicrosoftVisualC++6.0开发平台上编写程序源代码,修改,增加功能,通过编译、连接,直到完全无误,最终执行程序,反复输入新的数据进行验证并进一步完善。
第二章需求分析
2.1问题描述
某高校,主要人员有:
领导、教师和学生,共有的信息包括:
编号、姓名、性别、年龄。
其中领导还应包含的信息有:
任职部门(学院、各系部)、职称;教师还应包含的信息有:
职称、任职时间、专业;学生还应包含的信息有:
所在班级、所在宿舍等。
2.2功能要求
对各类人员信息完成的基本功能有:
1)添加功能:
程序能够添加相应的记录;
2)查询功能:
能根据编号和姓名进行查询,并显示相应的记录信息;
3)编辑功能:
根据查询结果对相应的记录进行修改;
4)统计功能:
能根据多种参数进行人员的统计;
5)删除功能:
根据查找结果,完成具体记录的删除;
6)保存功能:
将对高校人员信息进行的添加、删除、修改结果保存到文本文件中。
2.3问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
2)分析系统中的各个实体及它们之间的关系;
3)根据问题描述,设计系统的类层次;
4)完成类层次中各个类的描述;
5)完成类中各个成员函数的定义;
6)完成系统的应用模块;
7)功能调试;
8)完成系统总结报告。
第三章系统设计
3.1数据设计
3.1.1类设计
人员有共同的信息编号number、姓名neme、性别sex、年龄age,所以设计一个基类people,在此基础上派生出leader类(添加数据成员任职部门bumen,职称zhicheng),teacher类(添加数据成员职称zhicheng,任职时间time,专业project),student类(添加数据成员班级banji,宿舍sushe)。
基类people中包含设置成员值的set函数,添加成员的add函数。
在派生类leader,teacher,student中对set和add进行重新定义。
为了对信息进行添加、删除、查找等功能,定义leaderbase,teacher,student类,分别定义对象数组,定义指向对象的指针,以leaderbase类为例,inttop;人数leaderread[Maxr];领导类数组;leaderbase()将领导信息从leader.txt读取到read[]中,voiddelnu(intu)编号删除,voiddelname(char*na)姓名删除,voidclear()删除所有,voiddisp()领导信息显示,voiddata()领导维护,~leaderbase()将read[]中的信息读入到leader.txt中。
3.1.2类之间的关系
由people类派生出leader,teacher,student类,leaderbase类调用leader类,teacherbase类调用了teacher类,studentbase类调用了student类.。
派生类对基类的成员进行继承。
继承是面向对象程序设计中软件重用的关键技术。
继承机制使用已经定义的类作为基础建立新的类定义,新的类是原有类的数据、操作和新类所添加的数据、操作的组合。
新的类把原有类作为基类引用,而不需要修改原有类的定义。
3.1.3函数设计
leaderbase()将领导信息从leader.txt读取到read[]中,voiddelnu(intn)编号删除,voiddelname(char*na)姓名删除,voidclear()删除所有,voiddisp()领导信息显示,voiddata()领导数据维护,实现领导信息的添加、删除、查询、显示、统计、更改功能。
~leaderbase()将read[]中的信息读如到leader.txt中。
当删除和查找时调用两个函数leader*query(intn),leader*query1(char*na),看删除或查找的领导是否存在,若存在,返回指向leader类的指针,若不存在,返回空指针。
3.2结构设计
3.2.1系统流程图
3.2.2界面设计
登入高校管理系统界面如图3-2所示
图3-2界面菜单设计
程序开始运行,通过主函数进入系统主界面(如上图所示),操作员可键入数字信息选择系统的各个功能或退出系统。
每种功能的界面都有相应的提示(以输入领导为例):
在添加信息功能中系统提示“请输入领导的性别为男或女,如果输入错误,会输出“输入性别错误,请重新输入”在新增时系统会同时计算输入男女领导的人数;在更改中系统提供了按姓名或编号修改,在修改前系统会输出该领导的全部信息,修改时系统会输出是否更改;删除中系统提供了按编号或姓名删除,删除前系统会再次提醒使用者是否确定删除;在查找中亦提供了按编号或姓名查找;在输入完毕后按0返回主菜单。
,以便操作员更方便地使用该系统
注:
各子菜单项均有重新显示,并顺利返回到主菜单。
如果要保存信息的数据,必须退出到主菜单,系统会自动保存;
System(“cls”)清除以前的内容,界面重新显示。
System(“color23”)设置当前的窗口和输出字体的颜色
第四章系统实现
4.1类实现
classpeople//人员基类
{
protected:
intnumber;//编号
charname[20];//姓名
charsex[4];//性别
intage;//年龄
public:
voidshow()
{
cout<<"编号"< cout< } voidset() { cout<<"请输入编号: "< cin>>number; cout<<"请输入姓名: "< cin>>name; cout<<"请输入性别: "< cin>>sex; cout<<"请输入年龄: "< cin>>age; } char*getname(){returnname;}//获取名字 intgetno(){returnnumber;}//获取编号 intgetage(){returnage;}//获取年龄 char*getsex(){returnsex;}//获取性别 voidren(intn){cout< voidadd(intn,char*na,intag,char*se) { number=n; age=ag; strcpy(name,na); strcpy(sex,se); } }; classleader: publicpeople//领导类 { private: charbumen[20]; charzhicheng[20]; public: voidset1() { set(); cout<<"请输入任职部门: "< cin>>bumen; cout<<"请输入职称: "< cin>>zhicheng; } voidsetbu(charbu[]) { strcpy(bumen,bu); } voidsetzhi(charzhi[]) { strcpy(zhicheng,zhi); } voidshow1() { show(); cout<<"部门"< cout< } voidadd1(intn,char*na,intag,char*se,char*bu,char*zhi) { add(n,na,ag,se); strcpy(bumen,bu); strcpy(zhicheng,zhi); } char*getbu(){returnbumen;}//获取部门 char*getzhi(){returnzhicheng;}//获取职称 }; 类似的,在people类的基础上派生出student类,teacher类。 4.2函数实现 voidleaderbase: : data()//定义领导维护 { intchoice=1; intb=1;//标记变量 charx; intnan=0;//男领导 intnv=0;//女领导 charname[20];//姓名 intnumber;//编号 intage;//年龄 charzhi[20];///职称 charsex[4];//性别 charbu[20];//系部 leader*r; while(choice! =0) { cout<<"领导维护1: 新增2: 更改3: 删除4: 查找5: 显示6: 全删7: 统计0: 退出=>"; cin>>choice; switch(choice) { case1: //新增 system("color17");//颜色 system("cls");//清屏 cout<<"输入领导编号: "; cin>>number; cout<<"输入领导姓名: "; cin>>name; cout<<"输入领导年龄: "; cin>>age; cout<<"输入领导性别(maleorf): ";cin>>sex; if(strcmp("male",sex)! =0&&strcmp("f",sex)! =0) { while(b) { cout<<"输入性别有误,请重新输入: "< cin>>sex; if(strcmp("male",sex)==0||strcmp("f",sex)==0) b=0; } } if(strcmp("male",sex)==0) {nan++;}//统计男女领导的人数 else {nv++;} cout<<"输入领导所在系部: "; cin>>bu; cout<<"输入领导的职称: "; cin>>zhi; add(number,name,age,sex,bu,zhi); break; case2: //根据查询结果更改 system("colorf4");//颜色 system("cls"); cout<<"按编号更改1"< cout<<"按姓名更改2"< cout<<"返回0"< cin>>b; while(b) { switch(b) { case1: cout<<"输入领导编号: "; cin>>number; r=query(number); if(r==NULL) {cout<<"该领导不存在"< r->show1(); cout<<"是否确认更改任职部门? (Y/N)"< cin>>x; if(x=='Y'||x=='y') { cout<<"输入新的任职部门: "< cin>>bu; r->setbu(bu); add(number,name,age,sex,bu,zhi); } cout<<"是否确认更改职称? (Y/N)"< cin>>x; if(x=='Y'||x=='y') { cout<<"请输入新的职称"< cin>>zhi; r->setzhi(zhi); add(number,name,age,sex,bu,zhi); } r->show1();break; case2: cout<<"输入领导姓名: ";cin>>name; r=query1(name); if(r==NULL) {cout<<"该领导不存在"< r->show1(); cout<<"是否确认更改任职部门? (Y/N)"< if(x=='Y'||x=='y') {cout<<"输入新的任职部门: "< cin>>bu;r->setbu(bu); add(number,name,age,sex,bu,zhi); } cout<<"是否确认更改职称? (Y/N)"< if(x=='Y'||x=='y') {cout<<"请输入新的职称"< cin>>zhi;r->setzhi(zhi); add(number,name,age,sex,bu,zhi); } r->show1();break; case3: break; } break; } break; case3: //删除 system("colorf1");//颜色同样是调用doc system("cls"); cout<<"按编号删除1"< cout<<"按姓名删除2"< cout<<"返回0"< cin>>b; while(b! =0) { switch(b) { case1: cout<<"输入领导编号: "; cin>>number; r=query(number); if(r==NULL) {cout<<"该领导不存在"< delnu(number);b=0;break; case2: cout<<"输入领导姓名: "< cin>>name; r=query1(name); if(r==NULL) {cout<<"该领导不存在"< delname(name);b=0;break; case3: break; } break; } break; case4: //查找 system("color07");//颜色 system("cls"); cout<<"按编号查找1"< cout<<"按姓名查找2"< cout<<"返回0"< cin>>b; while(b! =0) { switch(b) { case1: cout<<"输入领导编号: ";cin>>number; r=query(number); if(r==NULL) {cout<<"该领导不存在"< r->show1();break; case2: cout<<"输入领导姓名: ";cin>>name; r=query1(name); if(r==NULL) {cout<<"该领导不存在"< r->show1();break; case3: break; } break; } break; case5: //显示信息 system("colorfa");//颜色 system("cls"); disp();break; case6: system("colorfd");//颜色 system("cls");clear();break; case7: system("color48");//颜色 system("cls"); cout<<"统计男领导人数1"< cout<<"统计女领导人数2"< cout<<"返回0"< cin>>b; while(b! =0) { switch(b) { case1: cout<<"该高校男领导人数"< r->ren(nan); b=0;break; case2: cout<<"该高校女领导人数"< r->ren(nv); b=0;break; case3: break; } } break; } } } 类似的,定义teacherbase类与studentbase类的数据维护data函数,实现对人员信息的新增、更改、删除、查找、显示、全删、统计功能。 4.3主函数实现 intmain() {A: intchoice=1; leaderbasel; teacherbaset; studentbases; while(choice! =0) {cout<<"********************************************************************************"< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cin>>choice; switch(choice) {case1: while (1) {cout< case2: while (1) {cout< case3: while (1) {cout< break;} } return0; } 第五章系统测试 5.1模块测试 以管理领导信息为例进行说明。 (1)选择对领导信息进行添加,见图5—1 图5—1 (2)添加界面如图5—2 图5—2 (3)可以按编号和姓名进行更改,见图5—3 图5—3 (4)按编号更改如图5—4 图5—4 (5)按姓名删除如图5—5 图5—5 (6)可以按姓名、编号进行查找,如图5—6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 大学 人员 信息管理 系统 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)