#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();
}