(线性表)学生成绩管理系统

#include<iostream>
#include<string>

using namespace std;

#define Max 10000

struct Student{
    string name; //姓名
    string id; //学号
    double score;  //成绩
};

struct Studatabase{
    struct Student studentArray[Max];
    int size;
};

//按照姓名判断学生是否存在
int isExist1(Studatabase * sabs,string name){
    for(int i=0;i<sabs->size;i++){
        if(sabs->studentArray[i].name==name){
            return i;
        }
    }
    return -1;
}

//按照学号判断学生是否存在
int isExist2(Studatabase * sabs,string id){
    for(int i=0;i<sabs->size;i++){
        if(sabs->studentArray[i].id==id){
            return i;
        }
    }
    return -1;
}


void Menu(){
    cout<<"************************************"<<endl;
    cout<<"************************************"<<endl;
    cout<<"     1———添加学生信息"<<endl;
    cout<<"     2———删除学生信息"<<endl;
    cout<<"     3———查找学生信息"<<endl;
    cout<<"     4———修改学生信息"<<endl;
    cout<<"     5———按成绩排序"<<endl;
    cout<<"     6———显示所有学生信息"<<endl;
    cout<<"     7———退出系统"<<endl;
    cout<<"************************************"<<endl;
    cout<<"************************************"<<endl;
}

//1.添加学生信息
void addStudent(Studatabase * sabs){
    if(sabs->size==Max){
        cout<<"数据已满,无法添加"<<endl;
    }
    else{
        string name;
        string id;
        double score;
        //姓名
        cout<<"请输入名字:"<<endl;
        cin>>name;
        sabs->studentArray[sabs->size].name=name;
        //学号
        cout<<"请输入学号:"<<endl;
        cin>>id;
        sabs->studentArray[sabs->size].id=id;
        //成绩
        while(1){
            cout<<"请输入分数:"<<endl;
            cin>>score;
            if(score<0||score>100){
                cout<<"输入有误,请重新输入"<<endl;
                system("pause");
            }
            else{
                sabs->studentArray[sabs->size].score=score;
                break;
            }
        }
        
        //更新数据库信息
        sabs->size++;
        cout<<"添加成功!"<<endl;
    }
}

//2.删除学生信息
void deleteStudent(Studatabase * sabs){
    if(sabs->size==0){
        cout<<"数据库中无数据,请添加数据"<<endl;
        return;
    }
    string name;
    cout<<"请输入要删除的学生的姓名:"<<endl;
    cin>>name;
    int ret=isExist1(sabs,name);
    if(ret!=-1){
        for(int i=ret;i<sabs->size;i++){
            sabs->studentArray[i]=sabs->studentArray[i+1];
        }
        sabs->size--;
        cout<<"删除成功"<<endl;      
}
    else{
        cout<<"未查询到该学生"<<endl;
    } }


//3.1 按学生姓名查找学生
void findStudent1(Studatabase * sabs){
    if(sabs->size==0){
        cout<<"数据库中无数据,请添加数据"<<endl;
        return;
    }
    string name;
    cout<<"请输入要查找学生姓名:"<<endl;
    cin>>name;
    int ret=isExist1(sabs,name);
    if(ret!=-1){
        int i=ret;
        cout<<"序号"<<"\t姓名"<<"\t学号"<<"\t\t成绩"<<endl;
        cout<<i+1<<"."<<"\t"<<sabs->studentArray[i].name<<"\t"<<sabs->studentArray[i].id<<"\t"<<sabs->studentArray[i].score<<endl;
    }
    else{
        cout<<"未查询到该学生"<<endl;
    } }


//3.2 按学生学号查找学生
void findStudent2(Studatabase * sabs){
    if(sabs->size==0){
        cout<<"数据库中无数据,请添加数据"<<endl;
        return;
    }
    string id;
    cout<<"请输入要查找学生学号:"<<endl;
    cin>>id;
    int ret=isExist2(sabs,id);
    if(ret!=-1){
        int i=ret;
        cout<<"序号"<<"\t姓名"<<"\t学号"<<"\t\t成绩"<<endl;
        cout<<i+1<<"."<<"\t"<<sabs->studentArray[i].name<<"\t"<<sabs->studentArray[i].id<<"\t"<<sabs->studentArray[i].score<<endl;
    }
    else{
        cout<<"未查询到该学生"<<endl;
    } }


//4.修改学生信息
void modifyStudent(Studatabase * sabs){
    if(sabs->size==0){
        cout<<"数据库中无数据,请添加数据"<<endl;
        return;
    }
    string name;
    cout<<"请输入要修改的学生的姓名:"<<endl;
    cin>>name;
    int ret=isExist1(sabs,name);
    if(ret!=-1){
        int i=ret;
        int change; //用于后续选择
        cout<<"序号"<<"\t姓名"<<"\t学号"<<"\t\t成绩"<<endl;
        cout<<i+1<<"."<<"\t"<<sabs->studentArray[i].name<<"\t"<<sabs->studentArray[i].id<<"\t"<<sabs->studentArray[i].score<<endl;
        cout<<"请输入要修改的信息:"<<endl;
        cout<<"1.姓名"<<endl;
        cout<<"2.学号"<<endl;
        cout<<"3.成绩"<<endl;
        while(1){
            cin>>change;
            if(change==1){
                string name1;
                cout<<"请输入姓名:"<<endl;
                cin>>name1;
                sabs->studentArray[i].name=name1;
                cout<<"修改成功!"<<endl;
                break;
            }
            else if(change==2){
                string id1;
                cout<<"请输入学号:"<<endl;
                cin>>id1;
                sabs->studentArray[i].id=id1;
                cout<<"修改成功!"<<endl;
                break;
            }
            else if(change==3){
                double score1;
                cout<<"请输入成绩:"<<endl;
                cin>>score1;
                sabs->studentArray[i].score=score1;
                cout<<"修改成功!"<<endl;
                break;
            }
            else{
                cout<<"输入有误,请重新输入"<<endl;
                system("pause");
            }
        }
    }
    else{
        cout<<"未查询到该学生"<<endl;
    } }


//5.按成绩排序
void scoreSort(Studatabase * sabs){
    if(sabs->size==0){
        cout<<"数据库中无数据,请添加数据"<<endl;
        return;
    }
    for(int i=0;i<sabs->size;i++){
        for(int j=i+1;j<sabs->size;j++){
            if(sabs->studentArray[i].score<sabs->studentArray[j].score){
                Student s;
                s=sabs->studentArray[i];
                sabs->studentArray[i]=sabs->studentArray[j];
                sabs->studentArray[j]=s;
            }
        }
    }
    cout<<"排序完成!"<<endl; }


//6.显示学生信息
void shouStudent(Studatabase * sabs){
    if(sabs->size==0){
        cout<<"数据库中无数据,请添加数据"<<endl;
        return;
    }
    cout<<"序号"<<"\t姓名"<<"\t学号"<<"\t\t成绩"<<endl;
    for(int i=0;i<sabs->size;i++){
        cout<<i+1<<"."<<"\t"<<sabs->studentArray[i].name<<"\t"<<sabs->studentArray[i].id<<"\t"<<sabs->studentArray[i].score<<endl;
    } }


int main() {

    Studatabase sabs;
    sabs.size=0;
         
int select;
         
while(1){
        Menu();
        cin>>select;
        switch (select) {
        case 1: //添加学生信息
            addStudent(&sabs);
            system("pause");
            system("cls");
            break;
        case 2: //删除学生信息
            deleteStudent(&sabs);
            system("pause");
            system("cls");
            break;
        case 3: //查找学生信息
            int select1; //判断查找方式
            while(1){
                cout<<"请选择如何查找"<<endl;
                cout<<"1.按学生姓名查找"<<endl;
                cout<<"2.按学生学号查找"<<endl;
                cout<<"3.返回菜单"<<endl;
                cin>>select1;
                if(select1==1){
                    findStudent1(&sabs); //按学生姓名查找学生
                    system("pause");
                    system("cls");
                    break;
                }
                else if(select1==2){
                    findStudent2(&sabs); //按学生学号查找学生
                    system("pause");
                    system("cls");
                    break;
                }
                else if(select1==3){
                    system("pause");
                    system("cls");
                    break;
                }
                else{
                    cout<<"输入有误,请重新输入"<<endl;
                    system("pause");
                }
            }
            break;
        case 4: //修改学生信息
            modifyStudent(&sabs);
            system("pause");
            system("cls");
            break;
        case 5: //按成绩排序
            scoreSort(&sabs);
            system("pause");
            system("cls");
            break;
        case 6: //显示所有学生信息
            shouStudent(&sabs);
            system("pause");
            system("cls");
            break;
        case 7: //退出系统
            int select2; //仅用于判断是否真的退出
            cout<<"请确认是否退出系统"<<endl;
            cout<<"1.是"<<endl;
            cout<<"2.否"<<endl;
            while(1){
                cin>>select2;
                if(select2==1){
                    cout<<"感谢您的本次使用,欢迎下次使用"<<endl;
                    system("pause");
                    return 0;
                }
                else if(select2==2){
                    system("cls");
                    break;
                }
                else{
                    cout<<"输入有误,请重新输入"<<endl;
                    system("pause");
                }
            }
            break;
        default:
            cout<<"输入有误,请重新输入"<<endl;
            system("pause");
            system("cls");
        }
    }
    system("pause");
    return 0; }

posted @ 2022-10-04 10:26  LuMinarY-  阅读(244)  评论(0)    收藏  举报