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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2530|回復: 0
收起左側

C++寫的學生管理系統,請大佬點評一下

[復制鏈接]
ID:373270 發表于 2018-7-17 15:26 | 顯示全部樓層 |閱讀模式
#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";
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成年人在线视频 | 亚洲成人精品一区 | 亚洲中午字幕 | 久久视频免费观看 | 欧美在线一区二区三区 | 黄色一级电影在线观看 | 亚洲精品日本 | 国产欧美日韩精品在线观看 | 美女国内精品自产拍在线播放 | 欧美视频成人 | 国产精品国色综合久久 | 免费中文字幕 | 亚洲精品免费在线观看 | 国产欧美一级二级三级在线视频 | 日本理论片好看理论片 | 国产一区二区在线播放视频 | 99国内精品久久久久久久 | 超碰高清 | 国产91久久久久蜜臀青青天草二 | 国产精品久久久久久久久久尿 | 欧美日韩一区精品 | 亚洲视频在线免费观看 | 欧美中文字幕在线观看 | 成人免费小视频 | www.色.com| 精品久久久久久久人人人人传媒 | 国产激情偷乱视频一区二区三区 | 99视频免费播放 | 成人在线免费视频观看 | 国产精品综合一区二区 | 亚洲一区二区三区免费视频 | 最新中文字幕在线 | 国产xxxx在线 | 成人在线视频免费播放 | 国产一区二区三区在线 | 亚洲免费在线观看视频 | 日本不卡免费新一二三区 | 91色视频在线观看 | 免费成人在线网站 | 日本综合在线观看 | 国产精品久久久久久久久久东京 |