要求
1.显示所有学生信(学号,姓名)
2.查询个人成绩(语数外)
3.修改成绩(学号,课程)
4.按平均分排序显示(升序)
5.按总分排序(升序)
注:上1到5需单独列出代码
该回答引用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;
}
基于C++编写的学生成绩管理系统
显示学生所有信息
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
// 学生信息结构体
struct Student {
string id; // 学号
string name; // 姓名
int score[3]; // 成绩,分别为语文、数学、英语
int totalScore; // 总分
double avgScore; // 平均分
};
// 全局变量,存储所有学生信息
vector<Student> students;
// 显示所有学生信息
void showAllStudents() {
cout << "学号\t姓名\t语文\t数学\t英语\t总分\t平均分" << endl;
for (auto& student : students) {
cout << student.id << "\t" << student.name << "\t" << student.score[0] << "\t"
<< student.score[1] << "\t" << student.score[2] << "\t" << student.totalScore
<< "\t" << student.avgScore << endl;
}
}
// 显示所有学生信息
void showAllStudents() {
cout << "学号\t姓名\t语文\t数学\t英语\t总分\t平均分" << endl;
for (auto& s : students) {
cout << s.id << "\t" << s.name << "\t" << s.score[0] << "\t"
<< s.score[1] << "\t" << s.score[2] << "\t" << s.totalScore
<< "\t" << s.avgScore << endl;
}
}
查询个人成绩
void queryScore() {
string id;
cout << "请输入学号:";
cin >> id;
for (auto& s : students) {
if (s.id == id) {
cout << "学号\t姓名\t语文\t数学\t英语\t总分\t平均分" << endl;
cout << s.id << "\t" << s.name << "\t" << s.score[0] << "\t"
<< s.score[1] << "\t" << s.score[2] << "\t" << s.totalScore
<< "\t" << s.avgScore << endl;
return;
}
}
cout << "未找到学号为" << id << "的学生" << endl;
}
修改学生成绩
void modifyScore() {
string id;
int course, score;
cout << "请输入学号和课程编号(1表示语文,2表示数学,3表示英语):";
cin >> id >> course;
if (course < 1 || course > 3) {
cout << "无效的课程编号" << endl;
return;
}
for (auto& s : students) {
if (s.id == id) {
cout << "当前成绩为:" << s.score[course - 1] << endl;
cout << "请输入新成绩:";
cin >> score;
s.score[course - 1] = score;
s.totalScore = s.score[0] + s.score[1] + s.score[2];
s.avgScore = s.totalScore / 3.0;
cout << "成绩修改成功" << endl;
return;
}
}
cout << "未找到学号为" << id << "的学生" << endl;
}
按平均分排序显示
void sortByAvgScore() {
sort(students.begin(), students.end(), [](const Student& s1, const Student& s2) {
return s1.avgScore < s2.avgScore;
});
showAllStudents();
}
按总分排序显示
void sortByTotalScore() {
sort(students.begin(), students.end(), [](const Student&
以下答案基于ChatGPT与GISer Liu编写:
以下是一个简单的学生成绩管理系统的代码实现,主要包括上述五个要求:
# 定义一个学生类
class Student:
def __init__(self, sid, name, score):
self.sid = sid
self.name = name
self.score = score
def __repr__(self):
return f'Student(sid={self.sid}, name={self.name}, score={self.score})'
# 定义一个学生列表
students = [
Student('001', 'Tom', {'语文': 80, '数学': 90, '英语': 70}),
Student('002', 'Jerry', {'语文': 90, '数学': 70, '英语': 80}),
Student('003', 'Mike', {'语文': 60, '数学': 80, '英语': 90}),
Student('004', 'Lucy', {'语文': 70, '数学': 60, '英语': 80}),
Student('005', 'John', {'语文': 80, '数学': 80, '英语': 80}),
]
# 1.显示所有学生信息
def show_students():
print('所有学生信息如下:')
for student in students:
print(student)
# 2.查询个人成绩
def query_score(sid):
for student in students:
if student.sid == sid:
return student.score
print('没有找到该学生的信息')
return None
# 3.修改成绩
def modify_score(sid, course, score):
for student in students:
if student.sid == sid:
student.score[course] = score
print(f'{sid}的{course}成绩已修改为{score}')
return
print('没有找到该学生的信息')
# 4.按平均分排序显示(升序)
def sort_by_avg_score():
sorted_students = sorted(students, key=lambda s: sum(s.score.values()) / len(s.score), reverse=False)
print('按平均分排序后的学生信息如下:')
for student in sorted_students:
print(student)
# 5.按总分排序(升序)
def sort_by_total_score():
sorted_students = sorted(students, key=lambda s: sum(s.score.values()), reverse=False)
print('按总分排序后的学生信息如下:')
for student in sorted_students:
print(student)
# 测试代码
show_students()
print()
score = query_score('001')
if score is not None:
print('001的成绩如下:', score)
print()
modify_score('002', '数学', 75)
print()
sort_by_avg_score()
print()
sort_by_total_score()
运行以上代码,可以得到如下输出:
所有学生信息如下:
Student(sid=001, name=Tom, score={'语文': 80, '数学': 90, '英语': 70})
Student(sid=002, name=Jerry, score={'语文': 90, '数学': 70, '英语': 80})
Student(sid=003, name=Mike, score={'语文': 60, '数学': 80, '英语': 90})
参考GPT和自己的思路,以下是一个简单的学生成绩管理系统的C++代码。在这个系统中,每个学生有一个唯一的学号,姓名和三个科目的成绩(语文,数学和英语)。
要求1:显示所有学生信息
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 定义学生结构体
struct Student {
string id;
string name;
int chinese_score;
int math_score;
int english_score;
};
// 显示所有学生信息
void display_all_students(const vector<Student>& students) {
cout << "所有学生信息:" << endl;
for (const auto& student : students) {
cout << "学号:" << student.id << ",姓名:" << student.name << endl;
}
}
要求2:查询个人成绩
// 查询个人成绩
void query_individual_score(const vector<Student>& students) {
string id;
cout << "请输入学号:";
cin >> id;
// 查找学号对应的学生
auto it = find_if(students.begin(), students.end(), [&](const Student& s) {
return s.id == id;
});
if (it != students.end()) {
// 找到了学生,显示其成绩
cout << "学号:" << it->id << ",姓名:" << it->name << endl;
cout << "语文成绩:" << it->chinese_score << ",数学成绩:" << it->math_score << ",英语成绩:" << it->english_score << endl;
} else {
// 没有找到学生
cout << "没有找到该学生!" << endl;
}
}
要求3:修改成绩
void modifyScore() {
string id;
string course;
double score;
cout << "请输入学号:";
cin >> id;
cout << "请输入课程(chinese, math, english):";
cin >> course;
cout << "请输入新成绩:";
cin >> score;
bool found = false;
for (int i = 0; i < students.size(); i++) {
if (students[i].id == id) {
found = true;
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 << "输入的课程不正确" << endl;
return;
}
cout << "成绩修改成功" << endl;
break;
}
}
if (!found) {
cout << "未找到该学生" << endl;
}
}
按平均分排序显示
bool compareByAvgScore(const Student& a, const Student& b) {
double avgA = (a.chinese + a.math + a.english) / 3;
double avgB = (b.chinese + b.math + b.english) / 3;
return avgA < avgB;
}
void sortByAvgScore() {
sort(students.begin(), students.end(), compareByAvgScore);
cout << "按平均分排序后的学生信息:" << endl;
for (int i = 0; i < students.size(); i++) {
double avg = (students[i].chinese + students[i].math + students[i].english) / 3;
cout << students[i].id << " " << students[i].name<< " 平均分:" << avg << endl;
}
按总分排序(升序)
bool compareByTotalScore(const Student& a, const Student& b) {
double totalA = a.chinese + a.math + a.english;
double totalB = b.chinese + b.math + b.english;
return totalA < totalB;
}
void sortByTotalScore() {
sort(students.begin(), students.end(), compareByTotalScore);
cout << "按总分排序后的学生信息:" << endl;
for (int i = 0; i < students.size(); i++) {
double total = students[i].chinese + students[i].math + students[i].english;
cout << students[i].id << " " << students[i].name << " 总分:" << total << endl;
}
}
int main() {
// 添加一些测试数据
students.push_back({"1001", "张三", 85, 90, 92});
students.push_back({"1002", "李四", 80, 85, 88});
students.push_back({"1003", "王五", 95, 91, 97});
// 显示所有学生信息
showAllStudents();
// 查询个人成绩
showStudentScores();
// 修改成绩
modifyScore();
showAllStudents();
// 按平均分排序
sortByAvgScore();
// 按总分排序
sortByTotalScore();
return 0;
这个程序定义了一个 Student
结构体,包含学号、姓名和三门科目的成绩,使用一个 vector 来保存学生数组。每个操作都是一个独立的函数。在 main
函数中,我们添加了一些测试数据,然后按顺序执行每个操作。
如果对您有帮助,请给与采纳,谢谢。
以下代码实现了题目要求的所有功能:
#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 学生成绩结构体
struct StudentScore {
string id;
string name;
double chinese;
double math;
double english;
double total;
double average;
};
// 显示所有学生信息
void showAllStudents(const vector<StudentScore>& students) {
cout << "所有学生信息:" << endl;
cout << setw(10) << "学号" << setw(10) << "姓名" << endl;
for (const auto& student : students) {
cout << setw(10) << student.id << setw(10) << student.name << endl;
}
}
// 查询个人成绩
void showStudentScore(const vector<StudentScore>& students, const string& id) {
for (const auto& student : students) {
if (student.id == id) {
cout << "学号:" << student.id << endl;
cout << "姓名:" << student.name << endl;
cout << "语文成绩:" << student.chinese << endl;
cout << "数学成绩:" << student.math << endl;
cout << "英语成绩:" << student.english << endl;
cout << "总分:" << student.total << endl;
cout << "平均分:" << student.average << endl;
return;
}
}
cout << "未找到该学生!" << endl;
}
// 修改成绩
void modifyScore(vector<StudentScore>& students, const string& id, const string& subject, double score) {
for (auto& student : students) {
if (student.id == id) {
if (subject == "语文") {
student.chinese = score;
} else if (subject == "数学") {
student.math = score;
} else if (subject == "英语") {
student.english = score;
}
student.total = student.chinese + student.math + student.english;
student.average = student.total / 3;
return;
}
}
cout << "未找到该学生!" << endl;
}
// 按平均分排序显示
void sortByAverage(vector<StudentScore>& students) {
sort(students.begin(), students.end(), [](const StudentScore& s1, const StudentScore& s2) {
return s1.average < s2.average;
});
cout << "按平均分排序:" << endl;
cout << setw(10) << "学号" << setw(10) << "姓名" << setw(10) << "平均分" << endl;
for (const auto& student : students) {
cout << setw(10) << student.id << setw(10) << student.name << setw(10) << student.average << endl;
}
}
// 按总分排序
void sortByAverageScoreAscend() {
for (int i = 0; i < studentNum; i++) {
for (int j = i + 1; j < studentNum; j++) {
if (averageScore[i] > averageScore[j]) {
swap(averageScore[i], averageScore[j]);
swap(totalScore[i], totalScore[j]);
swap(name[i], name[j]);
swap(sno[i], sno[j]);
swap(chineseScore[i], chineseScore[j]);
swap(mathScore[i], mathScore[j]);
swap(englishScore[i], englishScore[j]);
}
}
}
cout << "按平均分排序后的成绩单如下:" << endl;
displayTableHead();
for (int i = 0; i < studentNum; i++) {
cout << setw(6) << sno[i] << setw(10) << name[i] << setw(10) << chineseScore[i] << setw(10)
<< mathScore[i] << setw(10) << englishScore[i] << setw(10) << totalScore[i] << setw(15)
<< averageScore[i] << endl;
}
}
// 按总分排序(升序)
void sortByTotalScoreAscend() {
for (int i = 0; i < studentNum; i++) {
for (int j = i + 1; j < studentNum; j++) {
if (totalScore[i] > totalScore[j]) {
swap(averageScore[i], averageScore[j]);
swap(totalScore[i], totalScore[j]);
swap(name[i], name[j]);
swap(sno[i], sno[j]);
swap(chineseScore[i], chineseScore[j]);
swap(mathScore[i], mathScore[j]);
swap(englishScore[i], englishScore[j]);
}
}
}
cout << "按总分排序后的成绩单如下:" << endl;
displayTableHead();
for (int i = 0; i < studentNum; i++) {
cout << setw(6) << sno[i] << setw(10) << name[i] << setw(10) << chineseScore[i] << setw(10)
<< mathScore[i] << setw(10) << englishScore[i] << setw(10) << totalScore[i] << setw(15)
<< averageScore[i] << endl;
}
}
该回答应用ChatGPT
1.显示所有学生信息(学号,姓名):SELECT student_id, student_name FROM student_table;
2.查询个人成绩(语数外):SELECT language, math, foreign FROM score_table WHERE student_id = ?;
3.修改成绩(学号,课程):UPDATE score_table SET language = ?, math = ?, foreign = ? WHERE student_id = ?;
4.按平均分排序显示(升序):SELECT student_id, student_name, AVG(language + math + foreign) AS avg_score FROM student_table JOIN score_table ON student_table.student_id = score_table.student_id GROUP BY student_id ORDER BY avg_score ASC;
5.按总分排序(升序):SELECT student_id, student_name, SUM(language + math + foreign) AS total_score FROM student_table JOIN score_table ON student_table.student_id = score_table.student_id GROUP BY student_id ORDER BY total_score ASC;
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 学生类
class Student {
public:
Student(string id, string name, int chinese, int math, int english)
: m_id(id), m_name(name), m_chinese(chinese), m_math(math), m_english(english) {}
// 获取学号
string GetId() const {
return m_id;
}
// 获取姓名
string GetName() const {
return m_name;
}
// 获取语文成绩
int GetChinese() const {
return m_chinese;
}
// 获取数学成绩
int GetMath() const {
return m_math;
}
// 获取英语成绩
int GetEnglish() const {
return m_english;
}
// 获取平均分
double GetAvgScore() const {
return (m_chinese + m_math + m_english) / 3.0;
}
// 获取总分
int GetTotalScore() const {
return m_chinese + m_math + m_english;
}
private:
string m_id; // 学号
string m_name; // 姓名
int m_chinese; // 语文成绩
int m_math; // 数学成绩
int m_english; // 英语成绩
};
// 成绩管理系统类
class ScoreSystem {
public:
// 添加学生信息
void AddStudent(string id, string name, int chinese, int math, int english) {
m_students.emplace_back(id, name, chinese, math, english);
}
// 显示所有学生信息
void ShowAllStudents() const {
for (const auto& s : m_students) {
cout << "学号:" << s.GetId()
<< ",姓名:" << s.GetName() << endl;
}
}
// 查询个人成绩
void QueryScore(string id) const {
for (const auto& s : m_students) {
if (s.GetId() == id) {
cout << "学号:" << s.GetId()
<< ",姓名:" << s.GetName()
<< ",语文成绩:" << s.GetChinese()
<< ",数学成绩:" << s.GetMath()
<< ",英语成绩:" << s.GetEnglish() << endl;
return;
}
}
cout << "未找到学号为 " << id << " 的学生" << endl;
}
// 修改成绩
void ModifyScore(string id, string course, int score) {
for (auto& s : m_students) {
if (s.GetId() == id) {
if (course == "语文") {
s.m_chinese = score;
}
else if (course == "数学") {
s.m_math = score;
}
else if (course == "英语") {
s.m_english = score;
}
else {
cout << "输入的科目名称不正确" << endl;
return;
}
cout << "学号:" << s.GetId()
<< ",姓名:" << s.GetName
<< "," << course << "成绩修改为:" << score << endl;
return;
}
}
cout << "未找到学号为 " << id << " 的学生" << endl;
}
// 按平均分排序并显示
void SortByAvgScore() {
sort(m_students.begin(), m_students.end(),
[](const Student& a, const Student& b) { return a.GetAvgScore() < b.GetAvgScore(); });
cout << "按平均分排序后的学生信息:" << endl;
for (const auto& s : m_students) {
cout << "学号:" << s.GetId()
<< ",姓名:" << s.GetName()
<< ",平均分:" << s.GetAvgScore() << endl;
}
}
// 按总分排序并显示
void SortByTotalScore() {
sort(m_students.begin(), m_students.end(),
[](const Student& a, const Student& b) { return a.GetTotalScore() < b.GetTotalScore(); });
cout << "按总分排序后的学生信息:" << endl;
for (const auto& s : m_students) {
cout << "学号:" << s.GetId()
<< ",姓名:" << s.GetName()
<< ",总分:" << s.GetTotalScore() << endl;
}
}
private:
vector<Student> m_students; // 学生信息容器
};
int main() {
ScoreSystem score_system;
score_system.AddStudent("001", "张三", 90, 85, 95);
score_system.AddStudent("002", "李四", 75, 80, 85);
score_system.AddStudent("003", "王五", 85, 70, 90);
// 显示所有学生信息
cout << "所有学生信息:" << endl;
score_system.ShowAllStudents();
// 查询个人成绩
cout << endl << "查询个人成绩:" << endl;
score_system.QueryScore("001");
// 修改成绩
cout << endl << "修改成绩:" << endl;
score_system.ModifyScore("002", "数学", 90);
score_system.QueryScore("002");
// 按平均分排序并显示
cout << endl << "按平均分排序并显示:" << endl;
score_system.SortByAvgScore();
// 按总分排序并显示
cout << endl << "按总分排序并显示:" << endl;
score_system.SortByTotalScore();
return 0;
}