面向对象课程设计高校人事管理系统doc 30页.docx
《面向对象课程设计高校人事管理系统doc 30页.docx》由会员分享,可在线阅读,更多相关《面向对象课程设计高校人事管理系统doc 30页.docx(28页珍藏版)》请在冰豆网上搜索。
![面向对象课程设计高校人事管理系统doc 30页.docx](https://file1.bdocx.com/fileroot1/2022-11/25/e66e5031-f164-410e-a351-f5667e526769/e66e5031-f164-410e-a351-f5667e5267691.gif)
面向对象课程设计高校人事管理系统doc30页
面向对象课程设计高校人事管理系统(doc30页)
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2008年秋季学期
面向对象课程设计
题目:
高校人事管理系统
专业班级:
06级计算机一班
姓名:
肖雷雷
学号:
06250131
指导教师:
刘嘉
成绩:
______________
编号
摘要
高校人事管理系统是一个信息管理系统,在开发和设计过程中要以高校人事的管理业务为背景。
开发出一套“高校人事管理系统”软件。
此程序包括:
建立链表并显示,添加删除功能(能根据学院的变动情况,添加删除记录),查询功能(能根据编号和姓名进行查询),编辑功能(根据查询对相应的记录进行修改,并存储),统计功能(能根据多种参数进行人员的统计),保存功能(能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开)。
通过链表存储结构实现数据的输入,实现各子程序过程的演示,对异常输入信息报错。
关键字:
链表;高校人事管理系统;查找;数据装入
第一章问题描述
高校人事管理系统包含查找、插入、删除、修改、输出功能。
高校人事管理系统基本情况包括的数据项有:
姓名、性别、年龄、职务、职称、政治面貌、最高学历、来院时间
使用链表实现数据的录入、查找、修改、插入、追加、删除、统计、输出等功能;建立一个测试的数据表,至少要有20个测试数据,算法对于这些合法的输入数据都能产生满足规格说明要求的结果;算法对于精心选择的典型、苛刻而带有刁难性的几组输入数据能够得出满足规格说明要求的结果;对算法实现过程中的异常情况能给出有效信息;
第二章需求分析
2.1需求陈述
对题目的需求分析得出:
高校人事管理系统对人事档案进行管理。
人事档案信息包括:
编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。
要求:
1)添加删除功能:
能根据学院人事的变动情况,添加删除记录;2)查询功能:
能根据编号和姓名进行查询;3)编辑功能:
根据查询对相应的记录进行修改,并存储;4)统计功能:
能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);5)保存功能:
能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。
6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
C++系统作为信息管理系统的一个分支,已逐渐成为高校信息化建设的重要组成部分,为学校管理全校的院系的教职工提供了一个功能强大、安装部署方便、使用成本低、操作简捷的信息查询管理系统。
2.2建立对象模型
Schools;//定义对象
person*next=myfirst;//定义对象指针并赋初值
2.3建立功能模型
voidprintf(intr)//获取信息
voidprintf1(person*ahead)//输出信息
voidpri()
voidadd()//添加新信息
boolremovedatnum()//删除信息
boolfind1()//按编号查找
boolfind2()//按姓名查找
boolupperson()//修改信息
voidsave()//保存文件到文件中
2.4系统类层次及结构图
定义两个类,一个person类,包含在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。
员工信息包括编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、来院时间。
定义一个school类,在里面实现数据的添加、删除、修改、查找、显示和退出。
类person
voidgetag(intas)
intgetage()
char*getname()
person*getnext()
intgetnum()
char*getparty()
char*getpos()
char*getsex()
char*getstudy()
char*gettechpos()
char*gettime()
char*gettype()
voidsetnext(person*next)
类School
voidadd()//添加新信息
boolfind1()//按编号查找
boolfind2()//按姓名查找
voidload()
voidpri()
voidprintf(intr)//获取信息
voidprintf1(person*ahead)//输出信息
boolremovedatnum()//删除信息
voidsave()//保存文件到文件中
School()//无参构造函数
~School()//析构函数,删除各指针!
boolupperson()//修改信息
第三章概要设计
3.1系统设计
程序设计的基本目标是用算法对问题的原始数据进行处理,从而获得所期望的效果。
但这仅仅是程序设计的基本要求。
要全面提高程序的质量,提高编程效率,使程序具有良好的可读性、可靠性、可维护性以及良好的结构,编制出好的程序来,应当是每位程序设计工作者追求的目标。
而要做到这一点,就必须掌握正确的程序设计方法和技术。
而C++语言是一种结构化语言。
它层次清晰,便于按模块化方式组织程序,易于调试和维护。
所以采用结构化程序设计方法,对管理系统进行自顶向下,逐步细化,模块化设计.
3.1.1系统分析
高校人事管理系统所需要完成的功能主要有:
人事信息的输入,包括:
编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间等。
人事信息的查询,包括:
编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间等。
人事信息的修改。
添加删除功能:
能根据学院的变动情况,添加删除记录;
保存功能:
能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。
3.1.2系统设计思想
系统开发的总体任务是实现学生信息关系的系统化,规范化和自动化。
3.2系统类层次及结构图
定义两个类,一个person类,包含在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。
员工信息包括编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、来院时间。
定义一个school类,在里面实现数据的添加、删除、修改、查找、显示和退出。
类person
voidgetag(intas)
intgetage()
char*getname()
person*getnext()
intgetnum()
char*getparty()
char*getpos()
char*getsex()
char*getstudy()
char*gettechpos()
char*gettime()
char*gettype()
voidsetnext(person*next)
类School
voidadd()//添加新信息
boolfind1()//按编号查找
boolfind2()//按姓名查找
voidload()
voidpri()
voidprintf(intr)//获取信息
voidprintf1(person*ahead)//输出信息
boolremovedatnum()//删除信息
voidsave()//保存文件到文件中
School()//无参构造函数
~School()//析构函数,删除各指针!
boolupperson()//修改信息
系统功能模块图
第四章详细设计
4.1类与对象的设计
类classperson
Schools;//定义对象
类classSchool
4.1.1类属性的详细设计
类classperson
classperson
{
private:
intno;//编号
chartype[20];//职工类型
charname[20];//姓名
charsex[10];//性别
intage;//年龄
chartime[20];//来院时间
charpos[20];//职务
chartechpos[20];//职称
charparty[20];//党派
charstudy[30];//最高学历
person*mynext;//指针语
public:
person(intnnum,charntype[],charnname[],charnsex[],intnage,charntime[],charnpos[],charntechpos[],charnparty[],charnstudy[])
{
no=nnum;
strcpy(type,ntype);//将ntype的值复制给type
strcpy(name,nname);
strcpy(sex,nsex);
age=nage;
strcpy(time,ntime);
strcpy(pos,npos);
strcpy(techpos,ntechpos);
strcpy(party,nparty);
strcpy(study,nstudy);
mynext=NULL;
}
Schools;//定义对象
类classSchool
{
private:
person*myfirst;
intfirstnum;
public:
School()//无参构造函数
{
myfirst=NULL;//将指针置空
}
4.1.2类行为的详细设计
类classperson
voidgetag(intas)
intgetage()
char*getname()
person*getnext()
intgetnum()
char*getparty()
char*getpos()
char*getsex()
char*getstudy()
char*gettechpos()
char*gettime()
char*gettype()
voidsetnext(person*next)
类School
voidadd()//添加新信息
boolfind1()//按编号查找
boolfind2()//按姓名查找
voidload()
voidpri()
voidprintf(intr)//获取信息
voidprintf1(person*ahead)//输出信息
boolremovedatnum()//删除信息
voidsave()//保存文件到文件中
School()//无参构造函数
~School()//析构函数,删除各指针!
boolupperson()//修改信息
4.2类的详细继承关系
第五章编码
#include
#include
#include
#include
classperson
{
private:
intno;//编号
chartype[20];//职工类型
charname[20];//姓名
charsex[10];//性别
intage;//年龄
chartime[20];//来院时间
charpos[20];//职务
chartechpos[20];//职称
charparty[20];//党派
charstudy[30];//最高学历
person*mynext;//指针语
public:
person(intnnum,charntype[],charnname[],charnsex[],intnage,charntime[],charnpos[],charntechpos[],charnparty[],charnstudy[])
{
no=nnum;
strcpy(type,ntype);//将ntype的值复制给type
strcpy(name,nname);
strcpy(sex,nsex);
age=nage;
strcpy(time,ntime);
strcpy(pos,npos);
strcpy(techpos,ntechpos);
strcpy(party,nparty);
strcpy(study,nstudy);
mynext=NULL;
}
person(intnnum,charntype[],charnname[],charnsex[],intnage,charntime[],
charnpos[],charntechpos[],charnparty[],charnstudy[],person*next)
/*某高校,主要人员有:
在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。
现在,需要存储这些人员的人事档案信息:
编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、来院时间。
*/
{
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;
}
voidsetnext(person*next)
{
mynext=next;
}
person*getnext()
{
returnmynext;
}
intgetnum()
{
returnno;
}
char*getname()
{
returnname;
}
char*getsex()
{
returnsex;
}
char*getpos()
{
returnpos;
}
char*gettechpos()
{
returntechpos;
}
char*gettime()
{
returntime;
}
char*getparty()
{
returnparty;
}
char*getstudy()
{
returnstudy;
}
intgetage()
{
returnage;
}
voidgetag(intas)
{
age=as;
}
char*gettype()
{
returntype;
}
};
classSchool
{
private:
person*myfirst;
intfirstnum;
public:
School()//无参构造函数
{
myfirst=NULL;//将指针置空
}
School(intnnu,charntyp[],charnnam[],charnse[],intnag,charntim[],charnpo[],charntechpo[],charnpart[],charnstud[])//有参构造函数
{
myfirst=newperson(nnu,ntyp,nnam,nse,nag,ntim,npo,ntechpo,npart,nstud);
}
//在信息最后添加新的信息
voidinsertatlast(intnnum,charntype[],charnname[],charnsex[],intnage,charntime[],charnpos[],charntechpos[],charnparty[],charnstudy[])
{
person*next=myfirst;//定义对象指针并付初值
if(next==NULL)
myfirst=newperson(nnum,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy);
else
{
while(next->getnext()!
=NULL)
next=next->getnext();
next->setnext(newperson(nnum,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy,next->getnext()));
}
}
voidprintf(intr)//获取信息
{
intnage;
charntype[20],nname[20],nsex[20],ntime[20],npos[20],ntechpos[20],nparty[20],nstudy[20];
cout<<"请输入编号为"<cout<<"输入职工分类码[行政人员,教师,一般员工,退休人员,返聘人员,临时工]:
"<cin>>ntype;
cout<<"输入姓名:
"<cin>>nname;
cout<<"输入性别:
"<cin>>nsex;
cout<<"输入年龄:
"<cin>>nage;
cout<<"输入来院时间:
"<cin>>ntime;
cout<<"输入职务[无,科级,处级,地级]:
"<cin>>npos;
cout<<"输入职称[无,初级,中级,高级]:
"<cin>>ntechpos;
cout<<"输入加入党派[群众,中共党员,民主党派]:
"<cin>>nparty;
cout<<"输入学历[小学,初中,高中,大专,大学,硕士,博士]:
"<cin>>nstudy;
insertatlast(r,ntype,nname,nsex,nage,ntime,npos,ntechpos,nparty,nstudy);
}
voidprintf1(person*ahead)//输出信息
{
cout<<"编号:
"<:
left)<getnum()<<"姓名:
"<getname()<cout<<"性别:
"<:
left)<getsex()<<"年龄:
"<getage()<cout<<"职工类型:
"<:
left)<gettype()<<"职务:
"<getpos()<cout<<"职称:
"<:
left)<gettechpos()<<"学历:
"<getstudy()<cout<<政治面貌:
"<:
left)<getparty()<<"来院时间:
"<gettime()<}
voidprintf()
{
person*ahead=myfirst;
cout<<"编号姓名性别年龄职工类型职务职称学历政治面貌来院时间\n";
while(ahead!
=NULL){cout<:
left)<getnum()<:
left)<getname()cout<:
left)<getsex()<:
left)<getage()cout<:
left)<gettype()<:
left)<getpos()cout<:
left)<gettechpos()<:
left)<getstudy()
cout<:
left)<getparty()<:
left)<gettime()<ahead=ahead->getnext();
}
}
voidadd()//添加新信息
{
inti,a,b;
person*p1=myfirst;
if(p1==NULL)
{
cout<<"请输入编号:
";
cin>>i;
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);
}
}
}
boolremovedatnum()//删除信息
{
intbh;
person*ahead=myfirst;
person*follow=ahead;
cout<<"请输入要删除人员的编号:
";
cin>>bh;
if(ahead==NULL)
returnfalse;
else
if(ahead->getnum()==bh)
{
myfirst=myfirst->getnext();
cout<<"编号为"<deleteahead;
returntrue;
}
Else
{
ahead=ahead->getnext();