千家信息网

怎么用C语言实现职工工资管理系统

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,本文小编为大家详细介绍"怎么用C语言实现职工工资管理系统",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么用C语言实现职工工资管理系统"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习
千家信息网最后更新 2024年09月21日怎么用C语言实现职工工资管理系统

本文小编为大家详细介绍"怎么用C语言实现职工工资管理系统",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么用C语言实现职工工资管理系统"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

设计要求:

模拟并设计一个企业的职工工资管理系统,职工信息包括工号、姓名、基本工资、津贴,设职工人数不超过500人,以菜单选项的方式完成相应的功能,主要功能需求如下:

1、建立工资表;

2、职工扣税和实发工资;

3、按实发工资从高到低的顺序显示工资明细表;

4、修改职工的工资信息;

5、按工号查询职工工资信息;

6、职工工资统计分析;

7、退出系统。

基本思路:

将职工工资管理系统的职工信息录入功能、数据处理并存入文件功能、按照职工工号查找职工工资信息功能、修改职工信息功能分成多个模块,为了使程序的可读性更强,程序的编写将以函数形式编写封装各个功能,然后在主函数中以循环形式读取用户输入的指令,根据用户的指令选择不同的函数入口地址,从而执行不同的操作,实现设计要求的职工工资管理系统的各项功能。

全部代码:

#include  #include #include #include #define Q 15               //最大字符串长度 #define N 500              //最大员工数量 typedef struct workers{    int workersID;            //职工工号    char name[Q];             //职工姓名    double basicsalary;       //基本工资    double allowance;         //津贴    double taxsalary;         //扣税    double truesalary;        //实发工资}WORKERS;                     //职工信息void Menu(int *n);                               //主菜单 void Payroll(WORKERS work[],int *p);             //建立工资表 void Taxsalary(WORKERS work[],int num);          //计算职工扣税和实发工资void Sort(WORKERS work[],int num ) ;             //将工资从高到低排序void Change(WORKERS work[],int num);             //修改职工的工资信息int Find(WORKERS work[],int num);                //按工号查询职工工资信息void Analyse(WORKERS work[],int num);            //职工工资统计分析 void Printworkroll(WORKERS work[],int num);      //显示工资明细表void Writefile(WORKERS work[],int num);          //输出数据并写入 data.txt 文件     int main(){       WORKERS work[N];                             //定义一个结构体数组来存储员工信息     char ch;                                     //ch为检测是否返回主菜单     int n,num=0,ret;                             //n为操作数,num为总人数,ret判断数     while(1){        system("cls");        Menu(&n);                                //主菜单                 switch(n){            case 0:                system("cls");                   //退出程序                 printf("退出成功!\n");                exit(0);            case 1:                Payroll(work,&num);              //建立工资表                break;            case 2:                Taxsalary(work,num);             //职工扣税和实发工资                Writefile(work,num);             //输出数据并写入 data.txt 文件                 printf("计算完成,并输出数据至txt文件!\n");                Sleep(2000);                system("cls");                break;            case 3:                Sort(work,num);                  //将工资从高到低排序                Printworkroll(work,num);         //显示工资明细表                printf("\n是否返回主菜单?Y or N\n");                fflush(stdin);                ch=getchar();                if(ch=='N'){                    exit(0);                }                break;            case 4:                Change(work,num);                //修改职工的工资信息                printf("\n是否返回主菜单?Y or N\n");                fflush(stdin);                ch=getchar();                if(ch=='N'){                    exit(0);                }                break;            case 5:                ret=Find(work,num);              //按工号查询职工工资信息                if(ret==0){                    printf("查无此人!");        //反馈查询不到信息                 }                printf("\n是否返回主菜单?Y or N\n");                fflush(stdin);                ch=getchar();                if(ch=='N'){                    exit(0);                }                break;            case 6:                Analyse(work,num);               //职工工资统计分析                printf("\n是否返回主菜单?Y or N\n");                fflush(stdin);                ch=getchar();                if(ch=='N'){                    exit(0);                }                break;        }    }    return 0;}void Menu(int *n)                                 //主菜单   *n为返回操作数 {    int a;    printf(" ------职工工资管理系统------\n");    printf("|       1.建立职工工资表                 |\n");    printf("|       2.职工扣税和实发工资             |\n");    printf("|       3.实发工资从高到低排序           |\n");    printf("|       4.修改职工工资信息               |\n");    printf("|       5.查询职工工资信息               |\n");    printf("|       6.职工工资统计分析               |\n");    printf("|       0.退出系统                       |\n");    printf(" --------------------\n");    printf("提示:请输入数字序号选择对应的操作!\n");    scanf("%d",&a);    *n=a;    system("cls");}void Payroll(WORKERS work[],int *p)               //建立工资表 {    int num=*p;    char ch;    do{        system("cls");        printf("员工(%d)的信息\n",num+1);        printf("工号:");        scanf("%d",&work[num].workersID);        printf("姓名:");        scanf("%s",&work[num].name);        printf("基本工资:");        scanf("%lf",&work[num].basicsalary);        printf("津贴:");        scanf("%lf",&work[num].allowance);        printf("是否继续录入?Y or N\n");         fflush(stdin);        scanf("%c",&ch);        num++;    }while(ch=='Y');        *p=num;      //返回总人数     system("cls");}void Taxsalary(WORKERS work[],int num)            //职工扣税和实发工资{        int i;    double money;    for(i=0;i=3000))        {            work[i].taxsalary=(money-3000)*0.05;            work[i].truesalary= money-work[i].taxsalary;         }        else        {             work[i].taxsalary=(money-3000)*0.05+(money-4000)*0.1;            work[i].truesalary= money-work[i].taxsalary;         }     }}void Sort(WORKERS work[],int num)                 //将工资从高到低排序{    int i,j;    WORKERS temp;    for (i=0;i3000)){                    work[i].taxsalary=(sum-3000)*0.05;                    work[i].truesalary=3000+((sum-3000)*0.95);                }                   else{                    work[i].taxsalary=50+(sum-4000)*0.10;                    work[i].truesalary=3950+((sum-4000)*0.9);                }                system("cls");                                printf("员工信息修改成功!\n\n");                printf("扣税:%6.2lf\n",work[i].taxsalary);                 printf("实发工资:%6.2lf\n",work[i].truesalary);                                 break;                }            else{                break;            }            }    }} int Find(WORKERS work[],int num)                  //按工号查询职工工资信息{    int s,i,flag=0;    printf("查询职工工资信息\n\n");    printf("请输入您的工号:");    scanf("%d",&s);    putchar('\n');    for(i=0;i=3000))        {            m++;        }                else        {            l++;        }    }    x=(double)s/num*100;    y=(double)m/num*100;    z=(double)l/num*100;    printf("实发工资\n");    printf("(3000元以下)        人数:%d\t比例:%.2lf%%\n",s,x);                  printf("(3000以上4000以下)  人数:%d\t比例:%.2lf%%\n",m,y);         printf("(4000以上)          人数:%d\t比例:%.2lf%%\n",l,z);         }void Printworkroll(WORKERS work[],int num)        //显示工资明细表{    printf("工号\t姓名\t基本工资\t津贴\t扣税\t实发工资\n");    for(int i=0;iwork[j].workersID)            {                temp=work[i];                work[i]=work[j];                work[j]=temp;            }        }    }        FILE *fp;    if((fp=fopen("data.txt","w"))==0){        printf("错误!\n");        exit(0);    }    fprintf(fp,"职工工资管理系统\n成功录入%d人\n详表如下:\n\n",num);    fprintf(fp,"工号\t姓名\t基本工资\t津贴\t扣税\t实发工资\n");    for(int i=0;i

读到这里,这篇"怎么用C语言实现职工工资管理系统"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

0