




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
职工工资管理系统C语言程序设计课程设计指导教师:陈鑫设计者:xx(组长)xx xxx xx xxx专业班级:xx工程073班设计时间: 2 0 14年 6月23一、需求分析随着计算机的飞速发展,它的应用已经十分广泛,它在人们的生产、生活、工作和学习中发挥着重要的作用。例如一个现代化的公司,拥有数千名的员工,那么如何管理这么庞大的职工信息档案呢?这时,开发一个功能完善的职工信息管理系统就必不可少了。从职工的信息的查询到管理实现了自动化的模式,从而提高了工作效率和减少工作中的出错率,对公司内部的员工管理更加方便。系统是为公司财会部门设计的。主要管理的数据包括:职工号 姓名 岗位工资 奖金 扣除 实发。该系统具有的功能是:根据职工号对职工的信息进行录入、查询、删除 、修改、追加、统计、显示等。对各功能模块的界面采用菜单显示方式。本系统具有通用性,即可广泛适用于多单位,多人数,多功能的使用,并且系统采用模块化设计,主体为一个主函数,分别可以调用其他模块,利用不同子模块具有的不同功能,综合完成系统功能,不但主体与子模块间有相互联系,各个子模块间也有相互作用,从而实现了预期的功能。二、人员分工姓名主要负责内容xx (组长)总体设计;数据程序查询主菜单程序xxx 主菜单程序、录入数据程序的编码与调试、 xx 、输出、统计、 xx 删除、追加数据程序的编码与调试xxx修改数据程序的编码与调试三、运行环境硬件环境: CPU(pentium4 2.4Hz)、内存(256MB)、硬盘(80G)软件环境:Windows 98、 Tubro.c 2.0四、系统模块功能1、系统总体框图职工工资管理系统输入职工记录查询职工记录修改职工记录删除职工记录追加职工记录输出职工记录统计工资情况退出系统2、模块设计在我们设计的程序中:首先是定义了一个输入输出头文件,接着是一个宏定义,下面是函数声名部分,用struct emploee Char no5;char name8;int post-wage;int prize;int deductint net pay;结构体存储和录入该程序的所有数据,并把信息写到文件emp.dat中,保存在磁盘中方便以后使用。主函数部分包括设计的全部信息,有指导教师、设计者以及设计时间,之后是输出主菜单和调用函数,退出程序。此程序中包含的功能有:输入模块、查询模块、修改模块、删除模块、统计模块、输出模块、追加模块,各个功能设计如下:输入模块:该模块是实现对职工号 姓名 岗位工资 奖金 扣除 实发的录入并保存到文件“emp ”中。模块中运用void input()调用函数展开对文件的使用。模块首先定义一个指针文件,又以写的方式打开此文件,在打开的文件中输入要管理的职工人数,用一个for循环按照职职工号 姓名 岗位工资 奖金 扣除 实发的格式循环获取职工的记录,接着又用了一个for循环将职工记录写入文件“emp ”中,关闭文件。查询模块:实现按职工号查询每个职工的信息,查询显示:职工号 姓名 岗位工资 奖金 扣除 实发。模块开始是一个二级子菜单,一个是实现按职工号查询,另一个是选择退出返回主菜单,此处是利用switch选择语句。选择按职工号查询,首先是以只读的方式打开文件“emp”,然后输入要查询的职工号,用一个for循环来控制查询的人数,之后在显示器上显示职工信息,程序如下:printf(职工号 姓名 岗位工资 奖金 扣除 实发n); printf(%6d%9s%6d%6d%6d%6dn,empi.no,,empi.post-wage,empi. prize,empi.deduct, pay);然后关闭文件。查询职工信息已完成。修改模块:该模块实现按职工号对职工所有信息的修改。模块开始是一个二级子菜单,一个是按职工号修改,另一个是选择退出返回主菜单,此处是利用switch选择语句。选择按职工号修改,首先是以读写的方式打开文件“emp”。输入要修改的职工号,用一个for循环来控制输入的数量,循环如下:for(i=0;fread(&empi,sizeof(struct emploee),1,fp);i+) if(!strcmp(empi.no,num)break; 则会出现该职工的信息如下:printf(记录号 职工号 姓名 性别 年龄 工资n);printf(%6d%6s%9s%4s%5d%6dn,i+1,empi.no,,empi.sex,empi.age,empi.salar); 然后对职工的信息进行修改,就可获得新的职工记录。之后文件指针指向该修改的记录开头,此时用newemp覆盖当前记录,修改完成时系统会显示修改后的文件数据:记录号、 职工号、 姓名 、性别 、年龄 、工资,然后关闭文件。修改职工信息已完成。删除模块:该模块实现按职工号对职工所有信息的删除。模块开始是一个二级子菜单,一个是按职工号删除记录,另一个是选择退出返回主菜单,此处是利用switch选择语句。选择按职工号删除记录,首先是只读的方式打开一个二进制文件“emp”。就会显示删除前的职工信息程序如下:printf(删除前:n); printf(记录号 职工号 姓名 性别 年龄 工资n); for(n=0;fread(&empn,sizeof(struct emploee),1,fp);n+)printf(%6s%6s%9s%4s%5d%6dn,n+1,empn.no,,empn.sex,empn.age,empn.salar);输入要删除的职工号,如果存在由fp=fopen(emp,w+); if(n=1) fclose(fp); exit(3);执行删除命令:使用for(j=i+1;jn;j+) fwrite(&empj,sizeof(struct emploee),1,fp);循环依次改后职工信息写入文件,显示删除后文件中的职工信息。最后可以关闭文件,删除职工信息已完成。统计模块:根据输入的工资,显示大于该工资的职工的所有信息。模块中运用void stat ()调用函数展开对文件的使用。首先是以只读的方式打开文件“emp”。输入职工的工资数,运用for循环根据输入的工资,显示大于该工资的职工的所有信息。关闭文件,统计完成。输出模块:该模块实现按职工号输出职工的所有信息。在该模块中运用void output()调用函数展开对文件的使用。首先以只读的方式打开一个文本文件”emp”。操作无误则用for循环输出正在查询职工的:记录号 职工号 姓名 性别 年龄 工资。这些完成后用fclose(fp)函数关闭文件。模块运行结束。追加模块:该模块实现添加职工的信息。在该模块中运用void run()调用函数展开对文件的使用。首先以读写的方式为读写打开一个二进制的文件“emp”。输出“要追加的职工人数”待输入要追加的个数后,用for循环控制待输入的职工信息。用fwrite(&newemp,sizeof(struct emploee),1,fp)将该职工记录写入文件。用fclose(fp)函数关闭文件,模块运行结束。五、使用说明启动后屏幕上会提示要求输入职工号如果输入错误就会显示查无此人;输入错误字符显示“WRONG”。输入后屏幕上提示登陆成功以及显示下面菜单 1输入职工记录2查询职工记录3修改职工记录4删除职工记录5输出职工记录6统计工资情况7追加职工记录8结束使用0退出系统如果你要执行某一功能,就按下该功能所对应的数字即可。职工信息输入:在主菜单中输入1则系统会进入新界面并自动提示你输入职工号,输入完成后按回车键系统会逐一提示输入 姓名 性别 年龄 工资,输入完成后会继续提示输入下一个职工的职工号。职工信息查询:在主菜单中输入2 则进入查询子菜单界面,屏幕上会按先后顺序显示输入的记录,并统计输入的个数。此时在界面里出现数字1和0。系统会提示你选择(0-1)。输入1后则进入按职工号查询职工信息,此时系统会自动提示你输入要查询的职工号。输入职工号后会出现该职工的信息。输入错误职工号,显示查无此人;输入错误字符显示“WRONG”。 输入0则返回主菜单。职工信息修改:在主菜单中输入3则 系统进入修改子菜单界面。此时在界面里出现数字1和0。系统会提示你选择(0-1)。输入1是按职工号修改职工信息,系统会自动提示你输入要修改的职工号,然后进行修改。修改成功显示已修改后的文件数据;输入错职工号显示查无此人;输入错误字符显示 “WRONG”。 输入0是返回主菜单。职工信息删除:在主菜单中输入4系统界面是删除子菜单。系统会提示你选择(0-1)。输入1则按职工号删除记录,系统会自动提示你输入要删除的职工信息,进入新界面后系统会提示你删除前该职工的信息包括记录号 、职工号、姓名、 性别 、年龄 、工资等。输入错误职工号,显示没有该职工号的职工。输入错误字符显示 “WRONG”。一个记录已经删除了时系统会提示删除后的职工信息。输入0则返回主菜单。职工信息追加: 进入后系统会自动提示你要输入职工的个数,按照输入格式:职工号、 姓名 、性别 、年龄、 工资输入职工的信息,这样就获取一个职工的记录,并将该职工记录自动写入文件,如果想退出此系统可以按“0” ,就可以退出此系统了。职工信息输出:在主菜单中输入5系统界面是输出菜单界面,按照输入格式:职工号、 姓名 、性别 、年龄、 工资,逐个的输出职工的信息,输出所有职工信息后系统自动退出。职工信息统计:在主菜单中输入6系统界面是统计菜单界面,输入工资数,显示大于该工资的职工的所有信息。关闭文件。退出系统:在使用各个功能后输入0则返回主菜单。在主菜单中输入0则退出系统。并显示 “ 谢 谢 使 用 ! ”。注意事项:运行本程序之前,应当先运行附带的子程序,为文件*fp赋初值。六、结束语接到C语言课程设计的作业我十分高兴,终于学到的东西可以运用了。在老师的指导和大家的共同努力下,我们终于完成了程序的大体编制。程序中包括主函数、输入模块、查询模块、修改模块、删除模块、统计模块、输出模块、追加模块。其中在输入模块中指针文件运用的比较好,因为指针是C的一个特色,它能有效的表示复杂的数据结构,动态的分配内存,方便的使用字符串、数组,可谓是C的精华。在程序设计中我们最大的收获就是:我们真正从实践的角度体会到了C语言在实际生活中的作用,也深刻体会到了它带来的方便快捷。不但使我们对C语言有更进一步的巩固和认识还使我们懂得了团队协作的重要!让我们将一年所学的C语言知识学为所用,让我们感觉到了它的神奇魅力。美中不足的就是:由于我们知识的不足以及条件的限制,本系统还有许多漏洞与不足,希望老师给以批评与帮助,我们会积极改正。而且本程序还处于初级阶段的职工工资管理功能中,只实现了对职工工资的录入、删除、修改、查询、统计、显示等简单功能,功能较简单,不一定在实际中有大的用途,程序编排中可能有烦琐之处有待进一步简化。七、源程序代码/*源程序:职工工资管理系统*/#include#define NUM 100void input();void search();void search_num();void dele();void dele_name();void dele_num();void modi();void modi_num();void output();void stat();void fun();void run();struct emploee /*职工数据结构*/char no5;char name8;char sex3;int age;int salar;empNUM,newemp;main()int x;printf( 1. 输入职工记录n);printf( 2. 查询职工记录n);printf( 3. 修改职工记录n);printf( 4. 删除职工记录n);printf( 5. 打印职工记录n);printf( 6. 调查工资情况n);printf( 7. 追加职工记录n);printf( 8. 结束使用n);printf( 0. 退出系统n);printf(n);printf(* 欢迎使用职工工资管理系统 *n);printf(请选择(0-8):n);scanf(%d,&x);switch(x) case 1: input();break; case 2: search();break; case 3: modi();break; case 4: dele();break; case 5: output();break; case 6: stat();break; case 7: run();break; case 8: fun();break; default:printf(n Wrong!); if(x=0)break;void input() FILE *fp; int n,i; if (fp=fopen(emp,wb)=NULL) printf(不能建立emp文件n); exit(1); printf(输入职工人数:); scanf(%d,&n); printf(输入格式:职工号 姓名 性别 年龄 工资n); for(i=0;in;i+) /* 循环获取n个职工记录 */ printf(第%d个职工:,i+1); scanf(%s%s%s%d%d,empi.no,,empi.sex, &empi.age,&empi.salar); for(i=0;i=num) printf(%6d%6s%9s%4s%5d%6dn,n+1,empn.no,,empn.sex, empn.age,empn.salar); fclose(fp);/*删除模块*/void dele() int x; while(1) printf(nntt删除子菜单n); printf(tt*n); printf(tt 1.按职工号删除记录n); printf(tt 0.返回主菜单n); printf(tt*n); printf(t 请选择(0-1):); scanf(%d,&x); switch(x) case 1:dele_num();break; default:printf(nWrong!); if(x=0)break; void dele_num() FILE *fp; int i,j,n; char num5; if(fp=fopen(emp,rb)=NULL) printf(不能打开emp文件n); exit(1); printf(删除前:n); printf(记录号 职工号 姓名 性别 年龄 工资n); for(n=0;fread(&empn,sizeof(struct emploee),1,fp);n+) printf(%6s%6s%9s%4s%5d%6dn,n+1,empn.no,,empn.sex, empn.age,empn.salar); /*n为emp文件中记录数*/ printf(要删除的职工号:); scanf(%s,num); for(i=0;(strcmp(empi.no,num)!=0&i=n) printf(t没有%s职工号的职工n,num); exit(2); fclose(fp); fp=fopen(emp,w+); if(n=1) /*一个记录已经删除了*/ fclose(fp); exit(3); for(j=0;ji;j+) fwrite(&empj,sizeof(struct emploee),1,fp); for(j=i+1;jn;j+) fwrite(&empj,sizeof(struct emploee),1,fp); printf(删除后:n); fseek(fp,0,SEEK_SET); printf(记录号 职工号 姓名 性别 年龄 工资n); for(i=0;fread(&empi,sizeof(struct emploee),1,fp);i+) printf(%6s%6s%9s%4s%5d%6dn,i+1,empi.no,,empi.sex, empi.age,empi.salar); fclose(fp);/*修改模块*/void modi() int x; while(1) printf(nntt修改子菜单n); printf(tt*n); printf(tt1. 按职工号修改n); printf(tt0. 返回主菜单n); printf(tt*n); printf(t请选择(0-1):); scanf(%d,&x); switch(x) case 1:modi_num();break; default:printf(n输错误!);if(x=0)break;void modi_num() FILE *fp; int i,j; char num5; if(fp=fopen(emp,rb+)=NULL) printf(不能 打开emp文件n); exit(1); printf(要修改的职工号:); scanf(%s,num); for(i=0;fread(&empi,sizeof(struct emploee),1,fp);i+) if(!strcmp(empi.no,num)break; if(feof(fp) printf(t没有%s职工号的职工n,num); exit(2); printf(记录号 职工号 姓名 性别 年龄 工资n); printf(%6d%6s%9s%4s%5d%6dn,i+1,empi.no,,empi.sex, empi.age,empi.salar); printf(输入格式:职工号 姓名 性别 年龄 工资n); printf(第%d个记录:,i+1); scanf(%s%s%s%d%d,newemp.no,,newemp.sex,&newemp.age, &newemp.salar);/*获取新的职工记录*/ fseek(fp,-(long)sizeof(struct emploee),SEEK_CUR); /*文件指针指向该修改的记录开头*/ fwrite(&newemp,sizeof(struct emploee),1,fp);/*用newemp覆盖当前记录*/ printf( 修改后:n); fseek(fp,0,SEEK_SET);/*显示修改后的文件数据*/ printf(记录号 职工号 姓名 性别 年龄 工资n); for(i=0;fread(&empi,sizeof(struct emploee),1,fp)!=0;i+) printf(%6d%6s%9s%4s%5d%6dn,i+1,empi.no,,empi.sex, empi.age,empi.salar); fclose(fp);/*查询模块*/void search( ) int x; while(1) printf(nntt查子菜单n); printf(tt*n); printf(tt 1.按职工号查询n); printf(tt 0.返回主菜单n); printf(tt*n); printf(t请选择(0-1):); scanf(%d,&x); switch(x) case 1:search_num();break; default :printf(n Wrong!); if(x=0) break;void search_num() FILE *fp; int i; char num; if(fp=fopen(emp,rb)=NULL) printf(不能打开emp文件n); exit(1); printf(要查询的职工号:); scanf(%s,num); for(i=0;fread(&empi,sizeof(struct emploee),1,fp);i+) if(!strcmp(empi.no,num) b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肿瘤影像组学分析-洞察及研究
- 2025中级导游等级考试(汉语言文学知识)复习题及答案
- 2025年征兵心理纸笔测试试题及答案
- 航空燃油喷射工程中的环境影响分析-洞察及研究
- 农遗法律保护框架-洞察及研究
- 2025年度员工正式聘用合同协议
- 2025年度供货协议合同
- 德阳高二期末考试卷子及答案
- 出入境检验检疫
- 2025建筑混凝土用碎石采购合同
- GB/T 20801.6-2020压力管道规范工业管道第6部分:安全防护
- GB/T 19355.2-2016锌覆盖层钢铁结构防腐蚀的指南和建议第2部分:热浸镀锌
- 主编-孙晓岭组织行为学-课件
- 核心素养视角下教师专业发展课件
- 企业信用信息公告系统年度报告模板:非私营其他企业
- 施工员钢筋工程知识培训(培训)课件
- 质量管理体系审核中常见的不合格项
- 共用水电费分割单模板
- 《阿房宫赋》全篇覆盖理解性默写
- 学校体育学(第三版)ppt全套教学课件
- NCStudioGen6A编程手册
评论
0/150
提交评论