高校人事管理系统.docx
《高校人事管理系统.docx》由会员分享,可在线阅读,更多相关《高校人事管理系统.docx(39页珍藏版)》请在冰豆网上搜索。
高校人事管理系统
课程设计报告
课程名称面向对象程序设计
课题名称高校人事管理系统
专业通信工程
班级通信1101
学号2011030201
姓名
指导教师
2012年12月22日
湖南工程学院
课程设计任务书
课程名称面向对象程序设计
课题高校人事管理系统
专业班级通信工程
学生姓名
学号
指导老师
审批
任务书下达日期2012年12月22日
任务完成日期2013年1月6日
一、设计内容与设计要求
1.课程设计目的:
面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。
2.课题题目
⑴公司库存管理系统
⑵高校学籍管理系统
⑶高校工资管理系统
⑷高校人事管理系统
⑸文件加密管理系统
3.设计要求:
⑴设计课题题目:
第5个课题是扩展课题,有能力完成的同学可以选择。
其余每位同学根据自己学号除以4所得的余数加一选择相应题号的课题。
换题者不记成绩。
⑵根据自己对应的课题完成以下主要工作:
①完成系统需求分析:
包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。
②完成系统总体设计:
包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。
③完成系统详细设计:
包括数据库需求分析;类层次图;界面设计与各功能模块实现。
④系统调试:
调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。
⑤使用说明书及编程体会:
说明如何使用你编写的程序,详细列出每一步的操作步骤。
⑥关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计
二、进度安排
第17周星期四14时:
00分——18时:
00分
星期五19时:
分——21时:
00分
第18周星期三19时:
00分——21时:
00分
星期四19时:
00分——21时:
00分
3.实验内容
课题4:
高校人事管理系统
(一)、课程设计题目:
高校人事管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
(三)、设计方法和基本原理:
1、问题描述(功能要求):
某高校,主要人员有:
在职人员(行政人员、教师、一般员工)、退休人员。
现在,需要存储这些人员的人事档案信息:
编号、姓名、性别、年龄、职务、级别、职称、政治面貌、最高学历、任职时间、来院时间、工资。
其中行政人员只有职务和级别,教师只有职务和职称,一般员工只有职务,退休人员则没有职务、级别、职称,但有退休时间。
要求:
(1)添加删除功能:
能根据学院人事的变动情况,添加删除记录;
(2)查询功能:
能根据编号和姓名进行查询;
(3)编辑功能(高级):
根据查询对相应的记录进行修改,并存储;
(4)统计功能:
能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);
(5)保存功能:
能对输入的数据进行相应的存储,(扩展要求:
要求重载插入和提取符以完成数据的保存和打开)。
(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系包括属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告以及系统使用说明书。
3.1功能提示4
3.2添加人员功能5
3.3查询功能7
3.4统计功能9
3.5编辑功能10
1.系统需求分析
课题4:
高校人事管理系统
(一)、课程设计题目:
高校人事管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
(三)、设计方法和基本原理:
1、问题描述(功能要求):
某高校,主要人员有:
在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。
现在,需要存储这些人员的人事档案信息:
编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。
要求:
(1)添加删除功能:
能根据学院人事的变动情况,添加删除记录;
(2)查询功能:
能根据编号和姓名进行查询;
(3)编辑功能(高级):
根据查询对相应的记录进行修改,并存储;
(4)统计功能:
能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);
(5)保存功能:
能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。
(6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系包括属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告以及系统使用说明书。
2.总体设计
1.系统功能分析
(1)资料维护:
系统维护包括对各种表记录的修改、删除、添加等操作。
(2)资料维护:
对数据表中的信息进行浏览。
(3)系统查询:
可以按职工编号、姓名等相关信息进行详细或模糊查询。
(4)报表统计:
包括统计职工编号、职工姓名、职工性别、所在部门、职工年龄、工作日期、基本工资、职称、职务和简历等字段。
(5)其它操作:
系统封面、人性化提示信息。
2.系统功能模块划分与设计
系统功能模块划分:
数据查找与浏览、数据修改、报表显示和系统封面构成。
系统的各个功能大体框架如下:
图2.1系统运行结构框图
3.详细设计
功能选择界面
删除人员信息
添加人员信息
查询人员信息
显示所有信息
统计人员数量
编辑人员信息
退出
图3.1系统功能结构框图
3.1
当我们运行程序时,会出现如下的功能选择提示界面,代码已经附上。
图3.2主页面图
部分代码如下:
{
personpjk;
intc;
cout<cout<<"---------------------高校人事管理系统-----------------------------"<cout<<"**"<cout<<"*1--添加人员信息并保存*"<cout<<"*2--删除人员信息*"<cout<<"*3--修改人员信息*"<cout<<"*4--查询人员信息*"<cout<<"*5--统计人员信息*"<cout<<"*6--显示所有信息*"<cout<<"*7--退出*"<cout<<"------------------------------------------------------------------"<cout<<"请选择(1-7):
"<cin>>c;
switch(c)
{
case1:
pjk.tjry();menu();break;
case2:
pjk.shancu();menu();break;
case6:
pjk.output();menu();break;
case7:
exit
(1);break;
}
}
voidmain()
{
menu();
}
3.2
按提示输入序号,当输入1时,会出现要操纵者输入相关信息。
图3.3添加人员图
该图的执行代码如下,新增人员模块,实现新人员的信息添加功能:
voidperson:
:
tjry()//
{
intv,l=1;
chartype2[20];charname2[20];charsex2[10];charage2[10];charzhiwu2[20];
charzhichen2[20];charzzmm2[20];charzgxl2[20];charrzsj2[20];charlysj2[30];
cout<<"请输入要添加的人数"<cin>>k;
p[1].getbianhao()=pp[k1].getbianhao();
v=bianhao;
for(inti=v+1;i<=v+k;i++)
{
cout<<"请输入第"<cout<<"人员类型";cin>>type2;
cout<<"姓名:
";cin>>name2;
cout<<"性别:
";cin>>sex2;
cout<<"年龄:
";cin>>age2;
cout<<"职务:
";cin>>zhiwu2;
cout<<"职称:
";cin>>zhichen2;
cout<<"政治面貌:
";cin>>zzmm2;
cout<<"最高学历:
";cin>>zgxl2;
cout<<"任职时间:
";cin>>rzsj2;
cout<<"来院时间:
";cin>>lysj2;
p[i].setperson(type2,name2,sex2,age2,zhiwu2,zhichen2,zzmm2,zgxl2,rzsj2,lysj2);
l++;
}
}
3.3
图3.4查询功能图
执行代码如下:
人员查询模块,本模块提供的查询方式包括按编号和姓名2种,方便用户的查询。
voidperson:
:
find()//
{
cout<<"1:
按编号查询--2:
按姓名查询-请选择(1-2)"<intm;
cin>>m;
while(m<1||m>2)
{
cout<<"请重新输入(1-2)"<>m;
}
switch(m)
{
case1:
{
.
.
.
while(!
filem.eof())
{
filem>>pp[k].getnum();
filem>>pp[k].gettype();
filem>>pp[k].getname();
filem>>pp[k].getsex();
filem>>pp[k].getage();
if(strcmp(pp[k].getnum(),n)==0)
{
.
.
.
.
.
<while(!
filem.eof())
{
filem>>pp[k].getnum();
.
.
.
if(strcmp(pp[k].getname(),nname)==0)
{
cout<<<<<k++;
if(filem.eof())
{
cout<cout<<"警告:
没有要查找的人!
!
!
!
!
!
!
!
!
!
";}
}
filem.close();
}
break;
}
}
3.4
图3.5统计功能图
代码如下:
人数统计模块,实现总人数的统计功能。
voidperson:
:
tongji()//
{
inta=0;intb=0;intc=0;intd=0;
intk=1;
ifstreamfilem("添加人员.txt",ios_base:
:
in);
while(!
filem.eof())
{
filem>>pp[k].getnum();
filem>>pp[k].gettype();
.
.
.
filem>>pp[k].getzzmm();
filem>>pp[k].getzgxl();
c++;
if(strcmp(pp[k].getzgxl(),"boshi")==0)
d++;
k++;
}
filem.close();
cout<<"在职人数"<cout<}
3.5
修改运行结果。
图3.6修改功能图
该运行结果的代码在此略掉,已在附录中补上。
4.系统调试
1.程序代码编写过程中,缺省分号,中括号不成对等基本格式错误,系统提示错误,此时做相关修改添加即可。
如:
图4.1缺少分号报错图
2.缺少返回类型,如
图4.2缺返回类型报错图
3.在函数调用时,出先函数未知的错误,原因是函数的调用在声明前,所有要在函数调用前进行声明。
程序运行界面:
图4.3程序提示界面图
图4.4添加人员功能图
4.errorC2065:
'setw':
undeclaredidentifier
在找预编译头文件路径时出错,c++中的setw(n)设置域宽不能调用,要加上头文件
#include
5.errorC2018:
unknowncharacter'0xa3'
不认识的字符'0xa3'。
(一般是汉字或中文标点符号)。
6.errorC2057:
expectedconstantexpression
希望是常量表达式。
(一般出现在switch语句的case分支中)。
7.errorC2143:
syntaxerror:
missing':
'before'{'
句法错误:
“{”前缺少“;”。
5.结果分析
本程序的能实现人员信息以.txt格式保存,使用到的指针为实时开辟空间提供了方便。
基本的实现了题目要求的各个功能模块,运行界面的提示做的一目了然,为使用者提供了方便。
本程序的不足之处就是功能显示界面不够完美,显示有点拥挤的感觉。
一个程序员精心设计的程序很难为其他程序所用。
界面比较的单一,功能相对较少,只能逐一增加信息,不能批量的增加。
本代码很好的实现了人员的添加保存,删除,查询等功能。
6.总结
本次课程设计让我初步体会到C++面向对象设计的特性,该语言能编写建立对象,QQ应该就使用到了C++。
通过这次课程设计自己动手编写了人事管理系统在编写过程中遇到了许多的问题在解决问题的同时对类、单链表、文件等进一步加深了了解强化了在上课学的知识对自己提高很大。
人事管理系统是典型的信息管理系统涉及的东西很多包括添加人员查询人员资料删除成员资料等。
这次设计选用Win-TC通过努力较好的完成了自己的设计同时了解到自己的不足所以我们还要通过不断的学习不断的提高自己。
总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。
最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序,让我对编程更加热爱了。
整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。
特别是学会了在VisualC++集成开发环境中如何调试程序的方法。
当然,老师的悉心指导和同学的帮助也是不可忽视的,在此感谢本次课程设计中所有辅导老师对我的关心和帮助,诚心诚意感谢他们对我的鼓励与教导,是她们在我迷茫的时候给了我些许提示,激发了我编程的灵感;还有,我在此也十分感谢本次课程设计中同学们对我的帮助。
7.附录
程序的源代码如下:
#include
#include
#include
#include
usingnamespacestd;
intk;
classperson
{
private:
charnum[10];
chartype[20];
charname[20];
charsex[10];
charage[10];
charzhiwu[20];
charzhichen[20];
charzzmm[20];
charzgxl[20];
charrzsj[20];
charlysj[30];
staticintbianhao;
public:
voidsetperson(char*type1,char*name1,char*sex1,char*age1,char*zhiwu1,
char*zhichen1,char*zzmm1,char*zgxl1,char*rzsj1,char*lysj1);
staticint&getbianhao(){returnbianhao;}
char*gettype(){returntype;}
char*getname(){returnname;}
char*getsex(){returnsex;}
char*getage(){returnage;}
char*getzhiwu(){returnzhiwu;}
char*getzhichen(){returnzhichen;}
char*getzzmm(){returnzzmm;}
char*getzgxl(){returnzgxl;}
char*getrzsj(){returnrzsj;}
char*getlysj(){returnlysj;}
char*getnum(){returnnum;}
voidtjry();
voidfind();
voidoutput();
voidshancu();
voidxiugai();
voidtongji();
};
personp[100];
personpp[100];
intk1;
intperson:
:
bianhao=0;
voidperson:
:
setperson(char*type1,
char*name1,
char*sex1,
char*age1,
char*zhiwu1,
char*zhichen1,
char*zzmm1,
char*zgxl1,
char*rzsj1,
char*lysj1
)
{
intstaticj=1;
strcpy(type,type1);
strcpy(name,name1);
strcpy(sex,sex1);
strcpy(age,age1);
strcpy(zhiwu,zhiwu1);
strcpy(zhichen,zhichen1);
strcpy(zzmm,zzmm1);
strcpy(zgxl,zgxl1);
strcpy(rzsj,rzsj1);
strcpy(lysj,lysj1);
bianhao++;
ofstreamfile("添加人员.txt",ios_base:
:
app);
file<
file<
file<
file<
file<
file<
file<
file<
file<
file<