永发信息网

c语言、编写工资管理系统,请帮忙改动!

答案:1  悬赏:10  手机版
解决时间 2021-05-13 21:49
  • 提问者网友:溺爱和你
  • 2021-05-13 15:33

完成如下功能:
     1)数据的输入操作
     2)数据的修改
       ⑴ 输入错误的数据修改
       ⑵ 职工减员
       ⑶ 职工增加
     3)按姓名查询有关数据
     4)数据计算
应发工资=基本工资+洗礼费+奖金
实发工资=应发工资-房费-水费-电费
     5)数据输出
        输出工资条(每人)和汇总表
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#define TRUE 1
struct zhigong
{
int month,id,jbgz,jj,xlf,yfs,ff,sf,df,yks,sfs;
};
struct zhigong zg[50];
struct zhigong zgone;
int n=0; 
char numstr[50];
main()
{
    char ch;
    n=0; 
    while(TRUE)
    {
     printf("\n");
     printf("===========================================\n");
     printf("               请选择( 1-7 ) :              \n");
     printf("1.             添加职工信息               \n");
     printf("2.             删除职工信息               \n");
     printf("3.             修改职工信息                \n");
     printf("4.             以ID方式输出                \n");
     printf("5.             输出所有信息                \n");
     printf("6.                存档                      \n");
     printf("7.                退出                      \n");
     printf("===========================================\n");
     ch=getche();
     switch(ch)
       {
       case '1':addone();break;
       case '2':delone();break;
       case '3':modone();break;
       case '4':idone();break;
       case '5':listall();break;
       case '6':wfile();break;
       case '7':rfile();break;
       case '8':return;
       default:printf("请重新选择\n");
       }
      }
}
addone(void)
{
printf("\n");
printf("编号: \n");
gets(numstr);
zg[n].id=atof(numstr);
printf("基本工资: \n");
gets(numstr);
zg[n].jbgz=atof(numstr);
printf("奖金: \n");
gets(numstr);
zg[n].jj=atof(numstr);
printf("洗礼费: \n");
gets(numstr);
zg[n].xlf=atof(numstr);
zg[n].yfs=(zg[n].jbgz)+(zg[n].jj)+(zg[n].xlf);
printf("房费: \n");
gets(numstr);
zg[n].ff=atof(numstr);
printf("水费: \n");
gets(numstr);
zg[n].sf=atof(numstr);
printf("电费: \n");
gets(numstr);
zg[n].df=atof(numstr);
zg[n].yks=(zg[n].ff)+(zg[n].sf)+(zg[n].df);
zg[n].sfs=(zg[n].yfs)-(zg[n].yks);
n++;
}
delone(void)
{
struct zhigong tmp[50];
int zhigongid;
int j,k;
int flagfind;
flagfind=0;
k=0;
printf("\n 请输入职工编号: \n");
gets(numstr);
zhigongid=atof(numstr);
for(j=0;j<=n;j++)
 {
 if(zg[j].id==zhigongid)
    {
    flagfind=1;
    }
    else
    {
    tmp[k]=zg[j];
    k++;
    }
 }
if(flagfind==1)
   {
   for(j=0;j<=(n-1);j++)
   {
     zg[j]=tmp[j];
   }
   printf("\n 删除记录 \n");
   n=n-1;
   }
else
   {
   printf("\n 未发现记录 \n");
   }
 return;
}
modone(void)
{
float zhigongid;
int j;
int flagfind;
flagfind=0;
printf("\n 请输入职工编号: \n");
gets(numstr);
zhigongid=atof(numstr);
for(j=0;j<=n;j++)
 {
 if(zg[j].id==zhigongid)
       {    
       printf("职工编号%d\t",zg[j].id);
       printf("基本工资:%d\t",zg[j].jbgz);
       printf("基本工资: \t");
       gets(numstr);
       zg[j].jbgz=atof(numstr);
       printf("奖金:%d\t",zg[j].jj);
       printf("奖金: \n");
       gets(numstr);
       zg[j].jj=atof(numstr);      
       printf("洗礼费:%d\t",zg[j].xlf);
       printf("洗礼费: \n");
       gets(numstr);
       zg[j].xlf=atof(numstr);           
       zg[j].yfs=(zg[j].jbgz)+(zg[j].jj)+(zg[j].xlf);
       printf("房费:%d\t",zg[j].ff);
       printf("房费: \n");
       gets(numstr);
       zg[j].ff=atof(numstr);
       printf("水费:%d\t",zg[j].sf);
       printf("水费: \n");
       gets(numstr);
       zg[j].sf=atof(numstr);
       printf("电费:%d\t",zg[j].df);
       printf("电费: \n");
       gets(numstr);
       zg[j].df=atof(numstr);
       zg[j].yks=(zg[j].ff)+(zg[j].sf)+(zg[j].df);
       zg[j].sfs=(zg[j].yfs)-(zg[j].yks);
       flagfind=1;
       }
    else
       {
       flagfind=0;
       }
    }
    if(flagfind==0)printf("\n 不能读取记录 \n");
    return;
}

idone(void)
{
float zhigongid;
int j;
int flagfind;
flagfind=0;
printf("\n 请输入职工编号: \n");
gets(numstr);
zhigongid=atof(numstr);
for(j=0;j<=n;j++)
 {
 if(zg[j].id==zhigongid)
       {
       printf("\n %d record found! \n |",j+1);
       printf("职工编号%d\t",zg[j].id);
       printf("基本工资:%d\t",zg[j].jbgz);
       printf("奖金:%d\t",zg[j].jj);
       printf("洗礼费:%d\t",zg[j].xlf);
       printf("应发数:%d\t",zg[j].yfs);
       printf("房费:%d\t",zg[j].ff);
       printf("水费:%d\t",zg[j].sf);
       printf("电费 :%d\t",zg[j].df); 
       printf("应扣数:%d\t",zg[j].yks);
       printf("实发数:%d\t",zg[j].sfs);
       flagfind=1;
       }
    else
       {
       flagfind=0;
       }
    }
    if(flagfind==0)printf("\n 不能读取记录 \n");
    return;
}
listall(void)
{
int j;
if(n<1)
     {
      printf("\n 无记录 \n");
      }
   else
    {
      for(j=0;j<n;j++)
      {
       printf("\n NO:%d |",j+1);
       printf("职工编号%d\t",zg[j].id);
       printf("基本工资:%d\t",zg[j].jbgz);
       printf("奖金:%d\t",zg[j].jj);    
       printf("洗礼费:%d\t",zg[j].xlf);
       printf("应发数:%d\t",zg[j].yfs);
       printf("房费:%d\t",zg[j].ff);
       printf("水费:%d\t",zg[j].sf);
       printf("电费:%d\t",zg[j].df);
       printf("应扣数:%d\t",zg[j].yks);
       printf("实发数:%d\n",zg[j].sfs);
       }
    }
}

wfile(void)
{
 FILE *fptr;
  printf("\n 存档中... \n");
 if((fptr=fopen("gongzi.txt","wb"))==NULL)
    printf("Can not open file gongzi.txt! \n");
  else
  {int i;
   for (i=0;i<n;i++)
  fprintf(fptr,"%d","zg[j].id");
  fclose(fptr);
  printf("File of %d records written! \n",n );
  }
}
rfile(void)
{
FILE *fptr;
n=0;
if((fptr=fopen("gongzi.txt","rb"))==NULL)
   printf("Can not open file gongzi.txt! \n");
else
  {
  while(fread(&zg[n],sizeof(zg[n]),1,fptr)==1)
  n++;
  fclose(fptr);
  printf(" 全部 %d 读取记录! \n",n);
  }
}

最佳答案
  • 五星知识达人网友:逐風
  • 2021-05-13 17:12
又见到一个.....
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯