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

编程实训小组课题——学生成绩管理系统
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用