请问一下为什么我的代码在输入学生成绩之后就自动结束程序了,编译器是dev-c++
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Course {
private:
string courseName;
string courseCode;
int credit;
string category; // "选修"或"必修"
int enrolledStudents;
int maxStudents;
int year;
public:
Course(string name, string code, int credit, string category, int maxStudents,int ye)
: courseName(name), courseCode(code), credit(credit), category(category), enrolledStudents(0), maxStudents(maxStudents) ,year(ye){}
string getName() { return courseName; }
string getCode() { return courseCode; }
int getCredit() { return credit; }
string getCategory() { return category; }
int getEnrolledStudents() { return enrolledStudents; }
int getMaxStudents() { return maxStudents; }
int getyear(){return year;}
void enrollStudent() {
if (enrolledStudents < maxStudents) {
enrolledStudents++;
cout << "选课成功!" << endl;
} else {
cout << "选课人数已满,无法再选该课程!" << endl;
}
}
};
class Student {
private:
string name;
string studentID;
int enrollmentYear;
string major;
vector<int> Credits;
vector<Course*> courses;
vector<int> grades;
public:
Student(string name, string id, int year, string major)
: name(name), studentID(id), enrollmentYear(year), major(major) {}
string getName() { return name; }
string getID() { return studentID; }
int getEnrollmentYear() { return enrollmentYear; }
string getMajor() { return major; }
vector<int> getCredits(){return Credits;}
vector<Course*> getCourses() { return courses; }
vector<int> getGrades() { return grades; }
void addCourse(Course* course) {
courses.push_back(course);
grades.push_back(0); // 默认成绩为0
}
void addCredits(Course* course) {
courses.push_back(course);
Credits.push_back(0); // 默认成绩为0
}
void updateGrade(Course* course, int grade) {
for (int i = 0; i < courses.size(); i++) {
if (courses[i] == course) {
grades[i] = grade;
if(grades[i]>=60)
{
Credits[i]+=courses[i]->getCredit();
}
break;
}
}
}
void printTranscript() {
cout << "学生姓名:" << name << endl;
cout << "学生学号:" << studentID << endl;
cout << "入学年份:" << enrollmentYear << endl;
cout << "专业:" << major << endl;
for (int i = 0; i < courses.size(); i++) {
cout << "课程名:" << courses[i]->getName() << endl;
cout << "成绩:" << grades[i] << endl;
cout << "学分:" << Credits[i] << endl;
cout << "课程类型:" << courses[i]->getCategory() << endl;
cout << "---------------------------" << endl;
}
}
};
vector<Student*> students;
vector<Course*> courses;
void addStudent() {
string name, id, major;
int year;
cout << "请输入学生姓名:";
cin >> name;
cout << "请输入学生学号:";
cin >> id;
cout << "请输入学生入学年份:";
cin >> year;
cout << "请输入学生专业:";
cin >> major;
Student* student = new Student(name, id, year, major);
students.push_back(student);
cout << "添加学生信息成功!" << endl;
}
void modifyStudent() {
string id;
cout << "请输入要修改的学生学号:";
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (students[i]->getID() == id) {
string name, major;
int year;
cout << "请输入学生姓名:";
cin >> name;
cout << "请输入学生入学年份:";
cin >> year;
cout << "请输入学生专业:";
cin >> major;
students[i] = new Student(name, id, year, major);
cout << "修改学生信息成功!" << endl;
return;
}
}
cout << "未找到该学生信息!" << endl;
}
void deleteStudent() {
string id;
cout << "请输入要删除的学生学号:";
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (students[i]->getID() == id) {
delete students[i];
students.erase(students.begin() + i);
cout << "删除学生信息成功!" << endl;
return;
}
}
cout << "未找到该学生信息!" << endl;
}
void queryStudent() {
string id;
cout << "请输入要查询的学生学号:";
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (students[i]->getID() == id) {
students[i]->printTranscript();
return;
}
}
cout << "未找到该学生信息!" << endl;
}
void addCourse() {
string name, code, category;
int credit, maxStudents,year;
cout << "请输入课程名称:";
cin >> name;
cout << "请输入课程代码:";
cin >> code;
cout << "请输入课程学分:";
cin >> credit;
cout << "请输入课程类型(选修/必修):";
cin >> category;
cout<<"请输入学年";
cin>>year;
cout << "请输入课程最大可选人数:";
cin >> maxStudents;
Course* course = new Course(name, code, credit, category, maxStudents,year);
courses.push_back(course);
cout << "添加课程信息成功!" << endl;
}
void modifyCourse() {
string code;int year;
cout << "请输入要修改的课程代码:";
cin >> code;
for (int i = 0; i < courses.size(); i++) {
if (courses[i]->getCode() == code) {
string name, category;
int credit, maxStudents;
cout << "请输入课程名称:";
cin >> name;
cout << "请输入课程学分:";
cin >> credit;
cout << "请输入课程类型(选修/必修):";
cin >> category;
cout<<"请输入学年";
cin>>year;
cout << "请输入课程最大可选人数:";
cin >> maxStudents;
courses[i] = new Course(name, code, credit, category, maxStudents,year);
cout << "修改课程信息成功!" << endl;
return;
}
}
cout << "未找到该课程信息!" << endl;
}
void deleteCourse() {
string code;
cout << "请输入要删除的课程代码:";
cin >> code;
for (int i = 0; i < courses.size(); i++) {
if (courses[i]->getCode() == code) {
delete courses[i];
courses.erase(courses.begin() + i);
cout << "删除课程信息成功!" << endl;
return;
}
}
cout << "未找到该课程信息!" << endl;
}
void queryCourse() {
string code;
cout << "请输入要查询的课程代码:";
cin >> code;
for (int i = 0; i < courses.size(); i++) {
if (courses[i]->getCode() == code) {
cout << "课程名称:" << courses[i]->getName() << endl;
cout << "课程学分:" << courses[i]->getCredit() << endl;
cout << "课程类型:" << courses[i]->getCategory() << endl;
cout << "已选人数:" << courses[i]->getEnrolledStudents() << endl;
cout << "最大可选人数:" << courses[i]->getMaxStudents() << endl;
return;
}
}
cout << "未找到该课程信息!" << endl;
}
void addCourseSelection() {
string studentID, courseCode;
cout << "请输入学生学号:";
cin >> studentID;
cout << "请输入课程代码:";
cin >> courseCode;
Student* student = NULL;
Course* course = NULL;
// 查找学生和课程对象
for (int i = 0; i < students.size(); i++) {
if (students[i]->getID() == studentID) {
student = students[i];
break;
}
}
for (int i = 0; i < courses.size(); i++) {
if (courses[i]->getCode() == courseCode) {
course = courses[i];
break;
}
}
// 添加选课信息
if (student && course) {
student->addCourse(course);
course->enrollStudent();
cout << "添加选课信息成功!" << endl;
} else {
cout << "学生或课程信息不存在!" << endl;
}
}
void modifyCourseSelection() {
string studentID, courseCode;
cout << "请输入学生学号:";
cin >> studentID;
cout << "请输入课程代码:";
cin >> courseCode;
Student* student = NULL;
Course* course = NULL;
// 查找学生和课程对象
for (int i = 0; i < students.size(); i++) {
if (students[i]->getID() == studentID) {
student = students[i];
break;
}
}
for (int i = 0; i < courses.size(); i++) {
if (courses[i]->getCode() == courseCode) {
course = courses[i];
break;
}
}
// 修改成绩
if (student && course) {
int grade;
cout << "请输入成绩:";
cin >> grade;
student->updateGrade(course, grade);
cout << "修改选课信息成功!" << endl;
} else {
cout << "学生或课程信息不存在!" << endl;
}
}
void deleteCourseSelection() {
string studentID, courseCode;
cout << "请输入学生学号:";
cin >> studentID;
cout << "请输入课程代码:";
cin >> courseCode;
Student* student = NULL;
Course* course = NULL;
// 查找学生和课程对象
for (int i = 0; i < students.size(); i++) {
if (students[i]->getID() == studentID) {
student = students[i];
break;
}
}
for (int i = 0; i < courses.size(); i++) {
if (courses[i]->getCode() == courseCode) {
course = courses[i];
break;
}
}
// 删除选课信息
if (student && course) {
vector<Course*> studentCourses = student->getCourses();
vector<int> studentGrades = student->getGrades();
for (int i = 0; i < studentCourses.size(); i++) {
if (studentCourses[i] == course) {
studentCourses.erase(studentCourses.begin() + i);
studentGrades.erase(studentGrades.begin() + i);
student->addCourse(studentCourses[i]);
cout << "删除选课信息成功!" << endl;
return;
}
}
} else {
cout << "学生或课程信息不存在!" << endl;
}
}
void calculateStudentCredits(Student* student, int year) {
int totalCredits = 0;
int requiredCredits = 0;
int electiveCredits = 0;
vector<Course*> studentCourses = student->getCourses();
vector<int> studentGrades = student->getGrades();
for (int i = 0; i < studentCourses.size(); i++) {
if (studentCourses[i]->getCategory() == "必修") {
requiredCredits += studentCourses[i]->getCredit();
if (studentGrades[i] >= 60) {
totalCredits += studentCourses[i]->getCredit();
}
} else if (studentCourses[i]->getCategory() == "选修") {
electiveCredits += studentCourses[i]->getCredit();
if (studentGrades[i] >= 60) {
totalCredits += studentCourses[i]->getCredit();
}
}
}
cout << "学生姓名:" << student->getName() << endl;
cout << "学生学号:" << student->getID() << endl;
cout << "学年:" << year << endl;
cout << "必修总学分:" << requiredCredits << endl;
cout << "选修总学分:" << electiveCredits << endl;
cout << "已获得学分:" << totalCredits << endl;
if (requiredCredits >= 30 && electiveCredits >= 10) {
cout << "学生已达到学分标准!" << endl;
} else {
cout << "学生未达到学分标准!" << endl;
}
}
void queryStudentCredits() {system("cls");
string id;
cout << "请输入要查询的学生学号:";
cin >> id;
for (int i = 0; i < students.size(); i++) {
if (students[i]->getID() == id) {
int year;
cout << "请输入学年:";
cin >> year;
calculateStudentCredits(students[i], year);
return;
}
}
cout << "未找到该学生信息!" << endl;system("pause");
}
void calculateAllStudentsCredits() {
for (int i = 0; i < students.size(); i++) {
calculateStudentCredits(students[i], students[i]->getEnrollmentYear());
}
}
int main() {
int choice;
while (true) {
cout << "========== 学生选课系统 ==========" << endl;
cout << "1. 增加学生信息" << endl;
cout << "2. 修改学生信息" << endl;
cout << "3. 删除学生信息" << endl;
cout << "4. 查询学生信息" << endl;
cout << "5. 录入学生成绩" << endl;
cout << "6. 增加课程信息" << endl;
cout << "7. 修改课程信息" << endl;
cout << "8. 删除课程信息" << endl;
cout << "9. 查询课程信息" << endl;
cout << "10. 增加学生选课信息" << endl;
cout << "11. 删除学生选课信息" << endl;
cout << "12. 查询学生学分情况" << endl;
cout << "13. 所有学生学分排名" << endl;
cout << "0. 退出" << endl;
cout << "请输入功能选项:";
cin >> choice;
switch (choice) {
case 1:
addStudent();
break;
case 2:
modifyStudent();
break;
case 3:
deleteStudent();
break;
case 4:
queryStudent();
break;
case 5:
modifyCourseSelection();
break;
case 6:
addCourse();
break;
case 7:
modifyCourse();
break;
case 8:
deleteCourse();
break;
case 9:
queryCourse();
break;
case 10:
addCourseSelection();
break;
case 11:
deleteCourseSelection();
break;
case 12:
queryStudentCredits();
break;
case 13:
calculateAllStudentsCredits();
break;
case 0:
cout << "程序已退出。" << endl;
return 0;
default:
cout << "无效的选择!请重新选择";
}
cout << endl;
}
return 0;}
代码不对吧
cout << "5. 录入学生成绩" << endl;
可是实际上执行的是修改: modifyCourseSelection();