C++高校人员信息管理系统课程设计报告Word格式.docx
《C++高校人员信息管理系统课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《C++高校人员信息管理系统课程设计报告Word格式.docx(33页珍藏版)》请在冰豆网上搜索。
教师、实验员、行政人员,教师兼行政人员;
共有的信息包括:
编号、姓名、性别、年龄等。
其中,教师还包含的信息有:
所在系部、专业、职称;
实验员还包含的信息由:
所在实验室、职务;
行政人员还包含的信息有:
政治面貌、职称等。
2.2功能要求
(1)基本功能
1)添加功能:
程序能够任意添加上述四类人员的记录,可提供选择界面供用户选择所要添加的人员类别,要求员工的编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
2)查询功能:
可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
3)显示功能:
可显示当前系统中所有记录,每条记录占据一行。
4)编辑功能:
可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。
5)删除功能:
主要实现对已添加的人员记录进行删除。
如果当前系统中没有相应的人员记录,则提示“记录为空!
”并返回操作;
否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存。
6)统计功能:
能根据多种参数进行人员的统计。
例如,统计四类人员数量以及总数,
或者统计男、女员工的数量,或者统计某年龄段人员的数量等。
7)保存功能:
可将当前系统中各类人员记录存入文件中,存入方式任意。
8)读取功能:
可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。
2.3问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
2)分析系统中的各个实体及它们之间的关系;
3)根据问题描述,设计系统的类层次;
4)完成类层次中各个类的描述;
5)完成类中各个成员函数的定义;
6)完成系统的应用模块;
7)功能调试;
8)完成系统总结报告。
第三章系统设计
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教师类
教师类(公有继承员工类)
chardepart[20](部门);
charspec[20](专业);
chartitle[20](职称);
voidInput_1():
voidOutput_1():
charGetDepart():
获取部门
charGetSpec():
获取专业
charGetTitle():
获取职称
friendTea_Manage:
友元教师管理类
表3-3实验员类
实验员类(公有继承员工类)
chartextroom[20](所在实验室)
charpost[20](职务)
voidInput_3():
voidOutput_3():
charGetTextroom():
获取实验室
charGetPost():
获取职务
friendExp_Manage:
友元实验人员管理类
表3-4行政人员类
行政人员类(公有继承员工类)
charpolitics[20]:
(政治面貌)
chartitle[20]:
(职称)
voidInput_2():
voidOutput_2():
charGetPolitics():
获取政治面貌
获取职称
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.1类实现
classPerson//人员类
classTeacher:
virtualpublicPerson//教师类
classStaff:
virtualpublicPerson//行政人员类
classExperimenter:
publicPerson//实验员类
classTea_Sta:
publicTeacher,publicStaff//教师兼行政人员类
classTea_manage//教师管理类
classSta_manage//行政人员管理类
classExp_manage//实验员管理类
classTea_Sta_manage//教师兼行政人员管理类
4.2函数实现
voidPerson:
:
Input()//员工信息输入
{
cout<
<
"
请输入编号:
endl;
cin>
>
num;
请输入名字:
name;
请输入性别:
sex;
请输入年龄:
age;
}
voidTeacher:
Input_1()//教师信息输入
Input();
请输入所在系别:
depart;
请输入专业名称:
spec;
请输入职称:
title;
Output()//员工信息输出
编号:
num<
姓名:
name<
性别:
sex<
cout<
年龄:
age<
Output_1()//教师信息输出
Output();
所在系别:
depart<
所在专业:
spec<
职称:
title<
intPerson:
GetNum()//返回编号
returnnum;
charPerson:
GetName()//返回姓名
returnname[20];
GetSex()//返回性别
returnsex[10];
GetAge()//返回年龄
returnage;
}
charTeacher:
GetDepart()//返回所在部门
returndepart[20];
GetSpec()//返回专业
returnspec[20];
GetTitle()//返回职称
returntitle[20];
voidTea_Manage:
Add()//教师信息的添加
Teachert;
请输入新增人员的信息:
t.Input_1();
inti;
for(i=0;
i<
top;
i++)
{
if(t.GetNum()==Tea[i].GetNum())
{
cout<
编号已存在,请重新输入:
break;
}
}
if(i==top)
{
if(top>
1000)
cout<
内存已满,不可添加"
elseif(top<
=1000)
{Tea[top]=t;
添加成功"
top++;
}
return;
Show()//教师信息的显示
for(inti=0;
Tea[i].Output_1();
....................................."
Search()//教师信息的查询
if(top==0)
cout<
没有任何信息"
intchoice;
inti=0;
intm=0;
intn=0;
intnum;
请输入您的选择:
查询方式1.按名字2.按编号"
choice;
switch(choice)
case1:
charname[20];
请输入您所查询的人员名字:
cin>
for(i;
{
if(!
strcmp(name,Tea[i].name))
{
Tea[i].Output_1();
break;
}
if(i==top)
查无此人"
}break;
case2:
请输入编号:
for(i=0;
if(num==Tea[i].GetNum())
if(i==top)
cout<
Edit()//教师信息的修改
inti=0;
Search();
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
1.修改编号2.修改姓名3.修改性别4.修改年龄5.修改系别6.修改专业7.修改职称0.退出"
cin>
编号不可修改"
charna[20];
请输入修改后的姓名:
na;
strcpy(Tea[i].name,na);
修改成功"
case3:
intm;
chara[10];
输入修改后的内容:
cin>
a;
strcpy(Tea[i].sex,a);
修改成功,是否继续(1/2)"
m;
if(m=1)
return;
case4:
intb,m;
请输入修改后的年龄:
b;
Tea[i].age=b;
return;
case5:
charn[20];
请输入修改后系部:
n;
strcpy(Tea[i].depart,n);
}break;
case6:
请输入修改后专业:
strcpy(Tea[i].spec,n);
case7:
请输入修改后的职称:
strcpy(Tea[i].title,n);
case0:
退出成功!
break;
default:
无此选项!
请重试!
Delete()//教师信息的删除
请输入你想删除人员的编号:
t.num;
没有人员选择"
for(i;
if(t.num==Tea[i].num)
Tea[i]=Tea[i+1];
top--;
break;
if(i==top)
删除成功"
intm;
if(m=1)return;
Total()//教师信息的统计
top<
Save()//教师信息的保存
ofstreamoutfile("
c:
//高校管理系统之教师类.dat"
ios:
binary);
if(!
outfile)
cerr<
openerror!
abort();
outfile.write((char*)&
Tea[i],sizeof(Tea[i]));
保存成功"
outfile.close();
Read()//教师信息的读出
ifstreaminfile("
infile)
while(infile.read((char*)&
Tea[top],sizeof(Tea[0])))top++;
读取成功"
infile.close();
4.3主函数实现
intmain()//主函数的实现
***欢迎进入北华航天工业学院人员管理系统***"
do{
*****主菜单*****\n"
||||"
||1=>
行政人员管理2=>
教师管理||"
||3=>
实验人员管理4=>
教师兼行政人员管理||"
||0=>
退出系统||"
\n请输入您的选择:
;
switch(choice)
case1:
StuMenu();
case2:
TeaMenu();
case3:
ExpMenu();
case4:
Tea_StaMenu();
case0:
\n您已安全退出系统."
default:
\n没有此选项.请重选."
}while(choice!
=0);
\n***欢迎您下次再使用本系统!
***"
return0;
第五章系统测试
5.1模块测试
以教师信息为例进行说明。
(1)选择对教师信息进行添加,见图5—1,图5—2
图5—1
图5—2
(2)选择对教师信息显示图5—3
图5—3
(3)选择对教师信息修改图5—4
图5—4
(4)修改后显示图5—5
图5—5
(5)对教师信息的删除图5—6
图5—6
(6