C++实现职工信息管理系统(增查删改存)

描述

一个简易但功能齐全的信息管理系统。

使用单链表作为实现各项功能的基础,逻辑简单,适合正在学习数据结构的同学

一、功能

(1)输入:九种基本信息:编号,姓名,年龄,性别,职称,部门,电话,入职时间,邮箱

(2)查询:按编号,姓名,部门的进一步查询

(3)删除:按名称删除职工信息

(4)修改:对除名称外的其他所有信息(编号,年龄,性别,职称,部门,电话,入职时间,邮箱)进行修改

(5)显示:按编号或入职时间的有序显示(由小到大)

(6)保存:将信息保存到自定义名称的文件中

二、显示效果

注:若在Clion编译器中运行程序,需将在控制台中运行改为控制台外,修改方式如图所示

(1)程序各功能的菜单显示,如:主菜单、查询菜单、修改菜单、显示菜单,

(2)每一功能完成后的提示语及清屏效果(该功能必须在窗口中实现)如:输入完成等

(3)程序的框架外观

(4)关闭程序时的动态效果

源码

每项功能都附有注释,源码较长,同学可以根据需要自行修改

#include "iostream"
#include "stdlib.h"
#include "string.h"
#include <windows.h>
#include<stdio.h>

using namespace std;
int ifempty=0; //链表长度

//职工信息
typedef struct{
    char num[20];         //编号
    char name[10];        //姓名
    char age[10];          //年龄
    char sex[10];          //性别
    char work[50];         //职称
    char department[50];  //部门
    char call[50];        //电话
    char time[20];        //入职时间
    char email[20];      //邮箱
}DataType;

//定义节点
typedef struct node{
    DataType data;          //结点的数据区域
    struct node *next;      //结点的指针区域
}ListNode,*LinkList;

//创建整体数据链表
LinkList create(LinkList &L){
    ifempty=0;
    L=(LinkList) malloc(sizeof (ListNode));
    L->next=NULL;
    ifempty=0;
    return L;
}

//控制光标生成
void gotoxy(short x, short y) {
    COORD coord = {x, y};
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

//定义程序的主菜单
void menu(){
    cout<<"|============================================================|"<<endl;
    cout<<"|                                                            |"<<endl;
    cout<<"|                    欢迎使用职工信息管理系统                |"<<endl;
    cout<<"|                                                            |"<<endl;
    cout<<"|————————————————————————————————————————————————————————————|"<<endl;
    cout<<"|            ***************主菜单***************            |"<<endl;
    cout<<"|            *          1.录入职工信息          *            |"<<endl;
    cout<<"|            *          2.修改职工信息          *            |"<<endl;
    cout<<"|            *          3.查询职工信息          *            |"<<endl;
    cout<<"|            *          4.删除职工信息          *            |"<<endl;
    cout<<"|            *          5.显示所有职工信息      *            |"<<endl;
    cout<<"|            *          6.保存职工信息          *            |"<<endl;
    cout<<"|            *          0.退出系统              *            |"<<endl;
    cout<<"|            ************************************            |"<<endl;
    cout<<"|            请选择功能:                                     |";
    gotoxy(24, 14);
}

//定义修改时程序的主菜单
void menuxg(){
    cout<<"|============================================================|"<<endl;
    cout<<"|                                                            |"<<endl;
    cout<<"|                    欢迎使用职工信息管理系统                |"<<endl;
    cout<<"|                                                            |"<<endl;
    cout<<"|————————————————————————————————————————————————————————————|"<<endl;
    cout<<"|            ***************主菜单***************            |"<<endl;
    cout<<"|            *          1.录入职工信息          *            |"<<endl;
    cout<<"|            *          2.修改职工信息          *            |"<<endl;
    cout<<"|            *          3.查询职工信息          *            |"<<endl;
    cout<<"|            *          4.删除职工信息          *            |"<<endl;
    cout<<"|            *          5.显示所有职工信息      *            |"<<endl;
    cout<<"|            *          6.保存职工信息          *            |"<<endl;
    cout<<"|            *          0.退出系统              *            |"<<endl;
    cout<<"|            ************************************            |"<<endl;
    cout<<"|            请选择功能:2                                    |"<<endl;
    cout<<"|------------------------------------------------------------|"<<endl;
}

//定义查询时程序的主菜单
void menucx(){
    cout<<"|============================================================|"<<endl;
    cout<<"|                                                            |"<<endl;
    cout<<"|                    欢迎使用职工信息管理系统                |"<<endl;
    cout<<"|                                                            |"<<endl;
    cout<<"|————————————————————————————————————————————————————————————|"<<endl;
    cout<<"|            ***************主菜单***************            |"<<endl;
    cout<<"|            *          1.录入职工信息          *            |"<<endl;
    cout<<"|            *          2.修改职工信息          *            |"<<endl;
    cout<<"|            *          3.查询职工信息          *            |"<<endl;
    cout<<"|            *          4.删除职工信息          *            |"<<endl;
    cout<<"|            *          5.显示所有职工信息      *            |"<<endl;
    cout<<"|            *          6.保存职工信息          *            |"<<endl;
    cout<<"|            *          0.退出系统              *            |"<<endl;
    cout<<"|            ************************************            |"<<endl;
    cout<<"|            请选择功能:3                                    |";
}

//定义显示时程序的主菜单
void menuxs(){
    cout<<"|============================================================|"<<endl;
    cout<<"|                                                            |"<<endl;
    cout<<"|                    欢迎使用职工信息管理系统                |"<<endl;
    cout<<"|                                                            |"<<endl;
    cout<<"|————————————————————————————————————————————————————————————|"<<endl;
    cout<<"|            ***************主菜单***************            |"<<endl;
    cout<<"|            *          1.录入职工信息          *            |"<<endl;
    cout<<"|            *          2.修改职工信息          *            |"<<endl;
    cout<<"|            *          3.查询职工信息          *            |"<<endl;
    cout<<"|            *          4.删除职工信息          *            |"<<endl;
    cout<<"|            *          5.显示所有职工信息      *            |"<<endl;
    cout<<"|            *          6.保存职工信息          *            |"<<endl;
    cout<<"|            *          0.退出系统              *            |"<<endl;
    cout<<"|            ************************************            |"<<endl;
    cout<<"|            请选择功能:5                                    |";
}

//输入职工信息
void InsertDataList_L(LinkList &L){
    int i,n;
    ListNode *p;
    cout<<"|------------------------------------------------------------|"<<endl;
    cout<<"|            **************录入信息**************            |"<<endl;
    cout<<"|            请输入要录入的职工信息:                         |"<<endl;
        p = (LinkList) malloc(sizeof(ListNode));
        cout << "|            编号:                                           |";
        gotoxy(18, 18);
        cin >> p->data.num;
        cout << "|            姓名:                                           |";
        gotoxy(18, 19);
        cin >> p->data.name;
        cout << "|            年龄:                                           |";
        gotoxy(18, 20);
        cin >> p->data.age;
        cout << "|            性别:                                           |";
        gotoxy(18, 21);
        cin >> p->data.sex;
        cout << "|            职称:                                           |";
        gotoxy(18, 22);
        cin >> p->data.work;
        cout << "|            部门:                                           |";
        gotoxy(18, 23);
        cin >> p->data.department;
        cout << "|            电话:                                           |";
        gotoxy(18, 24);
        cin >> p->data.call;
        cout << "|            入职时间:                                       |";
        gotoxy(22, 25);
        cin >> p->data.time;
        cout << "|            邮箱:                                           |";
        gotoxy(18, 26);
        cin >> p->data.email;

        p->next = L->next;
        L->next = p;
        ifempty++;
        getchar(); // 暂停
        cout<<"|            输入完成                                        |"<<endl;
        cout<<"|            按回车键继续······                              |";

}

//按照编号查找
void searchnum(LinkList &L){
    int flag=0; //flag 表示职工是否找到
    int i=0;
    ListNode *p;
    p = L->next;
    char numm[5]; //要查找的职工编号
    cout<<"|            请输入要查找的职工编号:                         |";
    gotoxy(36, 23);
    cin>>numm;
    while(i<ifempty){
        if(strcmp(p->data.num, numm)==0){
            flag=1;//找到指定职工
            cout << "|            该职工信息为:" << endl;
            cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
            cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
        }
        p=p->next;
        i++;
    }
    if (flag==0){
        cout<< "|            编号为" << numm << "的职工不存在!                           |";
        getchar(); // 暂停
    }
}

//按照姓名查找
void searchname(LinkList &L){
    int flag=0; //flag 表示职工是否找到
    int i=0;
    ListNode *p;
    p = L->next;
    char namee[5]; //要查找的职工编号
    cout<<"|            请输入要查找的职工姓名:                         |";
    gotoxy(36, 23);
    cin>>namee;
    while(i<ifempty){
        if(strcmp(p->data.name, namee)==0){
            flag=1;//找到指定职工
            cout << "|该职工信息为:" << endl;
            cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
            cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
        }
        p=p->next;
        i++;
    }
    if (flag==0){
        cout<< "|            姓名为" << namee << "的职工不存在!                           |";
        getchar(); // 暂停
    }
}

//按照部门查找
void searchwork(LinkList &L){
    ListNode *p,*q,*s;
    if (ifempty>1){
        for(int i=0;i<ifempty-1;i++)
        {
            s=L;
            for(int j=0;j<ifempty-i-1;j++)
            {
                p=s->next;
                q=p->next;
                if(strcmp(p->data.num,q->data.num)>0)
                {
                    swap(p->data,q->data);
                }
                s=s->next;
            }
        }
    }
    int flag=0; //flag 表示职工是否找到
    int i=0;
    p = L->next;
    char workk[20]; //要查找的部门名称
    cout<<"|            请输入要查找的部门名称:                         |";
    gotoxy(36, 23);
    cin>>workk;
    while(i<ifempty){
        if(strcmp(p->data.department, workk)==0){
            if (flag==0){
                cout << "|            该部门的职工有:" << endl;
                cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
            }
            flag=1;//找到指定职工
            cout <<"| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
        }
        p=p->next;
        i++;
    }
    if (flag==0){
        cout<< "|            部门为" << workk << "的职工不存在!                           |";
        getchar(); // 暂停
    }
}

//查询职工信息
void GetDataList_L(LinkList &L){
    int y;
    int n=0;
    if(ifempty==0){
        cout<<"|------------------------------------------------------------|"<<endl;
        cout<<"|            **************查询信息**************            |"<<endl;
        cout<<"|            目前没有职工信息···                             |"<<endl;
        gotoxy(32, 17);
        return;
    }else{
        while(1){
            if (n!=0){
                menucx();
                cout<<endl;
            }
            n++;
            cout<<"|------------------------------------------------------------|"<<endl;
            cout<<"|            **************查询信息**************            |"<<endl;
            cout<<"|            *          1. 按编号查询           *            |"<<endl;
            cout<<"|            *          2. 按姓名查询           *            |"<<endl;
            cout<<"|            *          3. 按部门查询           *            |"<<endl;
            cout<<"|            *          0. 返回上一层           *            |"<<endl;
            cout<<"|            ************************************            |"<<endl;
            cout<<"|            请选择方式:                                     |";
            gotoxy(24, 22);
            cin>>y;
            switch (y) {
                case 1:
                    searchnum(L);
                    getchar(); // 暂停
                    cout<<"|            查询完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 2:
                    searchname(L);
                    getchar(); // 暂停
                    cout<<"|            查询完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 3:
                    searchwork(L);
                    getchar(); // 暂停
                    cout<<"|            查询完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 0:
                    return;
                default:
                    cout<<"|            请正确输入!!!"<<endl;
            }
        }
    }

}

//删除职工信息
void DeletedataList_L(LinkList &L){
    cout<<"|------------------------------------------------------------|"<<endl;
    cout<<"|            **************删除信息**************            |"<<endl;
    if(ifempty==0){
        cout<<"|            目前没有职工信息···                             |"<<endl;
        gotoxy(32, 17);
        return;
    }
    ListNode *p;
    int j = 0;
    p = L;
    char namee[20];
    cout <<"|            请输入要删除的职工姓名:                         |";
    gotoxy(36, 17);
    cin >> namee;
    while (p->next) {
        if (strcmp(p->next->data.name, namee) == 0) {
            j = 1;
            cout<<"|            删除完成                                        |"<<endl;
            break;
        }
        p = p->next;
    }

    if(j){
        p->next=p->next->next;
        ifempty--;
    } else{
        cout<<"|            姓名为"<<namee<<"的职工不存在!"<<endl;

    }
}

//修改编号
void changenum(LinkList &p){
    cout << "|            请输入要改成的编号:                             |"<<endl;
    gotoxy(32, 28);
    cin >> p->data.num;
    cout << "|            修改后的职工信息为:                             |"<<endl;
    cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
    cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
}

//修改年龄
void changeage(LinkList &p){
    cout << "|            请输入要改成的年龄:";
    cin >> p->data.age;
    cout << "|            修改后的职工信息为:" << endl;
    cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
    cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
}

//修改部门
void changedepartment(LinkList &p){
    cout << "|            请输入要改成的部门:";
    cin >> p->data.department;
    cout << "|            修改后的职工信息为:" << endl;
    cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
    cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
}

//修改职称
void changework(LinkList &p){
    cout << "|            请输入要改成的职称:";
    cin >> p->data.work;
    cout << "|            修改后的职工信息为:" << endl;
    cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
    cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
}

//修改电话
void changecall(LinkList &p){
    cout << "|            请输入要改成的电话:";
    cin >> p->data.call;
    cout << "|            修改后的职工信息为:" << endl;
    cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
    cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
}

//修改入职时间
void changetime(LinkList &p){
    cout << "|            请输入要改成的入职时间:";
    cin >> p->data.time;
    cout << "|            修改后的职工信息为:" << endl;
    cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
    cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
}

//修改邮箱
void changeemail(LinkList &p){
    cout << "|            请输入要改成的邮箱:";
    cin >> p->data.email;
    cout << "|            修改后的职工信息为:" << endl;
    cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
    cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
}

//修改职工信息
void ModifyDataList_L(LinkList &L) {
    if(ifempty==0){
        cout<<"|------------------------------------------------------------|"<<endl;
        cout<<"|            **************修改信息**************            |"<<endl;
        cout<<"|            没有职工信息可以修改···                         |"<<endl;
        gotoxy(36, 17);
        return;
    }
    ListNode *p;
    int j = 0;  //未找到
    int i;
    int n=0;
    int z=0;
    p = L->next;
    char namee[5]; //要修改的职工姓名
    cout << "|------------------------------------------------------------|"<<endl;
    cout << "|            请输入要修改的职工姓名:                         |";
    gotoxy(36, 16);
    cin >> namee;
    while (i<ifempty) {
        if (strcmp(p->data.name, namee) == 0) {
            j = 1;//找到指定职工
            break;
        }
        p = p->next;
        i++;
        if (i == ifempty){
            cout<< "|            姓名为" << namee << "的职工不存在!                           |";
            getchar(); // 暂停
            break;
        }
    }
    if (j == 1) {
        int y;
        while (1) {
            if (n!=0){
                menuxg();
            }if (z!=0){
                cout << "|            请输入要修改的职工姓名:"<<namee<<"                        |"<<endl;
            }
            z=0;
            cout<<"|            **************修改信息**************            |"<<endl;
            cout<<"|            *            1.修改编号            *            |"<<endl;
            cout<<"|            *            2.修改年龄            *            |"<<endl;
            cout<<"|            *            3.修改职称            *            |"<<endl;
            cout<<"|            *            4.修改部门            *            |"<<endl;
            cout<<"|            *            5.修改电话            *            |"<<endl;
            cout<<"|            *            6.修改入职时间        *            |"<<endl;
            cout<<"|            *            7.修改邮箱            *            |"<<endl;
            cout<<"|            *            0.返回上层            *            |"<<endl;
            cout<<"|            ************************************            |"<<endl;
            cout<<"|            请选择方式:                                     |";
            gotoxy(24, 27);
            n++;
            cin>>y;
            getchar(); // 清除输入缓冲区中的回车符
            switch (y) {
                case 1:
                    changenum(p);
                    getchar(); // 暂停
                    cout<<"|            修改完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 2:
                    changeage(p);
                    getchar(); // 暂停
                    cout<<"|            修改完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 3:
                    changework(p);
                    getchar(); // 暂停
                    cout<<"|            修改完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 4:
                    changedepartment(p);
                    getchar(); // 暂停
                    cout<<"|            修改完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 5:
                    changecall(p);
                    getchar(); // 暂停
                    cout<<"|            修改完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 6:
                    changetime(p);
                    getchar(); // 暂停
                    cout<<"|            修改完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 7:
                    changeemail(p);
                    getchar(); // 暂停
                    cout<<"|            修改完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 0:
                    return;
                default:
                    z++;
                    cout<<"|            请正确输入!!!                                   |";
                    getchar();
                    system("cls"); // 清屏
            }
        }
    }
}

//按编号显示
void printnum(LinkList &L){
    ListNode *p,*q,*s;
    if (ifempty>1){
        for(int i=0;i<ifempty-1;i++)
        {
            s=L;
            for(int j=0;j<ifempty-i-1;j++)
            {
                p=s->next;
                q=p->next;
                if(strcmp(p->data.num,q->data.num)>0)
                {
                    swap(p->data,q->data);
                }
                s=s->next;
            }
        }
    }
    p=L->next;
    cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
    while(1){
        cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
        p=p->next;
        if (p->data.num == NULL){
            break;
        }
    }
    cout<<"|共有"<<ifempty<<"名职工                                                 |"<<endl;
}

//按入职时间显示
void printtime(LinkList &L){
    ListNode *p,*q,*s;
    if (ifempty>1){
        for(int i=0;i<ifempty-1;i++)
        {
            s=L;
            for(int j=0;j<ifempty-i-1;j++)
            {
                p=s->next;
                q=p->next;
                if(strcmp(p->data.time,q->data.time)>0)
                {
                    swap(p->data,q->data);
                }
                s=s->next;
            }
        }
    }
    p=L->next;
    cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
    while(1){
        cout <<"| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<"   "<<p->data.time<<"   "<<p->data.email<<endl;
        p=p->next;
        if (p->data.num == NULL){
            break;
        }
    }
    cout<<"|共有"<<ifempty<<"名职工                                                 |"<<endl;
}

//显示职工信息
void printList_L(LinkList &L){
    int y;
    int n=0;
    if(ifempty==0){
        cout<<"|------------------------------------------------------------|"<<endl;
        cout<<"|            **************显示信息**************            |"<<endl;
        cout<<"|            没有职工信息可以显示···                         |"<<endl;
        gotoxy(36, 17);
        return ;
    }else {
        while (1) {
            if (n != 0) {
                menuxs();
                cout << endl;
            }
            n++;
            cout << "|------------------------------------------------------------|" << endl;
            cout << "|            **************显示信息**************            |"<<endl;
            cout << "|            *          1. 按编号显示           *            |"<<endl;
            cout << "|            *          2. 按入职时间显示       *            |"<<endl;
            cout << "|            *          0. 返回上一层           *            |"<<endl;
            cout << "|            ************************************            |"<<endl;
            cout<<"|            请选择方式:                                     |";
            gotoxy(24, 21);
            cin >> y;
            getchar();
            switch (y) {
                case 1:
                    printnum(L);
                    cout<<"|            显示完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 2:
                    printtime(L);
                    cout<<"|            显示完成                                        |"<<endl;
                    cout<<"|            按回车键继续······                              |";
                    getchar(); // 暂停
                    system("cls"); // 清屏
                    break;
                case 0:
                    return;
                default:
                    cout<<"|            请正确输入!!!                                   |";
                    getchar();
                    system("cls"); // 清屏
            }
        }
    }
}

//保存信息至文件
void saveList_L(LinkList &L){
    ListNode *p;
    int i=0;
    p=L->next;
    char filename[ifempty];
    FILE *out;
    cout<<"|------------------------------------------------------------|"<<endl;
    cout<<"|            **************保存信息**************            |"<<endl;
    if (ifempty==0){
        cout<<"|            没有职工信息可以保存···                         |"<<endl;
        gotoxy(36, 17);
        return;
    }
    cout<<"|            请输入要保存文件的名称:                         |";
    gotoxy(36, 17);
    cin>>filename;
    do {
        if (i==0){
            fprintf(out,"|-编号---姓名---年龄-----性别-----职称----部门------手机号码--------入职时间---------邮箱------\n");
        }
        fprintf(out,"| %s\t%s\t%s\t%s\t%s\t%s\t%s   %s   %s\n",p->data.num,p->data.name,p->data.age,p->data.sex,p->data.department,p->data.work,p->data.call,p->data.time,p->data.email);
        p=p->next;
        i++;
    } while (i<ifempty);
    cout<<"|            保存成功                                        |"<<endl;
    fclose(out);//关闭流对象
}

//编写主程序
int main(){
    ListNode *L;
    if (!(L=(ListNode *) malloc((sizeof (ListNode))))){
        cout << endl;
        exit(1);
    }

    create(L);
    int n;
    char m[10];
    char s[10] = {"是"};

    int j=0;
    while(1){
        top: menu();
        cin>>n;
        getchar();
        switch (n) {
            case 1:
                InsertDataList_L(L);
                getchar(); // 暂停
                system("cls"); // 清屏
                break;
            case 2:
                ModifyDataList_L(L);
                getchar(); // 暂停
                cout<<"|            按回车键继续······                              |";
                getchar(); // 暂停
                system("cls"); // 清屏
                break;
            case 3:
                GetDataList_L(L);
                getchar(); // 暂停
                cout<<"|            按回车键继续······                              |";
                getchar(); // 暂停
                system("cls"); // 清屏
                break;
            case 4:
                DeletedataList_L(L);
                getchar(); // 暂停
                cout<<"|            按回车键继续······                              |";
                getchar(); // 暂停
                system("cls"); // 清屏
                break;
            case 5:
                printList_L(L);
                getchar(); // 暂停
                cout<<"|            按回车键继续······                              |";
                getchar(); // 暂停
                system("cls"); // 清屏
                break;
            case 6:
                saveList_L(L);
                getchar(); // 暂停
                cout<<"|            按回车键继续······                              |";
                getchar(); // 暂停
                system("cls"); // 清屏
                j++;
                break;
            case 0:
                if(j==0){

                    cout<<"|            当前还未保存,是否确定退出:                     |";
                    gotoxy(40,15);
                    cin>>m;
                    getchar();
                    int zhi=strcmp(m,s);
                    switch (zhi) {
                        case 0:
                            cout<<"|            欢迎下次使用!!!                              |"<<endl;
                            cout<<"|============================================================|"<<endl;
                            cout<<"退出中";
                            Sleep(400);
                            cout<<"·";
                            Sleep(400);
                            cout<<"·";
                            Sleep(400);
                            cout<<"·";
                            Sleep(400);
                            cout<<"·";
                            Sleep(400);
                            cout<<"·";
                            Sleep(400);
                            cout<<"·";
                            Sleep(400);
                            exit(0);
                        default:
                            system("cls"); // 清屏
                            goto top;
                    }

                }
                getchar(); // 暂停
                cout<<"============================================================"<<endl;
                getchar(); // 暂停
                exit(0);
            default:
                cout<<"|            请正确输入!!!                                   |";
                getchar();
                system("cls"); // 清屏
        }
    }
}

最后有问题的同学也欢迎在评论区中提出,作者会尽力解答!!!

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值