欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++基于單鏈表實現(xiàn)學生成績管理系統(tǒng)

 更新時間:2022年05月30日 17:18:25   作者:昭昭霜影  
這篇文章主要為大家詳細介紹了C++基于單鏈表實現(xiàn)學生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++實現(xiàn)學生成績管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

/*程序說明:
? ? 程序是由單鏈表實現(xiàn)的學生成績管理系統(tǒng),主要功能有輸入/查找/刪除/修改/排序/顯示學生成績;
? ? 輸入功能由帶頭結點的單鏈表實現(xiàn),并且使用前插法輸入學生信息;
? ? 輸入功能可以實現(xiàn)插入學生信息的功能,所以無需再專門寫一個插入的函數(shù);
? ? 刪除/修改學生信息要用到查找功能,所以將查找與刪除/修改功能寫到一起;
? ? 查找功能使用順序查找遍歷整個單鏈表;
? ? 使用直接插入法對學生信息排序;

? ? 程序主要復習對單鏈表的使用,所以并沒有完整的對錯誤輸入的保護功能;
? ? 由于學過的是c++,但教科書是由c語言為主,所以寫的代碼是混合c與c++;

? ? 編譯環(huán)境:visual studio 2017
? ? 2017.5.13
*/

#include<iostream>
using namespace std;
struct Node;
typedef struct Node* PNode;
struct Node
{
? ? long int stuId;
? ? char name[30];
? ? //成績
? ? float Math;
? ? float English;
? ? float Chinese;

? ? float sum;//總分
? ? PNode link;
};
typedef struct Node* LinkList;

//輸入學生信息
LinkList Input(LinkList llist)
{
? ? LinkList p;
? ? long int n;
? ? cout << "\n***********************成績輸入入口***********************\n";
? ? cout << "請輸入你想輸入的學生信息個數(shù):\n";
? ? cin >> n;
? ? for (int i = n; i > 0; i--)//前插法插入信息
? ? {
? ? ? ? p = (LinkList)malloc(sizeof(struct Node));
? ? ? ? cout << "輸入學生學號:\n";
? ? ? ? cin >> p->stuId;
? ? ? ? cout << "輸入學生姓名:\n";
? ? ? ? cin >> p->name;
? ? ? ? cout << "輸入學生數(shù)學成績:\n";
? ? ? ? cin >> p->Math;
? ? ? ? cout << "輸入學生英語成績:\n";
? ? ? ? cin >> p->English;
? ? ? ? cout << "輸入學生語文成績:\n";
? ? ? ? cin >> p->Chinese;

? ? ? ? p->sum = p->Math + p->English + p->Chinese;//總分

? ? ? ? //使用含有頭結點的單鏈表實現(xiàn)信息的輸入
? ? ? ? p->link = llist->link;
? ? ? ? llist->link = p;
? ? }
? ? return llist;
}

//查找/修正學生的信息
void Check(LinkList llist)
{
? ? LinkList p, q;
? ? long int id;
? ? char sName[30];
? ? cout << "\n***********************成績查改入口***********************\n";
? ? if (llist->link == NULL)
? ? ? ? cout << "沒有學生信息記錄\n";
? ? else
? ? {
? ? ? ? cout << "輸入查找方式:\n"
? ? ? ? ? ? << "1.按學號查找\n2.按姓名查找\n";
? ? ? ? int a;
? ? ? ? cin >> a;
? ? ? ? if (a == 1)//按學號查找
? ? ? ? {
? ? ? ? ? ? p = llist;
? ? ? ? ? ? q = p->link;
? ? ? ? ? ? cout << "輸入學生學號:\n";
? ? ? ? ? ? cin >> id;
? ? ? ? ? ? while (q->stuId != id&&q->link != NULL)//從單鏈表表頭順序查找
? ? ? ? ? ? {
? ? ? ? ? ? ? ? p = q;
? ? ? ? ? ? ? ? q = q->link;
? ? ? ? ? ? }
? ? ? ? ? ? if (q->stuId == id)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "學生信息如下:\n";
? ? ? ? ? ? ? ? cout << q->stuId << "\t" << q->name << "\t" << q->Math << "\t"
? ? ? ? ? ? ? ? ? ? << q->English << "\t" << q->Chinese << "\t" << q->sum << endl;
? ? ? ? ? ? ? ? cout << "輸入功能序號:\n"
? ? ? ? ? ? ? ? ? ? << "1.修改學生信息\n2.刪除學生信息\n0.退出\n";
? ? ? ? ? ? ? ? int b;
? ? ? ? ? ? ? ? cin >> b;
? ? ? ? ? ? ? ? if (b == 1)//修改學生信息
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? cout << "請輸入修正后的學生信息:\n";
? ? ? ? ? ? ? ? ? ? cout << "輸入學生學號:\n";
? ? ? ? ? ? ? ? ? ? cin >> q->stuId;
? ? ? ? ? ? ? ? ? ? cout << "輸入學生姓名:\n";
? ? ? ? ? ? ? ? ? ? cin >> q->name;
? ? ? ? ? ? ? ? ? ? cout << "輸入學生數(shù)學成績:\n";
? ? ? ? ? ? ? ? ? ? cin >> q->Math;
? ? ? ? ? ? ? ? ? ? cout << "輸入學生英語成績:\n";
? ? ? ? ? ? ? ? ? ? cin >> q->English;
? ? ? ? ? ? ? ? ? ? cout << "輸入學生語文成績:\n";
? ? ? ? ? ? ? ? ? ? cin >> q->Chinese;

? ? ? ? ? ? ? ? ? ? q->sum = q->Math + q->English + q->Chinese;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else if (b == 2)//刪除學生信息
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? p->link = q->link;
? ? ? ? ? ? ? ? ? ? free(q);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? cout << "查無此人\n";
? ? ? ? }

? ? ? ? else if (a == 2)//按姓名查找
? ? ? ? {
? ? ? ? ? ? p = llist;
? ? ? ? ? ? q = p->link;
? ? ? ? ? ? cout << "輸入學生姓名:\n";
? ? ? ? ? ? cin >> sName;
? ? ? ? ? ? while (strcmp(sName, q->name) != 0 && q->link != NULL)//從單鏈表表頭順序查找
? ? ? ? ? ? {
? ? ? ? ? ? ? ? p = q;
? ? ? ? ? ? ? ? q = q->link;
? ? ? ? ? ? }
? ? ? ? ? ? if (strcmp(sName, q->name) == 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cout << "學生信息如下:\n";
? ? ? ? ? ? ? ? cout << q->stuId << "\t" << q->name << "\t" << q->Math << "\t"
? ? ? ? ? ? ? ? ? ? << q->English << "\t" << q->Chinese << "\t" << q->sum << endl;
? ? ? ? ? ? ? ? cout << "輸入功能序號:\n"
? ? ? ? ? ? ? ? ? ? << "1.修改學生信息\n2.刪除學生信息\n0.退出\n";
? ? ? ? ? ? ? ? int b;
? ? ? ? ? ? ? ? cin >> b;
? ? ? ? ? ? ? ? if (b == 1)//修改學生信息
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? cout << "請輸入修正后的學生信息:\n";
? ? ? ? ? ? ? ? ? ? cout << "輸入學生學號:\n";
? ? ? ? ? ? ? ? ? ? cin >> q->stuId;
? ? ? ? ? ? ? ? ? ? cout << "輸入學生姓名:\n";
? ? ? ? ? ? ? ? ? ? cin >> q->name;
? ? ? ? ? ? ? ? ? ? cout << "輸入學生數(shù)學成績:\n";
? ? ? ? ? ? ? ? ? ? cin >> q->Math;
? ? ? ? ? ? ? ? ? ? cout << "輸入學生英語成績:\n";
? ? ? ? ? ? ? ? ? ? cin >> q->English;
? ? ? ? ? ? ? ? ? ? cout << "輸入學生語文成績:\n";
? ? ? ? ? ? ? ? ? ? cin >> q->Chinese;

? ? ? ? ? ? ? ? ? ? q->sum = q->Math + q->English + q->Chinese;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else if (b == 2)//刪除學生信息
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? p->link = q->link;
? ? ? ? ? ? ? ? ? ? free(q);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? ? ? cout << "查無此人";
? ? ? ? }
? ? }
}

//對學生信息排序
void Sort(LinkList llist)
{
? ? LinkList p, q, r;
? ? cout << "\n***********************成績排序入口***********************\n";

? ? if (llist->link == NULL)
? ? ? ? cout << "沒有學生信息記錄\n";
? ? else
? ? {
? ? ? ? cout << "選擇排序方式:\n"
? ? ? ? ? ? << "1.按學號\n2.按數(shù)學成績\n3.按英語成績\n4.按語文成績\n5.按總分\n";
? ? ? ? int a;
? ? ? ? cin >> a;
? ? ? ? //使用直接插入法進行排序
? ? ? ? switch (a)
? ? ? ? {
? ? ? ? case 1://按學號
? ? ? ? ? ? p = llist->link->link;
? ? ? ? ? ? llist->link->link = NULL;
? ? ? ? ? ? while (p != NULL)//學號由小到大排列
? ? ? ? ? ? {
? ? ? ? ? ? ? ? r = p->link;
? ? ? ? ? ? ? ? q = llist;
? ? ? ? ? ? ? ? while (q->link != NULL&&q->link->stuId < p->stuId)//查找插入位置
? ? ? ? ? ? ? ? ? ? q = q->link;
? ? ? ? ? ? ? ? //插入
? ? ? ? ? ? ? ? p->link = q->link;
? ? ? ? ? ? ? ? q->link = p;
? ? ? ? ? ? ? ? p = r;
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case 2://按數(shù)學
? ? ? ? ? ? p = llist->link->link;
? ? ? ? ? ? llist->link->link = NULL;
? ? ? ? ? ? while (p != NULL)//數(shù)學成績由高到低排列
? ? ? ? ? ? {
? ? ? ? ? ? ? ? r = p->link;
? ? ? ? ? ? ? ? q = llist;
? ? ? ? ? ? ? ? while (q->link != NULL&&q->link->Math > p->Math)//查找插入位置
? ? ? ? ? ? ? ? ? ? q = q->link;
? ? ? ? ? ? ? ? //插入
? ? ? ? ? ? ? ? p->link = q->link;
? ? ? ? ? ? ? ? q->link = p;
? ? ? ? ? ? ? ? p = r;
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case 3://按英語
? ? ? ? ? ? p = llist->link->link;
? ? ? ? ? ? llist->link->link = NULL;
? ? ? ? ? ? while (p != NULL)//英語成績由高到低排列
? ? ? ? ? ? {
? ? ? ? ? ? ? ? r = p->link;
? ? ? ? ? ? ? ? q = llist;
? ? ? ? ? ? ? ? while (q->link != NULL&&q->link->English > p->English)//查找插入位置
? ? ? ? ? ? ? ? ? ? q = q->link;
? ? ? ? ? ? ? ? //插入
? ? ? ? ? ? ? ? p->link = q->link;
? ? ? ? ? ? ? ? q->link = p;
? ? ? ? ? ? ? ? p = r;
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case 4://按語文
? ? ? ? ? ? p = llist->link->link;
? ? ? ? ? ? llist->link->link = NULL;
? ? ? ? ? ? while (p != NULL)//語文成績由高到低排列
? ? ? ? ? ? {
? ? ? ? ? ? ? ? r = p->link;
? ? ? ? ? ? ? ? q = llist;
? ? ? ? ? ? ? ? while (q->link != NULL&&q->link->Chinese > p->Chinese)//查找插入位置
? ? ? ? ? ? ? ? ? ? q = q->link;
? ? ? ? ? ? ? ? //插入
? ? ? ? ? ? ? ? p->link = q->link;
? ? ? ? ? ? ? ? q->link = p;
? ? ? ? ? ? ? ? p = r;
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case 5://按總分
? ? ? ? ? ? p = llist->link->link;
? ? ? ? ? ? llist->link->link = NULL;
? ? ? ? ? ? while (p != NULL)//總分成績由高到低排列
? ? ? ? ? ? {
? ? ? ? ? ? ? ? r = p->link;
? ? ? ? ? ? ? ? q = llist;
? ? ? ? ? ? ? ? while (q->link != NULL&&q->link->sum > p->sum)//查找插入位置
? ? ? ? ? ? ? ? ? ? q = q->link;
? ? ? ? ? ? ? ? //插入
? ? ? ? ? ? ? ? p->link = q->link;
? ? ? ? ? ? ? ? q->link = p;
? ? ? ? ? ? ? ? p = r;
? ? ? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? }
? ? }
}

//顯示學生的信息
void Display(LinkList llist)
{
? ? LinkList p;
? ? p = llist->link;
? ? cout << "\n***********************成績顯示入口***********************\n";
? ? if (llist->link == NULL)
? ? ? ? cout << "沒有學生信息記錄\n";
? ? else
? ? {
? ? ? ? cout << "學生信息如下:\n";
? ? ? ? cout << "學號\t 姓名\t 數(shù)學\t 英語\t 語文\t 總分\n";
? ? ? ? while (p)//輸出學生信息
? ? ? ? {
? ? ? ? ? ? cout << p->stuId << "\t" << p->name << "\t" << p->Math << "\t"
? ? ? ? ? ? ? ? << p->English << "\t" << p->Chinese << "\t" << p->sum<<endl;
? ? ? ? ? ? p = p->link;
? ? ? ? }
? ? }
}


//程序主體
int main()
{
? ? LinkList llist= (LinkList)malloc(sizeof(struct Node));
? ? llist->link = NULL;
? ? int a, b=1;
? ? while (b)//循環(huán)使用菜單
? ? {
? ? ? ? cout << "\n***********************成績管理系統(tǒng)***********************\n"
? ? ? ? ? ? << "請選擇你所需要的功能:\n"
? ? ? ? ? ? << "1.輸入學生信息\n2.查找/修正學生信息\n3.排序學生信息\n4.顯示學生信息\n5.退出\n";
? ? ? ? cin >> a;
? ? ? ? switch (a)
? ? ? ? {
? ? ? ? case 1:
? ? ? ? ? ? llist=Input(llist);
? ? ? ? ? ? break;
? ? ? ? case 2:
? ? ? ? ? ? Check(llist);
? ? ? ? ? ? break;
? ? ? ? case 3:
? ? ? ? ? ? Sort(llist);
? ? ? ? ? ? break;
? ? ? ? case 4:
? ? ? ? ? ? Display(llist);
? ? ? ? ? ? break;
? ? ? ? case 5:
? ? ? ? ? ? b = 0;
? ? ? ? ? ? break;
? ? ? ? }
? ? }
? ? cout << "\n***********************感謝您的使用***********************\n";
? ? cin.get(); cin.get();
}

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

相關文章

  • C++中map容器的具體使用

    C++中map容器的具體使用

    本文主要介紹了C++中map容器的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • C++詳細分析講解引用的概念與使用

    C++詳細分析講解引用的概念與使用

    引用(reference)就是C++對C語言的重要擴充。引用就是某一變量(目標)的一個別名,對引用的操作與對變量直接操作完全一樣
    2022-05-05
  • C++將CBitmap類中的圖像保存到文件的方法

    C++將CBitmap類中的圖像保存到文件的方法

    這篇文章主要介紹了C++將CBitmap類中的圖像保存到文件的方法,涉及C++導出資源文件的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • c++ 入門——淺析構造函數(shù)和析構函數(shù)

    c++ 入門——淺析構造函數(shù)和析構函數(shù)

    這篇文章主要介紹了c++ 淺析構造函數(shù)和析構函數(shù)的相關資料,幫助大家入門c++ 編程,感興趣的朋友可以了解下
    2020-08-08
  • C++獲取文件大小數(shù)值的三種方式介紹

    C++獲取文件大小數(shù)值的三種方式介紹

    最近在做項目時經(jīng)常需要獲得文件的大小操作,雖然在網(wǎng)絡上已經(jīng)有許多篇博客介紹了,但是還是想總結出自己一篇,記錄一下自己在項目中是怎么獲得文件大小的
    2022-10-10
  • C++實現(xiàn)LeetCode(98.驗證二叉搜索樹)

    C++實現(xiàn)LeetCode(98.驗證二叉搜索樹)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(98.驗證二叉搜索樹),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C/C++ 中sizeof(''a'')對比詳細介紹

    C/C++ 中sizeof(''a'')對比詳細介紹

    這篇文章主要介紹了C/C++ 中sizeof('a')的值對比詳細介紹的相關資料,需要的朋友可以參考下
    2017-02-02
  • 帶你了解C++中的sort函數(shù)

    帶你了解C++中的sort函數(shù)

    這篇文章主要給大家介紹了關于C++中sort函數(shù)的基礎入門使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C++具有一定的參考學習價值,需要的朋友們下面來一起看看吧
    2021-08-08
  • C語言中sscanf()函數(shù)的字符串格式化用法

    C語言中sscanf()函數(shù)的字符串格式化用法

    這篇文章介紹的是C語言中sscanf()函數(shù),本文介紹了sscanf()函數(shù)的含義與用法,對大家日常使用C語言的sscanf()函數(shù)很有幫助,有需要的可以參考借鑒。
    2016-08-08
  • C++實現(xiàn)大整數(shù)乘法

    C++實現(xiàn)大整數(shù)乘法

    這篇文章主要為大家詳細介紹了C++實現(xiàn)大整數(shù)乘法,使用笛卡爾相乘,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09

最新評論