C语言课程设计人事管理管理系统Ⅱ.docx

上传人:b****0 文档编号:275132 上传时间:2022-10-08 格式:DOCX 页数:28 大小:168.63KB
下载 相关 举报
C语言课程设计人事管理管理系统Ⅱ.docx_第1页
第1页 / 共28页
C语言课程设计人事管理管理系统Ⅱ.docx_第2页
第2页 / 共28页
C语言课程设计人事管理管理系统Ⅱ.docx_第3页
第3页 / 共28页
C语言课程设计人事管理管理系统Ⅱ.docx_第4页
第4页 / 共28页
C语言课程设计人事管理管理系统Ⅱ.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

C语言课程设计人事管理管理系统Ⅱ.docx

《C语言课程设计人事管理管理系统Ⅱ.docx》由会员分享,可在线阅读,更多相关《C语言课程设计人事管理管理系统Ⅱ.docx(28页珍藏版)》请在冰豆网上搜索。

C语言课程设计人事管理管理系统Ⅱ.docx

C语言课程设计人事管理管理系统Ⅱ

人事管理管理系统

[要求]

某高校主要人员有:

在职人员(行政人员、教师、一般员工)、退休人员和临时工。

现在,需要存储这些人员的人事档案信息:

编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间、人员类别。

其中,人员编号唯一,不能重复。

(1)添加删除功能:

能根据学院人事的变动情况,添加删除记录;

(2)查询功能:

能根据编号和姓名进行查询;

(3)编辑功能(高级):

根据查询对相应的记录进行修改,并存储;

(4)统计功能:

能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数(硕士学位以上或者副教授以上)),统计要求同时显示被统计者的信息;

(5)排序功能:

按照年龄、来院时间进行排序;

(6)保存功能:

能对输入的数据进行相应的存储;

一.需求分析:

根据题目要求,人事信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能,在程序中应该有添加删除,查询,编辑,统计,排序,保存等程序实现相应的操作,另外菜单式的选择方式选择程序的功能也是必须需的。

另外程序中要求存储的模块,采用的方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件中重新储存,这样的方法容易理解、容易编写,但当文件中的数据量很大时,这种方法也存在一定的难度,在本程序中将RS定为100,也即最多可储存的职工人数为100;

二总体设计:

根据以上需求分析,将程序分成以下几个模块:

1浏览:

****浏览文件(0)

2删除

****删除记录

(1)

3查询

****按名称查询

(2)

****按编号查询(3)

4编辑

****查询名称编辑信息(4)

****查询编号编辑信息(5)

5统计

****统计在职人数(6)

****统计党员人数(7)

****统计女工人数(8)

****统计硕士以上学历人数(9)

****统计副教授以上职称人数(10)

6排序

****按年龄进行排序(11)

****按来院时间进行排序(12)

7保存

****将输入的记录进行保存(13)

三详细设计;

1、主函数:

主函数设计的比较简单,只提供输入、处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

其流程图如下

程序

voidmain()

{do

{intn;

puts("****************************************************\n");

puts("****************人事管理系统************************\n");

puts("**请选择以下选项后面的数字输入以确定您要进行的操作**\n");

puts("选项:

");

puts("浏览:

");

puts("****浏览文件(0)");

puts("删除");

puts("****删除记录

(1)");

puts("查询");

puts("****按名称查询

(2)");

puts("****按编号查询(3)");

puts("编辑");

puts("****查询名称编辑信息(4)");

puts("****查询编号编辑信息(5)");

puts("统计");

puts("****统计在职人数(6)");

puts("****统计党员人数(7)");

puts("****统计女工人数(8)");

puts("****统计硕士以上学历人数(9)");

puts("****统计副教授以上职称人数(10)");

puts("排序");

puts("****按年龄进行排序(11)");

puts("****按来院时间进行排序(12)");

puts("保存");

puts("****将输入的记录进行保存(13)");

puts("退出");

puts("****退出(14)");

printf("请输入选项号:

");

scanf("%d",&n);

switch(n)

{case0:

browse();break;

case1:

dele();break;

case2:

searname();break;

case3:

searnum();break;

case4:

channame();break;

case5:

channum();break;

case6:

sumzzrs();break;

case7:

sumdyrs();break;

case8:

sumngrs();break;

case9:

sumssysxlrs();break;

case10:

sumfjsyszhichers();break;

case11:

sortage();break;

case12:

sortlysj();break;

case13:

save();break;

case14:

return;

default:

printf("输入错误");

}

}while

(1);

}

2、各功能设计模块

(1)浏览模块

该模块的功能是显示文件的所有信息,流程图如下

程序

voidbrowse()

{inti=0,j;

if((fp=fopen("renshi.txt","r"))==NULL)

{printf("cannotopenthisfile\n");

return;

}

while(!

feof(fp))

{fscanf(fp,"%s%s%s%d%s%d%s%d%s%d%s",per[i].num,per[i].name,per[i].sex,&per[i].age,per[i].zhiwu,&per[i].zhiche,per[i].zzmm,&per[i].zgxl,per[i].rzsj,&per[i].lysj,per[i].rylb);

i++;

}

printf("\n\n当前文件内容是:

\n\n");

for(j=0;j

{printf("%s%s%s%d%s%d%s%d%s%d%s\n",per[j].num,per[j].name,per[j].sex,per[j].age,per[j].zhiwu,per[j].zhiche,per[j].zzmm,per[j].zgxl,per[j].rzsj,per[j].lysj,per[j].rylb);

}

fclose(fp);

printf("\n");

printf("\n\n\npressanykeytocontinue\n\n\n");

getchar();

printf("\n");

}

(2)删除模块

该模块的功能是根据编号删除记录的信息,删除空行,后面的前移,浏览。

流程图如下

程序

voiddele()

{inti=0,j,k=0;

charnum[10];

printf("请输入您要删除的记录的编号:

");

scanf("%s",num);

if((fp=fopen("renshi.txt","r"))==NULL)

{printf("cannotopenthisfile\n");

return;

}

while(!

feof(fp))

{fscanf(fp,"%s%s%s%d%s%d%s%d%s%d%s",per[i].num,per[i].name,per[i].sex,&per[i].age,per[i].zhiwu,&per[i].zhiche,per[i].zzmm,&per[i].zgxl,per[i].rzsj,&per[i].lysj,per[i].rylb);

i++;

}

fclose(fp);

if((fp=fopen("renshi.txt","w"))==NULL)

{printf("cannotopenthisfile\n");

return;

}

for(j=0;j

{if(strcmp(per[j].num,num)!

=0)

fprintf(fp,"%s%s%s%d%s%d%s%d%s%d%s\n",per[j].num,per[j].name,per[j].sex,per[j].age,per[j].zhiwu,per[j].zhiche,per[j].zzmm,per[j].zgxl,per[j].rzsj,per[j].lysj,per[j].rylb);

}

fclose(fp);

trim();

browse();

printf("");

getchar();

}

(3)按名称查询模块

该模块的功能是根据名字查询记录。

流程如下

程序

voidsearname()

{inti=0,j,k=0;

charname[8];

printf("请输入您要查询的记录的姓名:

");

scanf("%s",name);

if((fp=fopen("renshi.txt","a+"))==0)

{printf("cannotopenthisfile\n");

return;

}

while(!

feof(fp))

{fscanf(fp,"%s%s%s%d%s%d%s%d%s%d%s",per[i].num,per[i].name,per[i].sex,&per[i].age,per[i].zhiwu,&per[i].zhiche,per[i].zzmm,&per[i].zgxl,per[i].rzsj,&per[i].lysj,per[i].rylb);

i++;

}

printf("您要的信息如下:

\n");

for(j=0;j

{if(strcmp(per[j].name,name)==0)

{printf("%s%s%s%d%s%d%s%d%s%d%s\n",per[j].num,per[j].name,per[j].sex,per[j].age,per[j].zhiwu,per[j].zhiche,per[j].zzmm,per[j].zgxl,per[j].rzsj,per[j].lysj,per[j].rylb);

k++;

}

}

if(k==0)

{printf("没有您要的信息");

return;

}

fclose(fp);

browse();

printf("");

getchar();

}

(4)按编号查询模块

该模块功能是根据记录编号查询记录。

流程路如下

(5)

程序

voidsearnum()

{inti=0,j,k=0;

charnum[10];

printf("请输入您要查询的记录的编号:

");

scanf("%s",num);

if((fp=fopen("renshi.txt","r+"))==NULL)

{printf("cannotopenthisfile\n");

return;

}

while(!

feof(fp))

{fscanf(fp,"%s%s%s%d%s%d%s%d%s%d

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1