不敢称为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;
}


猜你喜欢

转载自blog.csdn.net/team39/article/details/81041403