高校人事管理系统报告书.docx
《高校人事管理系统报告书.docx》由会员分享,可在线阅读,更多相关《高校人事管理系统报告书.docx(17页珍藏版)》请在冰豆网上搜索。
高校人事管理系统报告书
xx大学
《软件设计基础-C++》
课程设计报告
设计名称:
高校人事管理系统
姓名:
学号:
专业班级:
学院:
设计时间:
设计地点:
成绩:
指导教师评语:
指导教师签字:
年月日
目录
1.课程设计目的3
2.课程设计任务与要求3
3.课程设计说明书4
4.课程设计成果7
5.程序调试过程14
6.设计问题的不足和改进方案15
7.课程设计心得16
8.参考文献17
1.课程设计目的
《软件设计基础-C++》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。
目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C++这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。
2.课程设计任务与要求:
要求:
本次课程设计利用《软件设计基础-C++》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
要求:
1、对系统进行功能需求分析
2、设计合理的数据结构和系统框架
3、编程简练,程序功能齐全,能正确运行
4、说明书、流程图要清楚
5、课题完成后必须按要求提交课程设计报告
任务:
某高校,主要人员有:
在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。
现在,需要存储这些人员的人事档案信息:
编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。
(1) 添加删除功能:
能根据高校人事的变动情况,添加删除记录;
(2) 查询功能:
能根据编号和姓名进行查询;
(3) 编辑功能(高级):
根据查询对相应的记录进行修改,并存储;
(4) 统计功能:
能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历人数);
(5) 保存功能:
能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。
(6) 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。
3.课程设计说明书
概要设计
模块说明:
高校人事管理系统的设计程序共包括七个模块,分别是添加并保存模块、删除模块、修改模块、查询模块、统计模块、显示模块、退出系统模块。
我所做的是前三个模块,通过程序中数据类型和函数用类来实现,人员类person,定义了相应的构造函数和构造函数的重载以及一些成员函数。
此外还利用switch语句、if函数、while循环等。
模块结构图:
详细设计
总体流程图:
各功能模块流程图:
(1)添加人员信息功能:
能根据人事的变动情况,添加记录;
(2)删除人员信息功能:
能根据人事的变动情况,删除记录;
(3)编辑功能:
根据查询对相应的记录进行修改,并存储;
4.课程设计成果
1.源程序代码
#include
#include//文件流,数据流输入/输出
#include
#include//参数化输入/输出是setw()函数的头文件
usingnamespacestd;
intk;
classperson//人员基本信息//
{
//人员类似有数据成员
private:
charnum[10];//序号//
chartype[20];//编号//
charname[20];//姓名//
charsex[10];//性别//
charage[10];//年龄//
charzhiwu[20];//职务//
charzhichen[20];//职称//
charzzmm[20];//政治面貌//
charzgxl[20];//最高学历//
charrzsj[20];//任职时间//
charlysj[30];//来院时间//
staticintbianhao;
public:
//构造函数一
voidsetperson(char*type1,char*name1,char*sex1,char*age1,char*zhiwu1,
char*zhichen1,char*zzmm1,char*zgxl1,char*rzsj1,char*lysj1);
staticint&getbianhao(){returnbianhao;}
char*gettype(){returntype;}
char*getname(){returnname;}
char*getsex(){returnsex;}
char*getage(){returnage;}
char*getzhiwu(){returnzhiwu;}
char*getzhichen(){returnzhichen;}
char*getzzmm(){returnzzmm;}
char*getzgxl(){returnzgxl;}
char*getrzsj(){returnrzsj;}
char*getlysj(){returnlysj;}
char*getnum(){returnnum;}
voidtjry();
voidfind();//查找匹配信息//
voidoutput();//输出//
voidshancu();//删除//
voidxiugai();//修改//
voidtongji();//统计//
};personp[100];
personpp[100];
intk1;
intperson:
:
bianhao=0;
//构造函数二
voidperson:
:
setperson(char*type1,char*name1,char*sex1,char*age1,char*zhiwu1,
char*zhichen1,char*zzmm1,char*zgxl1,char*rzsj1,char*lysj1)
/*某高校,主要人员有:
在职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。
现在,需要存储这些人员的人事档案信息:
编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。
{
intstaticj=1;
strcpy(type,type1);//字符串的拷贝
strcpy(name,name1);
strcpy(sex,sex1);
strcpy(age,age1);
strcpy(zhiwu,zhiwu1);
strcpy(zhichen,zhichen1);
strcpy(zzmm,zzmm1);
strcpy(zgxl,zgxl1);
strcpy(rzsj,rzsj1);
strcpy(lysj,lysj1);
bianhao++;
ofstreamfile("添加人员.txt",ios_base:
:
app);
file<
file<
file<
file<
file<
file<
file<
file<
file<
file<
file<
j++;
file.close();
}
voidperson:
:
shancu()//删除//
{
intz;
ifstreamfilem("添加人员.txt",ios_base:
:
in);
intk=1;
while(!
filem.eof())
{
filem>>pp[k].getnum();
filem>>pp[k].gettype();
filem>>pp[k].getname();
filem>>pp[k].getsex();
filem>>pp[k].getage();
filem>>pp[k].getzhiwu();
filem>>pp[k].getzhichen();
filem>>pp[k].getzzmm();
filem>>pp[k].getzgxl();
filem>>pp[k].getrzsj();
filem>>pp[k].getlysj();
k++;
}
filem.close();
cout<<"请输入要被删除信息的人的编号:
"<cin>>z;
while(z<1||z>bianhao)
{
cout<<"没有找到你要删除的人,请重新输入:
"<>z;}
for(k=1;k<=bianhao;k++)
{
if(z==k)
continue;
ofstreamfile2("添加人员.txt",ios_base:
:
trunc);
file2<file2<file2<file2<file2<file2<file2<file2<file2<file2<file2<file2.close();
}
cout<<"删除记录完毕"<}
voidperson:
:
xiugai()//修改信息//
{
intk=1;
ifstreamfilem("添加人员.txt",ios_base:
:
in);
while(!
filem.eof())
{
filem>>pp[k].getnum();
filem>>pp[k].gettype();
filem>>pp[k].getname();
filem>>pp[k].getsex();
filem>>pp[k].getage();
filem>>pp[k].getzhiwu();
filem>>pp[k].getzhichen();
filem>>pp[k].getzzmm();
filem>>pp[k].getzgxl();
filem>>pp[k].getrzsj();
filem>>pp[k].getlysj();
k++;
}
filem.close();
cout<<"请输入要修改的人的编号:
"<intx,y;
cin>>x;
cout<<"请输入编号为"<"<cout<<"1:
编号-2:
人员类型-3:
姓名-4:
性别-5:
年龄-6:
职务-7:
职称-8:
政治面貌-9:
最高学历-10:
任职时间-11:
来院时间"<cin>>y;
switch(y)
{
case1:
{cout<<"请输入新的编号";cin>>pp[x].getnum();}
break;
case2:
{cout<<"请输入新的人员类型";cin>>pp[x].gettype();}
break;
case3:
{cout<<"请输入新的姓名";cin>>pp[x].getname();}
break;
case4:
{cout<<"请输入新的性别";cin>>pp[x].getsex();}
break;
case5:
{cout<<"请输入新的年龄";cin>>pp[x].getage();}
break;
case6:
{cout<<"请输入新的职务";cin>>pp[x].getzhiwu();}
break;
case7:
{cout<<"请输入新的职称";cin>>pp[x].getzhichen();}
break;
case8:
{cout<<"请输入新的政治面貌";cin>>pp[x].getzzmm();}
break;
case9:
{cout<<"请输入新的最高学历";cin>>pp[x].getzgxl();}
break;
case10:
{cout<<"请输入新的任职时间";cin>>pp[x].getrzsj();}
break;
case11:
{cout<<"请输入新的来院时间";cin>>pp[x].getlysj();}
break;
}
ofstreamfile1("添加人员.txt",ios_base:
:
trunc);
for(k=1;k<=bianhao;k++)
{
file1<file1<file1<file1<file1<file1<file1<file1<file1<file1<file1<}
file1.close();
cout<<"修改并保存完毕"<}
2.运行结果
5.程序调试过程
将已经编好的程序放在VC++6.0的环境中进行调试与测试,发现程序中的错误,在提示的情况下进行改正。
检查了是否缺少了分号(行结束符),if、else是否匹配、switch语句用法是否对等。
注意,宏定义、包含文件定义结束不需分号,而类定义结束需要分号。
注意声明函数时,各函数之间的调用关系。
变量、函数未定义、重定义:
检查 了变量大小写、是否包含了相应的头文件(包括你自己的和MFC、Windows的)。
将程序编写完成后,进行编译,出现了errorC2143:
syntaxerror:
missing';'before'',errorC2043:
illegalbreak,errorC2046:
illegalcase,rrorC2018:
unknowncharacter'0xa3',errorC2146:
syntaxerror:
missing';'beforeidentifier'i',rrorC2143:
syntaxerror:
missing';'before')'等错误,经过不断的调试,我们改正了所有的错误,编译通过了,但连接不正确,还是有警告,我们又进行了改正,将所有错误改正。
遇到了一些没有学过的知识点,在老师的指导下不断修改,有时去图书馆查询一些问题,在网上进行查询,最终得到了此程序。
6.设计问题的不足和改进方案
优点:
使用结构使程序的输入输出更简洁
使用函数可以使程序更简便;
不足:
输入的内容比较多;
用文件储存信息不能用结构输入;
读取文件中的信息也不能用结构读取;
程序比较大,各部分之间的关系繁琐;
改进方案:
可以将每个模块弄成头文件的部分,是主程序变得简便明了;
还可以利用MFC将窗口变得美观。
7.课程设计心得
1.做这次课程设计明显的看出自己的不足,以及自己所学知识的有限,遇到的最大问题就是拿到这个题目无从下手,后来经过老师的教导和自己查找有关资料得以解决。
问题一:
对课程设计的题目的题意不是很清楚。
后来通过和伙伴共同探讨,知道了题目大概要用到什么知识点。
问题二:
对于课程设计中有关清屏的函数不是很清楚。
通过网络资源,找到了解决方案;
问题三:
问题最大的就是链表的操作不是很熟。
通过看书和参考资料对链表的知识进行了回顾,与进一步掌握。
2.我觉得可以用类中的派生类做比较好,那样的话,程序的条理比较清晰,并且容易理解。
3.可以扩充的功能可以加上计算员工工资的结算(如按照薪水和奖金以及罚金结算工资),还有可以加上运用运算符重载的功能实现。
我希望我做的课程设计有个美好的界面以及很方面地为广大消费者服务。
可以的话,加上些消遣的小程序也是可以的,同时提供些学习的程序方便学习英语以及其他。
C++是比C语言更高级的一门语言,我们也可以通过学习C语言来学习C++,这样就可以减少学习中遇到的困难。
想要学好C++,让我们一起努力吧。
8.参考文献
[1]谭浩强著.C语言程序设计.清华大学出版社2008
[2]关治,陈景俩。
数值计算。
北京:
清华大学出版社,1993
[3]刘振安。
面向对象程序设计C++版。
北京:
机械工业出版社,2006
[4]彭佩。
面向对象程序设计教程。
北京:
高等教育出版社,2001
[5]郑莉,董渊,张瑞丰。
C++语言程序设计(第三版)。
北京:
清华大学出版社,2007