C++高校人员信息管理系统.docx
- 文档编号:26914319
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:33
- 大小:30.87KB
C++高校人员信息管理系统.docx
《C++高校人员信息管理系统.docx》由会员分享,可在线阅读,更多相关《C++高校人员信息管理系统.docx(33页珍藏版)》请在冰豆网上搜索。
C++高校人员信息管理系统
《基于C++的面向对象程序设计实例》
课程设计报告
课程名称C++面向对象程序设计
课题名称高校人员信息管理系统
专业计算机科学与技术
班级1220541
学号
姓名苗鹏程
指导教师侯欢欢
(一)、课程设计题目:
高校人员信息管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
(三)、设计方法和基本原理:
1.功能要求
添加功能
程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。
查询功能
可根据编号、姓名等信息对已添加的记录进行查询。
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
显示功能
可显示当前系统中所有记录。
修改功能
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
删除功能
对已添加的人员记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!
”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。
统计功能
能根据多种参数进行人员的统计。
例如:
统计四类人员数量以及总数,统计男、女员工的数量,统计某年龄段人员的数量等。
保存功能
将当前系统中各类人员记录存入文件中。
读取功能
将保存在文件中的人员信息读入到当前系统中,以供用户使用。
在完成以上基本功能的基础上,可自行进行扩展或完善。
2.问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系包括属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告以及系统使用说明书
摘要2
第一章绪论2
1.1课程设计的目的4
1.2课程设计的背景和意义4
1.2.1课程设计的背景4
1.2.2课程设计的意义4
1.3课程设计环境5
第二章需求分析6
2.1问题描述6
2.2功能要求6
2.3问题的解决方案6
第三章系统设计8
3.1数据设计8
3.1.1类设计8
3.1.2类之间的关系10
3.1.3函数设计10
3.2结构设计10
3.2.1系统流程图10
3.2.2界面设计11
第四章系统实现13
4.1类实现13
4.2函数实现13
4.3主函数实现21
第五章系统测试23
5.1模块测试23
5.2课程设计过程中遇到的问题28
结论29
致谢30
参考书目31
1.第一章绪论
1.1课程设计的目的
《C++面向对象程序设计》是计算机专业的基础课程,本课程按照软件程序设计所需能力进行教学设计,提出以项目模块方式带动相关知识点、实践项目和理论并行的思路,将案例贯穿于课程始终,对原有的教学体系、教学内容进行重新编排,按照从易到难的原则,将其巧妙地融入到项目开发过程中,降低学习难度,提高学生学习的信心,有效培养学生的应用能力和学习能力。
1.2课程设计的背景和意义
随着社会的发展,各种公司规模逐渐变大,需要对公司的员工信息进行统一有效的管理,方便的对人员的信息进行增添、查阅、修改、删除、保存,这就必须有一个实用的管理系统。
1.2.1课程设计的背景
1.理论研究基础
掌握C++基本知识,具体包括:
掌握面向对象基本知识和基本概念,掌握静态成员的定义与作用,掌握友元的定义,掌握运算符重载方法,继承与派生,虚函数的定义和使用,输入、输出流操作,文件的创建、打开、读写、关闭等。
2.技术层面的支持
(1)定义基类与派生类,将数据成员与成员函数封装在类中。
(2)设计增添、显示、查询、修改、删除、保存等函数。
1.2.2课程设计的意义
(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。
帮助了同学系统的掌握C++课程的主要内容。
(2)通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。
课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立
思考的条件。
(3)通过编写一个较长的程序,实现了对人员信息的管理,激发了学生学习编程的兴趣。
1.3课程设计环境
MicrosoftVisualC++6.0
2.第二章需求分析
2.1问题描述
某高校有四类人员:
教师、实验员、行政人员、教师兼行政人员;共有的信息包括:
编号、姓名、性别、年龄等。
其中,教师还包含的信息有:
所在系部、专业、职称;实验员还包含的信息有:
所在实验室、职务;行政人员还包含的信息有:
政治面貌、职称等。
2.2功能要求
1)添加功能
程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求人员的编号要唯一,如果添加了重复编号的记录时,则提示用户数据添加重复并取消添加。
2)查询功能
可根据编号、姓名等信息对已添加的记录进行查询。
如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
3)显示功能
可显示当前系统中所有记录。
4)修改功能
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
5)删除功能
对已添加的人员记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!
”并返回操作;否则输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。
6)统计功能
能根据多种参数进行人员的统计。
例如:
统计四类人员数量以及总数,统计男、女员工的数量,统计某年龄段人员的数量等。
7)保存功能
将当前系统中各类人员记录存入文件中。
8)读取功能
将保存在文件中的人员信息读入到当前系统中,以供用户使用。
在完成以上基本功能的基础上,可自行进行扩展或完善。
2.3问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
2)分析系统中的各个实体以及它们之间的关系;
3)根据问题描述,设计系统的类层次;
4)完成类层次中各个类的描述;
5)完成类中各个成员函数的定义;
6)完成系统的应用模块;
7)功能调试;
8)完成系统总结报告。
3.第三章系统设计
3.1数据设计
3.1.1类设计
1.人员的管理需包含人员的基本信息,所以定义一个人员类如表3-1所示:
表3-1员工类
类名
人员类
数据成员
protected:
num(编号)charname[20](姓名)
charsex[10](性别)age(年龄)
成员函数
public:
Input():
输入函数
Output():
输出函数
GetNum():
获取编号
GetName():
获取姓名
2.根据高校人员的工作性质的不同,将所有员工分为教师、实验员、行政人员,教师兼行政人员
表3-2教师类
类名
教师类(公有继承员工类)
数据成员
protected:
chardepart[20](部门);
charspec[20](专业);
chartitle[20](职称);
成员函数
public:
voidInput_1():
输入函数
voidOutput_1():
输出函数
charGetDepart():
获取部门
charGetSpec():
获取专业
charGetTitle():
获取职称
friendTea_Manage:
友元教师管理类
表3-3实验员类
类名
实验员类(公有继承员工类)
数据成员
protected:
chartextroom[20](所在实验室)
charpost[20](职务)
成员函数
public:
voidInput_3():
输入函数
voidOutput_3():
输出函数
charGetTextroom():
获取实验室
charGetPost():
获取职务
friendExp_Manage:
友元实验人员管理类
表3-4行政人员类
类名
行政人员类(公有继承员工类)
数据成员
public:
charpolitics[20]:
(政治面貌)
chartitle[20]:
(职称)
成员函数
public:
voidInput_2():
输入函数
voidOutput_2():
输出函数
charGetPolitics():
获取政治面貌
charGetTitle():
获取职称
friendSta_Manage:
友元行政人员管理类
表3-5教师兼行政人员类
类名
教师兼行政人员类(公有继承员工类)
数据成员
成员函数
Public:
voidInput_4():
输入函数
voidOutput_4():
输出函数
friendTea_Sta_Manage:
友元教师行政人员管理类
4、为了控制以上的类,分别建立了4个管理类,以经理的管理了为例:
表3-6教师管理类
类名
教师管理类
数据成员
TeacherTea[20](创建教师的空间);
top(统计人员数和进行操作时的指针);
3.1.2类之间的关系
员工类派生出教师类、实验员类、行政人员类,教师类和行政人员类派生出教师兼行政人员类。
3.1.3函数设计
根据要求,为了功能的实现,通过top实现功能。
分别以8个功能函数进行对数据的操作(下面以经理类为例)
voidAdd();(信息的添加)
voidSearch();(信息的查找)
voidEdit();(信息的编辑)
voidTotal();(信息的统计)
voidDelete();(信息的删除)
voidShow();(信息的显示)
voidSave();(信息的存储)
voidRead();(信息的读取)
3.2结构设计
3.2.1系统流程图
3.2.2界面设计
1.主菜单界面,如图3—3所示
图3—3主菜单
2.教师菜单界面,如图3-4
图3—4教师管理界面
3.教师查询界面,如图3-5所示:
图3—5教师查询界面
4.教师删除界面,如图3-6所示:
图3—6教师删除界面
4.第四章系统实现
4.1类实现
classPerson//人员类
classTeacher:
virtualpublicPerson//教师类
classGovernment:
virtualpublicPerson//行政人员类
classExperimenter:
publicPerson//实验员类
classTea_Gover:
publicTeacher,publicGovernment:
//教师兼行政人员类
classTea_manage//教师管理类
classGov_manage//行政人员管理类
classExp_manage//实验员管理类
classTea_GoverManage//教师兼行政人员管理类
4.2函数实现
voidPerson:
:
Input()//员工信息输入
{
cout<<"请输入编号:
"<
cout<<"请输入名字:
"<
cout<<"请输入性别:
"<
cout<<"请输入年龄:
"<
}
voidTeacher:
:
Input_1()//教师信息输入
{
Input();
cout<<"请输入所在系别:
"<
cout<<"请输入专业名称:
"<
cout<<"请输入职称:
"<
}
voidPerson:
:
Output()//员工信息输出
{
cout<<"编号:
"< cout<<"姓名: "< cout<<"性别: "< cout<<"年龄: "< } voidTeacher: : Output_1()//教师信息输出 { Output(); cout<<"所在系别: "< cout<<"所在专业: "< cout<<"职称: "< } intPerson: : GetNum()//返回编号 { returnnum; } charPerson: : GetName()//返回姓名 { returnname[20]; } charPerson: : GetSex()//返回性别 { returnsex[10]; } intPerson: : GetAge()//返回年龄 { returnage; } charTeacher: : GetDepart()//返回所在部门 { returndepart[20]; } charTeacher: : GetSpec()//返回专业 { returnspec[20]; } charTeacher: : GetTitle()//返回职称 { returntitle[20]; } voidTea_Manage: : Add()//教师信息的添加 { Teachert; cout<<"请输入新增人员的信息: "< t.Input_1();inti; for(i=0;i { if(t.GetNum()==Tea[i].GetNum()) { cout<<"编号已存在,请重新输入: "< break; } } if(i==top) { if(top>1000) cout<<"内存已满,不可添加"< elseif(top<=1000) {Tea[top]=t; cout<<"添加成功"< top++; } return; } } voidTea_Manage: : Show()//教师信息的显示 { for(inti=0;i { Tea[i].Output_1(); cout<<"....................................."< } } voidTea_Manage: : Search()//教师信息的查询 { if(top==0) { cout<<"没有任何信息"< } intchoice;inti=0; intm=0;intn=0;intnum; cout<<"请输入您的选择: "< cout<<"查询方式1.按名字2.按编号"< cin>>choice; switch(choice) { case1: { charname[20]; cout<<"请输入您所查询的人员名字: "< cin>>name; for(i;i { if(! strcmp(name,Tea[i].name)) { Tea[i].Output_1(); break; } } if(i==top) cout<<"查无此人"< }break; case2: { cout<<"请输入编号: "< cin>>num; for(i=0;i { if(num==Tea[i].GetNum()) { Tea[i].Output_1(); } if(i==top) cout<<"查无此人"< } }break; } } voidTea_Manage: : Edit()//教师信息的修改 { inti=0; Search(); cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"< cout<<"1.修改编号2.修改姓名3.修改性别4.修改年龄5.修改系别6.修改专业7.修改职称0.退出"< cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"< intchoice;cin>>choice; switch(choice) { case1: cout<<"编号不可修改"< break; case2: { charna[20]; cout<<"请输入修改后的姓名: "< strcpy(Tea[i].name,na); cout<<"修改成功"< }break; case3: { intm; chara[10]; cout<<"输入修改后的内容: "< cin>>a; strcpy(Tea[i].sex,a); cout<<"修改成功,是否继续(1/2)"< cin>>m; if(m=1) return; }break; case4: { intb,m; cout<<"请输入修改后的年龄: "< cin>>b; Tea[i].age=b; cout<<"修改成功,是否继续(1/2)"< if(m=1) return; }break; case5: { intm; charn[20]; cout<<"请输入修改后系部: "< cin>>n; strcpy(Tea[i].depart,n); cout<<"修改成功,是否继续(1/2)"< cin>>m; if(m=1) return; }break; case6: { intm; charn[20]; cout<<"请输入修改后专业: "< cin>>n; strcpy(Tea[i].spec,n); cout<<"修改成功,是否继续(1/2)"< if(m=1) return; }break; case7: { intm; charn[20]; cout<<"请输入修改后的职称: "< cin>>n; strcpy(Tea[i].title,n); cout<<"修改成功,是否继续(1/2)"< if(m=1) return; }break; case0: cout<<"退出成功! "< default: cout<<"无此选项! 请重试! "< } } voidTea_Manage: : Delete()//教师信息的删除 { Teachert; inti=0; cout<<"请输入你想删除人员的编号: "< if(top==0) cout<<"没有人员选择"< for(i;i { if(t.num==Tea[i].num) { Tea[i]=Tea[i+1]; top--; } break; if(i==top) cout<<"查无此人"< } cout<<"删除成功"< return; intm;cin>>m; if(m=1)return; } voidTea_Manage: : Total()//教师信息的统计 { cout< } voidTea_Manage: : Save()//教师信息的保存 { if(! outfile) { cerr<<"openerror! "< abort(); } for(inti=0;i { outfile.write((char*)&Tea[i],sizeof(Tea[i])); } cout<<"保存成功"< outfile.close(); } voidTea_Manage: : Read()//教师信息的读出 { if(! infile) { cerr<<"openerror! "< abort(); } while(infile.read((char*)&Tea[top],sizeof(Tea[0])))top++; cout<<"读取成功"< infile.close(); } 4.3主函数实现 intmain()//主函数的实现 { cout<<"***欢迎进入北华航天工业学院人员管理系统***"< in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 高校 人员 信息管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)