int num[N]; char name[20],sex; double score1,score2,score3;cout<<"请输入学生的学号:"; cin>>s.num[N]; cout<<"请输入学生的姓名:"; cin>>s.name; cout<<"请输入学生的性别(m或f):"; cin>>s.sex; cout<<"请输入学生的语文成绩:"; cin>>s.score1; cout<<"请输入学生的数学成绩:"; cin>>s.score2; cout<<"请输入学生的英语成绩:"; cin>>s.score3; i.v.push_back(s); cout<<"添加成功,继续添加请按1,否则将退出添加页面"<<endl; cin>>a; if(a==1){return _0843杨晓慧1();} return ;
时间: 2024-03-14 09:49:00 浏览: 121
在您提供的代码中,无法找到定义变量 `N` 的代码行。但是,从您的代码中可以看出,您将学生的学号存储在数组 `num` 中。如果输出了错误的学号,可能有以下几个原因:
1. 学生的学号没有存储成功,或者存储时发生了错误,导致输出的学号不正确。
2. 输出学号的代码有误,可能是打印数组 `num` 时下标错误,或者输出格式不正确。
3. 学号的长度超过了定义数组 `num` 的长度,导致输出错误的学号。
建议您检查存储学号的代码和输出学号的代码,以确定问题的具体原因。
相关问题
完善class _0843杨晓慧 { public: int num; string name; char sex; double score1,score2,score3; }; class _0843杨晓慧_1:public _0843杨晓慧 { public: vector<_0843杨晓慧>v; _0843杨晓慧_1() ; void _0843杨晓慧1() ; void _0843杨晓慧2() ; void _0843杨晓慧3()
好的,您的问题是关于完善一个名为“_0843杨晓慧”的类及其派生类“_0843杨晓慧_1”的代码。根据您提供的代码片段,我可以帮您进行以下完善:
1. 在类“_0843杨晓慧”中添加一个构造函数,初始化该类的成员变量。
2. 在类“_0843杨晓慧_1”中添加三个成员函数,分别用于实现以下功能:
- _0843杨晓慧1():向类中添加学生记录。
- _0843杨晓慧2():按照学生学号进行查询,并输出该学生的信息。
- _0843杨晓慧3():按照学生学号进行删除,并将删除的学生记录转存到另一个删除库中。
以下是完善后的代码:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class _0843杨晓慧
{
public:
int num;
string name;
char sex;
double score1, score2, score3;
// 添加构造函数
_0843杨晓慧(int n, string nm, char s, double s1, double s2, double s3): num(n), name(nm), sex(s), score1(s1), score2(s2), score3(s3) {}
};
class _0843杨晓慧_1: public _0843杨晓慧
{
public:
vector<_0843杨晓慧> v;
_0843杨晓慧_1() {}
// 添加向类中添加学生记录的函数
void _0843杨晓慧1()
{
int n;
string nm;
char s;
double s1, s2, s3;
cout << "请输入学号、姓名、性别、三门课的成绩:";
cin >> n >> nm >> s >> s1 >> s2 >> s3;
_0843杨晓慧 stu(n, nm, s, s1, s2, s3);
v.push_back(stu);
}
// 添加按照学生学号进行查询,并输出该学生的信息的函数
void _0843杨晓慧2()
{
int n;
cout << "请输入要查询的学生学号:";
cin >> n;
for (int i = 0; i < v.size(); i++)
{
if (v[i].num == n)
{
cout << "学号:" << v[i].num << endl;
cout << "姓名:" << v[i].name << endl;
cout << "性别:" << v[i].sex << endl;
cout << "成绩1:" << v[i].score1 << endl;
cout << "成绩2:" << v[i].score2 << endl;
cout << "成绩3:" << v[i].score3 << endl;
return;
}
}
cout << "未找到该学生记录!" << endl;
}
// 添加按照学生学号进行删除,并将删除的学生记录转存到另一个删除库中的函数
void _0843杨晓慧3()
{
int n;
cout << "请输入要删除的学生学号:";
cin >> n;
for (int i = 0; i < v.size(); i++)
{
if (v[i].num == n)
{
_0843杨晓慧 stu = v[i];
v.erase(v.begin() + i);
// 将删除的学生记录转存到另一个删除库中
// ...
cout << "删除成功!" << endl;
return;
}
}
cout << "未找到该学生记录!" << endl;
}
};
```
需要注意的是,上述代码只是在您提供的代码基础上进行的完善,可能还需要根据具体需求进行进一步修改和调整。
学生类Student 数据成员(访问权限定义为protected): 学生姓名(char*name)、性别(boolsex、学号(intsno)、出生日期 (Birthdaybirth)、专业课门数(intnum)、专业课成绩(double*score) 成员西数(访问权限定义为public): •构造西数:对学生的姓名、性别、学号、出生日期、专业课门数进行初始 化 Student(char *_name, bool _sex, int _sno, int year, int month, int day, int _пит): 注意: 1.在构造两数中为score申请堆空间数组 2.加入异常处理机制 •拷贝构造西数:数据成员初始化(避免浅拷贝) Student(constStudent&xst); 注意:加入异常处理机制 •析构两数:释放系统资源 ~StudentO; •录入专业课的成绩voidinput(double*s);或voidinputtdoublestJ); •修改某门专业课的成绩 void changeScore(int i, double s); •修改专业课的门数 void changeNum(int _num); •计算专业课平均成缋(定义为const成员函数) double average) const; 注意:加入异常处理机制 •计算不及格专业课的门数(定义为const成员函数) intfaildconst; •品示学生基本信息(定义为const成员函数) void print) const; 要求:将类的定义与类成员
函数的实现放在头文件中,同时在头文件中添加必要的头文件引用和命名空间声明,以便其他程序可以直接包含该头文件使用该类。例如:
```c++
#ifndef STUDENT_H
#define STUDENT_H
#include <cstring>
#include <stdexcept>
#include <iostream>
namespace mynamespace {
class Birthday {
public:
Birthday(int year, int month, int day) : year_(year), month_(month), day_(day) {}
~Birthday() {}
int getYear() const { return year_; }
int getMonth() const { return month_; }
int getDay() const { return day_; }
private:
int year_;
int month_;
int day_;
};
class Student {
public:
Student(char *_name, bool _sex, int _sno, int year, int month, int day, int _num);
Student(const Student& xst);
~Student();
void input(double *s);
void input(const std::vector<double>& scores);
void changeScore(int i, double s);
void changeNum(int _num);
double average() const;
int faild() const;
void print() const;
protected:
char *name_;
bool sex_;
int sno_;
Birthday birth_;
int num_;
double *score_;
};
} // namespace mynamespace
#endif // STUDENT_H
```
注意,在实现类的成员函数时,需要加上类的命名空间前缀。例如:
```c++
void mynamespace::Student::input(double *s) {
for (int i = 0; i < num_; ++i) {
score_[i] = s[i];
}
}
void mynamespace::Student::input(const std::vector<double>& scores) {
if (scores.size() != num_) {
throw std::invalid_argument("the size of scores does not match the number of courses");
}
for (int i = 0; i < num_; ++i) {
score_[i] = scores[i];
}
}
void mynamespace::Student::changeScore(int i, double s) {
if (i < 0 || i >= num_) {
throw std::out_of_range("invalid course index");
}
score_[i] = s;
}
void mynamespace::Student::changeNum(int _num) {
if (_num < 0) {
throw std::invalid_argument("invalid number of courses");
}
double *new_score = new double[_num];
int n = std::min(num_, _num);
for (int i = 0; i < n; ++i) {
new_score[i] = score_[i];
}
delete[] score_;
score_ = new_score;
num_ = _num;
}
double mynamespace::Student::average() const {
if (num_ == 0) {
throw std::logic_error("no course scores");
}
double sum = 0;
for (int i = 0; i < num_; ++i) {
sum += score_[i];
}
return sum / num_;
}
int mynamespace::Student::faild() const {
int cnt = 0;
for (int i = 0; i < num_; ++i) {
if (score_[i] < 60) {
++cnt;
}
}
return cnt;
}
void mynamespace::Student::print() const {
std::cout << "Name: " << name_ << std::endl;
std::cout << "Sex: " << (sex_ ? "male" : "female") << std::endl;
std::cout << "Student Number: " << sno_ << std::endl;
std::cout << "Birthday: " << birth_.getYear() << "-" << birth_.getMonth() << "-" << birth_.getDay() << std::endl;
std::cout << "Number of Courses: " << num_ << std::endl;
std::cout << "Course Scores: ";
for (int i = 0; i < num_; ++i) {
std::cout << score_[i] << " ";
}
std::cout << std::endl;
}
```
阅读全文