学院教职工工资管理系统C语言程序设计.docx
- 文档编号:4362007
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:16
- 大小:17.54KB
学院教职工工资管理系统C语言程序设计.docx
《学院教职工工资管理系统C语言程序设计.docx》由会员分享,可在线阅读,更多相关《学院教职工工资管理系统C语言程序设计.docx(16页珍藏版)》请在冰豆网上搜索。
学院教职工工资管理系统C语言程序设计
学院教职工工资管理系统C语言程序设计
#include
#include
#include
#defineN100
intn;/*职工总数*/
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].mounth<1||teac[j].mounth>12)
{
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].mounth<1||teac[j+n].mounth>12)
{
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;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;i { for(j=0;j if(teac[j].wage>teac[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;i { for(j=0;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); } 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%s\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);/*将职工信息输出到屏幕上*/ continue; } /*找相同*/ for(i=0;i { m=t; a=0; if(i>0) for(l=0;l { if(teac[i].wage==temp[l].wage) a++; } if(a>0) continue;/*说明该数已在上一级比较中存入temp数组中了不需再比结束本次循环*/ else for(j=i;j { if(teac[i].wage==teac[j].wage) temp[t++]=teac[j]; } printf("\n工资级别为%f的名单为: \t",temp[t-1].wage); for(k=m;k printf("%s\t",temp[k].name); } fclose(fp); } /*函数功能: 删除不需要的职工信息*/ voidreviwe()/*删除函数*/ { FILE*fp; structteachertemp; inti,j,k=0; charname[20]; charch[2]; inta; 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); if(n==0) printf("没有记录\n"); else printf("请输入姓名\n"); scanf("%s",name); for(i=0;i { if(strcmp(name,teac[i].name)==0)/*找与要修改的信息相同的姓名*/ { printf("该职工信息为: \n"); printf("%s\t%s\t%d\t%d%d\t%s\t%s\t%s\t%f\n",teac[i].name,teac[i].sex,teac[i].year,teac[i].mounth,teac[i].age,teac[i].marrige,teac[i].addr,teac[i].engineer,teac[i].wage); } break; } printf("是否删除? (y/n)"); scanf("%s",ch); if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)/*判断是否删除*/ { printf("已成功删除信息\n\n"); for(j=i;j { strcpy(teac[j].addr,teac[j+1].addr); strcpy(teac[j].engineer,teac[j+1].engineer); strcpy(teac[j].marrige,teac[j+1].marrige); strcpy(teac[j].name,teac[j+1].name); strcpy(teac[j].sex,teac[j+1].sex); teac[j].age=teac[j+1].age; teac[j].year=teac[j+1].year; teac[j].mounth=teac[j+1].mounth;break; } if((fp=fopen("c: \\file1.dat","wb"))==NULL)/*判断文件能否打开*/ { printf("cannotopenthisfile\n"); exit(0); } for(j=0;j fwrite(&teac[j],sizeof(structteacher),1,fp);/*信息写入磁盘*/ fclose(fp); } } /*函数功能: 查询*/ voidfind() { FILE*fp; inti; charname[20]; charch[2]; 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;/*将职工信息读入内存*/ fclose(fp); if(n==0) printf("没有记录\n"); else printf("是否查询? (y/n)"); scanf("%s",ch); while(strcmp(ch,"y")==0||strcmp(ch,"Y")==0) { printf("请输入姓名\n"); scanf("%s",name); for(i=0;i { if(strcmp(name,teac[i].name)==0)/*找与要修改的信息相同的姓名*/ { printf("你要查询的职工信息如下: \n"); printf("%s\t%s\t%d\t%d%d\t%s\t%s\t%s\t%f\n",teac[i].name,teac[i].sex,teac[i].year,teac[i].mounth,teac[i].age,teac[i].marrige,teac[i].addr,teac[i].engineer,teac[i].wage); break; } } if(i==n) printf("没有你需要查询的信息\n"); printf("是否继续查询? (y/n)"); scanf("%s",ch); } } /*函数功能: 输出数据*/ voidprint() { inti; printf("\n姓名\t性别\t生日: 年月\t年龄\t婚否\t地址\t职称\t工资\n"); for(i=0;i printf("%s\t%s\t%d\t%d%d\t%s\t%s\t%s\t%f\n",teac[i].name,teac[i].sex,teac[i].year,teac[i].mounth,teac[i].age,teac[i].marrige,teac[i].addr,teac[i].engineer,teac[i].wage); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学院 教职工 工资管理 系统 语言程序设计