【C/C++】【学生成绩管理系统】深度剖析
CSDN 2024-06-21 12:35:01 阅读 73
可接各类C/C++管理系统课设
目录
实现功能
部分1:系统设置和主菜单
1. 引入头文件
2. 定义结构体
3. 函数声明
4. 主函数
部分2:添加学生信息
部分3:删除学生信息
部分4:修改学生信息
部分5:查询学生信息
部分6:显示信息列表
部分7:统计学生数据
部分8:清空系统数据
部分9: 退出系统函数
总结代码
该学生成绩管理系统是一个用C++实现的程序,通过控制台界面实现对学生信息的增删改查。系统包括以下功能:添加学生信息、删除学生信息、修改学生信息、查询学生信息、显示所有学生信息、统计学生成绩数据和清空系统数据。
实现功能
添加学生信息: 用户可以通过输入学生的ID、姓名、年龄、性别和成绩来添加学生信息。新添加的学生信息会被存储在一个向量中。
删除学生信息: 用户可以通过输入学生的ID来删除学生信息。程序会在向量中查找对应的学生ID,如果找到则删除该学生的信息。
修改学生信息: 用户可以通过输入学生的ID来修改学生信息。程序会在向量中查找对应的学生ID,如果找到则允许用户修改该学生的姓名、年龄、性别和成绩。
查询学生信息: 用户可以通过输入学生的ID来查询学生信息。程序会在向量中查找对应的学生ID,如果找到则显示该学生的详细信息。
显示信息列表: 程序会显示所有存储在向量中的学生信息列表,包括每个学生的ID、姓名、年龄、性别和成绩。使用格式化输出使信息更加整齐美观。
统计学生数据: 程序会计算并显示学生成绩的平均值、最高值和最低值。这有助于用户了解整体的学生成绩分布情况。
清空系统数据: 用户可以选择清空系统中所有学生的数据。这会删除向量中存储的所有学生信息。
退出系统: 用户选择退出系统时,程序会显示退出提示信息,并终止运行。
部分1:系统设置和主菜单
首先设置程序的基本结构和主菜单界面。
#include <iostream>#include <vector>#include <string>#include <iomanip>using namespace std;// 定义一个结构体来保存学生信息struct Student { int id; string name; int age; string gender; double grade;};// 函数声明void addStudent(vector<Student>& students);void deleteStudent(vector<Student>& students);void modifyStudent(vector<Student>& students);void queryStudent(const vector<Student>& students);void displayStudents(const vector<Student>& students);void statistics(const vector<Student>& students);void clearData(vector<Student>& students);void exitSystem();int main() { vector<Student> students; int choice; while (true) { cout << "*****************欢迎来到学生成绩管理系统*****************\n"; cout << "你可以进行以下操作:\n"; cout << "1. 添加学生信息\n"; cout << "2. 删除学生信息\n"; cout << "3. 修改学生信息\n"; cout << "4. 查询学生信息\n"; cout << "5. 显示信息列表\n"; cout << "6. 统计学生数据\n"; cout << "7. 清空系统数据\n"; cout << "0. 退出\n"; cout << "请输入你的选择: "; cin >> choice; switch (choice) { case 1: addStudent(students); break; case 2: deleteStudent(students); break; case 3: modifyStudent(students); break; case 4: queryStudent(students); break; case 5: displayStudents(students); break; case 6: statistics(students); break; case 7: clearData(students); break; case 0: exitSystem(); return 0; default: cout << "无效的选择,请重新输入。\n"; } } return 0;}
1. 引入头文件
首先,引入了C++标准库中的必要头文件:
#include <iostream>#include <vector>#include <string>#include <iomanip>
iostream
:用于输入输出操作。vector
:用于动态数组(向量)的使用。string
:用于字符串操作。iomanip
:用于格式化输出。
2. 定义结构体
定义了一个结构体 Student
,用于保存学生信息:
struct Student { int id; // 学生ID string name; // 学生姓名 int age; // 学生年龄 string gender; // 学生性别 double grade; // 学生成绩};
3. 函数声明
在 main
函数之前,声明了一些函数,这些函数将在后续部分实现:
void addStudent(vector<Student>& students);void deleteStudent(vector<Student>& students);void modifyStudent(vector<Student>& students);void queryStudent(const vector<Student>& students);void displayStudents(const vector<Student>& students);void statistics(const vector<Student>& students);void clearData(vector<Student>& students);void exitSystem();
4. 主函数
主函数包含了一个无限循环,用于显示菜单并处理用户的选择:
int main() { vector<Student> students; int choice; while (true) { cout << "*****************欢迎来到学生成绩管理系统*****************\n"; cout << "你可以进行以下操作:\n"; cout << "1. 添加学生信息\n"; cout << "2. 删除学生信息\n"; cout << "3. 修改学生信息\n"; cout << "4. 查询学生信息\n"; cout << "5. 显示信息列表\n"; cout << "6. 统计学生数据\n"; cout << "7. 清空系统数据\n"; cout << "0. 退出\n"; cout << "请输入你的选择: "; cin >> choice; switch (choice) { case 1: addStudent(students); break; case 2: deleteStudent(students); break; case 3: modifyStudent(students); break; case 4: queryStudent(students); break; case 5: displayStudents(students); break; case 6: statistics(students); break; case 7: clearData(students); break; case 0: exitSystem(); return 0; default: cout << "无效的选择,请重新输入。\n"; } } return 0;}
vector<Student> students
:定义一个用于存储学生信息的向量。int choice
:用于存储用户的选择。
部分2:添加学生信息
这个功能允许用户输入新的学生信息到系统中。
void addStudent(vector<Student>& students) { Student newStudent; cout << "请输入学生ID: "; cin >> newStudent.id; cout << "请输入学生姓名: "; cin >> newStudent.name; cout << "请输入学生年龄: "; cin >> newStudent.age; cout << "请输入学生性别: "; cin >> newStudent.gender; cout << "请输入学生成绩: "; cin >> newStudent.grade; students.push_back(newStudent); cout << "学生信息添加成功!\n";}
使用 cin
获取用户输入的学生信息,并存储在 newStudent
变量中。将 newStudent
添加到 students
向量中。提示用户添加成功。
部分3:删除学生信息
这个功能允许用户根据学生ID删除学生信息。
void deleteStudent(vector<Student>& students) { int id; cout << "请输入要删除的学生ID: "; cin >> id; for (auto it = students.begin(); it != students.end(); ++it) { if (it->id == id) { students.erase(it); cout << "学生信息删除成功!\n"; return; } } cout << "未找到该学生ID。\n";}
获取用户输入的学生ID。使用迭代器遍历 students
向量,找到匹配的学生ID并删除。提示用户删除成功或未找到该学生ID。
部分4:修改学生信息
这个功能允许用户修改现有的学生信息。
void modifyStudent(vector<Student>& students) { int id; cout << "请输入要修改的学生ID: "; cin >> id; for (auto& student : students) { if (student.id == id) { cout << "请输入新的学生姓名: "; cin >> student.name; cout << "请输入新的学生年龄: "; cin >> student.age; cout << "请输入新的学生性别: "; cin >> student.gender; cout << "请输入新的学生成绩: "; cin >> student.grade; cout << "学生信息修改成功!\n"; return; } } cout << "未找到该学生ID。\n";}
获取用户输入的学生ID。遍历 students
向量,找到匹配的学生ID并获取新的学生信息进行修改。提示用户修改成功或未找到该学生ID。
部分5:查询学生信息
这个功能允许用户根据学生ID查询并显示学生信息。
void queryStudent(const vector<Student>& students) { int id; cout << "请输入要查询的学生ID: "; cin >> id; for (const auto& student : students) { if (student.id == id) { cout << "学生ID: " << student.id << "\n"; cout << "学生姓名: " << student.name << "\n"; cout << "学生年龄: " << student.age << "\n"; cout << "学生性别: " << student.gender << "\n"; cout << "学生成绩: " << student.grade << "\n"; return; } } cout << "未找到该学生ID。\n";}
获取用户输入的学生ID。遍历 students
向量,找到匹配的学生ID并显示学生信息。提示用户未找到该学生ID。
部分6:显示信息列表
这个功能显示所有学生的信息列表。
void displayStudents(const vector<Student>& students) { cout << setw(10) << "学生ID" << setw(20) << "学生姓名" << setw(10) << "年龄" << setw(10) << "性别" << setw(10) << "成绩" << "\n"; for (const auto& student : students) { cout << setw(10) << student.id << setw(20) << student.name << setw(10) << student.age << setw(10) << student.gender << setw(10) << student.grade << "\n"; }}
使用 setw
设置输出格式,确保信息对齐。遍历 students
向量,显示每个学生的信息。
部分7:统计学生数据
这个功能提供学生成绩的基本统计信息。
void statistics(const vector<Student>& students) { if (students.empty()) { cout << "没有学生数据。\n"; return; } double sum = 0; double maxGrade = students[0].grade; double minGrade = students[0].grade; for (const auto& student : students) { sum += student.grade; if (student.grade > maxGrade) { maxGrade = student.grade; } if (student.grade < minGrade) { minGrade = student.grade; } } double average = sum / students.size(); cout << "学生成绩统计:\n"; cout << "平均成绩: " << average << "\n"; cout << "最高成绩: " << maxGrade << "\n"; cout << "最低成绩: " << minGrade << "\n";}
计算并显示学生成绩的平均值、最高值和最低值。如果没有学生数据,提示用户。
部分8:清空系统数据
这个功能清除系统中的所有学生数据。
void clearData(vector<Student>& students) { students.clear(); cout << "系统数据已清空。\n";}
清空 students
向量中的所有数据。提示用户数据已清空。
部分9: 退出系统函数
实现了退出系统时的提示功能:
void exitSystem() { cout << "感谢使用学生成绩管理系统,再见!\n";}
提示用户系统退出信息。
总结代码
将所有部分整合在一起,形成完整的学生成绩管理系统代码如下:
#include <iostream>#include <vector>#include <string>#include <iomanip>using namespace std;struct Student { int id; string name; int age; string gender; double grade;};void addStudent(vector<Student>& students);void deleteStudent(vector<Student>& students);void modifyStudent(vector<Student>& students);void queryStudent(const vector<Student>& students);void displayStudents(const vector<Student>& students);void statistics(const vector<Student>& students);void clearData(vector<Student>& students);void exitSystem();int main() { vector<Student> students; int choice; while (true) { cout << "*****************欢迎来到学生成绩管理系统*****************\n"; cout << "你可以进行以下操作:\n"; cout << "1. 添加学生信息\n"; cout << "2. 删除学生信息\n"; cout << "3. 修改学生信息\n"; cout << "4. 查询学生信息\n"; cout << "5. 显示信息列表\n"; cout << "6. 统计学生数据\n"; cout << "7. 清空系统数据\n"; cout << "0. 退出\n"; cout << "请输入你的选择: "; cin >> choice; switch (choice) { case 1: addStudent(students); break; case 2: deleteStudent(students); break; case 3: modifyStudent(students); break; case 4: queryStudent(students); break; case 5: displayStudents(students); break; case 6: statistics(students); break; case 7: clearData(students); break; case 0: exitSystem(); return 0; default: cout << "无效的选择,请重新输入。\n"; } } return 0;}void addStudent(vector<Student>& students) { Student newStudent; cout << "请输入学生ID: "; cin >> newStudent.id; cout << "请输入学生姓名: "; cin >> newStudent.name; cout << "请输入学生年龄: "; cin >> newStudent.age; cout << "请输入学生性别: "; cin >> newStudent.gender; cout << "请输入学生成绩: "; cin >> newStudent.grade; students.push_back(newStudent); cout << "学生信息添加成功!\n";}void deleteStudent(vector<Student>& students) { int id; cout << "请输入要删除的学生ID: "; cin >> id; for (auto it = students.begin(); it != students.end(); ++it) { if (it->id == id) { students.erase(it); cout << "学生信息删除成功!\n"; return; } } cout << "未找到该学生ID。\n";}void modifyStudent(vector<Student>& students) { int id; cout << "请输入要修改的学生ID: "; cin >> id; for (auto& student : students) { if (student.id == id) { cout << "请输入新的学生姓名: "; cin >> student.name; cout << "请输入新的学生年龄: "; cin >> student.age; cout << "请输入新的学生性别: "; cin >> student.gender; cout << "请输入新的学生成绩: "; cin >> student.grade; cout << "学生信息修改成功!\n"; return; } } cout << "未找到该学生ID。\n";}void queryStudent(const vector<Student>& students) { int id; cout << "请输入要查询的学生ID: "; cin >> id; for (const auto& student : students) { if (student.id == id) { cout << "学生ID: " << student.id << "\n"; cout << "学生姓名: " << student.name << "\n"; cout << "学生年龄: " << student.age << "\n"; cout << "学生性别: " << student.gender << "\n"; cout << "学生成绩: " << student.grade << "\n"; return; } } cout << "未找到该学生ID。\n";}void displayStudents(const vector<Student>& students) { cout << setw(10) << "学生ID" << setw(20) << "学生姓名" << setw(10) << "年龄" << setw(10) << "性别" << setw(10) << "成绩" << "\n"; for (const auto& student : students) { cout << setw(10) << student.id << setw(20) << student.name << setw(10) << student.age << setw(10) << student.gender << setw(10) << student.grade << "\n"; }}void statistics(const vector<Student>& students) { if (students.empty()) { cout << "没有学生数据。\n"; return; } double sum = 0; double maxGrade = students[0].grade; double minGrade = students[0].grade; for (const auto& student : students) { sum += student.grade; if (student.grade > maxGrade) { maxGrade = student.grade; } if (student.grade < minGrade) { minGrade = student.grade; } } double average = sum / students.size(); cout << "学生成绩统计:\n"; cout << "平均成绩: " << average << "\n"; cout << "最高成绩: " << maxGrade << "\n"; cout << "最低成绩: " << minGrade << "\n";}void clearData(vector<Student>& students) { students.clear(); cout << "系统数据已清空。\n";}void exitSystem() { cout << "感谢使用学生成绩管理系统,再见!\n";}
上一篇: 【已解决】java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have
下一篇: 由于找不到qt5core.dll,无法继续执行代码的详细解决方法解析分享
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。