一.课题要求
定义班级类,院部从界面登录后,能对学生的成绩和相关信息进行处理(如成绩管理、学籍管理、基本信息输入输出等)。
二.功能说明
A.系统登录:用户输入用户名和密码进行验证,成功后进入系统,失败则退出。
B.录入学生信息:用户输入学生信息和成绩,可以批量录入多个学生。
C.删除学生信息:用户输入学号删除对应学生信息。
D.修改学生信息:用户输入学号修改对应学生的基本信息和成绩。
E.查询学生信息:用户输入学号查询并显示对应学生信息。
F.显示所有学生信息:按表格格式显示所有学生的信息。
G.排序学生信息:按总成绩从高到低排序并显示学生信息。
H.显示最好成绩的学生:显示总成绩最高的学生信息。
I.分组统计成绩:按平均成绩的区间统计人数。
J.清屏:清除屏幕显示。
三.运行结果
四.详细代码
#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <string>
#include <limits>
using namespace std;
class Student {
public:
string id;
string name;
string className;
string gender;
double cppScore;
double algorithmScore;
double totalScore;
double averageScore;
Student(string id, string name, string className, string gender, double cppScore, double algorithmScore)
: id(id), name(name), className(className), gender(gender), cppScore(cppScore), algorithmScore(algorithmScore) {
totalScore = cppScore + algorithmScore;
averageScore = totalScore / 2;
}
void printInfo() const {
cout << left << setw(10) << id << setw(15) << name << setw(10) << className
<< setw(8) << gender << setw(12) << cppScore << setw(12) << algorithmScore
<< setw(12) << totalScore << setw(12) << averageScore << endl;
}
};
bool compareByTotalScore(const Student& a, const Student& b) {
return a.totalScore > b.totalScore;
}
class StudentManagementSystem {
private:
vector<Student> students;
public:
void addStudents() {
int numberOfStudents;
cout << "请输入要录入的学生数量: ";
cin >> numberOfStudents;
for (int i = 0; i < numberOfStudents; ++i) {
string id, name, className, gender;
double cppScore, algorithmScore;
cout << "请输入学生" << i + 1 << "的学号: ";
cin >> id;
cout << "请输入学生" << i + 1 << "的姓名: ";
cin >> name;
cout << "请输入学生" << i + 1 << "的班级: ";
cin >> className;
cout << "请输入学生" << i + 1 << "的性别: ";
cin >> gender;
cout << "请输入学生" << i + 1 << "的C++课程成绩: ";
while (!(cin >> cppScore) || cppScore < 0 || cppScore > 100) {
cout << "请输入有效的C++课程成绩 (0-100): ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
cout << "请输入学生" << i + 1 << "的算法成绩: ";
while (!(cin >> algorithmScore) || algorithmScore < 0 || algorithmScore > 100) {
cout << "请输入有效的算法成绩 (0-100): ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
students.push_back(Student(id, name, className, gender, cppScore, algorithmScore));
}
}
void deleteStudent() {
string id;
cout << "请输入要删除的学生学号: ";
cin >> id;
for (size_t i = 0; i < students.size(); ++i) {
if (students[i].id == id) {
students.erase(students.begin() + i);
cout << "学生信息已删除。" << endl;
return;
}
}
cout << "未找到该学号的学生。" << endl;
}
void modifyStudent() {
string id;
cout << "请输入要修改的学生学号: ";
cin >> id;
for (size_t i = 0; i < students.size(); ++i) {
if (students[i].id == id) {
cout << "请输入新的姓名: ";
cin >> students[i].name;
cout << "请输入新的班级: ";
cin >> students[i].className;
cout << "请输入新的性别: ";
cin >> students[i].gender;
cout << "请输入新的C++课程成绩: ";
while (!(cin >> students[i].cppScore) || students[i].cppScore < 0 || students[i].cppScore > 100) {
cout << "请输入有效的C++课程成绩 (0-100): ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
cout << "请输入新的算法成绩: ";
while (!(cin >> students[i].algorithmScore) || students[i].algorithmScore < 0 || students[i].algorithmScore > 100) {
cout << "请输入有效的算法成绩 (0-100): ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
students[i].totalScore = students[i].cppScore + students[i].algorithmScore;
students[i].averageScore = students[i].totalScore / 2;
cout << "学生信息已修改。" << endl;
return;
}
}
cout << "未找到该学号的学生。" << endl;
}
void queryStudent() const {
string id;
cout << "请输入要查询的学生学号: ";
cin >> id;
for (size_t i = 0; i < students.size(); ++i) {
if (students[i].id == id) {
students[i].printInfo();
return;
}
}
cout << "未找到该学号的学生。" << endl;
}
void displayAllStudents() const {
cout << left << setw(10) << "学号" << setw(15) << "姓名" << setw(10) << "班级"
<< setw(8) << "性别" << setw(12) << "C++成绩" << setw(12) << "算法成绩"
<< setw(12) << "总成绩" << setw(12) << "平均成绩" << endl;
for (size_t i = 0; i < students.size(); ++i) {
students[i].printInfo();
}
}
void sortStudents() {
sort(students.begin(), students.end(), compareByTotalScore);
cout << "学生信息已按总成绩排序。" << endl;
}
void displayBestStudent() const {
if (!students.empty()) {
size_t bestIndex = 0;
for (size_t i = 1; i < students.size(); ++i) {
if (students[i].totalScore > students[bestIndex].totalScore) {
bestIndex = i;
}
}
cout << "总成绩最高的学生信息:" << endl;
students[bestIndex].printInfo();
} else {
cout << "没有学生信息。" << endl;
}
}
void groupStatistics() const {
if (students.empty()) {
cout << "没有学生信息。" << endl;
return;
}
vector<int> groupCounts(10, 0);
for (size_t i = 0; i < students.size(); ++i) {
int index = min(static_cast<int>(students[i].averageScore / 10), 9);
groupCounts[index]++;
}
cout << "平均成绩分组统计:" << endl;
for (int i = 0; i < 10; ++i) {
cout << i * 10 << "-" << (i + 1) * 10 - 1 << ": " << groupCounts[i] << "人" << endl;
}
}
void clearScreen() const {
#if defined(_WIN32) || defined(_WIN64)
system("cls");
#else
system("clear");
#endif
}
};
bool login() {
string username, password;
const string correctUsername = "admin";
const string correctPassword = "123456";
cout << "请输入用户名: ";
cin >> username;
cout << "请输入密码: ";
cin >> password;
if (username == correctUsername && password == correctPassword) {
cout << "登录成功!" << endl;
return true;
} else {
cout << "登录失败!" << endl;
return false;
}
}
void showMenu() {
cout<<endl;
cout<<" ============================================================================= \n";
cout<<" ★★★★★★★ 学生信息管理系统 ★★★★★★★ \n";
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<<"|| 【8】--- 分组统计成绩 ||\n";
cout<<"|| 【9】--- 清屏 ||\n";
cout<<"|| 【10】--- 退出 ||\n";
cout<<" ============================================================================= \n";
cout<<endl;
}
int main() {
if (!login()) {
return 0;
}
StudentManagementSystem sms;
int choice;
do {
showMenu();
cout << "请输入选择: ";
cin >> choice;
switch (choice) {
case 1:
sms.addStudents();
break;
case 2:
sms.deleteStudent();
break;
case 3:
sms.modifyStudent();
break;
case 4:
sms.queryStudent();
break;
case 5:
sms.displayAllStudents();
break;
case 6:
sms.sortStudents();
break;
case 7:
sms.displayBestStudent();
break;
case 8:
sms.groupStatistics();
break;
case 9:
sms.clearScreen();
break;
case 10:
cout << "退出系统" << endl;
break;
default:
cout << "无效选择,请重试" << endl;
}
} while (choice != 10);
return 0;
}