红豆泥! 2021-12-14 11:01 采纳率: 94.4%
浏览 17
已结题

请教一下,Teacher类的count()函数里我应该怎么改才能调用Calculate类的calc()函数

#include"iostream"
#include <fstream>
#include<string.h>
#include"stdlib.h"
#define MAX 100
using namespace std;
class person
{
public:
    int num;
    char name[20];
    char sex[4];
    int age;
};
class  Calculate
{
private:
    int i,j1,j2;
public:
     void calc();
};
//Teacher class
class Teacher:virtual public person
{
public:
    char dept[20];
    char special[20];
    char title[20];
    void Input()
    {
        cout<<"Input num:";cin>>num;
        cout<<"Input name:";cin>>name;
        cout<<"Input sex:";cin>>sex;
        cout<<"Input age:";cin>>age;
        cout<<"Input dept:";cin>>dept;
        cout<<"Input special:";cin>>special;
        cout<<"Input title:";cin>>title;
    }
    void Output()
    {
        cout<<"编号: "<<num<<"  "<<"姓名: "<<name<<"  "<<"性别: "<<sex<<"  "<<"年龄: "<<age<<
            "  "<<"所在系: "<<dept<<"  "<<"专业: "<<special<<"  "<<"职称: "<<title<<endl;
    }
};

Teacher Tea[MAX];
static int Teatop;



class TeaManager:public Calculate
{
public:
    int Add();
    int Search();
    void Show();
    void Edit();
    int Delete();
    void Save();
    void Read();
    void count();
};
int TeaManager::Add()
{
    Teacher t;
    int i,nu;
    if(Teatop==MAX) 
    {cout<<"人数已满"<<endl;
    return 0;
    }
    cout<<"请输入编号:";cin>>nu;
    for(i=0;i<Teatop;i++)
    {
        if(nu==Tea[i].num)
        {cout<<"已有编号,请从输入"<<endl;
        return 0;
        }

    }
    t.Input();Tea[Teatop]=t;Teatop++;
    cout<<"添加成功!"<<endl;

    return 1;
}
int TeaManager::Search()
{
    int j,n;
    cout<<"请输入编号:";cin>>n;
    for(j=0;j<Teatop;j++)
    {
        if(n==Tea[j].num) break;
    }
    if(j==Teatop)
        cout<<"没有此人!"<<endl;
    else
        Tea[j].Output();
    return 1;
}
void TeaManager::Show()
{

    int i;
    if(Teatop==0)
    {cout<<"记录为空!"<<endl; return;}
    for(i=0;i<Teatop;i++)
            Tea[i].Output();
}
void TeaManager::Edit()
{
    Teacher t1;
    int j,n;
    cout<<"请输入要编辑的人的编号:";cin>>n;
    for(j=0;j<Teatop;j++)
    {
        if(n==Tea[j].num) break;
    }
    if(j==Teatop)
    {cout<<"没有此人!"<<endl;return;};
    cout<<"输入修改后的信息,编号不能改:"<<endl;
    t1.Input();
    Tea[j]=t1;
    cout<<"编辑成功!"<<endl;
}
int TeaManager::Delete()
{
    int j,n;
    cout<<"请输入要删除的人的编号:";cin>>n;
    for(j=0;j<Teatop;j++)
    {
        if(n==Tea[j].num) break;
    }
    if(j==Teatop)
    {cout<<"没有此人!"<<endl;return 0;};
    for(j;j<Teatop;j++)
    {
        Tea[j]=Tea[j+1];
    }
    Teatop--;
    cout<<"删除成功!"<<endl;
    return 1;
}
void TeaManager::Save()
{
    int i;
    ofstream outfile,outfile1;   
    outfile1.open("Teatop.dat",ios::out);
    outfile1<<Teatop;
    outfile.open("Tea_data.dat",ios::binary);   
       if(!outfile)
       {cerr<<"open error!"<<endl; return; }
       for(i=0;i<Teatop;i++)
           outfile.write((char *)&Tea[i],sizeof(Tea[i])); 
       outfile.close();   
       cout<<"保存成功!"<<endl;
} 
void TeaManager::Read()
{
    int i;
    ifstream infile,infile1; 
    infile1.open("Teatop.dat",ios::in);
    infile1>>Teatop;
    infile.open("Tea_data.dat",ios::binary);   
       if(!infile)
       {cerr<<"open error!"<<endl; return; }
       for(i=0;i<Teatop;i++)
           infile.read((char *)&Tea[i],sizeof(Tea[i])); 
       infile.close();  
       cout<<"读取成功!"<<endl;
} 
void TeaManager::count()
{
    Calculate.calc();
}
void Tea_mune(TeaManager TM)
{
    int b;
    char c;
    do{
        cout<<"教师管理"<<endl;
        cout<<"=========================================================================================="<<endl;
        cout<<"1.添加    ";
        cout<<"2.查询    ";
        cout<<"3.显示    ";
        cout<<"4.编辑    ";
        cout<<"5.删除    ";
        cout<<"6.统计    ";
        cout<<"7.保存    ";
        cout<<"8.读取    ";
        cout<<"0.退出 |"<<endl;
        cout<<"=========================================================================================="<<endl;
        cout<<"请选择:";cin>>b;
        switch(b)
        {
        case 1:TM.Add();break;
        case 2:TM.Search();break;
        case 3:TM.Show();break;
        case 4:TM.Edit();break;
        case 5:TM.Delete();break;
        case 6:TM.count();break;
        case 7:TM.Save();break;
        case 8:TM.Read();break;
        default:cout<<"\n error"<<endl;break;
        case 0:break;
        }
        cout<<"按回车键继续"<<endl;
        system("pause");
        c=getchar();
        system("cls");
    }while(b!=0);
}
void  Calculate calc()
    {
        int j1=0,j2=0;
        i=Teatop
            for(i=0;i<Teaptop;i++)
    {
        if(strcmp(Teap[i].sex,"F")==0)
            j2++;
        else 
            j1++;
    }
            
        cout<<"总人数: "<<i<<endl;
    };

int main()
{
    TeaManager Tmer1;
    TestManager Tetmer;
    PolicerManager Polimer;
    TeaPolicerManager TeaPolimer;
    int a=1,m=0;
    char c;
    cout<<"    *************************************";
    cout<<endl<<"    $         高校人员管理系统         $"<<endl;
    cout<<"    *************************************";
    cout<<endl<<"请输入密码:";cin>>m;

    if(m!=666) 
    {
        cout<<"密码错误!"<<endl;
        system("pause");
        c=getchar();
        return 0;
    }

    while(a)
    {
        system("cls");
        cout<<endl;
        cout<<"              ****欢迎使用高校人员信息管理系统****"<<endl;
        cout<<"               ================================="<<endl;
        cout<<"               | 1.教师管理                    |"<<endl;
        cout<<"               | 2.实验员管理                  |"<<endl;
        cout<<"               | 3.行政员管理                  |"<<endl;
        cout<<"               | 4.教师兼行政员管理            |"<<endl;
        cout<<"               | 0.退出                        |"<<endl;
        cout<<"               ================================="<<endl;
        cout<<"请选择:";cin>>a;    

        switch(a)
        {
        case 1:Tea_mune(Tmer1);break;
        case 2:Test_mune(Tetmer);break;
        case 3:Policers_mune(Polimer);break;
        case 4:TeaPolicers_mune(TeaPolimer);break;
        case 0:break;
        default:cout<<"\n error"<<endl;
        cout<<"按回车键继续"<<endl;
        system("pause");
        c=getchar();         
        break;
        }
    }

    cout<<endl<<"谢谢使用"<<endl;
    system("pause");
    c=getchar();
    return 0;
}

  • 写回答

1条回答 默认 最新

  • stone_wangzx 2021-12-14 11:48
    关注
    
    #include <iostream>
    #include <fstream>
    #include<string.h>
    #include"stdlib.h"
    #define MAX 100
    using namespace std;
    class person
    {
    public:
        int num;
        char name[20];
        char sex[4];
        int age;
    };
    class  Calculate
    {
    private:
        int i, j1, j2;
    public:
        void calc();
    };
    //Teacher class
    class Teacher : virtual public person
    {
    public:
        char dept[20];
        char special[20];
        char title[20];
        void Input()
        {
            cout << "Input num:"; cin >> num;
            cout << "Input name:"; cin >> name;
            cout << "Input sex:"; cin >> sex;
            cout << "Input age:"; cin >> age;
            cout << "Input dept:"; cin >> dept;
            cout << "Input special:"; cin >> special;
            cout << "Input title:"; cin >> title;
        }
        void Output()
        {
            cout << "编号: " << num << "  " << "姓名: " << name << "  " << "性别: " << sex << "  " << "年龄: " << age <<
                "  " << "所在系: " << dept << "  " << "专业: " << special << "  " << "职称: " << title << endl;
        }
    };
    Teacher Tea[MAX];
    static int Teatop;
    
    class TeaManager :public Calculate
    {
    public:
        int Add();
        int Search();
        void Show();
        void Edit();
        int Delete();
        void Save();
        void Read();
        void count();
    };
    int TeaManager::Add()
    {
        Teacher t;
        int i, nu;
        if (Teatop == MAX)
        {
            cout << "人数已满" << endl;
            return 0;
        }
        cout << "请输入编号:"; cin >> nu;
        for (i = 0; i < Teatop; i++)
        {
            if (nu == Tea[i].num)
            {
                cout << "已有编号,请从输入" << endl;
                return 0;
            }
        }
        t.Input(); Tea[Teatop] = t; Teatop++;
        cout << "添加成功!" << endl;
        return 1;
    }
    int TeaManager::Search()
    {
        int j, n;
        cout << "请输入编号:"; cin >> n;
        for (j = 0; j < Teatop; j++)
        {
            if (n == Tea[j].num) break;
        }
        if (j == Teatop)
            cout << "没有此人!" << endl;
        else
            Tea[j].Output();
        return 1;
    }
    void TeaManager::Show()
    {
        int i;
        if (Teatop == 0)
        {
            cout << "记录为空!" << endl; return;
        }
        for (i = 0; i < Teatop; i++)
            Tea[i].Output();
    }
    void TeaManager::Edit()
    {
        Teacher t1;
        int j, n;
        cout << "请输入要编辑的人的编号:"; cin >> n;
        for (j = 0; j < Teatop; j++)
        {
            if (n == Tea[j].num) break;
        }
        if (j == Teatop)
        {
            cout << "没有此人!" << endl; return;
        };
        cout << "输入修改后的信息,编号不能改:" << endl;
        t1.Input();
        Tea[j] = t1;
        cout << "编辑成功!" << endl;
    }
    int TeaManager::Delete()
    {
        int j, n;
        cout << "请输入要删除的人的编号:"; cin >> n;
        for (j = 0; j < Teatop; j++)
        {
            if (n == Tea[j].num) break;
        }
        if (j == Teatop)
        {
            cout << "没有此人!" << endl; return 0;
        };
        for (j; j < Teatop; j++)
        {
            Tea[j] = Tea[j + 1];
        }
        Teatop--;
        cout << "删除成功!" << endl;
        return 1;
    }
    void TeaManager::Save()
    {
        int i;
        ofstream outfile, outfile1;
        outfile1.open("Teatop.dat", ios::out);
        outfile1 << Teatop;
        outfile.open("Tea_data.dat", ios::binary);
        if (!outfile)
        {
            cerr << "open error!" << endl; return;
        }
        for (i = 0; i < Teatop; i++)
            outfile.write((char*)&Tea[i], sizeof(Tea[i]));
        outfile.close();
        cout << "保存成功!" << endl;
    }
    void TeaManager::Read()
    {
        int i;
        ifstream infile, infile1;
        infile1.open("Teatop.dat", ios::in);
        infile1 >> Teatop;
        infile.open("Tea_data.dat", ios::binary);
        if (!infile)
        {
            cerr << "open error!" << endl; return;
        }
        for (i = 0; i < Teatop; i++)
            infile.read((char*)&Tea[i], sizeof(Tea[i]));
        infile.close();
        cout << "读取成功!" << endl;
    }
    void TeaManager::count()
    {
        Calculate::calc();
    }
    void Tea_mune(TeaManager& TM)
    {
        int b;
        char c;
        do {
            cout << "教师管理" << endl;
            cout << "==========================================================================================" << endl;
            cout << "1.添加    ";
            cout << "2.查询    ";
            cout << "3.显示    ";
            cout << "4.编辑    ";
            cout << "5.删除    ";
            cout << "6.统计    ";
            cout << "7.保存    ";
            cout << "8.读取    ";
            cout << "0.退出 |" << endl;
            cout << "==========================================================================================" << endl;
            cout << "请选择:"; cin >> b;
            switch (b)
            {
            case 1:TM.Add(); break;
            case 2:TM.Search(); break;
            case 3:TM.Show(); break;
            case 4:TM.Edit(); break;
            case 5:TM.Delete(); break;
            case 6:TM.count(); break;
            case 7:TM.Save(); break;
            case 8:TM.Read(); break;
            default:cout << "\n error" << endl; break;
            case 0:break;
            }
            cout << "按回车键继续" << endl;
            system("pause");
            c = getchar();
            system("cls");
        } while (b != 0);
    }
    void Calculate::calc()
    {
    //     int j1 = 0, j2 = 0;
    //     i = Teatop
    //         for (i = 0; i < Teaptop; i++)
    //         {
    //             if (strcmp(Teap[i].sex, "F") == 0)
    //                 j2++;
    //             else
    //                 j1++;
    //         }
    //     cout << "总人数: " << i << endl;
    }
    int main()
    {
        TeaManager Tmer1;
        //TestManager Tetmer;
        //PolicerManager Polimer;
        //TeaPolicerManager TeaPolimer;
        int a = 1, m = 0;
        char c;
        cout << "    *************************************";
        cout << endl << "    $         高校人员管理系统         $" << endl;
        cout << "    *************************************";
        cout << endl << "请输入密码:"; cin >> m;
        if (m != 666)
        {
            cout << "密码错误!" << endl;
            system("pause");
            c = getchar();
            return 0;
        }
        while (a)
        {
            system("cls");
            cout << endl;
            cout << "              ****欢迎使用高校人员信息管理系统****" << endl;
            cout << "               =================================" << endl;
            cout << "               | 1.教师管理                    |" << endl;
            cout << "               | 2.实验员管理                  |" << endl;
            cout << "               | 3.行政员管理                  |" << endl;
            cout << "               | 4.教师兼行政员管理            |" << endl;
            cout << "               | 0.退出                        |" << endl;
            cout << "               =================================" << endl;
            cout << "请选择:"; cin >> a;
            switch (a)
            {
            case 1:Tea_mune(Tmer1); break;
            //case 2:Test_mune(Tetmer); break;
            //case 3:Policers_mune(Polimer); break;
            //case 4:TeaPolicers_mune(TeaPolimer); break;
            case 0:break;
            default:cout << "\n error" << endl;
                cout << "按回车键继续" << endl;
                system("pause");
                c = getchar();
                break;
            }
        }
        cout << endl << "谢谢使用" << endl;
        system("pause");
        c = getchar();
        return 0;
    }
    
    

    因为我这边编译不过去,我注释了一部分代码。关于你说的调用calc函数的问题,因为是继承关系,可以直接调用的calc();或者加上类名Calculate::calc();就可以了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月22日
  • 已采纳回答 12月14日
  • 创建了问题 12月14日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。