文档库 最新最全的文档下载
当前位置:文档库 › 高校人事管理系统

高校人事管理系统

C++课程设计报告

题目:学校人事管理系统

班级: 软件1202

姓名:

指导教师: 章永龙

成绩:

2013年12月

一、任务描述

本次任务要求完成一个学校人事管理系统。具体需求为:某高校,主要人员有:在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职

称、政治面貌、最高学历、任职时间、来院时间。具体要求如下:

(一)系统以菜单方式工作,要求界面清晰,便于操作。

(二)可以录入每个员工的信息,并以对象数组形式保存信息。

(三)能够查看员工的信息,并以编号为升序方式显示,包括以下四种查看方式:

1.在职员工信息查看;

2.退休员工信息查看;

3.返聘人员信息查看;

4.临时工信息查看。

(四)可以实现员工信息查询功能,包括以下两种查询方式:

1.按员工编号查询;

2.按员工姓名查询。

(五)能根据学院人事的变动情况,添加或删除员工记录。

(六)能根据查询对相应的记录进行修改员工信息,并存储。

(七)能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数),并输出统计结果。

二、系统概要设计

(一)模块整体设计图

(二)函数功能介绍

1.员工类(放置员工信息)

(1)无参构造函数CStaff()

功能:为数据成员置初值;

(2)带参构造函数CStaff(int nu,char ty[],char na[],char s[],int a,char j[],char p[],char st[],char e[],int t,char c[])

功能:用参数为数据成员置初值;

(3)设置员工信息函数void setstaff(int nu,char ty[],char na[],char

s[],int a,char j[],char p[],char st[],char e[],int t,char c[])

功能:用参数给数据成员赋值;

(4)赋值运算符重载函数void setstaff(int nu,char ty[],char na[],char s[],int a,char j[],char p[],char st[],char e[],int t,char c[])

功能:重载运算符=,方便对象之间的直接赋值;

(5)显示员工信息函数void showstaff()

功能:显示员工信息;

2.学校类(是员工类的友元类,对员工类进行操作)

(1)无参构造函数School()

功能:为数据成员置初值;

(2)员工信息录入函数void luru()

功能:录入员工信息并存入对象数组中;

(3)统计并显示结果函数void tongji(School &s)

功能:根据多种参数进行人员统计并显示统计结果;

(4)统计人员信息函数void tongji1()

功能:根据多种参数进行人员统计;

(5)增加员工信息函数void add()

功能:根据学院人事的变动情况,添加相应员工记录;

(6)主查询界面函数void search(School &s)

功能:构造查询界面,并调用其他查询界面函数;

(7)按编号查询界面函数void searchmenu1(School &s)

功能:构造编号查询界面,并调用编号查询函数;

(8)按姓名查询界面函数void searchmenu2(School &s)

功能:构造姓名查询界面,并调用姓名查询函数;

(9)删除员工信息函数void del(School &s)

功能:根据学院人事的变动情况,删除相应员工记录;

(10)修改员工信息函数void modify(School &s)

功能:根据查询对相应的记录进行修改,并存储;

(11)排序函数void sort()

功能:对员工按编号进行升序排序;

(12)查看员工信息主界面函数void print(School &s)

功能:构造查看员工信息主界面,并调用其他查看员工信息界面函数;(13)查看在职员工信息主界面函数void print1(School &s)

功能:构造查看在职员工信息主界面,并调用其他查看员工信息函数;(14)查看行政人员信息函数void print2(School &s)

功能:按编号升序显示行政人员信息;

(15)查看教师信息函数void print3(School &s)

功能:按编号升序显示教师信息;

(16)查看一般员工信息函数void print4(School &s)

功能:按编号升序显示一般员工信息;

(17)查看退休人员函数void print5(School &s)

功能:按编号升序显示退休人员信息;

(18)查看返聘人员函数void print6(School &s)

功能:按编号升序显示返聘人员信息;

(19)查看临时工信息函数void print7(School &s)

功能:按编号升序显示临时工信息;

3.其它界面函数

(1)主界面函数int menu

功能:构造系统界面;

(2)员工信息查看界面函数int menu1()

功能:构造员工信息查看界面;

(3)人员统计信息查看界面函数void menu2(int znum,int dnum,int wnum,int gxnum,int gznum,int gnum)

功能:构造人员统计信息查看界面;

(4)在职员工信息查看界面函数int menu3()

功能:构造在职员工信息查看界面;

(5)查询员工信息界面函数int menu4()

功能:构造查询员工信息界面;

4.主函数void main()

功能:创建学校类的对象并调用其成员函数。

三、系统详细设计

(一)数据结构设计

1.本系统创建了一个学校类的对象s,通过调用s的成员函数来完成对员工信息增加、删除、修改、查询和统计的操作

2.本系统采用对象数组保存录入的员工信息,其中对象数组sta[Max]为学校类的数据成员,而sta[Max]本身为员工类的对象数组,为了方便调用sta[Max]的数据成员而不破坏员工类的封装性,故将学校类设为员工类的友元类。

(二)模块接口设计:

1.员工类各成员函数原型

CStaff(); /*无参构造函数*/

CStaff(int nu,char ty[],char na[],char s[],int a,char j[],char p[],char st[],char e[],int t,char c[]); /*带参构造函数*/

void setstaff(int nu,char ty[],char na[],char s[],int a,char j[],char p[],char st[],char e[],int t,char c[]); /*设置员工信息函数*/ CStaff &operator =(CStaff &s); /*赋值运算符重载函数*/

void showstaff(); /*显示员工信息函数*/

2.学校类

School(); /*无参构造函数*/

void luru(); /*员工信息录入函数*/

void tongji(School &s); /*统计并显示结果函数*/

void tongji1(); /*统计人员信息函数*/

void add(); /*增加员工信息函数*/

void search(School &s); /*查找界面函数*/

void searchmenu1(School &s); /*按编号查找界面函数*/

void searchmenu2(School &s); /*按姓名查找界面函数*/

int search1(int x); /*按编号查询函数*/

int search2(char na[]); /*按姓名查询函数*/

void del(School &s); /*删除员工信息函数*/

void modify(School &s); /*修改员工信息函数*/

void sort(); /*排序函数*/

void print(School &s); /*查看员工信息主界面函数*/ void print1(School &s); /*查看在职员工信息主界面函数*/ void print2(School &s); /*查看行政人员信息函数*/

void print3(School &s); /*查看教师信息函数*/

void print4(School &s); /*查看一般员工信息函数*/

void print5(School &s); /*查看退休人员函数*/

void print6(School &s); /*查看返聘人员函数*/

void print7(School &s); /*查看临时工信息函数*/

void tongji(School &s); /*统计并显示结果函数*/

void tongji1(); /*统计人员信息函数*/

int menu () /*主界面函数*/ int menu1(); /*员工信息查看界面*/

void menu2(int znum,int dnum,int wnum,int gxnum,int gznum,int gnum); /*人员统计信息查看界面*/ int menu3(); /*在职员工信息查看界面*/ int menu4(); /*查询员工信息界面*/

4.系统界面切换的实现

利用清屏函数system("cls")实现屏幕切换,在从本界面返回上一界面时,根据提示输入即可,例如:

cout<<"输入任意键返回主菜单"<>c;

则输入输入任意键都能返回上一界面,在main ()函数中用do-while 语句实现各函数的循环调用,以使各功能能够重复实现,直至用户退出系统为止。

(三)盒图: 1.主函数盒图:

x!=8 add() del(s)

modify (s)

search (s)

tongji (s)

print (s)

x=5 x=6 x=7 x=2

x=3

x=4 x=1

lurn() x=menu()

getchar() getchar()

3.查询员工信息界面函数

输入x 输出”请输入您想选择的操作:(1-8)”

输出”8.退出”

输出”7.查看员工信息”

输出”6.统计员工信息” 输出”5.查询员工信息” 输出”4.修改员工信息” 输出”3.删除员工信息” 输出”2.增加员工信息” 输出”1.员工信息录入” 输出” 欢迎进入高校人事管理系统 ”

return x

输出"1.按编号查询" 输入x 输出"请输入您想选择的操作:(1-4)"

输出"4.返回上一菜单"

输出"2.按姓名查询" 输出"查询员工信息" return x

tongji1()

menu2(znum,dnum,wnum,gxnum,gznum,gnum)

8.修改函数盒图

四、系统实现

(一)主界面

(二)录入界面

(三)增加员工信息界面

(四)删除员工信息界面

(五)查询界面

按编号查询界面

(六)统计员工信息界面

(七)查看界面

员工信息查看主界面

在职员工信息查看主界面

行政人员信息查看界面

教师信息查看界面

一般员工信息查看界面

退休员工信息查看界面

返聘人员信息查看界面

临时工信息查看界面

五、系统调试

在调试过程中我遇到的问题以及我的采取措施有:

(一)在调试的过程中,我在写员工类的字符串数据成员用的是指针变量,一刚开始用构造函数初始化时,没有给它们开辟空间,导致我在做其它函数的时候老是出现堆栈溢出等问题,后来我意识到了这个问题,用new给这些字符指针变量动态开辟空间后,将问题解决。

(二)一刚开始,由于我想快点把系统功能做出来,所以做的界面比较丑,在进行后期界面处理时,发现如果直接用cout<

(三)在写修改员工信息函数时,开始时我采用的是输入一个员工编号就要修改他的所有信息,后来一个组员说,如果可以选择修改的内容会更人性化一点,在这样做的时候,我忘记要把原有的数据先赋给变量,导致除了要修改的内容,其他就是空指针赋给对象,所以每次运行时总会出错,将原有的数据先赋给变量后才解决这个问题。

六、系统进一步扩充

(一)未能使用文件保存数据,每次打开后,前面的信息就会丢失,给调试也带来很大不便。

(二)界面美化程度还有待提高。

(三)在进入每一个子界面后,只能逐级返回,而不能一下子退出系统。

七、体会

由于上个学期做过C语言的课程设计,所以这次做C++课程设计的时候感觉难度不是很大,只用了一天半的时间就将系统所有功能的代码都编写出来了,剩下的只是后期界面处理工作,可能由于是C++是从C语言发展而来但C++又是面向对象的程序语言,所以在编写程序时由于建立了一个个对象而使得程序思路比较清晰。通过本次课程设计,我进一步理解了C++是面向对象的程序语言,对类和对象的概念也有了更深刻的理解。

本次课程设计由于是小组合作的,在明确的分工与默契的配合下,相对于上个学期的C语言课程设计,个人的工作量大大减少,我们小组三天就完成了整个课程设计,包括程序的编写和报告的完成。通过这次课程设计,我体会到了合作的重要性,我相信我们小组的每个人都会受益于这次课程设计,在以后的工作中我们也能与别人很好的合作,共同完成任务!

附录关键代码

1)赋值运算符重载

CStaff &CStaff::operator =(CStaff &s)

{num=s.num;

type=new char[M];

name=new char[M];

job=new char[M];

pos=new char[M];

status=new char[M];

edubac=new char[M];

cometime=new char[M];

strcpy(type,s.type);

strcpy(name,https://www.wendangku.net/doc/838978919.html,);

strcpy(sex,s.sex);

age=s.age;

strcpy(job,s.job);

strcpy(pos,s.pos);

strcpy(status,s.status);

strcpy(edubac,https://www.wendangku.net/doc/838978919.html,bac);

time=s.time;

strcpy(cometime,https://www.wendangku.net/doc/838978919.html,etime);

return *this;

}

2)录入、增加信息

for(i=0;;i++)

{cout<<"编号:";

cin>>nu;

if(nu==-1) break;//判断编号是否为-1

cout<<"姓名:";

cin>>na;

cout<<"性别:";

cin>>s;

cout<<"年龄:";

cin>>a;

cout<<"职工类型[行政人员,教师,一般员工,退休人员,返聘人员,临时工]:";

cin>>ty;

cout<<"职务[无,科级,处级,地级]:";

cin>>j;

cout<<"职称[无,初级,中级,高级]:";

cin>>p;

cout<<"政治面貌[群众,中共党员,民主党派]:";

cin>>st;

cout<<"最高学历[小学,初中,高中,大专,本科,硕士,博士]:";

cin>>e;

cout<<"来院时间:";

cin>>c;

cout<<"任职时间:";

cin>>t;

cout<

sta[i].setstaff(nu,ty,na,s,a,j,p,st,e,t,c);//将用户输入信息存入数据库中

n++;

}

相关文档
相关文档 最新文档