人事档案管理系统.docx
《人事档案管理系统.docx》由会员分享,可在线阅读,更多相关《人事档案管理系统.docx(25页珍藏版)》请在冰豆网上搜索。
人事档案管理系统
一、设计内容与设计要求
1.设计内容:
人事档案管理系统设计
涉及的知识点:
①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;
②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组
与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:
1)用C语言实现系统;利用结构体数组实现学生信息的数据结构设计;系统
的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,
调用界面和各个功能的操作界面应尽可能清晰美观。
2)建立一个职工人事档案数据库,文件名为rsdak.txt,并从该文件中读取数据;
3)人事档案管理系统应能提供以下功能:
①系统以菜单方式工作
②职工信息显示功能;显示时按表格的形式,且应有表头。
③职工信息追加功能;追加一条新记录,并重新显示;
④职工信息查询功能
a.按职工号查询;b.按姓名查询;c.按基本工资查询;d.按部门查询
要求系统在上述查询方式中至少应有两种以上的查询方式,且能显示符合条件的所的记录。
⑤职工信息的删除;要求可按指定职工号和指定姓名两种定位方式删除记录。
⑥职工信息的修改;要求能按职工号和按姓名两种定位方式进行修改,且可以按用户要求修改记录中除职工号和姓名以外的指定内容,并重新排序和显示;
⑦能按职工基本工资排序(降序)
⑧要求在删除模块、修改模块和查询模块中若找不到所需的记录时,系统设计中应有一定的提示信息。
4)说明:
(1)要求将修改后的数据写入到一个新的数据文件nwersk.txt中。
(2)对系统有兴趣的同学可以在实现基本要求的基础上,完善系统的其它功能。
5)人事档案管理系统采用一个结构体数组,数据库结构如下:
intzgh/*职工号*/
charname[10]/*姓名*/
charxb[4]/*性别*/
intnl/*年龄*/
charxl[10];/*学历*/
intgz/*工资*/
charbm[15]/*部门*/
charzc[10]/*职称*/
注意:
职工号不重复,且数据库应有10条或以上的记录。
6)要求:
1要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;
2要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;
3设计报告的完整格式应包括以下部分的内容:
1设计总体思路;
2程序及各个模块说明;
3总体模块框图;
4各个程序模块说明;
5程序流程图;
6程序清单;
7课程设计总结与体会(不少于400字)。
4上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。
二、进度安排
第18周星期五8:
00——12:
00
星期日15:
00——18:
00
第19周星期一19:
00——22:
00
星期三8:
00——12:
00
星期四14:
30——17:
30
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
目录
1.系统功能1
1.1系统需求分析1
1.2系统功能总体设计1
1.3输入输出功能1
2概要设计1
2.1抽象数据类型定义1
2.2系统模块组成及各模块的功能2
3.详细设计3
3.1用C语言定义相关数据类型3
3.2各模块的类C码算法3
3.3函数的调用关系图6
4.调试分析(应包括N-S图和截图)7
4.1显示模块7
4.2追加模块8
4.3修改模块8
4.4删除模块10
4.5查询模块10
4.6排序模块11
5.总结11
6.程序源代码12
7.参考文献19
计算机与通信学院课程设计评分表附录
1.系统功能
1.1系统需求分析
店子计算机作为数据处理系统,已逐渐成为人事管理现代化的重要工具,在人事管理中正在发挥着重要的作用。
在我国,已经开始运用电子计算机进行人员工资管理、人事统计和查询、干部考评和人事档案管理以及人才预测和规划等。
因此,管理人力资源开发与利用的人事管理在整个复杂的管理大系统中的重要地位是不言而喻的。
牵一发而动全身,抓好了人事管理就为其他管理的优化得到根本的保证。
1.2系统功能总体设计
该程序是对人事档案进行管理的系统,包括显示,追加,修改,删除,查询,排序和退出功能。
输入每个人的信息并进行存储,存储后可以对每个人的信息进行查询。
该系统还可以增加,修改,删除,查询单个人的所有信息,并且可以显示所有人员的所有信息。
1.3输入输出功能
该系统可以根据输入的信息相应的输出相应的提示信息,提示使用者接下来应该输入的信息。
2概要设计
2.1抽象数据类型定义
人事档案数据结构:
人事档案
{
职工号
姓名
性别
年龄
学历
工资
部门
职称
}
2.2系统模块组成及各模块的功能
程序的模块组成:
主函数voidmain();
显示模块voidDisp();
追加模块voidAppe();
修改模块voidModi();
删除模块voidDele();
查询模块voidQuery();
排序模块voidSort();
退出模块voidQuit().
各函数的主要功能描述如下:
voidmain():
用于调用各个功能函数。
voidDisp():
用于显示数据库中所有的信息,也即是每个职工的基本信息。
voidAppe():
用于增加新职工的信息。
voidModi():
用于修改单个职工的信息,要求能够按职工号和姓名两种定位方式修改职工具体的信息,且可以按用户要求修改记录中除职工号和姓名以外的指定内容,并重新排序和显示;
voidDele():
用于删除单个职工的信息,要求可按指定职工号和指定姓名两种定位方式删除记录。
voidQuery()职工信息查询功能按职工号查询和按姓名查询,要求系统在上述查询方式查询,且能显示符合条件的所的记录。
voidSort():
要求能按职工基本工资排序(降序)。
voidQuit():
用于退出程序的操作。
3.详细设计
3.1用C语言定义相关数据类型
人事档案数据结构:
structstu
{longintzgh;
charname[10];
charxb[6];
intnl;
charxl[10];
intgz;
charbm[15];
charzc[10];
};
3.2各模块的类C码算法
显示模块
voidDisp()
{for(inti=0;i<人数;i++)printf(职工号,姓名,性别,年龄,学历,工资,部门,职称);}
追加模块
voidAppe()
{fopen("e:
\\nwersk.txt","a");
printf(请输入职工号);scanf(输入职工号);
printf(请输入姓名);scanf(输入姓名);
printf(请输入性别);scanf(输入性别);
printf(请输入年龄);scanf(输入年龄);
printf(请输入学历);scanf(输入学历);
printf(请输入工资);scanf(输入工资);
printf(请输入部门);scanf(输入部门);
printf(请输入职称);scanf(输入职称);i++;
N++;
}
修改模块
voidModi()
{{寻找要修改的职工printf(职工号);
printf(姓名);
printf(按职工号或姓名寻找);
选择的方式;
if(选择职工号){printf(请输入要找职工号);
输入职工号;
for(i=0;i<人数;i++){if(找到该职工号)停止寻找;}}
elseif(选择姓名){printf(请输入姓名);
输入姓名;
for(i=0;i<人数;i++){if(找到姓名)停止寻找;}}}
if(没有找到要找的人)printf(没有找到);
else{选择要修改的内容(职工号||姓名||性别||年龄||学历||工资||部门||职称);
switch(m)
{case1:
printf(请输入修改后的职工号);scanf(输入新的职工号);停止;
case2:
printf(请输入修改后的姓名);scanf(输入新的姓名);停止;
case3:
printf(请输入修改后的性别);scanf(输入新的性别);停止;
case4:
printf("请输入修改后的年龄);scanf(输入新的年龄);停止;
case5:
printf(请输入修改后的学历);scanf(输入新的学历);停止;
case6:
printf(请输入修改后的工资);scanf(输入新的工资);停止;
case7:
printf(请输入修改后的部门);scanf(输入新的部门);停止;
case8:
printf(请输入修改后的职称);scanf(输入新的职称);停止;
}
删除模块
voidDele()
{选择定位的方式(按职工号||姓名)
if(按职工号){输入职工号;
for(i=0;i<人数;i++)if(找到该职工号)停止;
if(找到该职工号)删除该职工的所有信息;
elseprintf(没有该职工);
}
if(按姓名){输入姓名;
for(i=0;i<人数;i++)if(找到该职工)停止;
if(找到该职工号)删除该职工的所有信息;
elseprintf(没有找到);
}}
查询模块
voidQuery()/**/
{选择查询的方式(职工号||姓名);
if(按职工号){输入需查找的职工号;
for(i=0;i<人数;i++)if(找到该职工号)停止查找;
if(找到该职工号)输出该职工号的职工的所有信息;
elseprintf(没有找到);
}
if(按姓名){输入需查找的姓名;
for(i=0;i<人数;i++)if(找到该姓名)停止查找;
if(找到该姓名)输入该职工的所有信息;
elseprintf(没有找到);
}}
排序模块
voidSort()
{for(i=0;i<人数;i++)
for(j=0;j<人数;j++)
if(s[i].工资>=s[j].工资)
{s[N]=s[i];s[i]=s[j];s[j]=s[N];}
}
退出模块
voidQuit()
{printf(谢谢使用);
}
3.3函数的调用关系图
main函数的下属子功能函数及其调用示意图:
主函数主要由一个switch()开关语句构成,开关语句在一个无限循环体里,开关语句里的开关是调用主菜单显示函数的返回值。
除最后一个语句是强制结束整个程序的语句外,其它case都是调用相应的函数,完成相应的功能。
各调用情况如下:
case1:
调用显示函数、case2:
调用追加函数、case3:
调用修改函数、case4:
调用删除函数、case5:
调用查询函数、case6:
调用排序函数,主函数将保证每调用完一个函数之后又调用显示函数,然后按任意键又重新回到主菜单,以便用户进行下一次的操作。
4.调试分析(应包括N-S图和截图)
主菜单截图如下:
4.1显示模块
从主菜单中选择第一个选项后即可,截图如下:
4.2追加模块
从主菜单中选择第二个选选项后即开始追加,追加过程中的截图如下:
追加后显示内容如下:
4.3修改模块
从主菜单中选择第三个选项后即开始修改程序,开始后首先选择你的定位方式(按职工号或按姓名),选择方式后即输入你要找的人的职工号或姓名,再选择要修改的具体内容,最后输入要修改的新的信息即可。
截图如下:
修改后显示内容如下图:
4.4删除模块
从主菜单中选择第四个选项即进入了删除模块,然后用职工号或姓名定位的方法选择要删除的内容即可。
截图如下:
4.5查询模块
从主菜单选择第五个选项进入,再选择按职工号或按姓名查询后显示要找的人的所有信息。
截图如下:
4.6排序模块
从主菜单选择第六个选项即出现按职工工资降序排列。
截图如下:
5.总结
1.经过这一个学期对《C程序设计》的学习,我们都学到了不少东西,可能有一些人学的不够理想,但无论如何,这些知识都为我们的下一步学习打下了坚实的基础。
做这么一个课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。
本程序是一个人事档案管理系统,也可以做为一个其它相关的人事信息备忘录,可以新建一个文本文档,用于存放学生信息,包括:
职工号、姓名、性别、年龄、学历、工资、部门、职称。
也可以打开一个已有的文本文档,可以查看其中的内容,并提供了按职工号、姓名查询的功能,方便查找。
也可以向文档中添加、删除信息。
2.课程设计题目:
人事档案管理系统。
要求:
用结构体描述职工的:
职工号、姓名、性别、年龄、学历、工资、部门、职称。
自己动手建立文件nwersk.txt,其中有10个职工的职工号、姓名、性别、年龄、学历、工资、部门、职称。
编写一个程序通过姓名和学号分别
查询职工的基本信息。
说明
一.算法分析说明:
由于我们已经学了链表的知识,用链表实现对多组信息的操作比较方便。
已建好了人事档案文件的话,同过定义的load子函数把文件内容全部读入链表,剩下的所有操作就是对链表的操作了,象结点的删除,插入一个结点,查找一个结点都可以用链表一章的知识来完成。
本程序要求的较简单,只是让从10个职工中查找,我们就可以用结构体数组来完成。
二、阅读本程序应对结构体和链表的知识比较熟悉,
首先应对本程序中的各个子函数的做用了解,上面的N-S图可以帮助理解程序。
6.程序源代码
#include"stdio.h"
#include"string.h"
#include"conio.h"
intN=0;
structstu
{longintzgh;/*职工号*/
charname[10];/*姓名*/
charxb[6];/*性别*/
intnl;/*年龄*/
charxl[10];/*学历*/
intgz;/*工资*/
charbm[15];/*部门*/
charzc[10];/*职称*/
}s[40];
voidRe_file()
{
FILE*fp;
fp=fopen("e:
\\rsdak.txt","r");
while(fscanf(fp,"%ld\n%s\n%s\n%d\n%s\n%d\n%s\n%s\n",&s[N].zgh,s[N].name,s[N].xb,&s[N].nl,s[N].xl,&s[N].gz,s[N].bm,s[N].zc)!
=EOF)N++;
fclose(fp);
}
voidWr_file()
{inti;
FILE*fp;
fp=fopen("e:
\\nwersk.txt","w");
for(i=0;ifprintf(fp,"%ld\n%s\n%s\n%d\n%s\n%d\n%s\n%s\n",s[i].zgh,s[i].name,s[i].xb,s[i].nl,s[i].xl,s[i].gz,s[i].bm,s[i].zc);
fclose(fp);
}
voidDisp()/*显示模块*/
{inti;
printf("***********************************************************************\n");
printf("zghnamexbnlxlgzbmzc\n");
printf("***********************************************************************\n");
for(i=0;i}
voidAppe()/*追加模块*/
{fopen("e:
\\nwersk.txt","a");
inti=N;
printf("\npleaseinputnew&s[i].zgh:
");scanf("%d",&s[i].zgh);
printf("\npleaseinputnew&s[i].name:
");scanf("%s",&s[i].name);
printf("\npleaseinputnew&s[i].xb:
");scanf("%s",&s[i].xb);
printf("\npleaseinputnew&s[i].nl:
");scanf("%d",&s[i].nl);
printf("\npleaseinputnew&s[i].xl:
");scanf("%s",&s[i].xl);
printf("\npleaseinputnew&s[i].gz:
");scanf("%d",&s[i].gz);
printf("\npleaseinputnew&s[i].bm:
");scanf("%s",&s[i].bm);
printf("\npleaseinputnew&s[i].zc:
");scanf("%s",&s[i].zc);i++;
N++;
}
voidModi()/*修改模块*/
{inti,m,a,b;
charc[10];
{printf("\n\n");
printf("******************************************\n");
printf("1.zgh\n");
printf("2.name\n");
printf("******************************************\n");
printf("\n\ninputyourselection:
");
scanf("%d",&a);
if(a==1){printf("pleaseinputzgh:
");
scanf("%d",&b);
for(i=0;ielseif(a==2){printf("pleadeinputname:
");
scanf("%s",&c);
for(i=0;iif(i>=N)
{printf("*********************************\n");
printf("notfound\n");
printf("*********************************\n");}
else{printf("\n");
printf("*********************************************\n");
printf("1.zgh2.name\n");
printf("3.xb4.nl\n");
printf("5.xl6.gz\n");
printf("7.bm8.zc\n");
printf("*********************************************\n");
printf("\ninputyourselection:
");
scanf("%d",&m);
switch(m)
{case1:
printf("\npleaseinputnew&s[i].zgh:
");scanf("%d",&s[i].zgh);break;
case2:
printf("\npleaseinputnew&s[i].name:
");scanf("%s",&s[i].name);break;
case3:
printf("\npleaseinputnew&s[i].xb:
");scanf("%s",&s[i].xb);break;
case4:
printf("\npleaseinputnew&s[i].nl:
");scanf("%d",&s[i].nl);break;
case5:
printf("\npleaseinputnew&s[i].xl:
");scanf("%s",&s[i].xl);break;
case6:
printf("\npleaseinputnew&s[i].gz:
");scanf("%d",&s[i].gz);break;
case7:
printf("\npleaseinputnew&s[i].bm:
");scanf("%s",&s[i].bm);break;
case8:
printf("\npleaseinputnew&s[i].zc:
");scanf("%s",&s[i].zc);break;}}
printf("\n\npressanykeytocontinue\n");
}
voidDele()/*删除模块*/
{inti,j,a,zghs;
charnames[10];
printf("\n\n");
printf("******************************\n");
printf("1.zgh\n");
printf("2.name\n");
printf("******************************\n");
printf("pleaseinputyourselection:
");
scanf("%d",&a);
if(a==1){printf("\nPleaseinputzgh:
");
scanf("%d",&zghs);
for(i=0;iif(s[i].zgh==zghs){for(j=i;j