![C语言课设——职工工资管理系统 2_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/d51c4f26-2827-4e8d-b430-5222cdb3e737/d51c4f26-2827-4e8d-b430-5222cdb3e7371.gif)
![C语言课设——职工工资管理系统 2_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/d51c4f26-2827-4e8d-b430-5222cdb3e737/d51c4f26-2827-4e8d-b430-5222cdb3e7372.gif)
![C语言课设——职工工资管理系统 2_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/d51c4f26-2827-4e8d-b430-5222cdb3e737/d51c4f26-2827-4e8d-b430-5222cdb3e7373.gif)
![C语言课设——职工工资管理系统 2_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/d51c4f26-2827-4e8d-b430-5222cdb3e737/d51c4f26-2827-4e8d-b430-5222cdb3e7374.gif)
![C语言课设——职工工资管理系统 2_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-1/30/d51c4f26-2827-4e8d-b430-5222cdb3e737/d51c4f26-2827-4e8d-b430-5222cdb3e7375.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1 .引言2 .系统总体设计1. 程序功能2程序功能图3主函数流程图3 .程序详细设计1. 添加职工信息函数的实现2. 查看职工信息函数的实现3. 查找职工信息函数的实现4. 删除职工信息函数的实现5. 统计职工工资函数的实现6. 修改函数的实现7. 保存数据函数的实现8. 作者信息函数的实现9. 退出程序4 .总结五.附录一 引言C语言是Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。设计一个程序的
2、过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数、结构体和文件等,然后确定处理过程。本课题中主要应用了C语言中的数组、结构体、文件等关键技术。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型;结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构,在结构体中的变量,可以是相
3、同、部分相同,或完全不同的数据类型,结构体只能描述一个对象的状态,不能描述一个对象的行为。文件是一种组织外部存储介质上的数据的数据类型。它具有两个特征:一是对一个数据集合可以用一个名字命名;二是保存在外部存储介质上,可以长期保存。通过此次课设可以锻炼学生理论联系实际能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解,并达到如下目的:1.熟悉C语言程序的编辑、编译链接和运行的过程。 2.熟练运用if语句和switch语句以及嵌套应用。3.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。4. 掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等
4、文件基本操作函数。5.掌握结构体类型变量、数组的定义和使用。6. 掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。二 系统总体设计2.1程序功能(1)添加职工信息 (2)查看职工信息 (3)查找职工信息 (4)删除职工信息 (5) 统计职工信息 (6) 修改职工信息 (7) 保存数据 (8) 作者信息 (0)退出 2.2程序功能图职工工资管理系统作者信息保存数据修改职工信息查看职工信息查找职工信息删除职工信息退出统计职工信息添加职工信息图1 程序功能图2.3主函数流程图选择8作者信息选择0退出结束统计职工信息删除职工信息修改职工信息选择6选择5选择4按姓名按工
5、号保存数据选择7按姓名按工号选择3选择2选择1查找职工信息添加职工信息查看职工信息按姓名按工号主菜单开始选择操作图2 程序流程图主函数源代码:void main()int choose=0;while(true) show();printf("tt=>请选择:");scanf("%d",&choose);system("cls");switch(choose)case 0: exit(0);/退出break; case 1: add();back();/添加职工信息break; case 2: see();back();
6、/查看职工信息break; case 3: search();back();/ 查找职工信息 break;case 4: del(); back();/删除职工信息break;case 5: statistics();back();/统计职工工资break;case 6: modify();back();/修改职工信息break; case 7:reserve();back();/保存数据 break;case 8:author();back();/作者信息break;default:break;fflush(stdin);getchar();system("cls");三
7、 程序详细设计3.1添加职工信息函数的实现添加记录前如图3所示。图3 添加记录前效果图输入两条记录信息:选择1,回车。输入记录如图4所示。图4 输入记录效果图添加后如图5所示。图5 添加记录后效果图添加函数代码流程图,如图6所示。定义数据类型numberTemp,ii<numberTempi+添加成功输出职工信息开始结束图6 添加函数流程图添加源代码:/添加职工信息void add() int numberTemp=0;int i=0;struct worker temp; printf("请输入要添加职工个数:");scanf("%d",&
8、;numberTemp);for(i=0;i<numberTemp;i+)printf("输入第%d个职工信息n",i+1);printf("姓名:");scanf("%s",);printf("工号:");scanf("%s",temp.ID);printf("基本工资:");scanf("%d",&temp.salary1);printf("职务工资:");scanf("%d",&
9、amp;temp.salary2);printf("津贴:");scanf("%d",&temp.salary3);woNumber+=temp; /写入到数组bc(&temp); /写入到文件printf("添加成功n");3.2 查看职工信息函数的实现查看记录前如图7所示。图7查看记录前效果图输入一条记录信息:如图8所示:图8输入记录效果图查看记录后如图9所示。图9查看记录后效果图查看函数代码流程图,如图10所示。定义i=0i<Number输出职工信息开始结束图10查看函数流程图查看源代码:/查看职工信息vo
10、id see() int i=0;printf("以下是全部职工n");printf("t姓名t工号t基本工资t职务工资t津贴n");while(i<Number)printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.salary1,woi.salary2,woi.salary3);i+;3.3 查找职工信息函数的实现查找记录前如图11所示。图11查找记录前效果图输入一条记录信息:选择3,回车如图12所示。图12输入记录效果图查找记录后如图13所示。图13查找记录后效果图查找函数代码流程
11、图,如图14所示。定义n=0如果n=1如果n=2按姓名查找终止按工号查找终止输入错误终止开始结束输入n图14查找函数流程图查找源代码:/查找职工信息void search() int n=0;printf("1 按姓名查找n");printf("2 按工号查找n"); scanf("%d",&n);switch(n)case 1: xmcz();break;case 2: ghcz();break;default: printf("输入错误!n");break; void xmcz()/按姓名查找 char
12、 name30;int i=0;printf("请输入要查找职工姓名:");scanf("%s",name);system("cls");printf("t姓名t工号t基本工资t职务工资t津贴n");for (i=0;i<Number;i+)if (strcmp(name,)=0)printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.salary1,woi.salary2,woi.salary3);void ghcz()/按工号查找
13、 char id10;int i=0;printf("请输入要查找职工工号:");scanf("%s",id);system("cls");printf("t姓名t工号t基本工资t职务工资t津贴n");for (i=0;i<Number;i+)if (strcmp(id,woi.ID)=0)printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.salary1,woi.salary2,woi.salary3);3.4 删除职工信息函数的实现删除记录前
14、如图15所示。图15删除记录前效果图输入一条记录信息:选择4,回车后, 如图16所示:图16输入记录效果图删除记录后如图17所示。图17删除记录后效果图删除函数代码流程图,如图18所示。定义n=0如果n=1如果n=2按姓名删除终止按工号删除终止开始结束输入n图18删除函数流程图删除源代码:/删除职工信息void del() int n=0;printf("1 按姓名删除n");printf("2 按工号删除n");scanf("%d",&n);switch(n)case 1: xmsc();break;case 2: ghsc
15、();break;void xmsc()/按姓名删除 FILE *fp=NULL;char name30;int i=0;int j=0;printf("请输入要删除的职工姓名:");scanf("%s",name);for(i=0;i<Number;i+)if (strcmp(name,)=0)for (j=i;j<Number-1;j+)woj=woj+1;Number-;/将剩余数据写入文件 擦除以前的数据fp=fopen("C:/worker.dat","wb");for (i=
16、0;i<Number;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;i<Number;i+)if (strcmp(id,woi.ID)=0) for (j=i;j<Number-1;j+)woj=woj+1;N
17、umber-;/将剩余数据写入文件 擦除以前的数据fp=fopen("C:/worker.dat","wb");for (i=0;i<Number;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);printf("删除成功;n");3.5 统计职工工资函数的实现统计记录前如图19所示。图19统计记录前效果图输入一条记录信息:如图20所示:图20输入记录效果图统计记录后如图21所示。图21统计后前效果图统计函数代码流程图,如图22所示。定义i=0For函数初始值i=
18、0i<Numberi+For函数初始值i=0i<Numberi+输出员工平均工资循环体循环体开始结束输出员工总工资图22统计函数流程图统计源代码:/统计职工工资void statistics() int i=0;double s=0.0;double sum100;for(i=0;i<Number;i+)sumi=woi.salary1+woi.salary2+woi.salary3;printf("%s的总工资为:%fn",,sumi);for(i=0;i<Number;i+)s+=sumi;printf("平均工资为:%
19、fn",s/Number); 3.6修改函数的实现修改记录前如图23所示。图23修改记录前效果图输入一条记录信息:如图24所示:图24输入记录效果图修改记录后如图25所示。图25修改记录后效果图修改函数代码流程图,如图26所示。定义mode=0如果mode=1如果mode=2按姓名修改终止按工号修改终止输入错误终止开始结束输入mode图26修改函数流程图修改源代码:/修改职工信息void modify() int mode=0;printf("请选择修改查找方式n");printf("1 按姓名查找修改n"); printf("2 按
20、工号查找修改n"); scanf("%d",&mode);switch(mode)case 1: xmxg();break;case 2: ghxg();break;default: printf("输入错误!n");break; void xmxg()/按姓名修改 FILE *fp=NULL;char name30;int i=0;printf("请输入要修改的职工姓名:");scanf("%s",name);for (i=0;i<Number;i+)if (strcmp(name,woi
21、.name);elsebreak;printf("t姓名t工号t基本工资t职务工资t津贴n");printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.salary1,woi.salary2,woi.salary3);printf("请重新输入该职工信息");printf("姓名:");scanf("%s",);printf("工号:");scanf("%s",woi.ID);printf("
22、;基本工资:");scanf("%d",&woi.salary1);printf("职务工资:");scanf("%d",&woi.salary2);printf("津贴:");scanf("%d",&woi.salary3);/信息修改后重新更新文件里面的数据 以保持数据一致性fp=fopen("C:/worker.dat","wb");for (i=0;i<Number;i+)fwrite(&woi,si
23、zeof(struct worker),1,fp);fclose(fp);void ghxg()/按工号修改 FILE *fp=NULL;char id30;int i=0;printf("请输入要修改的职工工号:");scanf("%s",id);for (i=0;i<Number;i+)if (strcmp(id,woi.ID);elsebreak;printf("t姓名t工号t基本工资t职务工资t津贴n");printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.
24、salary1,woi.salary2,woi.salary3);printf("请重新输入该职工信息");printf("姓名:");printf("姓名:");scanf("%s",);printf("工号:");scanf("%s",woi.ID);printf("基本工资:");scanf("%d",&woi.salary1);printf("职务工资:");scanf("%
25、d",&woi.salary2);printf("津贴:");scanf("%d",&woi.salary3);/信息修改后重新更新文件里面的数据 以保持数据一致性fp=fopen("C:/worker.dat","wb");for (i=0;i<Number;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);printf("t=>修改成功n");3.7保存数据函数的实现保存记录前如图27所示
26、。图27保存记录前效果图输入一条记录信息:图28输入记录效果图保存记录后如图29所示。图29保存记录后效果图保存源代码:/保存数据void reserve()printf("t=程序在运行时已自动保存.n");void back()printf("t=>按Enter键返回主菜单n");3.8作者信息函数的实现作者记录前如图30所示。图30作者记录前效果图输入一条记录信息:如图31所示: 图31输入记录效果图作者记录后如图32所示。图32作者记录后效果图作者源代码:/作者信息void author()printf("t*nn");
27、printf("t铜陵学院nn");printf("t信息管理与信息系统nn");printf("t*制作nn");printf("t*nn");3.9退出程序操作前如图33所示。图33作者记录前效果图输入一条记录信息:如图34所示: 图34输入记录效果图回车后:如图35所示按任意键即可退出。图35输入记录后效果图四 总结通过这几天的努力,职工工资管理系统的设计已基本完成。在本次课程设计中,我充分领略了C语言功能的强大,包括函数、数组、指针、结构体、文件等。职工工资管理系统是一个很实用并且使用广泛的操作系统。此系统
28、可以减少很多工作量,做到设计合理,便于使用,易于操作;界面友好,容错性高,可在很短的时间内,查找出所需的职工工资资料,提高工作效率。该系统具有添加、显示、查询、修改、删除等基本功能,以方便对工资的各项管理操作。每一条记录包括一个职工的工号、姓名、工资等信息,系统的各个功能模块都用函数的形式来实现,可以将职工信息保存在文件中,并从文件中读取出来。总的来说,通过这次程序设计,使我加深了对C语言的认识,进一步熟悉了对C语言功能的灵活运用,而且加深了我对程序的理解和编写能力,通过文献资料和网络资料的帮助,使我对C语言程序设计这一基础学科又一次加深了认识,也意识到了其具有的强大功能和发展前景。这会对以后
29、的学习有所帮助。参考文献 1谭浩强,张基温.C语言程序设计教程M.第3版.高等教育出版社,20062 杨涛C程序设计语言北京:机械工业出版社,20043全国计算机等级考试二级教程: C语言程序设计(2009年版).高等教育出版社附录#include <stdio.h>#include <stdlib.h>#include <string.h>struct workerchar name30;char ID10;int salary1,salary2,salary3;int dq(struct worker wo);void show();void bc(st
30、ruct worker wo);void add(); void see();void search();void ghcz();void xmcz();void del();void xmsc();void ghsc();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)
31、show();printf("tt=>请选择:");scanf("%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: statistics(
32、);back();/统计职工工资break;case 6: modify();back();/修改职工信息break; case 7:reserve();back();/保存数据 break;case 8:author();back();/作者信息break;default:break;fflush(stdin);getchar();system("cls");int dq(struct worker wo)FILE *fp=NULL;int i=0;fp=fopen("C:/worker.dat","rb");while(fread
33、(&woi,sizeof(struct worker),1,fp)i+;fclose(fp);return i;void show()printf("n");printf("t*职工工资管理系统*nn");printf("t*nn");printf("t1 添加职工信息n");printf("t2 查看职工信息n");printf("t3 查找职工信息n");printf("t4 删除职工信息n");printf("t5 统计职工工资n&
34、quot;);printf("t6 修改职工信息n");printf("t7 保 存 数 据n");printf("t8 作 者 信 息n");printf("t0 退 出 系 统nn");printf("t*n");void bc(struct worker *wo)FILE *fp=NULL;fp=fopen("C:/worker.dat","ab+");fwrite(wo,sizeof(struct worker),1,fp);fclose(fp);
35、/添加职工信息void add() int numberTemp=0;int i=0;struct worker temp; printf("请输入要添加职工个数:");scanf("%d",&numberTemp);for(i=0;i<numberTemp;i+)printf("输入第%d个职工信息n",i+1);printf("姓名:");scanf("%s",);printf("工号:");scanf("%s",tem
36、p.ID);printf("基本工资:");scanf("%d",&temp.salary1);printf("职务工资:");scanf("%d",&temp.salary2);printf("津贴:");scanf("%d",&temp.salary3);woNumber+=temp; /写入到数组bc(&temp); /写入到文件printf("添加成功n");/查看职工信息void see() int i=0;pri
37、ntf("以下是全部职工n");printf("t姓名t工号t基本工资t职务工资t津贴n");while(i<Number)printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.salary1,woi.salary2,woi.salary3);i+;/查找职工信息void search() int n=0;printf("1 按姓名查找n");printf("2 按工号查找n"); scanf("%d",&n);swit
38、ch(n)case 1: xmcz();break;case 2: ghcz();break;default: printf("输入错误!n");break; void xmcz()/按姓名查找 char name30;int i=0;printf("请输入要查找职工姓名:");scanf("%s",name);system("cls");printf("t姓名t工号t基本工资t职务工资t津贴n");for (i=0;i<Number;i+)if (strcmp(name,
39、)=0)printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.salary1,woi.salary2,woi.salary3);void ghcz()/按工号查找 char id10;int i=0;printf("请输入要查找职工工号:");scanf("%s",id);system("cls");printf("t姓名t工号t基本工资t职务工资t津贴n");for (i=0;i<Number;i+)if (strcmp(id,woi.ID)=0
40、)printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.salary1,woi.salary2,woi.salary3);/删除职工信息void del() int n=0;printf("1 按姓名删除n");printf("2 按工号删除n");scanf("%d",&n);switch(n)case 1: xmsc();break;case 2: ghsc();break;void xmsc()/按姓名删除 FILE *fp=NULL;char name30;
41、int i=0;int j=0;printf("请输入要删除的职工姓名:");scanf("%s",name);for(i=0;i<Number;i+)if (strcmp(name,)=0)for (j=i;j<Number-1;j+)woj=woj+1;Number-;/将剩余数据写入文件 擦除以前的数据fp=fopen("C:/worker.dat","wb");for (i=0;i<Number;i+)fwrite(&woi,sizeof(struct worker
42、),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;i<Number;i+)if (strcmp(id,woi.ID)=0) for (j=i;j<Number-1;j+)woj=woj+1;Number-;/将剩余数据写入文件 擦除以前的数据fp=fopen("C:/worker.dat
43、","wb");for (i=0;i<Number;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);printf("删除成功;n");/统计职工工资void statistics() int i=0;double s=0.0;double sum100;for(i=0;i<Number;i+)sumi=woi.salary1+woi.salary2+woi.salary3;printf("%s的总工资为:%fn",,sumi);f
44、or(i=0;i<Number;i+)s+=sumi;printf("平均工资为:%fn",s/Number); /修改职工信息void modify() int mode=0;printf("请选择修改查找方式n");printf("1 按姓名查找修改n"); printf("2 按工号查找修改n"); scanf("%d",&mode);switch(mode)case 1: xmxg();break;case 2: ghxg();break;default: printf(&
45、quot;输入错误!n");break; void xmxg()/按姓名修改 FILE *fp=NULL;char name30;int i=0;printf("请输入要修改的职工姓名:");scanf("%s",name);for (i=0;i<Number;i+)if (strcmp(name,);elsebreak;printf("t姓名t工号t基本工资t职务工资t津贴n");printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.salary1,woi.salary2,woi.salary3);printf("请重新输入该职工信息");printf("姓名:");scanf("%s&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆精河县八年级地理下册 第九章 第二节 高原湿地-三江源地区说课稿 (新版)新人教版
- 2025年度教育机构知识产权保护合同范本
- 2025年度凯悦酒店消防应急预案编制及演练合同
- 2025年度新型焊条采购合同范本大全简易版
- 2025年中央空调采购及安装合同样本(三篇)
- 2025年度医疗设备采购合同纠纷起诉书
- 2025年中国建设银行个人住房贷款抵押合同(三篇)
- 2025年度城市综合体建设项目监理合同
- 2025年度建筑工程竣工验收备案合同
- 2025年五年级语文下教学工作总结(二篇)
- 福建省泉州市晋江市2024-2025学年七年级上学期期末生物学试题(含答案)
- 医美注射类知识培训课件
- 2025年春新人教版物理八年级下册课件 第十章 浮力 第4节 跨学科实践:制作微型密度计
- 2025年广电网络公司工作计划(3篇)
- 货运车辆驾驶员服务标准化培训考核试卷
- 财务BP经营分析报告
- 三年级上册体育课教案
- 2024高考物理二轮复习电学实验专项训练含解析
- 暴发性心肌炎的诊断与治疗
- 2024年全国统一高考英语试卷(新课标Ⅰ卷)含答案
- 2022届“一本、二本临界生”动员大会(2023.5)
评论
0/150
提交评论