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

C++之职工管理系统设计

程序员文章站 2022-06-17 19:11:16
c++之 职工管理 介绍: 此设计只涉及了部分c++知识,大多是面向过程的c语言知识。 可以说是用c语言的思想编写的。 心得: 既然已经花费时间在这件事情上,就应该把这件事情做到最好!!!省去返工的...

c++之 职工管理

介绍: 此设计只涉及了部分c++知识,大多是面向过程的c语言知识。

可以说是用c语言的思想编写的。

心得: 既然已经花费时间在这件事情上,就应该把这件事情做到最好!!!省去返工的时间。

只是想做个纪念。。。

代码:

#include<conio.h>
#include<cstdio>
#include<string>
#include<cstdlib>
#include<cstring>
#include<fstream>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 10010
 
int xz;   //选择;
string sf; //是否;
 
class start  //界面管理
{
public:
    void interface();
    void waiting();
    void printf();
    void printf_re();
    void menu();
};
class worker:public start   //职工
{
private:
    string wid;  //职工号
    string name; //姓名
    string sex;    //性别
    string birthday; //出生年月
    string education; //学历
    string duty;   //职务
    int wage;      //工资
    string add;      //住址
    string phone;  //电话
public:
    worker()
    {
 
    }
    ~worker()
    {
 
    }
    void show();   //显示职工信息
    friend class boss;
};
class boss:public start  //老板
{
private:
    worker w[maxn];
    static int num;  //职工数目;
public:
    boss();
    void append();  //输入
    void display(); //显示
    void search();   //查询
    void modify();   //修改
    void delete();   //删除
    void save();     //保存
    void allclear();  //全清
};
int boss::num=0;
boss::boss()
{
    ifstream file("inform.txt",ios::in);
    string q_id,q_name,q_sex,q_birthday,q_education,q_duty,q_add,q_phone;
    int q_wage;
    int total=0;
    if(!file)
    {
        cout<<"\t\t没有信息存入!!!"<<endl;
        getch();
        exit(0);
    }
    while(!file.eof())//将所输入的数据作为整体一次性读出来
    {
        q_id="";
        file>>q_id>>q_name>>q_sex>>q_birthday>>q_education>>q_duty>>q_wage>>q_add>>q_phone;
        if(q_id.length()==0)
            break;
        w[total].wid=q_id;
        w[total].name=q_name;
        w[total].sex=q_sex;
        w[total].birthday=q_birthday;
        w[total].education=q_education;
        w[total].duty=q_duty;
        w[total].wage=q_wage;
        w[total].add=q_add;
        w[total].phone=q_phone;
        total++;      //记录有多少组数据
    }
    file.close();
    num=total;
}
void start::printf()
{
    cout<<"\t职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\t地址\t电话\t"<<endl;
}
void start::printf_re()
{
    cout<<"\t没有职工信息存入"<<endl;
}
void start::waiting()
{
    int i;
    cout<<"\n\t 请稍侯...........  \t";
    for(i=0; i<79900; i+=6)
    {
        switch(i%4)
        {
        case 1:
            cout<<"\b\\";
            break;
        case 2:
            cout<<"\b-";
            break;
        case 3:
            cout<<"\b/";
            break;
        case 0:
            cout<<"\b|";
            break;
        }
    }
    cout<<endl;
}
void start::menu()   //菜单
{
    cout<<endl;
    cout<<"     ********************* menu ******************** "<<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<<endl;
}
void start::interface()  //主界面
{
    boss wl;
    system("cls");
    menu();
    while(1)
    {
        cout<<"\t请选择你要实现的功能(0-6)";
        cin>>xz;
        cout<<endl;
        while(xz<0||xz>7)
        {
            cout<<"\t输入有误,请重新输入:";
            cin>>xz;
            cout<<endl;
        }
        switch(xz)
        {
        case 1:
            wl.append();
            break;
        case 2:
            wl.display();
            break;
        case 3:
            wl.search();
            break;
        case 4:
            wl.modify();
            break;
        case 5:
            wl.delete();
            break;
        case 6:
            wl.save();
            break;
        case 7:
            wl.allclear();
            break;
        case 0:
            cout<<"\t系统退出!!!"<<endl;
            exit(0);
            break;
        default:
            break;
        }
        cout<<"\t是否返回主菜单?y/n  (n直接退出系统)";
        cin>>sf;
        cout<<endl;
        if(sf=="n"||sf=="n")
        {
            waiting();
            cout<<endl;
            cout<<"\t是否已保存文件???"<<endl;
            cout<<endl;
            cout<<"\t若已保存,请按--1  (系统将不再保存文件)"<<endl;
            cout<<"\t若未保存并想要保存,请按--2"<<endl;
            cin>>xz;
            while(xz<1||xz>2)
            {
                cout<<"\t输入有误,请重新输入";
                cin>>xz;
                cout<<endl;
            }
            if(xz==2)
                wl.save();
            cout<<"\t系统退出!!"<<endl;
            exit(0);
        }
        else
        {
            system("cls");
            menu();
        }
    }
}
void boss::append()   //信息输入
{
    cout<<"\t请不要输入已存在的职工号,以下是已存在的职工号:"<<endl;
    for(int i=0; i<num; i++)
        cout<<w[i].wid<<'\t';
    cout<<endl;
 
    cout<<"\t请输入职工信息:"<<endl;
    do
    {
        cout<<"\t职工号:";
        string num;
        cin>>num;
        while(1)
        {
            int flag=1;
            for(int i=0; i<num; i++)
            {
                if(num==w[i].wid)
                {
                    cout<<"\t此职工号已存在,请重新输入:";
                    cin>>num;
                    flag=0;
                    cout<<endl;
                }
            }
            if(flag)
                break;
        }
        w[num].wid=num;
 
        cout<<"\t姓名:";
        cin>>w[num].name;
 
        cout<<"\t性别(male/female):";
        cin>>w[num].sex;
 
        cout<<"\t出生年月(yyyy/mm):";
        cin>>w[num].birthday;
 
        cout<<"\t学历(junior/college/master/other):";
        cin>>w[num].education;
 
        cout<<"\t职务:";
        cin>>w[num].duty;
 
        cout<<"\t工资:";
        cin>>w[num].wage;
 
        cout<<"\t地址:";
        cin>>w[num].add;
 
        cout<<"\t电话:";
        cin>>w[num].phone;
 
        num++;
        num=num;
        cout<<"\t是否要继续输入 y?(按任意键退出)";
        cin>>sf;
        cout<<endl;
    }
    while(sf=="y"||sf=="y");
}
void boss::display()  //信息展示
{
    if(num<=0)
    {
        printf_re();
    }
    else
    {
        int total=0;
        cout<<endl;
        cout<<"\t已保存的职工信息如下:"<<endl;
        printf();
        for(int i=0; i<num; i++)
        {
            total++;
            cout<<"\t"<<w[i].wid<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].birthday;
            cout<<"\t\t"<<w[i].education<<'\t'<<w[i].duty<<'\t'<<w[i].wage<<'\t'<<w[i].add<<'\t'<<w[i].phone<<endl;
        }
        cout<<"\t\t这里共有"<<total<<"条数据"<<endl;
    }
}
void boss::search()  //查询
{
    if(num<=0)
    {
        printf_re();
    }
    else
    {
        do
        {
            cout<<"\t请选择查询方式"<<endl;
            cout<<"\t**************************"<<endl;
            cout<<"\t**                      **"<<endl;
            cout<<"\t**    1.按职工号查找    **"<<endl;
            cout<<"\t**    2.按姓名查找      **"<<endl;
            cout<<"\t**    3.按工资查找      **"<<endl;
            cout<<"\t**    4.按学历查找      **"<<endl;
            cout<<"\t**    0.返回主菜单      **"<<endl;
            cout<<"\t**                      **"<<endl;
            cout<<"\t**************************"<<endl;
            cout<<endl;
            cout<<"\t请选择要实现的功能【0-4】:";
            cin>>xz;
            while(xz<0||xz>4)
            {
                cout<<endl;
                cout<<"\t输入有误,请重新输入:";
                cin>>xz;
            }
            int fl,total=0;
            if(xz==1)
            {
                cout<<endl;
                string id;
                cout<<"\t请输入要查询的职工号:";
                cin>>id;
                cout<<endl;
                fl=0;
                cout<<endl;
                cout<<"\t查询职工的信息如下:"<<endl;
                for(int j=0; j<num; j++)
                {
                    if(id==w[j].wid)
                    {
                        total++;
                        fl=1;
                        if(j==0)
                            printf();
                        cout<<"\t"<<w[j].wid<<'\t'<<w[j].name<<'\t'<<w[j].sex<<'\t'<<w[j].birthday<<"\t\t"<<w[j].education<<'\t'<<w[j].duty<<'\t'<<w[j].wage<<'\t'<<w[j].add<<'\t'<<w[j].phone<<endl;
                    }
                }
                if(!fl)
                    cout<<"\t不存在此职工!"<<endl;
                else
                    cout<<"\t\t这里共有"<<total<<"条数据"<<endl;
            }
            else if(xz==2)
            {
                string nam;
                cout<<"\t请输入要查询的姓名:";
                cin>>nam;
                fl=0;
                cout<<endl;
                cout<<"\t查询职工的信息如下:"<<endl;
                for(int j=0; j<num; j++)
                {
                    if(nam==w[j].name)
                    {
                        total++;
                        fl=1;
                        if(j==0)
                            printf();
                        cout<<"\t"<<w[j].wid<<'\t'<<w[j].name<<'\t'<<w[j].sex<<'\t'<<w[j].birthday;
                        cout<<"\t\t"<<w[j].education<<'\t'<<w[j].duty<<'\t'<<w[j].wage<<'\t'<<w[j].add<<'\t'<<w[j].phone<<endl;
                    }
                }
                if(!fl)
                    cout<<"\t不存在此职工!"<<endl;
                else
                    cout<<"\t\t这里共有"<<total<<"条数据"<<endl;
            }
            else if(xz==3)
            {
                int wag;
                cout<<"\t请输入要查询的工资:";
                cin>>wag;
                fl=0;
                cout<<endl;
                cout<<"\t查询职工的信息如下:"<<endl;
                for(int j=0; j<num; j++)
                {
                    if(wag==w[j].wage)
                    {
                        total++;
                        fl=1;
                        if(j==0)
                            printf();
                        cout<<"\t"<<w[j].wid<<'\t'<<w[j].name<<'\t'<<w[j].sex<<'\t'<<w[j].birthday;
                        cout<<"\t\t"<<w[j].education<<'\t'<<w[j].duty<<'\t'<<w[j].wage<<'\t'<<w[j].add<<'\t'<<w[j].phone<<endl;
                    }
                }
                if(!fl)
                    cout<<"\t不存在此职工!"<<endl;
                else
                    cout<<"\t\t这里共有"<<total<<"条数据"<<endl;
            }
            else if(xz==4)
            {
                string edu;
                cout<<"\t请输入要查询的学历:";
                cin>>edu;
                fl=0;
                cout<<endl;
                cout<<"\t查询职工的信息如下:"<<endl;
                for(int j=0; j<num; j++)
                {
                    if(edu==w[j].education)
                    {
                        total++;
                        fl=1;
                        if(j==0)
                            printf();
                        cout<<"\t"<<w[j].wid<<'\t'<<w[j].name<<'\t'<<w[j].sex<<'\t'<<w[j].birthday;
                        cout<<"\t\t"<<w[j].education<<'\t'<<w[j].duty<<'\t'<<w[j].wage<<'\t'<<w[j].add<<'\t'<<w[j].phone<<endl;
                    }
                }
                if(!fl)
                    cout<<"\t不存在此职工!"<<endl;
                else
                    cout<<"\t\t这里共有"<<total<<"条数据"<<endl;
            }
            else if(xz==0)
            {
                sf="n";
            }
            if(xz!=0)
            {
                cout<<endl;
                cout<<"\t是否还要继续查询  y?(按任意键退出) "<<endl;
                cin>>sf;
            }
        }
        while(xz!=0&&(sf=="y"||sf=="y"));
    }
}
void boss::modify()  //修改
{
    string n;
    if(num<=0)
    {
        printf_re();
    }
    else
    {
        cout<<"\t全部职工信息如下:"<<endl;
        printf();
        for(int ii=0; ii<num; ii++)
        {
            cout<<"\t"<<w[ii].wid<<'\t'<<w[ii].name<<'\t'<<w[ii].sex<<'\t'<<w[ii].birthday;
            cout<<"\t\t"<<w[ii].education<<'\t'<<w[ii].duty<<'\t'<<w[ii].wage<<'\t'<<w[ii].add<<'\t'<<w[ii].phone<<endl;
        }
        do
        {
            cout<<"\t请输入需要修改信息职工的职工号:";
            string id2;
            cin>>id2;
            cout<<endl;
            int flag=1,k=0;
            while(flag)
            {
                for(int j=0; j<num; j++)
                {
                    if(id2==w[j].wid)
                    {
                        k=j;
                        flag=0;
                        break;
                    }
                }
                if(flag)
                {
                    cout<<"\t不存在该职工,请重新输入:";
                    cin>>id2;
                    cout<<endl;
                }
            }
            cout<<endl;
            cout<<"\t你要修改的职工信息如下:"<<endl;
            printf();
            cout<<"\t"<<w[k].wid<<'\t'<<w[k].name<<'\t'<<w[k].sex<<'\t'<<w[k].birthday;
            cout<<"\t\t"<<w[k].education<<'\t'<<w[k].duty<<'\t'<<w[k].wage<<'\t'<<w[k].add<<'\t'<<w[k].phone<<endl;
            cout<<"\t请选择修改方式:"<<endl;
            cout<<"\t**************************"<<endl;
            cout<<"\t**                      **"<<endl;
            cout<<"\t**    1.修改职工号      **"<<endl;
            cout<<"\t**    2.修改姓名        **"<<endl;
            cout<<"\t**    3.修改性别        **"<<endl;
            cout<<"\t**    4.修改出生年月    **"<<endl;
            cout<<"\t**    5.修改学历        **"<<endl;
            cout<<"\t**    6.修改职务        **"<<endl;
            cout<<"\t**    7.修改工资        **"<<endl;
            cout<<"\t**    8.修改地址        **"<<endl;
            cout<<"\t**    9.修改电话        **"<<endl;
            cout<<"\t**    10.修改多个成员   **"<<endl;
            cout<<"\t**    0.返回主菜单      **"<<endl;
            cout<<"\t**                      **"<<endl;
            cout<<"\t**************************"<<endl;
            cout<<endl;
            cout<<"\t请选择要实现的功能【0-10】:";
            cin>>xz;
            while(xz<0||xz>10)
            {
                cout<<endl;
                cout<<"\t输入有误,请重新输入:";
                cin>>xz;
            }
            switch(xz)
            {
            case 1:
                cout<<"\t新的职工号:";
                cin>>n;
                while(1)
                {
                    int flag=1;
                    for(int i=0; i<num; i++)
                    {
                        if(n==w[i].wid)
                        {
                            cout<<"\t此职工号已存在,请重新输入:";
                            cin>>n;
                            flag=0;
                            cout<<endl;
                        }
                    }
                    if(flag)
                        break;
                }
                w[k].wid=n;
                cout<<"\t修改成功";
                break;
            case 2:
                cout<<"\t请输入新的姓名:";
                cin>>w[k].name;
                cout<<"\t修改成功";
                break;
            case 3:
                cout<<"\t请输入新的性别:";
                cin>>w[k].sex;
                cout<<"\t修改成功";
                break;
            case 4:
                cout<<"\t请输入新的出生年月:";
                cin>>w[k].birthday;
                cout<<"\t修改成功";
                break;
            case 5:
                cout<<"\t请输入新的学历:";
                cin>>w[k].education;
                cout<<"\t修改成功";
                break;
            case 6:
                cout<<"\t请输入新的职务 :";
                cin>>w[k].duty;
                cout<<"\t修改成功";
                break;
            case 7:
                cout<<"\t请输入新的工资:";
                cin>>w[k].wage;
                cout<<"\t修改成功";
                break;
            case 8:
                cout<<"\t请输入新的地址:";
                cin>>w[k].add;
                cout<<"\t修改成功";
                break;
            case 9:
                cout<<"\t请输入新的电话:";
                cin>>w[k].phone;
                cout<<"\t修改成功";
                break;
            case 10:
                cout<<"\t新的职工号:";
                cin>>n;
                while(1)
                {
                    int flag=1;
                    for(int i=0; i<num; i++)
                    {
                        if(n==w[i].wid)
                        {
                            cout<<"\t此职工号已存在,请重新输入:";
                            cin>>n;
                            flag=0;
                            cout<<endl;
                        }
                    }
                    if(flag)
                        break;
                }
                w[k].wid=n;
 
                cout<<"\t新的姓名:";
                cin>>w[k].name;
 
                cout<<"\t新的性别:(male/female)";
                cin>>w[k].sex;
 
                cout<<"\t新的出生年月(yyyy/mm):";
                cin>> w[k].birthday;
 
                cout<<"\t新的学历(junior/college/master/other):";
                cin>>w[k].education;
 
                cout<<"\t新的职务:";
                cin>>w[k].duty;
 
                cout<<"\t新的工资:";
                cin>>w[k].wage;
 
                cout<<"\t新的地址:";
                cin>>w[k].add;
 
                cout<<"\t新的电话:";
                cin>>w[k].phone;
                break;
            case 0:
                sf="n";
                break;
            }
            if(xz!=0)
            {
                cout<<"\t修改后的职工信息如下:"<<endl;
                printf();
                cout<<"\t"<<w[k].wid<<'\t'<<w[k].name<<'\t'<<w[k].sex<<'\t'<<w[k].birthday;
                cout<<"\t\t"<<w[k].education<<'\t'<<w[k].duty<<'\t'<<w[k].wage<<'\t'<<w[k].add<<'\t'<<w[k].phone<<endl;
 
                cout<<"\t是否要修改其它人 y?(按任意键退出)";
                cin>>sf;
            }
        }
        while(xz!=0&&(sf=="y"||sf=="y"));
    }
}
void boss::delete()   //删除
{
    if(num<=0)
    {
        printf_re();
    }
    else
    {
        cout<<endl;
        cout<<"\t全部职工信息如下:"<<endl;
        printf();
        for(int ii=0; ii<num; ii++)
        {
            cout<<"\t"<<w[ii].wid<<'\t'<<w[ii].name<<'\t'<<w[ii].sex<<'\t'<<w[ii].birthday;
            cout<<"\t\t"<<w[ii].education<<'\t'<<w[ii].duty<<'\t'<<w[ii].wage<<'\t'<<w[ii].add<<'\t'<<w[ii].phone<<endl;
        }
        do
        {
            cout<<endl;
            cout<<"\t请输入需要删除信息职工的职工号:";
            string id4;
            cin>>id4;
            cout<<endl;
            int flag=1,k=0;
            while(flag)
            {
                for(int j=0; j<num; j++)
                {
                    if(id4==w[j].wid)
                    {
                        k=j;
                        flag=0;
                        break;
                    }
                }
                if(flag)
                {
                    cout<<"\t不存在该职工,请重新输入:";
                    cin>>id4;
                    cout<<endl;
                }
            }
            cout<<endl;
            cout<<"\t你要删除的职工信息如下:"<<endl;
            printf();
            cout<<"\t"<<w[k].wid<<'\t'<<w[k].name<<'\t'<<w[k].sex<<'\t'<<w[k].birthday;
            cout<<"\t\t"<<w[k].education<<'\t'<<w[k].duty<<'\t'<<w[k].wage<<'\t'<<w[k].add<<'\t'<<w[k].phone<<endl;
 
            cout<<"\t是否确认删除y/n: ";
            cin>>sf;
            if(sf=="y"||sf=="y")
            {
                for(int j=k; j<num-1; j++)
                    w[j]=w[j+1];
                num--;
                cout<<"\t删除成功"<<endl;
            }
            cout<<"是否继续删除职工信息 y?(按任意键退出)";
            cin>>sf;
        }
        while(sf=="y"||sf=="y");
    }
}
void boss::save()   //保存
{
    if(num<=0)
    {
        printf_re();
    }
    else
    {
        ofstream oflie,ofshow;
        oflie.open("inform.txt",ios::out);    //信息处理文件
        ofshow.open("show.txt",ios::out);    //展示文件
        cout<<"\t文件正在保存"<<endl;
 
        ofshow<<"已保存员工信息如下:"<<endl;
        ofshow<<"职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\t地址\t电话"<<endl;
        for(int i=0; i<num; i++)
        {
            oflie<<w[i].wid<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].birthday;
            oflie<<'\t'<<w[i].education<<'\t'<<w[i].duty<<'\t'<<w[i].wage<<'\t'<<w[i].add<<'\t'<<w[i].phone<<endl;
            ofshow<<w[i].wid<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].birthday;
            ofshow<<'\t'<<w[i].education<<'\t'<<w[i].duty<<'\t'<<w[i].wage<<'\t'<<w[i].add<<'\t'<<w[i].phone<<endl;
        }
        oflie.close();
        ofshow.close();
    }
}
void boss::allclear()
{
    ifstream ifile("inform.txt",ios::in);
    ofstream ofile("temp.txt",ios::in|ios::trunc);
    if(!ifile)
        cout<<"\t\t\t\t\tcan not open the inform file!"<<endl;
    if(!ofile)
        cout<<"\t\t\t\t\tcan not creat the temp file!"<<endl;
    ifile.close();
    ofile.close();
    system("del inform.txt");
    system("rename temp.txt,inform.txt");
    waiting();
    cout<<"信息已全部清除"<<endl;
}
void worker::show()   //职工展示
{
    cout<<endl;
    ifstream ifile("inform.txt",ios::in);
    string q_id,q_name,q_sex,q_birthday,q_education,q_duty,q_wage,q_add,q_phone;
    int flag=0;
    if(!ifile)
    {
        cout<<"\t\tcan not open the inform file!"<<endl;
        exit(0);
        getch();
    }
    cout<<"\t你仅有查看自己信息的权限!!!"<<endl;
    cout<<endl;
    ifile.seekg(0,ios::beg);    //将文件指针指向文件开头
    cout<<"\t请输入你的职工号:";
    cin>>wid;
    while(!ifile.eof())
    {
        q_id="";
        ifile>>q_id>>q_name>>q_sex>>q_birthday>>q_education>>q_duty>>q_wage>>q_add>>q_phone;
        if(q_id.length()==0)
            break;
        if(wid==q_id)
        {
            flag=1;
            printf();
            cout<<"\t"<<q_id<<"\t"<<q_name<<"\t"<<q_sex<<"\t"<<q_birthday<<"\t\t"<<q_education<<"\t"<<q_duty<<"\t"<<q_wage<<"\t"<<q_add<<"\t"<<q_phone<<endl;
        }
    }
    ifile.close();
    if(!flag)
        cout<<"\t您好,不存在你的信息!"<<endl;
    cout<<endl;
    cout<<"\t系统退出!"<<endl;
    exit(0);
}
int main()
{
    start st;
    cout<<"              欢 迎 来 到 职 工 管 理 系 统      "<<endl;
    cout<<endl;
    cout<<'\t'<<"请输入你的身份:"<<endl;
    cout<<'\t'<<"老板---请输 1"<<endl;
    cout<<'\t'<<"职工---请输 2"<<endl;
    int shu;
    cin>>shu;
    while(1)
    {
        if(shu==1||shu==2)
            break;
        else
        {
            cout<<"\t输入错误!请重新输入 1 / 2"<<endl;
            cin>>shu;
        }
    }
    if(shu==1)
    {
        st.interface();
    }
    if(shu==2)
    {
        worker e;
        e.show();
    }
    return 0;
}