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

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

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

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

前言

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

需求分析——編程思路

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

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

初始化

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

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

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

代碼

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

#define Max_size 12

// 座位類
class Seat
{
public:
?? ?char number;?? ??? ?// 座位編號(hào) 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");?? ??? ?// 清屏操作
}

// 顯示空座列表即顯示座位編號(hào)
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個(gè))座位的信息)
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
?? ??? ??? ?{
?? ??? ??? ??? ?// 按照字母編號(hào)將對(duì)應(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(刪除一個(gè)座位的合約)
// 說(shuō)實(shí)話,這個(gè)機(jī)制有點(diǎn)問(wèn)題,應(yīng)該不是給客戶操作, 應(yīng)該是工作人員操作
void d_seat(seats_table* St)
{
?? ?
?? ?char num;
?? ?char judge;
?? ?do
?? ?{
?? ??? ?// 輸出提示信息(要?jiǎng)h除的座位編號(hào))
?? ??? ?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),初始化座位的編號(hào)(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;
}

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

相關(guān)文章

  • C語(yǔ)言獲取Shell返回結(jié)果的實(shí)現(xiàn)方法

    C語(yǔ)言獲取Shell返回結(jié)果的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇C語(yǔ)言獲取Shell返回結(jié)果的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • C++智能指針shared_ptr

    C++智能指針shared_ptr

    這篇文章主要介紹了C++智能指針shared_ptr,C++11中包括shared_ptr在內(nèi)的多種指針,都是模板類型,意味著使用者可以指定想要操作的類型下文從shared_ptr創(chuàng)建方式展開(kāi)全文,介紹詳細(xì)具有一的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • Qt定時(shí)器(QTimer)的3種使用方法

    Qt定時(shí)器(QTimer)的3種使用方法

    本文主要介紹了Qt定時(shí)器(QTimer)的3種使用方法,主要包括QObject類提供的定時(shí)器,QTimer類提供的定時(shí)器,靜態(tài)的singleShot?()函數(shù)創(chuàng)建單觸發(fā)定時(shí)器,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • C++類和對(duì)象之多態(tài)詳解

    C++類和對(duì)象之多態(tài)詳解

    大家好,本篇文章主要講的是C++類和對(duì)象之多態(tài)詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • cocos2d-x學(xué)習(xí)筆記之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex場(chǎng)景層介紹

    cocos2d-x學(xué)習(xí)筆記之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMu

    這篇文章主要介紹了cocos2d-x學(xué)習(xí)筆記之CCLayer、CCLayerColor、CCLayerGradient、CCLayerMultiplex場(chǎng)景層介紹,需要的朋友可以參考下
    2014-09-09
  • 剖析C++中的常量表達(dá)式與省略號(hào)的相關(guān)作用

    剖析C++中的常量表達(dá)式與省略號(hào)的相關(guān)作用

    這篇文章主要介紹了C++中的常量表達(dá)式與省略號(hào)的相關(guān)作用,以及表達(dá)式中的可變參數(shù)模板示例,需要的朋友可以參考下
    2016-01-01
  • C/C++標(biāo)準(zhǔn)庫(kù)之轉(zhuǎn)換UTC時(shí)間到local本地時(shí)間詳解

    C/C++標(biāo)準(zhǔn)庫(kù)之轉(zhuǎn)換UTC時(shí)間到local本地時(shí)間詳解

    最近遇到一個(gè)問(wèn)題:數(shù)據(jù)庫(kù)中存放的時(shí)間為UTC時(shí)間,但是現(xiàn)在要求都出來(lái)顯示的時(shí)間為本地時(shí)間,所以就用C++實(shí)現(xiàn)了,下面這篇文章主要給大家介紹了關(guān)于C/C++標(biāo)準(zhǔn)庫(kù)之轉(zhuǎn)換UTC時(shí)間到local本地時(shí)間的方法,還有C++中獲取UTC時(shí)間精確到微秒的實(shí)現(xiàn)代碼,需要的朋友可以參考下。
    2017-11-11
  • VC運(yùn)用OPENGL加載BMP紋理圖的實(shí)現(xiàn)方法匯總

    VC運(yùn)用OPENGL加載BMP紋理圖的實(shí)現(xiàn)方法匯總

    這篇文章主要介紹了VC運(yùn)用OPENGL加載BMP紋理圖的實(shí)現(xiàn)方法,對(duì)于更好的了解OpenGL很有幫助,需要的朋友可以參考下
    2014-07-07
  • C語(yǔ)言中大小端問(wèn)題實(shí)例探索解決方法

    C語(yǔ)言中大小端問(wèn)題實(shí)例探索解決方法

    這篇文章主要介紹了C語(yǔ)言中大小端問(wèn)題實(shí)例,總的來(lái)說(shuō)這并不是一道難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達(dá)的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過(guò)程。希望通過(guò)這道題能給你帶來(lái)一種解題優(yōu)化的思路
    2023-02-02
  • C語(yǔ)言用棧實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的方法示例

    C語(yǔ)言用棧實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的方法示例

    這篇文章主要介紹了C語(yǔ)言用棧實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制的方法,結(jié)合實(shí)例形式分析了C語(yǔ)言棧的定義及進(jìn)制轉(zhuǎn)換使用技巧,需要的朋友可以參考下
    2017-06-06

最新評(píng)論