VC6.0 c语言 编写一个职工管理程序,需要完成一下功能

img

具体的内容都在图里,大一刚学,目前只学到指针函数,麻烦各位老哥不要用超出我理解范围的函数,我真的会看不懂

根据你的要求现写的代码,望采纳,多谢。
运行截图:

img

代码:

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
typedef struct _employee 
{
    char name[20];   //员工姓名
    char phone[12];  //员工电话
    char addr[20];   //住址
    char cardId[20]; //身份证号
    char department[20]; //部门
    char id[10];     //工号
    int workDay;     //工作天数
    char jiguan[20]; //籍贯
    float workAge;     //工龄
    char isMarrid;    //是否已婚
    int age; //年龄
    char sex;  //性别
    int child;  //是否生育,0表示未生育,>0表示孩子个数
    char grade[20]; //学历
    int isIn; //公司文化活动是否签到
    float base; //基础工资
    float money; //薪资
    float sale; //销售金额
    float total; //总计
}Employee;

//显示内容
const char* g_title[] = {"员工姓名","员工电话","住址","身份证号","部门","工号","工作天数","籍贯","工龄","婚姻状况","年龄","性别","生育状况","学历","公司文化活动签到"};

//1.0显示单个员工信息
void showSingle(Employee emp)
{
    printf("员工姓名:%s\n",emp.name);
    printf("员工电话:%s\n",emp.phone);
    printf("住址:%s\n",emp.addr);
    printf("身份证号:%s\n",emp.cardId);
    printf("部门:%s\n",emp.department);
    printf("工号:%s\n",emp.id);
    printf("工作天数:%d\n",emp.workDay);
    printf("工龄:%.1f\n",emp.workAge);
    printf("婚姻状况:");
    if(emp.isMarrid == 'y' || emp.isMarrid == 'Y')
        printf("已婚\n");
    else
        printf("未婚\n");
    printf("年龄:%d\n",emp.age);
    printf("性别:");
    if(emp.sex=='F' || emp.sex =='f')
        printf("女\n");
    else
        printf("男\n");
    printf("剩余状况:");
    if(emp.child <=0)
        printf("无\n");
    else
        printf("%d个子女\n",emp.child);
    printf("学历:%s\n",emp.grade);
    printf("公司文化活动签到:");
    if(emp.isIn == 1)
        printf("是\n");
    else if(emp.isIn == 0)
        printf("否,但已请假\n");
    else
        printf("否,未请假\n");

    //下面的信息题目没有要求显示,可以根据需要删除
    printf("基础工资:%.2f\n",emp.base);
    printf("销售金额:%.2f\n",emp.sale);

}
//1.显示所有员工信息
void showAll(char* name,Employee emp[],int n)
{
    int i = 0,j=0;
    printf("单位名称:%s \t  总人数:%d\n",name,n);
    printf("------------------------------------------\n");
    for(i=0;i<n;i++)
    {
        showSingle(emp[i]);
    }
    printf("------------------------------------------\n");
}

//2查询
void search(Employee emp[],int n)
{
    int op;
    int i = 0;
    char buf[20]={0};
    printf("1.根据工号查询\n");
    printf("2.根据姓名查询\n");
    printf("3.根据电话查询\n");
    printf("4.返回上一层\n");
    while(1)
    {
        scanf("%d",&op);
        if(op >=1 && op <= 4)
            break;
    }
    switch(op)
    {
    case 1: printf("请输入工号:");scanf("%s",buf);break;
    case 2: printf("请输入姓名:");scanf("%s",buf);break;
    case 3: printf("请输入电话:");scanf("%s",buf);break;
    case 4: return;
    }
    for(i=0;i<n;i++)
    {
        if(op == 1 && strcmp(emp[i].id,buf)==0)
        {
            showSingle(emp[i]);
            break;
        }else if(op == 2 && strcmp(emp[i].name,buf)==0)
        {
            showSingle(emp[i]);
            break;
        }else if(op == 3 && strcmp(emp[i].phone,buf)==0)
        {
            showSingle(emp[i]);
            break;
        }
    }
    if(i == n)
        printf("未找到符合条件的员工!!\n");
}

//3筛选
void select(Employee emp[],int n)
{
    int i,op;
    char buf[20]={0},tmp;
    int flag = 0;
    int age;
    printf("1.通过部门筛选\n");
    printf("2.通过性别筛选\n");
    printf("3.通过年龄筛选\n");
    printf("4.通过婚姻状况筛选\n");
    printf("5.通过请假考勤\n");
    printf("6.通过学历筛选\n");
    printf("7.通过籍贯筛选\n");
    printf("8.返回上一层\n");
    while(1)
    {
        scanf("%d",&op);
        if(op >=1 && op <=8)
            break;
    }
    switch(op)
    {
    case 1:
        printf("请输入部门:");
        scanf("%s",buf);
        for(i=0;i<n;i++)
        {
            if(strcmp(buf,emp[i].department)==0)
            {
                flag=1;
                showSingle(emp[i]);
            }
        }
        if(flag == 0)
            printf("未找到符合条件的员工!!\n");
        break;
    case 2:
        printf("请输入性别:");
        rewind(stdin); //或者 fflush(stdin);
        buf[0] = getchar();
        buf[0]=toupper(buf[0]);
        for(i=0;i<n;i++)
        {
            tmp = toupper(emp[i].sex);
            if(buf[0] == tmp)
            {
                showSingle(emp[i]);
                flag = 1;
            }
        }
        if(flag == 0)
            printf("未找到符合条件的员工!!\n");
        break;
    case 3:
        printf("请输入年龄:");
        scanf("%d",&age);
        for(i=0;i<n;i++)
        {
            if(emp[i].age == age)
            {
                showSingle(emp[i]);
                flag = 1;
            }
        }
        if(flag == 0)
            printf("未找到符合条件的员工!!\n");
        break;
    case 4:
        printf("请输入婚姻状况(Y:已婚   N:未婚 ):  ");
        rewind(stdin);
        buf[0]= getchar();
        buf[0] = toupper(buf[0]);
        for(i=0;i<n;i++)
        {
            tmp = toupper(emp[i].isMarrid);
            if(buf[0] == tmp)
            {
                showSingle(emp[i]);
                flag = 1;
            }
        }
        if(flag == 0)
            printf("未找到符合条件的员工!!\n");
        break;
    case 5:
        printf("请输入筛选条件(1.请假  2.未请假\n): ");
        scanf("%d",&age);
        for(i=0;i<n;i++)
        {
            if(emp[i].workDay < 22) //这里通过工作天数来判断
            {
                showSingle(emp[i]);
                flag = 1;
            }
        }
        if(flag == 0)
            printf("未找到符合条件的员工!!\n");
        break;
    case 6:
        printf("请输入学历:");
        scanf("%s",buf);
        for(i=0;i<n;i++)
        {
            if(strcmp(buf,emp[i].grade) == 0)
            {
                showSingle(emp[i]);
                flag = 1;
            }
        }
        if(flag == 0)
            printf("未找到符合条件的员工!!\n");
        break;
    case 7:
        printf("请输入籍贯:");
        scanf("%s",buf);
        for(i=0;i<n;i++)
        {
            if(strcmp(buf,emp[i].jiguan) == 0)
            {
                showSingle(emp[i]);
                flag = 1;
            }
        }
        if(flag == 0)
            printf("未找到符合条件的员工!!\n");
        break;
    case 8:
        return;
    }
}
//4.1插入新员工
int insert(Employee emp[],int n)
{
    printf("更新该员工信息:\n");
    printf("请输入员工姓名:");scanf("%s",emp[n].name);
    printf("请输入员工电话:");scanf("%s",emp[n].phone);
    printf("请输入住址:");scanf("%s",emp[n].addr);
    printf("请输入身份证号:");scanf("%s",emp[n].cardId);
    printf("请输入部门:");scanf("%s",emp[n].department);
    printf("请输入工号:");scanf("%s",emp[n].id); //也可以不改工号
    printf("请输入工作天数:");scanf("%d",&emp[n].workDay);
    printf("请输入籍贯:");scanf("%s",emp[n].jiguan);
    printf("请输入工龄:");scanf("%f",&emp[n].workAge);
    printf("请输入婚姻状况(Y:已婚  N:未婚):"); rewind(stdin); emp[n].isMarrid = getchar();
    printf("请输入年龄:");scanf("%d",&emp[n].age);
    printf("请输入性别(F:女  M:男):");rewind(stdin); emp[n].sex = getchar();
    printf("请输入剩余情况:");scanf("%d",&emp[n].child);
    printf("请输入学历:");scanf("%s",emp[n].grade);
    printf("公司文化活动签到(1.签到  0.未参加但请假  -1.未参加未请假):");scanf("%d",&emp[n].isIn);
    printf("请输入员工基础薪资:");scanf("%f",&emp[n].base);
    printf("请输入销售金额:");scanf("%f",&emp[n].sale);
    printf("新员工信息已插入!\n");
    return (n+1);
}

//4.2删除旧员工信息
int dele(Employee emp[],int n)
{
    char buf[20]={0};
    int i,flag=0,j;
    printf("请输入要删除的员工工号:");
    scanf("%s",buf);
    for(i=0;i<n;i++)
    {
        if(strcmp(buf,emp[i].id)==0)
        {
            flag = 1;
            for(j=i;j<n-1;j++)
                emp[j] = emp[j+1];
            printf("该员工信息已删除!!\n");
            return (n-1);
        }
    }
    if(flag == 0)
        printf("未找到符合条件的员工!!\n");
    return n;
}

//5.计算薪资
void caculate(Employee emp[],int n)
{
    int i=0;
    for(i=0;i<n;i++)
    {
        emp[i].total = emp[i].base/22*emp[i].workDay;
        if(strcmp(emp[i].grade,"专科")==0)
            emp[i].total += 800;
        else if(strcmp(emp[i].grade,"本科")==0)
            emp[i].total += 1000;
        else if(strcmp(emp[i].grade,"研究生")==0)
            emp[i].total += 1200;
        //生育奖
        if(emp[i].child == 1)
            emp[i].total += 500;
        else if(emp[i].child == 2)
            emp[i].total += 750;
        else if(emp[i].child == 3)
            emp[i].total += 1000;
        //工龄奖
        emp[i].total += emp[i].workAge * 50;

        //提成
        if(emp[i].sale <1000000)
            emp[i].total += emp[i].sale*0.02;
        else if(emp[i].sale < 1000000)
            emp[i].total += emp[i].sale*0.05;
        else
            emp[i].total += emp[i].sale*0.08;

        //公司互动
        if(emp[i].isIn == 1)
            emp[i].total += 150;
        else if(emp[i].isIn == 0)
            emp[i].total += 100;

        //这里只显示了部分信息
        printf("工号:%s  姓名:%s  薪资:%.2f\n",emp[i].id,emp[i].name,emp[i].total);

    }

}

//6.计算每月应缴金额
void jiaona(Employee emp[],int n)
{
    int i;
    float f1,f2;
    for(i=0;i<n;i++)
    {
        printf("工号:%s  姓名:%s  薪资:%.2f  ",emp[i].id,emp[i].name,emp[i].total);
        f1 = emp[i].total * 0.02 + 7; //医保
        f2 = emp[i].total * 0.05; //公积金
        printf("医保缴纳:%.2f  公积金缴纳:%.2f   实发工资:%.2f\n",f1,f2,(emp[i].total-f1-f2));
    }
}

//7.显示销售前3名
void showBef(Employee emp[],int n)
{
    int i,j;
    Employee t;
    //根据销售额排名
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(emp[j].sale < emp[j+1].sale)
            {
                t = emp[j];
                emp[j] = emp[j+1];
                emp[j+1] = t;
            }
        }
    }
    //显示前三名
    for(i=0;i<3;i++)
    {
        printf("工号:%s  姓名:%s  销售额:%.2f\n",emp[i].id,emp[i].name,emp[i].sale);
    }
}

int main()
{
    int op;
    Employee emp[100];
    int n = 0;
    char name[20];
    printf("请输入单位名称:");
    scanf("%s",name);
    while(1)
    {
        system("cls");
        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");
        scanf("%d",&op);
        switch(op)
        {
        case 1:
            n = insert(emp,n);break;
        case 2:
            n = dele(emp,n);break;
        case 3:
            search(emp,n);break;
        case 4:
            select(emp,n);break;
        case 5:
            showAll(name,emp,n);break;
        case 6:
            caculate(emp,n);break;
        case 7:
            jiaona(emp,n);break;
        case 8:
            showBef(emp,n);break;
        case 9:
            break;
        default:
            break;
        }
        system("pause");
    }
}

图片看不清楚,题目需求请写一下

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632