c++课程设计,职工管理系统

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define I 12 //爱心的上半部分两个小半圆的半径
#define R 240 //爱心的下半部分圆弧曲线半径
using namespace std;
class zhigong//职工类,表示单个职工
{
    string nam;//姓名
    string gh;//工号
    bool sex;//性别
    string sr;//生日
    string xl;//学历
    string zw;//职务
    int gz;//工资
    string zhu;//住址
    string tel;//电话
public:
    bool operator < (const  zhigong &b) const;//为set提供排序方式
    zhigong(string _nam,string _gh,bool _sex,string _sr,string _xl,string _zw,int _gz,string _zhu,string _tel);
    zhigong();
    zhigong(string x);//为工号查找提供简易构造函数
    void prin();//屏幕输出
    friend ostream& operator << (ostream &out,const zhigong& b);//为文件对象提供输出
    void change();//修改
    string na();//为姓名模糊查找提供nam
};
class zgxt:public set//继承STL_set作为程序主题类表示职工系统类,作为平衡红黑二叉树树存储
{
public:
    void sdin();//手动插入
    void shuc();//输出
    zgxt::iterator mhfind(string _na);//模糊查找姓名
} acm;//定义一个对象acm表示职工的集合
void gotoxy(int x,int y)
{

    COORD loc;
    loc.X  =  y;
    loc.Y  =  x;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), loc);
}//坐标定位函数
void xinxing()//欢迎界面
{
    int i,j,e,a;
    for(i=1,a=I; i0; j--)
            printf(" ");
        for(e=1; e<=2*sqrt((double)(I*I-(a-i)*(a-i))); e++)
            printf("\3");
        for(j=(int) ( 2*( I-sqrt((double)(I*I-(a-i)*(a-i))) ) ); j>0; j--)
            printf(" ");
        for(e=1; e<=2*sqrt( (double) (I*I-(a-i)*(a-i)) ); e++)
            printf("\3");
        printf("\n");
    }
    for(i=1; i<56; i++)//爱心的中间一行 可以打印一些标记
    {
        if(i==14)
        {
            printf("\3\3\3\3\3 ~Welcome~ \3\3\3\3\3\3");
            i+=30;
        }
        printf("\3");
    }
    printf("\n");
    for(i=1; i<=R/2; i++)//爱心的下半部分 以R为半径的左右两条圆弧曲线 R设置为比较大
    {
        if(i%2||i%3)continue;//因为R很大 两条曲线应该删去中间的一些点 这样就会更像爱心
        for(j=(int) ( R-sqrt( (double) (R*R-i*i) ) ); j>0; j--)
            printf(" ");
        for(e=1; e<=2*( sqrt( (double)(R*R-i*i) ) - (R-2*I) ); e++)
            printf("\3");
        printf("\n");
    }
    gotoxy(0,79);//以下是控制变色
    system("color a");
    if(kbhit())
        return;
    Sleep(500);
    system("color b");
    if(kbhit())
        return;
    Sleep(500);
    system("color c");
    if(kbhit())
        return;
    Sleep(500);
    system("color d");
    system("color e");
    if(kbhit())
        return;
    Sleep(500);
    system("color f");
    if(kbhit())
        return;
    Sleep(500);
    system("color 0");
    if(kbhit())
        return;
    Sleep(500);
    system("color 1");
    if(kbhit())
        return;
    Sleep(500);
    system("color 2");
    system("color 3");
    if(kbhit())
        return;
    Sleep(500);
    system("color 4");
    if(kbhit())
        return;
    Sleep(500);
    system("color 5");
    if(kbhit())
        return;
    Sleep(500);
    system("color 6");
    if(kbhit())
        return;
    Sleep(500);
    system("color 7");
    system("color 8");
    if(kbhit())
        return;
    Sleep(500);
    system("color 9");
    system("color ab");
    if(kbhit())
        return;
    Sleep(500);
    system("color ac");
    if(kbhit())
        return;
    Sleep(500);
    system("color ad");
    if(kbhit())
        return;
    Sleep(500);
    system("color ae");
    if(kbhit())
        return;
    Sleep(500);
    system("color 1f");
    system("cls");
}
void caidan()//显示菜单
{
    system("cls");
    gotoxy(2,28);
    puts("职工信息管理系统");
    puts("");
    puts("                                 1.插入");
    puts("                                 2.删除");
    puts("                                 3.显示");
    puts("                                 4.修改");
    puts("                                 5.查询");
    puts("                                 6.结束");
}
int main()
{
    acm.clear();
    fstream in("1.txt",ios::in);//打开文件
    if(!in)//如果1.txt不存在
    {
        in.open("1.txt",ios::out);//就用out建立一个
        in.close();
        in.open("1.txt",ios::in);//让输入流等于1.txt
    }
    string nam_;//姓名
    string gh_;//工号
    bool sex_;//性别
    string sr_;//生日
    string xl_;//学历
    string zw_;//职务
    int gz_;//工资
    string zhu_;//住址
    string tel_;//电话
    while(in>>nam_)
    {
        in>>gh_;
        int ac;
        in>>ac;
        sex_=ac;
        in>> sr_>>xl_ >>zw_ >>gz_ >>zhu_ >>tel_;
        zhigong qwe(nam_,gh_,sex_,sr_,xl_,zw_,gz_,zhu_,tel_);//文件读入
        acm.insert(qwe);//存入集合中
    }
    in.close();//关闭文件
    xinxing();//心形界面
    system("color 1e");
    caidan();
    string k;
    while(cin>>k)
    {
        if(k.size()==1)
        {
            switch(k[0])
            {
                case '1':
                    acm.sdin();//手动插入
                    break;
                case '2':
                {
                    cout<<"请输入要删除的工号,输入out退出"<>_gh)
                    {
                        if(_gh=="out")
                            break;
                        zhigong x(_gh);
                        zgxt::iterator p=acm.find(x);//set提供了一个find()返回的是符合条件的迭代器
                        if(p==acm.end())
                        {
                            cout<<"输入有误请重新输入"<>w)
                        {
                            if(w=="Y"||w=="y")
                            {
                                acm.erase(*p);
                                cout<<"删除成功"<>apc)
                                {
                                    if(apc==1)
                                    {
                                        adc=false;
                                        break;
                                    }
                                    if(apc==2)
                                        break;
                                    cout<<"输入有误"<>_gh)
                    {
                        if(_gh=="out")
                            break;
                        zhigong x(_gh);
                        zgxt::iterator p=acm.find(x);
                        if(p==acm.end())
                        {
                            cout<<"输入有误请重新输入"<>s;
                    p=acm.mhfind(s);
                    if(p==acm.end())
                    {
                        cout<<"不存在"<>ss)
                        {
                            if(ss==1)
                            {
                                zhigong x=*p;
                                acm.erase(x);
                                cout<<"删除成功"<>n;
    while(n--)
    {
        cout<<"您需要修改的是:"<<"\n"
            <<"1:姓名"<<"\n"
            <<"2:工号"<<"\n"
            <<"3:性别"<<"\n"
            <<"4:生日"<<"\n"
            <<"5:学历"<<"\n"
            <<"6:职务"<<"\n"
            <<"7:工资"<<"\n"
            <<"8:住址"<<"\n"
            <<"9:电话"<>k)
        {
            if(k.size()==1&&k[0]>='1'&&k[0]<='9')
                break;
            cout<<"输入有误请重新输入"<>nam;
                break;
            }
            case 2:
            {
                cout<<"工号: ";
                string _gh;
                while(cin>>_gh)
                {
                    if(gh==_gh)
                        break;
                    zhigong x(_gh);
                    if(!acm.count(x))//判断当前工号是否存在
                        break;
                    cout<<"该工号重复,请重新输入"<>kt)
                {
                    if(kt=="0")
                    {
                        sex=false;
                        break;
                    }
                    if(kt=="1")
                    {
                        sex=true;
                        break;
                    }
                    cout<<"输入有误,请重新输入"<>sr;
                break;
            }
            case 5:
            {
                cout<<"学历: ";
                cin>>xl;
                break;
            }
            case 6:
            {
                cout<<"职务: ";
                cin>>zw;
                break;
            }
            case 7:
            {
                cout<<"工资: ";
                cin>>gz;
                break;
            }
            case 8:
            {
                cout<<"住址: ";
                cin>>zhu;
                break;
            }
            case 9:
            {
                cout<<"电话: ";
                cin>>tel;
                break;
            }
        }
    }
    cout<<"修改成功"<>n;
    while(n--)
    {
        cout<<"第"<<++cont<<"个职工"<>_nam;
        cout<<"工号: ";
        string _gh;
        while(cin>>_gh)
        {
            zhigong x(_gh);
            if(!this->count(x))//判重
                break;
            cout<<"该工号重复,请重新输入"<>k)
        {
            if(k=="0")
            {
                _sex=false;
                break;
            }
            if(k=="1")
            {
                _sex=true;
                break;
            }
            cout<<"输入有误,请重新输入"<>_sr;
        cout<<"学历: ";
        string _xl;
        cin>>_xl;
        cout<<"职务: ";
        string _zw;
        cin>>_zw;
        cout<<"工资: ";
        int _gz;
        cin>>_gz;
        cout<<"住址: ";
        string _zhu;
        cin>>_zhu;
        cout<<"电话: ";
        string _tel;
        cin>>_tel;
        cout<insert(x);//插入
    }
}
bool zhigong::operator < (const  zhigong &b)const//为set提供排序方式
{
    return ghbegin();//迭代器
    cout<<"共"<size()<<"个成员"<end())
    {
        zhigong x;
        x=*p;
        p++;
        x.prin();
    }
    system("pause");
}
zgxt::iterator zgxt::mhfind(string _na)//模糊查找姓名
{
    zgxt::iterator p=this->begin();
    while(p!=this->end())
    {
        zhigong x=*p;
        if(x.na().find(_na)!=0xffffffff)//string 提供了find()函数,如果未找到就返回一个0xffffffff
        {
            cout<<"找到目标"<>s)
            {
                if(s=="y"||s=="Y")
                    return p;
                if(s=="N"||s=="n")
                    break;
                cout<<"输入有误"<end();
}

你可能感兴趣的:(小程序)