【C/C++】【学生成绩管理系统】深度剖析
创始人
2025-01-16 08:04:14
0次

可接各类C/C++管理系统课设

目录

实现功能

部分1:系统设置和主菜单

1. 引入头文件

2. 定义结构体

3. 函数声明

4. 主函数

部分2:添加学生信息

部分3:删除学生信息

部分4:修改学生信息

部分5:查询学生信息

部分6:显示信息列表

部分7:统计学生数据

部分8:清空系统数据

部分9: 退出系统函数

总结代码


该学生成绩管理系统是一个用C++实现的程序,通过控制台界面实现对学生信息的增删改查。系统包括以下功能:添加学生信息、删除学生信息、修改学生信息、查询学生信息、显示所有学生信息、统计学生成绩数据和清空系统数据。

实现功能

  1. 添加学生信息: 用户可以通过输入学生的ID、姓名、年龄、性别和成绩来添加学生信息。新添加的学生信息会被存储在一个向量中。

  2. 删除学生信息: 用户可以通过输入学生的ID来删除学生信息。程序会在向量中查找对应的学生ID,如果找到则删除该学生的信息。

  3. 修改学生信息: 用户可以通过输入学生的ID来修改学生信息。程序会在向量中查找对应的学生ID,如果找到则允许用户修改该学生的姓名、年龄、性别和成绩。

  4. 查询学生信息: 用户可以通过输入学生的ID来查询学生信息。程序会在向量中查找对应的学生ID,如果找到则显示该学生的详细信息。

  5. 显示信息列表: 程序会显示所有存储在向量中的学生信息列表,包括每个学生的ID、姓名、年龄、性别和成绩。使用格式化输出使信息更加整齐美观。

  6. 统计学生数据: 程序会计算并显示学生成绩的平均值、最高值和最低值。这有助于用户了解整体的学生成绩分布情况。

  7. 清空系统数据: 用户可以选择清空系统中所有学生的数据。这会删除向量中存储的所有学生信息。

  8. 退出系统: 用户选择退出系统时,程序会显示退出提示信息,并终止运行。

部分1:系统设置和主菜单

首先设置程序的基本结构和主菜单界面。

#include  #include  #include  #include   using namespace std;  // 定义一个结构体来保存学生信息 struct Student {     int id;     string name;     int age;     string gender;     double grade; };  // 函数声明 void addStudent(vector& students); void deleteStudent(vector& students); void modifyStudent(vector& students); void queryStudent(const vector& students); void displayStudents(const vector& students); void statistics(const vector& students); void clearData(vector& students); void exitSystem();  int main() {     vector 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  #include  #include  #include  
  • iostream:用于输入输出操作。
  • vector:用于动态数组(向量)的使用。
  • string:用于字符串操作。
  • iomanip:用于格式化输出。

2. 定义结构体

定义了一个结构体 Student,用于保存学生信息:

struct Student {     int id;           // 学生ID     string name;      // 学生姓名     int age;          // 学生年龄     string gender;    // 学生性别     double grade;     // 学生成绩 }; 

3. 函数声明

在 main 函数之前,声明了一些函数,这些函数将在后续部分实现:

void addStudent(vector& students); void deleteStudent(vector& students); void modifyStudent(vector& students); void queryStudent(const vector& students); void displayStudents(const vector& students); void statistics(const vector& students); void clearData(vector& students); void exitSystem(); 

4. 主函数

主函数包含了一个无限循环,用于显示菜单并处理用户的选择:

int main() {     vector 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 students:定义一个用于存储学生信息的向量。
  • int choice:用于存储用户的选择。

部分2:添加学生信息

这个功能允许用户输入新的学生信息到系统中。

void addStudent(vector& 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& 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& 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& 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& 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& 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& students) {     students.clear();     cout << "系统数据已清空。\n"; } 
  • 清空 students 向量中的所有数据。
  • 提示用户数据已清空。

部分9: 退出系统函数

实现了退出系统时的提示功能:

void exitSystem() {     cout << "感谢使用学生成绩管理系统,再见!\n"; } 
  • 提示用户系统退出信息。

总结代码

将所有部分整合在一起,形成完整的学生成绩管理系统代码如下:

#include  #include  #include  #include   using namespace std;  struct Student {     int id;     string name;     int age;     string gender;     double grade; };  void addStudent(vector& students); void deleteStudent(vector& students); void modifyStudent(vector& students); void queryStudent(const vector& students); void displayStudents(const vector& students); void statistics(const vector& students); void clearData(vector& students); void exitSystem();  int main() {     vector 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& 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& 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& 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& 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& 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& 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& students) {     students.clear();     cout << "系统数据已清空。\n"; }  void exitSystem() {     cout << "感谢使用学生成绩管理系统,再见!\n"; } 

相关内容

热门资讯

实测交流透视挂!宝玛大厅ai智... 实测交流透视挂!宝玛大厅ai智能透视挂教程,宝玛大厅破解软件经验(本来有挂辅助)1、每一步都需要思考...
总算了解辅助器!朱雀吴江三缺一... 总算了解辅助器!朱雀吴江三缺一ai智能透视辅助挂技巧,朱雀吴江三缺一好像是有挂(有辅助挂细节)朱雀吴...
今日公布透视!九五至尊大厅ai... 今日公布透视!九五至尊大厅ai智能透视插件,九五至尊大厅有没有透视挂窍门(切实有挂技术)1、在九五至...
玩家必看科普开挂!聚闲麻将ai... 玩家必看科普开挂!聚闲麻将ai智能透视辅助挂软件,聚闲麻将总是真的有挂(有辅助挂方式)聚闲麻将能透视...
据报道开挂!旅游娱乐ai智能开... 据报道开挂!旅游娱乐ai智能开挂工具,旅游娱乐辅助工具演示(一直有挂教学)1、全新机制【旅游娱乐ai...
一分钟揭秘开挂!决胜朋来麻将a... 一分钟揭秘开挂!决胜朋来麻将ai智能透视辅助挂教程,决胜朋来麻将真是真的是有挂(有辅助挂总结)1、首...
如何分辨真伪透视!红牛ai智能... 如何分辨真伪透视!红牛ai智能透视攻略,红牛是不是有挂经验(真是有挂技术)1、操作简单,无需红牛手机...
2分钟细说辅助器!江湖大庆麻将... 2分钟细说辅助器!江湖大庆麻将ai智能透视辅助挂攻略,江湖大庆麻将竟然是真的有挂(有辅助挂头条)1、...
总算清楚透视挂!老夫子厅ai智... 总算清楚透视挂!老夫子厅ai智能透视挂技巧,老夫子厅怎么开挂课程(好像发现有挂)老夫子厅破解侠是真的...
解密关于辅助!菜鸟麻将ai智能... 解密关于辅助!菜鸟麻将ai智能透视辅助挂脚本,菜鸟麻将总是存在有挂(有辅助挂存在)1、用户打开应用后...