C职工工资管理系统报告(共29页).doc
《C职工工资管理系统报告(共29页).doc》由会员分享,可在线阅读,更多相关《C职工工资管理系统报告(共29页).doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1.题目职工工资管理系统的设计与实现2.功能(1)每一条记录包括一个职工的工号、姓名、基本工资、职务工资、津贴、医疗保险、公积金和总工资。(2)输入功能:可以一次完成多条记录的输入。(3)显示功能:完成全部职工记录的显示。(4)查找功能:完成按工号和姓名查找职工记录,并显示。(5)排序功能:按职工的工号进行排序。(6)插入功能:可以插入多名职工信息记录。(7)保存功能:将职工记录保存在任何自定义的文件中。(8)读取功能:将保存在文件中的职工信息工资信息读取出来。(9)有一个清晰美观界面来调用各个功能3.要求(1)整个系统均用C语言实现;(2)利用指针、链表来实现学生成
2、绩的数据结构设计;(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;(4)系统的各个功能模块都用函数的形式来实现;(5)可以将职工工资信息保存在文件中。(6)可以将职工工资信息从文件中读取出来。4.设计内容整个系统除了主函数外,另外还有14个函数,实现八大功能:输入功能、显示功能、查找功能、排序功能、插入功能、保存功能、读取功能。各个函数的详细设计说明分别如下:4.1主函数 main()利用无限次循环for( )和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。4.2菜单选择函数 void menu()这是一个无参函数,主要实现“功能选择”的界面
3、,在这个界面里有显示系统的主要功能,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!void menu() /菜单界面system(cls);printf(*菜单*nn);printf(* 0 排序 *nn);printf(* 1 输入 *nn);printf(* 2 显示 *nn);printf(* 3 查找 *nn);printf(* 4 删除 *nn);printf(* 5 添加 *nn);printf(* 6 修改 *nn);printf(* 7 帮助 *nn);printf(* 8 退出 *nn);4.3输入记录函数 void in
4、put()通过结构体的数组来进行操作,先头定义数组em,先输入需要输入的职工人数m,然后进入循环,每次循环将各项输入结构体数组对应项的对应成员中,当循环次数等于人数时,完成全部职工的信息输入,退出循环,同时将数据存储在employee_list文件中并自动保存到磁盘中。void input() /*录入函数*/ int i,m; system(cls); printf(职工人数(1-100):n); scanf(%d,&m);for (i=0;im;i+) printf(请输入职工号: ); scanf(%d,&emi.num); printf(请输入姓名: ); scanf(%s,&emi.
5、name); getchar(); printf(请输入基本工资: ); scanf(%d,&emi.jbgz);printf(请输入职务工资: ); scanf(%d,&emi.zwgz); printf(请输入津贴: ); scanf(%d,&emi.jt); printf(请输入医疗保险: ); scanf(%d,&emi.yb); printf(请输入公积金: ); scanf(%d,&emi.gjj); emi.total=(emi.jbgz)+(emi.zwgz)+(emi.jt)-(emi.yb)-(emi.gjj);/计算总工资 printf(n);/计算总工资 printf(
6、n创建完毕!n); save(m);/保存职工人数m4.4保存数据到文件函数 void save(int m)读取文件employee_list,若文件不存在,打印“打开失败”并退出。若存在,通过循环语句将输入到结构体数组的数据逐个输入磁盘。void save(int m) /*保存文件函数*/ int i; FILE*fp; /声明fp是指针,用来指向FILE类型的对象 if (fp=fopen(employee_list,wb)=NULL) /打开职工列表文件为空 printf (打开失败n); exit(0); for (i=0;im;i+) /*将内存中职工的信息输出到磁盘文件中去*/
7、 if (fwrite(&emi,sizeof(struct employee),1,fp)!=1)/写入数据块 &emi:是要输出数据的地址 sizeof(struct employee):获取一个单体的长度 1:数据项的个数 fp:目标文件指针 printf(文件读写错误n); fclose(fp);/ 缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区4.5从文件读数据函数 int load()打开文件employee_list,若文件不存在,打印“打开失败”并退出。若存在读取文件中的数据,并返回职工人数。int load() /*导入函数 int型*/ FILE*fp
8、; int i=0; if(fp=fopen(employee_list,rb)=NULL) printf (cannot open filen); exit(0); else do fread(&emi,sizeof(struct employee),1,fp); /读取 i+; while(feof(fp)=0); /检测流上的文件结束符 fclose(fp); return(i-1);/返回人数4.6显示记录函数 void display()先通过读取函数的返回值确定职工人数m,再通过循环将员工工资信息逐个打印,当循环次数达到m时退出循环。void display() /*浏览函数*/
9、int i,sum=0; int m=load(); system(cls); printf(职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 n); for(i=0;i=1&t=3) button=1; break; else button=0; printf(输入错误); while(button=0);/回到查询选择项 while(button=1) switch(t)/选择查询方式 case 1:printf(按工号查询n);search_num();break; case 2:printf(按姓名查询n);search_name();break; case 3:mai
10、n();break; default:break; 按照工号查询:void search_num()/按职工号查询 int a; int i,t; int m=load(); printf(请输入要查找的职工号:n); scanf(%d,&a); for(i=0;im;i+) if(a=emi.num) printf(职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 n); printf(n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ,emi.num,emi.name,emi.jbgz,emi.zwgz,emi.jt,emi.yb,emi.g
11、jj,emi.total); break; if(i=m) printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续查询职工号请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2: break; default:break; 按姓名查询:void search_name() char name30; int i,t; int m=load(); printf(请输入姓名:n); scanf(%s,name); for(i=0;im;i+) if(strcmp(emi.name,nam
12、e)=0) printf(n已找到,其记录为:n); printf(职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 n); printf(n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ,emi.num,emi.name,emi.jbgz,emi.zwgz,emi.jt,emi.yb,emi.gjj,emi.total); if(i=m) printf(nn); printf(n); printf(返回查询菜单请按1,继续查询姓名请按2n); scanf(%d,&t); switch(t) case 1:search();break; cas
13、e 2:break; default :break; 4.8删除记录函数 void del()先将职工信息打印出来,然后输入要删除职工的姓名,若该姓名不存在,则显示“查无此人”,如果存在则显示职工信息并且询问是否确认删除,若确定则删除。void del() /*删除函数 */ int m=load(); int i,j,n,t,button; char name20; printf(n 原来的职工信息:n); display(); /显示删除前的员工信息 printf(n); printf(按姓名删除:n); scanf(%s,name); for(button=1,i=0;button&im
14、;i+)/主函数中确定button=1时各函数才可以被调用 if(strcmp(emi.name,name)=0)/按员工姓名查找到某员工 并调出其资料 printf(n此人原始记录为:n);/显示选定员工的信息 printf(职工号 姓名 基本工资 职务工资 津贴 医疗保险 公积金 总工资 n); printf(n %-6d%-6s %-8d %-8d %-8d %-8d %-8d %-8d ,emi.num,emi.name,emi.jbgz,emi.zwgz,emi.jt,emi.yb,emi.gjj,emi.total); printf(n确定删除 请按1,不删除请按0n); scan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工工资 管理 系统 报告 29
限制150内