iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >如何使用C语言实现简单员工工资管理系统
  • 613
分享到

如何使用C语言实现简单员工工资管理系统

2023-06-29 14:06:30 613人浏览 泡泡鱼
摘要

小编给大家分享一下如何使用C语言实现简单员工工资管理系统,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下(一)公司现状分析公司主要有经理、技术员、销售员、销售经理4类岗位人员,他们都有基本信息:职工号、姓名、性别

小编给大家分享一下如何使用C语言实现简单员工工资管理系统,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

具体内容如下

(一)公司现状分析

公司主要有经理、技术员、销售员、销售经理4类岗位人员,他们都有基本信息:职工号、姓名、性别、部门、岗位、工龄、当月工资等。一个部门最多只能有一个销售经理,一个部门可以有多个销售员,一个部门可以有若干个经理和若干技术员。

员工数据包括基本资料数据和工资数据两部分,员工基本资料数据包括职工号、姓名、性别、部门、岗位、工龄;员工工资数据包括工作时间、小时工资、销售额、底薪、当月工资。

员工当月工资的计算办法。

A.经理:底薪(8000)+工龄×35;

B.技术员:工作时间×小时工资(100元每小时)+工龄×35;

C.销售员:销售额×4%提成+工龄×35;

D.销售经理:底薪(8000)+所辖部门销售额总额×0.5%+工龄×35。

现在需要开发一个公司员工工资管理系统对员工工资进行有效管理。

(二)系统的功能要求

数据维护管理:要求对员工的基本资料数据和工资数据分开管理。基本资料数据的维护管理功能包括添加(批量、单个)、修改、删除、查询等;工资数据的维护管理功能包括输入(批量、单个)、修改、删除、查询等。

A. 基本资料数据的维护管理

(1).添加:(批量、单个)添加员工基本资料数据。基本资料数据包括职工号、姓名、性别、部门、岗位、工龄。

(2).修改:根据职工号来修改任意员工的除职工号外的其他基本资料数据。

(3).删除:根据职工号删除一个员工。

(4).查询:根据职工号查询一个员工的基本资料数据。

B. 工资数据的维护管理

(1).输入:(批量、单个)输入员工工资数据。工资数据根据员工类型的不同而有区别,输入的相关数据也应不同。注意:当月工资是计算项,不能输入。

(2).修改:根据职工号来修改任意员工的相关工资数据(注意:不同类别员工相关数据不同)。

(3).删除:根据职工号删除一个员工(不能删除,只需将相关数据项设置成-1)。

(4).查询:根据职工号查询一个员工的工资数据。

(5).计算:批量计算所有技术员、销售员和销售经理的当月工资额。注意,① 销售经理所辖部门销售额总额为本部门所有销售员当月销售额之和。② 只有各项数据都为有效数据时(-1为无效数据),才能计算。

查询数据

分页显示全部员工的信息。分页功能:每页显示10条员工的信息,有上一页、下一页、首页和最后一页的功能。
按部门显示本部门全部员工信息。注意:无需分页显示。
分类显示4种岗位的员工信息。注意:无需分页显示。
根据工号或者姓名查询员工信息。

排序:

所有员工信息按当月工资从高到低排序并显示。注意:无需分页显示。
某个岗位的员工信息按当月工资从高到低排序并显示。注意:无需分页显示。

统计:

统计并显示某个部门的平均工资、最低工资、最高工资。
2、统计并显示某个部门超出平均工资的人数与员工信息。注意:无需分页显示。
3、统计并显示所有员工中的最低工资和最高工资员工的信息。
4、统计并显示所有员工超出平均工资的人数与员工信息。注意:无需分页显示。

(三)系统的实现技术要求

员工用结构体表示,全体员工用一个链表来表示。某一岗位的员工,可以只使用员工结构体的部分成员,比如:经理只使用基本信息成员,而不使用销售额成员、工作时间成员。
2、必须用文件来存储员工信息:开始运行程序时从文件中读取员工信息到链表,退出程序时将员工信息保存到文件中。
3、主菜单有一个菜单项能够将员工信息保存到文件。
4、数据约束:
1)、职工号:整型、不能重复、从1开始依次递增、由软件自动计算产生,不能修改。
2)、岗位:枚举类型,分别表示经理、技术员、销售员、销售经理。
3)、员工的其他信息不能为空。
4)、其他:至少有两层菜单。

#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct employee{    int num;                char name[20];            int sex;                int department;            int post;                int lengthservice;        int hour;               int hoursalary;            int sales;                int basicsalary;        int salary;                struct employee *next;}employee;struct Employee{    int num;    char name[20];            int sex;                int department;            int post;                int lengthservice;        int hour;               int hoursalary;            int sales;                int basicsalary;        int salary;            };void main(){    int num=0,flag,a,NUM;    char name[20];    employee *list,*rare;//头节点list无数据 尾指针rare有数据    int increase(employee *rare,int *num);    void DecendOrder(employee *list);    void Statistics(employee *list);    void queryAll(employee *list);    void querybasic(employee *list,int num);    void Delete(employee *list,int num);    void DeleteSalary(employee *list,int num);    void querysalary(employee *list,int num);    void change(employee *list,int num);    void changesalary(employee *list,int num);    void Statistics2(employee *list);    void querynum(employee *list,int num);    employee *import(employee *list,int *num);    void salary(employee *list);    void Statistics3(employee *list);    void Statistics4(employee *list);    void save(employee *list);    void queryname(employee *list,char name[20]);    void querydepart(employee *list,int num);    void querypost(employee *list);    void DecendOrder2(employee *list);    list=(employee *)malloc(sizeof(employee));    list->next=NULL;    rare=import(list,&num);    if(num==0)        increase(list,&num);    salary(list);    while(1)    {        begin:printf("菜单:添加数据:1  修改数据:2   删除数据:3   查询数据:4   保存数据:5   统计数据:6   数据排序:7   退出:0\n");        scanf("%d",&flag);        if(flag==0){            save(list);            exit(0);}        switch(flag){            case 1:increase(rare,&num);salary(list);save(list);break;            case 2:printf("修改基本信息:1 修改工资信息:2 返回:0\n");scanf("%d",&a);                switch(a){                case 0:Goto begin;break;                case 1:printf("请输入要修改的工号\n");scanf("%d",&NUM);change(list,NUM);break;                    case 2:printf("请输入要修改的工号\n");scanf("%d",&NUM);changesalary(list,NUM);break;                    }break;            case 3:printf("删除基本信息:1 删除工资信息:2 返回:0\n");scanf("%d",&a);                switch(a){                case 0:goto begin;break;                case 1:printf("请输入要删除的工号\n");scanf("%d",&NUM);Delete(list,NUM);break;                    case 2:printf("请输入要删除的工号\n");scanf("%d",&NUM);DeleteSalary(list,NUM);break;                    }break;            case 4:printf("查询基本信息:1 查询工资信息:2  查询全部信息:3  查询部门信息:4  查询各个岗位信息:5  工号查询信息:6  姓名查询信息:7 返回:0\n");scanf("%d",&a);                switch(a){                case 0:goto begin;break;                case 1:printf("请输入要查询的工号\n");scanf("%d",&NUM);querybasic(list,NUM);break;                    case 2:printf("请输入要查询的工号\n");scanf("%d",&NUM);querysalary(list,NUM);break;                case 3:queryAll(list);break;                    case 4:printf("请输入要查询的部门号\n");scanf("%d",&NUM);querydepart(list,NUM);break;                case 5:querypost(list);break;                case 6:printf("请输入要查询的工号\n");scanf("%d",&NUM);querynum(list,NUM);break;                case 7:printf("请输入想查询的姓名\n");scanf("%s",name);queryname(list,name);break;                }break;            case 5:save(list);break;            case 6:printf("统计部门平均工资,最低,最高工资:1            统计部门超过平均工资的人数与员工信息:2\n统计所有员工最低工资和最高工资员工的信息:3  统计所有员工超出平均工资的人数与员工信息:4\n 返回:0\n");scanf("%d",&a);                switch(a){                case 0:goto begin;break;                case 1:Statistics(list);break;                case 2:Statistics2(list);break;                case 3:Statistics3(list);break;                case 4:Statistics4(list);break;                }break;            case 7:DecendOrder2(list);break;            default:printf("输入错误");goto begin;}} }int increase(employee *rare,int *num)//添加数据{    employee *p,*q;    char name[20];    int sex,department,post,lengthservice,hour,hoursalary,sales,basicsalary;    q=rare;    printf("请输入姓名,性别(1为男,2为女),部门,职位(1为经理、2为技术员、3为销售员、4为销售经理),工龄,工作时间,时薪,销售额,底薪:(工时为-1时停止输入)\n");    scanf("%s%d%d%d%d%d%d%d%d",name,&sex,&department,&post,&lengthservice,&hour,&hoursalary,&sales,&basicsalary);    while(hour!=-1)    {        num++;        p=(employee *)malloc(sizeof(employee));        strcpy(p->name,name);        p->num=*num;        p->sex=sex;        p->department=department;        p->post=post;        p->lengthservice=lengthservice;        p->hour=hour;        p->hoursalary=hoursalary;        p->sales=sales;        p->basicsalary=basicsalary;        if(*num==1)            rare->next=p;        else            q->next=p;        q=p;        p->next=NULL;        scanf("%s%d%d%d%d%d%d%d%d",name,&sex,&department,&post,&lengthservice,&hour,&hoursalary,&sales,&basicsalary);    }    return *num;}void salary(employee *list)//计算工资{    employee *p=list->next,*q=list->next;    int sales=0;    while(p!=NULL)    {        if(p->hour==-1)p=p->next;        if(p->post==3)            p->salary=p->sales*4/100+35*p->lengthservice;        else if(p->post==2)            p->salary=100*p->hour+35*p->lengthservice;        else if(p->post==1)            p->salary=8000+p->lengthservice*35;        else if(p->post==4){            while(q!=NULL)            {                if(q->post==3&&q->department==p->department)                    sales+=q->sales;                q=q->next;            }            p->salary=sales*5/1000+8000+p->lengthservice*35;            q=list->next;}        p=p->next;    }}void querybasic(employee *list,int num)//查询基本信息{    employee *p;    p=list->next;    while(p->num!=num&&p!=NULL)        p=p->next;    if(p->num==num){        printf("工号 名字 性别 部门 职位 工龄\n");        printf("%-5d%-5s%-5d%-5d%-5d%-5d\n",p->num,p->name,p->sex,p->department,p->post,p->lengthservice);}    if(p==NULL)        printf("该工号不存在\n");}void querysalary(employee *list,int num)//查询工资信息{    employee *p;    p=list->next;    while(p->num!=num&&p!=NULL)        p=p->next;    if(p->num==num){        printf("工号  工时  时薪  销售额  底薪  工资\n");        printf("%-6d%-6d%-6d%-8d%-6d%-6d\n",p->num,p->hour,p->hoursalary,p->sales,p->basicsalary,p->salary);}    if(p==NULL)        printf("该工号不存在\n");}void Delete(employee *list,int num)//删除基本信息{    employee *p,*q;    p=list->next;    q=p->next;    while(p->next->num!=num)    {        p=p->next;        q=p->next;    }    if(q->num==num)        p->next=q->next;    else printf("职工号在范围外");    q=q->next;    while(q!=NULL)    {        q->num--;        q=q->next;    } }void DeleteSalary(employee *list,int num)//删除工资信息{    employee *p;    p=list->next;    while(p->num!=num)        p=p->next;    if(p->num==num){        p->hour=-1;        p->hoursalary=-1;        p->sales=-1;        p->basicsalary=-1;}    else printf("该工号超出范围");}employee *import(employee *list,int *num)//读取文件{         FILE *fp;    struct Employee stu;    employee *q,*p;    if((fp=fopen("employee.dat","rb"))==NULL){        printf("文件不存在,输入数据以建立一个文件存储信息\n");        return 0;}    q=(employee *)malloc(sizeof(employee));        while(!feof(fp))        {            if((fread(&stu,sizeof(struct Employee),1,fp))!=1)break;            *num=*num+1;            p=(employee *)malloc(sizeof(employee));            strcpy(p->name,stu.name);            p->num=*num;            p->sex=stu.sex;            p->department=stu.department;            p->post=stu.post;            p->lengthservice=stu.lengthservice;            p->hour=stu.hour;            p->hoursalary=stu.hoursalary;            p->sales=stu.sales;            p->basicsalary=stu.basicsalary;            p->salary=stu.salary;            if(*num==1)                list->next=p;            else                q->next=p;            q=p;            p->next=NULL;        }    fclose(fp);    return q;}void save(employee *list)//存储到文件{    struct Employee stu;    FILE *fp;    employee *p;    p=list->next;    if((fp=fopen("employee.dat","wb"))==NULL){        printf("error");        exit(0);}    while(p!=NULL)    {        stu.num=p->num;                strcpy(stu.name,p->name);        stu.sex=p->sex;        stu.department=p->department;        stu.post=p->post;        stu.lengthservice=p->lengthservice;        stu.hour=p->hour;        stu.hoursalary=p->hoursalary;        stu.sales=p->sales;        stu.basicsalary=p->basicsalary;        stu.salary=p->salary;        if((fwrite(&stu,sizeof(struct Employee),1,fp))!=1)printf("error");        p=p->next;    }    fclose(fp);}void change(employee *list,int num)//改变基本数据{    char name[20];    int sex,department,post,lengthservice;    employee *p=list->next;    while(p->num!=num&&p->next!=NULL)        p=p->next;    if(p->num==num){        printf("请输入修改后的姓名 性别 部门 岗位 工龄\n");        scanf("%s%d%d%d%d",name,&sex,&department,&post,&lengthservice);        strcpy(p->name,name);        p->sex=sex;        p->department=department;        p->post=post;        p->lengthservice=lengthservice;}    else printf("职工号超出范围");}void changesalary(employee *list,int num)//改变工资数据{    int hour,hoursalary,sales,basicsalary;    employee *p=list->next;    while(p->num!=num)        p=p->next;    if(p->num==num){        printf("请输入修改后的工作时间 小时工资 销售额 底薪 \n");        scanf("%d%d%d%d",&hour,&hoursalary,&sales,&basicsalary);        p->hour=hour;        p->hoursalary=hoursalary;        p->sales=sales;        p->basicsalary=basicsalary;}    else printf("职工号超出范围");}void queryAll(employee *list)//分页查询所有信息{    employee *p,*page[100];    int n,i,top=0,flag=0,max;    p=list->next;    while(p!=NULL)    {        page[++top]=p;        i=1;        while(i<=10)        {            i++;            p=p->next;            if(p==NULL)break;        }    }    max=top;    top=0;    p=page[++top];    printf("工号 姓名 性别 部门 岗位 工龄 工时 时薪 销售额 底薪 工资\n");    while(1)    {        i=1;        while(i<=10)        {            i++;            printf("%-5d%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-7d%-5d%-5d\n",p->num,p->name,p->sex,p->department,p->post,p->lengthservice,p->hour,p->hoursalary,p->sales,p->basicsalary,p->salary);            p=p->next;            if(p==NULL)break;        }        begin:printf("当前页码%d   首页->1  上一页->2  下一页->3  尾页->4  退出->0\n",top);        scanf("%d",&n);         if(n==0)break;        else if(n==1)top=1,p=page[1];        else if(n==2){            if(top==1){                printf("当前已经是第一页\n");                goto begin;}            else p=page[--top];}        else if(n==3){            if(top==max){                printf("当前已经是最后一页\n");                goto begin;}            else p=page[++top];}        else if(n==4)top=max,p=page[max];        else goto begin;    }}void querydepart(employee *list,int num)//输出该部门全部员工信息{    employee *p=list->next;    printf("%d部门的全部员工信息为:\n",num);    printf("工号 姓名 性别 部门 岗位 工龄 工时 时薪 销售额 底薪 工资\n");    while(p!=NULL)    {        if(p->department==num)            printf("%-5d%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-7d%-5d%-5d\n",p->num,p->name,p->sex,p->department,p->post,p->lengthservice,p->hour,p->hoursalary,p->sales,p->basicsalary,p->salary);        p=p->next;    }}void querypost(employee *list)//分类显示四个岗位的员工信息{    employee *p;    int i=0;    while(i<4)    {        switch(i){        case 0:printf("经理岗位的信息为(若为空则无):\n");break;        case 1:printf("技术员岗位的信息为(若为空则无):\n");break;        case 2:printf("销售员岗位的信息为(若为空则无):\n");break;        case 3:printf("销售经理岗位的信息为(若为空则无):\n");break;        }        p=list->next;        i++;        while(p!=NULL)        {            if(p->post==i)                printf("%d %s %d %d %d %d %d %d %d %d %d\n",p->num,p->name,p->sex,p->department,p->post,p->lengthservice,p->hour,p->hoursalary,p->sales,p->basicsalary,p->salary);            p=p->next;        }    }}void querynum(employee *list,int num)//工号查询个人全部信息{    employee *p;    p=list->next;    while(p!=NULL)    {        if(p->num==num)            break;        p=p->next;    }    if(p->num==num){        printf("工号 姓名 性别 部门 岗位 工龄 工时 时薪 销售额 底薪 工资\n");        printf("%-5d%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-7d%-5d%-5d\n",p->num,p->name,p->sex,p->department,p->post,p->lengthservice,p->hour,p->hoursalary,p->sales,p->basicsalary,p->salary);}    else printf("工号超出范围");}void queryname(employee *list,char name[20])//用姓名查询数据{    employee *p;    p=list->next;    while(p!=NULL)    {        if(strcmp(p->name,name)==0)            break;        p=p->next;    }    if(strcmp(p->name,name)==0){        printf("工号 姓名 性别 部门 岗位 工龄 工时 时薪 销售额 底薪 工资\n");        printf("%-5d%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-7d%-5d%-5d\n",p->num,p->name,p->sex,p->department,p->post,p->lengthservice,p->hour,p->hoursalary,p->sales,p->basicsalary,p->salary);}    else printf("该姓名不存在");}void Statistics(employee *list){    employee *p=list->next,*q=list->next,*max=list->next,*k;   //p,q作为循环指针,max指针指向最大的    employee *headis=NULL;                      //用来保存部门的信息    employee *Max,*Min;                       //最大和最小值的成员    int i=0;                            //计算部门的人数;    int sum=0,avar=0;                  //总值,平均值    int department;             //用来接收想要统计的部门    printf("请输入你想要统计的部门:\n");    scanf("%d",&department);     //提取所要统计的部门的成员    while(p)     {          if(p->num==-1)         {             p=p->next;             continue;                      }         if(department==p->department)         {            q=(employee *)malloc(sizeof(employee));            *q=*p;            q->next=NULL;            if(!headis)              headis=q;                          else             k->next=q;            k=q;             }         p=p->next;      }     //计算最大、最小和平均值        p=headis;        q=headis;        Max=headis;        Min=headis;        while(p)        {            if(p->num==-1)         {              p=p->next;             continue;                     }            if(p->salary>Max->salary)                Max=p;            else if(p->salary<Min->salary)                Min=p;            sum+=p->salary ;          p=p->next;          i++;         }         avar=sum/i;        printf("部门:%d\n",department);        printf("平均工资:%d\n",avar);        printf("最低工资:%d\n",Min->salary);        printf("最高工资:%d\n",Max->salary);}void Statistics2(employee *list){     employee *p=list->next,*q=list->next,*max=list->next,*k;   //p,q作为循环指针,max指针指向最大的    employee *headis=NULL;                      //用来保存部门的信息    int j=0,i=0;                            //用j来计算人数,i计算工资大于平均工资的人数    int sum=0,avar=0;                      //平均值    int department;             //用来接收想要统计的部门    printf("请输入你想要统计的部门:\n");    scanf("%d",&department);     //提取所要统计的部门的成员    while(p!=NULL)     {          if(p->num==-1)         {              p=p->next;             continue;                     }         if(department==p->department)         {             j++;            q=(employee*)malloc(sizeof(employee));            *q=*p;            q->next=NULL;            if(!headis)              headis=q;            else             k->next=q;           k=q;         }         p=p->next;      }     //计算最大、最小和平均值        p=headis;        q=headis;                while(p!=NULL)        {            if(p->num==-1)         {              p=p->next;             continue;                      }            sum+=p->salary ;            p=p->next;        }        avar=sum/j;         p=q;        headis=0;    //提取超过平均工资的部门的成员    while(p!=NULL)     {          if(p->num==-1)         {              p=p->next;             continue;                     }         if((p->salary)>avar)         {              i++;            q=(employee *)malloc(sizeof(employee));            *q=*p;            q->next=NULL;            if(!headis)              headis=q;                          else             k->next=q;            k=q;             }         p=p->next;      }         p=headis;        printf("部门:%d\n",department);        printf("超出平均工资的人数为:%d\n",i);        if(i!=0){        printf("这些成员的信息如下:\n");        printf("工号  工时  时薪  销售额  底薪  工资\n");       while(p!=NULL)      {          if(p->num==-1)         {              p=p->next;             continue;         }          printf("%-6d%-6d%-6d%-8d%-6d%-6d\n",p->num,p->hour,p->hoursalary,p->sales,p->basicsalary,p->salary);             p=p->next ;       }}}void Statistics3(employee *list){    employee *Max,*Min;                       //指向最大和最小值的成员    employee*p=list->next;                       //p作为循环指针    Max=list->next;    Min=list->next;    while(p)    {    if(p->num==-1)         {              p=p->next;             continue;                     }    if(p->salary >Max->salary )        Max=p;    if(p->salary <Min->salary)        Min=p;     p=p->next;        }     p=Min;    printf("在所有员工中:");    printf("最低工资的员工信息:\n");    printf("工号  工时  时薪  销售额  底薪  工资\n");    printf("%-6d%-6d%-6d%-8d%-6d%-6d\n",p->num,p->hour,p->hoursalary,p->sales,p->basicsalary,p->salary);    p=Max;    printf("最高工资的员工信息:\n");    printf("工号  工时  时薪  销售额  底薪  工资\n");    printf("%-6d%-6d%-6d%-8d%-6d%-6d\n",p->num,p->hour,p->hoursalary,p->sales,p->basicsalary,p->salary); }void Statistics4(employee *list){    employee *p=list->next,*q=list->next,*k;             //p,q作为循环指针    employee *headis=0;                      //用来保存工资超过平均工资的成员    int i=0;                          //用i来计算人数    double sum=0,avar=0;              //总值,平均值     //求平均值    while(p)    {        if(p->num==-1)         {             p=p->next;             continue;         }      i++;      sum+=p->salary ;      p=p->next;    }    avar=sum/i;     //提取出超过平均工资的成员,并且计算人数    i=0;    p=list;    while(p)    {        if(p->num==-1)         {             p=p->next;             continue;                      }    if(p->salary >avar)      {         i++;          q=(employee *)malloc(sizeof(employee));            *q=*p;            q->next=NULL;            if(!headis)              headis=q;                          else             k->next=q;            k=q;           }        p=p->next;    }    p=headis;    printf("超出平均工资的人数:%d\n",i);    printf("工号  工时  时薪  销售额  底薪  工资\n");    while(p)    {        if(p->num==-1)         {             p=p->next;             continue;         }    printf("%-6d%-6d%-6d%-8d%-6d%-6d\n",p->num,p->hour,p->hoursalary,p->sales,p->basicsalary,p->salary);    p=p->next;    }}void DecendOrder(employee *list){    employee *p,*q,*a,*b,*s;    int j=0;    p=list->next;    q=p->next;    a=list;    b=a->next;    while(q!=NULL)    {        a=list;        b=a->next;        j=0;        while(a!=p)        {            if(q->salary>b->salary)            {                p->next=q->next;                q->next=b;                a->next=q;                j=1;                break;            }            a=b;            b=b->next;        }        if(j==1)            q=p->next;        else{            p=q;            q=q->next;}    }    s=list->next;    while(s!=NULL){        printf("工号 姓名 性别 部门 岗位 工龄 工时 时薪 销售额 底薪 工资\n");        printf("%-5d%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-7d%-5d%-5d\n",s->num,s->name,s->sex,s->department,s->post,s->lengthservice,s->hour,s->hoursalary,s->sales,s->basicsalary,s->salary);        s=s->next;    }}void DecendOrder2(employee *list){    employee *p,*q,*a,*b,*s,*z,*x=NULL,*v,*head;    int j=0,post;    printf("请输入岗位\n");    scanf("%d",&post);    p=list->next;    head=(employee *)malloc(sizeof(employee));    while(p!=NULL)    {        if(p->post==post){            z=(employee *)malloc(sizeof(employee));            *z=*p;            z->next=NULL;            if(x==NULL)                x=z;            else                v->next=z;            v=z;}        p=p->next;    }    head->next=x;    p=x;    q=p->next;    while(q!=NULL)    {        a=head;        b=a->next;        j=0;        while(a!=p)        {            if(q->salary>b->salary)            {                p->next=q->next;                q->next=b;                a->next=q;                j=1;                break;            }            a=b;            b=b->next;        }        if(j==1)            q=p->next;        else{            p=q;            q=q->next;}    }    s=head->next;    while(s!=NULL){        printf("工号 姓名 性别 部门 岗位 工龄 工时 时薪 销售额 底薪 工资\n");        printf("%-5d%-5s%-5d%-5d%-5d%-5d%-5d%-5d%-7d%-5d%-5d\n",s->num,s->name,s->sex,s->department,s->post,s->lengthservice,s->hour,s->hoursalary,s->sales,s->basicsalary,s->salary);        s=s->next;    }}

看完了这篇文章,相信你对“如何使用C语言实现简单员工工资管理系统”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网其他教程频道,感谢各位的阅读!

--结束END--

本文标题: 如何使用C语言实现简单员工工资管理系统

本文链接: https://www.lsjlt.com/news/325377.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用C语言实现简单员工工资管理系统
    小编给大家分享一下如何使用C语言实现简单员工工资管理系统,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下(一)公司现状分析公司主要有经理、技术员、销售员、销售经理4类岗位人员,他们都有基本信息:职工号、姓名、性别...
    99+
    2023-06-29
  • C语言实现简单员工工资管理系统
    本文实例为大家分享了C语言实现简单员工工资管理系统的具体代码,供大家参考,具体内容如下 (一)公司现状分析 1、公司主要有经理、技术员、销售员、销售经理4类岗位人员,他们都有基本信息...
    99+
    2024-04-02
  • C语言实现员工工资管理系统
    本文实例为大家分享了C语言实现员工工资管理系统的具体代码,供大家参考,具体内容如下 看点: 1. 枚举类型的使用(录入与输出) 2. 文件的使用:用文件来存储员工信息,开始运行程序时...
    99+
    2024-04-02
  • C语言怎么实现员工工资管理系统
    这篇文章主要为大家展示了“C语言怎么实现员工工资管理系统”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言怎么实现员工工资管理系统”这篇文章吧。具体内容如下看点:1. 枚举类型的使用(录入与输...
    99+
    2023-06-29
  • C语言实现职工工资管理系统
    本文实例为大家分享了C语言实现职工工资管理系统的具体代码,供大家参考,具体内容如下 设计要求: 模拟并设计一个企业的职工工资管理系统,职工信息包括工号、姓名、基本工资、津贴,设职工人...
    99+
    2024-04-02
  • Java实现简单员工管理系统
    本文实例为大家分享了Java实现简单员工管理系统的具体代码,供大家参考,具体内容如下 代码如下: import java.util.*; public class Demo {   ...
    99+
    2024-04-02
  • java实现员工工资管理系统
    本文实例为大家分享了java实现员工工资管理系统的具体代码,供大家参考,具体内容如下 一、题目要求 设计员工工资管理系统,实现以下功能: (1)输入5名员工姓名、工号、月工资;(2)...
    99+
    2024-04-02
  • 如何用C语言链表实现工资管理系统
    本篇内容介绍了“如何用C语言链表实现工资管理系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!题目:建立工资管理系统,对职工工资的相关信息进...
    99+
    2023-06-29
  • 怎么用C语言实现职工工资管理系统
    本文小编为大家详细介绍“怎么用C语言实现职工工资管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用C语言实现职工工资管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。设计要求:模拟并设计一个企业的...
    99+
    2023-06-29
  • C语言链表实现工资管理系统
    本文实例为大家分享了C语言链表实现工资管理系统的具体代码,供大家参考,具体内容如下 自己的作业,分享一下,自己为了调试方便,又多加入了一些功能 题目:建立工资管理系统,对职工工资的相...
    99+
    2024-04-02
  • C语言实现简单职工信息管理系统
    本文实例为大家分享了C语言实现职工信息管理系统的具体代码,供大家参考,具体内容如下 代码实现如下: #include <stdio.h>//输入、输出指令 #includ...
    99+
    2024-04-02
  • C语言实现小型工资管理系统
    本文实例为大家分享了C语言实现小型工资管理系统的具体代码,供大家参考,具体内容如下 课程大作业目的 通过该大作业,考察学生分析、解决复杂问题的能力,考察学生编写较大程序的能力,检验和...
    99+
    2024-04-02
  • C++如何实现职工工资管理系统
    本篇内容主要讲解“C++如何实现职工工资管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++如何实现职工工资管理系统”吧!题目 职工工资管理系统功能设计要求 输入记录:将每一个职工的姓名...
    99+
    2023-06-29
  • C++实现职工工资管理系统
    本文实例为大家分享了C++实现职工工资管理系统的具体代码,供大家参考,具体内容如下 main.cpp #include <iostream> #include <v...
    99+
    2024-04-02
  • 怎么用Java实现简单员工管理系统
    这篇文章主要讲解了“怎么用Java实现简单员工管理系统”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Java实现简单员工管理系统”吧!代码如下:import java.uti...
    99+
    2023-06-29
  • C语言实现职工工资管理系统的示例代码
    目录一、需求分析二、项目环境2.1、项目创建过程2.2、向项目添加头文件与源文件三、职工工资管理系统模块功能3.1、系统总体设计框图3.2、系统模块总体设计3.3、设计系统菜单功能3...
    99+
    2024-04-02
  • C语言实现企业员工管理系统开发
    本文实例为大家分享了C语言实现企业员工管理系统的具体代码,供大家参考,具体内容如下 程序介绍 系统介绍 企业员工信息管理系统主要是对企业员工的基本信息进行增、删、改、查的相关操作,以...
    99+
    2022-11-13
    C语言企业员工管理系统 C语言企业员工系统 C语言员工管理系统
  • 如何使用C++编写一个简单的员工考勤管理系统?
    如何使用C++编写一个简单的员工考勤管理系统?概述:员工考勤管理是企业管理中非常重要的一环,它能够帮助企业实时记录和统计员工的考勤情况,提高工作效率和管理水平。本文将介绍如何使用C++语言编写一个简单的员工考勤管理系统,帮助读者了解基本的编...
    99+
    2023-11-02
    C++ 员工 考勤
  • C语言如何实现简单酒店管理系统
    今天小编给大家分享一下C语言如何实现简单酒店管理系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、问题描述系统应具有以下...
    99+
    2023-06-29
  • mongodb如何实现员工管理系统
    要实现一个员工管理系统,可以使用MongoDB作为数据库存储员工的信息。以下是一个简单的示例:1. 创建一个MongoDB数据库并连...
    99+
    2023-08-30
    mongodb
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作