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

下载本文档

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

文档简介

1、一引言C语言是Combined Language (组合语言)的中英混合简称。是一种计算机程序设 计语言。 它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应 用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应 用程序。设计一个程序的过 程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:首先要了解这个 问题的基本要求,即输入、输出、完成从输入到输出的要什么;在次我们必须捋清思路,逐一的解 决问题的各个面,即从输入开始入手,着重考虑如从输入导出输出,在这个过程中,可确定所需 的变量、数组、函数、结构体和文件等,然后确定处理过程。本课

2、题中主要应用了 C语言中的数组、结构体、文件等关键技术。在C语言中,数 组属于 构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数 据类型或是构造 类型;结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构,在 结构体中的变量,可以是相同、部分相同,或完全不同的数 据类型,结构体只能描述一个对象的 状态,不能描述一个对象的行为。文件是一种组织外部存储介质上的数据的数据类型。它具有两 个特征:一是对一个数据集合可以用一个名字命名;二是保存在外部存储介质上,可以长期保存。通过此次课设可以锻炼学生理论联系实际能力,提高学生适应实际、实践编程的能力,

3、使对 C语言系统编程有一个大致的了解,并达到如下目的:1 熟悉C语言程序的编辑、编译和运行的 过程。2熟练运用if语句和switch语句以及嵌套应用。3学习并掌握C语言定义函数的基本法、 声明函数及调用函数的法和过程。4.掌握文件的概念以 及文件的定义法,认识文件打开、关闭、 读、写等文件基本操作函数。5掌握结构体类 型变量、数组的定义和使用。6,掌握数组的定义、 引用以及输入输出的法、通过字符数组存储字符串,进一步使用字符串。.资料.资料.资料.开始图2程序流程图主函数源代码:资料.void main() int choose=0;while(true)(shov();printf(&quo

4、t;tt=请选择:");scanf , ftchoose);systemCAlsH);svzitch(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: statisticso ;back();统计职工工资 break;case 6: modifyO;back();修改职工信息break;case

5、 7:reserve();back。;/保存数据 break;case 8:author();back。;/作者信息 break;default:break;)fflush(stdin);getchar();systemC'cls");)三程序详细设计6.1 添加职工信息函数的实现添加记录前如图3所示。*二二二二请选择: * * *12345678。人人人人人人二人急刍 2欠尺2兖 士S青 土言匚言匚匚匚匚匚匚经_!齐很七加雪存 日出aw查删统修保作退 F1X1资料.图3添加记录前效果图输入一条记录信息:选择X回车。输入记录如图4所示。入睇F 一 hr覆谕 姓工基职津息L01

6、资资 12图4输入记录效果图添加后如图5所示。忝一五 , , , 0一 E2塞12叨人第,£ 工 龙孜人名号本1加请曹工基职停图5添加记录后效果图添加函数代码流程图,如图6所示。图6添加函数流程图添加源代码:/添加职工信息void add()int numberlbmp 二 0;int i=0;struct worker temp;printfC 请输入要添加职二个数:");scanfcT; ftnumb erlemp);for(i=0;i<numberlemp;i+)(printf("输入第 d 个职工信息n",i+1); printf (姓名:

7、”);scant ("%s", tern p. name);printf (工号:”);scant ("%s",temp. ID);printf("基本工资:”);scant ("%d", & temp.salaryl);pnntff职务工资:”);scanf ("%d",&temp.salary2);printf (津贴:“);scanf ("%d",&temp.salary3);v/oNumber+=temp; 写入到数组 bc(fttemp); 写入至lj

8、文件printfC添加成功rf);6.2 查看职工信息函数的实现查看记录前如图7所示。 exe哎'HXX'XA职、T世常理系统粉也斤2;松J工公婚打乩玷1J 5 6 7 8 rL 人人人人人人息息息息究息,05 KX11X:数 g系职职职职职职字着个 小、图7查看记录前效果图输入一条记录信息:如图8所示二二请选择;2,图8输入记录效果图查看记录后如图9所示。律贴120 158职务工资150130B 0E 基一。12 的号催工OO2S En工段t 五四需E 李一图9查看记录后效果图查看函数代码流程图,如图10所示。仁始、)定义i二0图1。查看函数流程图查看源代码:查看职工信息vo

9、id see() int i=0;printff以下是全部职工rf);printfCXt姓名壮工号让基本工资壮耿务工资t津贴n");v/hile(i<Number) printf (At%st%st%dtt%dtt%dn,>> woi. name,woi .ID,woi.salary1 ,v/oi.salary2,v/oi, salary3);i+;)6.3 查找职工信息函数的实现查找记录前如图11所示I资管理系 统WiE1二二二二息息息自、一 八自统R T R T = 蚁信系职职职 J乂白出容查则统修保 F色2 sstii晴输入要查找职工姓名;李四图12输入记录效

10、果图查找记录后如图13所示基本工资李四02120= 按丘口 teL犍返回主 菜单职务工资130律贴 150图门查找记录后效果图查找函数代码流程图,如图14所示输入n图14查找函数流程图查找源代码:查找职工信息void search()(int n=0;pnntf("1按姓名查找n");pnntf(“2按工号查找n“); scanff-%dM,&n);switch( n)case 1: xmcz();break;case 2: ghcz();break;default: printf(输入错误!n"); break;)void xmcz()按姓名查找 (ch

11、ar name30;int i=0;printfC请输入要查找职工姓名:”);scanf("%s",name);system("cls");pnntf("t姓名t工号t基本工资t职务工资t津贴n“);for (i=O;i<Number;i+)(if (strcmp(name,)=0)(printf ("t%st%st%dtt%dtt%dn",voi. name,v/oi. ID,woi.salary1 ,v/oi.salary2,v/oi.salary3);)void ghcz()/按工号查找(char

12、 id10;int i=0;printfC请输入要查找职工工号:”);scanf("%s",id);system("cls");printfCV姓名壮工号t基本工资壮职务工资t津贴n”);for (i=O;i<Number;i+)(if (strcmp(id,v/oi.ID)=0)(printf("t%st%st%dtt%dtt%dn",woi. name,v/oi .ID,v/oi.salary1 ,v/oi.salary2,v/oi. salary3);)3.4 删除职工信息函数的实现删除记录前如图15所示。资料.:、兵、父

13、杵c诸言课谀ADLEYD£bugAMEY 山护T份官理系统3- 2,1£妇息息息息究息统1J 1 1数信系职职职 TIJ 4 5 6 7 8 rL rL rL rL rL图15删除记录前效果图输入一条记录信息:选择牛回车后,如图16所示:鲁输入爰删除的职工工号:01图16输入记录效果图删除记录后如图17所示1技姓名ift陈2矜工号册M桀2请删除的职工工号二01删修成功; 按En t e 3键返回主菜单图17删除记录后效果图删除函数代码流程图,如图18所示。定义"0输入n按工号删除终止图18删除函数流程图资料.删除源代码:删除职工信息void del() int n

14、=0;pnntf("1按姓名删除n");pnntf(“2按工号删除n“);scanf("%dw,&n);sv/itch( n)(case 1: xmsc();break;case 2: ghsc();break;)void xmsc()/按姓名删除(FILE 节 p 二 NULL;char name30;int i=0;int j=0;printfC请输入要删除的职工姓名:”);scanf F %s”,name);for(i=0;i<Number;i+)(if (strcmp(name,)=0)for (j=i; j<Numbe

15、r-1;j+)v/oj=v/oj+1;)Number-;)将剩余数据写入文件擦除以前的数据 fp 二 fopen ("C: / /v/orker.datVwb");for (i=O;i<Number;i+)(fv/rite(&woi,sizeof(struct worker), 1,fp);资料.)fclose(fp);printf (删除成功;n");)void ghsc()/按工号删除FILE *fp=NULL;char id 60;int i=0;int j=0;printfC请输入要删除的耿工工号:”);scanf("s”,id);

16、for(i=0;i<Number;i+)(if (strcmp(id,v/oi J D)=0)(for (j=i;j<Number-1;j+)(v/oj=v/oj+1;)Number-;)将剩余数据写入文件擦除以前的数据f p=fopen(MC: / /v/orker.datVv/b");for (i=0;i<Number;i+)(fv/rite(&v/oi,sizeof(struct worker), 1,fp);)fclose(fp);printf ("U 除成功;n");)3.5 统计职工工资函数的实现统计记录前如图19所示。:、兵

17、、父杵c诸言课谀ADLEYD£bugAMEY山护H曲乂口却«=冷陶彤 :,负目 理 系劲带U“松口川/唯"一十卜 妇1J1FL1J4 5 6 7 8 rL rL rL息息息息究息统 片数信系职 巧职职职职字乂白出尊图19统计记录前效果图输入一条记录信息: 如图20所示:图20输入记录效果图统计记录后如图21所示。幸四的总工资为:400 盹盹盹平均工资为:400.000000=按商七e片键返回主菜单图21统计后前效果图统计函数代码流程图,如图22所示,资料.开始图22统计函数流程图统计源代码:统计职工工资void statisticsO资料.int1=0;doubl

18、e s=0.0;double sum100;for(i=0;i<Number;i+)(sumi=woi.salary1+v/oi.salary2+7oi.salary3; printf("%s 的总工资 为:fn”,v/,sumi);)for(i=0;i<Number;i+)s+=sumi;) printfC* 平均工资为:fnM,s/Number);)3.6 修改函数的实现修改记录前如图23所示。2按工号查找修改图23修改记录前效果图输入一条记录信息:如图24所示:2按工号查找修改及莒四亥 修性交 。要 谕)4费I7X15K斫 nJ 谕 重号本 刈旅生|宁

19、勺心 工工02信李四 基本工资 120 二王武职务工资130津贴150图24输入记录效果图修改记录后如图25所示。职务工资230津贴 150以下是全鄙翌工财工号基本工资王武04200二='按Enter键返回主菜单图25修改记录后效果图修改函数代码流程图,如图26所示。图26修改函数流程图修改源代码:修改职工信息void modify() (int niode=0;printfC请选择修改查找式n“);phntfd按姓名查找修改 ");pnntf("2按工号查找修改n");scanf(H%d l,6tmode);switch(mode)(case 1: xm

20、xg();break;case 2: ghxg();break;default: printfC 崎入错误! n");break;)void xmxg()按姓名修改(FILE *fp=NULL;char name30;int i=0;printfC请输入要修改的职工姓名:”);scanf(L%s、,name);for (i=O;i<Number;i+)(if (strcmp(name,);elsebreak;)pnntfC'Xt姓名t工号t基本工资t职务工资t津贴'亍);pnntf(-t%st%st%dtt%dtt%dn-,v/&g

21、t;v/oi.ID,v7oi.salary1 ,v/oi.salary2,woi. salary3);printfC请重新输入该职工信息J;printfC 姓名:);scanf C%s",woi .name);printf (工号:H);scanf(u%s-,7oi.ID);printfC基本工资:“);scanf(H%d j,&woi.salary1);printfC职务工资:);scanf (H%dj,&voi.salary2);printf(津贴:“);scanf (f>%d,&voi.salary3);信息修改后重新更新文件里面的数据以保持数据一

22、致性f p=fopen (l<: / / worker. dat4/ lwb");for (i=O;i<Number;i+)(fv/rite(8tv/oi,sizeof(struct worker), 1,fp);)fclose(fp);void ghxg()按工号修改(FILE 节 p 二 NULL;char id 30;int i=0;printf(请输入要修改的职工工号:”);scanf("%s"Jd);for (i=0;i<Number;i+)(if (strcmp(id,v/oi.ID);elsebreak;)phntfC'Xt

23、姓名t工号t基本工资t职务工资t津贴n");printf(、t%st%st%dtt%dtt%diY; woi name,woi J D,woi.salary1 ,v/oi .salary2,woi. salary 3);printfCif重新输入该职工信息冷;printfC 姓名:J;printf(姓名:“);scanf(>>%s,woi .name);printf (工号:H);scanf r %s" voi ID);printfC基本工资:“);scanf.salaryA);printf(职务工资:”);scanf (H%d,&woi.salary2

24、);printf (津贴:“);scanf (u%d-,&v/oi.salary3);信息修改后重新更新文件里面的数据以保持数据一致性fp=fopen(MC: / /worker.dat'V'v/b11);for (i=0;i<Number;i+)(fv/rite(&woi,sizeof(struct worker), 1,fp);)fclose(fp);printf (-t=> 彳修改力戈功rf);)3 7保存数据函数的实现保存记录前如图27所示。职工工资管理系统人人人人人人人人人人人人人人人Ij人人人人人人人人人人人人人人人2j人人人人人人人人人

25、人人人人人人C3j人人人人人人人人人人人人人人人4j人人人人人人人人人人人人人人人C5J人人人人人人人人人人人人人人人人人人人人人人人人人人人人人人8 JEOJW敢言系 一一一一二二二正荻如如牙日在臼W查删统修保作退八人人人人人人人人人人人AAMA资料.图27保存记录前效果图输入一条记录信息:图28输入记录效果图保存记录后如图29所示二程序在运行时己自功保.二按Entepft返回主菜单图29保存记录后效果图保存源代码:/保存数据void reserve ()(printf (八t=程序在运行时已自动保存nH);)void back() printf("t=按 Enter 键返回主菜单

26、nJ;)3.8 作者信息函数的实现作者记录前如图30所示。W收官系”一 一 r>OPZ)PIRZJr 即 RP存臼普查刑究修呆小 LMJL) £).H Q ”早壬墨系乡XV YVX X X人人人人人人人人人人人人人人人 LAAA人人人人人人人人人人人人昭J人人人人人人人人人人人人人人人3J 人人人人人人人人人人人人人人人qj 人人人人人人人人人人人人人人人5J 人人人人人人人人人人人人人人人6j 人人人人人人人人人人人人人人人?图30作者记录前效果图输入一条记录信息:如图31所示:图31输入记录效果图作者记录后如图32所示。图32作者记录后效果图作者源代码:作者信息 void

27、author()printf(-t某学校nn");printf (“t人.人通信工程nn");printf(''t十制作 nn");printf ("" *皿);)3.9 退出程序操作前如图33所示。耳Q21_L早壬晕系乡)0" "XX XW 数W系一 一一 一 7OP7OP荻ZJT 即 RP存臼普查朋统修呆图33作者记录前效果图输入一条记录信息:如图34所示二二请选择:图34输入记录效果图回车后:如图35所示iPrMt any kty to corntinut按任意键即可退出。图35输入记录后效果图资料.四

28、总结通过这几天的努力,职工工资管理系统的设计已基本完成。在本次课程设计中,我 充分领 略了 C语言功能的强大,包括函数、数组、指针、结构体、文件等。职工工资管理系统是一个很实用并且使用广泛的操作系统。此系统可以减少很多工作量,做 到设计合理,便于使用,易于操作;界面友好,容错性高,可在很短的时间,查找出 所需的职工工 资资料,提高工作效率。该系统具有添加、显示、查询、修改、删除等基 本功能,以便对工资的 各项管理操作。每一条记录包括一个职工的工号、姓名、工资等 信息,系统的各个功能模块都用 函数的形式来实现,可以将职工信息保存在文件中,并从文件中读取出来。总的来说,通过这次程序设计,使我加深了

29、对C语言的认识,进一步熟悉了对c语言功能的 灵活运用,而且加深了我对程序的理解和编写能力,通过文献资料和网络资料的帮助,使我对C 语言程序设计这一基础学科又一次加深了认识,也意识到了其具有 的强大功能和发展前景。这会 对以后的学习有所帮助。参考文献谭浩强,基温.C语言程序设计教程M.第3版,高等教育出版社,20062涛.C程序设计语言,北京:机械工业出版社,20043全国计算机等级老试二级教程:C语言程序设计(2009年版).高等教育出版社附录Ainclude <stdio.h>Ainclude <stdlib.h>八include <string.h>st

30、ruct worker(char name30;char ID10;int salaryl ,salary2,salary3;);int dq(struct v/orker v/o);资料.void shov/();void bc(struct v/orker 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()

31、;void back();void authorf);struct worker v/o100; 保存所有的职工信息int Number=O; /记录总的职工人数 void main()(int choose=0;v/hile(true)(show();printfCtt=请选择:);scanf("%dw, ftchoose);systemCAls,1);svzitch(choose)(case 0: exit(O);退出 break;case 1: add();back();添加职工信息break;case 2: see();back();查看职工信息break;case 3: s

32、earch();back();查找职工信息break;case 4: del();back。;删除职工信息break;case 5: statisticso ; back();统计职工工资 break;case 6: modifyO;back。/修改职工信息 break;case 7:reserve(); back();保存数据 break;case 8:author();back();作者信息 break;default: break;)fflush(stdin);getchar(); systemC'cls");) int dq(struct v/orker vvo)(F

33、ILE 节 p 二 NULL;int i=0;fp=fopen(HC: / /v/orker.dat'V'rb");v/hile(fread(&woi,sizeof(struct worker), 1,fp) i+;fclose(fp);return i;) void shov/()* printfCW);pri ntfCt* 职工工资管理系统phntf(-t添加职工信息nn);phntfC'Xt2查看耿工信息nH);3查找职工信息W);洛粒phntfC'Xt4删除职工信息nn);printf("t5统计职工工资n");pn

34、ntfft向修改职工信息n");phntfC'Xt7保存数据n");printf("t8作者信息n");printfCXt 0退出系统MAAAnn);printf ("t* )void bc(struct v/orker *wo)(FILE *fp=NULL;fp=fopen(4C:/v/orker.dat1/* ab+H);fwrlte(v/o,sizeof(struct v/orker), 1,fp);fclose(fp);)添加职工信息void add()(int numberlemp=0;int i=0;struct worke

35、r temp;printfC请输入要添加职工个数:”);scanfCAd",&n umberlemp);for(i=0;i<numberfemp;i+)printfC输入第d个职工信息n,i+1);printfC 姓名:);scanf(l>%sH, temp, name);printfCl 号:”);scanf f'%s", temp. ID);pMntfC基本工资:“);scanf("%dw,atemp. salary 1);printfC职务工资:”);scanf (H%dM,&temp.salary2);printf(津贴

36、:”);scanfC%cT,6ttemp.salary3);v/oNumber+=temp; 写入到数组bc(fttemp); 写入到文件)printfC* 添加成功n”);)查看职工信息void see()(int i=0;printff以下是全部职工n");printfOt姓名t工号t基本工资t职务工资t津贴n“);v/hile(i<Number)(pnntf(-t%st%st%dtt%dtt%dn-,,v/oi.ID,v/oi.salaryl ,v/oi.salary2,woi. salary3);i+;)查找职工信息void search()(int n

37、=0;pnntfd按姓名查找n“);printfCZ按工号查找n");scanf F %cf; 8tn);sv/itch( n)(case 1: xmcz();break;case 2: ghcz();break;default: printf (输入错误!n");break;)void xmcz()/按姓名查找(char name30;int i=0;printf (请输入要查找职工姓名:);scanff 八 s'八 name);systemCAls,1);资料.printfCXt姓名壮工号t基本工资t职务工资t津贴n”);for (i=O;i<Number

38、;i+)(if (strcmp(name,)=0)(printf ("t%st%st%dtt%dtt%dnM,>v/oi. ID,v/oi.salary1 ,v/oi.salary2,v/oi. salary3);)void ghcz()/按工号查找(char id10;int i=0;printf(请输入要查找职工工号:”);scanf("s”,id);systemCAls'1);printfCXt姓名t工号t基本工资t职务工资t津贴n”);for (i=O;i<Number;i+)(if (strcmp(id,v/oi

39、.ID)=0)(printf ("t%st%st%dtt%dtt%dn",woi. name, v/oi .ID,v/oi.salary1, v/oi. salary2,woi. salary3);)删除职工信息void del()(int n=0;printfCl按姓名删除n");pnntf(“2按工号删除n”); scanf(L%d,&n);switch( n)case 1: xmsc();break;case 2: ghsc();break;)void xmsc()按姓名删除FILE *fp=NULL;char name30;int i=0;int

40、j=0;printfC请输入要删除的耿工姓名:”);scanf%s”,name);for(i=0;i<Number;i+)if (strcmp(name,)=0)for (j=i; j<Number-1;j+)(v/oj=v/oj+1;) Number-;)/将剩余数据写入文件擦除以前的数据fp=fopen(»lC:/v/orker.datS/ v/bM); for (i=O;i<Number;i+)fwrite(&woi,sizeof(struct worker), 1,fp);)fclose(fp);printf (删除成功;n”);)v

41、oid ghsc()按工号删除(FILE *fp=NULL;char id 60;int i=0;int j=0;printfC请输入要删除的职工工号:”);scanf("s”,id);for(i=0;i<Number;i+)(if (strcmp(id,v/oi. ID)=0)(for (j=i;j<Number-1;j+)(v/oj=v/oj+1;) Number-;资料.)将剩余数据写入文件擦除以前的数据 fp 二 fopen ("C: / /v/orker.dat'V'wb");for (i=O;i<Number;i+)f

42、v/rite(&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=voi.salary1+v/oi.salary2+woi.salary3; printf("%s 的总工资为:fn:v/,sumi);)for(i=0;i<Number;i+)s+=sumi;)printfC*平均工资为:%fnM,s/Numb

43、er);)修改职工信息void modifyO(int mode=0;printfC请选择修改查找式n");printfCl按姓名查找修改n”);pnntf("2按工号查找修改n");scanf(L%dl,&mode);svzitch(mode)case 1: xmxg();break;case 2: ghxg();break;default: printf (带入错误! n");break;)void xmxg()/按姓名修改(FILE *fp=NULL;char name30;int i=0;printfC请输入要修改的耿工姓名:”);scanffAs,Aname);for (i=O;i<Number;i+)(if (strcmp(name,);elsebreak;)pnntfC'Xt姓名t工号壮基本工资t职务工资t津贴'亍);pnntf(>At%st%st%dtt%dtt%d

温馨提示

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

最新文档

评论

0/150

提交评论