C语言课程设计报告职工工资系统管理_第1页
C语言课程设计报告职工工资系统管理_第2页
C语言课程设计报告职工工资系统管理_第3页
C语言课程设计报告职工工资系统管理_第4页
C语言课程设计报告职工工资系统管理_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、c语言课程设计报告题 目:职工工资系统管理班 级:统本电信1001班组 名:指导教师:日 期:2011.12.19目 录附录1 每周工作记录附录2 问题记录1 需求分析1.1 问题分析1.2 采用技术1.3 设计目标2 总体设计2.1 系统流程设计3 详细设计3.1 添加职工信息3.2 查看职工信息3.3 查找职工信息3.4 删除职工信息3.5 职工工资排序3.6 统计职工工资3.7 修改职工信息3.8 保存数据3.9 退出系统3.10 作者信息4 设计体会5 参考文献6 时间安排表7 课程设计评定表职工工资管理系统1 需求分析1.1 问题分析此程序需要把职工的姓名,工号和工资输进去,然后根据

2、需求进行查看,查找,删除,排序,修改,统计,保存等功能。1.2 采用技术if语句和switch语句以及嵌套应用 , 数组的定义,指针函数,结构体,函数调用以及输入输出的方法1.3 设计目标1.熟悉c语言程序的编辑、编译链接和运行的过程。 2.熟练运用if语句和switch语句以及嵌套应用。3.学习并掌握c语言定义函数的基本方法、声明函数及调用函数的方法和过程。4. 掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。5.掌握结构体类型变量、数组的定义和使用。6. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。2 总体设计2.1 系

3、统流程设计3 详细设计#include #include #include struct workerchar name30;char id10;int salary1,salary2,salary3;struct worker replace;int dq(struct worker wo);void show();void bc(struct worker wo);void add(); void see();void search();void ghcz();void xmcz();void del();void xmsc();void ghsc();void array();void

4、array_salary1();void array_salary2();void array_salary3() ;void statistics();/统计.void modify();/修改.void ghxg(); void xmxg();void reserve();/储存.void back();void author();struct worker wo100; /保存所有的职工信息int number=0; /记录总的职工人数void main()int choose=0;while(true) /无限循环. show();/(调用函数)printf(tt=请选择:);scan

5、f(%d,&choose);system(cls);/清除界面switch(choose)case 0: exit(0);/退出break; case 1: add();back();/添加职工信息break; case 2: see();back();/查看职工信息break; case 3: search();back();/ 查找职工信息 break;case 4: del(); back();/删除职工信息break;case 5: array();back();/职工工资排序break;case 6: statistics();back();/统计职工工资break;case 7:

6、modify();back();/修改职工信息break; case 8:reserve();back();/保存数据 break;case 9:author();back();/作者信息break;default:/(跳出界面)break;fflush(stdin);/stdin指的是标准输入缓冲区,fflush(stdin)则是刷新标准输入缓冲区,把输入缓冲区里的东西丢弃getchar();system(cls);/清除屏幕信息.int dq(struct worker wo)file *fp=null;/文件类型指针(file)指向文件(*fp)空文件(null)int i=0;fp=f

7、open(c:/worker.dat,rb);/打开文件调用的函数(fopen) 读取二进制文件(rb)while(fread(&woi,sizeof(struct worker),1,fp)i+;fclose(fp);/关闭文件调用的函数return i;/返回.循环.void show()printf( .-=-. .-=-. _ .=w=. .- -. n);printf( / /_-_ / / _ /_-./-_ 乐 n);printf( |=/=| |/ (.)(.) | |=/=| | / | |/ o) (o | n);printf( | o o | _ / | -_,_-_,_

8、-. n);printf( /- / :| v( -=- )v /- / :| 者 n);printf( o_:_o (_) :| (_) (_:|_) o_|_o (_) :| (_) n);printf( - - - - - - - - - - n);printf(t v * vnn);printf(t v vn);printf(t v 1 添加职工信息 vn);printf(t v 2 查看职工信息 vn);printf(t v 3 查找职工信息 vn);printf(t v 4 删除职工信息 vn);printf(t v 5 职工工资排序 vn); printf(t v 6 统计职工工

9、资 vn);printf(t v 7 修改职工信息 vn);printf(t v 8 保 存 数 据 vn);printf(t v 9 作 者 信 息 vn); printf(t v 0 退 出 系 统 vn);printf(t v vnn);void bc(struct worker *wo)file *fp=null;fp=fopen(c:/worker.dat,ab+);/在文件尾部追加可读可写的二进制文件(ab+)fwrite(wo,sizeof(struct worker),1,fp);/写入二进制文件(fwrite)fclose(fp);3.1添加职工信息void add() in

10、t numbertemp=0;/起临时作用的变量int i=0;struct worker temp; printf(请输入要添加职工个数:);scanf(%d,&numbertemp); for(i=0;inumbertemp;i+)printf(输入第%d个职工信息n,i+1);printf(姓名:);scanf(%s,); printf(工号:);scanf(%s,temp.id);printf(基本工资:);scanf(%d,&temp.salary1);printf(职务工资:);scanf(%d,&temp.salary2);printf(津贴:);scanf(%

11、d,&temp.salary3);wonumber+=temp; /写入到数组bc(&temp); /写入到文件(临时保存信息)printf(添加成功n);3.2查看职工信息void see() /查看信息. int i=0; printf(tttt以下是全部职工n);printf(nnt姓名tt工号tt基本工资t职务工资t津贴nn);while(inumber) printf(-n);printf(t%stt%stt%dtt%dtt%dn,,woi. id,woi.salary1,woi.salary2,woi.salary3); i+;printf(-n);3.3查找职工信

12、息void search() int n=0;printf(-n);printf(t*查找职工信息选择*nn);printf( 1 按姓名查找 nn);printf( 2 按工号查找 nn);printf( 0 退出 nn);printf(-n);printf(nnn);printf( 请输入你的选择: nn);scanf(%d,&n);switch(n)case 1: xmcz();break;case 2: ghcz();break; void xmcz()/按姓名查找 char name30;int i=0;printf(请输入要查找职工姓名:);scanf(%s,name);syste

13、m(cls);printf(nnt姓名tt工号tt基本工资t职务工资t津贴n);for (i=0;inumber;i+)if (strcmp(name,)=0)/比较两个字符串的大小printf(-n);printf(nt%stt%stt%dtt%dtt%dn,,woi.id,woi.salary1,woi.salary2,woi.salary3);printf(-n);void ghcz()/按工号查找 (函数调用)char id10;int i=0;printf(请输入要查找职工工号:);scanf(%s,id);system(cls);/清除屏幕.prin

14、tf(nnt姓名tt工号tt基本工资t职务工资t津贴n);printf(-n);for (i=0;inumber;i+)if (strcmp(id,woi.id)=0)printf(t%stt%stt%dtt%dtt%dn,,woi.id,woi.salary1,woi.salary2,woi.salary3);printf(n-n);删除职工信息3.4删除职工信息void del() int n=0;printf(-n); printf(t*删除职工信息选择*nn);printf( 1 按姓名删除 nn);printf( 2 按工号删除 nn);printf( 0 退出 nn

15、);printf(-n);printf(nnn);printf( 请输入你的选择: nn);scanf(%d,&n);switch(n)case 1: xmsc();break;case 2: ghsc();break;void xmsc()/按姓名删除 file *fp=null;char name30;int i=0;int j=0;printf(请输入要删除的职工姓名:);scanf(%s,name);for(i=0;inumber;i+)if (strcmp(name,)=0)for (j=i;jnumber-1;j+)woj=woj+1;number-;/将剩余数据写

16、入文件 擦除以前的数据fp=fopen(c:/worker.dat,wb);for (i=0;inumber;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);printf(删除成功;n);void ghsc()/按工号删除 file *fp=null;char id60;int i=0;int j=0;printf(请输入要删除的职工工号:);scanf(%s,id);for(i=0;inumber;i+)if (strcmp(id,woi.id)=0) for (j=i;jnumber-1;j+)woj=woj+1;number-;

17、/将剩余数据写入文件 擦除以前的数据fp=fopen(c:/worker.dat,wb);for (i=0;i=0&j=3)switch(j) case 1: array_salary1();break; case 2: array_salary2();break; case 3: array_salary3();break; case 0: return; /按基本工资排列(选择法)void array_salary1()int i,j,k;for(i=0;inumber-1;i+)k=i;for(j=i+1;jnumber;j+)if(wok.salary1woj.salary1)k=j;

18、if(k!=i) replace=wok;wok=woi;woi=replace; printf(nnt姓名tt工号tt基本工资t职务工资t津贴nn);for(j=0;jnumber;j+)printf(-n);printf(t%stt%stt%dtt%dtt%dn,,woj.id,woj.salary1,woj.salary2,woj.salary3);printf(-n);/按职位工资排列(冒泡法)void array_salary2()int i,j; for(i=0;inumber;i+)for(j=0;jnumber-i;j+)if(woj.salary2woj+1.

19、salary2) replace=woj;/替代 (replace)woj=woj+1;woj+1=replace; printf(nnt姓名tt工号tt基本工资t职务工资t津贴nn);for(j=0;jnumber;j+)printf(-n);printf(t%stt%stt%dtt%dtt%dn,,woj.id,woj.salary1,woj.salary2,woj.salary3);printf(-n);/按津贴排序(选择法)void array_salary3()int i,j,k; for(i=0;inumber-1;i+)k=i;for(j=i+1;jnumber;

20、j+)if(wok.salary3woj.salary3)k=j;if(k!=i) replace=wok;wok=woi;woi=replace; printf(nnt姓名tt工号tt基本工资t职务工资t津贴nn);for(j=0;jnumber;j+)printf(-n);printf(t%stt%stt%dtt%dtt%dn,,woj.id,woj.salary1,woj.salary2,woj.salary3);printf(-n);/统计职工工资3.6统计职工工资void statistics() int i=0;double s=0.0;double sum100;

21、printf(-n);printf(nttv * vnn);for(i=0;inumber;i+)sumi=woi.salary1+woi.salary2+woi.salary3;printf( %s的总工资为:%.2fnn,,sumi);for(i=0;inumber;i+)s+=sumi;printf(ttv * vnn);printf( 平均工资为:%.2fn,s/number); printf(nttv * vnn);printf(-n);3.7修改职工信息void modify() int mode=0;printf(-n);printf(t*修改职工信息选择*nn)

22、;printf( 1 按姓名修改 nn); printf( 2 按工号修改 nn);printf( 0 退出 nn);printf(-n);printf(nnn);printf( 请输入你的选择: nn);scanf(%d,&mode);switch(mode)case 1: xmxg();break;case 2: ghxg();break; void xmxg()/按姓名修改 file *fp=null;char name30;int i=0;printf(请输入要修改的职工姓名:);scanf(%s,name);for (i=0;inumber;i+)if (strcmp(name,wo

23、);elsebreak;printf(t姓名tt工号tt基本工资t职务工资t津贴n);printf(t%stt%stt%dtt%dtt%dn,,woi.id,woi.salary1,woi.salary2,woi.salary3);printf(请重新输入该职工信息);printf(姓名:);scanf(%s,);printf(工号:);scanf(%s,woi.id);printf(基本工资:);scanf(%d,&woi.salary1);printf(职务工资:);scanf(%d,&woi.salary2);printf(津贴:);scanf

24、(%d,&woi.salary3);/信息修改后重新更新文件里面的数据 以保持数据一致性fp=fopen(c:/worker.dat,wb);for (i=0;inumber;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);void ghxg()/按工号修改 file *fp=null;char id30;int i=0;printf(请输入要修改的职工工号:);scanf(%s,id);for (i=0;inumber;i+)if (strcmp(id,woi.id);elsebreak;printf(t姓名tt工号tt基本工资t职

25、务工资t津贴n);printf(t%stt%stt%dtt%dtt%dn,,woi.id,woi.salary1,woi.salary2,woi.salary3);printf(请重新输入该职工信息);printf(姓名:);printf(姓名:);scanf(%s,);printf(工号:);scanf(%s,woi.id);printf(基本工资:);scanf(%d,&woi.salary1);printf(职务工资:);scanf(%d,&woi.salary2);printf(津贴:);scanf(%d,&woi.salary3);/信息修改后重新更新

26、文件里面的数据 以保持数据一致性fp=fopen(c:/worker.dat,wb);for (i=0;i修改成功n);保存数据3.8保存数据void reserve()printf(nnnnnnnn);printf(tt=程序在运行时已自动保存.n);3.9退出系统void back()printf(nntt=按enter键返回主菜单n);3.10作者信息void author()printf(nnnttv * vnn);printf(ttv 西安欧亚学院 vnn);printf(ttv 电子信息工程 vnn);printf(ttv白党军 胡更伟 王洪来 王兴兴 李泽鹏制作vnn);prin

27、tf(ttv * v);printf(nntt _ _ n);printf(tt. _(9 6)_ ,/ n);printf(tt =_) 祝你快乐! (_=/ n);printf(tt -= =- n);printf(tt n);printf(tt n);printf(tt n);printf(tt n);printf(tt n);4 设计体会通过这几天的努力,职工工资管理系统的设计已基本完成。在本次课程设计中,我充分领略了c语言功能的强大,包括函数、数组、指针、结构体、文件等。职工工资管理系统是一个很实用并且使用广泛的操作系统。此系统可以减少很多工作量,做到设计合理,便于使用,易于操作;界

28、面友好,容错性高,可在很短的时间内,查找出所需的职工工资资料,提高工作效率。该系统具有添加、显示、查询、修改、删除等基本功能,以方便对工资的各项管理操作。每一条记录包括一个职工的工号、姓名、工资等信息,系统的各个功能模块都用函数的形式来实现,可以将职工信息保存在文件中,并从文件中读取出来。总的来说,通过这次程序设计,使我加深了对c语言的认识,进一步熟悉了对c语言功能的灵活运用,而且加深了我对程序的理解和编写能力,通过文献资料和网络资料的帮助,使我对c语言程序设计这一基础学科又一次加深了认识,也意识到了其具有的强大功能和发展前景。这会对以后的学习有所帮助。 通过这次程序的设计,我发现现实的一个简单实际问题要用我们学过的c语言编写并不是一个简单的工作.现实的一个职工管理系统并不能用我们学过

温馨提示

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

评论

0/150

提交评论