1、高校人事管理系统课程设计报告课程:面向对象程序设计学号: 姓名: 班级: 教师: Xx大学课程设计名称:高校人事管理系统1.设计内容某高校主要人员有:在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。要求: 1) 添加删除功能:能根据学院人事的变动情况,添加删除记录;2) 查询功能:能根据编号和姓名进行查询;3) 编辑功能(高级):根据查询对相应的记录进行修改,并存储;4) 统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);5
2、) 保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。6) 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。3.3基本功能要求1.功能选择用菜单实现例如:*高校人事管理系统1-增加人员资料2-删除人员信息3-修改人员信息4-查询人员信息5统计人员信息6数据保存7显示所有信息8退出* 请选择:用户通过输入不同的数字进入不同的菜单。次级菜单主要显示本程序的功能,主要的功能有增加人员资料,删除人员信息,修改人员信息,修改人员信息,查询人员信息,统计人员信息,数据保存,显示所有信息和退出功能。2.运行时给出明确的提示信息比如,选择1,系统会提醒用户输
3、入编号,输入完系统会进一步提醒用户输入其他信息和选择,进入相应的选择后会提醒用户选择其他子选择和输入;比如,输入增加人员,又选择“在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工”再输入信息。比如在删除人员信息中又显示“所要删除的编号是”和“无此人员”或“已被删除”等比如在查找人员信息中又显示“所要查找的编号是”或“所要查找的姓名是”和“无此人员”和显示相关信息等。在统计人员信息中又显示 请选择统计对象: 1 在职人数 2 党员人数 3 女工人数 4 高学历高职称人数 请选择:界面来供选择。比如修改功能则会出现下面的界面请选择要修改的内容:1:姓名 2:性别 3:年龄 4:职工
4、类型 5:职务6:职称 7:学历 8:政治面貌 9:来院时间 10:参加工作时间 选择(1-10):在实现完菜单中的子程序功能,系统会提醒用户按任意键继续(就是重新返回到主菜单进行其他操作),最后根据提示信息输入8退出系统,结束本次操作。4.系统结构设计本程序的功能结构如图1所示:图1程序功能结构图5.源程序代码/*/#include#include#include/文件流,数据流输入输出#include /是常用的函数system()、exit()的头文件#include/参数化输入输出是setw()函数的头文件/person类和school类的主体以及主函数由本人和合作者何婷婷共同完成/文
5、中没有标注由谁完成的,代表由本人和合作者何婷婷共同完成class personprivate: int no;/编号 char type20;/ 职员分类 char name20;/姓名 char sex10;/性别 int age;/年龄 char time120;/任职时间 char time220;/来院时间 char pos20;/职务 char techpos20;/职称 char party20;/政治面貌 char study30;/最高学历 person *mynext;/指向下一个指针public: person(int nnum,char ntype,char nname,
6、char nsex,int nage,char ntime1,char ntime2,char npos,char ntechpos,char nparty,char nstudy)/构造函数 no=nnum; strcpy(type,ntype);/字符串的拷贝 strcpy(name,nname); strcpy(sex,nsex); strcpy(time1,ntime1); age=nage; strcpy(time2,ntime2); strcpy(pos,npos); strcpy(techpos,ntechpos); strcpy(party,nparty); strcpy(st
7、udy,nstudy); mynext=NULL;/下一个为空 person(int nnum,char ntype,char nname,char nsex,int nage,char ntime1,char ntime2, char npos,char ntechpos,char nparty,char nstudy,person *next) /构造函数2,即重载 no=nnum; strcpy(type,ntype); strcpy(name,nname); strcpy(sex,nsex); strcpy(time1,ntime1); age=nage; strcpy(time2,n
8、time2); strcpy(pos,npos); strcpy(techpos,ntechpos); strcpy(party,nparty); strcpy(study,nstudy); mynext=next;/下一个为有 void setnext(person *next)/关于next的函数 mynext=next; person *getnext()/指针函数,把数据从被调函数返回到主调函数 return mynext; int getnum() return no; char *getname()/name是数组用指针 return name; char *getsex()/se
9、x是数组用指针 return sex; char *getpos()/pos是数组用指针 return pos; char *gettechpos()/techpos是数组用指针 return techpos; char *gettime1()/time1是数组用指针 return time1; char *gettime2()/time2是数组用指针 return time2; char *getparty()/party是数组用指针 return party; char *getstudy()/study是数组用指针 return study; int getage() return ag
10、e; void getag(int as) age=as; char *gettype()/type是数组用指针 return type; ;/链表类class Schoolprivate: person *myfirst; int firstnum;public: School() myfirst=NULL; School(int nnu,char ntyp,char nnam,char nse,int nag,char ntim1,char ntim2,char npo,char ntechpo,char npart,char nstud) myfirst=new person(nnu,n
11、typ,nnam,nse,nag,ntim1,ntim2,npo,ntechpo,npart,nstud);/动态分配内存创立节点 /初始化 void insertatlast(int nnum,char ntype,char nname,char nsex,int nage,char ntime1,char ntime2,char npos,char ntechpos,char nparty,char nstudy)/成员函数 person *next=myfirst; if(next=NULL) myfirst=new person(nnum,ntype,nname,nsex,nage,n
12、time1,ntime2,npos,ntechpos,nparty,nstudy); else while(next-getnext()!=NULL)/已经有至少一个编号内容 next=next-getnext(); next-setnext(new person(nnum,ntype,nname,nsex,nage,ntime1,ntime2,npos,ntechpos,nparty,nstudy,next-getnext();/调用构造函数2 void printf(int r)/输入函数 *由合作者何婷婷完成 int nage; char ntype20,nname20,nsex20,n
13、time120,ntime220,npos20,ntechpos20,nparty20,nstudy20; cout请输入编号为r的成员的信息endl; cout输入职工分类码poli(行政人员),teac(老师),work(一般人员),outwork(退休人员),rework(返聘人员),timework(临时工):ntype; cout输入姓名:nname; cout输入性别:(女性f,男性m)nsex; cout输入年龄:nage; cout参加工作时间:ntime1; cout输入来院时间:ntime2; cout输入职务no(无),ke(科级),chu(处级),di(地级):npos
14、; cout输入职称no(无),chu(初级),zhong(中级),gao(高级):ntechpos; cout输入加入党派qz(群众),gd(中共党员),mzd(民主党派):nparty; cout输入学历xiao(小学),chu(初中),gao(高中),zhuan(大专),da(大学),suo(硕士),bo(博士):nstudy; insertatlast(r,ntype,nname,nsex,nage,ntime1,ntime2,npos,ntechpos,nparty,nstudy);/调用函数 void printf1(person *ahead)/定义一个指针对象*由本人完成 /s
15、etiosflags(ios:left)左对齐,setw是操作子,设定下一次输出输入宽度 cout编号:setiosflags(ios:left)setw(26)getnum()姓名:getname()endl; cout性别:setiosflags(ios:left)setw(26)getsex()年龄:getage()endl; cout职工类型:setiosflags(ios:left)setw(22)gettype()职务:getpos()endl; cout职称:setiosflags(ios:left)setw(26)gettechpos()学历:getstudy()endl; c
16、out政治面貌:setiosflags(ios:left)setw(22)getparty()来院时间:gettime1()endl; cout参加工作时间:gettime2()endl; void pri()/显示所有信息 *由本人完成 person *ahead=myfirst; cout编号姓名 性别 年龄 职工类型 职务 职称 学历 政治面貌 来院时间 参加工作时间n; while(ahead!=NULL) coutsetiosflags(ios:left)setw(4)getnum()setiosflags(ios:left)setw(6)getname() setiosflags(
17、ios:left)setw(5)getsex()setiosflags(ios:left)setw(4)getage() setiosflags(ios:left)setw(10)gettype()setiosflags(ios:left)setw(6)getpos() setiosflags(ios:left)setw(6)gettechpos()setiosflags(ios:left)setw(6)getstudy() setiosflags(ios:left)setw(9)getparty()setiosflags(ios:left)setw(12)gettime1() gettime
18、2()getnext();/一个一个输出 void add()/增加函数*由合作者何婷婷完成 int i,a,b; person *p1=myfirst;/初始化对象指针 if(p1=NULL) couti; printf(i);/调用前面的printf函数 else if(p1-getnext()=NULL)/获得节点 a=p1-getnum()+1;/ printf(a); else while(p1-getnext()!=NULL) p1=p1-getnext();/在原由的基础上加内容 b=p1-getnum()+1;/数字加1=2 printf(b); bool removedatn
19、um( )/删除函数*由合作者何婷婷完成 int bh; person *ahead=myfirst; person *follow=ahead; coutbh; if(ahead=NULL)/判断链表是否为空。若为空,返回false,否则返回true。 return false; else if(ahead-getnum()=bh) myfirst=myfirst-getnext(); cout编号为bh的成员以被删除getnext(); while(ahead!=NULL) if(ahead-getnum()=bh) follow-setnext(ahead-getnext(); cout
20、编号为bhgetnext(); cout要删除的成员不存在!endl; return false; bool find1()/根据编号查找,返回是真OR假 *由合作者何婷婷完成 int id; person *ahead=myfirst; person *follow=ahead; cout请输入编号:id; cout*endl; if(ahead=NULL) cout无人员信息!getnum()=id) printf1(ahead); return true; else follow=ahead;/继续查找,比如输入了一个没有的id,就用到这里 ahead=ahead-getnext();
21、cout无此人信息:endl; return false; bool find2( )/根据姓名查找*由合作者何婷婷完成 char nm20; person *ahead=myfirst; person *follow=ahead; coutnm; cout*endl; if(ahead=NULL) cout无人员信息getname(),nm)=0) printf1(ahead); return true; else follow=ahead; ahead=ahead-getnext(); cout查无此人:endl; return false; void stat()/统计函数*由本人完成
22、int xx,sz=0; cout请选择统计对象: endl; cout 1 在职人数endl; cout 2 党员人数endl; cout 3 女工人数endl; cout 4 高学历高职称人数endl; coutxx; switch(xx) case 1: person *ahead=myfirst; if(ahead=NULL) cout无人员信息gettype(),poli)=0|strcmp(ahead-gettype(),teac)=0|strcmp(ahead-gettype(),work)=0) ahead=ahead-getnext(); sz+; else ahead=ahead-getnext(); cout在职人数:szendl; ; break; case 2: person *ahead=myfirst; if(ahead=NULL) cout无人员信息n; else while(ahead!=NULL)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1