C++程序设计班级综合测评管理系统

C++程序设计:班级综合测评管理系统

功能要求

    1. 学生信息录入

    1. 课程成绩录入

    1. 计算课程平均分

    1. 德育分评定

    1. 体育分评定

    1. 综合测评计算

    1. 成绩排序

    1. 查询功能

    1. 数据保存与读取
      需要每一个都有输出结果

功能概述

这段代码实现了一个功能较为全面的成绩管理系统。它能够完成学生信息的录入、课程成绩的录入、课程平均分的计算、德育分和体育分的评定、综合测评分的计算、成绩排序、学生信息查询以及数据的保存与读取等功能。通过菜单驱动的方式,用户可以根据自己的需求选择相应的操作,方便地管理和查询学生的成绩信息。

    1. 学生结构体:包含学生的基本信息和成绩。

    1. 功能函数
        • inputStudentInfo:录入学生基本信息。

        • inputScores:录入学生成绩。

        • calculateAverageScores:计算课程平均分。 -evaluateMoralScoresevaluatePhysicalScores:分别评定德育分和体育分。

        • calculateComprehensiveScores:计算综合测评分。

        • sortStudentsByScores:按综合测评分排序。

        • queryStudentInfo:查询学生信息。

        • saveDataToFileloadDataFromFile:保存和加载数据。

        • displayStudents:显示所有学生信息。

    1. 主函数:提供菜单驱动的交互界面,用户可以根据选项执行不同的功能。

使用方法

    1. 将代码保存为一个 .cpp 文件,例如 GradeManagementSystem.cpp

    1. 使用C++编译器(如g++)编译代码。

    1. 运行程序,根据菜单提示操作。

参考代码如下:

#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <algorithm>
#include <iomanip>

using namespace std;

struct Student {
    string name;
    int id;
    vector<int> scores; // 各科成绩
    int moralScore; // 德育分
    int physicalScore; // 体育分
    double averageScore; // 平均分
    double comprehensiveScore; // 综合测评分
};

void inputStudentInfo(vector<Student>& students) {
    cout << "请输入学生信息(输入-1结束):" << endl;
    while (true) {
        Student student;
        cout << "姓名:";
        cin >> student.name;
        if (student.name == "-1") break;
        cout << "学号:";
        cin >> student.id;
        students.push_back(student);
    }
}

void inputScores(vector<Student>& students) {
    cout << "请输入学生成绩(输入-1结束):" << endl;
    for (auto& student : students) {
        cout << "学生:" << student.name << " (" << student.id << ")" << endl;
        cout << "请输入课程成绩(用空格分隔,输入-1结束):";
        int score;
        while (true) {
            cin >> score;
            if (score == -1) break;
            student.scores.push_back(score);
        }
    }
}

void calculateAverageScores(vector<Student>& students) {
    for (auto& student : students) {
        double sum = 0;
        for (int score : student.scores) {
            sum += score;
        }
        student.averageScore = student.scores.empty() ? 0 : sum / student.scores.size();
    }
}

void evaluateMoralScores(vector<Student>& students) {
    cout << "请输入学生德育分(输入-1结束):" << endl;
    for (auto& student : students) {
        cout << "学生:" << student.name << " (" << student.id << ")" << endl;
        cout << "德育分:";
        cin >> student.moralScore;
    }
}

void evaluatePhysicalScores(vector<Student>& students) {
    cout << "请输入学生体育分(输入-1结束):" << endl;
    for (auto& student : students) {
        cout << "学生:" << student.name << " (" << student.id << ")" << endl;
        cout << "体育分:";
        cin >> student.physicalScore;
    }
}

void calculateComprehensiveScores(vector<Student>& students) {
    for (auto& student : students) {
        student.comprehensiveScore = 0.6 * student.averageScore + 0.2 * student.moralScore + 0.2 * student.physicalScore;
    }
}

void sortStudentsByScores(vector<Student>& students) {
    sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
        return a.comprehensiveScore > b.comprehensiveScore;
    });
}

void queryStudentInfo(const vector<Student>& students) {
    cout << "请输入要查询的学生学号:";
    int id;
    cin >> id;
    for (const auto& student : students) {
        if (student.id == id) {
            cout << "姓名:" << student.name << endl;
            cout << "学号:" << student.id << endl;
            cout << "平均分:" << fixed << setprecision(2) << student.averageScore << endl;
            cout << "德育分:" << student.moralScore << endl;
            cout << "体育分:" << student.physicalScore << endl;
            cout << "综合测评分:" << fixed << setprecision(2) << student.comprehensiveScore << endl;
            return;
        }
    }
    cout << "未找到该学生信息!" << endl;
}

void saveDataToFile(const vector<Student>& students) {
    ofstream outFile("students.txt");
    if (!outFile) {
        cout << "无法打开文件进行写入!" << endl;
        return;
    }
    for (const auto& student : students) {
        outFile << student.name << " " << student.id << " ";
        for (int score : student.scores) {
            outFile << score << " ";
        }
        outFile << student.moralScore << " " << student.physicalScore << " ";
        outFile << fixed << setprecision(2) << student.averageScore << " ";
        outFile << fixed << setprecision(2) << student.comprehensiveScore << endl;
    }
    outFile.close();
    cout << "数据已保存到文件!" << endl;
}

void loadDataFromFile(vector<Student>& students) {
    ifstream inFile("students.txt");
    if (!inFile) {
        cout << "无法打开文件进行读取!" << endl;
        return;
    }
    students.clear();
    string name;
    int id;
    while (inFile >> name >> id) {
        Student student;
        student.name = name;
        student.id = id;
        int score;
        while (inFile >> score && score != -1) {
            student.scores.push_back(score);
        }
        inFile.unget(); // 回退一个字符,以便读取德育分
        inFile >> student.moralScore >> student.physicalScore;
        inFile >> student.averageScore >> student.comprehensiveScore;
        students.push_back(student);
    }
    inFile.close();
    cout << "数据已从文件加载!" << endl;
}

void displayStudents(const vector<Student>& students) {
    cout << "学生信息列表:" << endl;
    for (const auto& student : students) {
        cout << "姓名:" << student.name << " 学号:" << student.id << " 平均分:" << fixed << setprecision(2) << student.averageScore
             << " 德育分:" << student.moralScore << " 体育分:" << student.physicalScore
             << " 综合测评分:" << fixed << setprecision(2) << student.comprehensiveScore << endl;
    }
}

int main() {
    vector<Student> students;

    int choice;
    do {
        cout << "\n1. 学生信息录入\n";
        cout << "2. 课程成绩录入\n";
        cout << "3. 计算课程平均分\n";
        cout << "4. 德育分评定\n";
        cout << "5. 体育分评定\n";
        cout << "6. 综合测评计算\n";
        cout << "7. 成绩排序\n";
        cout << "8. 查询功能\n";
        cout << "9. 数据保存到文件\n";
        cout << "10. 从文件加载数据\n";
        cout << "11. 显示所有学生信息\n";
        cout << "0. 退出\n";
        cout << "请输入选项:";
        cin >> choice;

        switch (choice) {
            case 1:
                inputStudentInfo(students);
                break;
            case 2:
                inputScores(students);
                break;
            case 3:
                calculateAverageScores(students);
                break;
            case 4:
                evaluateMoralScores(students);
                break;
            case 5:
                evaluatePhysicalScores(students);
                break;
            case 6:
                calculateComprehensiveScores(students);
                break;
            case 7:
                sortStudentsByScores(students);
                break;
            case 8:
                queryStudentInfo(students);
                break;
            case 9:
                saveDataToFile(students);
                break;
            case 10:
                loadDataFromFile(students);
                break;
            case 11:
                displayStudents(students);
                break;
            case 0:
                cout << "退出系统!" << endl;
                break;
            default:
                cout << "无效选项,请重新输入!" << endl;
        }
    } while (choice != 0);

    return 0;
}

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容