《高校人事管理系统.doc》由会员分享,可在线阅读,更多相关《高校人事管理系统.doc(29页珍藏版)》请在课桌文档上搜索。
1、一、设计容与设计要求1.课程设计目的:面向对象程序设计课程设计是集中实践性环节之一,是学习完面向对象程序设计课程后进展的一次全面的综合练习。要求学生达到熟练掌握C+语言的根本知识和技能;根本掌握面向对象程序设计的思想和方法;能够利用所学的根本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。公司库存管理系统高校学籍管理系统高校工资管理系统高校人事管理系统文件加密管理系统3设计要求:设计课题题目:第5个课题是扩展课题,有能力完成的同学可以选择。其余每位同学根据自己学号除以4所得的余数加一选择相应题号的课题。换题者不记成绩。根据自己对应的课题完成以下主要工作:完成系统
2、需求分析:包括系统设计目的与意义;系统功能需求系统流程图;输入输出的要求。完成系统总体设计:包括系统功能分析;系统功能模块划分与设计系统功能模块图。完成系统详细设计:包括数据库需求分析;类层次图;界面设计与各功能模块实现。系统调试:调试出现的主要问题,编译语法错误与修改,重点是运行逻辑问题修改和调整。使用说明书与编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。关键源程序带注释按规定格式完成课程设计报告,将其打印稿(A4纸)上交给教师存档。不得抄袭他人程序、课程设计报告,每个人应表现自己的个性设计二、进度安排3 实验内容课题4:高校人事管理系统 一、课程设计题目:高校人事管理系统二
3、、目的与要求: 1、目的: 1要求学生达到熟练掌握C+语言的根本知识和技能; 2根本掌握面向对象程序设计的根本思路和方法; 3能够利用所学的根本知识和技能,解决简单的面向对象程序设计问题。 2、根本要求: 1要求利用面向对象的方法以与C+的编程思想来完成系统的设计; 2要求在设计的过程中,建立清晰的类层次; 3在系统中至少要定义四个类,每个类中要有各自的属性和方法; 4在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在根本要求达到后,可进展创新设计,如根据查找结果进展修改的功能。 4、写出设计说明书 三、设计方法和根本原理: 1、问题描述功能要求: 某高校,主要人员有:在职人员
4、行政人员、教师、一般员工、退休人员。现在,需要存储这些人员的人事档案信息:编号、性别、年龄、职务、级别、职称、政治面貌、最高学历、任职时间、来院时间、工资。其中行政人员只有职务和级别,教师只有职务和职称,一般员工只有职务,退休人员如此没有职务、级别、职称,但有退休时间。要求:1添加删除功能:能根据学院人事的变动情况,添加删除记录;2查询功能:能根据编号和进展查询;3编辑功能高级:根据查询对相应的记录进展修改,并存储;4统计功能:能根据多种参数进展人员的统计在职人数、党员人数、女工人数、高学历高职称人数;5保存功能:能对输入的数据进展相应的存储,扩展要求:要求重载插入和提取符以完成数据的保存和打
5、开。6人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: 1应用系统分析,建立该系统的功能模块框图以与界面的组织和设计;2分析系统中的各个实体与它们之间的关系包括属性和行为; 3根据问题描述,设计系统的类层次; 4完成类层次中各个类的描述包括属性和方法; 5完成类中各个成员函数的定义; 6完成系统的应用模块; 7功能调试; 8完成系统总结报告以与系统使用说明书。目 录1.系统需求分析12.总体设计23.详细设计33.1 功能提示43.2 添加人员功能53.3 查询功能73.4 统计功能93.5 编辑功能104.
6、系统调试115.结果分析126.总结137.附录141. 系统需求分析课题4:高校人事管理系统 一、课程设计题目:高校人事管理系统二、目的与要求: 1、目的: 1要求学生达到熟练掌握C+语言的根本知识和技能; 2根本掌握面向对象程序设计的根本思路和方法; 3能够利用所学的根本知识和技能,解决简单的面向对象程序设计问题。 2、根本要求: 1要求利用面向对象的方法以与C+的编程思想来完成系统的设计; 2要求在设计的过程中,建立清晰的类层次; 3在系统中至少要定义四个类,每个类中要有各自的属性和方法; 4在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在根本要求达到后,可进展创新设计
7、,如根据查找结果进展修改的功能。 4、写出设计说明书 三、设计方法和根本原理: 1、问题描述功能要求: 某高校,主要人员有:在职人员行政人员、教师、一般员工、退休人员、返聘人员和临时工。现在,需要存储这些人员的人事档案信息:编号、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。要求: 1添加删除功能:能根据学院人事的变动情况,添加删除记录;2查询功能:能根据编号和进展查询;3编辑功能高级:根据查询对相应的记录进展修改,并存储;4统计功能:能根据多种参数进展人员的统计在职人数、党员人数、女工人数、高学历高职称人数;5保存功能:能对输入的数据进展相应的存储,要求重载插入和提取符以完
8、成数据的保存和打开。6人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: 1应用系统分析,建立该系统的功能模块框图以与界面的组织和设计;2分析系统中的各个实体与它们之间的关系包括属性和行为; 3根据问题描述,设计系统的类层次; 4完成类层次中各个类的描述包括属性和方法; 5完成类中各个成员函数的定义; 6完成系统的应用模块; 7功能调试; 8完成系统总结报告以与系统使用说明书。2. 总体设计1资料维护:系统维护包括对各种表记录的修改、删除、添加等操作。2资料维护:对数据表中的信息进展浏览。 3系统查询:可以按职
9、工编号、等相关信息进展详细或模糊查询。4报表统计:包括统计职工编号、职工、职工性别、所在部门、职工年龄、工作日期、 根本工资、职称、职务和简历等字段。5其它操作:系统封面、人性化提示信息。 系统功能模块划分:数据查找与浏览、数据修改、报表显示和系统封面构成。系统的各个功能大体框架如下:开始 管理系统主页面分别输入要输入的人员信息添加完最后一项之后选择要修改的人员信息修改完之后选择要删除的人员信息删除之后图2.1 系统运行结构框图3. 详细设计功能选择界面退出显示所有信息添加人员信息删除人员信息查询人员信息编辑人员信息统计人员数量图3.1 系统功能结构框图3.1 当我们运行程序时,会出现如下的功
10、能选择提示界面,代码已经附上。图3.2 主页面图局部代码如下:person pjk;int c;coutendl;cout-高校人事管理系统-endl;cout* *endl;cout* 1-添加人员信息并保存 *endl;cout* 2-删除人员信息 *endl;cout* 3-修改人员信息 *endl;cout* 4-查询人员信息 *endl;cout* 5-统计人员信息 *endl;cout* 6-显示所有信息 *endl;cout* 7-退出 *endl;cout-endl;cout 请选择(1-7): c;switch(c)case 1: pjk.tjry();menu();brea
11、k;case 2:pjk.shancu();menu(); break;case 6:pjk.output();menu();break;case 7:exit(1);break;void main()menu();按提示输入序号,当输入1时,会出现要操纵者输入相关信息。图3.3 添加人员图该图的执行代码如下,新增人员模块,实现新人员的信息添加功能:void person:tjry() /int v,l=1;char type220;char name220;char sex210;char age210;char zhiwu220;char zhichen220;char zzmm220;c
12、har zgxl220;char rzsj220;char lysj230;cout请输入要添加的人数k;p1.getbianhao()=ppk1.getbianhao();v=bianhao;for(int i=v+1;i=v+k;i+)cout请输入第l个人的信息endl;couttype2;coutname2;coutsex2;coutage2;coutzhiwu2;coutzhichen2;coutzzmm2;coutzgxl2;coutrzsj2;coutlysj2;pi.setperson(type2,name2,sex2,age2,zhiwu2,zhichen2,zzmm2,zg
13、xl2,rzsj2,lysj2);l+;3.3 图3.4 查询功能图执行代码如下:人员查询模块,本模块提供的查询方式包括按编号和2种,方便用户的查询。void person:find() /cout1:按编号查询-2:按查询-请选择(1-2)m;while(m2)cout请重新输入(1-2)m;switch(m)case 1:.while(!filem.eof() filemppk.getnum();filemppk.gettype();filemppk.getname();filemppk.getsex();filemppk.getage();if(strcmp(ppk.getnum(),n
14、)=0).setw(10)来院时间ppk.getnum();.if(strcmp(ppk.getname(),nname)=0)coutppk.getnum()setw(9)ppk.gettype()setw(5)ppk.getname()setw(5)ppk.getsex()setw(5)ppk.getage()setw(5)ppk.getzhiwu()setw(5)ppk.getzhichen()setw(9)ppk.getzzmm()setw(10)ppk.getzgxl()setw(10)ppk.getrzsj()setw(10)ppk.getlysj()endl;break;k+;i
15、f(filem.eof()coutendl;coutppk.getnum();filemppk.gettype();.filemppk.getzzmm();filemppk.getzgxl();c+;if(strcmp(ppk.getzgxl(),boshi)=0)d+;k+;filem.close();cout在职人数setw(12)党员人数setw(12)女工人数setw(12)高学历人数endl;coutasetw(12)bsetw(12)csetw(12)dendl;修改运行结果。图3.6 修改功能图该运行结果的代码在此略掉,已在附录中补上。4. 系统调试1. 程序代码编写过程中,缺省
16、分号,中括号不成对等根本格式错误,系统提示错误,此时做相关修改添加即可。如:图4.1 缺少分号报错图2. 缺少返回类型,如图4.2 缺返回类型报错图3.在函数调用时,出先函数未知的错误,原因是函数的调用在声明前,所有要在函数调用前进展声明。程序运行界面:图4.3 程序提示界面图图4.4 添加人员功能图4.error C2065: setw : undeclared identifier 在找预编译头文件路径时出错,c+中的setw(n)设置域宽不能调用,要加上头文件#include5.error C2018: unknown character 0xa3 不认识的字符0xa3。一般是汉字或中文
17、标点符号。6.error C2057: expected constant expression 希望是常量表达式。一般出现在switch语句的case分支中。7.error C2143: syntax error: missing : before 句法错误:“前缺少“;。5. 结果分析本程序的能实现人员信息以.txt格式保存,使用到的指针为实时开辟空间提供了方便。根本的实现了题目要求的各个功能模块,运行界面的提示做的一目了然,为使用者提供了方便。本程序的不足之处就是功能显示界面不够完美,显示有点拥挤的感觉。一个程序员精心设计的程序很难为其他程序所用。界面比拟的单一,功能相对较少,只能逐一增
18、加信息,不能批量的增加。本代码很好的实现了人员的添加保存,删除,查询等功能。6. 总结本次课程设计让我初步体会到C+面向对象设计的特性,该语言能编写建立对象,QQ应该就使用到了C+。通过这次课程设计自己动手编写了人事管理系统在编写过程中遇到了许多的问题在解决问题的同时对类、单链表、文件等进一步加深了了解强化了在上课学的知识对自己提高很大。人事管理系统是典型的信息管理系统涉与的东西很多包括添加人员查询人员资料删除成员资料等。这次设计选用Win-TC通过努力较好的完成了自己的设计同时了解到自己的不足所以我们还要通过不断的学习不断的提高自己。总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习
19、和工作带来很大的好处。最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序,让我对编程更加热爱了。整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。特别是学会了在Visual C+ 集成开发环境中如何调试程序的方法。当然,教师的悉心指导和同学的帮助也是不可无视的,在此感谢本次课程设计中所有辅导教师对我的关心和帮助,诚心诚意感谢他们对我的鼓励与教诲,是她们在我迷茫的时候给了我些许提示,激发了我编程的灵感;还有,我
20、在此也十分感谢本次课程设计中同学们对我的帮助。7. 附录程序的源代码如下:#include#include#include#includeusing namespace std;int k;class personprivate: char num10; char type20; char name20; char sex10; char age10; char zhiwu20; char zhichen20; char zzmm20; char zgxl20; char rzsj20; char lysj30; static int bianhao;public:void setperson
21、(char *type1,char *name1,char *sex1,char *age1,char *zhiwu1,char *zhichen1,char *zzmm1,char *zgxl1,char *rzsj1,char *lysj1);static int& getbianhao() return bianhao;char * gettype() return type;char * getname() return name;char * getsex() return sex;char * getage() return age;char * getzhiwu() return
22、 zhiwu;char * getzhichen() return zhichen; char * getzzmm() return zzmm; char * getzgxl() return zgxl; char * getrzsj() return rzsj; char * getlysj() return lysj; char * getnum() return num;void tjry(); void find(); void output(); void shancu(); void xiugai(); void tongji();person p100;person pp100;
23、int k1;int person:bianhao=0;void person:setperson(char *type1, char *name1, char *sex1, char *age1, char *zhiwu1, char *zhichen1, char *zzmm1, char *zgxl1, char *rzsj1, char *lysj1 )int static j=1;strcpy(type,type1);strcpy(name,name1);strcpy(sex,sex1);strcpy(age,age1);strcpy(zhiwu,zhiwu1);strcpy(zhi
24、chen,zhichen1);strcpy(zzmm,zzmm1);strcpy(zgxl,zgxl1);strcpy(rzsj,rzsj1);strcpy(lysj,lysj1);bianhao+;ofstream file(添加人员.txt,ios_base:app);filepj.getbianhao()endl;filepj.gettype()endl;filepj.getname()endl;filepj.getsex()endl; filepj.getage()endl;filepj.getzhiwu()endl;filepj.getzhichen()endl;filepj.get
25、zzmm()endl;filepj.getzgxl()endl;filepj.getrzsj()endl;filepj.getlysj()ppk.getnum();filemppk.gettype();filemppk.getname();filemppk.getsex();filemppk.getage();filemppk.getzhiwu(); filemppk.getzhichen();filemppk.getzzmm();filemppk.getzgxl();filemppk.getrzsj();filemppk.getlysj();if(strcmp(ppk.gettype(),行
26、政人员)=0|strcmp(ppk.gettype(),教师)=0|strcmp(ppk.gettype(),一般员工)=0)a+;if(strcmp(ppk.getzzmm(),党员)=0)b+;if(strcmp(ppk.getsex(),nv)=0)c+;if(strcmp(ppk.getzgxl(),boshi)=0)d+;k+;filem.close();cout在职人数setw(12)党员人数setw(12)女工人数setw(12)高学历人数endl;coutasetw(12)bsetw(12)csetw(12)dppk.getnum(); filemppk.gettype();
27、filemppk.getname(); filemppk.getsex(); filemppk.getage(); filemppk.getzhiwu(); filemppk.getzhichen(); filemppk.getzzmm(); filemppk.getzgxl(); filemppk.getrzsj(); filemppk.getlysj(); k+;filem.close();cout请输入要修改的人的编号:x;cout请输入编号为x的人需要修改的项目的代号:endl;cout1:编号-2:人员类型-3:-4:性别-5:年龄-6:职务-7:职称-8:政治面貌-9:最高学历-1
28、0:任职时间-11:来院时间y;switch(y)case 1: coutppx.getnum() ; break;case 2: coutppx.gettype(); break;case 3: coutppx.getname(); break;case 4: coutppx.getsex(); break;case 5:coutppx.getage(); break;case 6: coutppx.getzhiwu(); break;case 7: coutppx.getzhichen(); break;case 8: coutppx.getzzmm(); break;case 9: co
29、utppx.getzgxl(); break;case 10: coutppx.getrzsj();break;case 11:coutppx.getlysj(); break;ofstream file1(添加人员.txt,ios_base:trunc);for(k=1;k=bianhao;k+) file1ppk.getnum()endl; file1ppk.gettype()endl; file1ppk.getname()endl; file1ppk.getsex()endl; file1ppk.getage()endl; file1ppk.getzhiwu()endl; file1pp
30、k.getzhichen()endl; file1ppk.getzzmm()endl; file1ppk.getzgxl()endl;file1ppk.getrzsj()endl; file1ppk.getlysj()endl; file1.close();cout修改并保存完毕ppk.getnum();filemppk.gettype();filemppk.getname();filemppk.getsex();filemppk.getage();filemppk.getzhiwu();filemppk.getzhichen();filemppk.getzzmm();filemppk.get
31、zgxl();filemppk.getrzsj();filemppk.getlysj();k+; filem.close();cout请输入要被删除信息的人的编号:z;while(zbianhao)cout没有找到你要删除的人,请重新输入:z;for(k=1;k=bianhao;k+)if(z=k)continue;ofstream file2(添加人员.txt,ios_base:trunc);file2ppk.getnum()endl;file2ppk.gettype()endl;file2ppk.getname()endl; file2ppk.getsex()endl;file2ppk.g
32、etage()endl;file2ppk.getzhiwu()endl;file2ppk.getzhichen()endl;file2ppk.getzzmm()endl;file2ppk.getzgxl()endl;file2ppk.getrzsj()endl;file2ppk.getlysj()endl;file2.close();cout删除记录完毕endl; void person:find() /cout1:按编号查询-2:按查询-请选择(1-2)m;while(m2)cout请重新输入(1-2)m;switch(m)case 1:char n10;coutn;ifstream filem(添加人员.txt,ios_base:in);int k=1;cout编号setw(9)人员类型setw(5)setw(5)性别setw(5)年龄setw(5)职务setw(5)职称setw(9)政治面貌setw(10)最高学历setw(10)任职时间setw(10)来院时间endl;while(!filem.