C语言课设职工工资管理系统.docx
- 文档编号:5465319
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:42
- 大小:182.59KB
C语言课设职工工资管理系统.docx
《C语言课设职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课设职工工资管理系统.docx(42页珍藏版)》请在冰豆网上搜索。
C语言课设职工工资管理系统
封面
作者:
PanHongliang
仅供个人学习
目录
1............................................................................引言
2............................................................................系统总体设计
1.程序功能
2程序功能图
3主函数流程图
3..........................................................................程序详细设计
1.添加职工信息函数的实现
2.查看职工信息函数的实现
3.查找职工信息函数的实现
4.删除职工信息函数的实现
5.统计职工工资函数的实现
6.修改函数的实现
7.保存数据函数的实现
8.作者信息函数的实现
9.退出程序
4..............................................................................总结
五..............................................................................附录
一引言
C语言是CombinedLanguage(组合语言)的中英混合简称。
是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:
首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么。
在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数、结构体和文件等,然后确定处理过程。
本课题中主要应用了C语言中的数组、结构体、文件等关键技术。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型;结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构,在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型,结构体只能描述一个对象的状态,不能描述一个对象的行为。
文件是一种组织外部存储介质上的数据的数据类型。
它具有两个特征:
一是对一个数据集合可以用一个名字命名;二是保存在外部存储介质上,可以长期保存。
通过此次课设可以锻炼学生理论联系实际能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解,并达到如下目的:
1.熟悉C语言程序的编辑、编译链接和运行的过程。
2.熟练运用if语句和switch语句以及嵌套应用。
3.学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程。
4.掌握文件的概念以及文件的定义方法,认识文件打开、关闭、读、写等文件基本操作函数。
5.掌握结构体类型变量、数组的定义和使用。
6.掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。
二系统总体设计
2.1程序功能
(1)添加职工信息
(2)查看职工信息(3)查找职工信息(4)删除职工信息(5)统计职工信息(6)修改职工信息(7)保存数据(8)作者信息(0)退出
2.2程序功能图
职工工资管理系统
作者信息
保存数据
修改职工信息
查看职工信息
查找职工信息
删除职工信息
退出
统计职工信息
添加职工信息
图1程序功能图
2.3主函数流程图
图2程序流程图
主函数源代码:
voidmain()
{
intchoose=0。
while(true)
{
show()。
printf("\t\t====>请选择:
")。
scanf("%d",&choose)。
system("cls")。
switch(choose)
{
case0:
exit(0)。
//退出
break。
case1:
add()。
back()。
//添加职工信息
break。
case2:
see()。
back()。
//查看职工信息
break。
case3:
search()。
back()。
//查找职工信息
break。
case4:
del()。
back()。
//删除职工信息
break。
case5:
statistics()。
back()。
//统计职工工资
break。
case6:
modify()。
back()。
//修改职工信息
break。
case7:
reserve()。
back()。
//保存数据
break。
case8:
author()。
back()。
//作者信息
break。
default:
break。
}
fflush(stdin)。
getchar()。
system("cls")。
}
}
三程序详细设计
3.1添加职工信息函数的实现
添加记录前如图3所示。
图3添加记录前效果图
输入两条记录信息:
选择1,回车。
输入记录如图4所示。
图4输入记录效果图
添加后如图5所示。
图5添加记录后效果图
添加函数代码流程图,如图6所示。
图6添加函数流程图
添加源代码:
//添加职工信息
voidadd()
{
intnumberTemp=0。
inti=0。
structworkertemp。
printf("请输入要添加职工个数:
")。
scanf("%d",&numberTemp)。
for(i=0。
i 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)。 wo[Number++]=temp。 //写入到数组 bc(&temp)。 //写入到文件 } printf("添加成功\n")。 } 3.2查看职工信息函数的实现 查看记录前如图7所示。 图7查看记录前效果图 输入一条记录信息: 如图8所示: 图8输入记录效果图 查看记录后如图9所示。 图9查看记录后效果图 查看函数代码流程图,如图10所示。 图10查看函数流程图 查看源代码: //查看职工信息 voidsee() { inti=0。 printf("以下是全部职工\n")。 printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n")。 while(i { printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3)。 i++。 } } 3.3查找职工信息函数的实现 查找记录前如图11所示。 图11查找记录前效果图 输入一条记录信息: 选择3,回车 如图12所示。 图12输入记录效果图 查找记录后如图13所示。 图13查找记录后效果图 查找函数代码流程图,如图14所示。 图14查找函数流程图 查找源代码: //查找职工信息 voidsearch() { intn=0。 printf("1按姓名查找\n")。 printf("2按工号查找\n")。 scanf("%d",&n)。 switch(n) { case1: xmcz()。 break。 case2: ghcz()。 break。 default: printf("输入错误! \n")。 break。 } } voidxmcz()//按姓名查找 { charname[30]。 inti=0。 printf("请输入要查找职工姓名: ")。 scanf("%s",name)。 system("cls")。 printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n")。 for(i=0。 i i++) { if(strcmp(name,wo[i].name)==0) { printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3)。 } } } voidghcz()//按工号查找 { charid[10]。 inti=0。 printf("请输入要查找职工工号: ")。 scanf("%s",id)。 system("cls")。 printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n")。 for(i=0。 i i++) { if(strcmp(id,wo[i].ID)==0) { printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3)。 } } } 3.4删除职工信息函数的实现 删除记录前如图15所示。 图15删除记录前效果图 输入一条记录信息: 选择4,回车后,如图16所示: 图16输入记录效果图 删除记录后如图17所示。 图17删除记录后效果图 删除函数代码流程图,如图18所示。 图18删除函数流程图 删除源代码: //删除职工信息 voiddel() { intn=0。 printf("1按姓名删除\n")。 printf("2按工号删除\n")。 scanf("%d",&n)。 switch(n) { case1: xmsc()。 break。 case2: ghsc()。 break。 } } voidxmsc()//按姓名删除 { FILE*fp=NULL。 charname[30]。 inti=0。 intj=0。 printf("请输入要删除的职工姓名: ")。 scanf("%s",name)。 for(i=0。 i i++) { if(strcmp(name,wo[i].name)==0) { for(j=i。 j j++) { wo[j]=wo[j+1]。 } Number--。 } } //将剩余数据写入文件擦除以前的数据 fp=fopen("C: //worker.dat","wb")。 for(i=0。 i i++) { fwrite(&wo[i],sizeof(structworker),1,fp)。 } fclose(fp)。 printf("删除成功。 \n")。 } voidghsc()//按工号删除 { FILE*fp=NULL。 charid[60]。 inti=0。 intj=0。 printf("请输入要删除的职工工号: ")。 scanf("%s",id)。 for(i=0。 i i++) { if(strcmp(id,wo[i].ID)==0) { for(j=i。 j j++) { wo[j]=wo[j+1]。 } Number--。 } } //将剩余数据写入文件擦除以前的数据 fp=fopen("C: //worker.dat","wb")。 for(i=0。 i i++) { fwrite(&wo[i],sizeof(structworker),1,fp)。 } fclose(fp)。 printf("删除成功。 \n")。 } 3.5统计职工工资函数的实现 统计记录前如图19所示。 图19统计记录前效果图 输入一条记录信息: 如图20所示: 图20输入记录效果图 统计记录后如图21所示。 图21统计后前效果图 统计函数代码流程图,如图22所示。 图22统计函数流程图 统计源代码: //统计职工工资 voidstatistics() { inti=0。 doubles=0.0。 doublesum[100]。 for(i=0。 i i++) { sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3。 printf("%s的总工资为: %f\n",wo[i].name,sum[i])。 } for(i=0。 i i++) { s+=sum[i]。 } printf("平均工资为: %f\n",s/Number)。 } 3.6修改函数的实现 修改记录前如图23所示。 图23修改记录前效果图 输入一条记录信息: 如图24所示: 图24输入记录效果图 修改记录后如图25所示。 图25修改记录后效果图 修改函数代码流程图,如图26所示。 图26修改函数流程图 修改源代码: //修改职工信息 voidmodify() { intmode=0。 printf("请选择修改查找方式\n")。 printf("1按姓名查找修改\n")。 printf("2按工号查找修改\n")。 scanf("%d",&mode)。 switch(mode) { case1: xmxg()。 break。 case2: ghxg()。 break。 default: printf("输入错误! \n")。 break。 } } voidxmxg()//按姓名修改 { FILE*fp=NULL。 charname[30]。 inti=0。 printf("请输入要修改的职工姓名: ")。 scanf("%s",name)。 for(i=0。 i i++) { if(strcmp(name,wo[i].name))。 else break。 } printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n")。 printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3)。 printf("请重新输入该职工信息")。 printf("姓名: ")。 scanf("%s",wo[i].name)。 printf("工号: ")。 scanf("%s",wo[i].ID)。 printf("基本工资: ")。 scanf("%d",&wo[i].salary1)。 printf("职务工资: ")。 scanf("%d",&wo[i].salary2)。 printf("津贴: ")。 scanf("%d",&wo[i].salary3)。 //信息修改后重新更新文件里面的数据以保持数据一致性 fp=fopen("C: //worker.dat","wb")。 for(i=0。 i i++) { fwrite(&wo[i],sizeof(structworker),1,fp)。 } fclose(fp)。 } voidghxg()//按工号修改 { FILE*fp=NULL。 charid[30]。 inti=0。 printf("请输入要修改的职工工号: ")。 scanf("%s",id)。 for(i=0。 i i++) { if(strcmp(id,wo[i].ID))。 else break。 } printf("\t姓名\t工号\t基本工资\t职务工资\t津贴\n")。 printf("\t%s\t%s\t%d\t\t%d\t\t%d\n",wo[i].name,wo[i].ID,wo[i].salary1,wo[i].salary2,wo[i].salary3)。 printf("请重新输入该职工信息")。 printf("姓名: ")。 printf("姓名: ")。 scanf("%s",wo[i].name)。 printf("工号: ")。 scanf("%s",wo[i].ID)。 printf("基本工资: ")。 scanf("%d",&wo[i].salary1)。 printf("职务工资: ")。 scanf("%d",&wo[i].salary2)。 printf("津贴: ")。 scanf("%d",&wo[i].salary3)。 //信息修改后重新更新文件里面的数据以保持数据一致性 fp=fopen("C: //worker.dat","wb")。 for(i=0。 i i++) { fwrite(&wo[i],sizeof(structworker),1,fp)。 } fclose(fp)。 printf("\t=======>修改成功\n")。 } 3.7保存数据函数的实现 保存记录前如图27所示。 图27保存记录前效果图 输入一条记录信息: 图28输入记录效果图 保存记录后如图29所示。 图29保存记录后效果图 保存源代码: //保存数据 voidreserve() { printf("\t=====程序在运行时已自动保存.....\n")。 } voidback() { printf("\t===>按Enter键返回主菜单\n")。 } 3.8作者信息函数的实现 作者记录前如图30所示。 图30作者记录前效果图 输入一条记录信息: 如图31所示: 图31输入记录效果图 作者记录后如图32所示。 图32作者记录后效果图 作者源代码: //作者信息 voidauthor() { printf("\t***☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆***\n\n")。 printf("\t^^^^^^^^^^^^^^^铜陵学院^^^^^^^^^^^^^^^\n\n")。 printf("\t^^^^^^^^^^^^^^^信息管理与信息系统^^^^^^^^^^^^^^^\n\n")。 printf("\t^^^^^^^^^^^^^^***制作^^^^^^^^^^^^^^\n\n")。 printf("\t***★★★★★★★★★★★★★★★★***\n\n")。 } 3.9退出程序 操作前如图33所示。 图33作者记录前效果图 输入一条记录信息: 如图34所示: 图34输入记录效果图 回车后: 如图35所示 按任意键即可退出。 图35输入记录后效果图 四总结 通过这几天的努力,职工工资管理系统的设计已基本完成。 在本次课程设计中,我充分领略了C语言功能的强大,包括函数、数组、指针、结构体、文件等。 职工工资管理系统是一个很实用并且使用广泛的操作系统。 此系统可以减少很多工作量,做到设计合理,便于使用,易于操作。 界面友好,容错性高,可在很短的时间内,查找出所需的职工工资资料,提高工作效率。 该系统具有添加、显示、查询、修改、删除等基本功能,以方便对工资的各项管理操作。 每一条记录包括一个职工的工号、姓名、工资等信息,系统的各个功能模块都用函数的形式来实现,可以将职工信息保存在文件中,并从文件中读取出来。 总的来说,通过这次程序设计,使我加深了对C语言的认识,进一步熟悉了对C语言功能的灵活运用,而且加深了我对程序的理解和编写能力,通过文献资料和网络资料的帮助,使我对C语言程序设计这一基础学科又一次加深了认识,也意识到了其具有的强大功能和发展前景。 这会对以后的学习有所帮助。 参考文献 [1]谭浩强,张基温.C语言程序设计教程[M].第3版.高等教育出版社,2006 [2]杨涛.C程序设计语言.北京: 机械工业出版社,2004 [3]全国计算机等级考试二级教程: C语言程序设计(2009年版).高等教育出版社 附录 #include #include #include structworker { charname[30]。 charID[10]。 intsalary1,salary2,salary3。 }。 intdq(structworkerwo[])。 voidshow()。 voidbc(structworkerwo[])。 voidadd()。 voidsee()。 voidsearch()。 voidghcz()。 voidxmcz()。 voiddel()。 voidxmsc()。 voidghsc()。 voidstatistics()。 voidmodify()。 voidghxg()。 voidxmxg()。 voidreserve()。 voidback()。 voidauthor()。 structworkerwo[100]。 //保存所有的职工信息 intNumber=0。 //记录总的职工人数 voidmain() { intchoose=0。 while(true) { show()。 printf("\t\t====>请选择: ")。 scanf("%d",&choose)。 system("cls")。 switch(choose) { case0: exit(0)。 //退出 break。 case1: add()。 back()。 //添加职工信息 break。 case2: see()。 back()。 //查看职工信息 break。 case3: search()。 back()。 //查找职工信息 break。 case4: del()。 back()。 //删除职工信息 break。 case5: statistics()。 back()。 //统计职工工资 break。 case6: modify()。 back()。 //修改职工信息 break。 case7: reserve()。 back()。 //保存数据 break。 case8: author()。 back()。 //作者信息 break。 default: break。 } fflush(stdin)。 getchar(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 职工工资 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)