【C/C++】【学生成绩管理系统】深度剖析
该学生成绩管理系统是一个用C++实现的程序,通过控制台界面实现对学生信息的增删改查。系统包括以下功能:添加学生信息、删除学生信息、修改学生信息、查询学生信息、显示所有学生信息、统计学生成绩数据和清空系统数据。
实现功能
添加学生信息: 用户可以通过输入学生的ID、姓名、年龄、性别和成绩来添加学生信息。新添加的学生信息会被存储在一个向量中。
删除学生信息: 用户可以通过输入学生的ID来删除学生信息。程序会在向量中查找对应的学生ID,如果找到则删除该学生的信息。
修改学生信息: 用户可以通过输入学生的ID来修改学生信息。程序会在向量中查找对应的学生ID,如果找到则允许用户修改该学生的姓名、年龄、性别和成绩。
查询学生信息: 用户可以通过输入学生的ID来查询学生信息。程序会在向量中查找对应的学生ID,如果找到则显示该学生的详细信息。
显示信息列表: 程序会显示所有存储在向量中的学生信息列表,包括每个学生的ID、姓名、年龄、性别和成绩。使用格式化输出使信息更加整齐美观。
统计学生数据: 程序会计算并显示学生成绩的平均值、最高值和最低值。这有助于用户了解整体的学生成绩分布情况。
清空系统数据: 用户可以选择清空系统中所有学生的数据。这会删除向量中存储的所有学生信息。
退出系统: 用户选择退出系统时,程序会显示退出提示信息,并终止运行。
部分1:系统设置和主菜单
#include <iostream>
#include <vector>
#include <string>
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 << "1. 添加学生信息\n";
cout << "5. 显示信息列表\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. 引入头文件
#include <iostream>
#include <vector>
#include <string>
#include <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 << "1. 添加学生信息\n";
cout << "5. 显示信息列表\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:删除学生信息
void deleteStudent(vector<Student>& students) {
int id;
cin >> id;
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->id == id) {
students.erase(it);
return;
}
}
cout << "未找到该学生ID。\n";
}
部分4:修改学生信息
void modifyStudent(vector<Student>& students) {
int 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;
return;
}
}
cout << "未找到该学生ID。\n";
}
获取用户输入的学生ID。遍历 students 向量,找到匹配的学生ID并获取新的学生信息进行修改。提示用户修改成功或未找到该学生ID。
部分5:查询学生信息
void queryStudent(const vector<Student>& students) {
int 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";
}
}
部分7:统计学生数据
void statistics(const vector<Student>& students) {
if (students.empty()) {
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 << "平均成绩: " << average << "\n";
cout << "最高成绩: " << maxGrade << "\n";
cout << "最低成绩: " << minGrade << "\n";
}
计算并显示学生成绩的平均值、最高值和最低值。如果没有学生数据,提示用户。
部分8:清空系统数据
void clearData(vector<Student>& students) {
students.clear();
}
部分9: 退出系统函数
void exitSystem() {
}
总结代码
#include <iostream>
#include <vector>
#include <string>
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 << "1. 添加学生信息\n";
cout << "5. 显示信息列表\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;
cin >> id;
for (auto it = students.begin(); it != students.end(); ++it) {
if (it->id == id) {
students.erase(it);
return;
}
}
cout << "未找到该学生ID。\n";
}
void modifyStudent(vector<Student>& students) {
int 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;
return;
}
}
cout << "未找到该学生ID。\n";
}
void queryStudent(const vector<Student>& students) {
int 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()) {
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 << "平均成绩: " << average << "\n";
cout << "最高成绩: " << maxGrade << "\n";
cout << "最低成绩: " << minGrade << "\n";
}
void clearData(vector<Student>& students) {
students.clear();
}
void exitSystem() {
}
Ongwu博客 版权声明:以上内容未经允许不得转载!授权事宜或对内容有异议或投诉,请联系站长,将尽快回复您,谢谢合作!