最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)學生成績管理系統(tǒng)最新版

 更新時間:2021年06月17日 15:23:55   作者:名名名名  
這篇文章主要為大家詳細介紹了C++實現(xiàn)學生成績管理系統(tǒng)最新版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

學生成績管理系統(tǒng),供大家參考,具體內(nèi)容如下

一、問題描述及功能要求

(1)輸入同學的學號,姓名,三門科成績(應用數(shù)學、大學英語、計算機應用基礎(chǔ))

(2)可以計算出每個學生三門課的平均成績。

(3)可通過輸入姓名、學號查詢成績,也可通過姓名修改學生信息,也可通過主界面刪除學生信息,以及清楚所有信息

二、代碼實現(xiàn) 帶有注釋

廢話不說,直接代碼,歡迎指正。
大家CV可能有不兼容的情況,可以跟我滴滴,盡可能解決問題地回復。

#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

#define null NULL

class student
{
    private:
        friend class studentMessage;
        student *next; //節(jié)點指針
        string name; //學生姓名
        int age; //年紀
        int id; //學號
        double score[3]; //三科成績
        double total; //總分
        double average; //平均成績
    public:
        student(string _name,int _age,int _id,double *_score)
        {
            name = _name;
            age = _age;
            id = _id;
            score[0] = _score[0];
            score[1] = _score[1];
            score[2] = _score[2];
            total = score[0]+score[1]+score[2];
            average = total/3;
            next = NULL;
        }
        student() //為studentMessage初始化頭結(jié)點用
        {
            name = "null";
            age = 0;
            id = 0;
            score[0]=score[1]=score[2]=0;
            total = 0;
            average = 0;
            next = NULL;
        }
        ~student(){}
        void swap(student*);
};


void student::swap(student *q)
{
    string _name;
    int _age,_id;
    double _score[3],_total,_average;

    _name = name;
    name = q->name;
    q->name = _name;

    _age = age;
    age = q->age;
    q->age = _age;

    _id = id;
    id = q->id;
    q->id = _id;

    _score[0] = score[0];
    score[0] = q->score[0];
    q->score[0] = _score[0];

    _score[1] = score[1];
    score[1] = q->score[1];
    q->score[1] = _score[1];

    _score[2] = score[2];
    score[2] = q->score[2];
    q->score[2] = _score[2];

    _total = total;
    total = q->total;
    q->total = _total;

    _average = average;
    average = q->average;
    q->average = _average;
}






class studentMessage
{
    private:
      student *first; //頭指針
      int num; //信息中的學生人數(shù)
    public:
        studentMessage()
        {
            num = 0; //初始化學生人數(shù)為0
            first = new student;  //初始化頭結(jié)點
        }
        ~studentMessage(){delete first;}

        /*管理系統(tǒng)常規(guī)操作*/
        void Insret(void); //插入
        void Display(void); //顯示
        void Delete(void); //刪除
        void Search(void); //搜索
        void Change(void); //改動
        void sortByLesson1(void); //按成績一來排序
        void sortByLesson2(void); //按成績二來排序
        void sortByLesson3(void); //按成績?nèi)齺砼判?
        void sortByTotal(void); //按總分來排序
        void SearchByid(void); //按照學號查找
        void SearchByname(void); //按照姓名查找
        int menu(void); //初始的菜單
        void clear(void); //清空列表
};


int studentMessage::menu(void)
{
    int ch;
    cout<<"**********************************************************************"<<endl;
    cout<<"======================================================================"<<endl;
    cout<<"***************************學生成績管理系統(tǒng)***************************"<<endl;cout<<endl;
    cout<<"1.顯示所有學生成績"<<endl;
    cout<<"2.添加學生信息"<<endl;
    cout<<"3.查詢學生信息"<<endl;
    cout<<"4.修改學生信息"<<endl;
    cout<<"5.刪除最下面一個學生信息"<<endl;
    cout<<"6.刪除所有信息"<<endl;
    cout<<"0.退出系統(tǒng)"<<endl;cout<<endl;
    cout<<"********************Copyright@ By Jeaven Wong**************************"<<endl;
    cout<<"======================================================================="<<endl;
    cout<<"***********************************************************************"<<endl;
    cin >> ch;
    cout<<"\n\n\n"<<endl;
    return ch;
}



//插入
void studentMessage::Insret(void)
{
    string name;
    int age;
    int id;
    double score[3];
    cout<<"請輸入學生姓名: ";
    cin>>name;
    cout<<"請輸入學生年齡: ";
    cin>>age;
    cout<<"請輸入學生學號: ";
    cin>>id;
    cout<<"下面請輸入學生三門課程成績: ";
    cout<<endl;
    cout<<"請輸入第一門課的成績: ";cin>>score[0];
    cout<<"請輸入第二門課的成績: ";cin>>score[1];
    cout<<"請輸入第三門課的成績: ";cin>>score[2];
    cout<<endl;


    student *newstu = new student(name,age,id,score);
    student *p = first;
    while(p->next != NULL)
    {
        p = p->next;
    }
    p->next = newstu;
    newstu->next = null;
    num++;
}



void studentMessage::Display(void)
{
    if(num == 0)
    {
        cout<<"當前記錄中無學生..."<<endl;
    }

    else
    {
        student *p = first->next;
        while(p != null)
        {
            cout<<"姓名:"<<p->name<<"  ";
            cout<<"年齡:"<<p->age<<"  ";
            cout<<"學號:"<<p->id<<"  ";
            cout<<"三門課程成績: "<<p->score[0]<<" "<<p->score[1]<<" "<<p->score[2]<<"  ";
            cout<<"總分:"<<p->total<<"  ";
            cout<<"平均分:"<<p->average<<endl;
            p = p->next;
        }
    }
}


void studentMessage::Delete(void)
{
    student *p = first;
    student *pre = first;
    while(p->next != NULL)
    {
        pre = p;
        p = p->next;
    }
    pre->next = NULL;
    delete p;
    num--;
}


void studentMessage::Search(void)
{
    int temp = 0;
    cout<<"請輸入查找的條件,有如下選項..."<<endl;
    cout<<"按照學號查找(請輸入【1】) 按照姓名查找(請輸入【2】)"<<endl;
    cin>>temp;
    switch(temp)
    {
        case 1: SearchByid(); break;
        case 2: SearchByname(); break;
        default: cout<<"輸入有誤..."<<endl;
    }
}

void studentMessage::SearchByid(void)
{
    int _id;
    int flag = 0;
    cout<<"請輸入待查找學生的學號:";
    cin >> _id;
    student *p = first->next;
    while(p != null)
    {
        if(p->id == _id)
        {
            flag = 1;
            cout<<"下面是查找匹配結(jié)果:"<<endl;
            cout<<"姓名:"<<p->name<<"  ";
            cout<<"年齡:"<<p->age<<"  ";
            cout<<"學號:"<<p->id<<"  ";
            cout<<"三門課程成績: "<<p->score[0]<<" "<<p->score[1]<<" "<<p->score[2]<<"  ";
            cout<<"總分:"<<p->total<<"  ";
            cout<<"平均分:"<<p->average<<endl;
        }
        p = p->next;
    }
    if(flag == 0)
    {
        cout<<"抱歉,記錄中沒有查找匹配項..."<<endl;
    }
}

void studentMessage::SearchByname(void)
{
    string _name;
    int flag = 0;
    cout<<"請輸入待查找的學生姓名: ";
    cin >> _name;
    student *p = first->next;
    while(p != null)
    {
        if(p->name == _name)
        {
            flag = 1;
            cout<<"下面是查找匹配結(jié)果:"<<endl;
            cout<<"姓名:"<<p->name<<"  ";
            cout<<"年齡:"<<p->age<<"  ";
            cout<<"學號:"<<p->id<<"  ";
            cout<<"三門課程成績: "<<p->score[0]<<" "<<p->score[1]<<" "<<p->score[2]<<"  ";
            cout<<"總分:"<<p->total<<"  ";
            cout<<"平均分:"<<p->average<<endl;
        }
        p = p->next;
    }

    if(flag == 0)
    {
        cout<<"抱歉,記錄中沒有查找匹配項..."<<endl;
    }
}



void studentMessage::Change(void)
{
    string _name;
    int flag = 0,temp;
    int _id,_age;
    int course = 0;
    cout<<"請輸入需要改動信息的學生的姓名: ";
    cin >> _name;
    student *p = first->next;
    while(p != null)
    {
        if(p->name == _name)
        {
            flag = 1;
            cout<<"該學生當前信息如下:"<<endl;
            cout<<"姓名:"<<p->name<<"  ";
            cout<<"年齡:"<<p->age<<"  ";
            cout<<"學號:"<<p->id<<"  ";
            cout<<"三門課程成績: "<<p->score[0]<<" "<<p->score[1]<<" "<<p->score[2]<<"  ";
            cout<<"總分:"<<p->total<<"  ";
            cout<<"平均分:"<<p->average<<endl;
            cout<<"請指明哪一項需要修改..."<<endl;
            cout<<"修改學號(輸入【1】) 修改年齡(輸入【2】)修改成績(輸入【3】)"<<endl;
            cin >> temp;
            switch(temp)
            {
                case 1:
                    {
                        cout<<"請輸入新的學號:";cin>>_id;
                        p->id = _id;
                    }
                    break;
                case 2:
                    {
                        cout<<"請輸入新的年齡:";cin>>_age;
                        p->age = _age;
                    }
                    break;
                case 3:
                    {
                        cout<<"請按指示修改課程成績..."<<endl;
                        cout<<"是否需要修改第一門課程成績?(需要輸入【1】不需要輸入【0】)"<<endl;
                        cin >> course;
                        if(course == 1)
                        {
                            cout<<"請輸入修改后的第一門課的成績:"; cin >> p->score[0];
                        }
                        course = 0;

                        cout<<"是否需要修改第二門課程成績?(需要輸入【1】不需要輸入【0】)"<<endl;
                        cin >> course;
                        if(course == 1)
                        {
                            cout<<"請輸入修改后的第二門課的成績:"; cin >> p->score[1];
                        }
                        course = 0;

                        cout<<"是否需要修改第三門課程成績?(需要輸入【1】不需要輸入【0】)"<<endl;
                        cin >> course;
                        if(course == 1)
                        {
                            cout<<"請輸入修改后的第三門課的成績:"; cin >> p->score[2];
                        }
                        course = 0;

                        p->total = p->score[0]+p->score[1]+p->score[2];
                        p->average = p->total/3;

                        cout<<"修改后的信息如下: "<<endl;
                        cout<<"姓名:"<<p->name<<"  ";
                        cout<<"年齡:"<<p->age<<"  ";
                        cout<<"學號:"<<p->id<<"  ";
                        cout<<"三門課程成績: "<<p->score[0]<<" "<<p->score[1]<<" "<<p->score[2]<<"  ";
                        cout<<"總分:"<<p->total<<"  ";
                        cout<<"平均分:"<<p->average<<endl;
                    }
                    break;
                default:  cout<<"輸入有誤..."<<endl;
            }
        }
        p = p->next;
    }
    if(flag == 0)
        cout<<"當前記錄中沒有次學生..."<<endl;
}

/*排序我均采用冒泡排序法,均是從小到大排序*/


//按照科目一排序
void studentMessage::sortByLesson1(void)
{
    student *p = first->next;
    while(p->next != null)
    {
        student *q = p->next;
        while(q != null)
        {
            if(p->score[0] > q->score[0])
            {
                p->swap(q);
            }
            q = q->next;
        }
        p = p->next;
    }
}

//按照科目二排序
void studentMessage::sortByLesson2(void)
{
    student *p = first->next;
    while(p->next != null)
    {
        student *q = p->next;
        while(q != null)
        {
            if(p->score[1] > q->score[1])
            {
                p->swap(q);
            }
            q = q->next;
        }
        p = p->next;
    }
}

//按照科目三排序
void studentMessage::sortByLesson3(void)
{
    student *p = first->next;
    while(p->next != null)
    {
        student *q = p->next;
        while(q != null)
        {
            if(p->score[2] > q->score[2])
            {
                p->swap(q);
            }
            q = q->next;
        }
        p = p->next;
    }
}

//按照總成績排序
void studentMessage::sortByTotal(void)
{
    student *p = first->next;
    while(p->next != null)
    {
        student *q = p->next;
        while(q != null)
        {
            if(p->total > q->total)
            {
                p->swap(q);
            }
            q = q->next;
        }
        p = p->next;
    }
}

void studentMessage::clear(void)
{
    student *p = first->next;
    while(p != null)
    {
        first->next = p->next;
        p->next = null;
        delete p;
        p = first->next;
    }
}



int main()
{
    studentMessage stulist;
    int ch;
    while(ch = stulist.menu())
    {
        switch(ch)
        {
            case 1: stulist.Display(); break;
            case 2: stulist.Insret(); break;
            case 3: stulist.Search(); break;
            case 4: stulist.Change(); break;
            case 5: stulist.Delete(); break;
            case 6: stulist.clear(); break;
            default: cout<<"請按要求輸入..."<<endl;
        }
    }
    return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++中map和set封裝實現(xiàn)示例

    C++中map和set封裝實現(xiàn)示例

    我們知道,map與set所使用的都是紅黑樹,下面這篇文章主要給大家介紹了關(guān)于C++中map和set封裝實現(xiàn)的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • C++詳細講解函數(shù)調(diào)用與Struct和CLass的區(qū)別

    C++詳細講解函數(shù)調(diào)用與Struct和CLass的區(qū)別

    主調(diào)函數(shù)使用被調(diào)函數(shù)的功能,稱為函數(shù)調(diào)用。在C語言/C++中,只有在函數(shù)調(diào)用時,函數(shù)體中定義的功能才會被執(zhí)行,下面讓我們詳細來了解
    2022-05-05
  • 詳解如何用alpine鏡像做一個最小的鏡像并運行c++程序

    詳解如何用alpine鏡像做一個最小的鏡像并運行c++程序

    這篇文章主要介紹了詳解如何用alpine鏡像做一個最小的鏡像并運行c++程序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • C++實現(xiàn)LeetCode(112.二叉樹的路徑和)

    C++實現(xiàn)LeetCode(112.二叉樹的路徑和)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(112.二叉樹的路徑和),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++代碼實現(xiàn)學生信息管理系統(tǒng)

    C++代碼實現(xiàn)學生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++代碼實現(xiàn)學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 基于C語言實現(xiàn)http下載器

    基于C語言實現(xiàn)http下載器

    做OTA升級功能時,我們能直接拿到的往往只是升級包的鏈接,需要我們自己去下載,這時候就需要用到http下載器。本文將利用C語言實現(xiàn)簡單的http下載器,感興趣的可以了解一下
    2022-12-12
  • 詳解c++11以正確的姿勢輸出enum class的值

    詳解c++11以正確的姿勢輸出enum class的值

    這篇文章主要介紹了詳解c++11以正確的姿勢輸出enum class的值,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • C語言實現(xiàn)簡單井字棋游戲

    C語言實現(xiàn)簡單井字棋游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單井字棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • c++打印封裝每次打印前面加上時間戳問題

    c++打印封裝每次打印前面加上時間戳問題

    這篇文章主要介紹了c++打印封裝每次打印前面加上時間戳問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • C語言十進制轉(zhuǎn)二進制代碼實例

    C語言十進制轉(zhuǎn)二進制代碼實例

    這篇文章主要介紹了C語言十進制轉(zhuǎn)二進制代碼實例,并且轉(zhuǎn)換后會統(tǒng)計二進制1的個數(shù),實例簡單明了,需要的朋友可以參考下
    2014-06-06

最新評論

滁州市| 克山县| 新余市| 牙克石市| 阳西县| 凤山县| 永福县| 温泉县| 区。| 锦屏县| 南安市| 武川县| 高陵县| 上高县| 富川| 嵩明县| 黎城县| 宜章县| 霍林郭勒市| 安顺市| 清苑县| 团风县| 龙口市| 彰化市| 宣城市| 东方市| 江安县| 兰州市| 宁蒗| 富川| 兴化市| 高安市| 巢湖市| 盘锦市| 泽库县| 遂宁市| 汨罗市| 榕江县| 高台县| 大英县| 华坪县|