定义一个学生类CStudent实现简单的学籍管理功能,要求该类至少实现以下功能: (1)录入学生的基本信息(包括姓名,学号,性别,年龄,专业,入学时间,各门功课成绩) (2)输出学生的基本信息 (3) 选课(输入时间和所选的课程) (4)统计每门课的学分绩点 (5)统计每学期的平均学分绩点 (6)统计重考科目 (7)统计重修科目 注意: (1)新设计的类中所需要的数据成员需要根据所要实现的功能自行设计; (2)用一个演示程序完成对所设计的新类的功能测试,并给出测试数据和实验结果; (3)为增加程序可读性,请在程序中对类成员进行适当注释说明;
时间: 2023-05-12 22:04:17 浏览: 133
好的,我可以回答这个问题。以下是一个简单的C++代码实现:
```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_time) {
this->name = name;
this->id = id;
this->gender = gender;
this->age = age;
this->major = major;
this->admission_time = admission_time;
}
// 录入学生的基本信息
void input_basic_info() {
cout << "请输入学生的姓名:";
cin >> name;
cout << "请输入学生的学号:";
cin >> id;
cout << "请输入学生的性别:";
cin >> gender;
cout << "请输入学生的年龄:";
cin >> age;
cout << "请输入学生的专业:";
cin >> major;
cout << "请输入学生的入学时间:";
cin >> admission_time;
}
// 输出学生的基本信息
void output_basic_info() {
cout << "姓名:" << name << endl;
cout << "学号:" << id << endl;
cout << "性别:" << gender << endl;
cout << "年龄:" << age << endl;
cout << "专业:" << major << endl;
cout << "入学时间:" << admission_time << endl;
}
// 选课
void select_course(string course_name, int credit) {
courses.push_back(course_name);
credits.push_back(credit);
}
// 统计每门课的学分绩点
void calculate_gpa() {
for (int i = 0; i < courses.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 total_credits = 0;
double total_gpa = 0.0;
for (int i = 0; i < courses.size(); i++) {
total_credits += credits[i];
total_gpa += credits[i] * gpas[i];
}
double semester_gpa = total_gpa / total_credits;
semester_gpas.push_back(semester_gpa);
}
// 统计重考科目
void calculate_retest_courses() {
for (int i = 0; i < courses.size(); i++) {
if (scores[i] < 60) {
retest_courses.push_back(courses[i]);
}
}
}
// 统计重修科目
void calculate_repair_courses() {
for (int i = 0; i < courses.size(); i++) {
if (scores[i] >= 60 && scores[i] < 70) {
repair_courses.push_back(courses[i]);
}
}
}
private:
string name; // 姓名
string id; // 学号
string gender; // 性别
int age; // 年龄
string major; // 专业
string admission_time; // 入学时间
vector<string> courses; // 选修的课程
vector<int> credits; // 课程学分
vector<int> scores; // 课程成绩
vector<double> gpas; // 课程学分绩点
vector<double> semester_gpas; // 学期平均学分绩点
vector<string> retest_courses; // 重考科目
vector<string> repair_courses; // 重修科目
};
int main() {
CStudent student("张三", "20210001", "男", 20, "计算机科学与技术", "2021年9月1日");
student.input_basic_info();
student.output_basic_info();
student.select_course("高等数学", 4);
student.select_course("线性代数", 3);
student.select_course("计算机组成原理", 4);
student.scores.push_back(85);
student.scores.push_back(90);
student.scores.push_back(75);
student.calculate_gpa();
student.calculate_semester_gpa();
student.calculate_retest_courses();
student.calculate_repair_courses();
return 0;
}
```
这个程序实现了一个简单的学籍管理系统,包括录入学生的基本信息、输出学生的基本信息、选课、统计每门课的学分绩点、统计每学期的平均学分绩点、统计重考科目和统计重修科目等功能。
阅读全文