C++--学生信息管理系统

//成绩类,学生类,学生管理系统类,控制台界面
#include "iostream"
#include "vector"
using namespace std;
class Score{
    string courseName;
    int score;
public:
    Score(string a,int b){
        this->courseName=std::move(a);
        this->score=b;
    }
    string getCourseName(){
        return courseName;
    }
    int getScore(){
        return score;
    }
    void setCourseName(string t){
        this->courseName=std::move(t);
    }
    void setScore(int t){
        this->score=t;
    }
};

class Student{
    string name;
    string gender;
    string sno;
    string Class;
    string Grade;
    vector<Score> scores;
public:
    Student(string name,string gender,string sno,string Class,string Grade){
        this->gender=std::move(gender);
        this->name=std::move(name);
        this->sno=std::move(sno);
        this->Class=std::move(Class);
        this->Grade=std::move(Grade);
    }
    string getName(){
        return name;
    }
    string getGender(){
        return gender;
    }
    string getSno(){
        return sno;
    }
    string getClass(){
        return Class;
    }
    string getGrade(){
        return Grade;
    }
    void setName(string t){
        this->name=std::move(t);
    }
    void setGender(string t){
        this->gender=std::move(t);
    }
    void setSno(string t){
        this->sno=std::move(t);
    }
    void setClass(string t){
        this->Class=std::move(t);
    }
    void setGrade(string t){
        this->Grade=std::move(t);
    }
    void setAll(string name,string gender,string sno,string Class,string Grade){
        this->gender=std::move(gender);
        this->name=std::move(name);
        this->sno=std::move(sno);
        this->Class=std::move(Class);
        this->Grade=std::move(Grade);
    }
    void add(string n,int t){
        Score s(n,t);
        scores.push_back(s);
    }
    void del(string n){
        for(int i=0;i<scores.size();i++){
            if(scores[i].getCourseName()==n){
                scores.erase(scores.begin()+i);
                return;
            }
        }
    }
    void sd(string n,int t){
        for(int i=0;i<scores.size();i++){
            if(scores[i].getCourseName()==n){
                scores[i].setScore(t);
                return;
            }
        }
    }
    int find(string n){
        for(int i=0;i<scores.size();i++){
            if(scores[i].getCourseName()==n){
                return scores[i].getScore();
            }
        }
        return -1;
    }
    void printScore(){
        cout<<"学生"<<getName()<<"的成绩如下"<<endl;
        for(int i=0;i<scores.size();i++){
            cout<<scores[i].getCourseName()<<"   :"<<scores[i].getScore()<<endl;
        }
    }
    void printInformation(){
        cout<<"学生的姓名是:"<<getName()<<","<<"学生的性别是:"<<getGender()<<","<<"学生的学号是:"<<getSno()<<endl;
        cout<<"学生的班级是:"<<getClass()<<","<<"学生的年级是:"<<getGrade()<<endl;
    }
};
class StudentsControl{
    vector<Student> stu;
public:
    void add(string name,string gender,string sno,string Class,string Grade){
        Student s(name,gender,sno,Class,Grade);
        stu.push_back(s);
    }
    void del(string n){
        for(int i=0;i<stu.size();i++){
            if(stu[i].getName()==n){
                stu.erase(stu.begin()+i);
                return;
            }
        }
    }
    void sd(string name,string gender,string sno,string Class,string Grade){
        for(int i=0;i<stu.size();i++){
            if(stu[i].getName()==name){
                stu[i].setAll(name,gender,sno,Class,Grade);
                return;
            }
        }
    }
    void find(string n){
        for(int i=0;i<stu.size();i++){
            if(stu[i].getName()==n){
                stu[i].printInformation();
                return;
            }
        }
        cout<<"未找到学生信息!"<<endl;
    }
    void addStuScore(string n,string s,int t){
        for(int i=0;i<stu.size();i++){
            if(stu[i].getName()==n){
                stu[i].add(s,t);
                return;
            }
        }
    }
    void delStuScore(string n,string s){
        for(int i=0;i<stu.size();i++){
            if(stu[i].getName()==n){
                stu[i].del(s);
                return;
            }
        }
    }
    void sdStuScore(string n,string s,int t){
        for(int i=0;i<stu.size();i++){
            if(stu[i].getName()==n){
                stu[i].sd(s,t);
                return;
            }
        }
    }
    void findStu(string n,string s){
        for(int i=0;i<stu.size();i++){
            if(stu[i].getName()==n){
                cout<<stu[i].getName()<<"的"<<s<<"成绩是";
                cout<<stu[i].find(s)<<endl;
                return;
            }
        }
    }
    void printstu(string n){
        for(int i=0;i<stu.size();i++){
            if(stu[i].getName()==n){
                stu[i].printInformation();
                stu[i].printScore();
                return;
            }
        }
    }
    void printAll(){
        for(int i=0;i<stu.size();i++){
            stu[i].printInformation();
            stu[i].printScore();
        }
    }
};
int main() {
    StudentsControl control;

    while (true) {
        cout << "欢迎使用学生管理系统!" << endl;
        cout << "1. 添加学生信息" << endl;
        cout << "2. 删除学生信息" << endl;
        cout << "3. 更新学生信息" << endl;
        cout << "4. 查找学生信息" << endl;
        cout << "5. 添加学生成绩" << endl;
        cout << "6. 删除学生成绩" << endl;
        cout << "7. 更新学生成绩" << endl;
        cout << "8. 查找学生成绩" << endl;
        cout << "9. 打印学生信息及成绩" << endl;
        cout << "10. 打印所有学生信息及成绩" << endl;
        cout << "0. 退出" << endl;
        cout << "请输入您的选择: ";

        int choice;
        cin >> choice;

        switch (choice) {
            case 1: {
                string name, gender, sno, Class, Grade;
                cout << "请输入学生姓名: ";
                cin >> name;
                cout << "请输入学生性别: ";
                cin >> gender;
                cout << "请输入学生学号: ";
                cin >> sno;
                cout << "请输入学生班级: ";
                cin >> Class;
                cout << "请输入学生年级: ";
                cin >> Grade;
                control.add(name, gender, sno, Class, Grade);
                break;
            }
            case 2: {
                string name;
                cout << "请输入要删除的学生姓名: ";
                cin >> name;
                control.del(name);
                break;
            }
            case 3: {
                string name, gender, sno, Class, Grade;
                cout << "请输入要更新的学生姓名: ";
                cin >> name;
                cout << "请输入学生性别: ";
                cin >> gender;
                cout << "请输入学生学号: ";
                cin >> sno;
                cout << "请输入学生班级: ";
                cin >> Class;
                cout << "请输入学生年级: ";
                cin >> Grade;
                control.sd(name, gender, sno, Class, Grade);
                break;
            }
            case 4: {
                string name;
                cout << "请输入要查找的学生姓名: ";
                cin >> name;
                control.find(name);
                break;
            }
            case 5: {
                string name, course;
                int score;
                cout << "请输入要添加成绩的学生姓名: ";
                cin >> name;
                cout << "请输入课程名称: ";
                cin >> course;
                cout << "请输入成绩: ";
                cin >> score;
                control.addStuScore(name, course, score);
                break;
            }
            case 6: {
                string name, course;
                cout << "请输入要删除成绩的学生姓名: ";
                cin >> name;
                cout << "请输入课程名称: ";
                cin >> course;
                control.delStuScore(name, course);
                break;
            }
            case 7: {
                string name, course;
                int score;
                cout << "请输入要更新成绩的学生姓名: ";
                cin >> name;
                cout << "请输入课程名称: ";
                cin >> course;
                cout << "请输入新成绩: ";
                cin >> score;
                control.sdStuScore(name, course, score);
                break;
            }
            case 8: {
                string name, course;
                cout << "请输入要查找成绩的学生姓名: ";
                cin >> name;
                cout << "请输入课程名称: ";
                cin >> course;
                control.findStu(name, course);
                break;
            }
            case 9: {
                string name;
                cout << "请输入要打印信息及成绩的学生姓名: ";
                cin >> name;
                control.printstu(name);
                break;
            }
            case 10: {
                control.printAll();
                break;
            }
            case 0: {
                cout << "退出程序。再见!" << endl;
                return 0;
            }
            default:
                cout << "无效的选择。请重试。" << endl;
        }
    }

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值