这个数组数量限制怎么删掉?


#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
using namespace std;
const int TMAX=50;
class Student  
{
public:
    int num;  
    string name;
    string sex;
    int age;
    string Class;
public:
    Student(int n=0,string nm="",string s="",int a=0,string c=""):num(n),name(nm),sex(s),age(a),Class(c){};
    virtual void Input(){};
    virtual void Output(){};
    virtual void Output2(){};
    int GetNum(){return num;}
    
};
class Pupil:public Student
{
public:
    string Chinese;
    string Math;
    string English;
    int choice2;
public:
    Pupil(int n=0,string nm="",string s="男",int a=0,string c="",string l="",string z="",string e="")
        :Student(n,nm,s,a),Chinese(l),Math(z),English(e){};
    void Input()//成员函数用于输入成员信息
    {
        cout<<"输入学号"<<endl;
        cin>>num;
        cout<<"输入姓名"<<endl;
        cin>>name;
        cout<<"选择性别";
        cout<<"(1.男  2.女)"<<endl;
        cout<<"请输入你的选择"<<endl;
        cin>>choice2;
        switch(choice2)
        {
        case 1:sex="男";break;
        case 2:sex="女";break;
        default:cout<<"输入错误,默认为男"<<endl;break;
        }
        cout<<"输入年龄"<<endl;
        cin>>age;
        cout<<"输入班级"<<endl;
        cin>>Class;
        cout<<"输入语文成绩"<<endl;
        cin>>Chinese;
        cout<<"输入数学成绩"<<endl;
        cin>>Math;
        cout<<"输入英语成绩"<<endl;
        cin>>English;
    }
    void Output()
    {
    }

};
class Pup_Manage
{
    Pupil Mid[TMAX];   
    int top;            
public:
    Pup_Manage(){top=0;} 
    void Add();          

};

void Pup_Manage::Add()
{
    if(top>=TMAX)  
    {
        cout<<"用户已满"<<endl;
        return;
    }
    Pupil t;
    cout<<"输入新添加的学生的信息"<<endl;
    t.Input();
    for(int i=0;i<top;i++)
        if (t.GetNum()==Mid[i].GetNum())
        {
        cout<<"该编号的学生已存在"<<endl;
        return;
        }
    Mid[top]=t;
    top=top+1;
    cout<<"添加成功!"<<endl;
}


void PupMenu();
int main()
{
    int choice=0;
    
    do{
        cout<<"                          *****学生信息管理系统*****\n"<<endl;
        cout<<"                                 1=>小学生管理        "<<endl;
        cout<<"                                 2=>中学生管理         "<<endl;
        cout<<"                                 3=>大学生管理         "<<endl;
        cout<<"                                 0=>退出系统           "<<endl;
        cout<<"\n请输入您的选择:";
        cin>>choice;
        switch(choice)
        {
            case 1:PupMenu();break;
            
            case 0:cout<<"\n您已安全退出系统."<<endl;break;
            default:cout<<"\n没有此选项.请重选."<<endl;break;
        }
    }while(choice!=0);

    return 0;
}
void PupMenu()
{
    Pup_Manage t;
    int choice=1;
    while(choice!=0)
    {
        cout<< "                        ====小学生管理====                   "<<endl;
        cout<<"                              1.添加                              "<<endl;
        cout<<"                              2.查找                              "<<endl;
        cout<<"                              3.修改                              "<<endl;
        cout<<"                              4.删除                              "<<endl;
        cout<<"                              5.显示                              "<<endl;
        cout<<"                              6.保存                              "<<endl;
        cout<<"                              7.读取                              "<<endl;
        cout<<"                              8.统计                              "<<endl;
        cout<<"                              0.退出                              "<<endl;
        cout<<"\n输入您操作的选项:";
        cin>>choice;
        switch(choice)
        {
            case 1:t.Add();break;
            case 0:cout<<"退出成功!"<<endl;break;
            default:cout<<"无此选项!请重试!"<<endl;break;
        }
    }
}

TMAX限制了一个数量,想把它删掉,但下面有个Mid[TMAX],这里的TMAX删掉后程序就不能正常运行了,输完数据会直接退出

img
但正常情况会回到上一个页面

img

#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
#include <vector>

using namespace std;
const int TMAX = 50;
class Student
{
public:
    int num;
    string name;
    string sex;
    int age;
    string Class;
public:
    Student(int n = 0, string nm = "", string s = "", int a = 0, string c = "") :num(n), name(nm), sex(s), age(a), Class(c) {};
    virtual void Input() {};
    virtual void Output() {};
    virtual void Output2() {};
    int GetNum() { return num; }
};
class Pupil :public Student
{
public:
    string Chinese;
    string Math;
    string English;
    int choice2;
public:
    Pupil(int n = 0, string nm = "", string s = "男", int a = 0, string c = "", string l = "", string z = "", string e = "")
        :Student(n, nm, s, a), Chinese(l), Math(z), English(e) {};
    void Input()//成员函数用于输入成员信息
    {
        cout << "输入学号" << endl;
        cin >> num;
        cout << "输入姓名" << endl;
        cin >> name;
        cout << "选择性别";
        cout << "(1.男  2.女)" << endl;
        cout << "请输入你的选择" << endl;
        cin >> choice2;
        switch (choice2)
        {
        case 1:sex = "男"; break;
        case 2:sex = "女"; break;
        default:cout << "输入错误,默认为男" << endl; break;
        }
        cout << "输入年龄" << endl;
        cin >> age;
        cout << "输入班级" << endl;
        cin >> Class;
        cout << "输入语文成绩" << endl;
        cin >> Chinese;
        cout << "输入数学成绩" << endl;
        cin >> Math;
        cout << "输入英语成绩" << endl;
        cin >> English;
    }
    void Output()
    {
    }
};
class Pup_Manage
{
    std::vector<Pupil> Mid;// [TMAX];
    int top;
public:
    Pup_Manage() { top = 0; }
    void Add();
};
void Pup_Manage::Add()
{
    //if (top >= TMAX)
    //{
    //    cout << "用户已满" << endl;
    //    return;
    //}
    Pupil t;
    cout << "输入新添加的学生的信息" << endl;
    t.Input();
    for (int i = 0; i<top; i++)
        if (t.GetNum() == Mid[i].GetNum())
        {
            cout << "该编号的学生已存在" << endl;
            return;
        }
    Mid.push_back(t);
    top = top + 1;
    cout << "添加成功!" << endl;
}

void PupMenu();
int main()
{
    int choice = 0;
    do {
        cout << "                          *****学生信息管理系统*****\n" << endl;
        cout << "                                 1=>小学生管理        " << endl;
        cout << "                                 2=>中学生管理         " << endl;
        cout << "                                 3=>大学生管理         " << endl;
        cout << "                                 0=>退出系统           " << endl;
        cout << "\n请输入您的选择:";
        cin >> choice;
        switch (choice)
        {
        case 1:PupMenu(); break;
        case 0:cout << "\n您已安全退出系统." << endl; break;
        default:cout << "\n没有此选项.请重选." << endl; break;
        }
    } while (choice != 0);
    return 0;
}
void PupMenu()
{
    Pup_Manage t;
    int choice = 1;
    while (choice != 0)
    {
        cout << "                        ====小学生管理====                   " << endl;
        cout << "                              1.添加                              " << endl;
        cout << "                              2.查找                              " << endl;
        cout << "                              3.修改                              " << endl;
        cout << "                              4.删除                              " << endl;
        cout << "                              5.显示                              " << endl;
        cout << "                              6.保存                              " << endl;
        cout << "                              7.读取                              " << endl;
        cout << "                              8.统计                              " << endl;
        cout << "                              0.退出                              " << endl;
        cout << "\n输入您操作的选项:";
        cin >> choice;
        switch (choice)
        {
        case 1:t.Add(); break;
        case 0:cout << "退出成功!" << endl; break;
        default:cout << "无此选项!请重试!" << endl; break;
        }
    }
}

可以用vector动态数组

既然是C++的话,那可以用vector。Pupil Mid[TMAX];改为std:vector<Pupil> Mid;