W000103
如果你从不畏惧
2020-06-23 11:48
采纳率: 100%
浏览 386

用C语言开发一个简单的雇员业绩管理系统。

用C语言开发一个简单的雇员业绩管理系统。
【数据结构】
雇员数据文件:工号、姓名、年龄、进入本单位时间、学历、职称、所在部门。员工业绩数据文件:工号、年度、能力业绩、表现业绩、态度评价、业绩总和、综合评价。(其中能力业绩、表现业绩、态度评价按照百分制计算,综合评价是这3项业绩的平均值)
【基本功能】
(1)员工信息管理:输入员工信息保存到数据文件中;删除员工信息;根据工号修改员工的信息。
(2)员工业绩信息管理:按年度输入业绩信息保存到数据文件中,修改某年度业绩信息。
(3)排序功能:按照某年度员工业绩的综合评价从高到低排序。
(4)查询功能:① 按姓名查询的员工信息;② 查询某员工某年度的业绩;③查询综合评价最优的员工。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • u013053075
    人在旅途~ 2020-06-23 13:53
    已采纳

    思路:

    1. 定义出员工信息和员工业绩结构体。
    2. 因为有很多功能,所以需要拆分实现。
    #include <stdio.h>
    #include <string.h>
    
    void StaffInfo(void)
    {
        unsigned char FunNum;
    
        printf("添加员工信息,请输入1 \n");
        printf("删除员工信息,请输入2 \n");
        printf("修改员工信息,请输入3 \n");
        gets(&FunNum);
        switch(FunNum)
        {
            case '1' :
                printf("请输入员工信息?? \n");
                break;
            //实现添加删除和修改员工信息。
        }
    }
    
    int main (void)
    {
        unsigned char unNum;
    
        while(1){
    
            printf("============================\n");
            printf("功能选择: \n");
            printf("员工信息管理,输入1 \n");
            printf("员工业绩信息管理,输入2 \n");
            printf("排序功能,输入3 \n");
            printf("查询功能,输入4 \n");
            gets(&unNum);
    
            switch(unNum)
            {
                case '1' : //员工信息管理
                    printf("进入员工信息管理子系统\n");
                    StaffInfo();                
                    break;
                case '2' : //员工业绩信息管理
                    printf("进入员工业绩信息管理子系统\n");
                    //写员工业绩相关的处理。
                    break;
                case '3' : //排序功能
                    printf("进入排序功能子系统\n");
                    //写排序相关的处理。
                    break;
                case '4' : //查询功能
                    printf("进入查询功能子系统\n");
                    //写查询相关处理。
                    break;
                default:
                    printf("输入错误!!\n");
                    break;
            }
        }
        return 0;
    }
    
    
    点赞 评论
  • dashicaineng
    #include <stdio.h>
    #include <
    stdlib.h>
    #include <string.h>
    #include <conio.h>
    
    
    #define N 2
    int Number = N;
    
    
    
    
    void bc(struct Link *st);
    void Draw(FILE *fp);
    void link(FILE *fp);
    void output(FILE *fp);
    int Search(FILE *fp);
    void input(FILE *fp);
    void add();
    void delbyname();
    void delbyUser();
    void del();
    
    
    
    
    struct Link
    {
    char User[20];
    char Code[20];
    char name[10];
    char sex[10];
    }people[N];
    
    
    int i;
    
    
    void input(FILE *fp)
    {
    
    
    for (i = 0; i < N; i++)
    {
    printf("请输出第%d个人员的信息\n", i + 1);
    printf("输入人员姓名:\t");
    scanf("%s",people[i].name);
    printf("输入人员性别:\t");
    scanf("%s", people[i].sex);
    printf("输入人员账号:\t");
    scanf("%s", people[i].User);
    printf("输入人员密码:\t");
    scanf("%s", people[i].Code);
    fwrite(&people[i], sizeof(struct Link), 1, fp);
    }
    fclose(fp);
    }
    int Search(FILE *fp)
    {
    char test_User[20];
    char test_Code[20];
    printf("请输入账号:\t");
    scanf("%s", test_User);
    printf("请输入密码:\t");
    scanf("%s", test_Code);
    for (i = 0; i < Number; i++)
    {
    if (strcmp(test_User, people[i].User) == 0)
    {
    if (strcmp(test_Code, people[i].Code) == 0)
    {
    printf("登录成功!\n");
    _getch();
    }
    else
    {
    printf("密码输入错误!\n");
    return 0;
    }
    }
    }
    }
    void output(FILE *fp)
    {
    fp = fopen("manage.txt", "r");
    i= 0;
    while (fread(&people[i], sizeof(struct Link), 1, fp) != NULL)
    {
    printf("第%d个人员的信息\n",i+1);
    printf("姓名:\t%s\n性别:\t%s\n",people[i].name,people[i].sex);
    printf("账号:\t%s\n密码:\t%s\n", people[i].User, people[i].Code);
    i++;
    }
    fclose(fp);
    }//OK了
    void link(FILE *fp)
    {
    int n;
    printf("\n\n\n\n\t\t\t登录界面\n");
    while (true)
    {
    n = Search(fp);
    if (n != 0) break;
    }
    }
    void Draw(FILE *fp)
    {
    int n;
    printf("\n\n\n\t\t**********       菜单栏       **********\n");
    printf("\t\t******      1.文件的写入     ******\n");
    printf("\t\t******      2.文件的读出     ******\n");
    printf("\t\t******      3.账号密码登录      ******\n");
    printf("\t\t******      4.人员增加        ******\n");
    printf("\t\t******      5.人员删除        ******\n");
    printf("\t\t******      6.退出系统        ******\n");
    printf("请输入你的选择:\t");
    scanf("%d", &n);
    switch (n)
    {
    case 1:
    input(fp);
    break;
    case 2:
    output(fp);
    break;
    case 3:
    link(fp);
    break;
    case 4:
    add();
    break;
    case 5:
    del();
    break;
    case 6:
    exit(0);
    }
    }
    void bc(struct Link *st)
    {
    FILE *fp = NULL;
    fp = fopen("manage.txt", "ab+");
    fwrite(st, sizeof(struct Link), 1, fp);
    fclose(fp);
    }
    void add()//增加人员信息
    {
    int numberTemp = 0;
    int i = 0;
    struct Link temp;
    printf("请输入要增加的人员信息数量:");
    scanf("%d", &numberTemp);
    for (i = 0; i<numberTemp; i++)
    {
    printf("输入第%d个人员信息\n", i + 1);
    printf("姓名:\t");
    scanf("%s", temp.name);
    printf("性别:\t");
    scanf("%s", temp.sex);
    printf("账号:\t");
    scanf("%s", temp.User);
    printf("密码:\t");
    scanf("%s", temp.Code);
    people[Number++] = temp; //将刚添加的写入到数组
    bc(&temp); //将刚添加的写入到文件
    }
    printf("添加成功\n");
    }
    void delbyname()//按姓名删除
    {
    FILE *fp = NULL;
    char name[60];
    int i = 0;
    int j = 0;
    printf("请输入要删除的人员的名字:");
    scanf("%s", name);
    for (i = 0; i<Number; i++)
    {
    if (strcmp(name, people[i].name) == 0) //如果查找到就删除
    {
    for (j = i; j<Number - 1; j++)
    {
    people[j] = people[j + 1];
    }
    Number--;
    }
    } //将剩余数据写入文件  重新一写的方式打开文件 把以前的数据擦除了
    fp = fopen("manage.txt", "wb");
    for (i = 0; i<Number; i++)
    {
    fwrite(&people[i], sizeof(struct Link), 1, fp);
    }
    fclose(fp);
    printf("删除成功;\n");
    }
    void delbyUser()//按账号删除
    {
    FILE *fp = NULL;
    char User[20];
    int i = 0;
    int j = 0;
    printf("请输入要删除的人员的账号:");
    scanf("%s", User);
    for (i = 0; i<Number; i++)
    {
    if (strcmp(User, people[i].User) == 0) //如果查找到就删除
    {
    for (j = i; j<Number - 1; j++)
    {
    people[j] = people[j + 1];
    }   Number--;
    }
    }  //将剩余数据写入文件  重新一写的方式打开文件 把以前的数据擦除了
    fp = fopen("manage.txt", "wb");
    for (i = 0; i<Number; i++)
    {
    fwrite(&people[i], sizeof(struct Link), 1, fp);
    }
    fclose(fp);
    printf("删除成功;\n");
    }
    void del()//删除
    {
    int n = 0;
    printf("选择删除方式\n");
    printf("1  按姓名删除\n");
    printf("2  按账号删除\n");
    printf("请输入你的选择:\t");
    scanf("%d", &n);
    switch (n)
    {
    case 1: delbyname();
    break;
    case 2: delbyUser();
    break;
    }
    }
    void main()
    {
    FILE *fp;
    fp = fopen("manage.txt", "w");
    if (fp == NULL)     exit(0);
    while (true)        Draw(fp);
    }
    
    
    点赞 评论

相关推荐