信息管理系统

一.课题要求

        定义班级类,院部从界面登录后,能对学生的成绩和相关信息进行处理(如成绩管理、学籍管理、基本信息输入输出等)。

二.功能说明

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;
}

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值