您的当前位置:首页正文

C语言工资管理系统

2020-11-18 来源:个人技术集锦
 C语言课程设计-工资管理系统

题目要求 做一个工资管理系统,要能按照姓名和卡号查找员工的工资信息,以及员工工资信息的插入,删除。同时这些信息要存储在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&&ii++; }

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;iprintf(\"%—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”,a[i].zsfgz); }

for(i=0;i<40;i++) {

printf(\"\\n”); }

for(i=0;id=a[i].zsfgz; k=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;iwhile(c!=1&&c!=2) {

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; } } }

因篇幅问题不能全部显示,请点此查看更多更全内容