heihe1_ 2023-02-22 11:01 采纳率: 50%
浏览 156
已结题

编程实训小组课题——学生成绩管理系统

要求
1.显示所有学生信(学号,姓名)
2.查询个人成绩(语数外)
3.修改成绩(学号,课程)
4.按平均分排序显示(升序)
5.按总分排序(升序)
注:上1到5需单独列出代码

  • 写回答

8条回答 默认 最新

  • CodeBytes 2023-02-22 14:31
    关注

    该回答引用ChatGPT

    有疑问可以回复我

    #include <iostream>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    
    // 定义学生信息结构体
    struct Student {
        string id;      // 学号
        string name;    // 姓名
        float chinese;  // 语文成绩
        float math;     // 数学成绩
        float english;  // 英语成绩
        float total;    // 总分
        float average;  // 平均分
    };
    
    // 显示所有学生信息
    void display_all(Student *students, int count) {
        cout << "学号\t姓名\n";
        for (int i = 0; i < count; i++) {
            cout << students[i].id << "\t" << students[i].name << endl;
        }
    }
    
    // 查询个人成绩
    void query_score(Student *students, int count) {
        string id;
        cout << "请输入学生学号:";
        cin >> id;
        for (int i = 0; i < count; i++) {
            if (students[i].id == id) {
                cout << "学号\t语文\t数学\t英语\n";
                cout << students[i].id << "\t" << students[i].chinese << "\t" << students[i].math << "\t" << students[i].english << endl;
                return;
            }
        }
        cout << "未找到该学生的成绩记录。\n";
    }
    
    // 修改成绩
    void modify_score(Student *students, int count) {
        string id;
        string course;
        float score;
        cout << "请输入学生学号:";
        cin >> id;
        cout << "请输入要修改的课程(chinese/math/english):";
        cin >> course;
        cout << "请输入新的成绩:";
        cin >> score;
        for (int i = 0; i < count; i++) {
            if (students[i].id == id) {
                if (course == "chinese") {
                    students[i].chinese = score;
                } else if (course == "math") {
                    students[i].math = score;
                } else if (course == "english") {
                    students[i].english = score;
                } else {
                    cout << "无效的课程名称。\n";
                    return;
                }
                students[i].total = students[i].chinese + students[i].math + students[i].english;
                students[i].average = students[i].total / 3;
                cout << "成绩修改成功。\n";
                return;
            }
        }
        cout << "未找到该学生的成绩记录。\n";
    }
    
    // 按平均分排序显示
    bool compare_average(const Student &s1, const Student &s2) {
        return s1.average < s2.average;
    }
    
    void sort_by_average(Student *students, int count) {
        sort(students, students + count, compare_average);
        cout << "学号\t姓名\t平均分\n";
        for (int i = 0; i < count; i++) {
            cout << students[i].id << "\t" << students[i].name << "\t" << students[i].average << endl;
        }
    }
    
    // 按总分排序显示
    bool compare_total(const Student &s1, const Student &s2) {
        return s1.total < s2.total;
    }
    
    void sort_by_total(Student *students, int count) {
        sort(students, students + count, compare_total);
        cout << "学号\t姓名\t总分\n";
        for (int i = 0; i < count; i++) {
            cout << students[i].id << "\t" << students[i].name << "\t" << students[i].total << endl;
        }
    }
    
    int main() {
        int n;
        cout << "请输入学生数量:";
        cin >> n;
        Student *students = new Student[n];
        for (int i = 0; i < n; i++) {
            cout << "请输入第" << i + 1 << "个学生的信息(学号、姓名、语文成绩、数学成绩、英语成绩):";
            cin >> students[i].id >> students[i].name >> students[i].chinese >> students[i].math >> students[i].english;
            students[i].total = students[i].chinese + students[i].math + students[i].english;
            students[i].average = students[i].total / 3;
        }
    
        int choice;
        while (true) {
            cout << "请选择操作:\n";
            cout << "1. 显示所有学生信息\n";
            cout << "2. 查询个人成绩\n";
            cout << "3. 修改成绩\n";
            cout << "4. 按平均分排序显示\n";
            cout << "5. 按总分排序显示\n";
            cout << "6. 退出\n";
            cout << "请输入操作编号:";
            cin >> choice;
            switch (choice) {
                case 1:
                    display_all(students, n);
                    break;
                case 2:
                    query_score(students, n);
                    break;
                case 3:
                    modify_score(students, n);
                    break;
                case 4:
                    sort_by_average(students, n);
                    break;
                case 5:
                    sort_by_total(students, n);
                    break;
                case 6:
                    cout << "谢谢使用!\n";
                    return 0;
                default:
                    cout << "无效的操作编号。\n";
                    break;
            }
        }
    
        delete[] students;
        return 0;
    }
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 2月22日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助