大学人事管理系统.docx
《大学人事管理系统.docx》由会员分享,可在线阅读,更多相关《大学人事管理系统.docx(35页珍藏版)》请在冰豆网上搜索。
大学人事管理系统
河南城建学院
HenanUniversityofUrbanConstruction
《面向对象语言程序设计》
课程设计报告
学号:
姓名:
专业:
计算机科学与技术
题目:
高校人事管理系统
指导老师:
设计时间:
第十七周
计算机科学与工程学院
2014年6月
目录
第一章需求分析2
第二章总体设计3
2.1系统功能模块3
2.2类之间的关系4
第三章各功能模块实现5
3.1模块实现及代码5
3.2运行结果12
第四章系统调试15
第五章总结与体会15
参考文献17
附录18
第一章需求分析
高校人事管理,高校在有职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。
现在,需要存储这些人员的人事档案信息:
编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。
要求:
1)添加删除功能:
能根据学院人事的变动情况,添加删除记录;
2)查询功能:
能根据编号和姓名进行查询;
3)编辑功能(高级):
根据查询对相应的记录进行修改,并存储;
4)统计功能:
能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);
5)保存功能:
能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。
6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
第二章总体设计
2.1系统功能模块
系统流程图
12
34
56
87
系统功能分析
执行程序后,按界面的显示,选择1—8种操作。
选1,增加人员资料,资料包括编号、职工类别、姓名、性别、年龄、来院时间、职务、职称、党派、学历。
选2,删除人员信息。
选3,修改人员信息,可以选择要修改的内容。
选4,查询人员信息,可按编号或姓名查询。
选5,数据存盘。
选6,数据装入。
选7,显示所有信息。
选8,退出。
系统功能模块划分与设计
2.2类之间的关系
定义了8个类,分别为人员类(personnel类),临时工类(casuallaborer类),进入时间类(cometime类),在职人员类(incumbency类),退休时间类(retiretime类),退休人员类(retiree类),返聘时间类(retime类),返聘人员类(returnee类)等。
同时又定义一个school类,在里面实现数据的添加、删除、修改、查找、显示和退出。
*
第三章各功能模块实现
3.1模块实现及代码
添加功能
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();
while(ahead!
=NULL)
{
if(ahead->getnum()==bh)
{
follow->setnext(ahead->getnext());
cout<<"编号为"<deleteahead;
returntrue;
}
follow=ahead;
ahead=ahead->getnext();
}
cout<<"要删除的成员不存在!
"<returnfalse;
}
}
修改功能
boolupperson()
{
intiid;
person*ahead=myfirst;
person*follow=ahead;
cout<<"请输入要修改人员的编号:
";
cin>>iid;
if(ahead==NULL)
{
cout<<"无人员信息"<returnfalse;
}
else
{
while(ahead!
=NULL)
{
if(ahead->getnum()==iid)
{
printf1(ahead);
intnu=-1;
for(inti=1;nu!
=0;i++)
{
intml;
intmll;
charty[30];
cout<<"请选择要修改的内容:
"<cout<<"1:
姓名2:
性别3:
年龄4:
职工类型5:
职务"<cout<<"6:
职称7:
学历8:
政治面貌9:
来院时间"<cout<<"选择(1-10):
";
cin>>ml;
switch(ml)
{
case1:
{
cout<<"请输入姓名:
";
cin>>ty;
strcpy(follow->getname(),ty);
};break;
case2:
{
cout<<"请输入性别:
";
cin>>ty;
strcpy(ahead->getsex(),ty);
};break;
case3:
{
cout<<"请输入年龄:
";
cin>>mll;
ahead->getag(mll);
};break;
case4:
{
cout<<"请输入职工类型:
";
cin>>ty;
strcpy(ahead->gettype(),ty);
};break;
case5:
{
cout<<"请输入职务:
";
cin>>ty;
strcpy(ahead->getpos(),ty);
};break;
case6:
{
cout<<"请输入职称:
";
cin>>ty;
strcpy(ahead->gettechpos(),ty);
};break;
case7:
{
cout<<"请输入学历:
";
cin>>ty;
strcpy(ahead->getstudy(),ty);
};break;
case8:
{
cout<<"请输入政治面貌:
";
cin>>ty;
strcpy(ahead->getparty(),ty);
};break;
case9:
{
cout<<"请输入来院时间:
";
cin>>ty;
strcpy(ahead->gettime(),ty);
};break;
}
returntrue;
}
}
else
{
ahead=ahead->getnext();
follow=ahead;
}
}
cout<<"没有此人"<returnfalse;
}
}
查询功能
1.按编号查询
boolfind1()
{
intid;
person*ahead=myfirst;
person*follow=ahead;
cout<<"请输入编号:
"<cin>>id;
cout<<"**********************************"<if(ahead==NULL)
{
cout<<"无人员信息!
"<returnfalse;
}
else
{
while(ahead!
=NULL)
{
if(ahead->getnum()==id)
{
printf1(ahead);
returntrue;
}
else
{
follow=ahead;
ahead=ahead->getnext();
}
}
cout<<"无此人信息:
"<returnfalse;
}
}
2.按姓名查询
boolfind2()
{
charnm[20];
person*ahead=myfirst;
person*follow=ahead;
cout<<"输入姓名";
cin>>nm;
cout<<"**********************************"<if(ahead==NULL)
{
cout<<"无人员信息"<returnfalse;
}
else
{
while(ahead!
=NULL)
{
if(strcmp(ahead->getname(),nm)==0)
{
printf1(ahead);
returntrue;
}
else
{
follow=ahead;
ah