久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: C++寫的學生管理系統,請大佬點評一下 [打印本頁]

作者: @不死鳥    時間: 2018-7-17 15:26
標題: C++寫的學生管理系統,請大佬點評一下
#include <iostream>
using namespace std;
const int N=50;
struct student                            //定義結構體
{
        int no;                               //學號
        char xm[10];                          //姓名
        double chinese;                       //語文
        double math;                          //數學
        double english;                       //外語
        double sum;                           //總分
        double average;                       //平均分
};
student stu[N];
void input(student *p,int n);             //輸入學生信息
void cal(student *p,int i);               //計算總分和個人平均分
void aver(student *p,int n);              //計算各科平均分和平均總分
void sort(student *p,int n);              //按成績排序
void sortno(student *p,int n);            //按學號排序
void search(student *p,int n);            //查找學生
int  find(student *p,int c,int n);        //查找學號
void max(student *p,int n);               //查找最好和最差學生
void output(student *p,int n);            //輸出學生信息
int  insert(student *p,int n);            //添加學生信息
int  del(student *p,int n);               //刪除學生信息
void showmenu();                          //顯示菜單
int  main()
{
        int n;
        cout<<"輸入學生人數 :";               //輸入學生總數
        cin>>n;
        input(stu,n);
        while(n>0)                            //當n大于0時循環
        {
                showmenu();                     
                int a;                            //通過給a賦值調用函數
                cout<<"請輸入選項 :";
                cin>>a;
                if(a<1||a>8)                      //輸入指令為1~8
                {
                        cout<<"輸入錯誤!!!\n";        //輸入錯誤
                        for(int i=0;i<33;i++)         //分隔符
                                cout<<"*";
                        cout<<endl;
                }
                else if(a==6)                     //insert需要返回n值
                {
                        n=insert(stu,n);
                        cout<<endl;
                        for(int i=0;i<33;i++)
                        cout<<"*";
                        cout<<endl;
                }
                else if(a==7)                     //del函數需要返回n值
                {
                        n=del(stu,n);
                        cout<<endl;
                        for(int i=0;i<33;i++)
                        cout<<"*";
                        cout<<endl;
                }
                else if(a==8)                     //結束語句
                {
                        for(int i=0;i<33;i++)
                                cout<<"*";
                        cout<<"\n謝謝使用"<<endl;
                        break;
                }
                else
                {
                        switch(a)                     //switch選擇語句
                        {
                                case 1:aver(stu,n);break;
                                case 2:sort(stu,n);break;
                                case 3:search(stu,n);break;
                                case 4:max(stu,n);break;
                                case 5:output(stu,n);
                        }
                        cout<<endl;
                        for(int i=0;i<33;i++)
                                cout<<"*";
                        cout<<endl;
                }
        }
        return 0;
}
void input( student *p,int n)                                          //輸入函數
{
        cout<<"Enter students information:"<<endl;                         //輸出表頭
        cout<<"學號\t姓名\t語文\t數學\t外語\t總分\t平均分\n";
        for(int i=0;i<n;i++)
        {
                cin>>stu[i].no>>stu[i].xm>>stu[i].chinese>>stu[i].math>>stu[i].english;          //輸入學生信息
                cal(stu,i);                                                                      //cal函數計算總分和平均分
        }
        cout<<"學號\t姓名\t語文\t數學\t外語\t總分\t平均分\n";
        for(i=0;i<n;i++)
                cout<<stu[i].no<<"\t"<<stu[i].xm<<"\t"<<stu[i].chinese<<"\t"<<stu[i].math<<"\t"<<stu[i].english<<"\t"<<stu[i].sum<<"\t"<<stu[i].average<<"\n";
        cout<<endl;
        for(i=0;i<33;i++)
                cout<<"*";                                                                  
        cout<<endl;
}
void cal(student *p,int i)                                             //計算每個學生總分和平均分
{
        stu[i].sum=(p+i)->chinese+(p+i)->math+(p+i)->english;
        (p+i)->average=(p+i)->sum/3;
}
void aver(student *p,int n)                                            //計算各科平均分和總平均分
{
        double averchinese=0,avermath=0,averenglish=0,aversum=0;
        for(int i=0;i<n;i++)
        {
                averchinese+=(p+i)->chinese;
                avermath+=(p+i)->math;
                averenglish+=(p+i)->english;
        }
        averchinese/=n;                                                    //將語文成績都加起來除以總人數
        avermath/=n;
        averenglish/=n;
        aversum=averchinese+avermath+averenglish;
        cout<<"average of the scores\n";
        cout<<"語文\t數學\t外語\t總分\n";
        cout<<averchinese<<"\t"<<avermath<<"\t"<<averenglish<<"\t"<<aversum<<endl;
}
void sort(student *p,int n)
{
        student t;
        for(int i=0;i<n-1;i++)                                             //冒泡法平均成績降序排序
                for(int j=0;j<n-i-1;j++)
                        if((p+j)->average<(p+j+1)->average)
                        {
                                t=stu[j];
                                stu[j]=stu[j+1];
                                stu[j+1]=t;
                        }
                         cout<<"學號\t姓名\t語文\t數學\t外語\t總分\t平均分\t名次\n";
                         for(i=0;i<n;i++)
                                 cout<<stu[i].no<<"\t"<<stu[i].xm<<"\t"<<stu[i].chinese<<"\t"<<stu[i].math<<"\t"<<stu[i].english<<"\t"<<stu[i].sum<<"\t"<<stu[i].average<<"\t"<<i+1<<"\n";
                         sortno(stu,n);
}
void sortno(student *p,int n)                                          //冒泡法學號升序排序恢復按成績排序后的學生信息順序
{
        student t;
        for(int i=0;i<n-1;i++)
                for(int j=0;j<n-i-1;j++)
                        if((p+j)->no>(p+j+1)->no)
                        {
                                t=stu[j];
                                stu[j]=stu[j+1];
                                stu[j+1]=t;
                        }

}
void search(student *p,int n)
{
        int code;                                                          //輸入要查找的學號
        cout<<"請輸入學號 :";
        cin>>code;
        int f=find(stu,code,n);                                            //查找函數返回值
        if(f==-1)
                cout<<"Can not find the student!";
        else
        {
                cout<<"學號\t姓名\t語文\t數學\t外語\t總分\t平均分\n";
                cout<<stu[f].no<<"\t"<<stu[f].xm<<"\t"<<stu[f].chinese<<"\t"<<stu[f].math<<"\t"<<stu[f].english<<"\t"<<stu[f].sum<<"\t"<<stu[f].average<<"\n";
        }
}
int find(student *p,int c,int n)
{
        for(int i=0;i<n;i++)
                if((p+i)->no==c)
                        return i;                                                  //查找函數返回值角標
                return -1;                                                     //查找不到則返回-1
}
void max(student *p,int n)
{
        int a=0,b=0;                                                      
        for(int i=1;i<n;i++)                                               //stu[a]、stu[b]為最好和最差學生
        {
                if(stu[i].chinese+stu[i].math+stu[i].english>stu[a].chinese+stu[a].math+stu[a].english)
                        a=i;
                if(stu[i].chinese+stu[i].math+stu[i].english<stu[b].chinese+stu[b].math+stu[b].english)
                        b=i;
        }
        cout<<"學號\t姓名\t語文\t數學\t外語\t總分\t平均分\n";
        cout<<"成績最好的學生 :\n";
        cout<<stu[a].no<<"\t"<<stu[a].xm<<"\t"<<stu[a].chinese<<"\t"<<stu[a].math<<"\t"<<stu[a].english<<"\t"<<stu[a].sum<<"\t"<<stu[a].average<<"\n";
        cout<<"成績最差的學生 :\n";
        cout<<stu[b].no<<"\t"<<stu[b].xm<<"\t"<<stu[b].chinese<<"\t"<<stu[b].math<<"\t"<<stu[b].english<<"\t"<<stu[b].sum<<"\t"<<stu[b].average<<"\n";
}
void output(student *p,int n)                                          //輸出學生成績
{
        cout<<"學號\t姓名\t語文\t數學\t外語\t總分\t平均分\n";
        for(int i=0;i<n;i++)
                cout<<stu[i].no<<"\t"<<stu[i].xm<<"\t"<<stu[i].chinese<<"\t"<<stu[i].math<<"\t"<<stu[i].english<<"\t"<<stu[i].sum<<"\t"<<stu[i].average<<"\n";
}
int insert(student *p,int n)
{
        student newstu,*q;                                                 //newstu是要添加的學生,q為其指針
        q=&newstu;
        cout<<"輸入新學生的信息 :\n";
        cout<<"學號\t姓名\t語文\t數學\t外語\t總分\t平均分\n";
        cin>>newstu.no>>newstu.xm>>newstu.chinese>>newstu.math>>newstu.english;
        newstu.sum=newstu.chinese+newstu.math+newstu.english;
        newstu.average=newstu.sum/3;
        for(int i=0;i<n;i++)                                               //找到要插入的位置                                    
        {
                if(q->no>=p->no&&q->no<=(p+n-1)->no)                        
                {
                        if((p+i)->no==q->no)                                       //該學號已存在,輸出該學號的學生信息
                        {
                                cout<<"該學生已存在 "<<endl;
                                cout<<"學號\t姓名\t語文\t數學\t外語\t總分\t平均分\n";
                                cout<<stu[i].no<<"\t"<<stu[i].xm<<"\t"<<stu[i].chinese<<"\t"<<stu[i].math<<"\t"<<stu[i].english<<"\t"<<stu[i].sum<<"\t"<<stu[i].average<<"\n";
                                break;
                        }
       
                        if((p+i)->no<q->no&&q->no<(p+i+1)->no)                     //錄入成功
                        {
                                for(int j=n;j>i+1;j--)
                                        stu[j]=stu[j-1];
                                stu[i+1]=newstu;
                                cout<<"錄入成功!"<<endl;
                                n++;
                                cout<<"學號\t姓名\t語文\t數學\t外語\t總分\t平均分\n";
                                cout<<newstu.no<<"\t"<<newstu.xm<<"\t"<<newstu.chinese<<"\t"<<newstu.math<<"\t"<<newstu.english<<"\t"<<newstu.sum<<"\t"<<newstu.average<<"\n";
                                break;
                        }
                }
                else                                                           //錄入成功
                {
                        if(q->no<p->no)
                        {
                                for(int j=n;j>0;j--)
                                        stu[j]=stu[j-1];
                                stu[0]=newstu;
                                cout<<"錄入成功!"<<endl;
                                n++;
                                cout<<"學號\t姓名\t語文\t數學\t外語\t總分\t平均分\n";
                                cout<<newstu.no<<"\t"<<newstu.xm<<"\t"<<newstu.chinese<<"\t"<<newstu.math<<"\t"<<newstu.english<<"\t"<<newstu.sum<<"\t"<<newstu.average<<"\n";
                                break;
                        }
                        else
                        {
                                stu[n]=newstu;
                                cout<<"錄入成功!"<<endl;
                                n++;
                                cout<<"學號\t姓名\t語文\t數學\t外語\t總分\t平均分\n";
                                cout<<newstu.no<<"\t"<<newstu.xm<<"\t"<<newstu.chinese<<"\t"<<newstu.math<<"\t"<<newstu.english<<"\t"<<newstu.sum<<"\t"<<newstu.average<<"\n";
                                break;
                        }
                }
        }
        return n;                                                          //學生人數改變,返回人數
}
int del(student *p,int n)
{
        int newno;                                                         //輸入要刪除的學生人數
        cout<<"輸入要刪除的學生學號 :";
        cin>>newno;
        if(newno>=p->no&&newno<=(p+n-1)->no)                               //查找該學生
        {
                for(int i=0;i<n;i++)
                        if((p+i)->no==newno)
                        {
                                for(;i<n-1;i++)
                                stu[i]=stu[i+1];
                                n--;
                                cout<<"刪除成功 !\n";
                        }
        }
        else
                cout<<"無法找到該學生 :\n";
        return n;
}
void showmenu()                                                        //輸出菜單
{
        cout<<"請輸入1~8內的數字選項 :\n";
        cout<<"1.計算各科的平均成績和總平均分\n";
        cout<<"2.按學生的平均成績降序排序\n";
        cout<<"3.查詢指定學號的學生信息\n";
        cout<<"4.找出考得最好和考得最差的學生\n";
        cout<<"5.輸出學生的信息\n";
        cout<<"6.添加學生信息\n";
        cout<<"7.刪除學生信息\n";
        cout<<"8.結束\n";
}






歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩视频专区 | 成人永久免费视频 | 国产黄色一区二区 | 黄色大片在线免费观看 | 三年中文在线看免费观看 | 播播激情网| 日本黄色免费视频 | 国产欧美久久久 | 99婷婷| 成人午夜免费视频 | 久久久噜噜噜 | 天堂资源网 | 亚洲高清在线观看 | 亚洲欧美视频在线观看 | a级毛毛片 | 成人午夜精品 | 深夜福利网 | 中国av在线 | 国产一级片免费 | 久久久久久av | 成人影| 波多野结衣乳巨码无在线观看 | 欧美日韩在线一区二区三区 | 国产一区二区欧美 | 国产亚洲精品码 | 精品久久久久久久久久久久久 | 欧美片网站yy | 久久一区二区三区四区 | 狠狠做深爱婷婷综合一区 | 日本黄色一级视频 | 在线一区二区三区 | 欧美日韩国产在线播放 | 亚洲精品一区二区三区精华液 | 国产欧美一区二区三区视频在线观看 | xxxx性欧美| 精品久久一区二区三区 | 一区二区小视频 | 成年人视频免费看 | 日本国产视频 | 一区二区免费看 | 欧美一级淫片bbb一84 |