0
点赞
收藏
分享

微信扫一扫

用C语言编写一个职工管理系统

尤克乔乔 2022-02-13 阅读 73
c语言

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>void menu();void salary();void pai();void xiu();void seek();void lu();void tong();void read();void color(short x);FILE *fp;int i=0,j;struct work{ char num[20]; char name[20]; float a1; float a2; float a3; float a4;}wor[500];int main(){ menu();} void color(short x){ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);}void menu(){ int t3; printf("\n\n\t\t\t********职工工资管理系统********\n"); printf("\t\t1.建立工资表\n\t\t2.职工扣税和实发工资\n"); printf("\t\t3.实发工资从高到低排序\n\t\t4.修改职工工资信息\n"); printf("\t\t5.查询职工工资信息\n\t\t6.职工工资统计分析\n\t\t0.退出系统\n\n"); printf("说明:*如首次使用 尚未输入数据 请先输入数据 \n *输入的数据将自动保存 \n *再次选择输入功能时原数据将被覆盖\n\n"); printf("提示:请输入数字序号选择对应的操作: "); scanf("%d",&t3); switch(t3) { case 1: system("cls"); lu(); break; case 2: system("cls"); salary(); break; case 3: system("cls"); pai(); break; case 4: system("cls"); xiu(); break; case 5: system("cls"); seek(); break; case 6: system("cls"); tong(); break; case 0: exit(0); }}void lu(){ int t=1; char s; fp=fopen("职工信息1.txt","w+"); if(fp==NULL) { color(772); printf("[警告]文件打开失败\n"); } while(t=1) { printf("录入:\n职工号\t姓名\t基本工资 津贴\n"); scanf("%s\t%s\t%f\t%f",&wor[i].num,&wor[i].name,&wor[i].a1,&wor[i].a2); printf("是否录入下一职工信息(Y/N)\n"); scanf("%s",&s); if(s=='Y') { i++; } else break; } printf("录入结束\n"); i++; fclose(fp); printf("\n职工号\t姓名\t基本工资 津贴\n"); for(j=0;j<i;j++) { printf("%s\t%s\t%.1f\t%.1f\n",wor[j].num,wor[j].name,wor[j].a1,wor[j].a2); fprintf(fp,"%s\t%s\t%.1f\t%.1f\n",wor[j].num,wor[j].name,wor[j].a1,wor[j].a2); } menu();}void salary(){ fp=fopen("职工信息1.txt","a+"); if(fp==NULL) { color(772); printf("[警告]文件打开失败\n"); } else { color(2); printf("[tip]文件读取成功\n"); color(7); for(j=0;j<i;j++) { fscanf(fp,"%s\t%s\t%f\t%f\n",wor[j].num,wor[j].name,&wor[j].a1,&wor[j].a2); } for(j=0;j<i;j++) { if(wor[j].a1+wor[j].a2<=3000) { wor[j].a3=0; } else if(wor[j].a1+wor[j].a2<=4000) { wor[j].a3=(wor[j].a1+wor[j].a2-3000)/20; } else { wor[j].a3=(wor[j].a1+wor[j].a2-3000)/20+(wor[j].a1+wor[j].a2-4000)/10; } wor[j].a4=wor[j].a1+wor[j].a2-wor[j].a3; } printf("\t职工号\t姓名\t基本工资 津贴\t扣税\t实发\n"); for(j=0;j<i;j++) { printf("\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", wor[j].num,wor[j].name,wor[j].a1,wor[j].a2,wor[j].a3,wor[j].a4); fprintf(fp,"\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", wor[j].num,wor[j].name,wor[j].a1,wor[j].a2,wor[j].a3,wor[j].a4); } } fclose(fp); menu();}void pai(){ read(); int a,b,k,p1; int temp[500]; for(j=0;j<500;j++) temp[j]=j; float c; for(a=0;a<i-1;a++) { b=a; for(k=a+1;k<i;k++) { if(wor[b].a4<wor[k].a4)b=k; } p1=temp[a];temp[a]=temp[b];temp[b]=p1; //c=wor[a].a4;wor[a].a4=wor[b].a4;wor[b].a4=c; //temp=wor[a];wor[a]=wor[b];wor[b]=temp; } printf("\t职工号\t姓名\t基本工资 津贴\t扣税\t实发\n"); for(j=0;j<i;j++) { printf("\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", wor[temp[j]].num,wor[temp[j]].name,wor[temp[j]].a1,wor[temp[j]].a2,wor[temp[j]].a3,wor[temp[j]].a4); fprintf(fp,"\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", wor[temp[j]].num,wor[temp[j]].name,wor[temp[j]].a1,wor[temp[j]].a2,wor[temp[j]].a3,wor[temp[j]].a4); } printf("\n"); menu();}void xiu(){ char str[20]; //char *p=str; float t1,t2; fp=fopen("职工信息1.txt","a+"); if(fp==NULL) { color(772); printf("[警告]文件打开失败\n"); } else{ color(2); printf("[tip]文件读取成功\n"); color(7); for(j=0;j<i;j++) { fscanf(fp,"%s\t%s\t%f\t%f\t%f\t%f\n",wor[j].num,wor[j].name,&wor[j].a1,&wor[j].a2,&wor[j].a3,&wor[j].a4); } } printf("输入需要修改的职工工号: "); scanf("%s",&str); for(j=0;j<i;j++) { if(strcmp(str,wor[j].num)==0) { printf("输入需要修改的基本工资和津贴(以空格间开)"); scanf("%f %f",&t1,&t2); wor[j].a1=t1;wor[j].a2=t2; for(j=0;j<i;j++) { if(wor[j].a1+wor[j].a2<=3000) { wor[j].a3=0; } else if(wor[j].a1+wor[j].a2<=4000) { wor[j].a3=(wor[j].a1+wor[j].a2-3000)/20; } else { wor[j].a3=(wor[j].a1+wor[j].a2)/20+(wor[j].a1+wor[j].a2-4000)/10; } wor[j].a4=wor[j].a1+wor[j].a2-wor[j].a3; } } else{ printf("查无此人"); } } printf("\t职工号\t姓名\t基本工资 津贴\t扣税\t实发\n"); for(j=0;j<i;j++) { printf("\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", wor[j].num,wor[j].name,wor[j].a1,wor[j].a2,wor[j].a3,wor[j].a4); fprintf(fp,"\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", wor[j].num,wor[j].name,wor[j].a1,wor[j].a2,wor[j].a3,wor[j].a4); } fclose(fp); menu();}void seek(){ read(); char str[20]; char *p=str; printf("请输入要查询的职工工号: "); scanf("%s",&str); for(j=0;j<i;j++) { if(strcmp(p,wor[j].num)==0) break; } if(j>=i) printf("查无此人"); else{ printf("\t职工号\t姓名\t基本工资 津贴\t扣税\t实发\n"); printf("\t%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", wor[j].num,wor[j].name,wor[j].a1,wor[j].a2,wor[j].a3,wor[j].a4); } fclose(fp); menu();}void tong(){ read(); int count1=0,count2=0,count3=0; float f1,f2,f3; for(j=0;j<i;j++) { if(wor[j].a4<=3000) count1++; else if(wor[j].a4<=4000) count2++; else count3++; } f1=count1/i; f2=count2/i; f3=count3/i; printf("\n\t\t实发工资小于3000的职工占比%.1f\n\t\t实发工资大于3000且小于4000的职工占比%.1f\n\t\t实发工资大于4000的职工占比%.1f\n",f1,f2,f3); fclose(fp); menu();}void read(){ fp=fopen("职工信息1.txt","r"); if(fp==NULL) { color(772); printf("[警告]文件打开失败\n"); color(7); } else { color(2); printf("[tip]文件读取成功\n"); color(7); for(j=0;j<i;j++) { fscanf(fp,"\t%s\t%s\t%f\t%f\t%f\t%f\n", wor[j].num,wor[j].name,&wor[j].a1,&wor[j].a2,&wor[j].a3,&wor[j].a4); } } fclose(fp);}

举报

相关推荐

0 条评论