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

c++實(shí)現(xiàn)值機(jī)系統(tǒng)

 更新時間:2022年03月14日 12:21:55   作者:物聯(lián)黃同學(xué)  
這篇文章主要為大家詳細(xì)介紹了c++實(shí)現(xiàn)在線值機(jī)系統(tǒng)程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本項目為大家分享了c++實(shí)現(xiàn)值機(jī)系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

前言

上周幫同學(xué)做了一個項目作業(yè),具體要求見下圖,實(shí)現(xiàn)語言為c++。
今天決定在此復(fù)盤這個程序編寫的思路,具體完整代碼實(shí)現(xiàn)在文末

需求分析——編程思路

結(jié)構(gòu)體、類對象——座位

按照題目的描述,我們對于一個座位類,其至少有4個屬性,所以我們實(shí)現(xiàn)的思路有:
1、根據(jù)菜單中的c)按字母順序(編號)來顯示座位表,所以我們可以使用字符形式來存儲編號;
2、使用一個bool值來判斷座位是否被預(yù)定;
3、使用兩個字符串分別表示預(yù)定人的性和名。
然后由于題目中,一共有12個座位,我們不妨使用一個座位數(shù)組,作者在代碼使用了類嵌套的手法,當(dāng)時是想通過座位表類對象指針去訪問節(jié)省傳入空間,同時,由于后邊的統(tǒng)計座位數(shù)量的時候的會比較好用。

初始化

創(chuàng)建座位表對象時,不妨對其初始化,用一個循環(huán)按A—L賦值給座位表的對應(yīng)對象座位編號屬性賦值。

功能實(shí)行——菜單

1、菜單顯示,和之前做過的通訊錄差不多,只需要在外部封裝一個函數(shù),循環(huán)調(diào)用即可,同時為了一定的視覺效果,每次循環(huán)做一次按任意鍵繼續(xù) + 清屏 操作。
2、調(diào)用結(jié)構(gòu),首先如上面提到的,循環(huán),然后使用另一個判別分支結(jié)構(gòu)——switch,每個選項對應(yīng)一個函數(shù)調(diào)用。
3、刪除座位和預(yù)定座位的功能實(shí)現(xiàn)邏輯:
對于刪除,需要注意判斷是否座位匹配(即此時座位是否空,和客戶姓名是否匹配)
對于預(yù)定,則需要判斷輸入是否合乎要求(是否座位編號是空座)

代碼

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

#define Max_size 12

// 座位類
class Seat
{
public:
?? ?char number;?? ??? ?// 座位編號 A - L
?? ?bool is_empty;?? ??? ?// 判斷是否空?? ?false-滿,true-空
?? ?string name;?? ??? ?// 預(yù)定人的名
?? ?string lastname;?? ?// 預(yù)定人的姓?
};

// 座位表——座位數(shù)組
class seats_table
{
public:
?? ?// 座位表
?? ?Seat Seats[Max_size];

?? ?// 座位表中實(shí)際座位被坐的數(shù)量
?? ?int m_size;
};


// 菜單顯示
void show_menu()
{
?? ?cout << "To choose a functions, enter its letter label:" << endl
?? ??? ?<< "a) Show number of empty seats" << endl
?? ??? ?<< "b) Show list of empty seats" << endl
?? ??? ?<< "c) Show alphabetical list of seats" << endl
?? ??? ?<< "d) Assign a customer to seat assignment" << endl
?? ??? ?<< "e) Delete a seat assignment" << endl
?? ??? ?<< "f) Quit" << endl;
}

// 顯示空座的數(shù)量
void show_num_of_empty(seats_table* Seats)
{
?? ?cout << "Numer of empty seats: " << Max_size - Seats->m_size << endl;

?? ?system("pause");?? ?// 任意鍵繼續(xù)
?? ?system("cls");?? ??? ?// 清屏操作
}

// 顯示空座列表即顯示座位編號
void show_Listofempty(seats_table* S)
{
?? ?cout << "List of empty seats:" << endl;
?? ?for (int i = 0; i < Max_size; ++i)
?? ?{
?? ??? ?if (S->Seats[i].is_empty)
?? ??? ?{
?? ??? ??? ?cout << S->Seats[i].number << "\t";
?? ??? ?}
?? ?}
?? ?cout << endl;

?? ?/*system("pause");
?? ?system("cls");*/
}

// 按字母順序輸出座位列表(即輸出所有(12個)座位的信息)
void show_ListofSeats(seats_table* St)
{
?? ?cout << "List of Seats:" << endl;
?? ?for (int i = 0; i < Max_size; ++i)
?? ?{
?? ??? ?cout << St->Seats[i].number << "\t";
?? ??? ?if (St->Seats[i].is_empty)
?? ??? ?{
?? ??? ??? ?cout << "Empty" << endl;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?cout << "Not empty" << "\t"
?? ??? ??? ??? ?<< St->Seats[i].name << "\t"
?? ??? ??? ??? ?<< St->Seats[i].lastname << endl;
?? ??? ?}
?? ?}
?? ?system("pause");
?? ?system("cls");
}

// Assign a customer to a seat assignment(就是訂座)
void assign_seats(seats_table* St)
{
?? ?// 調(diào)用一下顯示空座列表函數(shù)
?? ?show_Listofempty(St);
?? ?char judge;
?? ?do
?? ?{
?? ??? ?// 輸出提示信息
?? ??? ?cout << "Please choose the num of seat you want choose:" << endl;
?? ??? ?char sel;
?? ??? ?cin >> sel;
?? ??? ?// 先判斷是否是正確輸入
?? ??? ?if (sel < 'A' || sel > 'L')
?? ??? ?{
?? ??? ??? ?cout << "Input Error!" << endl;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?// 再判斷該座位是否為空座
?? ??? ??? ?if (!St->Seats[sel - 'A'].is_empty)
?? ??? ??? ?{
?? ??? ??? ??? ?// 非空
?? ??? ??? ??? ?cout << "The seat is not empty!" << endl;
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?// 按照字母編號將對應(yīng)座位置人(即非空,置否),并將實(shí)際座位(非空座)總數(shù)+1
?? ??? ??? ??? ?St->Seats[(int)(sel - 'A')].is_empty = false;
?? ??? ??? ??? ?St->m_size++;

?? ??? ??? ??? ?// 輸出提示信息(提醒用戶輸入名字)
?? ??? ??? ??? ?cout << "Please input your name:" << endl;
?? ??? ??? ??? ?string na;
?? ??? ??? ??? ?cin >> na;
?? ??? ??? ??? ?St->Seats[(int)(sel - 'A')].name = na;

?? ??? ??? ??? ?cout << "Please input your lastname:" << endl;
?? ??? ??? ??? ?string ln;
?? ??? ??? ??? ?cin >> ln;
?? ??? ??? ??? ?St->Seats[(int)(sel - 'A')].lastname = ln;

?? ??? ??? ??? ?// 輸出訂票成功的提示
?? ??? ??? ??? ?cout << "Successful reservation!" << endl;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?cout << "Continue? (Y/N)" << endl;
?? ??? ?cin >> judge;
?? ?} while (judge == 'Y');

?? ?system("pause");
?? ?system("cls");
}

// delete a seat assignment(刪除一個座位的合約)
// 說實(shí)話,這個機(jī)制有點(diǎn)問題,應(yīng)該不是給客戶操作, 應(yīng)該是工作人員操作
void d_seat(seats_table* St)
{
?? ?
?? ?char num;
?? ?char judge;
?? ?do
?? ?{
?? ??? ?// 輸出提示信息(要刪除的座位編號)
?? ??? ?cout << "Please input the number(A-L) of seat you want delete:" << endl;
?? ??? ?cin >> num;
?? ??? ?// 先判斷是否是正確輸入
?? ??? ?if (num < 'A' || num > 'L')
?? ??? ?{
?? ??? ??? ?cout << "Input Error!" << endl;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?// 判斷是否是空座
?? ??? ??? ?// 空座
?? ??? ??? ?if (St->Seats[num - 'A'].is_empty)
?? ??? ??? ?{
?? ??? ??? ??? ?
?? ??? ??? ??? ?cout << "The seat is empty." << endl;
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?cout << "Please input your name and lastname:" << endl;
?? ??? ??? ??? ?string na, lna;
?? ??? ??? ??? ?cin >> na >> lna;
?? ??? ??? ??? ?// 判斷座位的名字和姓是否匹配
?? ??? ??? ??? ?if (St->Seats[num - 'A'].name == na && St->Seats[num - 'A'].lastname == lna)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?St->Seats[num - 'A'].is_empty = true;
?? ??? ??? ??? ??? ?St->m_size--;
?? ??? ??? ??? ??? ?St->Seats[num - 'A'].name = "";
?? ??? ??? ??? ??? ?St->Seats[num - 'A'].lastname = "";
?? ??? ??? ??? ??? ?cout << "Seat withdrawal succeeded!" << endl;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?cout << "The name or lastname is not matchied!" << endl;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}

?? ??? ?cout << "Continue? (Y/N)" << endl;
?? ??? ?cin >> judge;
?? ?} while (judge == 'Y');
?? ?system("pause");
?? ?system("cls");
}


int main()
{
?? ?seats_table S;

?? ?// 初始化,實(shí)際被坐的座位為0
?? ?S.m_size = 0;
?? ?// 循環(huán),初始化座位的編號(A - L),并全部置空
?? ?for (int i = 0; i < Max_size; i++)
?? ?{
?? ??? ?// 97--'A'
?? ??? ?S.Seats[i].number = (char)(i + 65);
?? ??? ?S.Seats[i].is_empty = true;
?? ?}
?? ?// 聲明選擇變量
?? ?char select = 'a';

?? ?// 循環(huán)顯示菜單進(jìn)行操作
?? ?while (1)
?? ?{
?? ??? ?// 菜單調(diào)用
?? ??? ?show_menu();

?? ??? ?bool b = false;

?? ??? ?cin >> select;

?? ??? ?switch (select)
?? ??? ?{
?? ??? ?case 'a':
?? ??? ??? ?show_num_of_empty(&S);
?? ??? ??? ?break;
?? ??? ?case 'b':
?? ??? ??? ?show_Listofempty(&S);
?? ??? ??? ?system("pause");
?? ??? ??? ?system("cls");
?? ??? ??? ?break;
?? ??? ?case 'c':
?? ??? ??? ?show_ListofSeats(&S);
?? ??? ??? ?break;
?? ??? ?case 'd':
?? ??? ??? ?assign_seats(&S);
?? ??? ??? ?break;
?? ??? ?case 'e':
?? ??? ??? ?d_seat(&S);
?? ??? ??? ?break;
?? ??? ?
?? ??? ?// 放棄操作,退出循環(huán)(while循環(huán))
?? ??? ?case 'f':
?? ??? ??? ?b = true;
?? ??? ??? ?break;

?? ??? ?// 其他情況
?? ??? ?default:
?? ??? ??? ?cout << "Input error!" << endl;
?? ??? ??? ?system("pause");
?? ??? ??? ?system("cls");
?? ??? ?}
?? ??? ?if (b)
?? ??? ?{
?? ??? ??? ?break;
?? ??? ?}
?? ?}

?? ?system("pause");
?? ?return 0;
}

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

相關(guān)文章

  • Qt編寫自定義控件實(shí)現(xiàn)抽獎轉(zhuǎn)盤

    Qt編寫自定義控件實(shí)現(xiàn)抽獎轉(zhuǎn)盤

    這篇文章主要為大家詳細(xì)介紹了Qt編寫自定義控件實(shí)現(xiàn)抽獎轉(zhuǎn)盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言折半查找法的由來及使用詳解

    C語言折半查找法的由來及使用詳解

    折半查找法也叫做?分查找,顧名思義就是把數(shù)據(jù)分成兩半,再判斷所查找的key在哪?半中,再重復(fù)上述步驟知道找到?標(biāo)key,下面這篇文章主要給大家介紹了關(guān)于C語言折半查找法的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • C語言深入淺出講解直接插入排序算法的實(shí)現(xiàn)

    C語言深入淺出講解直接插入排序算法的實(shí)現(xiàn)

    插入排序也是最簡單的一類排序方法,我今天介紹的也是插入排序里最直觀且淺顯易懂的直接插入排序。對這個很簡單的排序,記得當(dāng)時也是花了近兩個晚上才搞懂它的原理的,接下來就來介紹一下
    2022-05-05
  • C語言面試常見考點(diǎn)排序總結(jié)

    C語言面試常見考點(diǎn)排序總結(jié)

    深處開發(fā)崗,其實(shí)排序也是繞不開的環(huán)節(jié),其中冒泡排序,選擇排序,插入排序,歸并排序,快速排序,堆排序也是我在秋招以來頻繁問到的技術(shù)點(diǎn),今天我們來重點(diǎn)聊聊排序
    2021-11-11
  • 淺談C結(jié)構(gòu)和C++結(jié)構(gòu)之間的區(qū)別

    淺談C結(jié)構(gòu)和C++結(jié)構(gòu)之間的區(qū)別

    這篇文章主要介紹了淺談C結(jié)構(gòu)和C++結(jié)構(gòu)之間的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 關(guān)于單片機(jī)按鍵問題性能提升總結(jié)

    關(guān)于單片機(jī)按鍵問題性能提升總結(jié)

    今天小編就為大家分享一篇關(guān)于關(guān)于單片機(jī)按鍵問題性能提升總結(jié),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • OpenCV實(shí)現(xiàn)無縫克隆算法的步驟詳解

    OpenCV實(shí)現(xiàn)無縫克隆算法的步驟詳解

    借助無縫克隆算法,您可以從一張圖像中復(fù)制一個對象,然后將其粘貼到另一張圖像中,從而形成一個看起來無縫且自然的構(gòu)圖。本文將詳解OpenCV實(shí)現(xiàn)無縫克隆算法的步驟,需要的可以參考一下
    2022-06-06
  • c++版線程池和任務(wù)池示例

    c++版線程池和任務(wù)池示例

    這篇文章主要介紹了c++版線程池和任務(wù)池,實(shí)現(xiàn)任務(wù)執(zhí)行完畢線程退出.在linux下壓力測試通過
    2014-03-03
  • C語言實(shí)現(xiàn)五子棋小游戲

    C語言實(shí)現(xiàn)五子棋小游戲

    五子棋游戲是一款很經(jīng)典的智力游戲,只有學(xué)過編程語言的人,把五子棋的編程原理弄懂了,就能用自己熟悉的語言實(shí)現(xiàn)出來,在這里給大家分享,c語言五子棋源碼,僅供大家參考借鑒。
    2016-03-03
  • 詳解QML?調(diào)用?C++?中的內(nèi)容

    詳解QML?調(diào)用?C++?中的內(nèi)容

    這篇文章主要介紹了QML?怎么調(diào)用?C++?中的內(nèi)容,這里主要是總結(jié)一下,怎么在 QML 文件中引用 C ++ 文件里定義的內(nèi)容,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10

最新評論

美姑县| 永康市| 雷波县| 墨脱县| 奎屯市| 修武县| 武宣县| 泌阳县| 茌平县| 深圳市| 南宁市| 乳山市| 灵川县| 奉贤区| 安西县| 武宣县| 碌曲县| 陆河县| 孟村| 商水县| 溧阳市| 海城市| 万源市| 济南市| 荥经县| 昂仁县| 济宁市| 古浪县| 河北区| 白山市| 神池县| 盱眙县| 乐都县| 县级市| 武胜县| 广丰县| 开平市| 方正县| 拜泉县| 汉寿县| 仙居县|