1、*实践教学* 兰州理工大学计算机和通信学院秋季学期面向对象课程设计题 目:高校人事管理系统 专业班级:06级计算机一班姓 名: 肖雷雷 学 号: 06250131 指导老师: 刘 嘉 成 绩:_目录摘要3第一章 问题描述4第二章 需求分析52.1 需求陈说52.2建立对象模型52.3 建立功效模型52.4系统类层次及结构图6第三章概要设计73.1系统设计73.1.2系统设计思想73.2系统类层次及结构图8第四章 具体设计94.1类和对象设计94.1.1类属性具体设计94.1.2类行为具体设计114.2类具体继承关系12第五章 编码12设计总结28参考文件29致 谢30编号摘要高校人事管理系统是
2、一个信息管理系统,在开发和设计过程中要以高校人事管理业务为背景。开发出一套“高校人事管理系统”软件。此程序包含:建立链表并显示,添加删除功效 (能依据学院变动情况,添加删除统计) , 查询功效 (能依据编号和姓名进行查询) ,编辑功效(依据查询对对应统计进行 修改,并存放) ,统计功效 (能依据多个参数进行人员统计) ,保留功效(能对输入数据进行 对应存放,要求重载插入和提取符以完成数据保留和打开)。经过链表存放结构实现数据输入,实现各子程序过程演示,对异常输入信息报错。关键字:链表 ;高校人事管理系统;查找;数据装入 第一章 问题描述高校人事管理系统包含查找、插入、删除、修改、输出功效。高校
3、人事管理系统基础情况包含数据项有:姓名、性别、年纪、职务、职称、政治面貌、最高学历、来院时间使用链表实现数据录入、查找、修改、插入、追加、删除、统计、输出等功效;建立一个测试数据表,最少要有20个测试数据,算法对于这些正当输入数据全部能产生满足规格说明要求结果;算法对于精心选择经典、苛刻而带有刁难性几组输入数据能够得出满足规格说明要求结果;对算法实现过程中异常情况能给出有效信息;第二章 需求分析2.1 需求陈说 对题目标需求分析得出:高校人事管理系统对人事档案进行管理。人事档案信息包含:编号、姓名、性别、年纪、职务、职称、政治面貌、最高学历、任职时间、来院时间。要求:1) 添加删除功效:能依据
4、学院人事变动情况,添加删除统计;2) 查询 功效:能依据编号和姓名进行查询;3) 编辑功效:依据查询对对应统计进行 修改,并存放;4) 统计功效:能依据多个参数进行人员统计(在职人数、党 员人数、女工人数、高学历高职称人数);5) 保留功效:能对输入数据进行 对应存放,要求重载插入和提取符以完成数据保留和打开。6) 人员编号在 生成人员信息时同时生成,每输入一个人员信息编号次序加1。 C+系统作为信息管理系统一个分支,已逐步成为高校信息化建设关键组成部分,为学校管理全校院系教职员提供了一个功效强大、安装布署方便、使用成本低、操作简捷信息查询管理系统。 2.2建立对象模型School s;/定义
5、对象person *next=myfirst;/定义对象指针并赋初值2.3 建立功效模型void printf(int r)/获取信息void printf1(person *ahead)/输出信息void pri()void add()/添加新信息bool removedatnum( )/删除信息bool find1()/按编号查找bool find2( )/按姓名查找bool upperson()/修改信息void save()/保留文件到文件中2.4系统类层次及结构图定义两个类,一个person类,包含在职人员(行政人员、老师、通常职员)、退休人员、返聘人员和临时工。职员信息包含编号、姓
6、名、性别、年纪、职务、职称、政治面貌、最高学历、来院时间。定义一个school类,在里面实现数据添加、删除、修改、查找、显示和退出。类personvoid getag(int as)int getage()char *getname()person *getnext()int getnum()char *getparty()char *getpos()char *getsex()char *getstudy()char *gettechpos()char *gettime()char *gettype()void setnext(person *next)类School void add()/
7、添加新信息bool find1()/按编号查找bool find2( )/按姓名查找void load()void pri()void printf(int r)/获取信息void printf1(person *ahead)/输出信息bool removedatnum( )/删除信息void save()/保留文件到文件中School()/无参结构函数School()/析构函数,删除各指针!bool upperson()/修改信息第三章概要设计3.1系统设计程序设计基础目标是用算法对问题原始数据进行处理,从而取得所期望效果。但这仅仅是程序设计基础要求。要全方面提升程序质量,提升编程效率,使程
8、序含有良好可读性、可靠性、可维护性和良好结构,编制出好程序来,应该是每位程序设计工作者追求目标。而要做到这一点,就必需掌握正确程序设计方法和技术。而C+语言是一个结构化语言。它层次清楚,便于按模块化方法组织程序,易于调试和维护。所以采取结构化程序设计方法,对管理系统进行自顶向下,逐步细化,模块化设计.3.1.1系统分析高校人事管理系统所需要完成功效关键有:人事信息输入,包含:编号、姓名、性别、年纪、职务、职称、政治面貌、最高学历、任职时间、来院时间等。 人事信息查询,包含:编号、姓名、性别、年纪、职务、职称、政治面貌、最高学历、任职时间、来院时间等。 人事信息修改。添加删除功效:能依据学院变动
9、情况,添加删除统计;保留功效:能对输入数据进行对应存放,要求重载插入和提取符以完成数据保留和打开。3.1.2系统设计思想系统开发总体任务是实现学生信息关系系统化,规范化和自动化。 3.2系统类层次及结构图定义两个类,一个person类,包含在职人员(行政人员、老师、通常职员)、退休人员、返聘人员和临时工。职员信息包含编号、姓名、性别、年纪、职务、职称、政治面貌、最高学历、来院时间。定义一个school类,在里面实现数据添加、删除、修改、查找、显示和退出。类personvoid getag(int as)int getage()char *getname()person *getnext()in
10、t getnum()char *getparty()char *getpos()char *getsex()char *getstudy()char *gettechpos()char *gettime()char *gettype()void setnext(person *next)类School void add()/添加新信息bool find1()/按编号查找bool find2( )/按姓名查找void load()void pri()void printf(int r)/获取信息void printf1(person *ahead)/输出信息bool removedatnum(
11、)/删除信息void save()/保留文件到文件中School()/无参结构函数School()/析构函数,删除各指针!bool upperson()/修改信息系统功效模块图高校人事管理系统添加人员信息修改人员信息退出数据装入查找人员信息删除人员信息显示人员信息第四章 具体设计4.1类和对象设计类class personSchool s;/定义对象类class School4.1.1类属性具体设计类class personclass personprivate: int no; /编号 char type20; /职员类型 char name20; /姓名 char sex10; /性别 i
12、nt age; /年纪 char time20; /来院时间 char pos20; /职务 char techpos20; /职称 char party20; /党派 char study30; /最高学历 person *mynext; /指针语public: person(int nnum,char ntype,char nname,char nsex,int nage,char ntime,char npos,char ntechpos,char nparty,char nstudy) no=nnum; strcpy(type,ntype);/将ntype值复制给type strcpy
13、(name,nname); strcpy(sex,nsex); age=nage; strcpy(time,ntime); strcpy(pos,npos); strcpy(techpos,ntechpos); strcpy(party,nparty); strcpy(study,nstudy); mynext=NULL; School s;/定义对象类class Schoolprivate: person *myfirst; int firstnum;public: School()/无参结构函数 myfirst=NULL;/将指针置空 4.1.2类行为具体设计类class personvo
14、id getag(int as)int getage()char *getname()person *getnext()int getnum()char *getparty()char *getpos()char *getsex()char *getstudy()char *gettechpos()char *gettime()char *gettype()void setnext(person *next)类School void add()/添加新信息bool find1()/按编号查找bool find2( )/按姓名查找void load()void pri()void printf(
15、int r)/获取信息void printf1(person *ahead)/输出信息bool removedatnum( )/删除信息void save()/保留文件到文件中School()/无参结构函数School()/析构函数,删除各指针!bool upperson()/修改信息4.2类具体继承关系personSchool第五章 编码#include#include#include#includeclass personprivate: int no; /编号 char type20; /职员类型 char name20; /姓名 char sex10; /性别 int age; /年纪
16、 char time20; /来院时间 char pos20; /职务 char techpos20; /职称 char party20; /党派 char study30; /最高学历 person *mynext; /指针语public: person(int nnum,char ntype,char nname,char nsex,int nage,char ntime,char npos,char ntechpos,char nparty,char nstudy) no=nnum; strcpy(type,ntype);/将ntype值复制给type strcpy(name,nname
17、); strcpy(sex,nsex); age=nage; strcpy(time,ntime); strcpy(pos,npos); strcpy(techpos,ntechpos); strcpy(party,nparty); strcpy(study,nstudy); mynext=NULL; person(int nnum,char ntype,char nname,char nsex,int nage,char ntime, char npos,char ntechpos,char nparty,char nstudy,person *next) /*某高校,关键人员有:在职人员(
18、行政人员、老师、通常职员)、退休人员、返聘人员和临时工。 现在,需要存放这些人员人事档案信息:编号、姓名、性别、年纪、职务、职称、政治面貌、最高学历、来院时间。*/ no=nnum; strcpy(type,ntype); strcpy(name,nname); strcpy(sex,nsex); age=nage; strcpy(time,ntime); strcpy(pos,npos); strcpy(techpos,ntechpos); strcpy(party,nparty); strcpy(study,nstudy); mynext=next; void setnext(person
19、 *next) mynext=next; person *getnext() return mynext; int getnum() return no; char *getname() return name; char *getsex() return sex; char *getpos() return pos; char *gettechpos() return techpos; char *gettime() return time; char *getparty() return party; char *getstudy() return study; int getage()
20、return age; void getag(int as) age=as; char *gettype() return type; ;class Schoolprivate: person *myfirst; int firstnum;public: School()/无参结构函数 myfirst=NULL;/将指针置空 School(int nnu,char ntyp,char nnam,char nse,int nag,char ntim,char npo,char ntechpo,char npart,char nstud)/有参结构函数 myfirst=new person(nnu
21、,ntyp,nnam,nse,nag,ntim,npo,ntechpo,npart,nstud); /在信息最终添加新信息 void insertatlast(int nnum,char ntype,char nname,char nsex,int nage,char ntime,char npos,char ntechpos,char nparty,char nstudy) person *next=myfirst;/定义对象指针并付初值 if(next=NULL) myfirst=new person(nnum,ntype,nname,nsex,nage,ntime,npos,ntechp
22、os,nparty,nstudy); else while(next-getnext()!=NULL) next=next-getnext(); next-setnext(new person(nnum,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy,next-getnext(); void printf(int r)/获取信息 int nage; char ntype20,nname20,nsex20,ntime20,npos20,ntechpos20,nparty20,nstudy20; cout请输入编号为r组员信息endl
23、; cout输入职员分类码行政人员,老师,通常职员,退休人员,返聘人员,临时工:ntype; cout输入姓名:nname; cout输入性别:nsex; cout输入年纪:nage; cout输入来院时间:ntime; cout输入职务无,科级,处级,地级:npos; cout输入职称无,初级,中级,高级:ntechpos; cout输入加入党派群众,中共党员,民主党派:nparty; cout输入学历小学,初中,高中,大专,大学,硕士,博士:nstudy; insertatlast(r,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nst
24、udy); void printf1(person *ahead)/输出信息 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;cout政治面貌
25、:setiosflags(ios:left)setw(22)getparty()来院时间:gettime()endl; void printf() person *ahead=myfirst; cout编号 姓名 性别 年纪 职员类型 职务 职称 学历 政治面貌 来院时间 n; while(ahead!=NULL) coutsetiosflags(ios:left)setw(4)getnum()setiosflags(ios:left)setw(6)getname() coutsetiosflags(ios:left)setw(5)getsex()setiosflags(ios:left)se
26、tw(4)getage() coutsetiosflags(ios:left)setw(10)gettype()setiosflags(ios:left)setw(6)getpos() coutsetiosflags(ios:left)setw(6)gettechpos()setiosflags(ios:left)setw(6)getstudy()coutsetiosflags(ios:left)setw(9)getparty()setiosflags(ios:left)setw(12)gettime()getnext(); void add()/添加新信息 int i,a,b; person
27、 *p1=myfirst; if(p1=NULL) couti; printf(i); Else if(p1-getnext()=NULL)/假如p1后继指针为空,则实施“printf(a)” a=p1-getnum()+1; printf(a); Else while(p1-getnext()!=NULL)/p1后继指针不为空,则实施“printf(b)” p1=p1-getnext(); b=p1-getnum()+1; printf(b); bool removedatnum( )/删除信息 int bh; person *ahead=myfirst; person *follow=ah
28、ead; coutbh; if(ahead=NULL) 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编号为bhgetnext(); cout要删除组员不存在!endl; return false;bool find1()/按编号查找 int id; person *ahead=myfirst; per
29、son *follow=ahead; cout请输入编号:id; cout*endl; if(ahead=NULL) cout无人员信息!getnum()=id) printf1(ahead); return true; else follow=ahead; ahead=ahead-getnext(); cout无此人信息:endl; return false; bool find2( )/按姓名查找 char nm20; person *ahead=myfirst; person *follow=ahead; coutnm; cout*endl; if(ahead=NULL) cout无人员
30、信息getname(),nm)=0) printf1(ahead); return true; else follow=ahead; ahead=ahead-getnext(); cout查无此人:endl; return false; bool upperson()/修改信息 int iid; person *ahead=myfirst; person *follow=ahead; coutiid; if(ahead=NULL) cout无人员信息getnum()=iid) printf1(ahead); int nu=-1; for(int i=1;nu!=0;i+) int ml; in
31、t mll; char ty30; cout请选择要修改内容:endl; cout 1:姓名 2:性别 3:年纪 4:职员类型 5:职务endl; cout 6:职称 7:学历 8:政治面貌 9:来院时间 endl; coutml; switch(ml) case 1: coutty; strcpy(follow-getname(),ty); ; break; case 2: coutty; strcpy(ahead-getsex(),ty); break; case 3: coutmll; ahead-getag(mll); ; break; case 4: coutty; strcpy(a
32、head-gettype(),ty); ; break; case 5: coutty; strcpy(ahead-getpos(),ty);break;case 6:coutty;strcpy(ahead-gettechpos(),ty);break;case 7:coutty;strcpy(ahead-getstudy(),ty);break;case 8:coutty;strcpy(ahead-getparty(),ty);break;case 9:coutty;strcpy(ahead-gettime(),ty);break; return true;Elseahead=ahead-g
33、etnext();follow=ahead;cout没有此人nnumntypennamensexnagentimenposntechposnpartynstudy; insertatlast(nnum,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy);fperson.close();coutn人员和相关数据已经装入.n;void save()/保留文件到文件中ofstream fperson;fperson.open(person.txt,ios:out);person *p=myfirst;while(p)fpersongetn
34、um()tgettype()tgetname()tgetsex()tgetage()tgettime()tgetpos()tgettechpos()tgetparty()tgetstudy();fpersongetnext();fperson.close();cout保留数据已经完成getnext(); delete temp; myfirst=NULL;void main()School s;/定义对象int c;docoutendl;cout 高校人事管理系统endl;coutendl;cout 1-增加人员资料endl;cout 2-删除人员信息endl;cout 3-修改人员信息endl;cout 4-查询人员信息endl;cout 5-数据存盘endl;cout 6-数据装入endl;cout 7-显示全部信息endl;cout 8-退出 请选择(1-8):endl;coutc;switch(c)case 1:s.add(); break;case 2:s.removedatnum(); break;case 3:s.upperson(); break;case 4:int nm;coutnm;if(nm=1)