《C语言课设职工工资管理系统 .docx》由会员分享,可在线阅读,更多相关《C语言课设职工工资管理系统 .docx(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结封面可编辑资料 - - - 欢迎下载精品名师归纳总结作者: PanHongliang仅供个人学习目录一引言二系统总体设计可编辑资料 - - - 欢迎下载精品名师归纳总结1.程序功能2 程序功能图3 主函数流程图三程序详细设计1. 添加职工信息函数的实现2. 查看职工信息函数的实现3. 查找职工信息函数的实现4. 删除职工信息函数的实现5. 统计职工工资函数的实现6. 修改函数的实现7. 储存数据函数的实现8. 作者信息函数的实现9. 退出程序四总结五.附录可编辑资料 - - - 欢迎下载精品名师归纳总结一 引言C 语言是 Combined Language(组合语言)的中英混合
2、简称。是一种运算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计 语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依靠运算机硬件的应 用程序。设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度, 我们可以这样来看:第一要明白这个问题的基本要求,即输入、输出、完成从输入到输 出的要求是什么。在次我们必需捋清思路,逐一的解决问题的各个方面,即从输入开头 入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数、结构体和文件等,然后确定处理过程。本课题中主要应用了 C 语言中的数组、结构体、文件等关键技术。在C 语言中
3、, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。结构体 struct是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构,在结构体中的变量,可以是相同、部分相同,或完全不同的 数据类型,结构体只能描述一个对象的状态,不能描述一个对象的行为。文件是一种组 织外部储备介质上的数据的数据类型。它具有两个特点:一是对一个数据集合可以用一 个名字命名。二是储存在外部储备介质上,可以长期储存。通过此次课设可以锤炼同学理论联系实际才能,提高同学适应实际、实践编程的能力,使对 C语言系统编程有一个大致的明白,并达到如下目的:1. 熟识 C语言程序
4、的编辑、编译链接和运行的过程。 2. 娴熟运用 if语句和 switch语句以及嵌套应用。 3. 学习并把握 C语言定义函数的基本方法、声明函数及调用函数的方法和过程。4. 把握文件的概念以及文件的定义方法,熟识文件打开、关闭、读、写等文件基本操作函数。5. 掌握结构体类型变量、数组的定义和使用。6. 把握数组的定义、引用以及输入输出的方法、通过字符数组储备字符串,进一步使用字符串。可编辑资料 - - - 欢迎下载精品名师归纳总结二 系统总体设计2.1 程序功能(1) 添加职工信息 2查看职工信息 3查找职工信息 4删除职工信息5统计职工信息 6修改职工信息 7储存数据 8作者信息 0 退出职
5、工工资治理系统2.3 主函工数流程工图工工工工据息2.2 程序功能图添查查删统修保作退加看找除 图 1 程序计功能图改存者出职职职职职职数信信信信信信信息息息息息息可编辑资料 - - - 欢迎下载精品名师归纳总结开头主菜单选择操作可编辑资料 - - - 欢迎下载精品名师归纳总结选择 1选择 2添加职工信息查看职工信息可编辑资料 - - - 欢迎下载精品名师归纳总结按姓名可编辑资料 - - - 欢迎下载精品名师归纳总结选择 3查找职工信息按工号可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结选择 4删除职工信息按姓名按工号可编辑资料 - - - 欢
6、迎下载精品名师归纳总结选择 5统计职工信息按姓名可编辑资料 - - - 欢迎下载精品名师归纳总结选择 6修改职工信息按工号可编辑资料 - - - 欢迎下载精品名师归纳总结选择 7储存数据选择 8作者信息选择 0退出终止图 2 程序流程图主函数源代码 :void main可编辑资料 - - - 欢迎下载精品名师归纳总结int choose=0 。whiletrueshow。printftt=请选择: 。scanf%d,&choose 。systemcls 。switchchoosecase 0: exit0 。/退出break。case 1: add。back 。/添加职工信息break。cas
7、e 2: see。back 。/查看职工信息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。fflushstdin 。getchar。systemcls 。三 程序详细设计可编辑资料 - - - 欢迎下
8、载精品名师归纳总结3.1 添加职工信息函数的实现添加记录前如图 3 所示。图 3 添加记录前成效图输入两条记录信息 : 选择 1,回车。输入记录如图 4 所示。可编辑资料 - - - 欢迎下载精品名师归纳总结添加后如图 5 所示。图 4 输入记录成效图可编辑资料 - - - 欢迎下载精品名师归纳总结图 5 添加记录后成效图添加函数代码流程图,如图 6 所示。开头定义数据类型 numberTemp,iinumberTemp输出职工信息i+添加成功终止图 6 添加函数流程图添加源代码 :/添加职工信息void addint numberTemp=0 。int i=0 。struct worker
9、temp 。printf 请输入要添加职工个数:。scanf%d,&numberTemp 。fori=0 。inumberTemp 。i+可编辑资料 - - - 欢迎下载精品名师归纳总结printf 输入第 %d 个职工信息 n,i+1 。printf 姓名: 。scanf%s,temp.name 。printf 工号: 。scanf%s,temp.ID 。printf 基本工资: 。scanf%d,&temp.salary1 。printf 职务工资: 。scanf%d,&temp.salary2 。printf 津贴: 。scanf%d,&temp.salary3 。woNumber+=t
10、emp 。 / 写入到数组bc&temp 。 / 写入到文件printf 添加成功 n 。3.2 查看职工信息函数的实现查看记录前如图 7 所示。图 7 查看记录前成效图输入一条记录信息 : 如图 8 所示:图 8 输入记录成效图查看记录后如图 9 所示。图 9 查看记录后成效图查看函数代码流程图,如图 10 所示。开头定义 i=0iNumber输出职工信息终止可编辑资料 - - - 欢迎下载精品名师归纳总结图 10 查看函数流程图查看源代码 :/查看职工信息void seeint i=0 。printf 以下是全部职工 n。printft姓名 t 工号t 基本工资 t 职务工资 t 津贴n
11、。whileiNumberprintft%st%st%dtt%dtt%dn,woi.name,woi.ID,woi.salary1,woi.salary2,woi.salary 3。i+ 。3.3 查找职工信息函数的实现查找记录前如图 11 所示。图 11 查找记录前成效图输入一条记录信息 : 选择 3,回车如图 12 所示。可编辑资料 - - - 欢迎下载精品名师归纳总结查找记录后如图 13 所示。图 12 输入记录成效图可编辑资料 - - - 欢迎下载精品名师归纳总结图 13 查找记录后成效图查找函数代码流程图,如图 14 所示。可编辑资料 - - - 欢迎下载精品名师归纳总结开头定义 n
12、=0输入 n假如 n=1按姓名查找假如 n=2终止按工号查找输入错误终止终止终止图 14 查找函数流程图查找源代码 :/查找职工信息void searchint n=0 。printf1按姓名查找 n 。printf2按工号查找 n 。scanf%d,&n 。switchncase 1: xmcz。break。case 2: ghcz。break。default: printf 输入错误 .n 。break。void xmcz/ 按姓名查找char name30 。可编辑资料 - - - 欢迎下载精品名师归纳总结int i=0 。printf 请输入要查找职工姓名: 。scanf%s,name
13、 。systemcls 。printft姓名 t 工号t 基本工资 t 职务工资 t 津贴n 。for i=0 。iNumber 。i+if strcmpname,woi.name=0printft%st%st%dtt%dtt%dn,woi.name,woi.ID,woi.salary1,woi.salary2,woi.salary 3。void ghcz/ 按工号查找char id10 。int i=0 。printf 请输入要查找职工工号: 。scanf%s,id 。systemcls 。printft姓名 t 工号t 基本工资 t 职务工资 t 津贴n 。for i=0 。iNumber
14、 。i+if strcmpid,woi.ID=0printft%st%st%dtt%dtt%dn,woi.name,woi.ID,woi.salary1,woi.salary2,woi.salary 3。3.4 删除职工信息函数的实现删除记录前如图 15 所示。图 15 删除记录前成效图输入一条记录信息 :选择 4,回车后 , 如图 16 所示:可编辑资料 - - - 欢迎下载精品名师归纳总结删除记录后如图 17 所示。图 16 输入记录成效图可编辑资料 - - - 欢迎下载精品名师归纳总结图 17 删除记录后成效图删除函数代码流程图,如图 18 所示。可编辑资料 - - - 欢迎下载精品名师
15、归纳总结开头定义 n=0输入 n假如 n=1按姓名删除假如 n=2终止按工号删除终止终止图 18 删除函数流程图删除源代码 :/删除职工信息void delint n=0 。printf1按姓名删除 n 。printf2按工号删除 n 。scanf%d,&n 。switchncase 1: xmsc。break。case 2: ghsc。break。void xmsc/ 按姓名删除FILE *fp=NULL。char name30 。int i=0 。int j=0 。可编辑资料 - - - 欢迎下载精品名师归纳总结printf 请输入要删除的职工姓名: 。scanf%s,name 。fori
16、=0 。iNumber 。 i+if strcmpname,woi.name=0for j=i 。jNumber-1 。 j+woj=woj+1。Number- 。/将剩余数据写入文件擦除以前的数据fp=fopenC:/worker.dat,wb。for i=0 。iNumber 。i+fwrite&woi,sizeofstruct worker,1,fp。fclosefp 。printf 删除成功。 n 。void ghsc/ 按工号删除FILE *fp=NULL。char id60 。int i=0 。int j=0 。printf 请输入要删除的职工工号: 。scanf%s,id 。fo
17、ri=0 。iNumber 。 i+if strcmpid,woi.ID=0for j=i 。jNumber-1 。 j+woj=woj+1。Number- 。/将剩余数据写入文件擦除以前的数据fp=fopenC:/worker.dat,wb。for i=0 。iNumber 。i+可编辑资料 - - - 欢迎下载精品名师归纳总结fwrite&woi,sizeofstruct worker,1,fp。fclosefp 。printf 删除成功。 n 。3.5 统计职工工资函数的实现统计记录前如图 19 所示。图 19 统计记录前成效图输入一条记录信息 :如图 20 所示:图 20 输入记录成效
18、图统计记录后如图 21 所示。图 21 统计后前成效图统计函数代码流程图,如图 22 所示。可编辑资料 - - - 欢迎下载精品名师归纳总结开头定义 i=0For 函数初始值 i=0iNumber循环体输出员工总工资i+For 函数初始值 i=0iNumber循环体i+输出员工平均工资终止图 22 统计函数流程图统计源代码 :/统计职工工资void statisticsint i=0 。double s=0.0。double sum100 。fori=0 。iNumber 。 i+可编辑资料 - - - 欢迎下载精品名师归纳总结sumi=woi.salary1+woi.salary2+woi.
19、salary3。printf%s 的总工资为: %fn,woi.name,sumi。fori=0 。iNumber 。 i+s+=sumi 。printf 平均工资为: %fn,s/Number 。3.6 修改函数的实现修改记录前如图 23 所示。图 23 修改记录前成效图输入一条记录信息 :如图 24 所示:可编辑资料 - - - 欢迎下载精品名师归纳总结修改记录后如图 25 所示。图 24 输入记录成效图可编辑资料 - - - 欢迎下载精品名师归纳总结图 25 修改记录后成效图修改函数代码流程图,如图 26 所示。可编辑资料 - - - 欢迎下载精品名师归纳总结开头定义 mode=0输入
20、mode假如 mode=1按姓名修改假如 mode=2终止按工号修改输入错误终止终止终止图 26 修改函数流程图修改源代码 :/修改职工信息void modifyint mode=0 。printf 请选择修改查找方式 n 。printf1按姓名查找修改n 。printf2按工号查找修改n 。scanf%d,&mode 。switchmodecase 1: xmxg。break。case 2: ghxg。break。default: printf 输入错误 .n 。break。void xmxg/ 按姓名修改可编辑资料 - - - 欢迎下载精品名师归纳总结FILE *fp=NULL。char
21、name30 。int i=0 。printf 请输入要修改的职工姓名: 。scanf%s,name 。for i=0 。iNumber 。i+if strcmpname,woi.name 。else break。printft姓名 t 工号t 基本工资 t 职务工资 t 津贴n 。printft%st%st%dtt%dtt%dn,woi.name,woi.ID,woi.salary1,woi.salary2,woi.salary 3。printf 请重新输入该职工信息。printf 姓名: 。scanf%s,woi.name 。printf 工号: 。scanf%s,woi.ID。 prin
22、tf 基本工资: 。scanf%d,&woi.salary1。printf 职务工资: 。scanf%d,&woi.salary2。printf 津贴: 。scanf%d,&woi.salary3。/信息修改后重新更新文件里面的数据以保持数据一样性fp=fopenC:/worker.dat,wb。for i=0 。iNumber 。i+fwrite&woi,sizeofstruct worker,1,fp。fclosefp 。void ghxg/ 按工号修改FILE *fp=NULL。char id30 。int i=0 。printf 请输入要修改的职工工号: 。scanf%s,id 。fo
23、r i=0 。iNumber 。i+if strcmpid,woi.ID。else可编辑资料 - - - 欢迎下载精品名师归纳总结break。printft姓名 t 工号t 基本工资 t 职务工资 t 津贴n 。printft%st%st%dtt%dtt%dn,woi.name,woi.ID,woi.salary1,woi.salary2,woi.salary 3。printf 请重新输入该职工信息。printf 姓名: 。printf 姓名: 。scanf%s,woi.name 。printf 工号: 。scanf%s,woi.ID。printf 基本工资: 。scanf%d,&woi.sa
24、lary1。printf 职务工资: 。scanf%d,&woi.salary2。printf 津贴: 。scanf%d,&woi.salary3。/信息修改后重新更新文件里面的数据以保持数据一样性fp=fopenC:/worker.dat,wb。for i=0 。i修改成功 n 。3.7 储存数据函数的实现储存记录前如图 27 所示。可编辑资料 - - - 欢迎下载精品名师归纳总结输入一条记录信息 :储存记录后如图 29 所示。图 27 储存记录前成效图图 28 输入记录成效图可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结储存源代码 :/储存
25、数据void reserve图 29 储存记录后成效图可编辑资料 - - - 欢迎下载精品名师归纳总结printft=程序在运行时已自动储存n 。void back可编辑资料 - - - 欢迎下载精品名师归纳总结printft=按 Enter 键返回主菜单 n 。3.8 作者信息函数的实现作者记录前如图 30 所示。图 30 作者记录前成效图输入一条记录信息 :如图 31 所示:图 31 输入记录成效图作者记录后如图 32 所示。图 32 作者记录后成效图作者源代码 :/作者信息void authorprintft*nn。printft铜陵学院 nn。printft信息治理与信息系统 nn。p
26、rintft*制作 nn。printft*nn。3.9 退出程序操作前如图 33 所示。图 33 作者记录前成效图输入一条记录信息 :如图 34 所示:图 34 输入记录成效图回车后: 如图 35 所示可编辑资料 - - - 欢迎下载精品名师归纳总结按任意键即可退出。图 35 输入记录后成效图四 总结可编辑资料 - - - 欢迎下载精品名师归纳总结通过这几天的努力,职工工资治理系统的设计已基本完成。在本次课程设 计中,我充分领悟了 C 语言功能的强大,包括函数、数组、指针、结构体、文件等。职工工资治理系统是一个很有用并且使用广泛的操作系统。此系统可以减可编辑资料 - - - 欢迎下载精品名师归
27、纳总结少很多工作量,做到设计合理 , 便于使用 , 易于操作。界面友好 , 容错性高 , 可在很短的时间内 , 查找出所需的职工工资资料 , 提高工作效率。该系统具有添加、显示、查询、修改、删除等基本功能,以便利对工资的各项治理操作。每一条记录包括一个职工的工号、姓名、工资等信息,系统的各个功能模块都用函数的形式来实现 , 可以将职工信息储存在文件中,并从文件中读取出来。总的来说,通过这次程序设计,使我加深了对C 语言的熟识,进一步熟识了对 C 语言功能的灵敏运用,而且加深了我对程序的懂得和编写才能,通过文献资料和网络资料的帮忙,使我对C 语言程序设计这一基础学科又一次加深了熟识,也意识到了其
28、具有的强大功能和进展前景。这会对以后的学习有所帮助。参考文献1 谭浩强,张基温 .C 语言程序设计教程 M. 第 3 版. 高等训练出版社,20062 杨涛 C 程序设计语言北京 : 机械工业出版社,20043 全国运算机等级考试二级教程: C 语言程序设计 2021 年版 . 高等训练出版社附录#include #include #include struct workerchar name30 。char ID10 。int salary1,salary2,salary3 。 。int dqstruct worker wo。void show 。void bcstruct worker w
29、o。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 mainint choose=0 。whiletrueshow。pri
30、ntftt=请选择: 。scanf%d,&choose 。systemcls 。switchchoosecase 0: exit0 。/退出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: modify 。back 。/修改职工信息break。case 7:reserve。back 。/
31、储存数据break。case 8:author。back 。/作者信息break。default: break。可编辑资料 - - - 欢迎下载精品名师归纳总结fflushstdin 。getchar。systemcls 。int dqstruct worker woFILE *fp=NULL。int i=0 。fp=fopenC:/worker.dat,rb。whilefread&woi,sizeofstruct worker,1,fp i+ 。fclosefp 。return i 。void showprintfn 。printft*职工工资治理系统*nn。printft* *nn 。pr
32、intft1添加职工信息 n。printft2查看职工信息 n。printft3查找职工信息 n。printft4删除职工信息 n。printft5统计职工工资 n。printft6修改职工信息 n。printft7保存数据n。printft8作者信息n。printft0退出系统nn。printft* *n。void bcstruct worker *woFILE *fp=NULL。fp=fopenC:/worker.dat,ab+。fwritewo,sizeofstruct worker,1,fp。fclosefp 。/添加职工信息void addint numberTemp=0 。int
33、i=0 。可编辑资料 - - - 欢迎下载精品名师归纳总结struct worker temp 。printf 请输入要添加职工个数:。scanf%d,&numberTemp 。fori=0 。inumberTemp 。i+printf 输入第 %d 个职工信息 n,i+1 。printf 姓名: 。scanf%s,temp.name 。printf 工号: 。scanf%s,temp.ID 。printf 基本工资: 。scanf%d,&temp.salary1 。printf 职务工资: 。scanf%d,&temp.salary2 。printf 津贴: 。scanf%d,&temp.salary3 。woNumber+=temp 。 / 写入到数组bc&temp 。 / 写入到文件printf 添加成功 n 。/查看职工信息void seeint i=0 。printf 以下是全部职工 n。printft姓名 t 工号t 基本工资 t 职务工资 t 津贴n 。whileiNumberprintft%st%st%dtt%dtt%dn,woi.name,woi.ID,woi.salary1,woi.salary2,woi.salary 3。i+ 。/查找职工信息void searchint n=0 。printf1
限制150内