还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
Is设计容设计一个工资管理程序存福的数据包括XX,职工号,所属部门,基本工资,奖瞅工资,补贴项目及金额和扣款项目及金额功能1)加入一个人的记录2)删除一个人的记录3)显示所有人的记录4)查询(包括按人名查询工资和技工号查询)5)统计功能(包括统计某一工资围的人数和统计各部门的工资总数)6)修改功能
2、段计目的
1.熟悉C话言程序的编辑、编译和运行的过程
2.熟练运用if话句和switch语句以及嵌套应用
3.学习并掌握C诺言定义函数的基本法、声明因数及调用团数的法和过程
4.掌握文件的概念以及文件的定义法,共识文件打开、关闭、读、写等文件基本操作函数
5.掌握结构体类型变量、数组的定义和使用
6.掌握数组的定义、引用以及输入输出的法、通过字符数组存储字符串,进一步使用字符串
3、设计思路(包括所用的函数)职工工资管理系统
4、程序代码#include stdio.h#include stdlib.h#include string.hstruct worker{char depa
[30];char name
[30];char ID
[10];int salary1,salary2,salary3,salary4;};int dqstruct worker wo[J;void show;void bcstruct worker wo[J;void add;void see;void search;void ghcz;void xmcz;void bmcz;void del;void xmsc;void ghsc;void statistics;void statistic;void gzdtj;void bmtj;void modifyO;void ghxg;void xmxg;void reserve;void back;〃保存所有的职工信息〃记录总的取工人数structworker wo
[100];int Number=0;void main{int choose=0;whilelshow;printfH\t\t====请选择;scanfn%du,choose;systemnclsn;switchchoose出case0:exit0;//]Hbreak;case l:add;;〃潦加取信息back Ibreak;case2:see;〃查看取工信息back;break;case3:search;;〃查找取工信息backbreak;case4:del;除职工信息back;//|]break;case5:statistics;〃个人工资统计back;break;case6:statistic;;〃统计取工工资backbreak;case7:modify;〃修改信息back;11break;case8:reserve;〃保存数据back;break;default:break;fflushstdin;systemnclsn;int dqstructworkerwo[J{FILE*fp=NULL;int i=0;〃「fp=fbpenC:worker.dat”Tb;;whilefreadwo[i],sizeofstruct worker,1,fp i++fclosefp;return i;void showprintfH\nn;职工工淆管理系统,printf\t********************************\n\nprintfn\tAAAAAAAAAAAAAAA
[1]添加取工信息AAAAAAAAAAAAAAAAA\QH.printfH\t^^☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆*\n\n;printfH\tAAAAAAAAAAAAAAA
[2]查看取工信息AAAAAAAAAAAAAAAAA\nn,printfn\tAAAAAAAAAAAAAAA
[3]查找联|信息AAAAAAAAAAAAAAAAA\n»».printfH\tAAAAAAAAAAAAAAA
[4]删除取~|~信息AAAAAAAAAAAAAAAAA\n»».printfn\tAAAAAAAAAAAAAAA
[5]个人工资统计AAAAAAAAAAAAAAAAA\n»»\.printfn\tAAAAAAAAAAAAAAA
[6]统计取工工资AAAAAAAAAAAAAAAAAA\nprintfH\tAAAAAAAAAAAAAAA
[7]修改取I信息AAAAAAAAAAAAAAAAA\nn;printfn\tAAAAAAAAAAAAAAA
[8]保存数据AAAAAAAAAAAAAAAAA^*.printfH\tAAAAAAAAAAAAAAA[O]退出系筑AAAAAAAAAAAAAAAAA\n\n»».printfH\t*★★★★★★★★★★★★★★★★★★★★★★★*\n;void bcstructworker*woFILE*fp=NULL;fp=fopenn C://worker.datn,n ab+n;fwritewo,sizeofstruct worker,l,fp;fclosefp;〃添加职工信息void add{int numberTemp=O;int i=0;structworkertemp;请输入要添加取工个数;printf“”scanfH%dn,numberTemp;输入第%个职工信息fori=0;ivnumberTemp;i++printf d\n”,i+l;printfnXX;scanf%s”,temp,name;printf“工号;scanfH%sn,temp.ID;printf”所属部门:;scanfH%sn,temp.depa;printf基本工资”;scanfH%dn,temp.salary1;printf”奖励工资”;scanfn%dn,temp.salary2;补贴项目即金额:;printfscanfn%dn,temp.salary3;扣除项目即金额”;printfscanfn%dn,temp.salary4;〃写人到数组〃写入到文件wo[Number++]=temp;bctemp;添加成功;printf\n”〃查看取工信息void seeint i=0;以下是全部职工printf\n;工号所属部基本工资奖励工资补贴项目及金额扣款项目及金额总工资\printf*AtXX\t\t|]\t\t\t\t\t心;whileiNumber{printfn\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n,,wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary I,w;o[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary l+wo[i].salary2+wo[i].salary3-wo[i].salary4;i++〃查找取工信息void searchint n=0;printfnl按XX查找\nn;printfH2技工号查找\n;printfn3按部门查找\n;scanf%dn,n;switchn case1:xmcz;break;case2:ghcz;break;case3:bmcz;break;default:printfn输入错误!\nn;break;〃按查找void xmczXX{char name
[30];int i=0;printfC喉输人要查找职工XX:”;scanfH%sn,name;systemnclsn;号所属部基本工资奖瞅工资补贴项目及金额扣款项目及金额总工资\printf^\tXX\t I\t H\t\t\t\t\t晨;for i=O;iNumber;i++if strcmpname,wo[ij.name=0printfn\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\nn,wo[il,name,wo[i].ID,wofi].depa,wofi].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salaryl+wo[i].salary2+wo[i].salary3-wo[i].salary4;按工号查找void ghcz//{char idf10];int i=0;请输入要查找工号printf“scanfn%sn,id;systemnclsn;工号所属部基本工资奖加工资补贴项目及金额扣款项目及金额总工资\己;printf\XX\t\t|,]\t\t\t\t\tfor i=;iNumber;i++{if strcmpid,wo[i].ID==0{printfn\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\nu,wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary l,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary l+wo[i].salary2+wo[i].salary3-wo[i].salary4;〃按部门查找void bmczchar depa[3OJ;int i=0;printf请输入要查询的部门名称scanfH%sH,depa;systemnclsn;工号所属部基本工资奖瞅工资补贴项目及金额扣款项目及金额总工资printf\XX\t\t|[\t\t\t\t\t\n〈for i=O;i Number;i++if strcmpdepa,wo[i J.depa==0printfn\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\nH,wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary l+wo[i].salary2+wo[i].salary3-wo[i].salary4;}〃跚除职工信息void delint n=0;printfnl按XX删除\n;printfH2接工号删除\n;scanfn%du,n;switchn case1:xmsc;break;case2:ghsc;break;〃按删除void xmscXX FILE*fp=NULL;char name[30J;int i=0;int j=0;printfn靖输入要删除的取工XX:”;scanfn%su,name;fori=0;iNumber;i++if strcmpname,wo[ij.name=O{for j=i;jNumber-1;j++wo[j]=wofj+l];Number—;〃将剩余数据写入文件擦除以前的数据fp=fopenn C://worker.datn,n wbn;for i=O;iNumber;i++fwritewo[i],sizeofstruct worker,1,fp;fclosefp;除成功printf/J;\n按号删除void ghsc//I{FILE*fp=NULL;char id
[60];int i=0;int j=0;请输入要除的取工工号printf IM”;scanfH%su,id;fori=0;iNumber;i++if strcmpid,wo[i].ID==0for j=i;jNumber-1;j++{wo[j]=wo[j+l];Number—;〃将剩余数据写人文件擦除以前的数据fp=fopen,C://worker.datV,wbu;for i=O;iNumber;i++fwritewo[i],sizeofstruct worker,l,fp;fclosefp;”删除成耽printf\n〃个大工资统计void statisticsint i=;double sum
[100];fori=0;iNumber;i++{sum[i]=wo[i].salary l+wo[i].salary2+wo[i].salary3-wo[i].salary4;printfH%s的总工资为:%f\nH,wo[i].name,sum[i];〃统计取工工资void statistic{int n=;按工资段统计printf\nprintfn2按部0统it\nn;scanfn%du,n;switchncase1:gzdtj;break;case2:bmtj;break;default:printf输入错误!\nH;break;〃按工资段统void gzdtjit{int sal,sa2;int i=0;int n,m;int sl
[20]={0,0};double sum
[100];printf叮青输入要查询的工资段:”;scanfH%d-%dn,sal,sa2;systemnclsH;fori=0;iNumber;i++sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;fori=0;iNumber;i++{n=sum[i]/1000;if n9n=10;switchn{case O:sl[O]++;break;case l:sl[l]++;break;case2:sl
[2]++;break;case3:sl
[3]++;break;case4:sl
[4]++;break;case5:sl
[5]++;break;case6:sl
[6]++;break;case7:sl
[7]++;break;case8:sl
[8]++;break;case9:sl
[9]++;break;case10:sl[10J++;break;m=sal/lO;switchm{case O:printfM工资在1000以下的人数%d\nn,sl
[0];break;case l:printf工资在1000到2000之间的人数^|%d\nn,sl[l];break;工资在到之间的人数为%;case2:printf20003000d\n\sl
[2]break;工资在到之间的人数为%case3:printf30004000d\n\sl
[3];break;case4:printf”工资在4000到5000之间的人数%d\nn,sl
[4];break;工资在到之间的人数为%case5:printf50006000d\n”,sl
[5];break;工资在到之间的人数为%case6:printf60007000d\iT,sl
[6];break;工资在到之间的人数为%case7:printf70008000d\n”,sl
[7];break;工资在到之间的人数为%case8:printf80009000d\n”,sl
[8];break;case9:printfH工资在9000到10000之间的人数为%d\nH,sl
[9];break;case10:printf”工资在10000以上的人数^%d\n,\sl
[10];break;〃按部门统计void bmtjchardepaL30J;float sum=0;int i=0;printfC请输入要查询的部门名称scanfH%s\depa;systemncls;工号所属部基本工资奖瞅工资补贴项目及金额扣款项目及金额总工资\printf**\tXX\t\t ll\t\t\t\t\t心;for i=0;iNumber;i++if strcmpdepa,wo[i J.depa==O printfH\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\nH,wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;sum=sum+wo[i].salaryl+wo[i].salary2+wo[i].salary3-wo[i].salary4;printf该部H的总工资为:%f\nM,sum;〃修改取工信息void modifyint mode=0;printf请选择修改查找式\n;printfnl按XX查找修改X;printfH2按工号查找修改\n”;scanfH%dn,mode;switchmode case1:xmxg;break;case2:ghxg;break;default:printf输入错误!\nn;break;〃按修改void xmxgXX{FILE*fp=NULL;char name
[30];int i=0;printfH请输入要修改的职工XX:;scanfn%sn,name;for i=O;iNumber;i++if strcmpname,wo[i].name;else break;void show;、工号所属部门基本工资奖励工资补贴项目及金额printf XX\t\t\t\t\t〃添加职工信void add;扣款项目及金额总资\t\t I\n息〃查看职工void see;信息,查void search找取工信息void〃技工号查找ghcz;void〃按查找xmcz;XX〃技部门查void bmcz;找〃删除取工void del;信息按void xmsc;//XX删除〃按void ghsc;Iprintfn\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\nH,wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,w号删除图程序功能图1个大工资统;〃统计职工信息void statistics;//it voidstatistic voidgzdtj工资段统计〃按部门统计〃修改取工信息;//15void bmtj;void modify;按工号修改〃按修改,保存void ghxg;//void xmxg;XX void reserve取工信息o[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary l+wo[i].salary2+wo[i].salary3-wo[i].salary4;请重新输入该职工信息printf”printfMXX”;scanfn%s\wo[i].name;printfH I号*;scanfH%su,wo[i].ID;printfH所属部门”;scanfH%s,wo[i].depa;printfn基本工资:;scanfn%dH,wo[i].salaryl;奖励工资;printf”scanf,%d,,wo[i].salary2;printfn补贴项目即金额”;scanfH%d,wo[i].salary3;”扣款项目及金额”;printfscanf%dn,wo[i].salary4;〃信息修改后重新更新文件里面的数据以保持数据一致性fp=fopennM,Hwbn;for i=O;iNumber;i++fwritewo[i],sizeofstruct worker,1,fp;fclosefp;〃技工号修改void ghxgFILE*fp=NULL;char id[3OJ;int i=0;“请输入要修改的取工工号”;printfscanfH%sn,id;for i=O;iNumber;i++{if strcmpid,wo[i].ID;elsebreak;工号所属部基本工资奖励工资补贴项目及金额扣款项目及金额总printf”\tXX\t\t|,]\t\t\t\t\t资I\nprintfH\t%s\t%s\t%s\t%d\t\t%d\t\t%d\t\t%d\t\t%d\nn,wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,w请o[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salaryl+wo[i].salary24-wo[i].salary3-wo[i].salary4;printf重新输入该职工信息printfHXX”;scanfn%sn,wo[i].name;printfn I号”;scanfH%su,wo[i].ID;printfn所属部门”;scanfn%sn,wofi].depa;printfn基本工资;scanfn%du,wo[i].salary1;printfn奖瞅工资”;scanfn%du,wo[i].salary2;printf补贴项目即金额:;scanfn%d,wo[i].salary3;printf扣款项目及金额”;scanfH%dn,wo[i].salary4;〃信息修改后重新更新文件里面的数据以保持数据一致性fp=fopennC://worker.dat\nwbn;for i=O;iNumber;i++{fwritewo[i],sizeofstruct worker,l,fp;fclosefp;修改成功;printf”\t=======\n〃保存数据程序在运行时已自动保存…;voidreserveprintf”\t===\n voidback{printfn\t===Enter键返回主菜单\n;
5.、运行结果由里王回醺蔚同叼母<---依邮M更:鳗下可目配程*00Z OOI=i^g@M#跳工㈣添松00£00工中/信*亚口般圜蚪…工0:xx iBIIllZgYM过目』理」:眼■ooi00£曲目配糖业00:魏工增添000Z:I$8眼目据圜电UI:il3:xx晋当工曲J-IYO:源工遍“更魂蛾翼:1Y当胆图醉香善丫姚车回”孙骐M斗斗斗斗斗斗斗斗斗斗斗斗斗斗斗斗斗斗斗斗斗斗斗*峪学曾解vvvvvvvvvvvvvvvvv[Olvvvvvvvvvvvvvvv琳窿与的vvvvvvvvvvvvvvvvv fSlvvvvvvvvvvvvvvv号工曲说|l|[Z,]vvvvvvvvvvvvvvv vvvvvvvvvvvvvvvvvVVVVVVVVVVVVWVVV工工的喙[9Jvvvvvvvvvvvvvvv嫁蓼工41-Y4^FlvvvvvvvvvvvvvvvVVVVVVVVVVVVVVVVV号[期vvvvvvvvvvvvvvvvvg m[®[frlvvvvvvvvvvvvvvvgf号工ill(科量VVVVVVVVVVVVWVVV LEJVVVVVVVVVVVVVVV号工泄星显vvvvvvvvvvvvvvvvv[Slvvvvvvvvvvvvvvv号[/[vvvvvvvvvvvvvvvvv gUR IIvvvvvvvvvvvvvvv*中不空卒卒卒卒中卒卒卒卒卒卒〒用卒卒卒中乎空卒*r|C5jC*朝本由土呈物i imur|C r|%5jC通过这几天的努力,取工工资管理系统的设计已基本完成在本次课程设计中,我充分领略了C话言功能的强大,包括函数、数组、指针、结构体、文件等职工工资管理系统是一个很实用并且使用广泛的操作系统此系统可以减少很多工作量,做到设计合理,便于使用,易于操作;界面友好溶错性高,可在很短的时间,查找出所需的取工工资资料,提高工作效率该系统具有添加、显示、查询、修改、删除等基本班能,以便对工资的各项管理操作每一条记录包括一个取工的工号、XX、所属部[]、工资等信息,系统的各个功能模块都用因数的形式来实现,可以将职工信息保存在文件中,并从文件中读取出来在对部门人数的统计中我们遇到了一些困难,通过查阅资料、小组探访,ft总做出,更加熟悉了switch话句的用法总的来说,通过这次程序设计,使我加深了对C语言的认识,进一步熟悉了对C诺言功能的灵活运用,而且加深了我对程序的理解和编写能力,通过文献资料和网络资料的帮助,使我对C语言程序设计这一基础学科又一次加深了认识,也意识到了其具有的强大功能和发展前景这会对以后的学习有所帮助、添加职工信息:1潦加函数流程图、查看取工信息:2查看函数流程图定义n=0输入n按工号删除终止删除函数流程图、个大工资统计5个大工资统计流程图。