


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言是 Combined Language(组合语言)的中英混合简称。是一种计算机程序设计 语言。它既具有高级语言的特点, 又具有汇编语言的特点。 它可以作为工作系统设计语言, 编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。 设计一个程序的过程就是解决一个实际问题的过程, 从解决实际问题的角度, 我们可以这 样来看: 首先要了解这个问题的基本要求,即输入、 输出、完成从输入到输出的要求是什 么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑 如何从输入导出输出, 在这个过程中,可确定所需的变量、 数组、函数、结构体和文件等, 然后
2、确定处理过程。本课题中主要应用了 C语言中的数组、结构体、文件等关键技术。在 C语言中, 数 组属于构造数据类型。 一个数组可以分解为多个数组元素, 这些数组元素可以是基本数据 类型或是构造类型;结构体 (struct) 是由一系列具有相同类型或不同类型的数据构成的数 据集合,也叫结构,在结构体中的变量, 可以是相同、 部分相同,或完全不同的数据类型, 结构体只能描述一个对象的状态, 不能描述一个对象的行为。 文件是一种组织外部存储介 质上的数据的数据类型。 它具有两个特征: 一是对一个数据集合可以用一个名字命名; 二 是保存在外部存储介质上,可以长期保存。通过此次课设可以锻炼学生理论联系实际
3、能力, 提高学生适应实际、实践编程的能力, 使对 C语言系统编程有一个大致的了解, 并达到如下目的: 1.熟悉 C语言程序的编辑、 编 译链接和运行的过程。 2. 熟练运用 if 语句和 switch 语句以及嵌套应用。 3. 学习并掌握 C 语言定义函数的基本方法、声明函数及调用函数的方法和过程。 4. 掌握文件的概念以 及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。 5. 掌握结构体类 型变量、数组的定义和使用。 6. 掌握数组的定义、引用以及输入输出的方法、通过字符 数组存储字符串,进一步使用字符串选择操作选择 1输入职工信息选择 2输出职工信息查找职工信息选择 3选择
4、增加职工信息选择选择保存数据选择选择从文件中读取按姓名按工号按姓名删除职工信息按姓名按工资从高到按工号退出结束图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();/
5、查看职工信息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");三
6、程序详细设计3.1 添加职工信息函数的实现 添加记录前如图 3 所示。图3 添加记录前效果图输入一条记录信息 :选择 1,回车。输入记录如图 4 所示。图 4 输入记录效果图添加后如图 5 所示。图 5 添加记录后效果图添加函数代码流程图,如图 6 所示。图6 添加函数流程图添加源代码 : / 添加职工信息void add()int numberTemp=0;int i=0;struct worker temp;printf(" 请输入要添加职工个数: ");scanf("%d",&numberTemp);for(i=0;i<numberT
7、emp;i+)printf(" 输入第 %d个职工信息 n",i+1);printf(" 姓名: ");scanf("%s",);printf(" 工号: ");scanf("%s",temp.ID);printf(" 基本工资: ");scanf("%d",&temp.salary1); printf(" 职务工资: ");scanf("%d",&temp.salary2);pri
8、ntf(" 津贴: ");scanf("%d",&temp.salary3);woNumber+=temp; / 写入到数组bc(&temp); / 写入到文件printf(" 添加成功 n");3.2 查看职工信息函数的实现查看记录前如图 7 所示。图 7 查看记录前效果图输入一条记录信息如图 8 所示:查看记录后如图 9 所示图 9 查看记录后效果图查看函数代码流程图,如图 10 所示。图 10 查看函数流程图查看源代码 : / 查看职工信息void see()int i=0;printf(" 以下是全部
9、职工 n");printf("t 姓名t 工号t 基本工资t 职务工资 t 津贴n");while(i<Number)printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.salary1,woi.s alary2,woi.salary3);i+;3.3 查找职工信息函数的实现查找记录前如图 11 所示。图 11 查找记录前效果图输入一条记录信息 : 选择 3,回车如图 12 所示。图 12 输入记录效果图查找记录后如图 13 所示。图 13 查找记录后效果图查找源代码 : / 查找职工信息void
10、 search()int n=0;printf("1 按姓名查找 n");scanf("%d",&n);switch(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
11、("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.s alary2,woi.salary3);void ghcz()/ 按工号查找char id10;int i=0;printf(" 请输入要查找职工工号 :");scanf("%s",id);system("cls&quo
12、t;);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.s alary2,woi.salary3);3.4 删除职工信息函数的实现删除记录前如图 15 所示。图 15 删除记录前效果图输入一条记录信息 :选择 4,回车后, 如图 16所示:图 16 输入记录效果图删除记录后如图 17 所示。图 17 删除记录后效果图删
13、除函数代码流程图,如图 18 所示。图 18 删除函数流程图删除源代码 : / 删除职工信息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;int i=0;int j=0;printf(" 请输入要删除的职工姓名: ")
14、; scanf("%s",name);for(i=0;i<Number;i+)if (strcmp(name,)=0)for (j=i;j<Number-1;j+)woj=woj+1;Number-;for (i=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(&qu
15、ot; 请输入要删除的职工工号: ");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-;/ 将剩余数据写入文件 擦除以前的数据for (i=0;i<Number;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);printf(" 删除成功 ;n");3.5 统计职工工资函数的实现统计记录前如图 19 所示。图 1
16、9 统计记录前效果图输入一条记录信息如图 20 所示:图 20 输入记录效果图统计记录后如图 21 所示图 21 统计后前效果图统计函数代码流程图,如图 22 所示图 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+=s
17、umi;printf(" 平均工资为: %fn",s/Number);3.6 修改函数的实现 修改记录前如图 23 所示。图 23 修改记录前效果图输入一条记录信息 :如图 24 所示 :图 24 输入记录效果图修改记录后如图 25 所示图 25 修改记录后效果图修改函数代码流程图,如图 26 所示图 26 修改函数流程图修改源代码 :/ 修改职工信息void modify()int mode=0;printf(" 请选择修改查找方式 n"); printf("1 按姓名查找修改 n"); printf("2 按工号查找修改
18、 n"); scanf("%d",&mode);switch(mode)case 1: xmxg();break;case 2: ghxg();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,);e
19、lseprintf("t姓名t 工号t 基本工资t 职务工资 t 津贴n");printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.salary1,woi.s alary2,woi.salary3);printf(" 请重新输入该职工信息 ");printf(" 姓名: ");scanf("%s",);printf(" 工号: ");scanf("%s",woi.ID);printf("
20、基本工资: ");scanf("%d",&woi.salary1);printf(" 职务工资: ");scanf("%d",&woi.salary2);printf(" 津贴: ");scanf("%d",&woi.salary3);/ 信息修改后重新更新文件里面的数据 以保持数据一致性for (i=0;i<Number;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);void ghxg
21、()/ 按工号修改FILE *fp=NULL;char id30;int i=0;printf(" 请输入要修改的职工工号: ");scanf("%s",id);for (i=0;i<Number;i+)elsebreak;printf("t姓名t 工号t 基本工资t 职务工资 t 津贴n");printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.salary1,woi.salary2,woi.salary3);printf(" 请重新输入该职工信息 &qu
22、ot;);printf(" 姓名: ");printf(" 姓名: ");scanf("%s",);printf(" 工号: ");scanf("%s",woi.ID);printf(" 基本工资: ");scanf("%d",&woi.salary1);printf(" 职务工资: ");scanf("%d",&woi.salary2);printf(" 津贴: "
23、;);/ 信息修改后重新更新文件里面的数据 以保持数据一致性for (i=0;i<Number;i+)fwrite(&woi,sizeof(struct worker),1,fp);fclose(fp);printf("t=> 修改成功 n");3.7 保存数据函数的实现保存记录前如图 27 所示。图 27 保存记录前效果图输入一条记录信息图 28 输入记录效果图保存记录后如图 29 所示。图 29 保存记录后效果图保存源代码 :/ 保存数据void reserve()printf("t= 程序在运行时已自动保存 n");void b
24、ack()printf("t=> 按 Enter 键返回主菜单 n");3.8 作者信息函数的实现 作者记录前如图 30 所示。图 30 作者记录前效果图输入一条记录信息 :如图 31 所示 :图 31 输入记录效果图作者记录后如图 32 所示。图 32 作者记录后效果图作者源代码 : / 作者信息void author()printf("t* *nn");printf("t某学校 nn");printf("t通信工程 nn");printf("t*制作 nn");printf("
25、;t* *nn");3.9 退出程序 操作前如图 33 所示图 33 作者记录前效果图输入一条记录信息如图 34 所示:图 34 输入记录效果图回车后:如图 35 所示按任意键即可退出。图 35 输入记录后效果图四 总结通过这几天的努力, 职工工资管理系统的设计已基本完成。 在本次课程设计中, 我充 分领略了 C语言功能的强大,包括函数、数组、指针、结构体、文件等。职工工资管理系统是一个很实用并且使用广泛的操作系统。 此系统可以减少很多工作 量,做到设计合理 ,便于使用,易于操作;界面友好,容错性高 ,可在很短的时间内 ,查找出所 需的职工工资资料 , 提高工作效率。该系统具有添加、
26、显示、查询、修改、删除等基本功 能,以方便对工资的各项管理操作。 每一条记录包括一个职工的工号、 姓名、工资等信息, 系统的各个功能模块都用函数的形式来实现 , 可以将职工信息保存在文件中,并从文件中 读取出来。总的来说,通过这次程序设计, 使我加深了对 C语言的认识, 进一步熟悉了对 C语言 功能的灵活运用, 而且加深了我对程序的理解和编写能力, 通过文献资料和网络资料的帮 助,使我对 C 语言程序设计这一基础学科又一次加深了认识, 也意识到了其具有的强大功 能和发展前景。这会对以后的学习有所帮助。参考文献1 谭浩强,张基温 .C 语言程序设计教程 M. 第 3 版 . 高等教育出版社, 2
27、0062 杨涛 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(struct worker wo);void add();void see
28、();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)show();printf("tt=> 请选择: &quo
29、t;);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();back();/ 统计职工工资break;case 6: modi
30、fy();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;i+;fclose(fp);return i;void show()printf("n");printf("t*职工工资管理系统 *nn");prin
31、tf("t* *nn");printf("t1添加职工信息 n");printf("t2查看职工信息 n");printf("t3查找职工信息 n");printf("t4删除职工信息 n");printf("t5统计职工工资 n");printf("t6修改职工信息 n");printf("t7保 存 数 据 n");printf("t8作者信息n");printf("t0退出系统nn");pr
32、intf("t* *n");void bc(struct worker *wo)FILE *fp=NULL;fwrite(wo,sizeof(struct worker),1,fp);fclose(fp);/ 添加职工信息void add()int numberTemp=0;int i=0;struct worker temp;printf(" 请输入要添加职工个数: ");scanf("%d",&numberTemp);for(i=0;i<numberTemp;i+)printf(" 输入第 %d个职工信息
33、n",i+1);printf(" 姓名: ");scanf("%s",);printf(" 工号: ");scanf("%s",temp.ID);printf(" 基本工资: ");scanf("%d",&temp.salary1);printf(" 职务工资: ");scanf("%d",&temp.salary2);printf(" 津贴: ");scanf("
34、;%d",&temp.salary3);woNumber+=temp; / 写入到数组bc(&temp); / 写入到文件printf("添加成功 n");/ 查看职工信息 void 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,
35、woi.salary3);/ 查找职工信息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 name30;int i=0;printf(" 请输入要查找职工姓名 :");sc
36、anf("%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.s alary2,woi.salary3);void ghcz()/ 按工号查找char id10;int i=0;printf(" 请输入要查找职工工号
37、 :");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.s alary2,woi.salary3);/ 删除职工信息void del()int n=0;printf("1按姓名删除 n");
38、printf("2按工号删除 n");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;i<Number;i+)if (strcmp(name,)=0)for (j=i;j<Numb
39、er-1;j+)woj=woj+1;Number-;/ 将剩余数据写入文件 擦除以前的数据for (i=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 (s
40、trcmp(id,woi.ID)=0)for (j=i;j<Number-1;j+)woj=woj+1;Number-;/ 将剩余数据写入文件 擦除以前的数据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.salary
41、2+woi.salary3;printf("%s 的总工资为: %fn",,sumi);for(i=0;i<Number;i+)s+=sumi;printf(" 平均工资为: %fn",s/Number);/ 修改职工信息void modify()int mode=0;printf(" 请选择修改查找方式 n");printf("1 按姓名查找修改 n");printf("2 按工号查找修改 n");switch(mode)case 1: xmxg();break;case
42、 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,);elsebreak;printf("t姓名t 工号t 基本工资t 职务工资 t 津贴n");printf("t%st%st%dtt%dtt%dn",,woi.ID,woi.sa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 知识产权保护与企业合规的共赢模式
- 投资风险的识别与防范
- 2025年人力资源共享策划战略协议样本
- 提升农业科技创新体系的背景意义及必要性
- 春分节气的社交媒体营销
- 10.1 三维绘图基础(课件)-高二《Auto+CAD》同步课堂(机工社)
- 小寒节气解读
- 工程维保协议书范本
- 大蒜儿童美术课件
- 2025年汽车零部件供应协议
- 配电柜维护保养施工方案范文
- 2025年山东东营市事业单位上半年统考(7.26)历年自考难、易点模拟试卷(共500题附带答案详解)
- 管理学基础-形考任务二-国开-参考资料
- 投标标前协议书范本
- 注塑领班工作总结
- 全面指南:2024年医学整形美容医院员工手册
- 2025年中国经济信息社福建分公司招聘笔试参考题库含答案解析
- 2025年度食用菌产业园区公共设施运营管理合同3篇
- 《费孝通-乡土中国》差序格局
- 2023-2024学年天津市和平区八年级(下)期末数学试卷(含答案)
- 2021去远方上海研学旅行方案申请及综合反思表
评论
0/150
提交评论