美文网首页
150rmb代码,2小时

150rmb代码,2小时

作者: 桐桑入梦 | 来源:发表于2019-12-30 22:04 被阅读0次
    #include<algorithm>
    #include<string>
    #include<streambuf>
    #include<iostream>
    #include<sstream>
    #include<cstdio>
    #include<fstream>
    using namespace std;
    struct student{
        string sno;
        string name;
        double s[4]; 
    }A[500];
    int cnt=0;   
    int cur=0;
    int handle(); 
    void method_help(int x);
    void method_list(int x,string str);  
    void method_print_i(int i); 
    void method_add(student a);
    void method_rem(int x,string str);
    void method_edit(int x);
    void method_set(int i);
    void method_sort(int x);
    int cmp(int x,int i,int j);
    
    int main(void)
    {
        streambuf *stdcin;
        stdcin=cin.rdbuf();
        string sno,name;
        double s[4];
        ifstream in;
        streambuf *sin;
        sin=cin.rdbuf();
        in.open("C:\\database.txt");
        cin.rdbuf(in.rdbuf());
        cin >> cnt; 
        for(int i=0;i<cnt;i++)
        {
            cin>>sno>>name>>s[0]>>s[1]>>s[2];
            A[i].sno=sno;
            A[i].name=name;
            A[i].s[0]=s[0];
            A[i].s[1]=s[1];
            A[i].s[2]=s[2];
            A[i].s[3]=(s[0]+s[1]+s[2])/3;
        }
        cin.rdbuf(sin);
        method_help(1);
        while(true){
            int res = handle();  //获取命令 
            if(res == 0) break;
            if(res == -1) {
                cout<<"错误指令"<<endl; 
            }
        } 
        freopen("c:\\database.txt","w",stdout); 
        cout<<cnt<<endl;
        for(int i=0;i<cnt;i++){
            cout<<A[i].sno<<" "<<A[i].name<<" "<<A[i].s[0]<<" "<<A[i].s[1]<<" "<<A[i].s[2]<<endl;
        } 
        
        
        return 0;
    }
    
    int handle()
    {
        string line,parameter;
        cin>>line;
        getline(cin,parameter);
        stringstream ss(parameter);
        if(line=="quit") return 0;
        else if(line=="list"){
            string str;
            ss>>str;
             
            if(str=="") method_list(1,"");
            else if(str=="a") method_list(2,"");
            else if(str=="x"){
                ss>>str;
                method_list(3,str);
            }
            else if(str=="n") {
                ss>>str;
                method_list(4,str);
            }
            else return -1;
        }
        else if(line=="add"){
            string str;
            ss>>str;
            if(str=="a"){
                cout<<"“add a”命令参数格式为:add a 学号 姓名 成绩1 成绩2 成绩3"<<endl;
                cout<<">>:"<<endl;
            }
            else if(str==""){
                cout<<"请输入记录:"<<endl;
            }
            else return -1;
            
            student a;
            cin>>a.sno>>a.name>>a.s[0]>>a.s[1]>>a.s[2];
            a.s[3]=0;
            for(int i=0;i<3;i++) a.s[4]+=a.s[i];
            a.s[3]/=3;
            method_add(a);
        }
        else if(line=="rem"){
            string str;
            ss>>str;
            if(str=="a") cnt=0,cur=0;
            else if(str=="x"){
                ss>>str;
                method_rem(1,str); 
            } 
            else if(str==""){
                method_rem(2,"");
            }
            else return -1;
        }
        else if(line=="edit"){
            cout<<"修改前记录为:"<<endl;
            method_list(1,"");
            string str;
            ss>>str;
            if(str=="") method_edit(1);
            else if(str=="a") method_edit(2);
            else if(str=="x") method_edit(3);
            else if(str=="n") method_edit(4);
            else if(str=="s1") method_edit(5);
            else if(str=="s2") method_edit(6);
            else if(str=="s3") method_edit(7); 
        }
        else if(line=="set"){
            int i;
            ss >>i;
            method_set(i);
        }
        else if(line=="sort") {
            string str;
            ss>>str;
            if(str=="") method_sort(1);
            else if(str=="x") method_sort(2);
            else if(str=="n") method_sort(3);
            else if(str=="s1") method_sort(4);
            else if(str=="s2") method_sort(5);
            else if(str=="s3") method_sort(6);
            else return -1;
        }
        else if(line=="help"){
            string str;
            ss>>str;
            if(str=="") method_help(1);
            else if(str=="list") method_help(2);
            else if(str=="add") method_help(3); 
            else if(str=="rem") method_help(4);
            else if(str=="edit")  method_help(5);
            else if(str=="set") method_help(6);
            else if(str=="sort") method_help(7);
            else if(str=="help") method_help(8);
            else if(str=="quit") method_help(9);
            else return -1;
        }
        else {
            cout<<"非法指令!"<<endl; 
        }
        return 1;
    }
    
    
    
    void method_help(int x)
    {
        switch(x)
        {
            case 1:
                cout<<"主菜单:"<<endl;
                cout<<"------------------"<<endl; 
                cout<<"1. 显示学生记录(list)"<<endl;
                cout<<"2. 增加学生记录(add)"<<endl;
                cout<<"3. 删除学生记录(rem)"<<endl;
                cout<<"4. 修改学生记录(edit)"<<endl;
                cout<<"5. 设置当前记录(set)"<<endl;
                cout<<"6. 排序学生记录(sort)"<<endl;
                cout<<"7. 帮助(help)"<<endl;
                cout<<"8. 退出(quit)"<<endl;
                cout<<"-------------------"<<endl;
                break;
            case 2:
                cout<<"        list---------------显示当前记录"<<endl;
                cout<<"        list a-------------显示所有记录"<<endl;
                cout<<"        list x 学号值------显示相应“学号”记录"<<endl;
                cout<<"        list n 姓名值------显示所有相应“姓名”记录"<<endl;
                break;
            case 3:
                cout<<"        add----------------------------------在最后插入一条新记录"<<endl;
                cout<<"        add a 学号 姓名 分数1 分数2 分数3----在最后插入一条新记录(快速)"<<endl;
                break;
            case 4:
                cout<<"        rem----------------删除当前记录"<<endl;
                cout<<"        rem a--------------删除所有记录"<<endl;
                cout<<"        rem x 学号值-------删除指定“学号”记录"<<endl;       
                break;
            case 5:
                cout<<"        edit---------------更新当前记录所有项"<<endl;
                cout<<"        edit x  学号值-----更新当前记录学号值"<<endl;
                cout<<"        edit n  姓名值-----更新当前记录姓名值"<<endl;
                cout<<"        edit s1 分数1值----更新当前记录分数1值"<<endl;
                cout<<"        edit s2 分数2值----更新当前记录分数2值"<<endl;
                cout<<"        edit s3 分数3值----更新当前记录分数3值"<<endl;
                cout<<"        edit a 学号 姓名 分数1 分数2 分数3----更新当前记录所有项(快速)"<<endl;
                break;
            case 6:
                cout<<"        set 序号值--      --使用“序号”进行定位,并设置为当前记录"<<endl;
                break;
            case 7:
                cout<<"        sort---------------使用“平均成绩”进行排序"<<endl;
                cout<<"        sort x-------------使用“学号”进行排序"<<endl;
                cout<<"        sort n-------------使用“姓名”进行排序"<<endl;
                cout<<"        sort s1------------使用“分数1”进行排序"<<endl;
                cout<<"        sort s2------------使用“分数2”进行排序"<<endl;
                cout<<"        sort s3------------使用“分数3”进行排序"<<endl;   
                break;
            case 8:
                cout<<"        没有“help”的帮助。"<<endl; 
                break;
            case 9:
                cout<<"        没有“exit”的帮助。"<<endl; 
                break; 
        }
    }
    
    void method_list(int x,string s)
    {
        cout<<"======================================================================="<<endl;
        cout<<"||  序号 |      学号|      姓名|   成绩1|   成绩2|   成绩3|  平均成绩||"<<endl;
        cout<<"-----------------------------------------------------------------------"<<endl;
        switch(x)
        {
            case 1:
                method_print_i(cur);
                break;
            case 2:
                for(int i=0;i<cnt;i++) method_print_i(i);
                break;
            case 3:
                for(int i=0;i<cnt;i++) if(A[i].sno==s) method_print_i(i);
                break;
            case 4:
                for(int i=0;i<cnt;i++) if(A[i].sno==s) method_print_i(i);
                break;
        }
        cout<<"======================================================================="<<endl;
    }
    
    void method_print_i(int i)
    {
        printf("|| %c %02d  |        %s|        %s|   %.2lf|   %.2lf|   %.2lf|     %.2lf||\n",
        i==cur?'*':' ',i+1,A[i].sno.c_str(),A[i].name.c_str(),A[i].s[0],A[i].s[1],A[i].s[2],A[i].s[3]);
    }
    
    void method_add(student a)
    {
        for(int i=0;i<cnt;i++){
            if(A[i].sno==a.sno){
                cout<<"该学号已有"<<endl;
                return; 
            }
        }
        for(int i=0;i<a.sno.length();i++){
            if(a.sno[i]<'0' || a.sno[i]>'9'){
                cout<<"该学号包含非数字!"<<endl; 
                return ;
            }       
        }
        A[cnt]=a;
        cnt++;
    }
    
    void method_rem(int x,string s)
    {
        if(x==1){
            for(int i=0;i<cnt;i++){
                if(A[i].sno==s){
                    cout<<"你要删除的学生信息为:"<<endl;
                    method_list(3,s);
                    cout<<"是否真的要删除?(y/n)";
                    char c;
                    cin >> c;
                    if(c=='y' || c=='Y') {
                        for(int j=i+1;j<cnt;j++) 
                        {
                            A[j-1]=A[j];
                        }
                        if(cur=cnt-1) cur--;
                        cnt--;
                        break;
                    }
                }
            }
        }
        else if(x==2)
        {
            cout<<"你要删除的学生信息为:"<<endl;
            method_list(1,"");
            cout<<"是否真的要删除?(y/n)";
            char c;
            cin >> c;
            if(c=='y' || c=='Y')
            {
                for(int i=cur+1;i<cnt;i++)
                {
                    A[i-1]=A[i];
                }
                cur=0;
                cnt--;
            }
        }
    }
    
    void method_edit(int x){
        student t;
        string sno;
        double a;
        string name;
        switch(x){
            case 1: 
                cout<<"请输入记录:";
                cin>>t.sno>>t.name>>t.s[0]>>t.s[1]>>t.s[2];
                t.s[3]=0;
                for(int i=0;i<3;i++) t.s[3]+=t.s[i];
                t.s[3]/=3;
                A[cur]=t;
                break;
            case 2:
                cout<<"“edit a”命令参数格式为:edit a 学号 姓名 成绩1 成绩2 成绩3";
                cin>>t.sno>>t.name>>t.s[0]>>t.s[1]>>t.s[2];
                t.s[3]=0;
                for(int i=0;i<3;i++) t.s[3]+=t.s[i];
                t.s[3]/=3;
                A[cur]=t;
                break;
            case 3:
                cout<<"请输入学号新值:"<<endl;
                cin >> sno;
                for(int i=0;i<sno.length();i++){
                    if(sno[i]<'0' || sno[i]>'9'){
                        cout<<"该学号不规范!"<<endl;
                        return ; 
                    }
                }
                A[cur].sno=sno;
                break;
            case 4:
                cout<<"请输入姓名新值:"<<endl;
                cin >> name;
                A[cur].name=name;   
                break;
            case 5:
                cout<<"请输入分数1新值:"<<endl;
                cin >> a;
                A[cur].s[0]=a;
                A[cur].s[3]=0;
                for(int i=0;i<3;i++) A[cur].s[3]+=A[cur].s[i];
                A[cur].s[3]/=3; 
                break;
            case 6:
                cout<<"请输入分数2新值:"<<endl;
                cin >> a;
                A[cur].s[1]=a;
                A[cur].s[3]=0;
                for(int i=0;i<3;i++) A[cur].s[3]+=A[cur].s[i];
                A[cur].s[3]/=3;
                break;
            case 7:
                cout<<"请输入分数3新值:"<<endl;
                cin >> a;
                A[cur].s[2]=a;
                A[cur].s[3]=0;
                for(int i=0;i<3;i++) A[cur].s[3]+=A[cur].s[i];
                A[cur].s[3]/=3;
                break;
        }
    }
    
    void method_set(int i){
        if(i<=0 || i>cnt){
            cout<<"输入的序号不在范围内。"<<endl;
            return ;
        }
        cur=i-1;
        method_list(1,"");
    }
    
    void method_sort(int x){
        for(int i=0;i<cnt;i++){
            for(int j=i+1;j<cnt;j++){
                if(cmp(x,i,j)<0) swap(A[i],A[j]);   
            }   
        } 
    }
    
    int cmp(int x,int i,int j)
    {
        student a=A[i],b=A[j];
        switch(x)
        {
            case 1:
                if(a.s[3]<=b.s[3]) return 1;
                else return -1;
                break;
            case 2:
                if(a.sno<=b.sno) return 1;
                else return -1;
                break;
            case 3:
                if(a.name<=b.name) return 1;
                else return -1;
                break;
            case 4:
                if(a.s[0]<=b.s[0]) return 1;
                else return -1;
                break;
            case 5:
                if(a.s[1]<=b.s[1]) return 1;
                else return -1; 
                break;
            case 6:
                if(a.s[2]<=b.s[2]) return 1;
                else return -1;
                break;
        }
    }
    

    原始code:

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<string>
    #include<iostream>
    #include<sstream>
    #include<fstream>
    #include<streambuf>
    using namespace std;
    
    struct message{
        string stu_id;
        string stu_name;
        double s1;
        double s2;
        double s3; 
        double avg;
    }Stu[1000];
    
    int stu_num=0;   //学生人数 
    int cur_order_num=0; //当前序号 
    
    int getCommand();  //获取指令 
    void help(int mode);
    void list(int mode,string str);  
    void print_i(int i); 
    void add(message a);
    void rem(int mode,string str);
    void edit(int mode);
    void set(int i);
    void sort(int mode);
    int cmp(int mode,int i,int j);
    
    int main(void)
    {
        string id,name;
        double s1,s2,s3,avg;
        ifstream infile;
        streambuf *stdcin;
        
        stdcin=cin.rdbuf();
        infile.open("C:\\database.txt");
        
        cin.rdbuf(infile.rdbuf());
        
        
        cin >> stu_num; 
        for(int i=0;i<stu_num;i++)
        {
            cin>>id>>name>>s1>>s2>>s3;
            Stu[i].stu_id=id;
            Stu[i].stu_name=name;
            Stu[i].s1=s1;
            Stu[i].s2=s2;
            Stu[i].s3=s3;
            Stu[i].avg=(s1+s2+s3)/3;
        }
        infile.close();
        cin.rdbuf(stdcin);
         
        help(1);
        
        while(true)
        {
            int retcode = getCommand();  //获取命令 
            if(retcode == 0) break;
            if(retcode == -1) 
            {
                cout<<"错误指令"<<endl; 
            }
        }
        
        //写回文件 
        freopen("c:\\database.txt","w",stdout); 
        cout<<stu_num<<endl;
        for(int i=0;i<stu_num;i++)
        {
            cout<<Stu[i].stu_id<<" "<<Stu[i].stu_name<<" "<<Stu[i].s1<<" "<<Stu[i].s2<<" "<<Stu[i].s3<<endl;
        } 
        
        
        return 0;
    }
    
    int getCommand()
    {
        string line,parameter;
        cin>>line;
        getline(cin,parameter);
        stringstream ss(parameter);
        if(line=="quit") return 0;
        else if(line=="list")
        {
            string str;
            ss>>str;
             
            if(str=="") list(1,"");
            else if(str=="a") list(2,"");
            else if(str=="x")
            {
                ss>>str;
                list(3,str);
            }
            else if(str=="n") 
            {
                ss>>str;
                list(4,str);
            }
            else return -1;
        }
        else if(line=="add")
        {
            string str;
            ss>>str;
            if(str=="a")
            {
                cout<<"“add a”命令参数格式为:add a 学号 姓名 成绩1 成绩2 成绩3"<<endl;
                cout<<">>:"<<endl;
            }
            else if(str=="")
            {
                cout<<"请输入记录:"<<endl;
            }
            else return -1;
            
            message temp;
            cin>>temp.stu_id>>temp.stu_name>>temp.s1>>temp.s2>>temp.s3;
            temp.avg=(temp.s1+temp.s2+temp.s3)/3;
            add(temp);
        }
        else if(line=="rem")
        {
            string str;
            ss>>str;
            if(str=="a") stu_num=0,cur_order_num=0;
            else if(str=="x")
            {
                ss>>str;
                rem(1,str); 
            } 
            else if(str=="")
            {
                rem(2,"");
            }
            else return -1;
        }
        else if(line=="edit")
        {
            cout<<"修改前记录为:"<<endl;
            list(1,"");
            string str;
            ss>>str;
            if(str=="") edit(1);
            else if(str=="a") edit(2);
            else if(str=="x") edit(3);
            else if(str=="n") edit(4);
            else if(str=="s1") edit(5);
            else if(str=="s2") edit(6);
            else if(str=="s3") edit(7); 
        }
        else if(line=="set")
        {
            int i;
            ss >>i;
            set(i);
        }
        else if(line=="sort") 
        {
            string str;
            ss>>str;
            if(str=="") sort(1);
            else if(str=="x") sort(2);
            else if(str=="n") sort(3);
            else if(str=="s1") sort(4);
            else if(str=="s2") sort(5);
            else if(str=="s3") sort(6);
            else return -1;
        }
        else if(line=="help")
        {
            string str;
            ss>>str;
            if(str=="") help(1);
            else if(str=="list") help(2);
            else if(str=="add") help(3); 
            else if(str=="rem") help(4);
            else if(str=="edit")  help(5);
            else if(str=="set") help(6);
            else if(str=="sort") help(7);
            else if(str=="help") help(8);
            else if(str=="quit") help(9);
            else return -1;
        }
        else {
            cout<<"非法指令!"<<endl; 
        }
        return 1;
    }
    
    
    
    void help(int mode)
    {
        if(mode==1) 
        {
            cout<<"主菜单:"<<endl;
            cout<<"------------------"<<endl; 
            cout<<"1. 显示学生记录(list)"<<endl;
            cout<<"2. 增加学生记录(add)"<<endl;
            cout<<"3. 删除学生记录(rem)"<<endl;
            cout<<"4. 修改学生记录(edit)"<<endl;
            cout<<"5. 设置当前记录(set)"<<endl;
            cout<<"6. 排序学生记录(sort)"<<endl;
            cout<<"7. 帮助(help)"<<endl;
            cout<<"8. 退出(quit)"<<endl;
            cout<<"-------------------"<<endl;
        }
        else if(mode==2)
        {
            cout<<"        list---------------显示当前记录"<<endl;
            cout<<"        list a-------------显示所有记录"<<endl;
            cout<<"        list x 学号值------显示相应“学号”记录"<<endl;
            cout<<"        list n 姓名值------显示所有相应“姓名”记录"<<endl;
        }
        else if(mode==3)
        {
            cout<<"        add----------------------------------在最后插入一条新记录"<<endl;
            cout<<"        add a 学号 姓名 分数1 分数2 分数3----在最后插入一条新记录(快速)"<<endl;        
        }
        else if(mode==4)
        {
            cout<<"        rem----------------删除当前记录"<<endl;
            cout<<"        rem a--------------删除所有记录"<<endl;
            cout<<"        rem x 学号值-------删除指定“学号”记录"<<endl;       
        }
        else if(mode==5)
        {
            cout<<"        edit---------------更新当前记录所有项"<<endl;
            cout<<"        edit x  学号值-----更新当前记录学号值"<<endl;
            cout<<"        edit n  姓名值-----更新当前记录姓名值"<<endl;
            cout<<"        edit s1 分数1值----更新当前记录分数1值"<<endl;
            cout<<"        edit s2 分数2值----更新当前记录分数2值"<<endl;
            cout<<"        edit s3 分数3值----更新当前记录分数3值"<<endl;
            cout<<"        edit a 学号 姓名 分数1 分数2 分数3----更新当前记录所有项(快速)"<<endl;        
        }
        else if(mode==6)
        {
            cout<<"        set 序号值--      --使用“序号”进行定位,并设置为当前记录"<<endl;     
        }
        else if(mode==7)
        {
            cout<<"        sort---------------使用“平均成绩”进行排序"<<endl;
            cout<<"        sort x-------------使用“学号”进行排序"<<endl;
            cout<<"        sort n-------------使用“姓名”进行排序"<<endl;
            cout<<"        sort s1------------使用“分数1”进行排序"<<endl;
            cout<<"        sort s2------------使用“分数2”进行排序"<<endl;
            cout<<"        sort s3------------使用“分数3”进行排序"<<endl;   
        }
        else if(mode==8)
        {
            cout<<"        没有“help”的帮助。"<<endl; 
        }
        else if(mode==9)
        {
            cout<<"        没有“exit”的帮助。"<<endl; 
        }
    }
    
    void list(int mode,string str)
    {
        cout<<"======================================================================="<<endl;
        cout<<"||  序号 |      学号|      姓名|   成绩1|   成绩2|   成绩3|  平均成绩||"<<endl;
        cout<<"-----------------------------------------------------------------------"<<endl;
        if(mode==1) print_i(cur_order_num);
        if(mode==2) for(int i=0;i<stu_num;i++) print_i(i);
        if(mode==3) for(int i=0;i<stu_num;i++) if(Stu[i].stu_id==str) print_i(i);
        if(mode==4) for(int i=0;i<stu_num;i++) if(Stu[i].stu_name==str) print_i(i);
        cout<<"======================================================================="<<endl;
    }
    
    void print_i(int i)
    {
        printf("|| %c %02d  |        %s|        %s|   %.2lf|   %.2lf|   %.2lf|     %.2lf||\n",
        i==cur_order_num?'*':' ',
        i+1,
        Stu[i].stu_id.c_str(),
        Stu[i].stu_name.c_str(),
        Stu[i].s1,
        Stu[i].s2,
        Stu[i].s3,
        Stu[i].avg
        );
    }
    
    void add(message a)
    {
        for(int i=0;i<stu_num;i++)
        {
            if(Stu[i].stu_id==a.stu_id)
            {
                cout<<"该学号已经存在!"<<endl;
                return; 
            }
        }
        
        for(int i=0;i<a.stu_id.length();i++)
        {
            if(a.stu_id[i]<'0' || a.stu_id[i]>'9')
            {
                cout<<"该学号不规范!"<<endl; 
                return ;
            }       
        }
        Stu[stu_num]=a;
        stu_num++;
    }
    
    void rem(int mode,string str)
    {
        if(mode==1)
        {
            for(int i=0;i<stu_num;i++)
            {
                if(Stu[i].stu_id==str)
                {
                    cout<<"你要删除的学生信息为:"<<endl;
                    list(3,str);
                    cout<<"是否真的要删除?(y/n)";
                    
                    char ch;
                    cin >> ch;
                    if(ch=='y' || ch=='Y') 
                    {
                        for(int j=i+1;j<stu_num;j++) 
                        {
                            Stu[j-1]=Stu[j];
                        }
                        if(cur_order_num==stu_num-1) cur_order_num--;
                        stu_num--;
                        break;
                    }
                }
            }
        }
        else if(mode==2)
        {
            cout<<"你要删除的学生信息为:"<<endl;
            list(1,"");
            cout<<"是否真的要删除?(y/n)";
            char ch;
            cin >> ch;
            if(ch=='y' || ch=='Y')
            {
                for(int i=cur_order_num+1;i<stu_num;i++)
                {
                    Stu[i-1]=Stu[i];
                }
                cur_order_num=0;
                stu_num--;
            }
        }
    }
    
    void edit(int mode)
    {
        if(mode==1)
        {
            message tmp;
            cout<<"请输入记录:";
            cin>>tmp.stu_id>>tmp.stu_name>>tmp.s1>>tmp.s2>>tmp.s3;
            tmp.avg=(tmp.s1+tmp.s2+tmp.s3)/3;
            Stu[cur_order_num]=tmp;
        }
        else if(mode==2) 
        {
            message tmp;
            cout<<"“edit a”命令参数格式为:edit a 学号 姓名 成绩1 成绩2 成绩3";
            cin>>tmp.stu_id>>tmp.stu_name>>tmp.s1>>tmp.s2>>tmp.s3;
            tmp.avg=(tmp.s1+tmp.s2+tmp.s3)/3;
            Stu[cur_order_num]=tmp;
        }
        else if(mode==3)
        {
            cout<<"请输入学号新值:"<<endl;
            string id;
            cin >> id;
            for(int i=0;i<id.length();i++)
            {
                if(id[i]<'0' || id[i]>'9')
                {
                    cout<<"该学号不规范!"<<endl;
                    return ; 
                }
            }
            Stu[cur_order_num].stu_id=id;
        }
        else if(mode==4)
        {
            cout<<"请输入姓名新值:"<<endl;
            string name;
            cin >> name;
            Stu[cur_order_num].stu_name=name;
            
        }
        else if(mode==5)
        {
            cout<<"请输入分数1新值:"<<endl;
            double s;
            cin >> s;
            Stu[cur_order_num].s1=s;
            Stu[cur_order_num].avg=
                (Stu[cur_order_num].s1+Stu[cur_order_num].s2+Stu[cur_order_num].s3)/3;  
        }
        else if(mode==6)
        {
            cout<<"请输入分数2新值:"<<endl;
            double s;
            cin >> s;
            Stu[cur_order_num].s2=s;
            Stu[cur_order_num].avg=
                (Stu[cur_order_num].s1+Stu[cur_order_num].s2+Stu[cur_order_num].s3)/3;  
        }
        else if(mode==7)
        {
            cout<<"请输入分数3新值:"<<endl;
            double s;
            cin >> s;
            Stu[cur_order_num].s3=s;
            Stu[cur_order_num].avg=
                (Stu[cur_order_num].s1+Stu[cur_order_num].s2+Stu[cur_order_num].s3)/3;  
        }
    }
    
    void set(int i)
    {
        if(i<=0 || i>stu_num)
        {
            cout<<"输入的序号不在范围内。"<<endl;
            return ;
        }
        cur_order_num=i-1;
        list(1,"");
    }
    
    void sort(int mode)
    {
        for(int i=0;i<stu_num;i++)
        {
            for(int j=i+1;j<stu_num;j++)
            {
                if(cmp(mode,i,j)<0) swap(Stu[i],Stu[j]);    
            }   
        } 
    }
    
    int cmp(int mode,int i,int j)
    {
        message a=Stu[i],b=Stu[j];
        if(mode==1)
        {   
            if(a.avg<=b.avg) return 1;
            else return -1;
        }
        else if(mode==2)
        {
            if(a.stu_id<=b.stu_id) return 1;
            else return -1;
        }
        else if(mode==3)
        {
            if(a.stu_name<=b.stu_name) return 1;
            else return -1;
        }
        else if(mode==4)
        {
            if(a.s1<=b.s1) return 1;
            else return -1;
        }
        else if(mode==5)
        {
            if(a.s2<=b.s2) return 1;
            else return -1; 
        }
        else if(mode==6)
        {
            if(a.s3<=b.s3) return 1;
            else return -1;
        }
    }
    

    相关文章

      网友评论

          本文标题:150rmb代码,2小时

          本文链接:https://www.haomeiwen.com/subject/gulvoctx.html