C++:制作一个学生成绩管理系统
创始人
2025-01-16 13:35:04
0

鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)

写一个c++98模式的程序,并能实现下列功能。
1.浏览功能: 能合理的显示学生跟成绩信息,不限方法。(学生成绩要求不少于3门课程)
2.查询功能: 能根据某一关键字进行学生成绩查询。
3.更改功能: 能更改学生信息中的某项内容。
4.删除功能:可以删除具体某个学生的信息。
5.录入(插入) 功能:能增加或者录入新的学生成绩信息。
6.排序功能: 能根据某一关键字进行排序。
7.退出系统。

学生成绩管理系统原理详细解释:

  1. 数据结构: 使用学生结构体(struct Student)来组织学生的基本信息,包括姓名、学号、三门课程的成绩等。

  2. 类与对象: 虽然示例代码中没有显式使用类,但可以将学生成绩管理系统看作一个类,每个学生对象是该类的实例。

  3. 模块化设计: 将不同功能拆分为独立的函数或方法,如添加学生信息、显示所有学生信息、查询学生信息等,以提高代码的可读性和可维护性。

  4. 交互式控制台界面: 通过在控制台输出提示信息,接收用户的输入,实现与用户的简单交互。

  5. 基本操作: 包括添加学生、显示所有学生、查询学生、更新学生成绩、删除学生、录入学生信息、排序等基本操作,满足用户对学生信息的管理需求。

  6. 数据存储: 在示例代码中,数据存储在内存中,每次程序运行都是一个新的实例。在实际应用中,可以将数据存储到文件、数据库等持久化存储介质中。

底层架构流程图:

+---------------------+ |  学生成绩管理系统   | +---------------------+          |    +-----|-----+    |           | +--v--+    +--v--+ | 模块1 |    | 模块2 | +------+    +------+    |           |    +-----|-----+          |    +-----|-----+    |           | +--v--+    +--v--+ | 模块3 |    | 模块4 | +------+    +------+          |    +-----|-----+    |           | +--v--+    +--v--+ | 模块5 |    | 模块6 | +------+    +------+          |          .          . 

使用场景解释:

  1. 学校学生成绩管理: 学校老师或管理员可以使用该系统对学生的成绩进行管理,包括添加新生信息、录入学生成绩、查询学生成绩、更新学生成绩等。

  2. 个人学习记录: 学生可以使用该系统记录个人的学习成绩,方便查看自己的学业情况,也可以在需要时向老师展示成绩。

  3. 培训机构学员管理: 培训机构可以利用该系统对学员的培训成绩进行管理,实现学员信息的录入、查询、更新等功能。

  4. 其他学生成绩统计场景: 适用于需要管理学生成绩的各类教育培训机构或学校。

#include  #include  #include   using namespace std;  const int MAX_STUDENTS = 100;  // 学生结构体 struct Student {     string name;     int id;     double score1, score2, score3; };  // 学生成绩管理类 class StudentManager { private:     Student students[MAX_STUDENTS];     int numStudents;  public:     // 构造函数     StudentManager() : numStudents(0) {}      // 添加学生     void addStudent(const Student& student) {         if (numStudents < MAX_STUDENTS) {             students[numStudents++] = student;             cout << "学生信息已添加!" << endl;         } else {             cout << "学生信息已满,无法添加更多学生!" << endl;         }     }      // 显示所有学生信息     void displayAllStudents() {         cout << "学生信息列表:" << endl;         for (int i = 0; i < numStudents; ++i) {             displayStudent(students[i]);         }     }      // 根据关键字查询学生信息     void searchStudent(const string& keyword) {         bool found = false;         for (int i = 0; i < numStudents; ++i) {             if (students[i].name.find(keyword) != string::npos || to_string(students[i].id).find(keyword) != string::npos) {                 displayStudent(students[i]);                 found = true;             }         }         if (!found) {             cout << "未找到符合条件的学生信息!" << endl;         }     }      // 更改学生信息     void updateStudent(int studentId, double newScore1, double newScore2, double newScore3) {         for (int i = 0; i < numStudents; ++i) {             if (students[i].id == studentId) {                 students[i].score1 = newScore1;                 students[i].score2 = newScore2;                 students[i].score3 = newScore3;                 cout << "学生信息已更新!" << endl;                 return;             }         }         cout << "未找到指定学生,无法更新信息!" << endl;     }      // 删除学生信息     void deleteStudent(int studentId) {         for (int i = 0; i < numStudents; ++i) {             if (students[i].id == studentId) {                 for (int j = i; j < numStudents - 1; ++j) {                     students[j] = students[j + 1];                 }                 --numStudents;                 cout << "学生信息已删除!" << endl;                 return;             }         }         cout << "未找到指定学生,无法删除信息!" << endl;     }      // 录入学生信息     void inputStudentInfo() {         Student newStudent;         cout << "请输入学生姓名:" << endl;         cin >> newStudent.name;         cout << "请输入学生学号:" << endl;         cin >> newStudent.id;         cout << "请输入学生课程1成绩:" << endl;         cin >> newStudent.score1;         cout << "请输入学生课程2成绩:" << endl;         cin >> newStudent.score2;         cout << "请输入学生课程3成绩:" << endl;         cin >> newStudent.score3;          addStudent(newStudent);     }      // 根据关键字排序学生信息     void sortStudentsByName() {         for (int i = 0; i < numStudents - 1; ++i) {             for (int j = 0; j < numStudents - i - 1; ++j) {                 if (students[j].name > students[j + 1].name) {                     swap(students[j], students[j + 1]);                 }             }         }         cout << "学生信息已按姓名排序!" << endl;     }  private:     // 显示单个学生信息     void displayStudent(const Student& student) {         cout << "姓名:" << student.name << " 学号:" << student.id              << " 课程1成绩:" << student.score1 << " 课程2成绩:" << student.score2              << " 课程3成绩:" << student.score3 << endl;     } };  int main() {     StudentManager studentManager;      int choice;     do {         cout << "======== 学生成绩管理系统 ========"              << "\n1. 添加学生信息"              << "\n2. 显示所有学生信息"              << "\n3. 查询学生信息"              << "\n4. 更新学生信息"              << "\n5. 删除学生信息"              << "\n6. 录入学生信息"              << "\n7. 按姓名排序学生信息"              << "\n0. 退出系统"              << "\n请选择操作:";         cin >> choice;          switch (choice) {             case 1: {                 Student newStudent;                 cout << "请输入学生姓名:" << endl;                 cin >> newStudent.name;                 cout << "请输入学生学号:" << endl;                 cin >> newStudent.id;                 cout << "请输入学生课程1成绩:" << endl;                 cin >> newStudent.score1;                 cout << "请输入学生课程2成绩:" << endl;                 cin >> newStudent.score2;                 cout << "请输入学生课程3成绩:" << endl;                 cin >> newStudent.score3;                  studentManager.addStudent(newStudent);                 break;             }             case 2:                 studentManager.displayAllStudents();                 break;             case 3: {                 cout << "请输入查询关键字(姓名或学号):" << endl;                 string keyword;                 cin >> keyword;                 studentManager.searchStudent(keyword);                 break;             }             case 4: {                 int studentId;                 double newScore1, newScore2, newScore3;                 cout << "请输入要更新的学生学号:" << endl;                 cin >> studentId;                 cout << "请输入新的课程1成绩:" << endl;                 cin >> newScore1;                 cout << "请输入新的课程2成绩:" << endl;                 cin >> newScore2;                 cout << "请输入新的课程3成绩:" << endl;                 cin >> newScore3;                  studentManager.updateStudent(studentId, newScore1, newScore2, newScore3);                 break;             }             case 5: {                 int studentId;                 cout << "请输入要删除的学生学号:" << endl;                 cin >> studentId;                 studentManager.deleteStudent(studentId);                 break;             }             case 6:                 studentManager.inputStudentInfo();                 break;             case 7:                 studentManager.sortStudentsByName();                 break;             case 0:                 cout << "退出系统,谢谢使用!" << endl;                 break;             default:                 cout << "无效的选择,请重新输入!" << endl;         }     } while (choice != 0);      return 0; }  

文献材料链接:

  1. C++ Primer(第五版) - Stanley B. Lippman 等著:经典的C++入门教材,介绍了C++的基础知识和编程技巧。

  2. C++ Documentation - cplusplus.com: C++官方文档,提供了关于C++语言的详细信息和参考手册。

当前产品使用情况:

目前市面上有许多学生成绩管理系统,其中一些是基于Web的应用程序,可以提供更友好的用户界面和更强大的功能。例如,一些在线教育平台、学校信息管理系统等都包含学生成绩管理的功能。这些系统通常使用更先进的技术和数据库来支持大规模的学生数据管理。

相关内容

热门资讯

实测分享!桃乐甘肃麻将下载辅助... 实测分享!桃乐甘肃麻将下载辅助器,飞驰娱乐科技软件,练习教程(有挂神器)该软件可以轻松地帮助玩家将桃...
我来教大家!白银胡乐亲友房,上... 我来教大家!白银胡乐亲友房,上品游戏辅助器,课程教程(有挂透明挂)1、玩家可以在上品游戏辅助器透视最...
最新研发!微信小程序蜀山四川辅... 最新研发!微信小程序蜀山四川辅助器,杭州都莱辅助,指南教程(有挂技巧)一、微信小程序蜀山四川辅助器游...
一分钟了解!潮汕雀友会辅助,创... 一分钟了解!潮汕雀友会辅助,创思维激k辅助控制器,窍门教程(有挂教学)1、下载好创思维激k辅助控制器...
玩家必看科普!麻友圈插件,微信... 玩家必看科普!麻友圈插件,微信边锋辅助,学习教程(有挂秘籍)1、很好的工具软件,可以解锁游戏的微信边...
今日科普!乐乐围棋入门辅助,途... 今日科普!乐乐围棋入门辅助,途游辅助器,法子教程(有挂方法);小薇(辅助器软件下载)致您一封信;亲爱...
玩家必备攻略!欢聚水鱼天下辅助... 玩家必备攻略!欢聚水鱼天下辅助,微友助手破解版,要领教程(发现有挂)1、欢聚水鱼天下辅助透视辅助软件...
专业讨论!白金岛跑胡子脚本,多... 专业讨论!白金岛跑胡子脚本,多乐辅助器,手册教程(有挂神器)亲,关键说明,白金岛跑胡子脚本透视脚本安...
玩家科普!皮皮辅助软件,四川家... 玩家科普!皮皮辅助软件,四川家园辅助软件,演示教程(有挂细节)所有人都在同一条线上,像星星一样排成一...
一分钟教你!随意玩脚本辅助工具... 一分钟教你!随意玩脚本辅助工具透视,川南九九辅助,步骤教程(有挂详情)1、很好的工具软件,可以解锁游...