C-企业员工管理系统

C-企业员工管理系统

VS2017

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
#pragma warning(disable:4996)

typedef struct Company
{
    char id[10]; //id
    char job[10]; //职务
    char name[10]; //姓名
    char sex[3]; //性别
    int age; //年龄
    char edu[3]; //学历
    double wage; //工资
    char tel[10]; //电话
    char phone[13]; //手机
    char qq[20]; //QQ
    char address[30]; //住址
    struct Company *next;
}company;

#define prt printf("编 号      职 务      姓 名      性 别      年 龄      学 历      工 资        电 话          手 机        QQ       住 址      \n");
#define prt1 printf("%4s%12s%11s%10s%12d%11s%13.2lf%13s%13s%13s%10s\n", p->id, p->job, p->name, p->sex, p->age, p->edu, p->wage, p->tel, p->phone, p->qq, p->address);

//全局变量
int C_staff; //员工总数
double C_wage = 0; //员工工资总数
int m_staff; //男员工
int w_staff; //女员工
company *C_mphead = NULL; //链表头

void C_creat(company **p); //创建链表
void C_password(void); //登陆密码
void C_main(void); //入口
void C_input(company *p); //输入员工信息
void C_search(company *pp); //查询员工信息
void C_prt(company *p); //显示员工信息
void C_modify(company *pp); //修改员工信息
void C_delete(company *pp); //删除员工信息
void C_sta(void); //统计员工信息
void C_rstpwd(void); //重置系统密码
void C_pprt(company *p); //打印
void C_destory(company *pp); //销毁链表

int main(void)
{
    C_password();
    system("pause");
    return 0;
}

//打印
void C_pprt(company *p)
{
    if (p != NULL)
    {
        prt;
        prt1;
        printf("\n");
    }
}

//登陆密码
void C_password(void)
{
    char C_pwd1[9];
    char C_pwd2[9];
    int C_n = 0;
    FILE *pf = NULL;
    if (!(pf = fopen("pwd.txt", "r+b")))
    {
        printf("读取文件失败!\n");
        getchar();
        exit(1);
    }
    fgetc(pf);
    if (feof(pf))
    {
        rst1:
        rewind(pf);
        printf("请创建密码:");
        scanf("%s", C_pwd1);
        getchar();
        printf("请确认密码:");
        scanf("%s", C_pwd2);
        getchar();
        if (strcmp(C_pwd1, C_pwd2) == 0)
        {
            fwrite(C_pwd1, sizeof(char) * 9, 1, pf);
            printf("密码创建成功!请重新打开系统!");
            getchar();
            exit(1);
        }
        else
        {
            printf("两次密码输入有误,请重新输入!\n");
            goto rst1;
        }
    }
    else
    {
        rst2:
        rewind(pf);
        printf("请输入登陆密码:");
        scanf("%s", C_pwd1);
        getchar();
        fflush(stdin);
        fread(C_pwd2, sizeof(char) * 9, 1, pf);
        if (strcmp(C_pwd1, C_pwd2) == 0)
        {
            C_creat(&C_mphead);
            system("cls");
            C_main();
            getchar();
        }
        else
        {
            C_n++;
            if (C_n == 3)
            {
                printf("密码错误三次,按任意键退出!");
                getchar();
                exit(1);
            }
            printf("密码输入有误!请重新输入!\n");
            goto rst2;
        }
    }
    fclose(pf);
    pf = NULL;
}

//入口
void C_main(void)
{
    int i;
    char key;
    printf("                           企业员工管理系统\n");
    printf("                   ");
    for (i = 0; i < 32; i++)
    {
        printf("*");
    }
    printf("\n");
    printf("                   |       1.输入员工信息         |\n\n");
    printf("                   |       2.查询员工信息         |\n\n");
    printf("                   |       3.显示员工信息         |\n\n");
    printf("                   |       4.修改员工信息         |\n\n");
    printf("                   |       5.删除员工信息         |\n\n");
    printf("                   |       6.统计员工信息         |\n\n");
    printf("                   |       7.重置系统密码         |\n\n");
    printf("                   |       0.退出系统             |\n");
    printf("                   ");
    for (i = 0; i < 32; i++)
    {
        printf("*");
    }
    printf("\n\n");
    rst:
    printf("请输入选项(输入0退出):");
    scanf("%c", &key);
    getchar();
    fflush(stdin);
    if (key == '0')
    {
        C_destory(C_mphead);
        exit(1);
    }
    switch (key)
    {
    case '1':
        C_input(C_mphead); //输入员工信息
        break;
    case '2':
        C_search(C_mphead); //查询员工信息
        break;
    case '3':
        C_prt(C_mphead); //显示员工信息
        break;
    case '4':
        C_modify(C_mphead); //修改员工信息
        break;
    case '5':
        C_delete(C_mphead); //删除员工信息
        break;
    case '6':
        C_sta(); //统计员工信息
        break;
    case '7':
        C_rstpwd(); //重置系统密码
        break;
    case '0':
        C_destory(C_mphead);
        exit(1);
        break;
    default:
        printf("输入有误!按任意键重新输入!\n");
        getchar();
        goto rst;
        break;
    }   

}

//创建链表
void C_creat(company **p)
{
    *p = (company *)malloc(sizeof(company));
    (*p)->next = NULL;
}

//输入员工系统
void C_input(company *p)
{
    company *C_phead = NULL;
    company *C_pp = NULL;
    C_phead = p;
    if (p->next = NULL)
    {
        while (1)
        {
            C_pp = (company *)malloc(sizeof(company));
            printf("请输入编号:\n");
            scanf("%s", C_pp->id);
            getchar();
            printf("请输入职务:\n");
            scanf("%s", C_pp->job);
            getchar();
            printf("请输入姓名:\n");
            scanf("%s", C_pp->name);
            getchar();
            printf("请输入性别:\n");
            scanf("%s", C_pp->sex);
            getchar();
            printf("请输入年龄:\n");
            scanf("%d", &C_pp->age);
            getchar();
            printf("请输入学历:\n");
            scanf("%s", C_pp->edu);
            getchar();
            printf("请输入工资:\n");
            scanf("%lf", &C_pp->wage);
            getchar();
            printf("请输入电话:\n");
            scanf("%s", C_pp->tel);
            getchar();
            printf("请输入手机:\n");
            scanf("%s", C_pp->phone);
            getchar();
            printf("请输入QQ:\n");
            scanf("%s", C_pp->qq);
            getchar();
            printf("请输入地址:\n");
            scanf("%s", C_pp->address);
            getchar();
            fflush(stdin);
            C_pp->next = NULL;
            C_phead->next = C_pp;
            C_phead = C_pp;
            system("cls");
            C_pprt(C_pp);
            C_staff++;
            if (strcmp(C_pp->sex, "男") == 0)
            {
                m_staff++;
            }
            else
            {
                w_staff++;
            }
            C_wage += C_pp->wage;
            printf("输入成功!按任意键继续输入,按0返回主菜单!\n");
            if (getch() == '0')
            {
                system("cls");
                C_main();
            }
            system("cls");
        }
    }
    else
    {
        while (C_phead->next != NULL)
        {
            C_phead = C_phead->next;
        }
        while (1)
        {
            C_pp = (company *)malloc(sizeof(company));
            printf("请输入编号:\n");
            scanf("%s", C_pp->id);
            getchar();
            printf("请输入职务:\n");
            scanf("%s", C_pp->job);
            getchar();
            printf("请输入姓名:\n");
            scanf("%s", C_pp->name);
            getchar();
            printf("请输入性别:\n");
            scanf("%s", C_pp->sex);
            getchar();
            printf("请输入年龄:\n");
            scanf("%d", &C_pp->age);
            getchar();
            printf("请输入学历:\n");
            scanf("%s", C_pp->edu);
            getchar();
            printf("请输入工资:\n");
            scanf("%lf", &C_pp->wage);
            getchar();
            printf("请输入电话:\n");
            scanf("%s", C_pp->tel);
            getchar();
            printf("请输入手机:\n");
            scanf("%s", C_pp->phone);
            getchar();
            printf("请输入QQ:\n");
            scanf("%s", C_pp->qq);
            getchar();
            printf("请输入地址:\n");
            scanf("%s", C_pp->address);
            getchar();
            fflush(stdin);
            C_pp->next = NULL;
            C_phead->next = C_pp;
            C_phead = C_pp;
            system("cls");
            C_pprt(C_pp);
            C_staff++;
            if (strcmp(C_pp->sex, "男") == 0)
            {
                m_staff++;
            }
            else
            {
                w_staff++;
            }
            C_wage += C_pp->wage;
            printf("输入成功!按任意键继续输入,按0返回主菜单!\n");
            if (getch() == '0')
            {
                system("cls");
                C_main();
            }
            system("cls");
        }
    }
}

//重置系统密码
void C_rstpwd(void)
{
    FILE *pf = NULL;
    char C_pwd1[9];
    char C_pwd2[9];
    if (!(pf = fopen("pwd.txt", "wb")))
    {
        printf("打开文件失败!按任意键退出!\n");
        getchar();
        exit(1);
    }
    rst1:
    printf("请输入新的密码:");
    scanf("%s", C_pwd1);
    getchar();
    printf("请再次确认新密码:");
    scanf("%s", C_pwd2);
    getchar();
    if (strcmp(C_pwd1, C_pwd2) == 0)
    {
        fwrite(C_pwd1, sizeof(char) * 9, 1, pf);
        printf("密码重置成功!请重新打开系统!");
        getchar();
        exit(1);
    }
    else
    {
        printf("两次密码输入有误,请重新输入!\n");
        goto rst1;
    }
    fclose(pf);
    pf = NULL;
}

//显示员工信息
void C_prt(company *pp)
{
    company *p = pp->next;
    prt;
    while (p != NULL)
    {
        prt1;
        p = p->next;
    }
    printf("显示完毕!按任意键返回主菜单!\n");
    getch();
    system("cls");
    C_main();
}

//查询员工信息
void C_search(company *pp)
{
    company *p = NULL;
    p = pp->next;
    char num;
    char id[10];
    char name[10];
    char job[10];
    printf("1>按编号查询\n");
    printf("2>按姓名查询\n");
    printf("3>按职位查询\n");
    printf("请选择查询方式:");
    scanf("%c", &num);
    getchar();
    if (num == '1')
    {
        printf("请输入需要查询的编号:");
        scanf("%s", id);
        getchar();
        prt;
        while (p != NULL)
        {
            if (strcmp(p->id, id) == 0)
            {
                prt1;
            }
            p = p->next;
        }
        printf("查询完毕!按任意键返回主菜单!\n");
        getch();
        system("cls");
        C_main();
    }
    else if (num == '2')
    {
        printf("请输入需要查询的姓名:");
        scanf("%s", name);
        getchar();
        prt;
        while (p != NULL)
        {
            if (strcmp(p->name, name) == 0)
            {
                prt1;
            }
            p = p->next;
        }
        printf("查询完毕!按任意键返回主菜单!\n");
        getch();
        system("cls");
        C_main();
    }
    else if (num == '3')
    {
        printf("请输入需要查询的职务:");
        scanf("%s", job);
        getchar();
        prt;
        while (p != NULL)
        {
            if (strcmp(p->job, job) == 0)
            {
                prt1;
            }
            p = p->next;
        }
        printf("查询完毕!按任意键返回主菜单!\n");
        getch();
        system("cls");
        C_main();
    }
}

//统计员工信息
void C_sta(void)
{
    printf("员工总数: %d",C_staff);
    printf("\n\n");
    printf("男员工数: %d", m_staff);
    printf("\n\n");
    printf("女员工数: %d", w_staff);
    printf("\n\n");
    printf("总工资数: %.2lf", C_wage);
    printf("\n\n");
    printf("统计完毕!按任意键返回主菜单!\n");
    getch();
    system("cls");
    C_main();
}

//删除员工信息
void C_delete(company *pp)
{
    company *p = NULL;
    company *pt = NULL;
    company *ptemp = NULL;
    char num;
    char id[10];
    printf("1>按编号删除\n");
    printf("2>删除全部\n");
    scanf("%c", &num);
    getchar();
    p = pp;
    if (num == '1')
    {
        printf("请输入需要删除的编号:");
        scanf("%s", id);
        getchar();
        fflush(stdin);
        while (p->next != NULL)
        {
            if (strcmp(p->next->id, id) == 0)
            {
                ptemp = p->next;
                p->next = ptemp->next;
                free(ptemp);
                ptemp = NULL;
            }
            else
            {
                p = p->next;
            }
        }
        printf("删除完毕!按任意键返回主菜单!\n");
        getch();
        system("cls");
        C_main();
    }
    else if (num == '2')
    {
        while (p->next != NULL)
        {
            ptemp = p->next;
            p->next = ptemp->next;
            free(ptemp);
            ptemp = NULL;
        }
        printf("删除完毕!按任意键返回主菜单!\n");
        getch();
        system("cls");
        C_main();
    }
}

//修改员工信息
void C_modify(company *pp)
{
    company *p = NULL;
    char id[10];
    printf("请输入需要修改的编号:");
    scanf("%s", id);
    getchar();
    p = pp;
    while (p->next != NULL)
    {
        if (strcmp(p->next->id, id) == 0)
        {
            printf("请输入编号:\n");
            scanf("%s", p->next->id);
            getchar();
            printf("请输入职务:\n");
            scanf("%s", p->next->job);
            getchar();
            printf("请输入姓名:\n");
            scanf("%s", p->next->name);
            getchar();
            printf("请输入性别:\n");
            scanf("%s", p->next->sex);
            getchar();
            printf("请输入年龄:\n");
            scanf("%d", &p->next->age);
            getchar();
            printf("请输入学历:\n");
            scanf("%s", p->next->edu);
            getchar();
            printf("请输入工资:\n");
            scanf("%lf", &p->next->wage);
            getchar();
            printf("请输入电话:\n");
            scanf("%s", p->next->tel);
            getchar();
            printf("请输入手机:\n");
            scanf("%s", p->next->phone);
            getchar();
            printf("请输入QQ:\n");
            scanf("%s", p->next->qq);
            getchar();
            printf("请输入地址:\n");
            scanf("%s", p->next->address);
            getchar();
            fflush(stdin);
        }
        p = p->next;
    }
    printf("修改完毕!按任意键返回主菜单!\n");
    getch();
    system("cls");
    C_main();
}

//销毁
void C_destory(company *pp)
{
    company *p = pp;
    company *ptemp = NULL;
    while (p->next != NULL)
    {
        ptemp = p->next;
        p->next = ptemp->next;
        free(ptemp);
        ptemp = NULL;
    }
    free(p);
    p = NULL;
}

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

完美教父

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值