欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

员工管理系统(c++)

程序员文章站 2022-03-19 21:42:05
...

问题描述:每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除、排序等功能。
实现要求:
(1) 排序:按不同关键字,对所有员工的信息进行排序。
(2) 查询:按特定条件查找员工。
(3) 更新:按编号对某个员工的某项信息进行修改。
(4) 插入:加入新员工的信息。
(5) 删除:按编号删除已离职的员工的信息。
自创员工表:
员工管理系统(c++)

#include <cstdio>
#include <iostream>
#include <stdio.h>
#include <map>
#include <iomanip>
#include <algorithm>
using namespace std;
struct employees{
    int num;//编号
    string s_name;//姓名
    string s_gender;//性别
    string s_birth;//出生日期
    string s_education;//学历
    string s_position;//职务
    string s_phone;//电话
    string s_address;//住址
};
employees em[1024];
int len=0;
int flag=0;//控制系统是否退出
void em_outtitle()
{
     cout<<setiosflags(ios::left)<<setw(8)<<"编号"<<setw(8)<<"姓名"<<setw(8)<<"性别"<<setw(12)<<"出生年月"<<setw(8)<<"学历"<<setw(12)<<"职务"<<setw(22)<<"电话"<<setw(8)<<"住址"<<endl;
}
void em_out()
{
    em_outtitle();
    for(int i=1;i<=len;i++)
    cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
}
bool cmp_num(employees xx,employees yy)
{
    return xx.num<yy.num;
}
bool cmp_birth(employees xx,employees yy)
{
    return xx.s_birth<yy.s_birth;
}
bool cmp_edu(employees xx,employees yy)
{
    map<string,int>m_edu;
    m_edu["本科"]=1;m_edu["大专"]=2;m_edu["中专"]=3;
    return m_edu[xx.s_education]<m_edu[yy.s_education];
}
bool cmp_position(employees xx,employees yy)
{
    map<string,int>m_po;
    m_po["总经理"]=1;m_po["总策划"]=2;m_po["部门经理"]=3;m_po["秘书"]=4;
    m_po["专职司机"]=5;m_po["职工"]=6;
    return m_po[xx.s_position]<m_po[yy.s_position];
}
void em_sortnum()//按照编号排序
{
    sort(em+1,em+1+len,cmp_num);
}
void em_sortbirth()//按照出生日期排序
{
    sort(em+1,em+1+len,cmp_birth);
}
void em_sortedu()//按照学历排序
{
    sort(em+1,em+1+len,cmp_edu);
}
void em_sortposition()//按照职务排序
{
    sort(em+1,em+1+len,cmp_position);
}
void em_sort()//排序操作
{
    string key;
    printf("请输入关键词:");cin>>key;
    if(key=="编号"){
        em_sortnum();
        em_out();
    }else if(key=="出生日期"){
        em_sortbirth();
        em_out();
    }else if(key=="学历"){
        em_sortedu();
        em_out();
    }else if(key=="职务"){
        em_sortposition();
        em_out();
    }else{
        printf("关键词不正确!\n");
    }
}
void em_get(int i,int num,string name,string gender,string birth,string education,string position,string phone,string address)
{
    em[i].num=num;
    em[i].s_name=name;
    em[i].s_gender=gender;
    em[i].s_birth=birth;
    em[i].s_education=education;
    em[i].s_position=position;
    em[i].s_phone=phone;
    em[i].s_address=address;
}
void em_insert()//插入信息
{
    int num;string name;string gender;string birth;string education;string position;string phone;string address;
    printf("请输入编号:");cin>>num;
    printf("请输入姓名:");cin>>name;
    printf("请输入性别:");cin>>gender;
    printf("请输入出生日期:");cin>>birth;
    printf("请输入学历:");cin>>education;
    printf("请输入职务:");cin>>position;
    printf("请输入电话:");cin>>phone;
    printf("请输入住址:");cin>>address;
    len++;
    em_get(len,num,name,gender,birth,education,position,phone,address);
    printf("插入成功!\n");
}
void em_delete()//删除操作
{
    int num;
    printf("请输入要删除员工信息的编号:");cin>>num;
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].num==num){
            for(int j=i;j<=len;j++){
                em[j]=em[j+1];
            }
            flag=1;
            break;
        }
    }
    if(flag==1){printf("删除成功!\n");len--;}
    else printf("删除失败!未查找到该员工!\n");
}
void em_querynum(int num)//查询编号
{
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].num==num){
            flag++;
            if(flag==1)em_outtitle();
            cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
        }
    }
    if(flag==0){
        printf("不存在符合条件的员工!\n");
    }else{
        printf("查找成功\n");
    }
}
void em_queryname(string name)//查询姓名
{
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].s_name==name){
            flag++;
            if(flag==1)em_outtitle();
            cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
        }
    }
    if(flag==0){
        printf("不存在符合条件的员工!\n");
    }else{
        printf("查找成功\n");
    }
}
void em_queryposition(string position)//查询职位
{
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].s_position==position){
            flag++;
            if(flag==1)em_outtitle();
            cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
        }
    }
    if(flag==0){
        printf("不存在符合条件的员工!\n");
    }else{
        printf("查找成功\n");
    }
}
void em_queryeducation(string education)//查询学历
{
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].s_education==education){
           flag++;
            if(flag==1)em_outtitle();
            cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
        }
    }
    if(flag==0){
        printf("不存在符合条件的员工!\n");
    }else{
        printf("查找成功\n");
    }
}
void em_query()
{
    string key;string s;
    printf("请输入查询信息:");cin>>key;
    printf("请输入查询内容:");cin>>s;
    if(key=="学历"){
        em_queryeducation(s);
    }else if(key=="姓名"){
        em_queryname(s);
    }else if(key=="编号"){
        int num=0;
        int st=s.size();
        for(int i=0;i<st;i++){
            num=(s[i]-'0')+num*10;
        }
        em_querynum(num);
    }else if(key=="职务"){
        em_queryposition(s);
    }else {
        printf("查询条件输入错误!\n");
    }
}
void em_updatename(int num,string name)//更新姓名
{
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].num==num){
            flag=1;
            em[i].s_name=name;
            if(flag==1)em_outtitle();
            cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
            break;
        }
    }
    if(flag==0){
        printf("更新失败!\n");
    }else {printf("更新成功!\n");}
}
void em_updategender(int num,string gender)//更新性别
{
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].num==num){
            flag=1;
            em[i].s_gender=gender;
            if(flag==1)em_outtitle();
            cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
            break;
        }
    }
    if(flag==0){
        printf("更新失败!\n");
    }else {printf("更新成功!\n");}
}
void em_updatebirth(int num,string birth)//更新出生日期
{
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].num==num){
            flag=1;
            em[i].s_birth=birth;
            if(flag==1)em_outtitle();
            cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
            break;
        }
    }
    if(flag==0){
        printf("更新失败!\n");
    }else {printf("更新成功!\n");}
}
void em_updateeducation(int num,string education)//更新学历
{
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].num==num){
            flag=1;
            em[i].s_education=education;
            if(flag==1)em_outtitle();
            cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
            break;
        }
    }
    if(flag==0){
        printf("更新失败!\n");
    }else {printf("更新成功!\n");}
}
void em_updateposition(int num,string position)//更新职位
{
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].num==num){
            flag=1;
            em[i].s_position=position;
            if(flag==1)em_outtitle();
            cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
            break;
        }
    }
    if(flag==0){
        printf("更新失败!\n");
    }else {printf("更新成功!\n");}
}
void em_updatephone(int num,string phone)//更新电话
{
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].num==num){
            flag=1;
            em[i].s_phone=phone;
            if(flag==1)em_outtitle();
            cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
            break;
        }
    }
    if(flag==0){
        printf("更新失败!\n");
    }else {printf("更新成功!\n");}
}
void em_updateaddress(int num,string address)//更新地址
{
    int flag=0;
    for(int i=1;i<=len;i++){
        if(em[i].num==num){
            flag=1;
            em[i].s_address=address;
            if(flag==1)em_outtitle();
            cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
            break;
        }
    }
    if(flag==0){
        printf("更新失败!\n");
    }else {printf("更新成功!\n");}
}
void em_update()
{
    int num;string key;string s;
    printf("请输入要更新员工的编号:");cin>>num;
    printf("请输入要更新员工的信息:");cin>>key;
    printf("请输入要更新的内容:");cin>>s;
     if(key=="姓名"){
        em_updatename(num,s);
    }else if(key=="性别"){
        em_updategender(num,s);
    }else if(key=="出生年月"){
        em_updatebirth(num,s);
    }else if(key=="学历"){
        em_updateeducation(num,s);
    }else if(key=="职务"){
        em_updateposition(num,s);
    }else if(key=="电话"){
        em_updatephone(num,s);
    }else if(key=="住址"){
        em_updateaddress(num,s);
    }else{
        printf("更新内容有误!\n");
    }
}
void interface(int order)
{
    if(order==1){
        em_sort();
    }else if(order==2){
        em_query();
    }else if(order==3){
        em_update();
    }else if(order==4){
        em_insert();
    }else if(order==5){
        em_delete();
    }else if(order==0){
        flag=1;
    }else if(order==6){
        em_out();
    }else {
        printf("指令不正确!请重新输入指令!\n");
    }
}
int main()
{
    printf("\t*****数据结构课程设计*****\n\n二、员工管理系统\n\n");
    printf("\t1、排序:按不同关键字,对所有员工的信息进行排序。\n");
    printf("\t2、查询:按特定条件查找员工。\n");
    printf("\t3、更新:按编号对某个员工的某项信息进行修改。\n");
    printf("\t4、插入:加入新员工的信息。\n");
    printf("\t5、删除:按编号删除已离职的员工的信息。\n");
    printf("\t6、显示当前员工。\n");
    printf("\t0、退出\n\n");
    while(!flag){
    printf("请输入指令:");
    int order;
    cin>>order;
    interface(order);
    printf("\n");
    }

    return 0;
}

相关标签: 实验