C++ 实现学生成绩管理系统

C++ 实现学生成绩管理系统

思路:

  1. 定义 Student 类,包含学生的基本信息和成绩。
  2. 实现添加学生、删除学生、修改成绩、显示所有学生成绩和查找学生的功能。
  3. 使用向量(vector)存储学生信息。
#include <iostream>
#include <vector>
#include <string>

using namespace std;

// Student 类定义
class Student {
public:
    string name;
    int id;
    vector<int> scores;

    Student(string n, int i) : name(n), id(i) {}

    // 计算平均成绩
    float getAverageScore() {
        int total = 0;
        for (int score : scores) {
            total += score;
        }
        return scores.empty() ? 0 : (float)total / scores.size();
    }

    // 显示学生信息
    void display() {
        cout << "ID: " << id << ", Name: " << name << ", Average Score: " << getAverageScore() << endl;
    }
};

// 成绩管理系统类定义
class GradeManagementSystem {
private:
    vector<Student> students;

public:
    // 添加学生
    void addStudent(string name, int id) {
        students.push_back(Student(name, id));
    }

    // 删除学生
    void removeStudent(int id) {
        for (auto it = students.begin(); it != students.end(); ++it) {
            if (it->id == id) {
                students.erase(it);
                cout << "Student ID " << id << " removed." << endl;
                return;
            }
        }
        cout << "Student ID " << id << " not found." << endl;
    }

    // 添加成绩
    void addScore(int id, int score) {
        for (Student &student : students) {
            if (student.id == id) {
                student.scores.push_back(score);
                cout << "Score added to student ID " << id << "." << endl;
                return;
            }
        }
        cout << "Student ID " << id << " not found." << endl;
    }

    // 显示所有学生成绩
    void displayAllStudents() {
        for (Student &student : students) {
            student.display();
        }
    }

    // 查找学生
    void findStudent(int id) {
        for (Student &student : students) {
            if (student.id == id) {
                student.display();
                return;
            }
        }
        cout << "Student ID " << id << " not found." << endl;
    }
};

int main() {
    GradeManagementSystem gms;
    int choice, id, score;
    string name;

    while (true) {
        cout << "\nStudent Grade Management System\n";
        cout << "1. Add Student\n";
        cout << "2. Remove Student\n";
        cout << "3. Add Score\n";
        cout << "4. Display All Students\n";
        cout << "5. Find Student\n";
        cout << "6. Exit\n";
        cout << "Enter your choice: ";
        cin >> choice;

        switch (choice) {
            case 1:
                cout << "Enter student name: ";
                cin >> name;
                cout << "Enter student ID: ";
                cin >> id;
                gms.addStudent(name, id);
                break;
            case 2:
                cout << "Enter student ID to remove: ";
                cin >> id;
                gms.removeStudent(id);
                break;
            case 3:
                cout << "Enter student ID to add score: ";
                cin >> id;
                cout << "Enter score: ";
                cin >> score;
                gms.addScore(id, score);
                break;
            case 4:
                gms.displayAllStudents();
                break;
            case 5:
                cout << "Enter student ID to find: ";
                cin >> id;
                gms.findStudent(id);
                break;
            case 6:
                return 0;
            default:
                cout << "Invalid choice. Please try again.\n";
        }
    }
}
  • 20
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
学生成绩管理系统是一个比较常见的项目,主要涉及到学生信息、课程信息和成绩信息的管理。下面是C++实现学生成绩管理系统的基本思路。 1. 定义学生类 首先,需要定义一个学生类,包含学生的基本信息,如学号、姓名、性别等,以及一个成绩数组,用来存储学生的各门课程成绩。 ```c++ class Student { public: string id; //学号 string name; //姓名 string gender; //性别 float scores[3]; //成绩数组,存储三门课程的成绩 }; ``` 2. 定义课程类 接下来,需要定义一个课程类,包含课程的基本信息,如课程号、课程名称、学分等。 ```c++ class Course { public: string id; //课程号 string name; //课程名称 int credit; //学分 }; ``` 3. 定义成绩类 成绩类用来记录一个学生在一门课程中的成绩情况,包含学生的学号、课程号和成绩。 ```c++ class Score { public: string student_id; //学生学号 string course_id; //课程号 float score; //成绩 }; ``` 4. 定义学生信息管理类 学生信息管理类用来管理学生的基本信息,包括添加学生、删除学生、修改学生信息、查找学生信息等操作。 ```c++ class StudentManager { public: vector<Student> students; //学生数组,存储所有学生信息 //添加学生 void addStudent(Student s); //删除学生 void deleteStudent(string id); //修改学生信息 void modifyStudent(string id); //查找学生信息 Student findStudent(string id); //打印所有学生信息 void printAllStudents(); }; ``` 5. 定义课程信息管理类 课程信息管理类用来管理课程的基本信息,包括添加课程、删除课程、修改课程信息、查找课程信息等操作。 ```c++ class CourseManager { public: vector<Course> courses; //课程数组,存储所有课程信息 //添加课程 void addCourse(Course c); //删除课程 void deleteCourse(string id); //修改课程信息 void modifyCourse(string id); //查找课程信息 Course findCourse(string id); //打印所有课程信息 void printAllCourses(); }; ``` 6. 定义成绩信息管理类 成绩信息管理类用来管理学生的成绩信息,包括添加成绩、删除成绩、修改成绩、查找成绩等操作。 ```c++ class ScoreManager { public: vector<Score> scores; //成绩数组,存储所有成绩信息 //添加成绩 void addScore(Score s); //删除成绩 void deleteScore(string student_id, string course_id); //修改成绩 void modifyScore(string student_id, string course_id); //查找成绩 float findScore(string student_id, string course_id); //打印所有成绩信息 void printAllScores(); }; ``` 7. 实现主函数 在主函数中,需要实例化学生信息管理类、课程信息管理类和成绩信息管理类,然后通过菜单选择不同的操作。 ```c++ int main() { StudentManager sm; CourseManager cm; ScoreManager scm; int choice; while (true) { //打印菜单 cout << "1.添加学生\n2.删除学生\n3.修改学生信息\n4.查找学生信息\n5.打印所有学生信息\n" << "6.添加课程\n7.删除课程\n8.修改课程信息\n9.查找课程信息\n10.打印所有课程信息\n" << "11.添加成绩\n12.删除成绩\n13.修改成绩\n14.查找成绩\n15.打印所有成绩信息\n" << "16.退出\n"; cin >> choice; switch (choice) { case 1: //添加学生操作 break; case 2: //删除学生操作 break; case 3: //修改学生信息操作 break; case 4: //查找学生信息操作 break; case 5: //打印所有学生信息操作 break; case 6: //添加课程操作 break; case 7: //删除课程操作 break; case 8: //修改课程信息操作 break; case 9: //查找课程信息操作 break; case 10: //打印所有课程信息操作 break; case 11: //添加成绩操作 break; case 12: //删除成绩操作 break; case 13: //修改成绩操作 break; case 14: //查找成绩操作 break; case 15: //打印所有成绩信息操作 break; case 16: //退出程序 return 0; default: cout << "输入有误,请重新输入!\n"; break; } } return 0; } ``` 以上就是C++实现学生成绩管理系统的基本思路,具体的实现细节需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PeterClerk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值