




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、职工工资管理系统一C语言程序设计课程设计指导教师:某某设计者:xx(组长)xxxxxxxxxx专业班级:xx工程073班设计时间:2008年9月8,、需求分析随着计算机的飞速发展,它的应用已经十分广泛,它在人们的生产、生活、工作和学习中发挥着重要的作用。例如一个现代化的公司,拥有数千名的员工,那么如何管理这么庞大的职工信息档案呢?这时,开发一个功能完善的职工信息管理系统就必不可少了。从职工的信息的查询到管理实现了自动化的模式,从而提高了工作效率和减少工作中的出错率,对公司内部的员工管理更加方便。系统是为公司财会部门设计的。主要管理的数据包括:职工号姓名岗位工资奖金扣除实发。该系统具有的功能是:
2、根据职工号对职工的信息进行录入、查询、删除、修改、追加、统计、显示等。对各功能模块的界面采用菜单显示方式。本系统具有通用性,即可广泛适用于多单位,多人数,多功能的使用,并且系统采用模块化设计,主体为一个主函数,分别可以调用其他模块,利用不同子模块具有的不同功能,综合完成系统功能,不但主体与子模块间有相互联系,各个子模块间也有相互作用,从而实现了预期的功能。、人员分工姓名主要负责内容xx(组长)总体设计;数据程序查询主菜单程序xxx主菜单程序、录入数据程序的编码与调试、xx、输出、统计、xx删除、追加数据程序的编码与调试xxx修改数据程序的编码与调试三、运行环境硬件环境:CPU(pentium4
3、2.4Hz)、内存(256MB、硬盘(80G)软件环境:Windows98、Tubro.c2.0四、系统模块功能1、系统总体框图工资管理输入职工记录查询职工记录职工记录删除职工记录职工t己录)I输出二职工记录J>工资情况退出系统2、模块设计在我们设计的程序中:首先是定义了一个输入输出头文件,接着是一个宏定义,下面是函数声名部分,用structemploeeCharno5;charname8;intpost-wage;intprize;intdeductintnetpay;结构体存储和录入该程序的所有数据,并把信息写到文件emp.dat中,保存在磁盘中方便以后使用。主函数部分包括设计的全部
4、信息,有指导教师、设计者以及设计时间,之后是输出主菜单和调用函数,退出程序。此程序中包含的功能有:输入模块、查询模块、修改模块、删除模块、统计模块、输出模块、追加模块,各个功能设计如下:输入模块:该模块是实现对职工号姓名岗位工资奖金扣除实发的录入并保存到文件“emp”中。模块中运用voidinput()调用函数展开对文件的使用。模块首先定义一个指针文件,又以写的方式打开此文件,在打开的文件中输入要管理的职工人数,用一个for循环按照职职工号姓名岗位工资奖金扣除实发的格式循环获取职工的记录,接着又用了一个for循环将职工记录写入文件“emp”中,关闭文件。查询模块:实现按职工号查询每个职工的信息
5、,查询显示:职工号姓名岗位工资奖金扣除实发。模块开始是一个二级子菜单,一个是实现按职工号查询,另一个是选择退出返回主菜单,此处是利用switch选择语句。选择按职工号查询,首先是以只读的方式打开文件“emp”,然后输入要查询的职工号,用一个for循环来控制查询的人数,之后在显示器上显示职工信息,程序如下:printf("职工号姓名岗位工资奖金扣除实发n");printf("%6d%9s%6d%6d%6d%6dn",empi.no,,empi.post-wage,empi.prize,empi.deduct,pay)然后关
6、闭文件。查询职工信息已完成。修改模块:该模块实现按职工号对职工所有信息的修改。模块开始是一个二级子菜单,一个是按职工号修改,另一个是选择退出返回主菜单,此处是利用switch选择语句。选择按职工号修改,首先是以读写的方式打开文件“emp。输入要修改的职工号,用一个for循环来控制输入的数量,循环如下:for(i=0;fread(&empi,sizeof(structemploee),1,fp);i+)if(!strcmp(empi.no,num)break;则会出现该职工的信息如下:printf("记录号职工号姓名性别年龄工资n");printf("%6d
7、%6s%9s%4s%5d%6dn",i+1,empi.no,,empi.sex,empi.age,empi.salar);然后对职工的信息进行修改,就可获得新的职工记录。之后文件指针指向该修改的记录开头,此时用newemp覆盖当前记录,修改完成时系统会显示修改后的文件数据:记录号、职工号、姓名、性别、年龄、工资,然后关闭文件。修改职工信息已完成。删除模块:该模块实现按职工号对职工所有信息的删除。模块开始是一个二级子菜单,一个是按职工号删除记录,另一个是选择退出返回主菜单,此处是利用switch选择语句。选择按职工号删除记录,首先是只读的方式打开一个二进制文件“emp
8、o就会显示删除前的职工信息程序如下:printf("删除前:n");printf("记录号职工号姓名性别年龄工资n");for(n=0;fread(&empn,sizeof(structemploee),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);
9、exit(3);执行删除命令:使用for(j=i+1;j<n;j+)fwrite(&empj,sizeof(structemploee),1,fp);循环依次改后职工信息写入文件,显示删除后文件中的职工信息。最后可以关闭文件,删除职工信息已完成。统计模块:根据输入的工资,显示大于该工资的职工的所有信息。模块中运用voidstat()调用函数展开对文件的使用。首先是以只读的方式打开文件“emp,。输入职工的工资数,运用for循环根据输入的工资,显示大于该工资的职工的所有信息。关闭文件,统计完成。输出模块:该模块实现按职工号输出职工的所有信息。在该模块中运用voidoutput()调
10、用函数展开对文件的使用。首先以只读的方式打开一个文本文件”empf。操作无误则用for循环输出正在查询职工的:记录号职工号姓名性别年龄工资。这些完成后用fclose(fp)函数关闭文件。模块运行结束。追加模块:该模块实现添加职工的信息。在该模块中运用voidrun()调用函数展开对文件的使用。首先以读写的方式为读写打开一个二进制的文件“emP'。输出“要追加的职工人数”待输入要追加的个数后,用for循环控制待输入的职工信息。用fwrite(&newemp,sizeof(structemploee),1,fp)将该职工记录写入文件。用fclose(fp)函数关闭文件,模块运行结束
11、。五、使用说明启动后屏幕上会提示要求输入职工号如果输入错误就会显示查无此人;输入错误字符显示“WRONG输入后屏幕上提示登陆成功以及显示下面菜单1输入职工记录2查询职工记录3修改职工记录4删除职工记录5输出职工记录6统计工资情况7追加职工记录8结束使用0退出系统如果你要执行某一功能,就按下该功能所对应的数字即可。职工信息输入:在主菜单中输入1则系统会进入新界面并自动提示你输入职工号,输入完成后按回车键系统会逐一提示输入姓名性别年龄工资,输入完成后会继续提示输入下一个职工的职工号。职工信息查询:在主菜单中输入2则进入查询子菜单界面,屏幕上会按先后顺序显示输入的记录,并统计输入的个数。此时在界面里
12、出现数字1和0。系统会提示你选择(0-1)。输入1后则进入按职工号查询职工信息,此时系统会自动提示你输入要查询的职工号。输入职工号后会出现该职工的信息。输入错误职工号,显示查无此人;输入错误字符显示“WRONG输入0则返回主菜单。职工信息修改:在主菜单中输入3则系统进入修改子菜单界面。此时在界面里出现数字1和0。系统会提示你选择(0-1)。输入1是按职工号修改职工信息,系统会自动提示你输入要修改的职工号,然后进行修改。修改成功显示已修改后的文件数据;输入错职工号显示查无此人;输入错误字符显示“WRONG输入0是返回主菜单。职工信息删除:在主菜单中输入4系统界面是删除子菜单。系统会提示你选择(0
13、-1)。输入1则按职工号删除记录,系统会自动提示你输入要删除的职工信息,进入新界面后系统会提示你删除前该职工的信息包括记录号、职工号、姓名、性别、年龄、工资等。输入错误职工号,显示没有该职工号的职工。输入错误字符显示“WRONG一个记录已经删除了时系统会提示删除后的职工信息。输入0则返回主菜单。职工信息追加:进入后系统会自动提示你要输入职工的个数,按照输入格式:职工号、姓名、性别、年龄、工资输入职工的信息,这样就获取一个职工的记录,并将该职工记录自动写入文件,如果想退出此系统可以按“0”,就可以退出此系统了。职工信息输出:在主菜单中输入5系统界面是输出菜单界面,按照输入格式:职工号、姓名、性别
14、、年龄、工资,逐个的输出职工的信息,输出所有职工信息后系统自动退出。职工信息统计:在主菜单中输入6系统界面是统计菜单界面,输入工资数,显示大于该工资的职工的所有信息。关闭文件。退出系统:在使用各个功能后输入0则返回主菜单。在主菜单中输入0则退出系统。并显示“谢谢使用!注意事项:运行本程序之前,应当先运行附带的子程序,为文件*fp赋初值。六、结束语接到C语言课程设计的作业我十分高兴,终于学到的东西可以运用了。在老师的指导和大家的共同努力下,我们终于完成了程序的大体编制。程序中包括主函数、输入模块、查询模块、修改模块、删除模块、统计模块、输出模块、追加模块。其中在输入模块中指针文件运用的比较好,因
15、为指针是C的一个特色,它能有效的表示复杂的数据结构,动态的分配内存,方便的使用字符串、数组,可谓是C的精华。在程序设计中我们最大的收获就是:我们真正从实践的角度体会到了C语言在实际生活中的作用,也深刻体会到了它带来的方便快捷。不但使我们对C语言有更进一步的巩固和认识还使我们懂得了团队协作的重要!让我们将一年所学的C语言知识学为所用,让我们感觉到了它的神奇魅力。美中不足的就是:由于我们知识的不足以及条件的限制,本系统还有许多漏洞与不足,希望老师给以批评与帮助,我们会积极改正。而且本程序还处于初级阶段的职工工资管理功能中,只实现了对职工工资的录入、删除、修改、查询、统计、显示等简单功能,功能较简单
16、,不一定在实际中有大的用途,程序编排中可能有烦琐之处有待进一步简化。七、源程序代码/*源程序:职工工资管理系统*/#include<stdio.h>#defineNUM100voidinput();voidsearch();voidsearch_num();voiddele();voiddele_name();voiddele_num();voidmodi();voidmodi_num();voidoutput();voidstat();voidfun();voidrun();structemploee/*职工数据结构*/(charno5;charname8;charsex3;in
17、tage;intsalar;empNUM,newemp;main()intx;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&qu
18、ot;);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();bre
19、ak;default:printf("nWrong!");if(x=0)break;voidinput()FILE*fp;intn,i;if(fp=fopen("emp","wb")=NULL)printf("不能建立emp文件n");exit(1);printf("输入职工人数:");scanf("%d",&n);工资<Enter>n");*/printf("输入格式:职工号姓名性别年龄for(i=0;i<n;i+)/*循环获取
20、n个职工记录(printf("第d个职工:",i+1);scanf("%s%s%s%d%d",empi.no,,empi.sex,&empi.age,&empi.salar);)for(i=0;i<n;i+)/*将n个职工记录写入文件*/fwrite(&empi,sizeof(structemploee),1,fp);fclose(fp);)/*统计模块*/voidstat()FILE*fp;intn,num;if(fp=fopen("emp","rb")=NULL)
21、printf("不能寸丁开emp文件n");exit(1);)printf("工资数:");scanf("%d",&num);printf("记录号职工号姓名性别年龄工资n");for(n=0;fread(&emp,sizeof(structemploee),1,fp);n+)if(empn.salar>=num)printf("%6d%6s%9s%4s%5d%6dn",n+1,empn.no,,empn.sex,empn.age,empn.salar);
22、fclose(fp);)/*删除模块*/voiddele()(intx;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)case1:dele_num();break;default:printf(&q
23、uot;nWrong!");)if(x=0)break;)voiddele_num()FILE*fp;inti,j,n;charnum5;if(fp=fopen("emp","rb")=NULL)(printf("不能才T开emp文件n");exit(1);)printf("删除前:n");printf("记录号职工号姓名性别年龄工资n");for(n=0;fread(&empn,sizeof(structemploee),1,fp);n+)printf("%6s%6
24、s%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);i+)if(i>=n)(printf("t没有%s职工号的职工n",num);exit(2);)fclose(fp);fp=fopen("emp","w+&qu
25、ot;);if(n=1)/*一个记录已经删除了*/(fclose(fp);exit(3);)for(j=0;j<i;j+)fwrite(&empj,sizeof(structemploee),1,fp);for(j=i+1;j<n;j+)fwrite(&empj,sizeof(structemploee),1,fp);printf("删除后:n");姓名性别年龄工资n");fseek(fp,0,SEEK_SET);printf("记录号职工号for(i=0;fread(&empi,sizeof(structemploe
26、e),1,fp);i+)printf("%6s%6s%9s%4s%5d%6dn",i+1,empi.no,,empi.sex,empi.age,empi.salar);fclose(fp);)/*修改模块*voidmodi()(intx;while(1)(printf("nntt修改子菜单n");printf("tt*n");printf("tt1.按职工号修改n");printf("tt0.返回主菜单n");printf("tt*n");printf(&q
27、uot;t请选择(0-1):");scanf("%d",&x);switch(x)(case1:modi_num();break;default:printf("n输错误!");)if(x=0)break;)voidmodi_num()一FILE*fp;inti,j;charnum5;if(fp=fopen("emp","rb+")=NULL)printf("不能打开emp文件n");exit(1);)printf("要修改的职工号:");scanf(&qu
28、ot;%s",num);for(i=0;fread(&empi,sizeof(structemploee),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("输入
29、格式:职工号姓名性别年龄工资<Enter>n");printf("第d个记录:",i+1);scanf("%s%s%s%d%d",newemp.no,,newemp.sex,&newemp.age,&newemp.salar);/*获取新的耳R工记录*/fseek(fp,-(long)sizeof(structemploee),SEEK_CUR);/*文件指针指向该修改的记录开头*/fwrite(&newemp,sizeof(structemploee),1,fp);/*用newemp覆
30、盖当前t己录*/printf("修改后:n");fseek(fp,0,SEEK_SET);/*显示修改后的文件数据*/printf("记录号职工号姓名性别年龄工资n");for(i=0;fread(&empi,sizeof(structemploee),1,fp)!=0;i+)printf("%6d%6s%9s%4s%5d%6dn",i+1,empi.no,,empi.sex,empi.age,empi.salar);fclose(fp);)/*查询模块*/voidsearch()intx;while(1)p
31、rintf("nntt查子菜单n");printf("tt*n");printf("tt1.按职工号查询n");printf("tt0.返回主菜单n");printf("tt*n");printf("t请选择(0-1):");scanf("%d",&x);switch(x)case1:search_num();break;default:printf("nWrong!");if(x=0)break;voidsearch_num(
32、)FILE*fp;inti;charnum;if(fp=fopen("emp","rb")=NULL)printf("不能寸丁开emp文件n");exit(1);printf("要查询的职工号:");scanf("%s",num);for(i=0;fread(&empi,sizeof(structemploee),1,fp);i+)if(!strcmp(empi.no,num)break;if(feof(fp)printf("t查无此人n");exit(2);printf("记录号职工号姓名性别年龄工资n");printf("%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合作投资充电桩合同范本
- 医院后勤承包合同协议书
- 厨房门窗安装合同协议书
- 公司转让合同协议的范本
- 做美容用不用写合同协议
- 住建部造价咨询合同范本
- 合伙投资渔船协议书合同
- gsp新药品保证协议书
- 喝酒认错人的调解协议书
- 双人合作协议书合同模板
- 2025云南省腾冲市边防办招聘边境专职联防员(10人)笔试备考试题及答案解析
- 湘教版七年级地理上册同步课时教学设计
- 涂装安全知识培训课件
- GB/T 20833.2-2025旋转电机绕组绝缘第2部分:定子绕组绝缘在线局部放电测量
- 2025人教版(PEP)2024一年级上册英语教学计划
- 2025年高考甘肃卷地理试题解读及答案详解讲评(课件)
- 幼儿园保安培训课件
- 2025企业级AI Agent(智能体)价值及应用报告
- 《党政机关厉行节约反对浪费条例》培训课件
- 中外航海文化知到课后答案智慧树章节测试答案2025年春中国人民解放军海军大连舰艇学院
- 新教师跟岗学习实施方案
评论
0/150
提交评论