APP下载

基于Linux的点餐系统的设计与实现

2023-05-30叶梦君焦冰

电脑知识与技术 2023年3期
关键词:S架构

叶梦君 焦冰

关键词:点餐系统;Linux;Qt;C/S架构;MySQL

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2023)03-0044-03

1 引言

随着互联网技术和社会迅猛发展,上班族在餐馆吃饭成为一种趋势,传统的纸质菜单存在效率低、浪费人力、管理不便等诸多因素;设计一种管理方便、高效、快捷的点餐系统显得极为重要。

本文是基于Linux的点餐系统,采用Qt制作交互界面[1],实现客户在餐厅电子点餐。本文采用C/S架构[2],TCP协议进行通信,采用了多线程的方法解决服务端与客服端的通信;采用MySQL数据库[3]来储存用户信息、菜单信息、账单信息及厨房待做餐品清单;采用vector容器来存放顾客的订单信息,顾客提交订单时,将容器发送给管理端和厨房;同时收银员可查询相应桌号的消费详情和消费总额并进行结账[4]。

2 系统功能原理

基于Linux 的点餐系统由客户端和服务端组成[5-7],客户端包含顾客端、厨房端和收银端,服務端即管理端。顾客端界面呈现所有餐品,供顾客选择,还具备加餐和退餐功能;厨房端根据顾客端所点的餐品,实时显示待做餐品;收银端需要账号密码登录,登录后可显示餐桌使用情况,结算各个餐桌的消费金额;管理端需要账号密码登录,登录后可设置添加用户,删除用户,修改用户密码和权限的功能。

2.1 管理端Admini 模块功能原理管理

端包含管理端登录和管理端操作两大部分,管理端登录部分实现的功能是对用户信息的验证,登录时根据所填写的账号和密码在数据库中查找该账号是否存在、密码是否正确。账号密码和数据库中保存的内容相符合,用户方可进入管理端操作界面。管理端操作部分主要有用户管理、账单查阅、菜单管理和饮品配置四大选项。其中用户管理包含添加用户、删除用户、修改密码、修改权限和刷新显示的功能。账单查阅可查看对应交易号的交易时间、桌号和消费额等具体信息。菜单管理能够实现添加菜单、删除菜单、修改价格、修改有无状态和刷新显示的功能。饮品配置也可以实现添加饮品、删除饮品、修改价格、修改状态和刷新显示的操作。管理端功能流程图如图1所示。

2.2 顾客端Order 模块功能原理

顾客端包含菜单和等待两大功能,菜单显示所有餐品/饮品,显示对应序号、餐品/饮品、价格和有无状态。顾客可参照菜单选择餐品/饮品及其数量,同时也可根据个人口味进行备注,最后选择桌号后提交订单。同时显示已点菜单,包含序号、餐名、价格、数量和备注信息。点餐完毕,提交订单后,顾客进入等待环节,可以查询到未上桌餐品和已上桌餐品;顾客还可以输入对应的桌号进行退餐、加餐和催菜操作。顾客端功能流程图如图2所示。

2.3 厨房端Chef 模块功能原理

厨房端根据顾客端所点的餐品,实时显示待做餐品,显示当前所有待做餐品的桌号、序号、餐名、价格、数量、备注信息,所有餐品会根据顾客点菜时间递增排列。厨师需要按照点菜时间依次出餐。由于顾客点菜较多,也会出现退菜等现象,所以也需要厨师刷新菜单,以便显示实时的工作内容。厨房端功能流程图如图3所示。

2.4 收银端Cashier 模块功能原理

收银端的功能原理与管理端的功能原理相似,收银端包含收银端登录和收银端操作两大部分。收银端登录部分实现的功能是对用户信息的验证,登录时根据所填写的账号和密码在数据库中查找该账号是否存在、密码是否正确。若账号密码和数据库中保存的内容相符合,用户方可进入收银端操作界面。收银端操作有查询和结算功能,查询功能包含对餐桌使用情况的查询,和对具体餐桌号所点餐品的一个总览。当顾客用餐完毕,收银端即可进行结算功能。收银端功能流程图如图4所示。

3 系统功能模块设计与实现

3.1 管理端Admini 模块设计与实现

据管理端功能原理分析,管理端包含管理员登录界面和管理员操作界面;其中管理员登录界面使用Label、LineEdit、PushButton、horizontalLayout等控件实现,通过合理布局,运行程序,管理员登录界面如图5所示。

登录成功后,进入管理员操作页面,管理员操作界面包含用户管理、账单查阅、菜单管理和饮品配置;通过TabWidget控件实现用户管理、账单、菜单管理和饮品配置的选项切换,通过控件、函数、数据库实现的用户管理界面如图6所示,账单查询界面如图7所示,菜单管理界面如图8所示,饮品配置界面如图9。

3.2 顾客端Order 模块设计与实现

顾客端涉及菜单点餐界面和顾客等待界面设计,通过headtext提取数据库中的存储信息,getvec获取数据库中的存储信息,结合LineEdit、PushButton、lcd?Number、tablewidget等控件实现顾客端模块功能。点餐界面如图10所示。点完菜品,若等待了较长的时间,顾客可以进行催餐的操作,使用函数、控件实现催菜功能如图11所示。

3.3 厨房端Chef 模块设计与实现

厨房端界面实现,首先是与服务端建立socket连接,通过QTcpSocket 创建套接字,建立连接后通过FoodVec方法获取菜单容器,显示所有待做餐品,用TableWidget来接收显示,包含备注等各类餐品信息,通过QString方法获取对应餐品的桌号、序号、价格、数量、备注信息,核对无误,通过tcpsocket→write方法将餐品写入foodVec容器。厨房端界面如图12所示。

3.4 收银端Cashier 模块设计与实现

据收银员功能原理分析,所设计收银员登录界面使用Label、LineEdit、PushButton、horizontalLayout等控件实现,收银登录界面设计如图13所示。输入账号密码后,通过query.value函数与数据库所存储的信息进行核对,如果正确无误,则进入收银员操作页面。操作界面实现查询和结算两大功能。收银员操作界面设计如图14所示。

4 结束语

作为服务型经济的餐饮行业具有很大的市场潜力,同时,餐饮行业的服务质量和管理水平面临很大的挑战,餐饮行业的信息化建设显得十分重要,提高服务行业工作效率,降低成本,满足顾客的个性化需求具有重要的意义。经过测试表明,系统实现顾客点餐、加餐、退餐;后厨接收到菜单;数据库管理菜单列表;系统性能稳定,运行良好。

猜你喜欢

S架构
C/S架构下的中职教学辅助系统的新探索