首頁 > 軟體

C++實現寢室衛生管理系統

2022-03-16 19:00:12

本文範例為大家分享了C++實現寢室衛生管理系統的具體程式碼,供大家參考,具體內容如下

介紹:

當初寫程式的時候很多知識都不足,我算是一個半路出家的。當時在另一課本上看到goto語句,感覺挺有趣的,就用上了,但goto語句,不適合很長的程式碼,由易造成邏輯混亂,也可以換成do-while語句。

我設計了輸出表格框架,再回圈輸出資料,為使資料對齊,使用setw(),setw(int n)是c+ +中在輸出操作中使用的欄位寬度設定,設定輸出的域寬,n表示欄位寬度。此函數只對緊接著的輸出有效,緊接著的輸出結束後又變回預設的域寬。當後面緊跟著的輸出欄位長度小於n的時候,在該欄位前面用空格補齊;當輸出欄位長度大於n時,全部整體輸出。標頭檔案為:iomanip;

輸入密碼時,如非確認鍵,皆輸出“*”,通過getch()函數實現,此函數是一個不回顯函數,當用戶按下某個字元時,函數自動讀取,無需按確認鍵,所在標頭檔案:conio.h,int __cdecl getch();宣告,等,還用了一些演演算法,在此先不做詳細介紹。

一、基本功能

1.(管理員,需要密碼)實現成績錄入(地面衛生、床鋪、物品擺放及其他)成績求和和儲存、修改及刪除

2.(學生查詢)實現顯示所有寢室成員(按寢室號排序和按成績排序)、顯示自己寢室成績-輸入號(按寢室號排序和按成績排序)、本週文明寢室、本週差評寢室

二、擴充套件功能

1.管理員也可對學生寢室資訊包括寢室號,寢室成員進行基本管理,包括增,刪,查,改等功能

2.對系統使用成員實現所有寢室成績的查詢,顯示功能(可按寢室號排序或成績排序),學生也可檢視其他寢室相關資訊

三、功能結構

 本系統的總體功能結構是:首先學生可以檢視寢室衛生檢查結果資訊,管理員具有唯一的帳號以及密碼,登入後可以對基本資料進行增刪改查等操作。

總體分為五大模組:寢室基本資訊錄入模組,寢室基本資訊修改模組,寢室基本資訊查詢模組,寢室基本資訊顯示模組,寢室基本資訊儲存模組。總體功能結構圖如圖所示:

程式碼如下: 

#include<iostream>
#include<conio.h>
#include<fstream>
#include<iomanip>
#include<string>
#define _CRT_SECURE_NO_WARNINGS
using namespace std;
#define M 50//表長
typedef int shu;
//寢室資訊結構
typedef struct {
    shu ground;//地面衛生
    shu bed;//床鋪
    shu article;//物品擺放
    shu other;//其他
    shu grade;//總成績
    char member[50];//寢室成員
    char number[10];//寢室號
    int Total;
}Student, St;
 
Student S[M];
 
//1、定義清屏函數
void Clear()
{
    system("pause");
    system("cls");
}
//2、定義顯示函數表頭
void showhead()
{
    cout << "n********************歡迎使用宿舍衛生管理系統********************n " << endl;
    cout << "n    顯示方式:n " << endl;
    cout << "t①按成績顯示n" << endl;
    cout << "t②按寢室顯示n" << endl;
    cout << "t③返回上級nn" << endl;
    cout << "t    請選擇:";
}
//3、登入函數
void load()
{
    int n1; int i;
loop:cout << "n********************歡迎使用宿舍衛生管理系統********************nn" << endl;
    cout << "tt帳號:";
    cin >> n1;
    cout << "tt密碼:";
    char a[40], b[14] = { "20190228" };
    for (i = 0;; i++)
    {
        int __cdecl getch();
        a[i] = getch();
        if (a[i] != 'r')
            cout << "*";
        else {
            a[i] = '';
            if (strcmp(a, b) == 0 && n1 == 20190228)
            {
                cout << "n登入成功。。。。n" << endl;
                Clear();
            }
            else {
                cout << "n使用者名稱或密碼錯誤。。。n" << endl;
                Clear();
                goto loop;
            }
            break;
        }
    }
}
//4、定義查詢函數表頭
void searchheader()
{
    cout << "n********************歡迎使用宿舍衛生管理系統********************nn " << endl;
    cout << "t①按成績查詢n" << endl;
    cout << "t②按寢室查詢n" << endl;
    cout << "t③返回上級nn" << endl;
    cout << "    請選擇:";
}
//5、定義錄入函數
void Add(Student* S)
{
    char ch[10];
    char ch1[2] = { "0" };
    do
    {
        cout << "n********************歡迎使用宿舍衛生管理系統********************nn" << endl;
        cout << "t****************學生資訊錄入****************n";
        cout << "請輸入第" << S[0].Total + 1 << "個寢室的資訊n";
        cout << "寢 室 號:";
        cin >> S[S[0].Total + 1].number;
        cout << " 成  員 :";
        cin >> S[S[0].Total + 1].member;
        cout << "地面衛生:";
        cin >> S[S[0].Total + 1].ground;
        cout << " 床  鋪 :";
        cin >> S[S[0].Total + 1].bed;
        cout << "物品擺放:";
        cin >> S[S[0].Total + 1].article;
        cout << " 其  他 :";
        cin >> S[S[0].Total + 1].other;
        cout << "總 成 績:";
        S[S[0].Total + 1].grade = S[S[0].Total + 1].ground + S[S[0].Total + 1].bed + S[S[0].Total + 1].article + S[S[0].Total + 1].other;
        cout<< S[S[0].Total + 1].grade<<endl;
        S[0].Total++;
        cout << "按數位「0」退出,任意鍵繼續錄入: " ;
        cin >> ch;
        system("cls");//清屏函數
    } while (strcmp(ch, ch1) != 0);
}
//6、定義顯示函數 
void Display_All(Student* S)
{
 
    cout << "n" << endl;
    int i;
    cout << "                                                                                                   " << endl;
    cout << "  ———————————————————————————————————————————————— " << endl;
    cout << " |                                     學 生 宿 舍 信 息                                          |" << endl;
    cout << " |————————————————————————————————————————————————|" << endl;
    cout << " | 寢室號 | 總成績 |              寢  室  成  員              |地面衛生| 床  鋪 |物品擺放| 其  他 |" << endl;
    if (S[0].Total > 0)
    {
        for (i = 1; i <= S[0].Total; i++)
        {
            cout << " |————|————|—————————————————————|————|————|————|————|" << endl;
            cout << " |" << setw(8) << S[i].number << "|" << setw(8) << S[i].grade << "|";
            cout << setw(42) << S[i].member << "|" << setw(8) << S[i].ground << "|";
            cout << setw(8) << S[i].bed << "|" << setw(8) << S[i].article << "|";
            cout << setw(8) << S[i].other << "|" <<endl ;
        }
    }
    else
    {
        cout << " |————————————————————————————————————————————————|" << endl;
        cout << "                                沒 有 任 何 學 生 信 息                                            " << endl;
    }
    cout << "  ———————————————————————————————————————————————— " << endl;
}
//7、排序函數按照成績從小到大排序(快排)
int Partition(Student* S, int low, int high)
{//對順序表中的子表進行一趟排序,返回樞軸位置
    shu  pivotkey;
    Student i;
    i = S[low];//用i作樞軸記錄
    pivotkey = S[low].grade;//樞軸成績儲存在pivokey中
    while (low < high)//從表的兩端交替的向中間掃描 
    {
        while (low < high && S[high].grade >= pivotkey) --high;
        S[low] = S[high];//將比樞軸記錄小的記錄移到低端
        while (low < high && S[low].grade <= pivotkey) ++low;
        S[high] = S[low];//比樞軸記錄大的記錄移到高階
    }
    S[low] = i;//樞軸記錄到位 
    return low; //返回樞軸位置 
}
void QSort(Student* S, int low, int high)
{
    //對順序表中的子表進行快速排序
    int pivotloc;
    if (low < high) //長度大於1
    {
        pivotloc = Partition(S, low, high);//將子表一分為二,pivotloc是樞軸位置
        QSort(S, low, pivotloc - 1);//對左子表遞迴排序
        QSort(S, pivotloc + 1, high);//對右子表遞迴排序
    }
}
void Sort_grade(Student* S)
{//對順序表L進行快速排序
    QSort(S, 1, S[0].Total);
}
//8、排序函數按照寢室號從小到大排序(堆排序) 
void HeapAdjust(Student* S, int s, int m)
{
    Student rc; int j;
    rc = S[s];
    for (j = 2 * s; j <= m; j *= 2)//沿number較大的孩子結點向下篩選
    {
        if (j < m&& strcmp(S[j].number, S[j + 1].number)<0) ++j;//j為number較大的記錄下標
        if (strcmp(rc.number , S[j].number)>=0) break;//rc應插入在位置s上
        S[s] = S[j]; s = j;
    }
    S[s] = rc;
}
void CreatHeap(Student* S)
{//把無序序列S[1...n]建成大根堆
    int n, i;
    n = S[0].Total;
    for (i = n / 2; i > 0; --i)//反覆呼叫HeapAdjust
        HeapAdjust(S, i, n);
}
void Sort_number(Student* S)
{//對順序表S進行堆排序
    int i;
    Student x;
    CreatHeap(S);
    for (i = S[0].Total; i > 1; --i)
    {
        x = S[1];//將堆頂記錄和當前未經排序子序列S[1...i]中最後一個記錄互換
        S[1] = S[i];
        S[i] = x;
        HeapAdjust(S, 1, i - 1);//將S[1..i-1]重新調整為大根堆
    }
}
//9、查詢函數以成績為關鍵字進行查詢(折半查詢)
void searh_grade(Student* S)
{
    int high, low, mid;
    int j=0;
    shu grade;
    low = 1;
    high = S[0].Total;
    cout << "請輸入你要查詢學生的成績:";
    cin >> grade;
    Sort_grade(S);//宣告排序函數按照成績從小到大排序(快排)
    cout << "nn" << endl;
    cout << "  ———————————————————————————————————————————————— " << endl;
    cout << " |                                     所 查 找 寢 室 信 息                                       |" << endl;
    cout << " |————————————————————————————————————————————————|" << endl;
    cout << " | 寢室號 | 總成績 |               寢  室  成  員             |地面衛生| 床  鋪 |物品擺放| 其  他 |" << endl;
    if (grade== S[1].grade)
    {
        cout << " |————|————|—————————————————————|————|————|————|————|" << endl;
        cout << " |" << setw(8) << S[1].number << "|" << setw(8) << S[1].grade << "|";
        cout << setw(42) << S[1].member << "|" << setw(8) << S[1].ground << "|";
        cout << setw(8) << S[1].bed << "|" << setw(8) << S[1].article << "|";
        cout << setw(8) << S[1].other <<  "|"<<endl;
        j = 1;
    }
    else
        if (grade == S[(S[0].Total)].grade)
        {
            cout << " |————|————|—————————————————————|————|————|————|————|" << endl;
            cout << " |" << setw(8) << S[S[0].Total].number << "|" << setw(8) << S[S[0].Total].grade << "|";
            cout << setw(42) << S[S[0].Total].member << "|" << setw(8) << S[S[0].Total].ground << "|";
            cout << setw(8) << S[S[0].Total].bed << "|" << setw(8) << S[S[0].Total].article << "|";
            cout << setw(8) << S[S[0].Total].other << "|" << endl;
            j = 1;
        }
        else
        {
            while (low <= high)
            {
                mid = (low + high) / 2;
                if (grade == S[mid].grade)
                {
                    int i = mid;
                    cout << " |————|————|—————————————————————|————|————|————|————|" << endl;
                    cout << " |" << setw(8) << S[i].number << "|" << setw(8) << S[i].grade << "|";
                    cout << setw(42) << S[i].member << "|" << setw(8) << S[i].ground << "|";
                    cout << setw(8) << S[i].bed << "|" << setw(8) << S[i].article << "|";
                    cout << setw(8) << S[i].other << "|" << endl;
                    j = 1;
                    break;
                }
                else
                    if (grade > S[mid].grade)
                        low = mid + 1;
                    else
                        high = mid - 1;
            }
        }
    if (j != 1)
    {
        cout << " |————————————————————————————————————————————————|" << endl;
        cout << " |                                     查 無 此 寢 室 信 息                                       |" << endl;
    }
    cout << "  ———————————————————————————————————————————————— " << endl;
}
//10、查詢函數以寢室號為關鍵字進行查詢(折半查詢)
void searh_number(Student* S)
{
    int high, low, mid;
    char number[20];
    int j=0;
    low = 1;
    high = S[0].Total;
    cout << "請輸入你要查詢學生的寢室號:";
    cin >> number;
    Sort_number(S);//宣告排序函數按照寢室號從小到大排序(堆排序)
    cout << "'nn" << endl;
    cout << "  ———————————————————————————————————————————————— " << endl;
    cout << " |                                     所 查 找 的 寢 室 信 息                                    |" << endl;
    cout << " |————————————————————————————————————————————————|" << endl;
    cout << " | 寢室號 | 總成績 |               寢  室  成  員             |地面衛生| 床  鋪 |物品擺放| 其  他 |" << endl;
    while (low <= high)
    {
        mid = (low + high) / 2;
        if (strcmp(number, S[mid].number) == 0)
        {
            int i = mid; j = 1;
            cout << " |————|————|—————————————————————|————|————|————|————|" << endl;
            cout << " |" << setw(8) << S[i].number << "|" << setw(8) << S[i].grade << "|";
            cout << setw(42) << S[i].member << "|" << setw(8) << S[i].ground << "|";
            cout << setw(8) << S[i].bed << "|" << setw(8) << S[i].article << "|";
            cout << setw(8) << S[i].other << "|" << endl;
 
            for (i = mid + 1; i <= high; i++)
            {
                if (strcmp(number, S[i].number) == 0)
                {
                    cout << " |————|————|—————————————————————|————|————|————|————|" << endl;
                    cout << " |" << setw(8) << S[i].number << "|" << setw(8) << S[i].grade << "|";
                    cout << setw(42) << S[i].member << "|" << setw(8) << S[i].ground << "|";
                    cout << setw(8) << S[i].bed << "|" << setw(8) << S[i].article << "|";
                    cout << setw(8) << S[i].other << "|" << endl;
                }
            }
            for (i = mid - 1; i >= low; i--)
            {
                if (strcmp(number, S[i].number) == 0)
                {
                    cout << " |————|————|—————————————————————|————|————|————|————|" << endl;
                    cout << " |" << setw(8) << S[i].number << "|" << setw(8) << S[i].grade << "|";
                    cout << setw(42) << S[i].member << "|" << setw(8) << S[i].ground << "|";
                    cout << setw(8) << S[i].bed << "|" << setw(8) << S[i].article << "|";
                    cout << setw(8) << S[i].other << "|" << endl;
                }
            }
            break;
        }
        else
            if (strcmp(number, S[mid].number) > 0)
                low = mid + 1;
            else
                high = mid - 1;
    }
    if (j != 1)
    {
        cout << " |————————————————————————————————————————————————|" << endl;
        cout << " |                                     查 無 此 寢 室 信 息                                       |" << endl;
    }
    cout << "  ———————————————————————————————————————————————— " << endl;
}
//11、判斷是否是文明寢室
void y_n_number(Student* S)
{
    int high, low, mid;
    char number[20];
    int j=0;
    low = 1;
    high = S[0].Total;
    cout << "請輸入你要查詢學生的寢室號:";
    cin >> number;
    Sort_number(S);//宣告排序函數按照寢室號號從小到大排序(堆排序)
    while (low <= high)
    {
        mid = (low + high) / 2;
        if (strcmp(number, S[mid].number) == 0)
        {
            int i = mid; j = 1;
            if (S[i].grade >= 80)
                cout << "nn本週文明寢室nn";
            else cout << "nn本週差評寢室nn";
 
            for (i = mid + 1; i <= high; i++)
            {
                if (strcmp(number, S[i].number) == 0)
                {
                    if (S[i].grade >= 80)
                        cout << "nn本週文明寢室nn";
                    else cout << "nn本週差評寢室nn";
                }
            }
            for (i = mid - 1; i >= low; i--)
            {
                if (strcmp(number, S[i].number) == 0)
                {
                    if (S[i].grade >= 80)
                        cout << "nn本週文明寢室nn";
                    else cout << "nn本週差評寢室nn";
                }
            }
            break;
        }
        else
            if (strcmp(number, S[mid].number) > 0)
                low = mid + 1;
            else
                high = mid - 1;
    }
    if (j != 1)
    {
        cout << "  ———————————————————————————————————————————————— " << endl;
        cout << " |                                            查 無 此 寢 室 信 息                                |" << endl;
        cout << "  ———————————————————————————————————————————————— " << endl;
    }
}
//12、定義修改學生資訊表頭函數
void Exchangehead()
{
    cout << "n********************歡迎使用宿舍衛生管理系統********************nn " << endl;
    cout << "    ********************修改選單********************n " << endl;
    cout << "t①單個刪除資訊n" << endl;
    cout << "t②刪除全部資訊n" << endl;
    cout << "t③修改寢室資訊n" << endl;
    cout << "t④返回上級選單nn" << endl;
    cout << "    請選擇:";
}
//13、寫檔案函數
void Keep(Student* S)
{
    ofstream output("學生宿舍資訊.txt");//初始化輸出流物件
    if (output.is_open())
    {
        int i, j;
        j= S[0].Total;
        output << j<<endl;
        for (i = 1; i <= S[0].Total; i++)
        {
            output << S[i].number<<endl;
            output << S[i].grade<<endl;
            output << S[i].member << endl;
            output << S[i].ground << endl;
            output << S[i].bed << endl;
            output << S[i].article << endl;
            output << S[i].other << endl;
        }
    }
    output.close();
}
//14、讀檔案函數
void Input(Student* S)
{
    ifstream input("學生宿舍資訊.txt",ios::in);//初始化輸出流物件
    if (input.is_open())
    {
        int i,j;
        input >> j;
        S[0].Total = j;
        for (i = 1; i <= S[0].Total; i++)
        {
            input >> S[i].number;
            input >> S[i].grade;
            input >> S[i].member;
            input >> S[i].ground;
            input >> S[i].bed;
            input >> S[i].article;
            input>> S[i].other;
        }
    }
    input.close();
}
//主函數開始
void main()
{
    Student S[M];
    S[0].Total = 0;
    Input(S);
loop1:cout << "n********************歡迎使用宿舍衛生管理系統********************n" << endl;
    cout << "n    請選擇以何身份登入系統:nnn";
    cout << "t1、管理員nn";
    cout << "t2、學生nn";
    cout << "t3、退出系統nn";
    cout << "t請選擇:";
    int x;
    cin >> x;
    
    switch (x)
    {
    case 1: {
        system("cls");//清屏函數;
        load();//呼叫登入函數
        int choicem;
        do {
            cout << "n********************歡迎使用宿舍衛生管理系統********************n" << endl;
            cout << "t ********************主選單********************n " << endl;
            cout << "t①錄入學生資訊n" << endl;
            cout << "t②顯示學生資訊.n" << endl;
            cout << "t③查詢學生資訊n" << endl;
            cout << "t④修改學生資訊n" << endl;
            cout << "t⑤儲存學生資訊n" << endl;
            cout << "t⑥返回上級n" << endl;
            cout << "t⑦退出系統nn" << endl;
            cout << "t請選擇:";
            cin >> choicem;
            
            switch (choicem)
            {
            case 1: // 錄入資訊.
            {
                system("cls");//清屏函數
                Add(S); // 呼叫錄入資訊函數
                system("cls");//清屏函數
                Keep(S);
                break;
            }
            case 2: // 顯示學生資訊
            {
                system("cls");//清屏函數
                int choice2;
            loop2:showhead();
                cin >> choice2;
                if (choice2 == 1)
                {
                    Sort_grade(S);//呼叫排序函數按照成績從小到大排序(快排) 
                    system("cls");//清屏函數
                    cout << "按成績大小顯示資訊." << endl;
                    Display_All(S); // 呼叫顯示學生資訊函數
                    Keep(S);
                    Clear();
                    goto loop2;
                    system("cls");//清屏函數
                }
                else if (choice2 == 2)
                {
                    Sort_number(S);//排序函數按照寢室號從小到大排序(堆排序)
                    system("cls");//清屏函數
                    cout << "按寢室號大小顯示資訊." << endl;
                    Display_All(S); // 呼叫顯示學生資訊函數
                    Keep(S);
                    Clear();
                    goto loop2;
                    system("cls");//清屏函數
                }
                else if (choice2 == 3)
                {
                    system("cls");//清屏函數
                    break;
                }
                else {
                    cout << "nt輸入錯誤,請重新輸入。。。。 " << endl;
                    Clear();
                    goto loop2;
                }
            }
            case 3: // 查詢學生資訊、
            {
                system("cls");//清屏函數
                int choice3;
            loop3:searchheader();//呼叫查詢表頭函數
                cin >> choice3;
                if (choice3 == 1)//按成績查詢
                {
                    system("cls");//清屏函數
                    searh_grade(S);//查詢函數以成績為關鍵字進行查詢(折半查詢)
                    Clear();
                    goto loop3;
                }
                else if (choice3 == 2)//按寢室號查詢
                {
                    system("cls");//清屏函數
                    searh_number(S);//呼叫查詢函數以寢室號為關鍵字進行查詢(折半查詢)
                    Clear();
                    goto loop3;
                }
                else if (choice3 == 3)//返回上級選單
                    system("cls");//清屏函數
                else // 輸入錯誤
                {
                    cout << "nnt選擇錯誤,請重新輸入。。。 n" << endl;
                    Clear();
                    goto loop3;
                }
                break;
            }
            case 4: // 修改學生資訊
            {
                system("cls");//清屏函數
            loop4: Exchangehead();//呼叫修改學生資訊表頭函數
                int choice1;
                cin >> choice1;
 
                if (choice1 == 1)//單個刪除
                {
                    int i, j;
                    int flag = 0; // 用來判斷表中是否存在所要冊除的學生的資訊.
                    char number[20];
 
                    system("cls");//清屏函數
                    cout << "請輸入你要刪除寢室的寢室號:";
                    cin >> number;
                    for (i = 1; i <= S[0].Total; i++)
                        if (strcmp(S[i].number, number) == 0)
                            flag = i;
                    if (!flag) {
                        cout << "n nt你所要刪除的資訊在表中不存在! n" << endl;
                        Clear();
                        goto loop4;
                    }
                    else {
                        for (i = flag; i <= S->Total; i++)
                        {
                            j = i + 1;
                            S[i] = S[j];
                        }
                        S[0].Total--;
                        cout << "nt刪除成功!n" << endl;
                        Clear();
                        Keep(S);
                        goto loop4;
                    }
                }
                else if (choice1 == 2) // 全部刪除
                {
                    system("cls");//清屏函數
                    S[0].Total = 0;
                    cout << "nnn          冊除成功。。。。。nn" << endl;
                    Clear();
                    Keep(S);
                    goto loop4;
                }
                else if (choice1 == 3)//修改資訊
                {
                    int i;
                    int flag = 0; // 用來判斷表中是否存在所要修改的學生的資訊.
                    char number[20];
                    system("cls");//清屏函數
                    cout << "請輸入你要修改的寢室的寢室號:";
                    cin >> number;
                    for (i = 1; i <= S[0].Total; i++)
                        if (strcmp(S[i].number, number) == 0)
                            flag = i;
                    if (!flag)
                    {
                        cout << "nt你所要修改的學生在表中不存在! n" << endl;
                        Clear();
                        goto loop4;
                    }
                    else
                    {
                        cout << "nn" << endl;
                        cout << "  ———————————————————————————————————————————————— " << endl;
                        cout << " |                                     修 改 前 的 寢 室 信 息                                    |" << endl;
                        cout << " |————————————————————————————————————————————————|" << endl;
                        cout << " | 寢室號 | 總成績 |              寢  室  成  員              |地面衛生| 床  鋪 |物品擺放| 其  他 |" << endl;
                        cout << " |————|————|—————————————————————|————|————|————|————|" << endl;
                        cout << " |" << setw(8) << S[flag].number << "|" << setw(8) << S[flag].grade << "|";
                        cout << setw(42) << S[flag].member << "|" << setw(8) << S[flag].ground << "|";
                        cout << setw(8) << S[flag].bed << "|" << setw(8) << S[flag].article << "|";
                        cout << setw(8) << S[flag].other << "|" << endl;
                        cout << "  ———————————————————————————————————————————————— " << endl;
                        cout << "********************學生資訊修改********************n";
                        cout << " 寢室號 :";
                        cin >> S[flag].number;
                        cout << " 成  員 :";
                        cin >> S[flag].member;
                        cout << "地面衛生:";
                        cin >> S[flag].ground;
                        cout << " 床  鋪 :";
                        cin >> S[flag].bed;
                        cout << "物品擺放:";
                        cin >> S[flag].article;
                        cout << " 其  他 :";
                        cin >> S[flag].other;
                        cout << " 總成績 :";
                        S[flag].grade = S[flag].ground + S[flag].bed + S[flag].article + S[flag].other;
                        cout << S[flag].grade;
                        cout << "n";
                        cout << "  ———————————————————————————————————————————————— " << endl;
                        cout << " |                                     修 改 後 的 寢 室 信 息                                    |" << endl;
                        cout << " |————————————————————————————————————————————————|" << endl;
                        cout << " | 寢室號 | 總成績 |              寢  室  成  員              |地面衛生| 床  鋪 |物品擺放| 其  他 |" << endl;
                        cout << " |————|————|—————————————————————|————|————|————|————|" << endl;
                        cout << " |" << setw(8) << S[flag].number << "|" << setw(8) << S[flag].grade << "|";
                        cout << setw(42) << S[flag].member << "|" << setw(8) << S[flag].ground << "|";
                        cout << setw(8) << S[flag].bed << "|" << setw(8) << S[flag].article << "|";
                        cout << setw(8) << S[flag].other << "|" << endl;
                        cout << "  ———————————————————————————————————————————————— " << endl;
                        Clear();
                        Keep(S);
                        goto loop4;
                    }
                }
                else
                    if (choice1 == 4)//返回上級選單
                    {
                        system("cls");//清屏函數
                        break;
                    }
                    else//輸入錯誤
                    {
                        cout << "nt選擇錯誤,請重新選擇。。。n" << endl;
                        Clear();
                        goto loop4;
                    }
            }
            case 5: // 儲存學生資訊、
            {
                system("cls");//清屏函數
                Keep(S);
                cout << "n********************歡迎使用宿舍衛生管理系統********************n " << endl;
                cout << "nt儲存成功。。。。。n" << endl;
                Clear();
                break;
            }
            case 6: //返回上級
            {
                system("cls");//返回上級
                goto loop1;
            }
            case 7:break; // 退出管理系統
            default: {
                cout << "nnt輸入錯誤,請重新選擇。。。nn" << endl;
                Clear();
                break;
            }
            }
        } while (choicem != 7);
        break;
    }
    case 2: {
        system("cls");//清屏函數;
        int choice;
        do {
            cout << "n********************歡迎使用宿舍衛生管理系統********************n " << endl;
            cout << "n    顯示方式:n " << endl;
            cout << "t①按寢室查詢n" << endl;
            cout << "t②按寢室顯示n" << endl;
            cout << "t③按成績顯示n" << endl;
            cout << "t④本週寢室評價n" << endl;
            cout << "t⑤返回上級n" << endl;
            cout << "t⑥退出系統nn" << endl;
            cout << "    請選擇:";
            cin >> choice;
            if (choice == 1)//按成績查詢
            {
                system("cls");//清屏函數
                searh_number(S);// 查詢函數以寢室號為關鍵字進行查詢(折半查詢)
                Clear();
 
            }
            else if (choice == 2)//按寢室號顯示
            {
                system("cls");//清屏函數
                Sort_number(S);//排序函數按照寢室號從小到大排序(堆排序)
                Display_All(S);//顯示函數
                Clear();
            }
            else if (choice == 3)//按成績顯示
            {
                Sort_grade(S);//呼叫排序函數按照成績從小到大排序(快排) 
                system("cls");//清屏函數
                Display_All(S); // 呼叫顯示學生資訊函數
                Clear();
            }
            else if (choice == 4)
            {
                system("cls");//清屏函數
                y_n_number(S);//是否是文明寢室ok
                Clear();
            }
            else if (choice == 5)//返回上級
            {
                system("cls");//清屏函數
                goto loop1;
            }
            else if(choice == 6)
            {
                break;
            }
            else {
                cout << "nt輸入錯誤,請重新輸入。。。。 nn" << endl;
                Clear();
            }
        } while (choice != 5);
        break;
    }
    case 3:break;
    default: {
        cout << "nnt輸入錯誤,請重新輸入。。。nn"<<endl;
        Clear();
        goto loop1;
    }
    }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com