ysdyy9999 2021-12-23 02:38 采纳率: 100%
浏览 188
已结题

引发了异常: 读取访问权限冲突。 this->m_Studentarray 是 0x1110112


#pragma once
#include<iostream>
#include<string>
#include"Student.h"


class work
{
public:

    //构造函数
    work();

    //学生信息的录入
    void inStudent();

    //记录学生人数
    int m_Studentnum;

    //学生数组指针
    Student** m_Studentarray;

    





};
#pragma once
#include<iostream>
#include<string>

using namespace std;

class Student
{
public:

    //学号
    int num;

    //姓名
    string name;

    //男性为1,女性为2
    int xingbie;

    //英语
    double English;

    //数学
    double Math;

    //程序设计
    double Chengxu;

    //数据结构
    double Shuju;

    //总分
    double Zong;

    //构造函数
    Student(int num1, string name1, int xingbie1, double English1, double Math1, double Chengxu1, double Shuju1);
    

    //输入学号
    void innum(int num1);

    //输入姓名
    void inname(string name1);

    //输入性别,1为男性,2为女性
    void inxingbie(int num1);

    //输入英语成绩
    void inEnglish(double English1);

    //输入数学成绩
    void inMath(double Math1);

    //输入程序设计成绩
    void inChengxu(double Chengxu1);

    //输入数据结构成绩
    void inShuju(double Shuju1);



    //计算总分
    void addall();


    //输出所有信息
    void outinfo();



};

#include"work.h"

//构造函数
work::work()
{
    //初始化数据
    this->m_Studentnum = 0;//初始化人数
    this->m_Studentarray = NULL;//初始化数组
    return;
}


//学生信息的录入
void work::inStudent()
{
    cout << "请输入添加人员数量 " << endl;
    int addnum = 0;//保存人员数量
    cin >> addnum;

    if (addnum > 0)
    {
        //计算添加新空间大小
        int newsize = this->m_Studentnum + addnum;//新空间人数=原来记录人数+新增人数

        //开辟新空间
        Student** newspace = new Student * [newsize];

        //将原空间下数据拷贝到新空间
        if (this->m_Studentarray != NULL)
        {
            for (int i = 0; i < this->m_Studentnum; i++)
            {
                newspace[i] = this->m_Studentarray[i];
            }
        }

        //批量添加新数据
        for (int i = 0; i < addnum; i++)
        {
            //学生学号
            int id;
            //学生姓名
            string name;
            //学生性别
            int xingbie;
            //英语成绩
            double English1;
            //数学成绩
            double Math1;
            //程序设计成绩
            double Chengxu1;
            //数据结构成绩
            double Shuju1;
            //判断是否存在重复学号
            int f1 = 0;
            //判断输入成绩是否大于100
            int f2 = 2;
            //判断输入性别是否正确
            int f3 = 0;

            while (f1 == 0) {
                cout << "请输入第 " << i + 1 << " 个学生的学号" << endl;
                cin >> id;
                if (m_Studentnum == 0)
                    f1 = 1;
                else 
                    for (int j = 0; j < m_Studentnum; j++)
                    {
                        f1 = 1;
                        if (m_Studentarray[j]->num == id)
                        {
                            cout << "该学号已存在,是否继续添加" << endl;
                            cout << "1.继续添加" << endl;
                            cout << "2.返回主菜单" << endl;
                            cout << "请选择  ‘1’或  ‘2’" << endl;
                            cin >> f1;
                            if (f1 != 1 || f1 != 2)
                            {
                                cout << "选择有误,请重新输入该学生学号" << endl;
                                f1 = 0;
                            }
                            break;
                        }
                    }

            }
            if (f1 == 1) {
                cout << "请输入该学生的姓名: " << endl;
                cin >> name;
                
                while (f3 == 0) {
                    cout << "请选择该学生的性别: " << endl;
                    cout << "1、男性" << endl;
                    cout << "2、女性" << endl;
                    cin >> xingbie;
                    if (xingbie != 1 && xingbie != 2)
                    {
                        cout << "选择有误,请重新选择" << endl;
                        f3 = 0;
                    }
                    else
                        f3 = 1;
                }
                while (f2 == 2) {
                    cout << "请输入该学生的英语成绩: " << endl;
                    cin >> English1;
                    if (English1 < 100)
                    {
                        cout << "警告!您所输入的成绩小于100分" << endl;
                        cout << "1.确认无误,继续输入" << endl;
                        cout << "2.重新输入该科目成绩" << endl;
                        cout << "请选择  ‘1’或  ‘2’" << endl;
                        cin >> f2;
                        if (f2 != 1 && f2 != 2)
                        {
                            f2 = 2;
                            cout << "选择有误,请重新输入该科目成绩!" << endl;
                        }
                    }
                    else
                        f2 = 1;
                }
                f2 = 2;
                while (f2 == 2) {
                    cout << "请输入该学生的数学成绩: " << endl;
                    cin >> Math1;
                    if (Math1 < 100)
                    {
                        cout << "警告!您所输入的成绩小于100分" << endl;
                        cout << "1.确认无误,继续输入" << endl;
                        cout << "2.重新输入该科目成绩" << endl;
                        cout << "请选择  ‘1’或  ‘2’" << endl;
                        cin >> f2;
                        if (f2 != 1 && f2 != 2)
                        {
                            f2 = 2;
                            cout << "选择有误,请重新输入该科目成绩!" << endl;
                        }
                    }
                    else
                        f2 = 1;
                }

                f2 = 2;
                while (f2 == 2) {
                    cout << "请输入该学生的程序设计成绩: " << endl;
                    cin >> Chengxu1;
                    if (Chengxu1 < 100)
                    {
                        cout << "警告!您所输入的成绩小于100分" << endl;
                        cout << "1.确认无误,继续输入" << endl;
                        cout << "2.重新输入该科目成绩" << endl;
                        cout << "请选择  ‘1’或  ‘2’" << endl;
                        cin >> f2;
                        if (f2 != 1 && f2 != 2)
                        {
                            f2 = 2;
                            cout << "选择有误,请重新输入该科目成绩!" << endl;
                        }
                    }
                    else
                        f2 = 1;
                }
                f2 = 2;
                while (f2 == 2) {
                    cout << "请输入该学生的数据结构成绩: " << endl;
                    cin >> Shuju1;
                    if (Shuju1 < 100)
                    {
                        cout << "警告!您所输入的成绩小于100分" << endl;
                        cout << "1.确认无误,继续输入" << endl;
                        cout << "2.重新输入该科目成绩" << endl;
                        cout << "请选择  ‘1’或  ‘2’" << endl;
                        cin >> f2;
                        if (f2 != 1 && f2 != 2)
                        {
                            f2 = 2;
                            cout << "选择有误,请重新输入该科目成绩!" << endl;
                        }
                    }
                    else
                        f2 = 1;
                }

                Student* Student1 = NULL;
                Student1 = new Student(id, name, xingbie, English1, Math1, Chengxu1, Shuju1);

                //将创建的学生指针,保存到数组中
                newspace[this->m_Studentnum + i] = Student1;

                //更改新的人员人数
                this->m_Studentnum++;
            }

            else
            {
                //按任意键后 清屏并返回上级目录
                system("pause");
                system("cls");
            }
        }

        //释放原有空间
        delete[]this->m_Studentarray;

        //更改新空间的指向
        this->m_Studentarray = newspace;


        //提示添加成功
        cout << "成功添加 " << addnum << " 名人员!" << endl;

    }
    else
    {
        cout << "输入数据有误" << endl;
    }

    //按任意键后 清屏并返回上级目录
    system("pause");
    system("cls");


}

#include"Student.h"

//输入学号
void Student::innum(int num1)
{
    num = num1;
}

//输入姓名
void Student::inname(string name1)
{
    name = name1;
}

//输入性别,1为男性,2为女性
void Student::inxingbie(int num1)
{
    if (num1 == 1 || num1 == 2)
        xingbie = num1;
    else
        cout << "您输入的选择有误" << endl;
}

//输入英语成绩
void Student::inEnglish(double English1)
{
    English = English1;
}

//输入数学成绩
void Student::inMath(double Math1)
{
    Math = Math1;
}

//输入程序设计成绩
void Student::inChengxu(double Chengxu1)
{
    Chengxu = Chengxu1;
}

//输入数据结构成绩
void Student::inShuju(double Shuju1)
{
    Shuju = Shuju1;
}



//计算总分
void Student::addall()
{
    Zong = English + Math + Chengxu + Shuju;
}




//输出所有信息
void Student::outinfo()
{
    cout << "学号 " << '\t' << "姓名 " << '\t' << "性别 " << '\t' << "英语成绩 " << '\t' << "数学成绩 " << '\t' << "程序设计成绩 " << '\t' << "数据结构成绩 " << '\t' << "总分" << endl;
    cout << num << '\t' << name << '\t' << xingbie << '\t' << English << '\t' << Math << '\t' << Chengxu << '\t' << Shuju << '\t' << Zong;
}


//构造函数
Student::Student(int num1, string name1, int xingbie1, double English1, double Math1, double Chengxu1, double Shuju1)
{
    num = num1;
    name = name1;
    xingbie = xingbie1;
    English = English1;
    Math = Math1;
    Chengxu = Chengxu1;
    Shuju = Shuju1;
}

#include <iostream>
#include"Student.h"
#include"work.h"

using namespace std;


int main()
{
    work a;
    a.inStudent();


}


  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-12-23 04:11
    关注

    肯定得崩溃啊。这个array是个指针的指针,你根本没有为它分配空间!!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月31日
  • 已采纳回答 12月23日
  • 修改了问题 12月23日
  • 创建了问题 12月23日

悬赏问题

  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加