用c语言写一个职工工资

每个食堂工作人员的信息为:职工号、姓名、性别、职位、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资;

注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;其中税收是在应发工资的基础上扣除,请查阅相关网站说明,给出税收扣除的细则;实发工资=应发工资-合计扣款;

工作人员信息处理

1)输入人员信息;

2)修改人员信息(部分修改、全部修改) :

3)删除人员信息;

4)查询人员信息;

5)人员信息排序(按职工号、姓名、收入) ;

6)录入员工工资信息

7)计算员工工资

8)数据保存

9)数据读取

参考:https://blog.csdn.net/qq_63023553/article/details/122586808

架构参考代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX_EMPLOYEE_NUM 1000 // 最多支持1000个员工信息

struct Employee {
    char id[20]; // 职工号
    char name[20]; // 姓名
    char sex[10]; // 性别
    char position[20]; // 职位
    char company[20]; // 单位名称
    char address[50]; // 家庭住址
    char phone[20]; // 联系电话
    double basic_salary; // 基本工资
    double allowance; // 津贴
    double living_subsidy; // 生活补贴
    double should_pay; // 应发工资
    double phone_bill; // 电话费
    double utility_bill; // 水电费
    double rent; // 房租
    double income_tax; // 所得税
    double health_care; // 卫生费
    double accumulation_fund; // 公积金
    double total_deductions; // 合计扣款
    double actual_pay; // 实发工资
};

struct Employee employees[MAX_EMPLOYEE_NUM]; // 存储员工信息的数组
int employee_count = 0; // 已经录入的员工数目

// 显示主菜单
void show_main_menu();

// 输入一个员工信息
void input_employee();

// 显示员工信息
void show_employee(const struct Employee* employee);

// 显示所有员工信息
void show_all_employees();

// 查询员工信息
void search_employee();

// 修改员工信息
void modify_employee();

// 删除员工信息
void delete_employee();

// 排序员工信息
void sort_employees();

// 录入员工工资信息
void input_employee_salary();

// 计算员工工资
void calculate_employee_salary();

// 保存数据到文件
void save_data_to_file();

// 从文件读取数据
void load_data_from_file();

// 程序入口
int main() {
    // 先读取数据
    load_data_from_file();

    while (1) {
        show_main_menu();

        int choice;
        scanf("%d", &choice);

        switch (choice) {
            case 1: // 输入人员信息
                input_employee();
                break;
            case 2: // 修改人员信息
                modify_employee();
                break;
            case 3: // 删除人员信息
                delete_employee();
                break;
            case 4: // 查询人员信息
                search_employee();
                break;
            case 5: // 人员信息排序
                sort_employees();
                break;
            case 6: // 录入员工工资信息
                input_employee_salary();
                break;
            case 7: // 计算员工工资
                calculate_employee_salary();
                break;
            case 8: // 数据保存
                save_data_to_file();
                break;
            case 9: // 数据读取
                load_data_from_file();
                break;
            case 0: // 退出程序
                return 0;
            default:

以下是一个简单的C语言示例程序,有帮助的话采纳一下哦

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_EMPLOYEES 100 // 最大员工数

// 定义员工结构体
typedef struct {
    char id[10]; // 职工号
    char name[20]; // 姓名
    char gender[5]; // 性别
    char position[20]; // 职位
    char company[50]; // 单位名称
    char address[100]; // 家庭住址
    char phone[20]; // 联系电话
    float basic_salary; // 基本工资
    float allowance; // 津贴
    float living_allowance; // 生活补贴
    float taxable_income; // 应税收入
    float telephone_fee; // 电话费
    float utility_fee; // 水电费
    float rent; // 房租
    float income_tax; // 所得税
    float health_insurance; // 卫生费
    float accumulation_fund; // 公积金
    float total_deductions; // 合计扣款
    float net_salary; // 实发工资
} Employee;

// 员工数组
Employee employees[MAX_EMPLOYEES];

// 员工数
int employee_count = 0;

// 函数声明
void input_employee_info();
void modify_employee_info();
void delete_employee_info();
void query_employee_info();
void sort_employee_info();
void input_employee_salary_info();
void calculate_employee_salary();
void save_employee_info();
void load_employee_info();

// 主函数
int main() {
    int choice;
    do {
        // 显示菜单
        printf("1. 输入人员信息\n");
        printf("2. 修改人员信息\n");
        printf("3. 删除人员信息\n");
        printf("4. 查询人员信息\n");
        printf("5. 人员信息排序\n");
        printf("6. 录入员工工资信息\n");
        printf("7. 计算员工工资\n");
        printf("8. 数据保存\n");
        printf("9. 数据读取\n");
        printf("0. 退出程序\n");
        printf("请选择操作:");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                input_employee_info();
                break;
            case 2:
                modify_employee_info();
                break;
            case 3:
                delete_employee_info();
                break;
            case 4:
                query_employee_info();
                break;
            case 5:
                sort_employee_info();
                break;
            case 6:
                input_employee_salary_info();
                break;
            case 7:
                calculate_employee_salary();
                break;
            case 8:
                save_employee_info();
                break;
            case 9:
                load_employee_info();
                break;
            case 0:
                printf("程序已退出。\n");
                break;
            default:
                printf("无效的选择,请重新输入。\n");
                break;
        }
    } while (choice != 0);

    return 0;
}

// 输入人员信息
void input_employee_info() {
    if (employee_count == MAX_EMPLOYEES) {
        printf("员工数量已达到


您好,实现的c语言职工工资系统代码如下,可根据您的其它要求自行修改完善:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define NUM 1000
void enter();
void search_num();
void dele_num();
void modi_num();
void browse();
void count();
void load();
void add();
void menu();
int n;   //员工的总数
struct emploee  //职工数据结构
{
 char no[];
 char name[];
 char sex[];
 int age;
 float wage1;      //员工的基本工资
 float wage2;      //员工的职务工资
 float funds;      //员工的住房公积金
 float WATERfee;   //员工的水电费
 float TAXfee;     //员工的个人所得税
 float wage3;      //员工的实发工资
}emp[NUM],newemp;
void main()
{
 menu();
}
 
void menu()//主界面
{  int n,w1;
 
   do
   { system("cls");
      printf("************* 职工工资管理系统 **************\n");
      printf("*            1-----输入职工信息                     *\n");
      printf("*            2-----查询职工信息                     *\n");
      printf("*            3-----根据职工ID号修改              *\n");
      printf("*            4-----根据职工ID号删除              *\n");
      printf("*            5-----据工资统计并浏览              *\n");
      printf("*            6-----从文件载入信息                 *\n");
      printf("*            7-----浏览全部职工                    *\n");
      printf("*            8-----追加职工信息                    *\n");
      printf("*            9-----退出程序                           *\n");
      printf("***************************************************\n");
  printf("       输入您的选择(1-9):[ ]\b\b");
  scanf("%d",&n);
  if(n<||n>)                                    //对选择的数字作判断
         {
            w1=;
            printf("your choice is not between 1 and 9,Please input again:");
            getchar();
          }
         else    w1=;
      }
    while(w1==);
  switch(n)
  { case :enter();    break;
    case :search_num();   break;
    case :modi_num();   break;
    case :dele_num();   break;
    case :count ();    break;
    case :load();    break;      //保存模块
    case :browse();    break;      //加载模块
    case :add();    break;
    case :printf("\n×××××××谢谢,欢迎下次光临!×××××××\n\n");
    default:exit();  //退出系统,exit(0)函数功能是退出程序。
  }
}
/*************************输入模块**********************/
void enter()
{
     FILE *fp;
     int n,i;
     if ((fp=fopen("emp.txt","wb"))==NULL)
     {
 
     printf("不能建立emp文件\n");
     exit();
     }
     printf("输入职工人数:");
    scanf("%d",&n);
     printf("输入格式:职工号 姓名 性别 年龄 基本工资 职务工资  公积金 水电费  税<Enter>\n");
     for(i=;i<n;i++)   /*  循环获取n个职工记录 */
     {
         printf("第%d个职工:",i+);
         scanf("%s%s%s%d%f%f%f%f%f",emp[i].no,emp[i].name,emp[i].sex,&emp[i].age,
           &emp[i].wage1,&emp[i].wage2,&emp[i].funds,&emp[i].WATERfee,&emp[i].TAXfee);
         emp[i].wage3=emp[i].wage1+emp[i].wage2+emp[i].funds-emp[i].WATERfee-emp[i].TAXfee;
     }
     for(i=;i<n;i++)      /*将n个职工记录写入文件*/
          fwrite(&emp[i],sizeof(struct emploee),,fp);
     fclose(fp);
}
/*************************统计模块**********************/
void count()
{
     FILE *fp;
     int n,num;
     if((fp=fopen("emp.txt","rb"))==NULL)
     {
         printf("不能打开emp文件\n");
         exit();
     }
     printf("请输入工资数:");
     scanf("%d",&num);
     printf("记录号 职工号 姓名 性别 年龄 基本工资 职务工资 公积金 水电费  税  实发工资\n");
     for(n=;fread(&emp[n],sizeof(struct emploee),,fp)!=;n++)
     if(emp[n].wage3>=num)
     printf("%6d%6s%9s%4s%5d   %.1f   %.1f  %.1f   %.1f   %.1f   %.1f\n",n+,emp[n].no,emp[n].name,emp[n].sex, emp[n].age,emp[n].wage1,
             emp[n].wage2,emp[n].funds,emp[n].WATERfee,emp[n].TAXfee,emp[n].wage3);
     fclose(fp);
}
/********************删除模块*******************/
 
void dele_num()
{
     FILE *fp;
     int i,j,n;
     char num[];
     if((fp=fopen("emp.txt","rb"))==NULL)
     {
         printf("不能打开emp文件\n");
         exit();
      }
     printf("删除前:\n");
     printf("记录号 职工号 姓名 性别 年龄   基本工资 职务工资 公积金  水电费   税  实发工资\n");
    for(n=;fread(&emp[n],sizeof(struct emploee),,fp);n++)
     printf("%6d%6s%9s%4s%5d   %.1f   %.1f   %.1f   %.1f   %.1f   %.1f\n",n+,emp[n].no,emp[n].name,emp[n].sex, emp[n].age,emp[n].wage1,
             emp[n].wage2,emp[n].funds,emp[n].WATERfee,emp[n].TAXfee,emp[n].wage3);/*n为emp文件中记录数*/
     printf("要删除的职工号:");
     scanf("%s",num);
     for(i=;(strcmp(emp[i].no,num)!=&&i<n);i++)
     if(i>=n)
     {
          printf("\t没有%s职工号的职工\n",num);
          exit();
     }
     fclose(fp);
     fp=fopen("emp.dat","w+");
     if(n==)  /*一个记录已经删除了*/
     {
           fclose(fp);
           exit();
     }
     for(j=;j<i;j++)
        fwrite(&emp[j],sizeof(struct emploee),,fp);
     for(j=i+;j<n;j++)
         fwrite(&emp[j],sizeof(struct emploee),,fp);
     printf("删除后:\n");
     fseek(fp,,SEEK_SET);
     printf("记录号 职工号 姓名 性别 年龄   基本工资 职务工资 公积金 水电费   税  实发工资\n");
     for(i=;fread(&emp[i],sizeof(struct emploee),,fp);i++)
         printf("%6d%6s%9s%4s%5d%   %.1f    %.1f   %.1f   %.1f   %.1f   %.1f\n",i+,emp[i].no,emp[i].name,emp[i].sex, emp[i].age,emp[i].wage1,
                 emp[i].wage2,emp[i].funds,emp[i].WATERfee,emp[i].TAXfee,emp[i].wage3);
       fclose(fp);
}
/********************修改模块*******************/
void modi_num()
{
     FILE *fp;
     int i,j;
     char num[];
     if((fp=fopen("emp.txt","rb+"))==NULL)
     {
         printf("不能 打开emp文件\n");
         exit();
     }
     printf("要修改的职工号:");
     scanf("%s",num);
     for(i=;fread(&emp[i],sizeof(struct emploee),,fp);i++)
    if(!strcmp(emp[i].no,num))break;
     if(feof(fp))
     {
          printf("\t没有%s职工号的职工\n",num);
          exit();
     }
     printf("记录号 职工号   姓名 性别 年龄 基本工资 职务工资  公积金  水电费   税  实发工资\n");
     printf("%6d%6s%9s%4s%5d%   %.1f   %.1f   %.1f   %.1f   %.1f   %.1f\n",i+,emp[i].no,emp[i].name,emp[i].sex, emp[i].age,emp[i].wage1,
              emp[i].wage2,emp[i].funds,emp[i].WATERfee,emp[i].TAXfee,emp[i].wage3);
    printf("输入格式:职工号   姓名 性别 年龄 基本工资 职务工资 公积金  水电费 税 <Enter>\n");
    printf("第%d个记录:",i+);
    scanf("%s%s%s%d%f%f%f%f%f",newemp.no,newemp.name,newemp.sex,&newemp.age,
               &newemp.wage1,&newemp.wage2,&newemp.funds,&newemp.WATERfee,&newemp.TAXfee);//获取新的职工记录
             newemp.wage3=newemp.wage1+newemp.wage2+newemp.funds-newemp.WATERfee-newemp.TAXfee;
    fseek(fp,-(long)sizeof(struct emploee),SEEK_CUR);  //文件指针指向该修改的记录开头
     fwrite(&newemp,sizeof(struct emploee),,fp);  //用newemp覆盖当前记录
     printf(" 修改后:\n");
    fseek(fp,,SEEK_SET);        //显示修改后的文件数据
     printf("记录号 职工号   姓名 性别 年龄   基本工资 职务工资   公积金  水电费   税   实发工资\n");
     for(i=;fread(&emp[i],sizeof(struct emploee),,fp)!=;i++)
         printf("%6d%6s%9s%4s%5d   %.1f   %.1f  %.1f   %.1f  %.1f   %.1f\n",i+,emp[i].no,emp[i].name,emp[i].sex, emp[i].age,emp[i].wage1,
                   emp[i].wage2,emp[i].funds,emp[i].WATERfee,emp[i].TAXfee,emp[i].wage3);
    fclose(fp);
}
 /*************************查询模块***********************/
void search_num()
{
     FILE *fp;
     int i;
     char num[];
     if((fp=fopen("emp.txt","rb"))==NULL)
     {
          printf("不能打开emp文件\n");
          exit();
     }
     printf("要查询的职工号:");
     scanf("%s",num);
     for(i=;fread(&emp[i],sizeof(struct emploee),,fp);i++)
         if(!strcmp(emp[i].no,num)) break;
    if(feof(fp))
    {
        printf("\t查无此人\n");
        exit();
    }
     printf("记录号 职工号   姓名 性别 年龄   基本工资 职务工资   公积金  水电费    税   实发工资\n");
     printf("%6d%6s%9s%4s%5d  %.1f  %.1f  %.1f  %.1f   %.1f   %.1f\n",i+,emp[i].no,emp[i].name,emp[i].sex, emp[i].age,emp[i].wage1,
               emp[i].wage2,emp[i].funds,emp[i].WATERfee,emp[i].TAXfee,emp[i].wage3);
       fclose(fp);
}
/*******************浏览模块********************/
void browse()
{    int i;
     FILE *fp;
     if((fp=fopen("emp.txt","r"))==NULL)
     {
         printf("不能打开emp文件\n");
         exit();
     }
     printf("记录号 职工号   姓名 性别 年龄   基本工资 职务工资   公积金  水电费   税   实发工资\n");
     for(i=;fread(&emp[i],sizeof(struct emploee),,fp)!=;i++)
     {
          printf("%6d%6s%9s%4s%5d  %.1f  %.1f     %.1f    %.1f    %.1f   %.1f\n",i+,emp[i].no,emp[i].name,emp[i].sex, emp[i].age,emp[i].wage1,
                   emp[i].wage2,emp[i].funds,emp[i].WATERfee,emp[i].TAXfee,emp[i].wage3);
    }
    fclose(fp);
}
/******************追加模块*******************/
void add()
{
      FILE *fp;
      int n,i,j;
      if((fp=fopen("emp.txt","ab+"))==NULL)
      {
          printf("不能打开emp文件\n");
           exit();
      }
    printf("要追加的职工人数:");
      scanf("%d",&n);
      for(i=;i<n;i++)
      {
          printf("输入格式:职工号   姓名 性别 年龄   基本工资 职务工资  公积金  水电费  税   <Enter>\n");
         printf("追加记录:\n");
         scanf("%s%s%s%d%f%f%f%f%f",newemp.no,newemp.name,newemp.sex,&newemp.age,
                   &newemp.wage1,&newemp.wage2,&newemp.funds,&newemp.WATERfee,&newemp.TAXfee);
             newemp.wage3=newemp.wage1+newemp.wage2+newemp.funds-newemp.WATERfee-newemp.TAXfee;//获取一个新的职工记录
        fwrite(&newemp,sizeof(struct emploee),,fp);   //将该职工记录写入文件
      }
      fclose(fp);
}
 
/*************************载入模块**********************/
void load()          //加载记录或可以计算记录个数的函数
{
     FILE *fp;
     int i,w;
     w=;
     system( "cls" );
    if((fp=fopen("emp.txt","rb"))==NULL)      //以输出打开方式,在此前的记录被覆盖
    {
        printf("\nCannot open file\n");
        w=;
        return ;
    }
    n=;
    for(i=;!feof(fp);i++)
    {
        fread(&emp[i],sizeof(struct emploee),,fp);
        n++;
    }
    n=n-;
          fclose(fp);
    if(w==)
    {
        printf("Load file ok!");
        getchar();
        getchar();
        menu();
    }
}
 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct worker
{
    char depa[30];
    char name[30];
    char ID[10];
    int salary1;
    int salary2;
    int salary3;
    int salary4;
}; //职工信息 
int  dq(struct worker wo[]);
void bc(struct worker wo[]);
void show();       //主界面 
void add();        //添加信息 
void see();        //查看信息 
void search();     //查询信息 
void ghcz();       //按工号查找 
void xmcz();       //按姓名查找 
void bmcz();       //按部门查找 
void del();        //删除信息 
void xmsc() ;      //按姓名删除 
void ghsc();       //按工号删除 
void statistics(); //个人工资统计 
void statistic();  //总计职工工资 
void statistic1(); //统计职工工资
void average();    //职工工资求平均 
void gzdtj();      //按工资段统计 
void bmtj();       //按部门统计 
void modify();     //修改职工信息 
void ghxg();       //按工号修改 
void xmxg();       //按姓名修改 
void sort();       //职工工资排序 
void reserve();    //保存 
void back();       //返回 
 struct worker wo[100];  //保存所有的职工信息
 int Number=0;           //记录总的职工人数 
 int main()
{  
 int choose=0; 
 while (1)
{
show();
 printf ("\t\t====>请选择:");
 scanf ("%d",&choose); 
 system ("cls");
 switch (choose)
{
 case 0:exit(0);  //退出 
 break ;
 case 1:add();
 back();   //添加职工信息 
 break ;
 case 2:see();
 back() ;  //查看职工信息 
 break ;
 case 3:search();
 back();   //查找职工信息 
 break ;
 case 4:del() ;
 back();   //删除职工信息 
 break ;
 case 5:statistics(); 
 back( );  //个人工资统计 
 break ;
 case 6:statistic(); 
 back();   //总记职工工资 
 break ;
 case 7:sort();
 back();   //排序职工信息 
 break ;
 case 8:modify();
 back();   //修改职工信息 
 break ;
 case 9:reserve(); 
 back();   //保存数据 
 break ;
 default:
 break;
}
 fflush(stdin);
 system ("cls");
 system("pause");
}
}
 int dq(struct worker wo[])
{
 FILE*fp=NULL;
 int i=0;
 fp=fopen("C://worker.dat","rb");
 while(fread(&wo[i],sizeof(struct worker),1,fp))
 i++;
 fclose (fp); 
 return i;
 } 
 
 void bc(struct worker *wo)
{
    FILE*fp=NULL;
 fp=fopen("C://worker.dat","ab+");
 fwrite(wo,sizeof(struct worker),1,fp); 
 fclose(fp);
 system("pause");
}
 void show ()
 {
 
 printf ("\n");
 printf ("\t——欢迎进入职工工资管理系统!您可以进行以下操作!——\n");
 printf ("\t——————————————————————————————————————————————\n");
 printf ("\t——             职工工资管理系统              ——\n");
 printf ("\t——————————————————————————————————————————————\n");
 printf ("\t///No.1—————[1]添加职工信息                  ——\n");
 printf ("\t///No.2—————[2]查看职工信息                  ——\n");
 printf ("\t///No.3—————[3]查找职工信息                  ——\n");
 printf ("\t///No.4—————[4]删除职工信息                  ——\n");
 printf ("\t///No.5—————[5]个人工资统计                  ——\n");
 printf ("\t///No.6—————[6]总记职工工资                  ——\n");
 printf ("\t///No.7—————[7]排序职工工资                  ——\n");
 printf ("\t///No.8—————[8]修改职工信息                  ——\n");
 printf ("\t///No.9—————[9]保 存 数 据                  ——\n"); 
 printf ("\t///No.0—————[0]退 出 系 统                  ——\n");  
 printf ("\t——————————————————————————————————————————————\n");
 printf ("\t——————————————————————————————————————————————\n");
}
 
 
 void add()  //添加职工信息 
{
 int numberTemp=0; 
 int i=0;
 struct worker temp;
 printf("请输入要添加职工个数:"); 
 scanf ("%d",&numberTemp);
 for (i=0;i<numberTemp;i++)
{
 printf ("输入第%d个职工信息\n",i+1); 
 printf ("姓名:");
 scanf ("%s",temp.name); 
 printf ("工号:");
 scanf ("%s",temp.ID);
 printf ("所属部门:"); 
 scanf ("%s",temp.depa); 
 printf ("基本工资:");
 scanf ("%d",&temp.salary1); 
 printf ("奖励工资:");
 scanf ("%d",&temp.salary2); 
 printf ("补贴项目即金额:");
 scanf ("%d",&temp.salary3);
 printf ("扣除项目即金额:");
 scanf ("%d",&temp.salary4);
 wo[Number++]=temp;   //写入到数组 
 bc(&temp);           //写入到文件
 system("pause");
}
 printf ("添加成功!\n");
}
void see() //查看职工信息 
{
 int i=0;
 printf ("以下是全部职工\n");
 printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n"); 
 while (i<Number)
{
 printf ("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
 i++;
}system("pause");
}
void search()  //查找职工信息
{
 int n=0;
 printf("1 按姓名查找\n"); 
 printf("2 按工号查找\n"); 
 printf("3 按部门查找\n"); 
 scanf ("%d",&n);
 switch (n) 
{
 case 1:xmcz(); 
 break ;
 case 2:ghcz(); 
 break ;
 case 3:bmcz(); 
 break ;
 default: printf ("输入错误!\n"); 
 break ;
}system("pause");
}
void xmcz()  //按姓名查找
{
 char name[30]; 
 int i=0;
 printf ("请输入要查找职工姓名:"); 
 scanf ("%s",name);
 system ("cls");
 printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n");
 for (i=0;i<Number;i++)
{
  if (strcmp(name,wo[i].name)==0)
{
    printf("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
}
}system("pause");
}
void ghcz()  //按工号查找
{
  char id[10];
  int i=0;
  printf("请输入要查找工号:");
  scanf("%s",id);
  system("cls");
  printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n");
 for(i=0;i<Number;i++){
     if(strcmp(id,wo[i].ID)==0)
 {
     printf("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
}
}system("pause");
}
void bmcz()  //按部门查找
{
  char depa[30];
  int i=0;
  printf("请输入要查找部门名称:");
  scanf("%s",depa);
  system("cls");
  printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n");
 for(i=0;i<Number;i++){
     if(strcmp(depa,wo[i].depa)==0)
 {
     printf("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
}
}system("pause");
}
void del()  //删除职工信息 
{
 int n=0;
 printf ("1 按姓名删除\n"); 
 printf ("2 按工号删除\n"); 
 scanf ("%d",&n);
 switch (n)
{
    case 1: xmsc(); 
    break ;
    case 2: ghsc(); 
    break ;
}system("pause");
}
 void xmsc ()//按姓名删除
{
 FILE*fp=NULL;
 char name[30]; 
 int i=0;
 int j=0;
 printf ("请输入要删除的职工姓名:"); 
 scanf ("%s",name);
 for (i=0;i<Number;i++)
 { 
   if (strcmp(name,wo[i].name)==0)
 {
   for (j=i;j<Number-1;j++)
   {
    wo[j]=wo[j+1];
    }
 
 Number --;
 }system("pause");
}
 
//将剩余数据写入文件擦除以前的数据
 fp = fopen ("C://worker.dat","wb"); 
 for (i=0;i<Number;i++)
 {
     fwrite(&wo[i],sizeof(struct worker),1,fp);
 }
 fclose (fp); 
 printf ("删除成功!\n");
}
 void ghsc()  //按工号删除 
{
 FILE*fp=NULL;
 char id[60]; 
 int i=0;
 int j=0;
 printf ("请输入要删除的职工工号:"); 
 scanf ("%s",id);
 for (i=0;i<Number;i++)
 {
   if (strcmp(id,wo[i].ID)==0)
{
 for(j=i;j<Number-1;j++)
{
 wo[j]=wo[j+1];
 }
Number--;
 }system("pause");
}
 
//将剩余数据写入文件擦除以前的数据 
 fp=fopen("C://worker.dat","wb");
 for (i=0;i<Number;i++)
{
fwrite(&wo[i],sizeof(struct worker),1,fp);
 }
fclose (fp);
 printf ("删除成功!\n");
}
 void statistics() //个人工资统计  
{
 int i=0;
 double sum[100]; 
 for (i=0;i<Number;i++)
 {
 sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;
 printf ("%s的总工资为:%f\n",wo[i].name,sum[i]);
}system("pause");
}
void statistic()   //总计职工工资 
{
   int n=0;
 printf ("1 统计职工工资\n"); 
 printf ("2 职工工资求平均\n"); 
 scanf ("%d",&n);
 switch (n){
 case 1:statistic1(); 
 break ;
 case 2:average();
 break ;
 default:printf("输入错误!\n");
 break;
 }system("pause");
}
 void statistic1()  //统计职工工资
{
 int n=0;
 printf ("1 按工资段统计\n"); 
 printf ("2 按部门统计\n"); 
 scanf ("%d",&n);
 switch (n){
 case 1:gzdtj(); 
 break ;
 case 2:bmtj();
 break ;
 default:printf("输入错误!\n");
 break;
}system("pause");
}
void gzdtj()  //按工资段统计
{ 
 int sa1,sa2;
 int i=0;
 int n,m;
 int sl[20]={0,0}; 
 double sum [100];
 printf ("请输入要查询的工资段:"); 
 scanf ("%d,%d",&sa1,&sa2);
 system ("cls");
 for (i=0;i<Number;i++)
{
 sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;
 }
 for (i=0;i<Number;i++)
 { n=sum[i]/1000;
 if (n>9) 
 n=10;
 switch(n)
{ case 0:sl[0]++; 
  break ; 
  case 1:sl[1]++; 
  break ; 
  case 2:sl[2]++; 
  break ; 
  case 3:sl[3]++; 
  break ; 
  case 4:sl[4]++; 
  break ; 
  case 5:sl[5]++; 
  break ;
  case 6:sl[6]++; 
  break ; 
  case 7:sl[7]++; 
  break ; 
  case 8:sl[8]++; 
  break ; 
  case 9:sl[9]++; 
  break ; 
  case 10:sl[10]++; 
  break ;
  }
}
 m=sa1/1000; 
 switch(m)
{case 0:printf ("工资在1000以下的人数为%d\n",sl[0]); break ;
 case 1:printf("工资在1000到2000之间的人数为%d\n",sl[1]); break ;
 case 2:printf("工资在2000到3000之间的人数为%d\n",sl[2]); break ;
 case 3:printf("工资在3000到4000之间的人数为%d\n",sl[3]); break ; 
 case 4:printf("工资在4000到5000之间的人数为%d\n",sl[4]); break ;
 case 5:printf("工资在5000到6000之间的人数为%d\n",sl[5]); break ;
 case 6:printf("工资在6000到7000之间的人数为%d\n",sl[6]); break ;
 case 7:printf("工资在7000到8000之间的人数为%d\n",sl[7]); break ;
 case 8:printf("工资在8000到9000之间的人数为%d\n",sl[8]); break ;
 case 9:printf("工资在9000到10000之间的人数为%d\n",sl[9]);break ;
 case 10:printf("工资在10000以上的人数为%d\n",sl[10]);    break ;
 }system("pause");
}
void bmtj()   //按部门统计
{
 char depa[30]; 
 float sum=0;
 int i=0;
 printf("请输入要查询的部门名称:"); 
 scanf ("%s",depa);
 system ("cls");
 printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n");
 for(i=0;i<Number;i++){
  if (strcmp(depa,wo[i].depa)==0)
{ 
   printf("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
 sum=sum+wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;
}
}
printf("该部门的总工资为:%f\n",sum);
system("pause");
}
 void average()   //职工工资求平均   
{   double all=0;
    double sum[100];
    int cnt=0;
    int i=0;
    printf("职工工资平均值如下:\n");
    for (i=0;i<Number;i++)
{
 sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;
 all+=sum[i];
 cnt++;
 }
 all/=cnt;
 printf("%f\n",all);
 system("pause");
}
 void sort()  //职工工资排序
{
 int i=0;
 int m,n;
 double sum[100];
 double t;
 struct worker p;
 for (i=0;i<Number;i++)
 sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;
 for(m=1;m<Number;m++){
       for(n=1;n<Number;n++){
           if(sum[n]>sum[n-1]){
               t=sum[n];
               sum[n]=sum[n-1];
               sum[n-1]=t;
               p=wo[n];
               wo[n]=wo[n-1];
               wo[n-1]=p;
           }
       }
   } 
  for (i=0;i<Number;i++)
    printf ("%s的总工资为:%lf\n",wo[i].name,sum[i]);
system("pause");
}
void modify()  //修改职工信息
{
 int mode=0; 
printf ("请选择修改查找方式\n"); 
printf ("1 按姓名查找修改\n"); 
printf ("2 按工号查找修改\n"); 
scanf ("%d",&mode);
 switch (mode){
 case 1: xmxg() ; 
 break ;
 case 2:ghxg(); 
 break ;
 default : printf ("输入错误!\n"); 
 break ;
}system("pause");
}
void xmxg()  //按姓名修改
{
 FILE*fp=NULL ; 
 char name[30]; 
 int i=0;
 printf ("请输入要修改的职工姓名:");
 scanf ("%s",name); 
 for (i=0;i<Number;i++)
{
 if (strcmp(name,wo[i].name));
 else 
 break;}
 printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n"); 
 printf ("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
 printf ("请重新输入该职工信息\n"); 
 printf ("姓名:");
 scanf ("%s",wo[i].name); 
 printf ("工号:");
 scanf ("%s",wo[i].ID);
 printf ("所属部门:"); 
 scanf ("%s",wo[i].depa); 
 printf ("基本工资:");
 scanf ("%d",&wo[i].salary1); 
 printf ("奖励工资:");
 scanf ("%d",&wo[i].salary2); 
 printf ("补贴项目即金额:");
 scanf ("%d",&wo[i].salary3);
 printf ("扣除项目即金额:");
 scanf ("%d",&wo[i].salary4);
//将剩余数据写入文件擦除以前的数据
 fp = fopen ("C://worker.dat","wb"); 
 for (i=0;i<Number;i++)
 {
     fwrite(&wo[i],sizeof(struct worker),1,fp);
 }
 fclose ( fp ); 
 printf("\t=======>修改成功!\n");
 system("pause");
}
void ghxg()  //按工号修改
{
 FILE*fp=NULL ; 
 char id[30]; 
 int i=0;
 printf ("请输入要修改的职工工号:");
 scanf ("%s",id); 
 for (i=0;i<Number;i++)
{
 if (strcmp(id,wo[i].ID));
 else 
 break ;}
 printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n"); 
 printf ("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
 printf ("请重新输入该职工信息\n"); 
 printf ("姓名:");
 scanf ("%s",wo[i].name); 
 printf ("工号:");
 scanf ("%s",wo[i].ID);
 printf ("所属部门:"); 
 scanf ("%s",wo[i].depa); 
 printf ("基本工资:");
 scanf ("%d",&wo[i].salary1); 
 printf ("奖励工资:");
 scanf ("%d",&wo[i].salary2); 
 printf ("补贴项目即金额:");
 scanf ("%d",&wo[i].salary3);
 printf ("扣除项目即金额:");
 scanf ("%d",&wo[i].salary4);
//将剩余数据写入文件擦除以前的数据
 fp = fopen ("C://worker.dat","wb"); 
 for (i=0;i<Number;i++)
 {
     fwrite(&wo[i],sizeof(struct worker),1,fp);
 }
 fclose ( fp ); 
 printf("\t=======>修改成功!\n");
 system("pause");
}
 
void reserve()  //保存数据
{
  printf("\t=====>程序在运行时已自动保存....\n");
  system("pause");
 } 
void back()
{
    printf("\t=====>按Enter键返回主菜单\n");
    system("pause");
}

改回答引用ChatGPT

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 职工信息结构体
typedef struct {
    char id[20];    // 职工号
    char name[20];  // 姓名
    char sex[6];    // 性别
    char job[20];   // 职位
    char unit[20];  // 单位名称
    char address[50];   // 家庭住址
    char phone[20]; // 联系电话
    float basicSalary;  // 基本工资
    float allowance;    // 津贴
    float subsidy;  // 生活补贴
    float grossSalary;  // 应发工资
    float phoneFee; // 电话费
    float utilityFee;   // 水电费
    float rent; // 房租
    float tax;  // 所得税
    float healthFee;    // 卫生费
    float providentFund;    // 公积金
    float totalDeduction;   // 合计扣款
    float netSalary;    // 实发工资
} Employee;

// 保存职工信息到文件中
void saveEmployees(Employee *employees, int n) {
    FILE *fp = fopen("employees.dat", "wb");
    fwrite(employees, sizeof(Employee), n, fp);
    fclose(fp);
}

// 从文件中读取职工信息
int readEmployees(Employee *employees) {
    FILE *fp = fopen("employees.dat", "rb");
    if (fp == NULL) {
        return 0;
    }
    int n = 0;
    while (fread(&employees[n], sizeof(Employee), 1, fp) == 1) {
        n++;
    }
    fclose(fp);
    return n;
}

// 添加职工信息
void addEmployee(Employee *employees, int *n) {
    Employee e;
    printf("请输入职工信息(职工号 姓名 性别 职位 单位名称 家庭住址 联系电话 基本工资 津贴 生活补贴):\n");
    scanf("%s%s%s%s%s%s%s%f%f%f", e.id, e.name, e.sex, e.job, e.unit, e.address, e.phone, &e.basicSalary, &e.allowance, &e.subsidy);
    e.grossSalary = e.basicSalary + e.allowance + e.subsidy;
    e.phoneFee = 0.0;
    e.utilityFee = 0.0;
    e.rent = 0.0;
    e.tax = 0.0;
    e.healthFee = 0.0;
    e.providentFund = 0.0;
    e.totalDeduction = e.phoneFee + e.utilityFee + e.rent + e.tax + e.healthFee + e.providentFund;
    e.netSalary = e.grossSalary - e.totalDeduction;
    employees[*n] = e;
    (*n)++;
    printf("职工信息已添加!\n");
}

// 修改职工信息
void modifyEmployee(Employee *employees, int n) {
    char id[20];
    printf("

如有帮助,望采纳

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct worker
{
    char depa[30];
    char name[30];
    char ID[10];
    int salary1;
    int salary2;
    int salary3;
    int salary4;
}; //职工信息 
int  dq(struct worker wo[]);
void bc(struct worker wo[]);
void show();       //主界面 
void add();        //添加信息 
void see();        //查看信息 
void search();     //查询信息 
void ghcz();       //按工号查找 
void xmcz();       //按姓名查找 
void bmcz();       //按部门查找 
void del();        //删除信息 
void xmsc() ;      //按姓名删除 
void ghsc();       //按工号删除 
void statistics(); //个人工资统计 
void statistic();  //总计职工工资 
void statistic1(); //统计职工工资
void average();    //职工工资求平均 
void gzdtj();      //按工资段统计 
void bmtj();       //按部门统计 
void modify();     //修改职工信息 
void ghxg();       //按工号修改 
void xmxg();       //按姓名修改 
void sort();       //职工工资排序 
void reserve();    //保存 
void back();       //返回 
 struct worker wo[100];  //保存所有的职工信息
 int Number=0;           //记录总的职工人数 
 int main()
{  
 int choose=0; 
 while (1)
{
show();
 printf ("\t\t====>请选择:");
 scanf ("%d",&choose); 
 system ("cls");
 switch (choose)
{
 case 0:exit(0);  //退出 
 break ;
 case 1:add();
 back();   //添加职工信息 
 break ;
 case 2:see();
 back() ;  //查看职工信息 
 break ;
 case 3:search();
 back();   //查找职工信息 
 break ;
 case 4:del() ;
 back();   //删除职工信息 
 break ;
 case 5:statistics(); 
 back( );  //个人工资统计 
 break ;
 case 6:statistic(); 
 back();   //总记职工工资 
 break ;
 case 7:sort();
 back();   //排序职工信息 
 break ;
 case 8:modify();
 back();   //修改职工信息 
 break ;
 case 9:reserve(); 
 back();   //保存数据 
 break ;
 default:
 break;
}
 fflush(stdin);
 system ("cls");
 system("pause");
}
}
 int dq(struct worker wo[])
{
 FILE*fp=NULL;
 int i=0;
 fp=fopen("C://worker.dat","rb");
 while(fread(&wo[i],sizeof(struct worker),1,fp))
 i++;
 fclose (fp); 
 return i;
 } 
 
 void bc(struct worker *wo)
{
    FILE*fp=NULL;
 fp=fopen("C://worker.dat","ab+");
 fwrite(wo,sizeof(struct worker),1,fp); 
 fclose(fp);
 system("pause");
}
 void show ()
 {
 
 printf ("\n");
 printf ("\t——欢迎进入职工工资管理系统!您可以进行以下操作!——\n");
 printf ("\t——————————————————————————————————————————————\n");
 printf ("\t——             职工工资管理系统              ——\n");
 printf ("\t——————————————————————————————————————————————\n");
 printf ("\t///No.1—————[1]添加职工信息                  ——\n");
 printf ("\t///No.2—————[2]查看职工信息                  ——\n");
 printf ("\t///No.3—————[3]查找职工信息                  ——\n");
 printf ("\t///No.4—————[4]删除职工信息                  ——\n");
 printf ("\t///No.5—————[5]个人工资统计                  ——\n");
 printf ("\t///No.6—————[6]总记职工工资                  ——\n");
 printf ("\t///No.7—————[7]排序职工工资                  ——\n");
 printf ("\t///No.8—————[8]修改职工信息                  ——\n");
 printf ("\t///No.9—————[9]保 存 数 据                  ——\n"); 
 printf ("\t///No.0—————[0]退 出 系 统                  ——\n");  
 printf ("\t——————————————————————————————————————————————\n");
 printf ("\t——————————————————————————————————————————————\n");
}
 
 
 void add()  //添加职工信息 
{
 int numberTemp=0; 
 int i=0;
 struct worker temp;
 printf("请输入要添加职工个数:"); 
 scanf ("%d",&numberTemp);
 for (i=0;i<numberTemp;i++)
{
 printf ("输入第%d个职工信息\n",i+1); 
 printf ("姓名:");
 scanf ("%s",temp.name); 
 printf ("工号:");
 scanf ("%s",temp.ID);
 printf ("所属部门:"); 
 scanf ("%s",temp.depa); 
 printf ("基本工资:");
 scanf ("%d",&temp.salary1); 
 printf ("奖励工资:");
 scanf ("%d",&temp.salary2); 
 printf ("补贴项目即金额:");
 scanf ("%d",&temp.salary3);
 printf ("扣除项目即金额:");
 scanf ("%d",&temp.salary4);
 wo[Number++]=temp;   //写入到数组 
 bc(&temp);           //写入到文件
 system("pause");
}
 printf ("添加成功!\n");
}
void see() //查看职工信息 
{
 int i=0;
 printf ("以下是全部职工\n");
 printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n"); 
 while (i<Number)
{
 printf ("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
 i++;
}system("pause");
}
void search()  //查找职工信息
{
 int n=0;
 printf("1 按姓名查找\n"); 
 printf("2 按工号查找\n"); 
 printf("3 按部门查找\n"); 
 scanf ("%d",&n);
 switch (n) 
{
 case 1:xmcz(); 
 break ;
 case 2:ghcz(); 
 break ;
 case 3:bmcz(); 
 break ;
 default: printf ("输入错误!\n"); 
 break ;
}system("pause");
}
void xmcz()  //按姓名查找
{
 char name[30]; 
 int i=0;
 printf ("请输入要查找职工姓名:"); 
 scanf ("%s",name);
 system ("cls");
 printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n");
 for (i=0;i<Number;i++)
{
  if (strcmp(name,wo[i].name)==0)
{
    printf("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
}
}system("pause");
}
void ghcz()  //按工号查找
{
  char id[10];
  int i=0;
  printf("请输入要查找工号:");
  scanf("%s",id);
  system("cls");
  printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n");
 for(i=0;i<Number;i++){
     if(strcmp(id,wo[i].ID)==0)
 {
     printf("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
}
}system("pause");
}
void bmcz()  //按部门查找
{
  char depa[30];
  int i=0;
  printf("请输入要查找部门名称:");
  scanf("%s",depa);
  system("cls");
  printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n");
 for(i=0;i<Number;i++){
     if(strcmp(depa,wo[i].depa)==0)
 {
     printf("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
}
}system("pause");
}
void del()  //删除职工信息 
{
 int n=0;
 printf ("1 按姓名删除\n"); 
 printf ("2 按工号删除\n"); 
 scanf ("%d",&n);
 switch (n)
{
    case 1: xmsc(); 
    break ;
    case 2: ghsc(); 
    break ;
}system("pause");
}
 void xmsc ()//按姓名删除
{
 FILE*fp=NULL;
 char name[30]; 
 int i=0;
 int j=0;
 printf ("请输入要删除的职工姓名:"); 
 scanf ("%s",name);
 for (i=0;i<Number;i++)
 { 
   if (strcmp(name,wo[i].name)==0)
 {
   for (j=i;j<Number-1;j++)
   {
    wo[j]=wo[j+1];
    }
 
 Number --;
 }system("pause");
}
 
//将剩余数据写入文件擦除以前的数据
 fp = fopen ("C://worker.dat","wb"); 
 for (i=0;i<Number;i++)
 {
     fwrite(&wo[i],sizeof(struct worker),1,fp);
 }
 fclose (fp); 
 printf ("删除成功!\n");
}
 void ghsc()  //按工号删除 
{
 FILE*fp=NULL;
 char id[60]; 
 int i=0;
 int j=0;
 printf ("请输入要删除的职工工号:"); 
 scanf ("%s",id);
 for (i=0;i<Number;i++)
 {
   if (strcmp(id,wo[i].ID)==0)
{
 for(j=i;j<Number-1;j++)
{
 wo[j]=wo[j+1];
 }
Number--;
 }system("pause");
}
 
//将剩余数据写入文件擦除以前的数据 
 fp=fopen("C://worker.dat","wb");
 for (i=0;i<Number;i++)
{
fwrite(&wo[i],sizeof(struct worker),1,fp);
 }
fclose (fp);
 printf ("删除成功!\n");
}
 void statistics() //个人工资统计  
{
 int i=0;
 double sum[100]; 
 for (i=0;i<Number;i++)
 {
 sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;
 printf ("%s的总工资为:%f\n",wo[i].name,sum[i]);
}system("pause");
}
void statistic()   //总计职工工资 
{
   int n=0;
 printf ("1 统计职工工资\n"); 
 printf ("2 职工工资求平均\n"); 
 scanf ("%d",&n);
 switch (n){
 case 1:statistic1(); 
 break ;
 case 2:average();
 break ;
 default:printf("输入错误!\n");
 break;
 }system("pause");
}
 void statistic1()  //统计职工工资
{
 int n=0;
 printf ("1 按工资段统计\n"); 
 printf ("2 按部门统计\n"); 
 scanf ("%d",&n);
 switch (n){
 case 1:gzdtj(); 
 break ;
 case 2:bmtj();
 break ;
 default:printf("输入错误!\n");
 break;
}system("pause");
}
void gzdtj()  //按工资段统计
{ 
 int sa1,sa2;
 int i=0;
 int n,m;
 int sl[20]={0,0}; 
 double sum [100];
 printf ("请输入要查询的工资段:"); 
 scanf ("%d,%d",&sa1,&sa2);
 system ("cls");
 for (i=0;i<Number;i++)
{
 sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;
 }
 for (i=0;i<Number;i++)
 { n=sum[i]/1000;
 if (n>9) 
 n=10;
 switch(n)
{ case 0:sl[0]++; 
  break ; 
  case 1:sl[1]++; 
  break ; 
  case 2:sl[2]++; 
  break ; 
  case 3:sl[3]++; 
  break ; 
  case 4:sl[4]++; 
  break ; 
  case 5:sl[5]++; 
  break ;
  case 6:sl[6]++; 
  break ; 
  case 7:sl[7]++; 
  break ; 
  case 8:sl[8]++; 
  break ; 
  case 9:sl[9]++; 
  break ; 
  case 10:sl[10]++; 
  break ;
  }
}
 m=sa1/1000; 
 switch(m)
{case 0:printf ("工资在1000以下的人数为%d\n",sl[0]); break ;
 case 1:printf("工资在1000到2000之间的人数为%d\n",sl[1]); break ;
 case 2:printf("工资在2000到3000之间的人数为%d\n",sl[2]); break ;
 case 3:printf("工资在3000到4000之间的人数为%d\n",sl[3]); break ; 
 case 4:printf("工资在4000到5000之间的人数为%d\n",sl[4]); break ;
 case 5:printf("工资在5000到6000之间的人数为%d\n",sl[5]); break ;
 case 6:printf("工资在6000到7000之间的人数为%d\n",sl[6]); break ;
 case 7:printf("工资在7000到8000之间的人数为%d\n",sl[7]); break ;
 case 8:printf("工资在8000到9000之间的人数为%d\n",sl[8]); break ;
 case 9:printf("工资在9000到10000之间的人数为%d\n",sl[9]);break ;
 case 10:printf("工资在10000以上的人数为%d\n",sl[10]);    break ;
 }system("pause");
}
void bmtj()   //按部门统计
{
 char depa[30]; 
 float sum=0;
 int i=0;
 printf("请输入要查询的部门名称:"); 
 scanf ("%s",depa);
 system ("cls");
 printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n");
 for(i=0;i<Number;i++){
  if (strcmp(depa,wo[i].depa)==0)
{ 
   printf("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
 sum=sum+wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;
}
}
printf("该部门的总工资为:%f\n",sum);
system("pause");
}
 void average()   //职工工资求平均   
{   double all=0;
    double sum[100];
    int cnt=0;
    int i=0;
    printf("职工工资平均值如下:\n");
    for (i=0;i<Number;i++)
{
 sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;
 all+=sum[i];
 cnt++;
 }
 all/=cnt;
 printf("%f\n",all);
 system("pause");
}
 void sort()  //职工工资排序
{
 int i=0;
 int m,n;
 double sum[100];
 double t;
 struct worker p;
 for (i=0;i<Number;i++)
 sum[i]=wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4;
 for(m=1;m<Number;m++){
       for(n=1;n<Number;n++){
           if(sum[n]>sum[n-1]){
               t=sum[n];
               sum[n]=sum[n-1];
               sum[n-1]=t;
               p=wo[n];
               wo[n]=wo[n-1];
               wo[n-1]=p;
           }
       }
   } 
  for (i=0;i<Number;i++)
    printf ("%s的总工资为:%lf\n",wo[i].name,sum[i]);
system("pause");
}
void modify()  //修改职工信息
{
 int mode=0; 
printf ("请选择修改查找方式\n"); 
printf ("1 按姓名查找修改\n"); 
printf ("2 按工号查找修改\n"); 
scanf ("%d",&mode);
 switch (mode){
 case 1: xmxg() ; 
 break ;
 case 2:ghxg(); 
 break ;
 default : printf ("输入错误!\n"); 
 break ;
}system("pause");
}
void xmxg()  //按姓名修改
{
 FILE*fp=NULL ; 
 char name[30]; 
 int i=0;
 printf ("请输入要修改的职工姓名:");
 scanf ("%s",name); 
 for (i=0;i<Number;i++)
{
 if (strcmp(name,wo[i].name));
 else 
 break;}
 printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n"); 
 printf ("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
 printf ("请重新输入该职工信息\n"); 
 printf ("姓名:");
 scanf ("%s",wo[i].name); 
 printf ("工号:");
 scanf ("%s",wo[i].ID);
 printf ("所属部门:"); 
 scanf ("%s",wo[i].depa); 
 printf ("基本工资:");
 scanf ("%d",&wo[i].salary1); 
 printf ("奖励工资:");
 scanf ("%d",&wo[i].salary2); 
 printf ("补贴项目即金额:");
 scanf ("%d",&wo[i].salary3);
 printf ("扣除项目即金额:");
 scanf ("%d",&wo[i].salary4);
//将剩余数据写入文件擦除以前的数据
 fp = fopen ("C://worker.dat","wb"); 
 for (i=0;i<Number;i++)
 {
     fwrite(&wo[i],sizeof(struct worker),1,fp);
 }
 fclose ( fp ); 
 printf("\t=======>修改成功!\n");
 system("pause");
}
void ghxg()  //按工号修改
{
 FILE*fp=NULL ; 
 char id[30]; 
 int i=0;
 printf ("请输入要修改的职工工号:");
 scanf ("%s",id); 
 for (i=0;i<Number;i++)
{
 if (strcmp(id,wo[i].ID));
 else 
 break ;}
 printf ("姓名    工号         所属部门    基本工资     奖励工资     补贴项目及金额     扣款项目及金额    总工资\n"); 
 printf ("%s  %s    %s      %d        %d            %d               %d         %d\n",wo[i].name,wo[i].ID,wo[i].depa,wo[i].salary1,wo[i].salary2,wo[i].salary3,wo[i].salary4,wo[i].salary1+wo[i].salary2+wo[i].salary3-wo[i].salary4);
 printf ("请重新输入该职工信息\n"); 
 printf ("姓名:");
 scanf ("%s",wo[i].name); 
 printf ("工号:");
 scanf ("%s",wo[i].ID);
 printf ("所属部门:"); 
 scanf ("%s",wo[i].depa); 
 printf ("基本工资:");
 scanf ("%d",&wo[i].salary1); 
 printf ("奖励工资:");
 scanf ("%d",&wo[i].salary2); 
 printf ("补贴项目即金额:");
 scanf ("%d",&wo[i].salary3);
 printf ("扣除项目即金额:");
 scanf ("%d",&wo[i].salary4);
//将剩余数据写入文件擦除以前的数据
 fp = fopen ("C://worker.dat","wb"); 
 for (i=0;i<Number;i++)
 {
     fwrite(&wo[i],sizeof(struct worker),1,fp);
 }
 fclose ( fp ); 
 printf("\t=======>修改成功!\n");
 system("pause");
}
 
void reserve()  //保存数据
{
  printf("\t=====>程序在运行时已自动保存....\n");
  system("pause");
 } 
void back()
{
    printf("\t=====>按Enter键返回主菜单\n");
    system("pause");
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^