定义一个学生类CStudent实现简单的学籍管理功能,要求该类至少实现以下功能: (1)录入学生的基本信息(包括姓名,学号,性别,年龄,专业,入学时间,各门功课成绩) (2)输出学生的基本信息 (3) 选课(输入时间和所选的课程) (4)统计每门课的学分绩点 (5)统计每学期的平均学分绩点 (6)统计重考科目 (7)统计重修科目 注意: (1)新设计的类中所需要的数据成员需要根据所要实现的功能自行设计; (2)用一个演示程序完成对所设计的新类的功能测试,并给出测试数据和实验结果; (3)为增加程序可读性,请在程序中对类成员进行适当注释说明;
时间: 2023-05-12 10:04:21 浏览: 290
好的,我可以回答这个问题。以下是一个简单的C++代码,实现了CStudent类的基本功能:
```cpp
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class CStudent {
public:
// 构造函数
CStudent(string name, string id, string gender, int age, string major, string admission_date) {
this->name = name;
this->id = id;
this->gender = gender;
this->age = age;
this->major = major;
this->admission_date = admission_date;
}
// 录入学生的基本信息
void input_basic_info() {
cout << "请输入学生的姓名:";
cin >> name;
cout << "请输入学生的学号:";
cin >> id;
cout << "请输入学生的性别:";
cin >> gender;
cout << "请输入学生的年龄:";
cin >> age;
cout << "请输入学生的专业:";
cin >> major;
cout << "请输入学生的入学时间:";
cin >> admission_date;
}
// 输出学生的基本信息
void output_basic_info() {
cout << "姓名:" << name << endl;
cout << "学号:" << id << endl;
cout << "性别:" << gender << endl;
cout << "年龄:" << age << endl;
cout << "专业:" << major << endl;
cout << "入学时间:" << admission_date << endl;
}
// 选课
void select_course(string course_name, int credit, double score, string date) {
course_names.push_back(course_name);
credits.push_back(credit);
scores.push_back(score);
dates.push_back(date);
}
// 统计每门课的学分绩点
void calculate_gpa() {
for (int i = 0; i < course_names.size(); i++) {
double gpa = 0.0;
if (scores[i] >= 90) {
gpa = 4.0;
} else if (scores[i] >= 80) {
gpa = 3.0;
} else if (scores[i] >= 70) {
gpa = 2.0;
} else if (scores[i] >= 60) {
gpa = 1.0;
}
gpas.push_back(gpa);
}
}
// 统计每学期的平均学分绩点
void calculate_semester_gpa() {
int semester_count = 0;
double total_gpa = 0.0;
for (int i = 0; i < dates.size(); i++) {
if (dates[i] != dates[i-1] && i != 0) {
double semester_gpa = total_gpa / semester_count;
semester_gpas.push_back(semester_gpa);
semester_count = 0;
total_gpa = 0.0;
}
total_gpa += gpas[i] * credits[i];
semester_count += credits[i];
}
double semester_gpa = total_gpa / semester_count;
semester_gpas.push_back(semester_gpa);
}
// 统计重考科目
void calculate_retest_courses() {
for (int i = 0; i < scores.size(); i++) {
if (scores[i] < 60) {
retest_courses.push_back(course_names[i]);
}
}
}
// 统计重修科目
void calculate_repair_courses() {
for (int i = 0; i < scores.size(); i++) {
if (scores[i] >= 60 && scores[i] < 70) {
repair_courses.push_back(course_names[i]);
}
}
}
private:
string name; // 姓名
string id; // 学号
string gender; // 性别
int age; // 年龄
string major; // 专业
string admission_date; // 入学时间
vector<string> course_names; // 课程名称
vector<int> credits; // 学分
vector<double> scores; // 成绩
vector<string> dates; // 选课时间
vector<double> gpas; // 学分绩点
vector<double> semester_gpas; // 学期平均学分绩点
vector<string> retest_courses; // 重考科目
vector<string> repair_courses; // 重修科目
};
int main() {
CStudent student("张三", "20180001", "男", 20, "计算机科学与技术", "2018-09-01");
// 录入学生的基本信息
student.input_basic_info();
// 输出学生的基本信息
student.output_basic_info();
// 选课
student.select_course("数据结构", 4, 85, "2018-09-01");
student.select_course("计算机组成原理", 3, 90, "2018-09-01");
student.select_course("操作系统", 3, 75, "2018-09-01");
// 统计每门课的学分绩点
student.calculate_gpa();
// 统计每学期的平均学分绩点
student.calculate_semester_gpa();
// 统计重考科目
student.calculate_retest_courses();
// 统计重修科目
student.calculate_repair_courses();
return 0;
}
```
阅读全文