C语言设计人事管理管理系统 精品Word格式.docx
《C语言设计人事管理管理系统 精品Word格式.docx》由会员分享,可在线阅读,更多相关《C语言设计人事管理管理系统 精品Word格式.docx(33页珍藏版)》请在冰豆网上搜索。
![C语言设计人事管理管理系统 精品Word格式.docx](https://file1.bdocx.com/fileroot1/2022-12/12/d870f3ae-07bf-436d-986d-392694423fb8/d870f3ae-07bf-436d-986d-392694423fb81.gif)
****统计女工人数
****统计硕士以上学历和副教授以上职称人数
****将统计得到的信息保存在worker3.txt文件中
4.排序
****按年龄进行排序
(1)
****按来院时间进行排序
(2)
三详细设计;
1、主函数:
主函数设计的比较简单,只提供输入、处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
其流程图如下
程序
main()
{
intn,w;
do
{
puts("
\t\t***********************高校人事管理*************************\n\n\n"
);
\t\t\t\t1.添加或删除\n"
\t\t\t\t2.查询与编辑\n"
\t\t\t\t3.统计\n"
);
\t\t\t\t4.排序\n"
\t\t*************************************************************\n"
printf("
选择你要的服务(1-4):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
4)
{
w=1;
getchar();
}
elsew=0;
}
while(w==1);
switch(n)
case1:
retify();
break;
case2:
sear_edit();
case3:
stat();
case4:
row();
}
1.添加与删除模块,此模块有
(1),
(2)两个模块构成。
voidretify()
\t\t***************删除或添加人员的信息****************\n\n\n\n\n"
\t\t\t\t1.添加"
\t\t\t\t2.删除"
请选择服务(1-2):
2)
case1:
tianjia();
case2:
shanchu();
(1).添加功能:
voidtianjia()
FILE*fp;
inti,number;
structworkerwor_t[N];
printf("
您要添加的人的人数:
"
scanf("
number);
输入添加人的信息:
\n"
for(i=0;
i<
number;
i++)
编号:
scanf("
wor_t[i].num);
姓名:
%s"
wor_t[i].name);
性别:
wor_t[i].sex);
年龄:
wor_t[i].old);
职称:
wor_t[i].zhicheng);
职位:
wor_t[i].zhiwei);
政治面貌:
wor_t[i].mianmao);
学历:
wor_t[i].xueli);
来院时间:
wor_t[i]e_time);
在院工作时间:
wor_t[i].work_time);
在职与否:
在职请按1,不在职请按2\n"
wor_t[i].leibie);
您刚才输入的人的信息\n"
%d%s%s%d%s%s%s%s%d%d%d\n"
wor_t[i].num,wor_t[i].name,wor_t[i].sex,wor_t[i].old,wor_t[i].zhicheng,wor_t[i].zhiwei,wor_t[i].mianmao,wor_t[i].xueli,wor_t[i]e_time,wor_t[i].work_time,wor_t[i].leibie);
if((fp=fopen("
D:
\\txt\\worker.txt"
"
a+"
))==NULL)
{
\nCannotopenfile\n"
exit(0);
i++)
fprintf(fp,"
\n%d%s%s%d%s%s%s%s%d%d%d"
fclose(fp);
(2).删除模块
该模块的功能是根据编号和姓名先查询出该人的信息,然后从原文件中删除该人的信息。
流程图如下,
voidshanchu()
FILE*fp,*fp1;
inti,number,k,j,m;
structworkerworker1[M],worker2[M];
inta[N];
charb[N][20];
您要删除的人的人数:
输入删除人的信息的编号和姓名:
输入添加人的编号:
a[i]);
输入添加人的姓名:
b[i]);
您刚才输入的人的信息的编号和姓名:
%d%s\n"
a[i],b[i]);
if((fp=fopen("
r"
getch();
exit(0);
输出公司更改前所有人员的信息:
\n编号姓名性别年龄职称职位面貌学历来院时间工作时间在职与否\n"
!
feof(fp);
fscanf(fp,"
%d%s%s%d%s%s%s%s%d%d%d"
worker2[i].num,worker2[i].name,worker2[i].sex,&
worker2[i].old,worker2[i].zhicheng,worker2[i].zhiwei,worker2[i].mianmao,worker2[i].xueli,&
worker2[i]e_time,&
worker2[i].work_time,&
worker2[i].leibi);
k=i;
m=0;
k;
for(j=0;
j<
j++)
if(worker2[i].num!
=a[j]&
&
strcmp(worker2[i].name,b[j]))
{
worker1[m]=worker2[i];
m++;
}
%d%s%s%d%s%s%s%s%d%d%d\n"
worker2[i].num,worker2[i].name,worker2[i].sex,worker2[i].old,worker2[i].zhicheng,worker2[i].zhiwei,worker2[i].mianmao,worker2[i].xueli,worker2[i]e_time,worker2[i].work_time,worker2[i].leibie);
if(k==m){printf("
\n这个人不存在?
?
exit(0);
getch();
输出公司更改后所有人员的信息:
if((fp1=fopen("
w"
m;
%d%s%s%d%s%s%s%s%d%d%d\n"
worker1[i].num,worker1[i].name,worker1[i].sex,worker1[i].old,worker1[i].zhicheng,worker1[i].zhiwei,worker1[i].mianmao,worker1[i].xueli,worker1[i]e_time,worker1[i].work_time,worker1[i].leibie);
fprintf(fp1,"
fclose(fp1);
getch();
2,查询和编辑功能:
首先,输入你要查询的人的编号和姓名,电脑将显示出该人的信息,并提问你是否要对该人的信息重新进行编辑,若选择了重新编辑的选项就重新输入该人的信息,此时将显示该人的信息并且对原文件进行修改和保存。
voidsear_edit()
structworkerwor_people,worker1[M];
inti,k,m,n;
你想查询谁?
输入你想查询的人的编号和姓名\n"
输入你想查询的人的编号\n"
wor_people.num);
输入你想查询的人的姓名\n"
wor_people.name);
))==0)
for(i=0;
for(i=0;
worker1[i].num,worker1[i].name,worker1[i].sex,&
worker1[i].old,worker1[i].zhicheng,worker1[i].zhiwei,worker1[i].mianmao,worker1[i].xueli,&
worker1[i]e_time,&
worker1[i].work_time,&
worker1[i].leibie);
m=-1;
if(wor_people.num==worker1[i].num||!
(strcmp(wor_people.name,worker1[i].name)))
printf("
m=i;
if(m==-1)
\n你想重新编辑这个人的信息吗?
\n"
如果你想,请按1\n如果不想请按2\n"
if(n==1)
这个人的初始信息:
\n%d%s%s%d%s%s%s%s%d%d%d\n"
worker1[m].num,worker1[m].name,worker1[m].sex,worker1[m].old,worker1[m].zhicheng,worker1[m].zhiwei,worker1[m].mianmao,worker1[m].xueli,worker1[m]e_time,worker1[m].work_time,worker1[m].leibie);
输入新的信息\n"
worker1[m].num);
worker1[m].name);
worker1[m].sex);
worker1[m].old);
worker1[m].zhicheng);
worker1[m].zhiwei);
worker1[m].mianmao);
worker1[m].xueli);
worker1[m]e_time);
worker1[m].work_time);
if((fp1=fopen("
{
k-1;
fprintf(fp1,"
%d%s%s%d%s%s%s%s%d%d%d\n"
fclose(fp1);
if(n=2)exit(0);
3,根据各个参数进行统计:
****统计在职人数
****统计党员人数
****统计女工人数
****统计硕士以上学历和副教授以上职称人数
****将统计得到的信息保存在worker3.txt文件中
voidstat()
intw_num,d_num,wo_num,x_c_num,i,k;
structworkerworker1[M];
puts("
\t\t*******************统计人数菜单********************\n\n"
\t\t\t\t各种人员的人数"
\n\n\t\t**************************************************\n"
w_num=0,d_num=0,wo_num=0,x_c_num=0;
if(!
(strcmp(worker1[i].sex,"
)))wo_num++;
(strcmp(worker1[i].mianmao,"
dang"
)))d_num++;
if(worker1[i].leibie==1)w_num++;
(strcmp(worker1[i].xueli,"
doc"
)))x_c_num++;
mas"
(strcmp(worker1[i].zhicheng,"
Professor"
a_professor"
在职人员数目:
%d\n"
wo_num);
党员人数:
d_num);
女职工人数:
"
高职称高学历人数:
x_c_num);
\\txt\\worker3.txt"
fprintf(fp1,"
%d%d%d%d"
w_num,d_num,wo_num,x_c_num);
4.排序模块:
该模块有两个子模块构成,按年龄和来源时间对原文件里的信息进行排序并且将排序分别保存在old_row.txt和ingtime_row.txt中。
voidrow()
intn,w;
\t\t************按年龄和来院时间排序*****************\n\n"
\t\t\t\t1.按年龄排序\n"
\t\t\t\t2.按来院时间排序\n"
\n\n\t\t**********************************************\n"
)