标题:管理系统做出来了,现在还想加一个统计,求教。
取消只看楼主
流光溢彩丿
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2015-6-3
结帖率:25%
已结贴  问题点数:10 回复次数:7 
管理系统做出来了,现在还想加一个统计,求教。

其中行政人员只有职务和级别,教师只有职务和职称,一般员工只有职务,退休人员则没有职务、级别、职称,但有退休时间。
统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);

[code]    #include <fstream> //对外存文件的输入输出操作
    #include <iostream>




    using namespace std;
    int q=1;
    class person
    {
    public:
    int num;         //编号
    char name[10];   //姓名
    char sex[4];     //性别
    char zzmm[20];   //政治面貌                     
    int age;         //年龄
    char zgxl[20];    //最高学历
    char rzsj[20];   //任职时间
    char lysj[30];   //来院时间
    int gz;          //工资

    virtual void show()
    {   
        cout<<"编号"<<num<<endl;
        cout<<"姓名"<<name<<endl;
        cout<<"性别"<<sex<<endl;
        cout<<"政治面貌"<<zzmm<<endl;
        cout<<"年龄"<<age<<endl;
        cout<<"最高学历"<<zgxl<<endl;
        cout<<"任职时间"<<rzsj<<endl;
        cout<<"来院时间"<<lysj<<endl;
        cout<<"工资"<<gz<<endl;
    }
    virtual void Book(int n)   
    {      
        num = ++n ;
        cout<<"姓名:";cin>>name;
        cout<<"性别:";cin>>sex;
        cout<<"政治面貌:";cin>>zzmm;
        cout<<"年龄:";cin>>age;
        cout<<"最高学历:";cin>>zgxl;
        cout<<"任职时间:";cin>>rzsj;
        cout<<"来院时间:";cin>>lysj;
        cout<<"工资:";cin>>gz;
    }

    virtual void save(fstream &c)                //保存到文件c中
    {
    c<<num<<" "<<name<<" "<<sex<<" "<<zzmm<<" "<<age<<" "<<zgxl<<" "<<rzsj<<" "<<lysj<<" "<<gz<<" ";
    }
    virtual void Load(fstream &c)                //从文件c中导出数据
    {
    c>>num>>name>>sex>>zzmm>>age>>zgxl>>rzsj>>lysj>>gz;

    }


    };

    class teacher : virtual public person  //派生出的教师类
    {
    public:

    char title[20];
    char zhiwu[10];


    void show()
    {
    person::show();
    cout<<"教师"<<endl;
    cout<<"职称"<<title<<endl;
    cout<<"职务"<<zhiwu<<endl;

    }
    void Book(int n)
    {   
        cout<<"\n请输入教师信息:"<<endl;
        person::Book(n);
        cout<<"职称:";cin>>title;
        cout<<"职务:";cin>>zhiwu;
    }
    virtual void save(fstream &c)                //保存到文件c中

    {      
        person::save(c);
        c<<title<<" "<<zhiwu<<endl;
    }
    virtual void Load(fstream &c)                //从文件c中导出数据
    {
        person::Load(c);
        c>>title>>zhiwu;
    }

    };



    class xingzheng:virtual public person //行政人员类
    {
    public:

    char zhiwu[20];
    char jibie[10];

    void show()
    {
        person::show();
        cout<<"行政人员"<<endl;
        cout<<"职务"<<zhiwu<<endl;
        cout<<"级别"<<jibie<<endl;   
    }
    void Book(int n)
    {           
        cout<<"\n请输入行政人员信息:"<<endl;
        person::Book(n);
        cout<<"职称:";cin>>zhiwu;
        cout<<"级别:";cin>>jibie;
    }
    virtual void save(fstream &c)                //保存到文件c中
    {
        person::save(c);
        c<<zhiwu<<" "<<jibie<<endl;
    }
    virtual void Load(fstream &c)                //从文件c中导出数据
    {
        person::Load(c);
        c>>zhiwu>>jibie;                       
    }
    };


    class yibang:virtual public person //一般员工
    {
    public:

    char zhiwu[20];

    void show()
    {
        person::show();
        cout<<"一般员工"<<endl;
        cout<<"职务"<<zhiwu<<endl;
    }
    void Book(int n)
    {           
        cout<<"\n请输入一般员工信息:"<<endl;
        person::Book(n);
        cout<<"职务:";cin>>zhiwu;
    }
    virtual void save(fstream &c)                //保存到文件c中
    {
        person::save(c);
        c<<zhiwu<<endl;
    }
    virtual void Load(fstream &c)                //从文件c中导出数据
    {
        person::Load(c);
        c>>zhiwu;
    }
    };


    class tuixiu:virtual public person //退休人员类
    {
    public:

    char time[20];


    void show()
    {   
        person::show();
        cout<<"退休人员"<<endl;
        cout<<"退休时间"<<time<<endl;
    }
    void Book(int n)
    {      
        cout<<"\n请输入退休人员信息:"<<endl;
        person::Book(n);
        cout<<"退休时间:";cin>>time;
    }   
    virtual void save(fstream &c)                //保存到文件c中
    {
        person::save(c);
        c<<time<<endl;
    }
    virtual void Load(fstream &c)                //从文件c中导出数据
    {
        person::Load(c);
        c>>time;
    }
    };


teacher t[100];
xingzheng x[100];
yibang y[100];
tuixiu u[100];

int ti=0,xi=0,yi=0,ui=0;
int num=0;



int Search(int number,int &i)
{   
    for(i=0;i<ti;i++)                     
    {
        if(t[i].num==number)
            return 1;
    }
    for(i=0;i<xi;i++)               
    {
        if(x[i].num==number)
            return 2;
    }
    for(i=0;i<yi;i++)               
    {
        if(y[i].num==number)
            return 3;
    }

    for(i=0;i<ui;i++)                    
    {
        if(u[i].num==number)
            return 4;
    }
    return 0;
}

//显示函数,


void Display(int c)
{
    int i;
    if(c==1)
    {
        for(i=0;i<ti;i++)            
        {
            t[i].show();
        }
    }
    else if(c==2)
    {
        for(i=0;i<xi;i++)            
        {x[i].show();}
    }
    else if(c==3)
    {
        for(i=0;i<yi;i++)            
        {y[i].show();}
    }
    else if(c==4)
    {
        for(i=0;i<ui;i++)               
        {u[i].show();}
    }

    else
    {
        cout<<"输入错误!"<<endl;
        system("PAUSE");
    }
}

//输入存储档案
void BookIn()        
{
    while(1)
    {
        cout<<"*************************"<<endl;
        cout<<"请输入存储档案人员类型:1、教师;  2、行政人员;  3、一般员工; 4、 退休人员"<<endl;
        int c;
        cin>>c;
        if(c==1)
        {
            t[ti].Book(num++);
            ti++;
        }
        else if(c==2)
        {
            x[xi].Book(num++);
            xi++;
        }
        else if(c==3)
        {
            y[yi].Book(num++);
            yi++;
        }
        else if(c==4)
        {
            u[ui].Book(num++);
            ui++;
        }
        else
        {
            cout<<"输入有误!"<<endl;
            system("PAUSE");
        }

        cout<<"是否继续存储:Y继续,其他退出"<<endl;
        char x;
        cin>>x;
        if(x!='y' && x!='Y')
            break;
    }
}


//查询档案
void BookOut()
{
    int i;
    while(1)
    {
        int c;
        cout<<"*************************"<<endl;
        cout<<"1、直接输入编号"<<endl;
        cout<<"2、按类型查询"<<endl;
        cout<<"请输入您的选择: ?"<<endl;
        cin>>c;

        if(c!=1 && c!=2)
        {
            cout<<"输入错误!"<<endl;
            system("PAUSE");
        }
        else
        {
            if(c==2)                            //显示
            {
                cout<<"请您选择查询类型:1、教师;  2、行政人员;  3、一般员工; 4、 退休人员"<<endl;
                cin>>c;
                Display(c);
            }

            cout<<"请选择要查询编号:";
            int number;
            cin>>number;

            int test = Search(number,i);        //查找编号
            if(test==0)
            {
                cout<<"没有找到这个员工!"<<endl;
                system("PAUSE");
            }
            else if(test==1)
            {t[i].show();}

            else if(test==2)
            {x[i].show();}
            
            else if(test==3)
            {y[i].show();}

            else if(test==4)
            {u[i].show();}

        }
        cout<<"是否继续:Y继续,其他退出"<<endl;
        char x;
        cin>>x;
        if(x!='y' && x!='Y')
            break;
    }
}



//修改
void Modify()
{
    while(1)
    {
        int number,i;
        cout<<"*************************"<<endl;
        cout<<"请输入要修改员工编号:";
        cin>>number;

        int test = Search(number,i);   
        if(test==0)
        {
            cout<<"没有找到这个员工!"<<endl;
            system("PAUSE");
        }
        else if(test==1)
        {
            t[i].Book(number);                    
        }
        else if(test==2)
        {
            x[i].Book(number);               
        }
        else if(test==3)
        {
            y[i].Book(number);                    
        }
        else if(test==4)
        {
            u[i].Book(number);                    
        }


        cout<<"是否继续修改:Y继续,其他退出"<<endl;
        char x;
        cin>>x;
        if(x!='y' && x!='Y')
            break;
    }
}

void shanchu()
{   
    int i;
    while(1)
    {
        int c;
        cout<<"*************************"<<endl;
        cout<<"1、按输入编号删除"<<endl;
        cout<<"2、按人员类型删除"<<endl;
        cout<<"请输入您的选择: 1-2"<<endl;
        cin>>c;

        if(c!=1 && c!=2)
        {
            cout<<"输入错误!"<<endl;
            system("PAUSE");
        }
        else
        {
            if(c==2)                            //显示库存信息
            {
                cout<<"请选择您要出库的产品类型:1、教师;  2、行政人员;  3、一般员工;   4、退休员工"<<endl;
                cin>>c;
                Display(c);
            }

            cout<<"请选择要删除人员的编号:";
            int number;
            cin>>number;

            int test = Search(number,i);        //查找
            if(test==0)
            {
                cout<<"没有这个产品!"<<endl;
                system("PAUSE");
            }
            else if(test==1)
            {
                t[i]=t[--ti];                    //信息清除
                cout<<"编号为:"<<number<<"的教师已经删除"<<endl;
            }
            else if(test==2)
            {
                x[i]=x[--xi];                    //信息清除
                cout<<"编号为:"<<number<<"的行政人员已经删除"<<endl;
            }
            else if(test==3)
            {
                y[i]=y[--yi];                //信息清除
                cout<<"编号为:"<<number<<"的一般员工已经删除"<<endl;
            }
            else if(test==4)
            {
                u[i]=u[--ui];                //信息清除
                cout<<"编号为:"<<number<<"的退休员工已经删除"<<endl;
            }
        }

        cout<<"是否继续删除:Y继续,其他退出"<<endl;
        char x;
        cin>>x;
        if(x!='y' && x!='Y')
            break;
    }

}

void tongji()
{        
   
    while(1)
    {
        int v,i;
        int z=0;
        cout<<"请输入要统计的类型:1.在职人员  2.党员  3.女性员工   4.高学历人员   5.高职称人员"<<endl;
        int s;
        cin>>s;
        if(s==1)
        {
            v=xi+ti+yi;
            cout<<"在职人员数:"<<v<<endl;
        }

            else if(s==2)
        {
            for(i=0;i<xi;i++)
            {
                if(strcmp(x[i].zzmm,"党员")==0)
                    z++;
            }
            for(i=0;i<ti;i++)
            {
                if(strcmp(t[i].zzmm,"党员")==0)
                    z++;
            }
            for(i=0;i<yi;i++)
            {
                if(strcmp(y[i].zzmm,"党员")==0)
                    z++;
            }
            for(i=0;i<ui;i++)
            {
                if(strcmp(u[i].zzmm,"党员")==0)
                    z++;
            }
            cout<<"党员数:"<<z<<endl;
        }
            else if(s==3)
        {
            for(i=0;i<xi;i++)
            {
                if(strcmp(x[i].sex,"女")==0)
                    z++;
            }
            for(i=0;i<ti;i++)
            {
                if(strcmp(t[i].sex,"女")==0)
                    z++;
            }
            for(i=0;i<yi;i++)
            {
                if(strcmp(y[i].sex,"女")==0)
                    z++;
            }
            for(i=0;i<ui;i++)
            {
                if(strcmp(u[i].sex,"女")==0)
                    z++;
            }
            cout<<"女性员工:"<<z<<endl;
        }
                else if(s==4)
        {
            for(i=0;i<xi;i++)
            {
                if(strcmp(x[i].zgxl,"博士后")==0||strcmp(x[i].zgxl,"博士后")==0
                    ||strcmp(x[i].zgxl,"硕士")==0)
                    z++;
            }
            for(i=0;i<ti;i++)
            {
                if(strcmp(t[i].zgxl,"博士")==0||strcmp(t[i].zgxl,"博士后")==0
                    ||strcmp(t[i].zgxl,"硕士")==0)
                    z++;
            }
            for(i=0;i<yi;i++)
            {
                if(strcmp(y[i].zgxl,"博士")==0||strcmp(y[i].zgxl,"博士后")==0
                    ||strcmp(y[i].zgxl,"硕士")==0)
                    z++;
            }
            for(i=0;i<ui;i++)
            {
                if(strcmp(u[i].zgxl,"博士")==0||strcmp(u[i].zgxl,"博士后")==0
                    ||strcmp(u[i].zgxl,"硕士")==0)
                    z++;
            }
            cout<<"高学历人员:"<<z<<endl;
        }
        
        else if(s==5)
        {
        
            for(i=0;i<ti;i++)
            {
                if(strcmp(t[i].title,"教授")==0||strcmp(t[i].title,"副教授")==0)
                    z++;
            }
            cout<<"高职称人员:"<<z<<endl;
        }
        else
        {
            cout<<"统计错误!"<<endl;
            system("PAUSE");
        }
        cout<<"是否继续统计:Y继续、其他退出"<<endl;
        char x;
        cin>>x;
        if(x!='y' && x!='Y')
            break;
    }
}

void FileLoad()            //信息读取
{
    int i;
    fstream file;
    file.open("mydata.dat", ios::in);            //打开保存数据的文件

    if(!file)
        return;                                    //文件不存在则返回

    file>>num;                                    //读取已有编号
   
    file>>ti;                                    //读入教师数量
    for(i=0;i<ti;i++)                        
        t[i].Load(file);

    file>>xi;                                    //读入行政人员数
    for(i=0;i<xi;i++)                           
        x[i].Load(file);

    file>>yi;                                    //读入一般员工数
    for(i=0;i<yi;i++)                        
        y[i].Load(file);

    file>>ui;                                    //读入退休人员数
    for(i=0;i<ui;i++)                        
        u[i].Load(file);
    file.close();                                //文件关闭
}





void FileSave()      //信息保存
{
    int i;
    fstream file;
    file.open("mydata.dat", ios::out);        

    file<<num<<endl;                            //记录编号
   
    file<<ti<<endl;                                //记录教师的数量
    for(i=0;i<ti;i++)                            //保存教师信息
        t[i].save(file);

    file<<xi<<endl;                                //记录行政人员的数量
    for(i=0;i<xi;i++)                            //保存行政人员信息
        x[i].save(file);
   
    file<<yi<<endl;                            //记录一般员工的数量
    for(i=0;i<yi;i++)                            //保存一般员工信息
        y[i].save(file);

    file<<ui<<endl;                            //记录退休人员的数量
    for(i=0;i<ui;i++)                            //退休人员信息
        u[i].save(file);
    file.close();                                
}




void main()
{
    while(1)        
    {        
        cout<<"********************人事档案管理********************"<<endl;
        cout<<"*                   1、存储档案                    *"<<endl;
        cout<<"*                   2、查询档案                    *"<<endl;
        cout<<"*                   3、信息修改                    *"<<endl;
        cout<<"*                   4、删除档案                    *"<<endl;
        cout<<"*                   5、统计档案                    *"<<endl;
        cout<<"*                   6、信息保存                    *"<<endl;
        cout<<"*                   7、退出系统                    *"<<endl;
        cout<<"*                 请选择功能: 1-7                  *"<<endl;
        cout<<"****************************************************"<<endl;
        int c;
        cin>>c;
        if(c==1)
        {
            BookIn();//添加
        }
        else if(c==2)
        {
            BookOut();//查找
        }
        else if(c==3)
        {
            Modify();//修改
        }
        else if(c==4)
        {
            shanchu();//删除数据
        }
        else if(c==5)
        {   
            tongji();//统计
        }
        else if (c==6)
        {   
            FileSave();//数据保存
        }
        else if(c==7)
        {break;}//退出选项
        else
        {
            cout<<"输入错误!"<<endl;


            system("PAUSE");
        }
    }
   
}
/code]

[此贴子已经被作者于2015-12-15 23:06编辑过]

搜索更多相关主题的帖子: 退休时间 管理系统 include person public 
2015-12-12 13:47
流光溢彩丿
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2015-6-3
得分:0 
回复 2楼 hellovfp
就是刚学不是很会呀,大神求教,删除部分的代码自己下午在实验室码出来了,就是统计那里不会了
2015-12-12 22:04
流光溢彩丿
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2015-6-3
得分:0 
有没有大神解答一下
2015-12-15 12:56
流光溢彩丿
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2015-6-3
得分:0 
回复 5楼 wmf2014
参考老师给的示例程序写的,这个统计最难,表示这不出来了。
2015-12-15 18:41
流光溢彩丿
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2015-6-3
得分:0 
求大神
2015-12-15 20:16
流光溢彩丿
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2015-6-3
得分:0 
回复 9楼 诸葛欧阳
不用了,已经自己写出来了,谢谢
2015-12-15 22:53
流光溢彩丿
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2015-6-3
得分:0 
回复 9楼 诸葛欧阳
但是你能不能指点我一下呢,我写的是按条显示的,就是按一个键就输出一个,我如果想要一次输出所有需要统计的数据,要怎么修改,代码我在一楼贴出来
2015-12-15 22:56
流光溢彩丿
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2015-6-3
得分:0 
回复 8楼 TonyDeng
版主 ,首先这个代码不是复制的,是参考老师给的实例程序码出来的,谢谢你能回复,统计功能我也已经写出来了,还有一些疑问,希望你能解答一二,我写的是按条显示的,就是按一个键就输出一个,我如果想要一次输出所有需要统计的数据,要怎么修改,代码我在一楼贴出来
2015-12-15 23:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-460154-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.784443 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved