C++:制作一个学生成绩管理系统
鱼弦 2024-07-11 10:35:02 阅读 71
鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)
写一个c++98模式的程序,并能实现下列功能。
1.浏览功能: 能合理的显示学生跟成绩信息,不限方法。(学生成绩要求不少于3门课程)
2.查询功能: 能根据某一关键字进行学生成绩查询。
3.更改功能: 能更改学生信息中的某项内容。
4.删除功能:可以删除具体某个学生的信息。
5.录入(插入) 功能:能增加或者录入新的学生成绩信息。
6.排序功能: 能根据某一关键字进行排序。
7.退出系统。
学生成绩管理系统原理详细解释:
数据结构: 使用学生结构体(<code>struct Student)来组织学生的基本信息,包括姓名、学号、三门课程的成绩等。
类与对象: 虽然示例代码中没有显式使用类,但可以将学生成绩管理系统看作一个类,每个学生对象是该类的实例。
模块化设计: 将不同功能拆分为独立的函数或方法,如添加学生信息、显示所有学生信息、查询学生信息等,以提高代码的可读性和可维护性。
交互式控制台界面: 通过在控制台输出提示信息,接收用户的输入,实现与用户的简单交互。
基本操作: 包括添加学生、显示所有学生、查询学生、更新学生成绩、删除学生、录入学生信息、排序等基本操作,满足用户对学生信息的管理需求。
数据存储: 在示例代码中,数据存储在内存中,每次程序运行都是一个新的实例。在实际应用中,可以将数据存储到文件、数据库等持久化存储介质中。
底层架构流程图:
+---------------------+
| 学生成绩管理系统 |
+---------------------+
|
+-----|-----+
| |
+--v--+ +--v--+
| 模块1 | | 模块2 |
+------+ +------+
| |
+-----|-----+
|
+-----|-----+
| |
+--v--+ +--v--+
| 模块3 | | 模块4 |
+------+ +------+
|
+-----|-----+
| |
+--v--+ +--v--+
| 模块5 | | 模块6 |
+------+ +------+
|
.
.
使用场景解释:
学校学生成绩管理: 学校老师或管理员可以使用该系统对学生的成绩进行管理,包括添加新生信息、录入学生成绩、查询学生成绩、更新学生成绩等。
个人学习记录: 学生可以使用该系统记录个人的学习成绩,方便查看自己的学业情况,也可以在需要时向老师展示成绩。
培训机构学员管理: 培训机构可以利用该系统对学员的培训成绩进行管理,实现学员信息的录入、查询、更新等功能。
其他学生成绩统计场景: 适用于需要管理学生成绩的各类教育培训机构或学校。
#include <iostream>
#include <iomanip>
#include <string>
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;
}
文献材料链接:
C++ Primer(第五版) - Stanley B. Lippman 等著:经典的C++入门教材,介绍了C++的基础知识和编程技巧。
C++ Documentation - cplusplus.com: C++官方文档,提供了关于C++语言的详细信息和参考手册。
当前产品使用情况:
目前市面上有许多学生成绩管理系统,其中一些是基于Web的应用程序,可以提供更友好的用户界面和更强大的功能。例如,一些在线教育平台、学校信息管理系统等都包含学生成绩管理的功能。这些系统通常使用更先进的技术和数据库来支持大规模的学生数据管理。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。