C语言员工信息管理系统

题目:员工信息管理系统

1. 目的

(1) 加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
(2) 学会设计数据结构。其中包括对结构数组、数据文件等知识的运用。
(3) 提高程序开发功能,能运用合理的控制流程编写清晰高效的程序。
(4) 训练C程序调试能力,能将一个中小型各级组织系统联调通过。
(5) 开发一个中小型系统,掌握系统研发全过程。
(6) 培养分析问题、解决实际问题的能力。

2. 实验内容

在一个大型的公司里,员工的管理是一个很重要的方面,本实验希望同学们设计一个员工的管理系统,能够对在职员工的各个方面进行管理,包括信息的插入,删除,查询操作。在此基础上,能够进行功能扩展,进行创新设计。

3. 设计要点

3.1 功能要求

(1) 基本要求

试设计一个简单的员工信息管理系统,使之能提供以下基本功能:

  1. 系统以菜单方式工作;
  2. 信息录入功能(用文件保存):包括员工姓名,出生日期,籍贯,政治面貌,在职职位,以及联系电话的录入;
  3. 信息查询功能:对员工信息进行查询,如按照姓名查询,按照政治面貌查询等;
  4. 信息删除功能:包括员工各种信息的删除;
  5. 信息修改功能:包括对员工信息的修改;
  6. 信息统计功能:包括对现有员工的统计。

(2) 创新要求

达到上述基本要求后,可进行创新设计,如对菜单进行美化,功能扩展等。

3.2. 信息描述

本系统中涉及的基本数据对象有员工的姓名,出生日期,籍贯,政治面貌,在职职位,以及联系电话。

3.3 功能描述

本系统主要包括员工信息输入,查询,删除几个功能模块。下面给出这四个功能模块的有关功能描述。

模块名称 功能描述
员工信息的输入 对员工信息进行输入,并保存
员工信息的查询 1. 按照姓名查询;
2. 按照职位查询;
3. 按照政治面貌查询。
员工信息的删除 1. 对员工的信息进行删除并保存
员工信息的统计 1. 按照总员工数进行统计;
2. 按照政治面貌进行统计;

4. 程序实现

1. 整体布局

#include <stdio.h>              //标准输入输出函数头文件
#include <stdlib.h>             //exit(0)头文件
#include <conio.h>              //getch() 函数头文件
#include <string.h>

struct worker {
    char ID[20];                //工号
    char name[20];              //姓名
    char born[20];              //生日
    char address[100];          //籍贯
    char political_status[20];  //政治面貌
    char position[20];          //职务
    char tell[15];              //电话
} work[1000];
int n;                          //全局变量,总人数

void menu();                    //菜单
void input();                   //从键盘输入
void output(int id);            //根据id显示职工信息
void show();                    //显示所有职工信息
void query();                   //查询信息
void deleted();                 //删除职工信息
void revise();                  //修改职工信息
void read();                    //读入数据
void write();                   //写入数据
void mima();                    //密码输入

//菜单模块
void menu() {
    printf("\n\n\t\t大家好\n\n");
    printf("\t\t\t欢迎使用员工信息管理系统1.0\n\n\n");
    printf("\t\t************职工信息管理系统菜单**********\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       1.录入职工信息                   *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       2.显示职工信息                   *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       3.查询职工信息                   *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       4.修改职工信息                   *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       5.删除职工信息                   *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       0.退出                           *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t******************************************\n");
    printf("\t\t请输入指令(0-5): ");
}

int main() {
    int num;
    n = 0;
    system("color 0A");
//    mima();//密码输入页面
    while(1) {
        menu();
        scanf("%d",&num); system("cls");
        switch(num) {
//            case 1: input(); break;
//            case 2: show();  break;
//            case 3: query(); break;
//            case 4: revise(); break;
//            case 5: deleted();  break;
            case 0: printf("\t\t\t谢谢使用!\n\n"); return 0;
            default :
                printf("\n\n\t\t\t无效的指令!,请重新输入\n\n\n");
        }
        system("pause"); //暂停
        system("cls");   //清屏
    }
}

2. 文件读写模块

//文件读写模块
void read() { //读入数据
    FILE *fp;
    int i = 0;
    if( (fp = fopen("员工信息库.txt","r")) == NULL ) {
        printf("新建一个文本文件,文件名为:员工信息库\n\n\n");
        system("pause");
        system("cls");
        return ; // 文件打开失败,直接退出
    }
    fscanf(fp,"%d\n",&n);
    while(i < n) {
        fscanf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
               work[i].ID, work[i].name, work[i].born, work[i].address,
               work[i].political_status, work[i].position, work[i].tell);
        i ++;
    }
    fclose(fp);
}
void write() { //写入数据
    FILE *fp;
    int i = 0;
    if( (fp = fopen("员工信息库.txt","w")) == NULL ) {
        printf("无法打开文件!\n");
        return ;
    }
    fprintf(fp,"%d\n",n);
    while(i < n) {
        fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
                work[i].ID, work[i].name, work[i].born, work[i].address,
                work[i].political_status, work[i].position, work[i].tell);
        i ++;
    }
    fclose(fp);
}

//由于文件读写无法直接看到正常效果,所以需要写一个测试函数
void test1(){//测试 read() 函数是否可以正常读入文件中的信息
    read();
    int i=0;
    while(i < n) {
        printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
                work[i].ID, work[i].name, work[i].born, work[i].address,
                work[i].political_status, work[i].position, work[i].tell);
         i ++;
    }
}
void test2(){//测试 write() 函数是否可以正常写入信息到文件中
    int i=0;
    scanf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
               work[i].ID, work[i].name, work[i].born, work[i].address,
               work[i].political_status, work[i].position, work[i].tell);
    n=1;
    write();
}

3. 输入输出模块

//输入模块
void input() { // 从键盘输入
    int i;
    int flag;  //标记工号是否已存在
    char c;    //指令Y、N
    read();    //输入数据前先将文件中原有的数据读入
    do {
        flag = 0;
        printf("\n\n\t\t请输入职工的工号: ");
        scanf("%s",work[n].ID);
        for(i = 0 ; i < n ; i ++) {
            if(strcmp(work[i].ID,work[n].ID) == 0) {
                flag = 1; break; //该工号已存在
            }
        }
        if(flag) {
            printf("该工号已存在!\n\n");
            printf("\t\t是否继续输入?(Y/N): ");
            scanf("%*c%c",&c);
            if(c == 'N' || c == 'n') break;
            continue;
        }
        printf("\t\t请输入职工的姓名: ");
        scanf("%s",work[n].name);
        printf("\t\t请输入职工的出生年月: ");
        scanf("%s",work[n].born);
        printf("\t\t请输入职工的住址: ");
        scanf("%s",work[n].address);
        printf("\t\t请输入职工的政治面貌: ");
        scanf("%s",work[n].political_status);
        printf("\t\t请输入职工的职务: ");
        scanf("%s",work[n].position);
        printf("\t\t请输入职工的电话: ");
        scanf("%s",work[n].tell);
        printf("\t\t是否继续输入?(Y/N): ");
        scanf("%*c%c",&c);
        n ++;
    } while( c != 'N' && c != 'n');
    write();
    printf("\n\n数据已保存!\n\n");
}

//显示模块
void output(int id) { //根据id显示职工信息
    printf("\n\n\n");
    printf("\t\t  工号: %s\n",work[id].ID);
    printf("\t\t  姓名: %s\n",work[id].name);
    printf("\t\t  出生年月: %s\n",work[id].born);
    printf("\t\t  籍贯: %s\n",work[id].address);
    printf("\t\t  政治面貌: %s\n",work[id].political_status);
    printf("\t\t  职务: %s\n",work[id].position);
    printf("\t\t  电话: %s\n",work[id].tell);
}
void show() { //显示所有职工信息
    int i;
    read();
    if(n == 0) printf("无记录!\n\n");
    else {
        for(i = 0 ; i < n ; i ++) {
            output(i);
        }
    }
}

4. 查询模块

//查询模块
void query() { //查询信息
    char num;
    int  flag,i;
    char q_id[20];           //查询工号
    char q_name[20];         //查询姓名
    char q_status[20];       //查询政治面貌
    char q_position[20];     //查询职位
    char c;                  //指令Y / N
    read();                  //打开程序后,要查询以前的数据,要先读入
    while(1) {
        system("cls");
        printf("\n\n");
        printf("\t\t******************查询********************\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*       1.按工号查询                     *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*       2.按姓名查询                     *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*       3.按政治面貌查询                 *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*       4.按职务查询                     *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*    输入其他任意键退出本模块            *\n");
        printf("\t\t******************************************\n");
        printf("\t\t请输入指令(1-4):");
        scanf("%*c%c",&num);
        if(num < '1' || num > '4') {
            printf("错误指令!\n\n");
            system("pause");
            break;
            //continue;
        }
        system("cls");
        flag = 0;//用来标记职工信息是否存在
        if(num == '1') { //按工号查询
            printf("\t\t请输入您要查询职工的工号:");
            scanf("%s",q_id);
            for(i = 0 ; i < n ; i ++) {
                if( strcmp(work[i].ID,q_id) == 0) {
                    output(i);
                    flag = 1;//存在
                    break;
                }
            }
        } else if(num == '2') { //按姓名查询
            printf("\t\t请输入您要查询职工的姓名:");
            scanf("%s",q_name);
            for(i = 0 ; i < n ; i ++) {
                if( strcmp(work[i].name,q_name) == 0) {
                    output(i);
                    flag = 1;//存在
                }
            }
        } else if(num == '3') { //按政治面貌查询
            printf("\t\t请输入您要查询职工的政治面貌:");
            scanf("%s",q_status);
            for(i = 0 ; i < n ; i ++) {
                if( strcmp(work[i].political_status,q_status) == 0) {
                    output(i);
                    flag = 1;//存在
                }
            }
        } else if(num == '4') { //按职务查询
            printf("\t\t请输入您要查询职工的职务:");
            scanf("%s",q_position);
            for(i = 0 ; i < n ; i ++) {
                if( strcmp(work[i].position,q_position) == 0) {
                    output(i);
                    flag = 1;//存在
                }
            }
        }
        if(flag == 0) { //判断是否有该职工信息
            printf("\n\n无该职工信息!\n\n");
        }
        printf("\n\n是否继续查询(Y/N):");
        scanf("%*c%c",&c);
        if(c == 'N' || c == 'n') break;
    }
}

5. 修改信息模块

//修改信息模块
void revise() { //修改职工信息
    char change_ID[20];    //需修改的职工的工号
    int number;            //职工信息在数据中的位置
    char num;              //指令
    char message[100];     //修改的信息
    char c;                //指令Y?N
    int flag;
    int i;
    read();
    while(1) {
        flag = 0;
        system("cls");
        printf("请输入需修改的职工的工号:");
        scanf("%s",change_ID);
        for(i = 0 ; i < n ; i ++) {
            if( strcmp(work[i].ID,change_ID) == 0 ) {
                number = i;
                flag = 1;
                break;
            }
        }
        if(flag == 0) {
            printf("\n\n无此员工信息!!\n\n");
            printf("\n\n是否继续修改(Y/N):");
            scanf("%*c%c",&c);
            if(c == 'N' || c == 'n') break;
            continue;
        }
        printf("\n\n");
        printf("\t\t*****************修改********************\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       1.修改姓名                      *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       2.修改出生日期                  *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       3.修改籍贯                      *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       4.修改政治面貌                  *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       5.修改职务                      *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       6.修改电话                      *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*    输入其他任意键退出本模块           *\n");
        printf("\t\t*****************************************\n");
        printf("\t\t请输入指令(1-6):");
//        scanf("%c",&num);
        scanf("%*c%c",&num); // * 声明无意义作用
        if(num < '1' || num > '6') {
            printf("错误指令!\n\n");
            system("pause");
            break;
            //continue;
        }
        system("cls");
        printf("请输入修改后的信息:");
        scanf("%s",message);
        switch(num) {
            case '1' : strcpy(work[number].name,message); break;
            case '2' : strcpy(work[number].born,message); break;
            case '3' : strcpy(work[number].address,message); break;
            case '4' : strcpy(work[number].political_status,message); break;
            case '5' : strcpy(work[number].position,message); break;
            case '6' : strcpy(work[number].tell,message); break;
            default  : break;
        }
        //system("cls");
        printf("\n\n是否继续修改(Y/N):");
        scanf("%*c%c",&c);
        if(c == 'N' || c == 'n') break;
    }
    write();
}

6. 删除信息模块

//删除信息模块
void deleted() { //删除职工信息
    char delete_ID[20];   //删除职工工号
    int flag;             //标记是否有该职工信息
    int i,j;
    char c;
    read();
    while(1) {
        system("cls");
        flag = 0;
        printf("请输入需删除职工信息的工号:");
        scanf("%s",delete_ID);
        for(i = 0 ; i < n ; i ++) {
            if( strcmp(work[i].ID,delete_ID) == 0) {
                n --;
                flag = 1;
                for(j=i; j<n; j++) {
                    work[j] =work[j + 1];
                }
                break;
            }
        }
        if(!flag) printf("\n\n无此员工信息!\n\n");
        else printf("\n\n删除成功!\n");
        printf("\n\n是否继续删除(Y/N):");
        scanf("%*c%c",&c);
        if(c == 'N' || c == 'n') break;
    }
    write();
}

7. 登录密码模块

void mima() { //密码输入
    char mima[7], Mima[7]="123456";
    do {
        printf("\n\n\t\t\t请输入登录密码:");
        scanf("%s",mima);
        if(!strcmp(mima,Mima)) {
            printf("\n\n\t\t\t密码输入正确!进入系统页面:");
        } else
            printf("\n\n\t\t\t密码输入错误,请重新输入:");
    } while(strcmp(mima,Mima));
    system("pause");
    system("cls");
}

8. 完整代码实现

点击查看代码
#include <conio.h>   //getch() 函数头文件
#include <stdio.h>   //标准输入输出函数头文件
#include <stdlib.h>  //exit(0)头文件
#include <string.h>

struct worker {
    char ID[20];                // 工号
    char name[20];              // 姓名
    char born[20];              // 生日
    char address[100];          // 籍贯
    char political_status[20];  // 政治面貌
    char position[20];          // 职务
    char tell[15];              // 电话
} work[1000];
int n;  // 全局变量,总人数

void menu();          // 菜单
void input();         // 从键盘输入
void output(int id);  // 根据id显示职工信息
void show();          // 显示所有职工信息
void query();         // 查询信息
void deleted();       // 删除职工信息
void revise();        // 修改职工信息
void read();          // 读入数据
void write();         // 写入数据
void mima();          // 密码输入

// 菜单模块
void menu() {
    printf("\n\n\t\t大家好\n\n");
    printf("\t\t\t欢迎使用员工信息管理系统1.0\n\n\n");
    printf("\t\t************职工信息管理系统菜单**********\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       1.录入职工信息                   *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       2.显示职工信息                   *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       3.查询职工信息                   *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       4.修改职工信息                   *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       5.删除职工信息                   *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t*       0.退出                           *\n");
    printf("\t\t*                                        *\n");
    printf("\t\t******************************************\n");
    printf("\t\t请输入指令(0-5): ");
}

int main() {
    int num;
    n = 0;
    system("color 0A");
    mima();//密码输入页面
    while (1) {
        menu();
        scanf("%d", &num);
        system("cls");
        switch (num) {
            case 1: input(); break;
            case 2: show();  break;
            case 3: query(); break;
            case 4: revise(); break;
            case 5: deleted();  break;
            case 0:
                printf("\t\t\t谢谢使用!\n\n");
                return 0;
            default:
                printf("\n\n\t\t\t无效的指令!,请重新输入\n\n\n");
        }
        system("pause");  // 暂停
        system("cls");    // 清屏
    }
}
// 文件读写模块
void read() {  // 读入数据
    FILE* fp;
    int i = 0;
    if ((fp = fopen("员工信息库.txt", "r")) == NULL) {
        printf("新建一个文本文件,文件名为:员工信息库\n\n\n");
        system("pause");
        system("cls");
        return;  // 文件打开失败,直接退出
    }
    fscanf(fp, "%d\n", &n);
    while (i < n) {
        fscanf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n", work[i].ID, work[i].name,
               work[i].born, work[i].address, work[i].political_status,
               work[i].position, work[i].tell);
        i++;
    }
    fclose(fp);
}
void write() {  // 写入数据
    FILE* fp;
    int i = 0;
    if ((fp = fopen("员工信息库.txt", "w")) == NULL) {
        printf("无法打开文件!\n");
        return;
    }
    fprintf(fp, "%d\n", n);
    while (i < n) {
        fprintf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n", work[i].ID, work[i].name,
                work[i].born, work[i].address, work[i].political_status,
                work[i].position, work[i].tell);
        i++;
    }
    fclose(fp);
}

// 由于文件读写无法直接看到正常效果,所以需要写一个测试函数
void test1() {  // 测试 read() 函数是否可以正常读入文件中的信息
    read();
    int i = 0;
    while (i < n) {
        printf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n", work[i].ID, work[i].name,
               work[i].born, work[i].address, work[i].political_status,
               work[i].position, work[i].tell);
        i++;
    }
}
void test2() {  // 测试 write() 函数是否可以正常写入信息到文件中
    int i = 0;
    scanf("%s\n%s\n%s\n%s\n%s\n%s\n%s\n", work[i].ID, work[i].name,
          work[i].born, work[i].address, work[i].political_status,
          work[i].position, work[i].tell);
    n = 1;
    write();
}
// 输入模块
void input() {  // 从键盘输入
    int i;
    int flag;  // 标记工号是否已存在
    char c;    // 指令Y、N
    read();    // 输入数据前先将文件中原有的数据读入
    do {
        flag = 0;
        printf("\n\n\t\t请输入职工的工号: ");
        scanf("%s", work[n].ID);
        for (i = 0; i < n; i++) {
            if (strcmp(work[i].ID, work[n].ID) == 0) {
                flag = 1;
                break;  // 该工号已存在
            }
        }
        if (flag) {
            printf("该工号已存在!\n\n");
            printf("\t\t是否继续输入?(Y/N): ");
            scanf("%*c%c", &c);
            if (c == 'N' || c == 'n')
                break;
            continue;
        }
        printf("\t\t请输入职工的姓名: ");
        scanf("%s", work[n].name);
        printf("\t\t请输入职工的出生年月: ");
        scanf("%s", work[n].born);
        printf("\t\t请输入职工的住址: ");
        scanf("%s", work[n].address);
        printf("\t\t请输入职工的政治面貌: ");
        scanf("%s", work[n].political_status);
        printf("\t\t请输入职工的职务: ");
        scanf("%s", work[n].position);
        printf("\t\t请输入职工的电话: ");
        scanf("%s", work[n].tell);
        printf("\t\t是否继续输入?(Y/N): ");
        scanf("%*c%c", &c);
        n++;
    } while (c != 'N' && c != 'n');
    write();
    printf("\n\n数据已保存!\n\n");
}

// 显示模块
void output(int id) {  // 根据id显示职工信息
    printf("\n\n\n");
    printf("\t\t  工号: %s\n", work[id].ID);
    printf("\t\t  姓名: %s\n", work[id].name);
    printf("\t\t  出生年月: %s\n", work[id].born);
    printf("\t\t  籍贯: %s\n", work[id].address);
    printf("\t\t  政治面貌: %s\n", work[id].political_status);
    printf("\t\t  职务: %s\n", work[id].position);
    printf("\t\t  电话: %s\n", work[id].tell);
}
void show() {  // 显示所有职工信息
    int i;
    read();
    if (n == 0)
        printf("无记录!\n\n");
    else {
        for (i = 0; i < n; i++) {
            output(i);
        }
    }
}
// 查询模块
void query() {  // 查询信息
    char num;
    int flag, i;
    char q_id[20];        // 查询工号
    char q_name[20];      // 查询姓名
    char q_status[20];    // 查询政治面貌
    char q_position[20];  // 查询职位
    char c;               // 指令Y / N
    read();  // 打开程序后,要查询以前的数据,要先读入
    while (1) {
        system("cls");
        printf("\n\n");
        printf("\t\t******************查询********************\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*       1.按工号查询                     *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*       2.按姓名查询                     *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*       3.按政治面貌查询                 *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*       4.按职务查询                     *\n");
        printf("\t\t*                                        *\n");
        printf("\t\t*    输入其他任意键退出本模块            *\n");
        printf("\t\t******************************************\n");
        printf("\t\t请输入指令(1-4):");
        scanf("%*c%c", &num);
        if (num < '1' || num > '4') {
            printf("错误指令!\n\n");
            system("pause");
            break;
            // continue;
        }
        system("cls");
        flag = 0;          // 用来标记职工信息是否存在
        if (num == '1') {  // 按工号查询
            printf("\t\t请输入您要查询职工的工号:");
            scanf("%s", q_id);
            for (i = 0; i < n; i++) {
                if (strcmp(work[i].ID, q_id) == 0) {
                    output(i);
                    flag = 1;  // 存在
                    break;
                }
            }
        } else if (num == '2') {  // 按姓名查询
            printf("\t\t请输入您要查询职工的姓名:");
            scanf("%s", q_name);
            for (i = 0; i < n; i++) {
                if (strcmp(work[i].name, q_name) == 0) {
                    output(i);
                    flag = 1;  // 存在
                }
            }
        } else if (num == '3') {  // 按政治面貌查询
            printf("\t\t请输入您要查询职工的政治面貌:");
            scanf("%s", q_status);
            for (i = 0; i < n; i++) {
                if (strcmp(work[i].political_status, q_status) == 0) {
                    output(i);
                    flag = 1;  // 存在
                }
            }
        } else if (num == '4') {  // 按职务查询
            printf("\t\t请输入您要查询职工的职务:");
            scanf("%s", q_position);
            for (i = 0; i < n; i++) {
                if (strcmp(work[i].position, q_position) == 0) {
                    output(i);
                    flag = 1;  // 存在
                }
            }
        }
        if (flag == 0) {  // 判断是否有该职工信息
            printf("\n\n无该职工信息!\n\n");
        }
        printf("\n\n是否继续查询(Y/N):");
        scanf("%*c%c", &c);
        if (c == 'N' || c == 'n')
            break;
    }
}
// 修改信息模块
void revise() {          // 修改职工信息
    char change_ID[20];  // 需修改的职工的工号
    int number;          // 职工信息在数据中的位置
    char num;            // 指令
    char message[100];   // 修改的信息
    char c;              // 指令Y?N
    int flag;
    int i;
    read();
    while (1) {
        flag = 0;
        system("cls");
        printf("请输入需修改的职工的工号:");
        scanf("%s", change_ID);
        for (i = 0; i < n; i++) {
            if (strcmp(work[i].ID, change_ID) == 0) {
                number = i;
                flag = 1;
                break;
            }
        }
        if (flag == 0) {
            printf("\n\n无此员工信息!!\n\n");
            printf("\n\n是否继续修改(Y/N):");
            scanf("%*c%c", &c);
            if (c == 'N' || c == 'n')
                break;
            continue;
        }
        printf("\n\n");
        printf("\t\t*****************修改********************\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       1.修改姓名                      *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       2.修改出生日期                  *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       3.修改籍贯                      *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       4.修改政治面貌                  *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       5.修改职务                      *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*       6.修改电话                      *\n");
        printf("\t\t*                                       *\n");
        printf("\t\t*    输入其他任意键退出本模块           *\n");
        printf("\t\t*****************************************\n");
        printf("\t\t请输入指令(1-6):");
        //        scanf("%c",&num);
        scanf("%*c%c", &num);  // * 声明无意义作用
        if (num < '1' || num > '6') {
            printf("错误指令!\n\n");
            system("pause");
            break;
            // continue;
        }
        system("cls");
        printf("请输入修改后的信息:");
        scanf("%s", message);
        switch (num) {
            case '1':
                strcpy(work[number].name, message);
                break;
            case '2':
                strcpy(work[number].born, message);
                break;
            case '3':
                strcpy(work[number].address, message);
                break;
            case '4':
                strcpy(work[number].political_status, message);
                break;
            case '5':
                strcpy(work[number].position, message);
                break;
            case '6':
                strcpy(work[number].tell, message);
                break;
            default:
                break;
        }
        // system("cls");
        printf("\n\n是否继续修改(Y/N):");
        scanf("%*c%c", &c);
        if (c == 'N' || c == 'n')
            break;
    }
    write();
}
// 删除信息模块
void deleted() {         // 删除职工信息
    char delete_ID[20];  // 删除职工工号
    int flag;            // 标记是否有该职工信息
    int i, j;
    char c;
    read();
    while (1) {
        system("cls");
        flag = 0;
        printf("请输入需删除职工信息的工号:");
        scanf("%s", delete_ID);
        for (i = 0; i < n; i++) {
            if (strcmp(work[i].ID, delete_ID) == 0) {
                n--;
                flag = 1;
                for (j = i; j < n; j++) {
                    work[j] = work[j + 1];
                }
                break;
            }
        }
        if (!flag)
            printf("\n\n无此员工信息!\n\n");
        else
            printf("\n\n删除成功!\n");
        printf("\n\n是否继续删除(Y/N):");
        scanf("%*c%c", &c);
        if (c == 'N' || c == 'n')
            break;
    }
    write();
}
void mima() {  // 密码输入
    char mima[7], Mima[7] = "123456";
    do {
        printf("\n\n\t\t\t请输入登录密码:");
        scanf("%s", mima);
        if (!strcmp(mima, Mima)) {
            printf("\n\n\t\t\t密码输入正确!进入系统页面:");
        } else
            printf("\n\n\t\t\t密码输入错误,请重新输入:");
    } while (strcmp(mima, Mima));
    system("pause");
    system("cls");
}

posted @ 2022-05-04 09:43  HelloHeBin  阅读(182)  评论(0)    收藏  举报