中国地质大学(武汉)
C 语言课程设计报告
人事管理
学 院
专 业
题 目
班 级
姓 名 :
学 号
指导老师
一、题目要求 .................................................................................................................................... 3
1、系统功能的基本要求 ........................................................................错误!未定义书签。
2、提示....................................................................................................错误!未定义书签。
二、需求分析 .................................................................................................................................... 4
三、总体设计 .................................................................................................................................... 4
四、详细设计 .................................................................................................................................... 5
1、主函数 .................................................................................................................................. 5
2、各模块设计 .......................................................................................................................... 6
(0)浏览模块------------------------------------------------------------------------6
(1)删除模块--------------------------------------------------------------------------------------
错误!未定义书签。
(2) 查询模块-------------------------------------------------------------------------------------8
(2.1) 按编号查询模块----------------------------------------------------------------------------9
(2.2) 按姓名查询模块----------------------------------------------------------------------------9
(3)编辑模块 ................................................................................错误!未定义书签。
(4)统计模块 ................................................................................错误!未定义书签。
(4.1) 在职人数统计模块-----------------------------------------------------------------------11
(4.2) 党员人数统计模块-----------------------------------------------------------------------11
(4.3) 女工人数统计模块------------------------------------------------------------------------11
(4.4) 高学历高职称人数统计模块------------------------------------------------------------11
(5)排序模块 ................................................................................错误!未定义书签。
(5.1) 按年龄排序模块-------------------------------------------------------------------------16
(5.2) 按来院时间模块---------------------------------------------------------------------------16
(6)保存模块 ................................................................................错误!未定义书签。
五、上机操作 .................................................................................................................................. 19
六、完整程序 .................................................................................................................................. 19
七、运行结果截图 .......................................................................................................................... 34
八、总结与感想.............................................................................................................................. 34
一、题目要求
某高校主要人员有:在职人员(行政人员、教师、一
般人员)、退休人员和临时工。现在需要储存这些人员
的人事档案信息,内容包括编号、姓名、性别、年龄、
职务、职称、政治面貌、最高学历、任职时间、来院
时间、人员类别。其中,人员编号唯一,不能重复。
(1) 添加删除功能:能根据学院人事的变动情
况,添加删除记录。
(2) 查询功能:能根据编号和姓名进行查询。
(3) 编辑功能(高级):根据查询对相应的记录
进行修改并储存。
(4) 统计功能:能根据多种参数进行人员的统计
(在职人数、党员人数、女工人数、高学历高
职称人数(硕士学位以上或者副教授以上)),
统计要求同时显示被统计者的信息。
(5) 排序功能:按照年龄、来院时间进行排序。
(6) 保存功能:能对输入的数据进行相应的储
存。
二、需求分析
根据题目要求,需要把仪器仪表信息的的数据存储在文件里,所以需要提供
文件的输入输出等操作;在程序中要提供修改,删除,查找等操作;另外还应该
提供键盘式选择菜单实现功能选择。
三、总体设计
人事
管理
系统
删除模
查询模
编辑模
块
块
块
统计模
块
排序模
保存模
块
块
按编号
查询
按姓名
查询
在职
党员
女工
高学
按年
按来
人数
人数
人数
历高
龄排
院时
统计
统计
统计
职称
序
间排
统计
序
四、详细设计
1、主函数
主函数只提供输入输出和功能处理的函数调用。其各功能模块用菜单方
式选择。将 main()函数体内的界面选择部分语句单独抽取出来作为一
独立函数,目的在于系统执行完每部分功能模块后能够方便返回到系统
界面。
【程序】
*主函数*/
int main()
{ do
{ int cz;
puts("****************************************************\n");
puts("****************人事管理系统************************\n");
puts("**请选择以下选项后面的数字输入以确定您要进行的操作**\n");
puts("选项:");
puts("浏览:");
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
puts("
****浏览文件(0)");
删除");
****删除记录(1)");
查询");
****按名称查询(2)");
****按编号查询(3)");
编辑");
****查询名称编辑信息(4)");
****查询编号编辑信息(5)");
统计");
****统计在职人数(6)");
****统计党员人数(7)");
****统计女工人数(8)");
****统计硕士以上学历人数(9)");
****统计副教授以上职称人数(10)");
排序");
****按年龄进行排序(11)");
****按来院时间进行排序(12)");
保存");
****将输入的记录进行保存(13)");
退出");
****退出(14)");
printf("请输入选项号: ");
scanf("%d",&cz);
switch(cz)
{
case 0:blose();break;
case 1:dele();break;
case 2:searname();break;
case 3:searnum();break;
case 4:channame();break;
case 5:channum();break;
case 6:sumzzrs();break;
case 7:sumdyrs();break;
case 8:sumngrs();break;
case 9:sumssysxlrs();break;
case 10:sumfjsyszhichers();break;
case 11:sortage();break;
case 12:sortlysj();break;
case 13:save();break;
case 14:return 0;
default: printf("对不起,您没有按要求输入");
}
}while(1);
}
2、各模块设计
(0)浏览模块
void blose()
{ int i=0,j;
if((fp=fopen("renshi.txt","r"))==NULL)
{
printf("cannot open this file\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("");
getchar();
}
(2)查询模块
(2.1)按编号查询
void searname()
{ int i=0,j,k=0;
char name[8];
printf("请输入您要查询的记录的姓名: ");
scanf("%s",name);
if((fp=fopen("renshi.txt","r+"))==NULL)
{
printf("cannot open this file\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