C语言课设职工工资管理系统.docx
- 文档编号:8775650
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:37
- 大小:191.70KB
C语言课设职工工资管理系统.docx
《C语言课设职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课设职工工资管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
C语言课设职工工资管理系统
一引言
C语言是binedLanguage〔组合语言〕的中英混合简称。
是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
设计一个程序的过程就是解决一个实际问题的过程,从解决实际问题的角度,我们可以这样来看:
首先要了解这个问题的根本要求,即输入、输出、完成从输入到输出的要什么;在次我们必须捋清思路,逐一的解决问题的各个方面,即从输入开场入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数、构造体和文件等,然后确定处理过程。
本课题中主要应用了C语言中的数组、构造体、文件等关键技术。
在C语言中,数组属于构造数据类型。
一个数组可以分解为多个数组元素,这些数组元素可以是根本数据类型或是构造类型;构造体(struct)是由一系列具有一样类型或不同类型的数据构成的数据集合,也叫构造,在构造体中的变量,可以是一样、局部一样,或完全不同的数据类型,构造体只能描述一个对象的状态,不能描述一个对象的行为。
文件是一种组织外部存储介质上的数据的数据类型。
它具有两个特征:
一是对一个数据集合可以用一个名字命名;二是保存在外部存储介质上,可以长期保存。
通过此次课设可以锻炼学生理论联系实际能力,提高学生适应实际、实践编程的能力,使对C语言系统编程有一个大致的了解,并到达如下目的:
1.熟悉C语言程序的编辑、编译和运行的过程。
2.熟练运用if语句和switch语句以及嵌套应用。
3.学习并掌握C语言定义函数的根本方法、声明函数及调用函数的方法和过程。
4.掌握文件的概念以及文件的定义方法,认识文件翻开、关闭、读、写等文件根本操作函数。
5.掌握构造体类型变量、数组的定义和使用。
6.掌握数组的定义、引用以及输入输出的方法、通过字符数组存储字符串,进一步使用字符串。
图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 { printf("输入第%d个职工信息\n",i+1); printf("XX: "); 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("\tXX\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按XX查找\n"); printf("2按工号查找\n"); scanf("%d",&n); switch(n) { case1: xmcz(); break; case2: ghcz(); break; default: printf("输入错误! \n"); break; } } voidxmcz()//按XX查找 { charname[30]; inti=0; printf("请输入要查找职工XX: "); scanf("%s",name); system("cls"); printf("\tXX\t工号\t根本工资\t职务工资\t津贴\n"); for(i=0;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("\tXX\t工号\t根本工资\t职务工资\t津贴\n"); for(i=0;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按XX删除\n"); printf("2按工号删除\n"); scanf("%d",&n); switch(n) { case1: xmsc(); break; case2: ghsc(); break; } } voidxmsc()//按XX删除 { FILE*fp=NULL; charname[30]; inti=0; intj=0; printf("请输入要删除的职工XX: "); scanf("%s",name); for(i=0;i { if(strcmp(name,wo[i].name)==0) { for(j=i;j { wo[j]=wo[j+1]; } Number--; } } //将剩余数据写入文件擦除以前的数据 fp=fopen("C: //worker.dat","wb"); for(i=0;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 { if(strcmp(id,wo[i].ID)==0) { for(j=i;j { wo[j]=wo[j+1]; } Number--; } } //将剩余数据写入文件擦除以前的数据 fp=fopen("C: //worker.dat","wb"); for(i=0;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 { sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3; printf("%s的总工资为: %f\n",wo[i].name,sum[i]); } for(i=0;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按XX查找修改\n"); printf("2按工号查找修改\n"); scanf("%d",&mode); switch(mode) { case1: xmxg(); break; case2: ghxg(); break; default: printf("输入错误! \n"); break; } } voidxmxg()//按XX修改 { FILE*fp=NULL; charname[30]; inti=0; printf("请输入要修改的职工XX: "); scanf("%s",name); for(i=0;i { if(strcmp(name,wo[i].name)); else break; } printf("\tXX\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("XX: "); 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 { 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 { if(strcmp(id,wo[i].ID)); else break; } printf("\tXX\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("XX: "); printf("XX: "); 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 { 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语言功能的强大,包括函数、数组、指针、构造体、文件等。 职工工资管理系统是一个很实用并且使用广泛的操作系统。 此系统可以减少很多工作量,做到设计合理,便于使用,易于操作;界面友好,容错性高,可在很短的时间,查找出所需的职工工资资料,提高工作效率。 该系统具有添加、显示、查询、修改、删除等根本功能,以方便对工资的各项管理操作。 每一条记录包括一个职工的工号、XX、工资等信息,系统的各个功能模块都用函数的形式来实现,可以将职工信息保存在文件中,并从文件中读取出来。 总的来说,通过这次程序设计,使我加深了对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(); system("cls"); } } intdq(structworkerwo[]) { FILE*fp=NULL; inti=0; fp=fopen("C: //worker.dat","rb"); while(fread(&wo[i],sizeof(structworker),1,fp)) i++; fclose(fp); returni; } voidshow() { printf("\n"); printf("\t****************职工工资管理系统****************\n\n"); printf("\t**\n\n"); printf("\t^^^^^^^^^^^^^^^[1]添加职工信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[2]查看职工信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[3]查找职工信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[4]删除职工信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[5]统计职工工资^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[6]修改职工信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[7]保存数据^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[8]作者信息^^^^^^^^^^^^^^^^^\n"); printf("\t^^^^^^^^^^^^^^^[0]退出系统^^^^^^^^^^^^^^^^^\n\n"); printf("\t*★★★★★★★★★★★★★★★★★★★★★★★*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 职工工资 管理 系统