发布网友 发布时间:2022-04-27 00:17
共1个回答
热心网友 时间:2022-06-21 13:46
#include "stdafx.h"
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define size 1000
float Real(float a,float b,float c,float d,float e)
{
return (a+b-c-d-e);
}
void all(float *a,float *b)
{
*a+=*b; }
struct worker {
char name[16];
char dept;
int age;
float a,b,c,d,e;
};
struct worker w[size],out;
void fsave()
{
int i;
FILE *fp;
if((fp=fopen("worker.dat","wb"))==NULL) {
printf("Cannot open file.\n");
exit(1);
}
for(i=0;i<size;i++)
{
if(fwrite(&w[i],sizeof(struct worker),1,fp)!=1)
printf("File write error.\n");
}
fclose(fp);
}
int main()
{
float max=0,min=0;
char tt[100]="姓名 年龄 工作部门 基本工资 津贴 房租 水费 电费 实际工资";
float r[size];
float total=0;
printf("欢迎使用工资结算系统\n");
FILE *fp;
int i=0,j=0;
printf("请输入第%d位职工基本数据(以EOF结束)\n",i+1);
printf("请输入职工姓名:\n");
while(scanf("%s",w[i].name)!=EOF)
{
printf("请输入职工年龄:\n");
scanf("%d",&w[i].age);
getchar();
printf("请输入工作部门:\n");
scanf("%c",&w[i].dept);
printf("请输入基本工资:\n");
scanf("%f",&w[i].a);
printf("请输入应交房租:\n");
scanf("%f",&w[i].c);
printf("请输入应交水费:\n");
scanf("%f",&w[i].d);
printf("请输入应交电费:\n");
scanf("%f",&w[i].e);
if(w[i].dept=='A')
w[i].b=300;
else if(w[i].dept=='B')
w[i].b=250;
else if(w[i].dept=='C')
w[i].b=150;
else
w[i].b=50;
i++;
printf("请输入第%d位职工基本数据\n",i+1);
printf("请输入职工姓名:\n");
}
for(j=0;j<=i;j++)
{
r[j]=Real(w[j].a,w[j].b,w[j].c,w[j].d,w[j].e);
all(&total,&r[j]); }
fsave();
fp=fopen("worker.dat","rb"); printf("%s",tt);
printf("\n");
for(j=0;j<i;j++)
{
fread(&out,sizeof(out),1,fp);
printf("%-8s%-6d%-10c",out.name,out.age,out.dept);
printf("%-10.2f%-8.2f%-8.2f%-8.2f%-8.2f",out.a,out.b,out.c,out.d,out.e);
printf("%-10.2f",r[j]);
printf("\n");
}
fclose(fp);
min=r[0];
for(j=0;j<i;j++)
{
max=max>r[j]?max:r[j];
min=min<r[j]?min:r[j];
}
printf("\n");
printf("总人数为:%d人\n",i);
printf("总工资为:%.2f\n",total);
printf("平均工资为:%.2f\n",total/i);
printf("最高工资为:%.2f\n",max);
printf("最低工资为:%.2f\n",min);
return 0;
}