logo资料库

C语言工资管理系统.doc

第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
资料共25页,剩余部分请下载后查看
C 语言课程设计 ——企业人事管理系统 制作人:文啸 学号:10204127 指导老师:王老师
题目要求: [要求] 人事管理管理系统 员工包括总经理、经理、雇员,信息包括工号、姓名、职务、身份证号、籍贯、工资(实 发工资)等。 人事工资管理: 职工工资的主要属性如下:基本工资、岗位工资、奖金、应发工资、医疗住房基金、税 金、实发工资;其中应发工资等于基本工资与岗位工资之和,而实发工资等于应发工资减去 医疗住房基金和税金。部门暂时分为设备处、人事处、学工处、计算机学院,利用文本文件 存储职工工资信息;实现工资的录入、统计(统计整个单位的平均工资、最高工资和最低工 资、工资均方差等信息;各部门的平均工资、最高工资和最低工资、工资均方差等信息)、 查询(根据工号或姓名查询)、修改、删除等功能。 一、需求分析: 根据题目要求,人事信息是存放在文件中的,所以应该提供相应的文件的输入输出的功能, 在程序中应该有添加删除,查询,编辑,统计,排序,保存,排序等程序实现相应的操作, 另外菜单式的选择方式选择程序的功能也是必须需的。另外程序中要求存储的模块,采用的 方式均为将原文件中的所有数据读入内存,在内存中处理之后以覆盖的方式写入文件存贮, 这样的方法在一定程度上提高了对数据处理的灵活性,将各个功能分模块设计分别写成各个 函数,在调用函数。基本上能满足要求; 二、概要设计: 根据以上需求分析,将程序分成以下几个模块: 1、 输入人事信息; 2、 增加人事信息; 3、 查找人事信息; 4、 删除人事信息; 5、 统计人事信息; 6、 人事职工公资排列: 7、 修改信息; 8、 保存信息; 9、 显示信息; 三、详细设计; 1、 主函数: 〈1〉需求分析: 为使系统执行完每部分功能后能够方便的回到系统主界面,main()函数设计的较简单,只包 含一个 menu()函数,其余的全部功能都通过 menu()函数调用来实现,并通过 menu()函数的 递归调用实现返回主界面的功能。 main()函数定义如下: main() {menu();} 而 menu()定义如下:
〈2〉流程图: void menu() { 人事信息管理系统 system("cls"); printf("\t****************************************************************\n"); *\n"); printf("\t* *\n"); printf("\t* printf("\t* *\n"); printf("\t* printf("\t* printf("\t* printf("\t* printf("\t* *\n"); printf("\t* printf("\t****************************************************************\n"); printf("\t* 南昌航空大学软件学院 102041 班 增加人事信息 *\n"); 删除人事信息 *\n"); 人事工资排列 *\n"); 保存人事信息 *\n"); 退出管理系统 *\n"); [1] 输入人事信息 [3] 查找人事信息 [5] 统计人事信息 [7] 修改人事信息 [9] 显示人事信息 [2] [4] [6] [8] [0] 学号 10204127*\n”); 文啸制作*\n”); 指导老师王老师*\n”); *\n”); printf("\t* printf("\t* printf("\t* } while(1) { menu(); printf("\t====>请选择:"); scanf("%d",&choose); system("cls"); switch(choose) { case 0: exit(0); /*退出*/
break; case 1: input(); fh();/*增加职工信息*/ break; case 2: add(); fh();/*查看职工信息*/ break; case 3: zc_query(); fh();/*查找*/ break; case 4: num_del(); fh();/*删除*/ break; case 5: tongji(); fh();/*统计*/ break; case 6: sort(); fh();/*排序*/ break; case 7: num_modify(); fh();/*修改后返回*/ break; case 8: save(); fh();/*保存*/ break; case 9: disp(); fh(); break;/* 显示*/ default: break; } fflush(stdin); getchar(); system("cls");
} 2、各功能模块设计: (1)、新建数据文件模块: <1>、数据结构; 看各个数据信息,编号、姓名、性别、部门、职称、学历、工资、均为字符串类型,在文件 中以文本形式存放,每条记录对应一个人员的信息,可以方便信息的管理;而数据读进内存 中时,可以以结构体的形式,每一个结构体包含了一个人员的全部信息,多的人员的信息组 成了一个结构体数组。定义如下: struct employee { char num[10]; char name[15]; char sex[5]; char age[10]; char bm[20]; char zc[20]; char xueli[10]; int gz; }; (2)修改职工信息: 〈1〉 需求分析: 该模块的功能是显示所有信息,考虑到记录较多,采用分屏显示,显示完所有的记录后,由 用户输入需要修改的人员的号码,查找成功后,显示查找结果,并询问拥护修改人员的哪部 分记录,根据用户选择修改相应的信息,然后保存修改后的结果; 〈2〉 流程图
〈3〉 程序; void num_modify() //修改职工信息 { FILE *fp=NULL; char gh[60]; int i=0; int changeIndex=0; /*/changeIndex 改变标记*/ int index=0; printf("请输入要修改的人事工号:"); scanf("%s",gh); for (i=0;i
printf("\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[changeIndex].num,em[changeIndex].name,e m[changeIndex].sex,em[changeIndex].age,em[changeIndex].bm,em[changeIndex].zc,em[changeI ndex].xueli,em[changeIndex].gz); printf("请重新输入该人事信息"); printf("工号:"); scanf("%s",em[changeIndex].num); printf("姓名:"); scanf("%s",em[changeIndex].name); printf("性别:"); scanf("%s",em[changeIndex].sex); printf("年龄: "); scanf("%s",em[changeIndex].age); printf("部门:"); scanf("%d",em[changeIndex].bm); printf("职称:"); scanf("%s",em[changeIndex].zc); printf("学历:"); scanf("%s",em[changeIndex].xueli); printf("工资:"); scanf("%d",&em[changeIndex].gz); /*信息修改后重新更新文件里面的数据 以保持数据一致性*/ fp=fopen("employee1.txt","wb+"); for (i=0;i修改成功\n"); } (3)删除模块; 〈1〉需求分析: 该模块的运行方式与修改模块类似,首先分屏显示所有人员的记录,显示完所有的记录后, 由用户输入要删除的人员的号码,根据号码查找相应的记录并将结果显示出来,经用户确认 后删除,删除的方法是将文件中的数据读入内存,赋给相应的结构体,并将结构体数组中将 删除的后面的数据赋给前一个结构体,然后将相应数据写入文件并保存; 〈2〉流程图:
Y 〈3〉程序; void num_del()/*按工号删除*/ { FILE *fp=NULL; char gh[60]; int i=0; int j=0; printf("请输入要删除的人事工号:"); scanf("%s",gh); for(i=0;i
分享到:
收藏