题目要求 做一个工资管理系统,要能按照姓名和卡号查找员工的工资信息,以及员工工资信息的插入,删除。同时这些信息要存储在TXT文件中…还要可以按照一定顺序输出所有员工工资的信息 #include〈stdio.h〉 #include〈string。h〉 #define N 100 struct mygz {
int yuefen; float yfgz; float sf; float df; float sj; float sfgz; };
struct worker {
int kahao;
char xingming[20]; struct mygz m[12]; float zsfgz; };
int ygsm;
struct worker a[N]; float shuijin(float m) {
float shui1,shui2; float tmp;
shui1=0;shui2=0; if(m〉=1400) {
shui1=(m-1400)*0.1; shui2=30; } else {
if(m〉=800 && m〈1400) {
shui2=(m—800)*0。05; }
}
tmp=shui1+shui2; return(tmp);
}float shifagongzi(float a,float b,float c,float d) {
float e=a—b—c-d; return(e); }
void duqu() {
FILE *fp; if((fp=fopen(\"D:工资信息.txt”,”r\"))==NULL) {
printf(”无法读取文件”); ;return; }
while(!feof(fp)) {
fread(&a[ygsm],sizeof(struct worker),1,fp); ygsm++; } }
void chaxun() {
int b; int i; int j;
label_3: b=0;
while(b!=1&&b!=2) {
printf(”1,选择姓名查询.\\n2,选择卡号查询.\\n”); scanf(”%d\); }
if(b==1) {
char c[20];
printf(\"请输入您的姓名:\\n\"); scanf(”%s”,c); i=0;
while(!(strcmp(a[i]。xingming,c)==0)&&i〈ygsm) { i++; }
if(i==ygsm) {
printf(”您查找的名字不存在,请正确输入您的名字或用卡号查询\\n”); return; }
printf(”%—10d %-20s \\n”,a[i]。kahao,a[i].xingming); for(j=0;a[i]。m[j]。yuefen!=NULL;j++) {
printf(\"月份:%5d,应发工资:%10。2f,水费:%7。2f,电费:%7。2f,税金:%7。2f,实发工资:%10。2f.\\n”,a[i]。m[j].yuefen,a[i].m[j]。yfgz,a[i].m[j]。sf,a[i].m[j]。df,a[i]。m[j]。sj,a[i]。m[j]。sfgz); }
printf(”总实发工资:%10f\\n\); b=0;
while(b!=1&&b!=2) {
printf(”1,继续查询.\\n2,返回主菜单。\\n\"); scanf(”%d”,&b); }
if(b==1) {
goto label_3; } else {
;return; } } else {
int d=0;
while(!(d>=10001&&d<=32767)) {
printf(”请输入您的卡号(五位数字),例如:10001\\n”); scanf(”%d\); } i=0;
while(a[i].kahao!=d&&i if(i==ygsm) { printf(”您查找的名字不存在,请正确输入您的名字或用卡号查询\\n”); return; } printf(”%—10d %—20s \\n”,d,a[i].xingming); for(j=0;a[i]。m[j].yuefen!=NULL;j++) { printf(”月份:%5d,应发工资:%10.2f,水费:%7.2f,电费:%7。2f,税金:%7。2f,实发工资:%10。2f。\\n\",a[i].m[j].yuefen,a[i]。m[j].yfgz,a[i].m[j]。sf,a[i]。m[j]。df,a[i].m[j]。sj,a[i].m[j].sfgz); } printf(”总实发工资:%10f\\n\",a[i]。zsfgz); b=0; while(b!=1&&b!=2) { printf(”1,继续查询。\\n2,返回主菜单。\\n”); scanf(\"%d”,&b); } if(b==1) { goto label_3; } else { ;return; } } } void liulan() { struct worker x; int c; float d; int i; int j; int k; for(i=0;i〈ygsm;i++) { c=a[i]。kahao; k=i; for(j=i+1;j〈ygsm;j++) { if(c〉a[j].kahao) { c=a[j]。kahao; k=j; } } x=a[i]; a[i]=a[k]; a[k]=x; } for(i=0;i printf(\"月份:%5d,应发工资:%10。2f,水费:%7。2f,电费:%7.2f,税金:%7。2f,实发工资:%10.2f.\\n”,a[i]。m[j]。yuefen,a[i]。m[j]。yfgz,a[i]。m[j].sf,a[i]。m[j].df,a[i]。m[j].sj,a[i]。m[j]。sfgz); } printf(”总实发工资:%10f\\n”,a[i].zsfgz); } for(i=0;i<40;i++) { printf(\"\\n”); } for(i=0;i for(j=i+1;j〈ygsm;j++) { if(d〈a[j]。zsfgz) { d=a[j]。zsfgz; k=j; } } x=a[i]; a[i]=a[k]; a[k]=x; } for(i=0;i〈ygsm;i++) { printf(”%—20s %—10d \\n”,a[i].xingming,a[i]。kahao); for(j=0;a[i].m[j]。yuefen!=NULL;j++) { printf(”月份:%5d,应发工资:%10。2f,水费:%7。2f,电费:%7.2f,税金:%7。2f,实发工资:%10。2f.\\n\",a[i]。m[j].yuefen,a[i].m[j].yfgz,a[i]。m[j]。sf,a[i]。m[j]。 df,a[i].m[j].sj,a[i]。m[j]。sfgz); } printf(\"总实发工资:%10f\\n”,a[i].zsfgz); } } void shanchu() { FILE *fp; int b; int c; int i; int j; label_4: printf(\"请输入要删除信息的卡号:\\n\"); scanf(\"%d\&b); for(i=0;i〈ygsm;i++) { if(a[i].kahao==b) { j=i; } } for(i=j+1;i〈ygsm;i++) { a[i-1]=a[i]; } ygsm——; fp=fopen(”D:工资信息。txt”,”w”); for(i=0;i〈ygsm;i++) { fwrite(&a[i],sizeof(struct worker),1,fp); } fclose(fp); c=0; while(c!=1&&c!=2) { printf(”1。继续删除\\n2 返回主菜单\\n\"); scanf(”%d”,&c); } if(c==1) { goto label_4; } else { return; } } void luru() { FILE *fp; int k; int i; int j; int b; int c; int d; if((fp=fopen(\"D:工资信息.txt\",”w\"))==NULL) { printf(\"无法找到目标文件\\n\"); return; } label_1: b=0; while(!(b>=1&&b<=12)) { printf(\"请您输入您要建立的月份\\n”); scanf(”%d”,&b); } b=b—1; d=0; while(!(d〉=10001&&d〈=32767)) { printf(”请输入您要录入工资的卡号(五位数字),例如:10001\\n\"); scanf(\"%d”,&d); } for(i=0;i printf(”没有该卡号记录.\\n1 新建\\n2 返回上一级\\n”); scanf(”%d”,&c); } if(c==2) { goto label_1; } if(c==1) { a[i].kahao=d; printf(”请输入姓名:\\n\"); scanf(\"%s\); a[i]。m[b]。yuefen=b+1; printf(”请输入此人该月的应发工资:\\n”); scanf(”%f\",&a[i].m[b].yfgz); printf(\"请输入此人该月所用水费:\\n”); scanf(\"%f”,&a[i]。m[b].sf); printf(”请输入此人该月所用电费\\n\"); scanf(\"%f\",&a[i].m[b]。df); a[i]。m[b].sj=shuijin(a[i]。m[b]。yfgz); a[i]。m[b]。sfgz=shifagongzi(a[i]。m[b]。yfgz,a[i]。m[b].sf,a[i]。m[b]。df,a[i]。m[b].sj); a[i].zsfgz=0; for(k=0;k<12;k++) { a[i]。zsfgz+=a[i].m[k].sfgz; } ygsm++; c=0; while(c!=1 && c!=2) { printf(”1 继续\\n2 返回主菜单\\n”); scanf(\"%d\",&c); } if(c==1) { goto label_1; } if(c==2) { goto label_2; } } } else { if(a[i]。m[b]。yuefen==b+1) { c=0; while(c!=1 && c!=2) { printf(”已有该月记录\\n1 覆盖原有记录\\n2 返回上级\\n”); scanf(\"%d\",&c); } if(c==1) { printf(\"请输入此人该月的应发工资:\\n”); scanf(”%d”,&a[i]。m[b].yfgz); printf(”请输入此人该月所用水费:\\n\"); scanf(”%d\",&a[i]。m[b]。sf); printf(”请输入此人该月所用电费\\n\"); scanf(”%d”,&a[i]。m[b].df); a[i].m[b]。sj=shuijin(a[i].m[b].yfgz); a[i].m[b].sfgz=shifagongzi(a[i].m[b]。yfgz,a[i].m[b]。sf,a[i]。m[b]。df,a[i]。m[b]。sj); a[i].zsfgz=0; for(k=0;k<12;k++) { a[i].zsfgz+=a[i]。m[k]。sfgz; } while(c!=1 && c!=2) { printf(”1 继续\\n2 返回主菜单\\n”); scanf(”%d”,&c); } if(c==1) { goto label_1; } if(c==2) { goto label_2; } } else { goto label_1; } } if(a[i]。m[b].yuefen==NULL) { a[i].m[b]。yuefen=b+1; printf(\"请输入此人该月的应发工资:\\n”); scanf(”%f\&a[i].m[b]。yfgz); printf(”请输入此人该月所用水费:\\n\"); scanf(”%f”,&a[i].m[b]。sf); printf(\"请输入此人该月所用电费\\n\"); scanf(”%f”,&a[i]。m[b]。df); a[i]。m[b].sj=shuijin(a[i]。m[b]。yfgz); a[i]。m[b].sfgz=shifagongzi(a[i]。m[b]。yfgz,a[i]。m[b]。sf,a[i]。m[b].df,a[i].m[b]。sj); a[i].zsfgz=0; for(k=0;k〈12;k++) { a[i].zsfgz+=a[i].m[k]。sfgz; } c=0; while(c!=1 && c!=2) { printf(”1 继续\\n2 返主主菜单\\n\"); scanf(”%d”,&c); } if(c==1) { goto label_1; } if(c==2) { goto label_2; } } c=0; while(c!=1 && c!=2) { printf(”1 继续\\n2返回主菜单\\n”); scanf(”%d\",&c); } if(c==1) { goto label_1; } if(c==2) { goto label_2; } } label_2: fp=fopen(\"D:工资信息.txt”,”r+”); for(j=0;j〈ygsm;j++); { fwrite(&a[i],sizeof(struct worker),1,fp); } fclose(fp); } void main() { int a=0; duqu(); while(a!=5) { printf(”/*******************欢迎使用*********************/\\n”); printf(”/************* 请按菜单选项进行选择 *************/\\n”); printf(\"/************* 1。查询个人工资情况 *************/\\n\"); printf(”/************* 2.录入工资信息 *************/\\n\"); printf(\"/************* 3。删除个人工资信息 *************/\\n”); printf(”/************* 4。浏览员工工资信息 *************/\\n”); printf(\"/************* 5.退出工资管理系统 *************/\\n”); printf(\"/******************^_^ ^_^ ^_^*******************/\\n\"); scanf(\"%d\",&a); switch(a) { case 1:chaxun();break; case 2:luru();break; case 3:shanchu();break; case 4:liulan();break; default :break; } } } 因篇幅问题不能全部显示,请点此查看更多更全内容