C语言程序设计说明书.doc_第1页
C语言程序设计说明书.doc_第2页
C语言程序设计说明书.doc_第3页
C语言程序设计说明书.doc_第4页
C语言程序设计说明书.doc_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

员工工资管理系统C语言程序设计课程设计说明书指导教师:耿蕊专业班级: 应化082设计者: 李响 周金娟 解敏 李伟生 设计时间: 2 0 0 9年 9月 员工工资管理系统 一 、需求分析随着计算机的飞速发展,它的应用已经十分广泛,它在人们的生产、生活、工作和学习中发挥着重要的作用。例如一个现代化的公司,拥有数千名的员工,那么如何管理这么庞大的职工信息档案呢?这时,开发一个功能完善的职工信息管理系统就必不可少了。从员工的信息的查询到管理实现了自动化的模式,从而提高了工作效率和减少工作中的出错率,对公司内部的员工管理更加方便。系统是为公司财会部门设计的。主要管理的数据包括:员工姓名、年龄、性别、员工号、实发。该系统具有的功能是:根据职工号对职工的信息进行录入、查询、删除 、修改、追加、统计、等。对各功能模块的界面采用菜单显示方式。本系统具有通用性,即可广泛适用于多单位,多人数,多功能的使用,并且系统采用模块化设计,主体为一个主函数,分别可以调用其他模块,利用不同子模块具有的不同功能,综合完成系统功能,不但主体与子模块间有相互联系,各个子模块间也有相互作用,从而实现了预期的功能。二、系统的软硬件环境1、硬件环境:一般来说586电脑就可以提供并支持系统的使用及运行,此外,若想打印或成稿还需要使用打印机; U盘、软盘也是程序的必要载体。2、软件环境:MS-DOS或Windows环境下安装Turbo C语言系统,安装完毕后即可使用,而且要用到UCDOS。三、系统功能1、系统总体框图职工工资管理系统输入职工记录查询职工记录修改职工记录删除职工记录追加职工记录调查工资情况结束使用退出系统四、模块设计分析:此程序中输入模块:该模块是实现对员工姓名、年龄、性别、员工号、工资的录入并保存到文件“yuangong ”中。查询模块:实现按员工号查询每个员工的姓名、年龄、性别、实发,姓名、员工号、性别、年龄、实发;输入错误员工号,显示查无此人;输入错误字符显示“WRONG” 首先定义一个变量X;进入循环体While;当X=1时,执行函数dele_num();否则,输出”Wrong!”;如果X=0,则跳出While循环。然后,执行dele_num()函数;首先,定义文件指针fp,分别定义变量I,j,n及字符数组num;执行if语句,以读文件的方式打开“yuangong”文件,如果“yuangong”文件等于空,则输出“不能打开yuangong文件”,并退出;以读文件的方式输出删除前的员工信息;然后,输入要删除的员工号,进入for语句,判断文件中的员工号与输入要删除的员工号是否相等,如果相等并且i=最后一个员工号,则输出“没有这个员工号的职工”并退出关闭文件;如果n=1则关闭文件并退出;依次执行for语句,以写文件的方式分别将要删除的员工之前的员工信息和之后的员工信息,分别写入“yuangong”文件,并输出删除后的员工的所有信息;。修改模块:该模块实现按员工号对员工所有信息的修改。修改成功显示已修改后的文件数据;输入错职工号显示查无此人;输入错误字符显示 “WRONG”。 首先定义一个变量X;进入循环体While;当X=1时,执行函数modi_num();否则,输出”输错误!”;如果X=0,则跳出While循环。然后,执行modi_num()函数;首先,定义文件指针fp,分别定义变量I,j,及字符数组num;执行if语句,以读文件的方式打开“yuangong”文件,如果“yuangong”文件等于空,则输出“不能打开yuangong文件”,并退出;在输入要修改的员工号,进入for循环,以读文件的方式打开文件,如果yuangong文件中的员工号与输入的员工号相同,则跳出for循环;然后,执行if语句进行判断文件是否关闭,如果关闭,则输出“没有要修改的员工号的员工”并退出;否则,输出要修改的员工的所有信息;然后,输入要修改的员工的信息;让文件指针指向该修改的记录开头,以向文件中写方式,将修改后的员工信息写入“yuangong”文件中的相应位置;最后,显示修改后的文件数据,并输出文件中的所有信息。删除模块:该模块实现按员工号对员工所有信息的删除。删除成功显示删除后剩下的其他员工的信息;输入错误员工号,显示查无此人。统计模块根据输入的工资,显示大于该工资的员工的所有信息。五、使用说明输入后屏幕上提示登陆成功以及显示下面菜单如果你要执行某一功能,就按下该功能所对应的数字即可。 1、员工信息输入:在主菜单中输入1则系统会进入新界面并自动提示你输入职工号,输入完成后按回车键系统会逐一提示输入 姓名 性别 年龄 工资,输入完成后会继续提示输入下一个职工的职工号。 2员工信息查询:在主菜单中输入2 则进入查询子菜单界面,屏幕上会按先后顺序显示输入的记录,并统计输入的个数。此时在界面里出现数字1和0。系统会提示你选择(0-1)。输入1后则进入按员工号查询员工信息,此时系统会自动提示你输入要查询的职工号。输入员工号后会出现该员工的信息。输入错误员工号,显示查无此人。 输入0则返回主菜单。(1).进入子菜单 (2)选择1查询员工 (3)输入错误工号3员工信息修改:在主菜单中输入3则 系统进入修改子菜单界面。此时在界面里出现数字1和0。系统会提示你选择(0-1)。输入1是按员工号修改员工信息,系统会自动提示你输入要修改的员工号,然后进行修改。修改成功显示已修改后的文件数据;输入错职工号显示查无此人。 输入0是返回主菜单。(1)进入子菜单(2)选择员工号进行修改(3)修改后的结果4员工信息删除:在主菜单中输入4系统界面是删除子菜单。系统会提示你选择(0-1)。输入1则按员工号删除记录,系统会自动提示你输入要删除的员工信息,进入新界面后系统会提示你删除前该员工的信息包括记录号 、员工号、姓名、 性别 、年龄 、工资等。输入错误员工号,显示没有该员工号的员3工。一个记录已经删除了时系统会提示删除后的员工信息。输入0则返回主菜单。(1)进入子菜单 (2)选择进行删除5显示员工记录6调查工资情况输入1500则调出工资大于1500元的员工7员工信息追加: 进入后系统会自动提示你要输入员工的个数,按照输入格式:员工号、 姓名 、性别 、年龄、 工资输入员工的信息,这样就获取一个员工的记录,并将该员工记录自动写入文件,如果想退出此系统可以按“0” ,就可以退出此系统了0退出系统六、结束语接到C语言课程设计的作业我十分高兴,终于学到的东西可以运用了。在老师的指导和大家的共同努力下,我们终于完成了程序的大体编制。程序中包括主函数、输入模块、查询模块、修改模块、删除模块、追加模块。其中在输入模块中指针文件运用的比较好,因为指针是C的一个特色,它能有效的表示复杂的数据结构,动态的分配内存,方便的使用字符串、数组,可谓是C的精华。在程序设计中我们最大的收获就是:我们真正从实践的角度体会到了C语言在实际生活中的作用,也深刻体会到了它带来的方便快捷。不但使我们对C语言有更进一步的巩固和认识还使我们懂得了团队协作的重要!让我们将一年所学的C语言知识学为所用,让我们感觉到了它的神奇魅力。美中不足的就是:由于我们知识的不足以及条件的限制,本系统还有许多漏洞与不足,希望老师给以批评与帮助,我们会积极改正。而且本程序还处于初级阶段的职工工资管理功能中,只实现了对职工工资的录入、参考文献:1谭浩强.C程序设计.清华大学出版社.2005年7月2陈志华.Delphi 6.0编程实例.中国水利水电出版社.2002年6月3David M.Collopy、罗铁庚.C语言教程:模块化程序设计.清华大学出版社. 2004年9月4邓文新、张宏烈.C语言程序设计方法.哈尔滨工业大学出版社.2004年2月5田淑清.全国计算机等级考试二级教程.高等教育出版社.1998年7月组员分工1、组长:李响总体设计;主菜单程序、录入数据程序的编码与调试2、组员:周金娟 修改、删除数据程序的编码与调试 组员:谢敏 显示数据、添加数据程序的编码与调试组员:李伟生数据统计、系统维护程序的编码与调试附录(程序清单)#include#define NUM 8void input();void search();void search_num();void dele();void dele_name();void dele_num();void modi();void modi_num();void output();void stat();void run();struct emploee /*员工数据结构*/char no5;char name8;char sex3;int age;int salar;int gongzi;int jiangjin;int baoxian;int shuijin;yuangongNUM,newyuangong;main()int x;while(1)printf(=* 主菜单 *=n);printf(| 1. 输入员工记录 |n);printf(| 2. 查询员工记录 |n);printf(| 3. 修改员工记录 |n);printf(| 4. 删除员工记录 |n);printf(| 5. 显示员工记录 |n);printf(| 6. 调查工资情况 |n);printf(| 7. 追加员工记录 |n);printf(| 0. 退出系统 |n);printf(n);printf(* 欢迎使用员工工资管理系统 *n);printf(请选择(0-7):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; default:printf(n Wrong!); if(x=0)break;void input() FILE *fp; int n,i; if (fp=fopen(yuangong,wb)=NULL) printf(不能建立yuangong文件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%d%d%d,yuangongi.no,,yuangongi.sex, &yuangongi.age,&yuangongi.gongzi,&yuangongi.jiangjin,&yuangongi.baoxian,&yuangongi.shuijin);yuangongi.salar=yuangongi.gongzi+yuangongi.jiangjin-yuangongi.baoxian-yuangongi.shuijin; for(i=0;i=num) printf(%6d%6s%9s%4s%5d%6d%7d%5d%6dn,n+1,yuangongn.no,,yuangongn.sex, yuangongn.age,yuangongn.salar,yuangongn.gongzi,yuangongn.jiangjin,yuangongn.baoxian,yuangongn.shuijin); 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(yuangong,rb)=NULL) printf(不能打开yuangong文件n); exit(1); printf(删除前:n); printf(记录号 员工号 姓名 性别 年龄 实发 工资 奖金 保险 税金n); for(n=0;fread(&yuangongn,sizeof(struct emploee),1,fp);n+) printf(%6s%6s%9s%4s%5d%6d%7d%5d%6d%6dn,n+1,yuangongn.no,,yuangongn.sex, yuangongn.age,yuangongn.salar,yuangongn.gongzi,yuangongn.jiangjin,yuangongn.baoxian,yuangongn.shuijin); /*n为yuangong文件中记录数*/ printf(要删除的员工号:); scanf(%s,num); for(i=0;(strcmp(yuangongi.no,num)!=0&i=n) printf(t没有%s员工号的职工n,num); exit(2); fclose(fp); fp=fopen(yuangong,w+); if(n=1) /*一个记录已经删除了*/ fclose(fp); exit(3); for(j=0;ji;j+) fwrite(&yuangongj,sizeof(struct emploee),1,fp); for(j=i+1;jn;j+) fwrite(&yuangongj,sizeof(struct emploee),1,fp); printf(删除后:n); fseek(fp,0,SEEK_SET); printf(记录号 员工号 姓名 性别 年龄 实发 工资 奖金 保险 税金n); for(i=0;fread(&yuangongi,sizeof(struct emploee),1,fp);i+) printf(%6s%6s%9s%4s%5d%6d%7d%5d%6d%6dn,i+1,yuangongi.no,,yuangongi.sex,yuangongi.age,yuangongi.salar,yuangongi.gongzi,yuangongi.jiangjin,yuangongi.baoxian,yuangongi.shuijin); 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(yuangong,rb+)=NULL) printf(不能 打开yuangong文件n); exit(1); printf(要修改的员工号:); scanf(%s,num); for(i=0;fread(&yuangongi,sizeof(struct emploee),1,fp);i+) if(!strcmp(yuangongi.no,num)break; if(feof(fp) printf(t没有%s员工号的员工n,num); exit(2); printf(记录号 员工号 姓名 性别 年龄 工资 奖金 保险 税金n); printf(%6d%6s%9s%4s%5d%7d%5d%6d%6dn,i+1,yuangongi.no,,yuangongi.sex, yuangongi.age,yuangongi.gongzi,yuangongi.jiangjin,yuangongi.baoxian,yuangongi.shuijin); printf(输入格式:员工号 姓名 性别 年龄 工资 奖金 保险 税金n); printf(第%d个记录:,i+1); scanf(%s%s%s%d%d%d%d%d,newyuangong.no,,newyuangong.sex,&newyuangong.age, &newyuangong.gongzi,&newyuangong.jiangjin,&newyuangong.baoxian,&newyuangong.shuijin);/*获取新的员工记录*/newyuangong.salar=newyuangong.gongzi+newyuangong.jiangjin-newyuangong.baoxian-newyuangong.shuijin; fseek(fp,-(long)sizeof(struct emploee),SEEK_CUR); /*文件指针指向该修改的记录开头*/ fwrite(&newyuangong,sizeof(struct emploee),1,fp);/*用newyuangong覆盖当前记录*/ printf( 修改后:n); fseek(fp,0,SEEK_SET);/*显示修改后的文件数据*/ printf(记录号 员工号 姓名 性别 年龄 实发 工资 奖金 保险 税金n); for(i=0;fread(&yuangongi,sizeof(struct emploee),1,fp)!=0;i+) printf(%6d%6s%9s%4s%5d%6d%7d%5d%6d%6dn,i+1,yuangongi.no,,yuangongi.sex, yuangongi.age,yuangongi.salar,yuangongi.gongzi,yuangongi.jiangjin,yuangongi.baoxian,yuangongi.shuijin); 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(yuangong,rb)=NULL) printf(不能打开yuangong文件n); exit(1); printf(要查询的员工号:); scanf(%s,num); for(i=0;fread(&yuangongi,sizeof(struct emploee),1,fp);i+) if(!strcmp(yuangongi.no,num) break; if(feof(fp) printf(t查无此人n); exit(2); printf(记录号 员工号 姓名 性别 年龄 实发 工资 奖金 保险 税金n); printf(%6d%6s%9s%4s%5d%6d%7d%5d%6d%6dn,i+1,yuangongi.no,,yuangongi.sex, yuangongi.age,yuangongi.salar,yuangongi.gongzi,yuangongi.jiangjin,yuangongi.baoxian,yuangongi.shuijin); fclose(fp);/*输出模块*/void output()int i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论