⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11.cpp

📁 学生成绩管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
                cin>>num; 
                for(p=ps;p!=0;p=p->next) if(strcmp(num,p->num)==0) return p; 
                break; 
            case 1: string name; 
                cout<<endl<<"\t\t 请输入姓名:"; 
                cin>>name; 
                for(p=ps;p!=0;p=p->next) if(strcmp(name,p->name)==0) return p;                    
                break; 
            }            
            system("cls"); 
            cout<<endl<<endl<<endl<<endl; 
            cout<<"\t\t╔═════════════════════╗"<<endl; 
            cout<<"\t\t║                     ║"<<endl; 
            cout<<"\t\t║      无该学生信息!        ║"<<endl; 
            cout<<"\t\t║                     ║"<<endl; 
            cout<<"\t\t╚═════════════════════╝"<<endl; 
            cout<<endl<<endl<<endl<<endl; 
            getch(); 
            return p; 
        } 
    } 
} 

//查找学生信息 
void School::Find() 
{ 
    p=Search(); 
    if(p==0) return; 
    system("cls"); 
    cout<<endl<<endl<<endl<<endl; 
    cout<<"\t\t╔════════ 查询结果 ════════╗"<<endl; 
    cout<<"\t\t║                     ║"<<endl; 
    cout<<"\t\t║   学 号:"<<setw(28)<<p->num<<"║"<<endl; 
    cout<<"\t\t║                     ║"<<endl; 
    cout<<"\t\t║   姓 名:"<<setw(11)<<p->name<<"性 别:"<<setw(9)<<p->sex<<"║"<<endl; 
    cout<<"\t\t║                     ║"<<endl; 
    cout<<"\t\t║   数 学:"<<setw(11)<<p->sx<<"英 语:"<<setw(9)<<p->yy<<"║"<<endl; 
    cout<<"\t\t║                     ║"<<endl; 
    cout<<"\t\t║   物 理:"<<setw(11)<<p->wl<<"C ++:"<<setw(9)<<p->cpp<<"║"<<endl; 
    cout<<"\t\t║                     ║"<<endl; 
    cout<<"\t\t║   课 设:"<<setw(11)<<p->ks<<"总 分:"<<setw(9)<<p->sum<<"║"<<endl; 
    cout<<"\t\t║                     ║"<<endl; 
    cout<<"\t\t║   均 分:"<<setw(11)<<p->ave<<"名 次:"<<setw(9)<<p->rank<<"║"<<endl; 
    cout<<"\t\t║                     ║"<<endl; 
    cout<<"\t\t╚═════════════════════╝"<<endl; 
    cout<<endl<<endl<<endl<<endl<<endl; 
    getch(); 
} 

//修改学生信息 
void School::Edit() 
{ 
    p=Search(); 
    if(p==0) return; 
    int m=0; 
    string l[12]; 
    while(1) 
    { 
        for(int i=0;i<12;i++) strcpy(l[i],"  "); 
        strcpy(l[m],"→ "); 
        system("cls"); 
        cout<<endl<<endl<<endl<<endl; 
        cout<<"\t\t╔═══════ 修改学生信息 ═══════╗"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[0]<<"学 号:"<<setw(28)<<p->num<<"║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[2]<<"姓 名:"<<setw(8)<<p->name<<l[3]<<"性 别:"<<setw(9)<<p->sex<<"║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[4]<<"数 学:"<<setw(8)<<p->sx<<l[5]<<"英 语:"<<setw(9)<<p->yy<<"║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[6]<<"物 理:"<<setw(8)<<p->wl<<l[7]<<"C ++:"<<setw(9)<<p->cpp<<"║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[8]<<"课 设:"<<setw(8)<<p->ks<<l[9]<<"总 分:"<<setw(9)<<p->sum<<"║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[10]<<"均 分:"<<setw(8)<<p->ave<<l[11]<<"返 回      ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t╚═════════════════════╝"<<endl; 
        cout<<endl<<endl<<endl; 
        switch(getch()) 
        { 
        case '1':m--; if(m==-1) m=11; if(m==1) m--; break; 
        case '2':m+=2; if(m==12) m=1; if(m==13) m=0; if(m==1) m+=2; break; 
        case '3': 
        case 32:m++; if(m==12) m=0; if(m==1) m++; break;    //空格键等同于右方向键 
        case '5':m-=2; if(m==-2) m=11; if(m==-1) m=10; if(m==1) m+=9; break; 
        case 27:Sumsort(); return; //按[ESC]键返回 
        case '\r': 
            switch(m) 
            { 
            case 0: 
            case 1: cout<<"\t\t 请输入新学号:";    cin>>p->num; break; 
            case 2: cout<<"\t\t 请输入新姓名:";    cin>>p->name; break; 
            case 3: cout<<"\t\t 请输入新性别:";    cin>>p->sex; break; 
            case 4: cout<<"\t\t 请输入新数学成绩:";    cin>>p->sx; break; 
            case 5: cout<<"\t\t 请输入新英语成绩:";    cin>>p->yy; break; 
            case 6: cout<<"\t\t 请输入新物理成绩:";    cin>>p->wl; break; 
            case 7: cout<<"\t\t 请输入新C++成绩:";    cin>>p->cpp; break; 
            case 8: cout<<"\t\t 请输入新课设成绩:";    cin>>p->ks; break; 
            case 9: 
            case 10: break; 
            case 11: Sumsort(); return ; 
            } 
            p->sum=p->sx+p->yy+p->wl+p->cpp+p->ks; 
            p->ave=p->sum/5; 
        } 
    } 
} 

//删除学生信息 
void School::Delete() 
{ 
    p=Search(); 
    if(p==0) return; 
    if(p!=ps) 
    { 
        Student *pt=ps; 
        while(pt->next!=p) 
            pt=pt->next; 
        pt->next=p->next; 
    } 
    else 
        ps=ps->next; 
    delete p; 
    system("cls"); 
    cout<<endl<<endl<<endl<<endl; 
    cout<<"\t\t╔═════════════════════╗"<<endl; 
    cout<<"\t\t║                     ║"<<endl; 
    cout<<"\t\t║      删除学生信息成功!      ║"<<endl; 
    cout<<"\t\t║                     ║"<<endl; 
    cout<<"\t\t╚═════════════════════╝"<<endl; 
    cout<<endl<<endl<<endl<<endl; 
    Sumsort(); 
    getch(); 
} 

//按照学号排序 
void School::Numsort() 
{ 
    if(ps==0) return; 
    Student *pi,*pj,*pt=new Student; 
    for(pi=ps;pi->next!=0;pi=pi->next) 
        for(pj=pi->next;pj!=0;pj=pj->next) 
            if(strcmp(pi->num,pj->num)>0) 
            { 
                pt->Set(pi); 
                pi->Set(pj); 
                pj->Set(pt); 
            } 
    delete pt; 
} 

//按照总分排序 
void School::Sumsort() 
{ 
    if(ps==0) return; 
    int i=1; 
    Student *pi,*pj,*pt=new Student; 
    for(pi=ps;pi->next!=0;pi->rank=i++,pi=pi->next) 
        for(pj=pi->next;pj!=0;pj=pj->next) 
            if(pi->sum < pj->sum) 
            { 
                pt->Set(pi); 
                pi->Set(pj); 
                pj->Set(pt); 
            } 
    delete pt; 
    pi->rank=i; 
    for(pi=ps;pi->next!=0;pi=pi->next) 
        if(pi->sum == pi->next->sum) 
            pi->next->rank=pi->rank;    //修正总分相同时的排名 
} 

//90分以上的 
void School::Jsys() 
{ 
    int m=0; 
    string l[6]; 
    while(1) 
    { 
        for(int i=0;i<6;i++) strcpy(l[i],"          "); 
        strcpy(l[m],"      → "); 
        system("cls"); 
        cout<<endl<<endl<<endl<<endl; 
        cout<<"\t\t╔═══════ 统计学生信息 ═══════╗"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[0]<<"数学90分以上的       ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[1]<<"英语90分以上的       ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[2]<<"物理90分以上的       ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[3]<<"C++90分以上的       ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[4]<<"课设90分以上的       ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[5]<<"返回至主菜单         ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t╚═════════════════════╝"<<endl; 
        cout<<endl<<endl<<endl<<endl<<endl; 
        switch(getch()) 
        { 
        case '1':m--; if(m==-1) m=5; break; 
        case '2':m++; if(m==6) m=0; break; 
        case '3': 
        case 32:m++; if(m==6) m=0; break;    //空格键等同于右方向键 
        case '5':m--; if(m==-1) m=5; break; 
        case 27:return; //按[ESC]键返回 
        case '\r': 
            switch(m) 
            { 
            case 0:OutputT("数 学 9 0 分 以 上 的"); 
                for(p=ps;p!=0;p=p->next) if(p->sx >= 90) p->Print(); 
                break; 
            case 1:OutputT("英 语 9 0 分 以 上 的"); 
                for(p=ps;p!=0;p=p->next) if(p->yy >= 90) p->Print(); 
                break; 
            case 2:OutputT("物 理 9 0 分 以 上 的"); 
                for(p=ps;p!=0;p=p->next) if(p->wl >= 90) p->Print(); 
                break; 
            case 3:OutputT("C ++ 9 0 分 以 上 的"); 
                for(p=ps;p!=0;p=p->next) if(p->cpp >= 90) p->Print(); 
                break; 
            case 4:OutputT("课 设 9 0 分 以 上 的"); 
                for(p=ps;p!=0;p=p->next) if(p->ks >= 90) p->Print(); 
                break; 
            case 5:return; 
            } 
            OutputL(); 
            getch(); 
        } 
    } 
} 

//平均分以下的 
void School::Jfyx() 
{ 
    float s(0),y(0),w(0),c(0),k(0); 
    int n=0; 
    for(p=ps;p!=0;p=p->next,n++) 
        s+=p->sx, y+=p->yy, w+=p->wl, c+=p->cpp, k+=p->ks; 
    if(n!=0) s/=n, y/=n, w/=n, c/=n, k/=n; 

    int m=0; 
    string l[6]; 
    while(1) 
    { 
        for(int i=0;i<6;i++) strcpy(l[i],"          "); 
        strcpy(l[m],"      → "); 
        system("cls"); 
        cout<<endl<<endl<<endl<<endl; 
        cout<<"\t\t╔═══════ 统计学生信息 ═══════╗"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[0]<<"数学平均分以下的       ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[1]<<"英语平均分以下的       ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[2]<<"物理平均分以下的       ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[3]<<"C++平均分以下的       ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[4]<<"课设平均分以下的       ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t║  "<<l[5]<<"返回至主菜单         ║"<<endl; 
        cout<<"\t\t║                     ║"<<endl; 
        cout<<"\t\t╚═════════════════════╝"<<endl; 
        cout<<endl<<endl<<endl<<endl<<endl; 
        switch(getch()) 
        { 
        case '1':m--; if(m==-1) m=5; break; 
        case '2':m++; if(m==6) m=0; break; 
        case '3': 
        case 32:m++; if(m==6) m=0; break;    //空格键等同于右方向键 
        case '5':m--; if(m==-1) m=5; break; 
        case 27:return; //按[ESC]键返回 
        case '\r': 
            string t1,t2; 
            switch(m) 
            { 
            case 0:OutputT(strcat(strcat(strcpy(t1,"数学平均分 "),gcvt(s,4,t2))," 分以下")); 
                for(p=ps;p!=0;p=p->next) if(p->sx < s) p->Print(); 
                break; 
            case 1:OutputT(strcat(strcat(strcpy(t1,"英语平均分 "),gcvt(y,4,t2))," 分以下")); 
                for(p=ps;p!=0;p=p->next) if(p->yy < y) p->Print(); 
                break; 
            case 2:OutputT(strcat(strcat(strcpy(t1,"物理平均分 "),gcvt(w,4,t2))," 分以下")); 
                for(p=ps;p!=0;p=p->next) if(p->wl < w) p->Print(); 
                break; 
            case 3:OutputT(strcat(strcat(strcpy(t1,"C++平均分 "),gcvt(c,4,t2))," 分以下")); 
                for(p=ps;p!=0;p=p->next) if(p->cpp < c) p->Print(); 
                break; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -