美文网首页
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