学院教职工工资管理系统C语言程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

学院教职工工资管理系统C语言程序设计#includestdio.h#includestdlib.h#includestring.h#defineN100intn;/*职工总数*/structteacher{charname[20];/*姓名*/charsex[5];/*性别*/intyear,mounth;/*出生年月*/intage;/*年龄*/charmarrige[5];/*婚姻状况*/charaddr[30];/*家庭住址*/charengineer[20];/*职称*/floatwage;/*工资级别*/}teac[N];floatsum=0;/*总工资*/voidsave();/*数据输入函数*/voidall();/*计算工资总额函数*/voidave();/*计算平均工资函数*/voidsort1();/*排序函数*/voidsort2();/*排序函数*/voidsame();/*找工资级别相同职工名单函数*/voidreviwe();/*修改函数*/voidfind();/*查询函数*/voidprint();/*数据输出函数*/voidmain(){charch;printf(※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※\n);printf(╱********欢◇☆○进◇☆○院◇☆○工◇☆○资◇☆○理◇☆○统************╲\n);printf(╲********○☆◇迎○☆◇入○☆◇职○☆◇工○☆◇管○☆◇系○************╱\n);printf(※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※◆※\n);printf(\n☆请选择你所需要的服务,按回车确认☆\n);printf(\n\t\ts:数据输入\t\n\t\ta:总工资\t\n\t\tv:平均工资\t\n\t\tg:按工资排序\t\n\t\tx:按姓名排序\t\n\t\tm:工资级别相同职工名单\t\n\t\tr:修改\t\n\t\tf:查询\t\n\t\te:退出\t\n);scanf(%c,&ch);while(ch!='e'){switch(ch){case's':save();break;case'a':all();break;case'v':ave();break;case'g':sort1();break;case'x':sort2();break;case'm':same();break;case'r':reviwe();break;case'f':find();}printf(\n☆请再次选择你所需要的服务,按回车确认☆\n);printf(\n\t\ts:数据输入\t\n\t\ta:总工资\t\n\t\tv:平均工资\t\n\t\tg:按工资排序\t\n\t\tx:按姓名排序\t\n\t\tm:工资级别相同职工名单\t\n\t\tr:修改\t\n\t\tf:查询\t\n\t\te:退出\t\n);getchar();scanf(%c,&ch);}}/*函数功能:输入职工信息*/voidsave(){FILE*fp;intj=0,i;charch[2];intn=0;printf(请选择输入方式:\n);printf(1:向管理系统重新输入数据,并删除原有数据\n2:向系统增加数据\n);scanf(%d,&i);/*输入选项*/if(i==1){if((fp=fopen(C:\\file1.dat,wb+))==NULL)/*判断文件能否打开*/{printf(cannotopenthisfile\n);exit(0);}printf(你是否要输入职工信息?(是:y/否:n));scanf(%s,ch);while(strcmp(ch,y)==0||strcmp(ch,Y)==0)/*判断是否要录入新信息*/{printf(\n姓名\t);scanf(%s,teac[j].name);printf(\n性别(男:b/女:g)\t);scanf(%s,teac[j].sex);printf(\n生日:年\t);scanf(%d,&teac[j].year);printf(\n月\t);scanf(%d,&teac[j].mounth);while(teac[j].mounth1||teac[j].mounth12){printf(输入月份有误请重输);scanf(%d,&teac[j].mounth);}printf(\n年龄\t);scanf(%d,&teac[j].age);printf(\n婚否(是y/否n)\t);scanf(%s,teac[j].marrige);printf(\n地址\t);scanf(%s,teac[j].addr);printf(\n职称\t);scanf(%s,teac[j].engineer);printf(\n工资\t);scanf(%f,&teac[j].wage);fwrite(&teac[j],sizeof(structteacher),1,fp);/*信息写入磁盘*/j++;printf(你是否要输入职工信息?(是:y/否:n)\n);getchar();scanf(%c,&ch);}fclose(fp);/*关闭文件*/}if(i==2){if((fp=fopen(c:\\file1.dat,rb))==NULL)/*判断文件能否打开*/{printf(cannotopenthisfile\n);exit(0);}for(n=0;(fread(&teac[n],sizeof(structteacher),1,fp)==1);n++)continue;/*将职工信息读入内存*/fclose(fp);printf(你是否要增加职工信息?(是:y/否:n));scanf(%s,ch);while(strcmp(ch,y)==0||strcmp(ch,Y)==0)/*判断是否要录入新信息*/{printf(\n姓名\t);scanf(%s,teac[j+n].name);printf(\n性别(男:b/女:g)\t);scanf(%s,teac[j+n].sex);printf(\n生日:年\t);scanf(%d,&teac[j+n].year);printf(\n月\t);scanf(%d,&teac[j+n].mounth);while(teac[j+n].mounth1||teac[j+n].mounth12){printf(输入月份有误请重输);scanf(%d,&teac[j].mounth);}printf(\n年龄\t);scanf(%d,&teac[j+n].age);printf(\n婚否(是y/否n)\t);scanf(%s,teac[j+n].marrige);printf(\n地址\t);scanf(%s,teac[j+n].addr);printf(\n职称\t);scanf(%s,teac[j+n].engineer);printf(\n工资\t);scanf(%f,&teac[j+n].wage);//fwrite(&teac[j+n],sizeof(structteacher),1,fp);/*信息写入磁盘*/n++;printf(你是否要输入职工信息?(是:y/否:n)\n);getchar();scanf(%c,&ch);}if((fp=fopen(c:\\file1.dat,wb))==NULL)/*判断文件能否打开*/{printf(cannotopenthisfile\n);exit(0);}for(j=0;jn;j++)fwrite(&teac[j],sizeof(structteacher),1,fp);/*信息写入磁盘*/fclose(fp);}}/*函数功能:计算总工资*/voidall(){FILE*fp;n=0;sum=0;if((fp=fopen(c:\\file1.dat,ab+))==NULL){printf(cannotopenthisfile\n);exit(0);}printf(姓名\t性别\t生日:年月\t年龄\t婚否\t地址\t职称\t工资\n);for(n=0;(fread(&teac[n],sizeof(structteacher),1,fp)==1);n++)/*将职工信息读入内存*/{printf(%s\t%s\t%d%d\t%d\t%s\t%st\t%s\t%f\n,teac[n].name,teac[n].sex,teac[n].year,teac[n].mounth,teac[n].age,teac[n].marrige,teac[n].addr,teac[n].engineer,teac[n].wage);/*将职工信息输出到屏幕上*/sum=sum+teac[n].wage;continue;}printf(总工资为%f\n,sum);fclose(fp);}/*函数功能:计算平均工资*/voidave(){floataver;n=0;all();/*调用计算总工资函数得到总工资*/(float)(aver=sum/n);/*计算平均工资*/printf(平均工资为%f\n,aver);}/*函数功能:按工资由低到高排序*/voidsort1(){FILE*fp;inti,j;structteachertemp;/*定义一个结构体变量一边在交换顺序是暂时存放数据*/if((fp=fopen(c:\\file1.dat,ab+))==NULL)/*以只读方式打开一个二进制文件判断能否打开*/{printf(cannotopenthisfile\n);exit(0);}//while(!feof(fp))/*检查文件是否结束*/for(n=0;(fread(&teac[n],sizeof(structteacher),1,fp)==1);n++)continue;/*将职工信息读入内存*//*排序*/for(i=0;in;i++){for(j=0;jn-(i+1);j++)if(teac[j].wageteac[j+1].wage){temp=teac[j];teac[j]=teac[j+1];teac[j+1]=temp;}}print();/*调用数据输出函数,输出结果*/fclose(fp);}voidsort2(){FILE*fp;inti,j;structteachertemp;/*定义一个结构体变量一边在交换顺序是暂时存放数据*/if((fp=fopen(c:\\file1.dat,ab+))==NULL)/*以只读方式打开一个二进制文件判断能否打开*/{printf(cannotopenthisfile\n);exit(0);}for(n=0;(fread(&teac[n],sizeof(structteacher),1,fp)==1);n++)continue;/*将职工信息读入内存*//*排序*/for(i=0;in;i++){for(j=0;jn-(i+1);j++)if(strcmp(teac[j].name,teac[j+1].name)0){temp=teac[j];teac[j]=teac[j+1];teac[j+1]=temp;}}print();/*调用数据输出函数,输出结果*/fclose(fp);}/*函数功能:找工资级别相同的职工名单*/voidsame(){FILE*fp;staticintt=0;/*定义一个静态变量*/inti,j,k,m,a,l;structteachertemp[N];/*定义一个结构体数组存放工资级别相同的职工名单*/if((fp=fopen(c:\\file1.dat,ab+))==NULL)/*以读写方式打开一个文本文件并判断能否打开*/{printf(cannotopenthisfile\n);exit(0);}pri

1 / 23
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功