葉夢君 焦冰
關(guān)鍵詞:點(diǎn)餐系統(tǒng);Linux;Qt;C/S架構(gòu);MySQL
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2023)03-0044-03
1 引言
隨著互聯(lián)網(wǎng)技術(shù)和社會(huì)迅猛發(fā)展,上班族在餐館吃飯成為一種趨勢,傳統(tǒng)的紙質(zhì)菜單存在效率低、浪費(fèi)人力、管理不便等諸多因素;設(shè)計(jì)一種管理方便、高效、快捷的點(diǎn)餐系統(tǒng)顯得極為重要。
本文是基于Linux的點(diǎn)餐系統(tǒng),采用Qt制作交互界面[1],實(shí)現(xiàn)客戶在餐廳電子點(diǎn)餐。本文采用C/S架構(gòu)[2],TCP協(xié)議進(jìn)行通信,采用了多線程的方法解決服務(wù)端與客服端的通信;采用MySQL數(shù)據(jù)庫[3]來儲(chǔ)存用戶信息、菜單信息、賬單信息及廚房待做餐品清單;采用vector容器來存放顧客的訂單信息,顧客提交訂單時(shí),將容器發(fā)送給管理端和廚房;同時(shí)收銀員可查詢相應(yīng)桌號(hào)的消費(fèi)詳情和消費(fèi)總額并進(jìn)行結(jié)賬[4]。
2 系統(tǒng)功能原理
基于Linux 的點(diǎn)餐系統(tǒng)由客戶端和服務(wù)端組成[5-7],客戶端包含顧客端、廚房端和收銀端,服務(wù)端即管理端。顧客端界面呈現(xiàn)所有餐品,供顧客選擇,還具備加餐和退餐功能;廚房端根據(jù)顧客端所點(diǎn)的餐品,實(shí)時(shí)顯示待做餐品;收銀端需要賬號(hào)密碼登錄,登錄后可顯示餐桌使用情況,結(jié)算各個(gè)餐桌的消費(fèi)金額;管理端需要賬號(hào)密碼登錄,登錄后可設(shè)置添加用戶,刪除用戶,修改用戶密碼和權(quán)限的功能。
2.1 管理端Admini 模塊功能原理管理
端包含管理端登錄和管理端操作兩大部分,管理端登錄部分實(shí)現(xiàn)的功能是對(duì)用戶信息的驗(yàn)證,登錄時(shí)根據(jù)所填寫的賬號(hào)和密碼在數(shù)據(jù)庫中查找該賬號(hào)是否存在、密碼是否正確。賬號(hào)密碼和數(shù)據(jù)庫中保存的內(nèi)容相符合,用戶方可進(jìn)入管理端操作界面。管理端操作部分主要有用戶管理、賬單查閱、菜單管理和飲品配置四大選項(xiàng)。其中用戶管理包含添加用戶、刪除用戶、修改密碼、修改權(quán)限和刷新顯示的功能。賬單查閱可查看對(duì)應(yīng)交易號(hào)的交易時(shí)間、桌號(hào)和消費(fèi)額等具體信息。菜單管理能夠?qū)崿F(xiàn)添加菜單、刪除菜單、修改價(jià)格、修改有無狀態(tài)和刷新顯示的功能。飲品配置也可以實(shí)現(xiàn)添加飲品、刪除飲品、修改價(jià)格、修改狀態(tài)和刷新顯示的操作。管理端功能流程圖如圖1所示。
2.2 顧客端Order 模塊功能原理
顧客端包含菜單和等待兩大功能,菜單顯示所有餐品/飲品,顯示對(duì)應(yīng)序號(hào)、餐品/飲品、價(jià)格和有無狀態(tài)。顧客可參照菜單選擇餐品/飲品及其數(shù)量,同時(shí)也可根據(jù)個(gè)人口味進(jìn)行備注,最后選擇桌號(hào)后提交訂單。同時(shí)顯示已點(diǎn)菜單,包含序號(hào)、餐名、價(jià)格、數(shù)量和備注信息。點(diǎn)餐完畢,提交訂單后,顧客進(jìn)入等待環(huán)節(jié),可以查詢到未上桌餐品和已上桌餐品;顧客還可以輸入對(duì)應(yīng)的桌號(hào)進(jìn)行退餐、加餐和催菜操作。顧客端功能流程圖如圖2所示。
2.3 廚房端Chef 模塊功能原理
廚房端根據(jù)顧客端所點(diǎn)的餐品,實(shí)時(shí)顯示待做餐品,顯示當(dāng)前所有待做餐品的桌號(hào)、序號(hào)、餐名、價(jià)格、數(shù)量、備注信息,所有餐品會(huì)根據(jù)顧客點(diǎn)菜時(shí)間遞增排列。廚師需要按照點(diǎn)菜時(shí)間依次出餐。由于顧客點(diǎn)菜較多,也會(huì)出現(xiàn)退菜等現(xiàn)象,所以也需要廚師刷新菜單,以便顯示實(shí)時(shí)的工作內(nèi)容。廚房端功能流程圖如圖3所示。
2.4 收銀端Cashier 模塊功能原理
收銀端的功能原理與管理端的功能原理相似,收銀端包含收銀端登錄和收銀端操作兩大部分。收銀端登錄部分實(shí)現(xiàn)的功能是對(duì)用戶信息的驗(yàn)證,登錄時(shí)根據(jù)所填寫的賬號(hào)和密碼在數(shù)據(jù)庫中查找該賬號(hào)是否存在、密碼是否正確。若賬號(hào)密碼和數(shù)據(jù)庫中保存的內(nèi)容相符合,用戶方可進(jìn)入收銀端操作界面。收銀端操作有查詢和結(jié)算功能,查詢功能包含對(duì)餐桌使用情況的查詢,和對(duì)具體餐桌號(hào)所點(diǎn)餐品的一個(gè)總覽。當(dāng)顧客用餐完畢,收銀端即可進(jìn)行結(jié)算功能。收銀端功能流程圖如圖4所示。
3 系統(tǒng)功能模塊設(shè)計(jì)與實(shí)現(xiàn)
3.1 管理端Admini 模塊設(shè)計(jì)與實(shí)現(xiàn)
據(jù)管理端功能原理分析,管理端包含管理員登錄界面和管理員操作界面;其中管理員登錄界面使用Label、LineEdit、PushButton、horizontalLayout等控件實(shí)現(xiàn),通過合理布局,運(yùn)行程序,管理員登錄界面如圖5所示。
登錄成功后,進(jìn)入管理員操作頁面,管理員操作界面包含用戶管理、賬單查閱、菜單管理和飲品配置;通過TabWidget控件實(shí)現(xiàn)用戶管理、賬單、菜單管理和飲品配置的選項(xiàng)切換,通過控件、函數(shù)、數(shù)據(jù)庫實(shí)現(xiàn)的用戶管理界面如圖6所示,賬單查詢界面如圖7所示,菜單管理界面如圖8所示,飲品配置界面如圖9。
3.2 顧客端Order 模塊設(shè)計(jì)與實(shí)現(xiàn)
顧客端涉及菜單點(diǎn)餐界面和顧客等待界面設(shè)計(jì),通過headtext提取數(shù)據(jù)庫中的存儲(chǔ)信息,getvec獲取數(shù)據(jù)庫中的存儲(chǔ)信息,結(jié)合LineEdit、PushButton、lcd?Number、tablewidget等控件實(shí)現(xiàn)顧客端模塊功能。點(diǎn)餐界面如圖10所示。點(diǎn)完菜品,若等待了較長的時(shí)間,顧客可以進(jìn)行催餐的操作,使用函數(shù)、控件實(shí)現(xiàn)催菜功能如圖11所示。
3.3 廚房端Chef 模塊設(shè)計(jì)與實(shí)現(xiàn)
廚房端界面實(shí)現(xiàn),首先是與服務(wù)端建立socket連接,通過QTcpSocket 創(chuàng)建套接字,建立連接后通過FoodVec方法獲取菜單容器,顯示所有待做餐品,用TableWidget來接收顯示,包含備注等各類餐品信息,通過QString方法獲取對(duì)應(yīng)餐品的桌號(hào)、序號(hào)、價(jià)格、數(shù)量、備注信息,核對(duì)無誤,通過tcpsocket→write方法將餐品寫入foodVec容器。廚房端界面如圖12所示。
3.4 收銀端Cashier 模塊設(shè)計(jì)與實(shí)現(xiàn)
據(jù)收銀員功能原理分析,所設(shè)計(jì)收銀員登錄界面使用Label、LineEdit、PushButton、horizontalLayout等控件實(shí)現(xiàn),收銀登錄界面設(shè)計(jì)如圖13所示。輸入賬號(hào)密碼后,通過query.value函數(shù)與數(shù)據(jù)庫所存儲(chǔ)的信息進(jìn)行核對(duì),如果正確無誤,則進(jìn)入收銀員操作頁面。操作界面實(shí)現(xiàn)查詢和結(jié)算兩大功能。收銀員操作界面設(shè)計(jì)如圖14所示。
4 結(jié)束語
作為服務(wù)型經(jīng)濟(jì)的餐飲行業(yè)具有很大的市場潛力,同時(shí),餐飲行業(yè)的服務(wù)質(zhì)量和管理水平面臨很大的挑戰(zhàn),餐飲行業(yè)的信息化建設(shè)顯得十分重要,提高服務(wù)行業(yè)工作效率,降低成本,滿足顧客的個(gè)性化需求具有重要的意義。經(jīng)過測試表明,系統(tǒng)實(shí)現(xiàn)顧客點(diǎn)餐、加餐、退餐;后廚接收到菜單;數(shù)據(jù)庫管理菜單列表;系統(tǒng)性能穩(wěn)定,運(yùn)行良好。