点菜系统 设计

摘  要

随着网络信息的发展, 无线点菜系统的开发为酒店及大型餐馆带来了很大的方便和经济效益,使他们即使大大减少劳动力也可以轻轻松松地完成酒店的正常运行。

该课题通过考察现有的部分点菜系统解决方案,研究了一种无线点菜系统的软件设计。利用实验室已有的S3C2410开发板座位硬件载体,综合应用ZigBee,嵌入式linux,Qt开发等技术,以程序的通用性和易用性为方向,构造能够方便应用到各种PDA系统的点菜终端程序和普通PC机的服务器软件,实现无线点菜系统[1]。

该系统由服务器端、厨房端、客户端组成,实现了酒店主要的点菜、退菜、用户管理、菜谱管理、账单查询、结账等一系列的主要功能。具有操作简单、界面友善、灵活性好、系统安全性高、运行稳定等特点,是酒店经营者的理想选择。

文章简要介绍了系统的项目背景和意义,着重阐述了该系统开发实现过程,从系统的需求分析、概要设计、详细设计、系统实现到系统测试等各个环节都进行了详尽的分析和描述。

关键词:点菜系统,Qt,嵌入式linux,ZigBee无线通讯

ABSTRACT

Along with the development of network information, wireless order system development for the hotel and large restaurant bring great convenience and economic benefit, and make them even if greatly reduce the labor force can also unwind and complete hotel in normal operation.

This topic through the investigation of the existing order system solutions, a wireless order system software design. Using laboratory of the existing S3C2410 development board seat hardware carrier, comprehensive application ZigBee, embedded Linux, Qt development technology to program the versatility and usability for direction, structure can easily applied to all kinds of PDA system program and ordinary order terminal PC server software, realize the wireless order system,

The system consists of the server, the kitchen, the client component, realize the main hotel, get out of order vegetables, user management, the menu management, bill inquires a series of and checkout main function. With simple operation, friendly interface, flexibility is good, the system has high security, stable operation, and other features, is the hotel operator ideal choice.

This paper briefly introduces the system of project background and significance, and emphatically expounds the system development process, from the demand analysis of the system, design, detailed summary design, system to realize the system test and so on each link all for a detailed analysis and description.

Keywords:Order system,Qt,embedded Linux, ZigBee wireless communication

目  录

第1章  绪论

1.1研究背景及意义

1.2系统需达到的要求

1.3系统开发技术介绍

第2章 理论基础知识

2.1软件工程概述

2.1.1 软件工程的基本原理

2.1.2 生命周期各个阶段

2.2 数据库系统概述

2.2.1 数据库系统[4]

2.2.2 数据库管理系统

第3章 需求分析

3.1产品任务

3.1.1目标

3.1.2定位

3.1.3前景

3.1.4用户角色分析

3.1.5假定和约束

3.1.6开发环境及技术

3.2用户功能需求

3.2.1系统组成

3.2.2手持客户端子系统

3.2.3服务器端子系统

3.2.4厨房端子系统

3.3可行性分析

3.3.1技术可行性

3.3.2经济可行性

3.33操作可行性

3.4非功能需求

3.4.1软硬件需求环境

3.4.1安全性

3.4.2时间响应性

第4章 概要设计

4.1系统概括

4.2系统基本设计

4.3客户端移植的环境配置[6]

4.4通讯接口设计

4.5数据列表

4.6E-R图设计

4.7异常处理设计

第5章 详细设计

5.1功能详述

5.1.1无线点菜系统客户端功能

5.1.2无线点菜系统服务端功能

5.1.3无线点菜系统厨房端功能

5.2用例建模

5.2.1系统用例图

5.3功能详细设计

第6章 系统主要功能的实现

6.1客户端界面的开发

6.1.1客户端初始化界面的开发

6.1.2点菜界面的开发

6.1.3退菜界面的开发

6.2 服务器端界面开发

6.2.1 登录界面的开发

6.2.2管理员管理界面开发

6.2.3结账界面的开发

6.3厨房端界面设计

第7章 系统测试

7.1功能测试

7.2性能测试

7.3测试结果分析

结 论

参考文献

致 谢

附 录

第1章  绪论

1.1研究背景及意义

近年来,随着我国人民生活水平的提高和生活方式的转变,餐饮业得以迅速发展。然而,在竞争愈演愈烈的今天,信息科技在各行各业广泛应用的时候,餐饮业却一直徘徊在信息科技的边缘地域。据悉,近几年,我国现有各类饭店、餐馆、酒店保持着高达15%~17%的年增长率。然而,在餐饮行业高速发展的同时,食品原材料成本、劳动力成本提升、管理人才匮乏、成本控制难等多方面问题日益凸显,行业竞争愈演愈烈,餐饮业全面进入“微利时代”,传统的经营模式遭遇严峻挑战。长期以来,在酒店、餐馆里,客人点菜都以人工的形式记录菜单和传达菜单到后厨。点菜员等候在客人旁,客人看菜谱点菜,点菜员用笔记录,然后点菜员将点菜记录拿到后厨排号。越来越多的餐饮业管理者达成了一种共识:传统的由人工来传递菜单的点菜方式已经不能满足市场的需求,它不仅浪费时间、效率低下,而且很容易出现错误,从而大大降低服务质量,给企业带来不必要的损失。针对传统点菜方式的缺点,随着科学技术的发展,嵌入式无线点菜器必将取代传统点菜方式。最近两年,无线点菜器在国内外一些酒店已经开始有些应用。但大多数无线点菜系统存在着不足:直观性、易用性、可靠性、实时性等方面在设计和实现上都存在很多缺陷,有待改进。

无线点菜系统集无线系统和触摸屏系统为一体,是通过ZigBee无线传输实现的一种可视化餐厅点菜工具。它使点餐过程变得更加随意自由,带给消费者美好的用餐体验,同时降低餐厅的管理难度和综合成本。顾客进入饭店吃饭时,服务员在送上精美菜单的同时,也把往常需要用笔记录的纸质点菜单换成了手持的电子点菜设备。顾客可以选择喜欢的菜肴后,厨师就可以根据系统的提示烹制客人需要的食品。收银人员也可以免去算账的烦恼。收账系统可以根据无线点菜系统的数据输入,快速准确地计算出客人需要付账的总价。这不仅方便了饭店工作人员,同时还能够为顾客节省大量时间,这对餐馆赢得回头客大有裨益[2]。

1.2系统需达到的要求

无线点菜系统是由服务器子系统,手持子系统,厨房子系统组成,采用QT编程技术,以sqlite3作为后台数据库,以ZigBee无线通讯器通讯。力求界面友好,操作简单,功能全面。其主要特点有:

(1)界面友好

系统界面美观,无歧义。

(2)功能全面

根据实际功能的需求,系统分为3个子系统,分别为后台服务端,前台手持终端,厨房端。服务端登录后,管理员权限最高,可以对菜谱进行增、删操作;可以对其他用户信息(厨师,服务员)进行增、删、改等管理;也可以对账单进行分类查询。前台手持终端能点菜、加菜、催菜等功能。厨房端显示需炒菜的菜品。

(3)适用性强

设计时全面考虑用户尽可能遇到的各种情况,并设计相应的解决方案。

(4)操作简单

系统的开发充分遵循了用户的操作习惯,使得用户在使用系统工作时,只要自如的按习惯进行操作,即可轻松完成工作,无需死记操作规程。

1.3系统开发技术介绍

(1)ZigBee

ZigBee是基于IEEE802.15.4标准的低功耗个域网协议,是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用,自动控制和远程控制领域,可以嵌入各种设备。ZigBee是一种新兴的近距离、低复杂度、低功耗、低数据速率、低成本的无线网络技术,它是一种介于无线标记技术和蓝牙之间的技术提案。主要用于近距离无线连接。它依据802.15.4标准,在数千个微小的传感器之间相互协调实现通信。这些传感器只需要很少的能量,以接力的方式通过无线电波将数据从一个网络节点传到另一个节点,所以它们的通信效率非常高。

(2)Sqlite3

Sqlite3是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低。Sqlite3 支持跨平台,操作简单,能够使用很多语言直接创建数据库,适合小型开发。其一个主要特点:比其他数据库处理数据的速度都快。SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库。SQLite 支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Access一样需要Office的支持。如果你是个很小型的应用,或者你想做嵌入式开发,没有合适的数据库系统,那么现在你可以考虑使用SQLite。目前它的最新版本是 3.7.8 。它的官方网站是:http://www.sqlite. org或者http://www.sqlite .com .cn,能在上面获得源代码和文档。同时因为数据库结构简单,系统源代码也不是很多,也适合想研究数据库系统开发的专业人士 。

(3)Qt

Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。Qt是面向对象语言,易于扩展,并且允许组件编程。其优点是:

面向对象:

Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为signals/slots的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。

丰富的 API,Qt包括多达 250 个以上的 C++ 类,还提供基于模板的 collections, serialization,file,I/O device,directory management,date/time 类。甚至还包括正则表达式的处理 功能。

支持 2D/3D 图形渲染,支持 OpenGL,大量的开发文档,XML 支持,Webkit 引擎的集成,可以实现本地界面与Web内容的无缝集成。但是真正使得 Qt 在自由软件界的众多 Widgets (如 Lesstif,Gtk,EZWGL,Xforms,fltk 等等)中脱颖而出的还是基于 Qt 的重量级软件 KDE。

第2章 理论基础知识

2.1软件工程概述

2.1.1 软件工程的基本原理

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量,这就是软件工程[3]。

下面简要介绍软件工程的基本原理:

(1)用分阶段的生命周期计划严格管理

这条原理意味着,应该把软件生命周期划分成若干个阶段,并相应的制定出切实可行的计划,然后严格按照计划对软件的开发及维护工作进行管理。

(2)坚持进行阶段评审

在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的原则。

(3)实行严格的产品控制

在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。

(4)采用现代程序设计技术

实践表明,采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。

(5)结果应能清楚的审查

为了提高软件开发过程可见性,更好的进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚的审查。

(6)开发小组人员应少而精

(7)承认不断改进软件工程实践的必要性

不仅要积极主动地采用新技术,而且要注意不断总结经验。

2.1.2 生命周期各个阶段

一般来说,软件生命周期由软件定义、软件开发和软件维护三个阶段组成。每个时期又进一步划分成若干个阶段,软件定义包括问题定义、可行性研究、需求分析,软件开发包括总体设计、详细设计、编码和单元测试。软件定义阶段主要解决的是软件必须做什么,是否可行等问题,而软件开发则先是从如何解决这个问题到具体实现该软件,在细化到具体模块的步骤。

2.2 数据库系统概述

2.2.1 数据库系统[4]

数据库系统是管理大量的、持久的、可靠的、共享的数据的工具。数据库系统中的数据是高度结构化的,即数据库不仅要考虑记录内的数据项间的联系,还要考虑记录之间的联系。数据模型主要是指描述这种联系的数据结构形式。在数据库的发展史上,最有影响的数据库模型有这样几种:层次模型、网状模型和关系模型[4]。

2.2.2 数据库管理系统

数据库管理系统(DBMS)是一个由外模式、概念模式和内模式组成的多级系统结构,为了定义各级的模式,需要一组软件提供相应的定义工具。数据库为了保证存储在其中的数据的安全和一致,必须有一组软件来完成相应的管理任务,这组软件就是数据库管理系统,简称DBMS。DBMS的功能随着系统的不同而不同,但是,一般来说,它应该包括以下几方面内容:

(1)数据库描述功能

定义数据库的全局逻辑结构、局部逻辑结构和其各种数据库对象。

(2)数据库管理功能

包括系统配置与管理、数据存取与更新管理、数据完整性管理和数据安全性管理。

(3)数据库的查询及操纵功能

该功能包括数据库检索和修改。

第3章 需求分析

3.1产品任务

3.1.1目标

  1. 是为了开发一种可以方便消费者点菜,更人性化,贴心的点菜系统。
  2. 系统界面友好,功能完善,既便于顾客查看、点菜,又利于酒店管理。

3.1.2定位

适用于中高档餐厅、酒店、酒楼等餐饮企业。

3.1.3前景

信息时代的高速发展要求劳动密集型产业向科技密集型产业转型,特别是与百姓生活密切相关的餐饮行业等服务业。但是,当前餐饮业依旧延续了传统人工管理模式,此管理模式效率低下,严重阻碍了餐饮业的发展。鉴于这种状况,基于电子信息技术的电子管理模式有极大的发展空间。该系统就是其中的一种。

3.1.4用户角色分析

客户:客户是该系统的主要使用者,操作简单,无需进行繁琐的数据输入操作。对客户的计算机系统使用技能无任何要求,识字即会使用。

管理人员:作为酒店管理人员在使用该系统时也无需进行繁琐操作,只要熟悉管理流程,稍加培训即可上岗。

3.1.5假定和约束

台号:自001开始,上限为255。

优先级:分为高、中、低三个优先级别,分别用0、1、2来表示。

菜品编号:用四位数字表示。自0001开始。

菜品状态:分为两个状态:未完成,已完成。

桌号状态:分为两个状态:可使用,不可使用。

菜品备注:分为七个状态:无,加辣,微辣,无辣味,不加蒜,不加香菜,不加花椒。

3.1.6开发环境及技术

系统的开发环境:

数据库:Sqlite3

操作系统:服务器:Windows xp;

客户终端、厨房终端:Linux 2.6.32

硬件环境:客户终端、厨房终端:MINI2440;

服务器:pc机

编译环境:Qt 4.6.2、arm-linux-gcc 4.3.2。

系统技术:ZigBee实现无线通讯。

3.2用户功能需求

3.2.1系统组成

该系统由服务器端,手持端,厨房端外接ZigBee来实现无线通讯而构成,该网络拓扑图如图3.1。

图3.1 网络拓扑图[5]

3.2.2手持客户端子系统

图3.2为客户端流程图,该模块有以下功能:

初始化菜单:服务员终端开机后,通过无线接收模块从服务器数据库下载并初始化菜谱。

开台:在客户坐定后,服务员发送桌号服务端,进行开台操作。

点菜:开台后记录客户点菜信息并发送至服务器。

加菜:选择需要加菜的台号,并加入客户需要点的菜发送至服务器。

退菜:选择需要退菜的台号,选择用户需要退订的菜,等待服务器返回信息。

催菜:选择需要催菜的台号及需要催的菜,发送至服务器。

结账:向服务器发送当前需要结账的台号并接收服务端发送的账单显示。

发送菜单:把顾客点所菜的编号以及点菜时间串分条发送至服务器。

图3.2 客户端流程图

3.2.3服务器端子系统

图3.3为服务器端流程图,该模块有以下功能:

登录:服务器端的用户账号和密码建立对应的服务,经服务器检验,确定是否有效,如果密码或用户账号无效则登录失败服务器拒绝提供进一步的服务直到验证通过。

用户管理:管理员用户拥有用户管理权限,其操作包括用户的添加、删除、修改信息(权限(收银员(前台管理员)和管理员)、密码、用户名、性别、联系方式、身份证号)。

菜品管理:管理员用户拥有菜品管理权限,其操作包括添加菜品,删除菜品,修改菜品的信息(菜品的单价、菜品菜品菜品名、状态、所属类别,备注)以及设定厨师个数。

客户端初始化:包括服务员终端初始化(菜品列表中的菜品的编号、名称、单价、菜品所属类型、菜品状态、备注)和厨房终端初始化(查询服务器的是否菜可做,有菜则发送)。

处理客户菜单信息:将对应的台号开台,然后建立对应台号的消费表,并将数据按顺序插入未完成菜的表单中。

处理加菜信息:将信息模块发送的内容信息分割得到需要处理信息,检查未完成菜的表单中是否还有对于这桌的菜,如果有的话则将这个菜的优先级改为默认,否则优先级改为1,,插入未完成菜的表单中返回点菜受理信息。

处理退菜信息:前期信息处理同加菜处理,提取信息后检查当前需要退的菜是否在未完成菜的表中,如果还在未未完成的菜的表单中则从表单中删除此菜返回退才成功,其它则返回退菜失败信息。

处理催菜信息:检查对应的桌菜单是否有这个菜,如果有或者已经完成则将对应的菜的优先级调至催菜状态返回催菜成功,如果没有这个菜则返回催菜失败。

厨房信息处理:服务信息分两类,首先是菜单更新信息,接收到此类信息则服务器将已经准备好的需要制作的菜单发送至厨房,其次是厨房的对于菜品原材料缺失信息的返回,接收到信息后将对应的菜谱的表单中状态改变为缺菜,并向所有服务员终端发送对应菜品缺失的消息。

菜选取处理:从未完成的菜的表中选取10个优先级大于0的菜,如果菜未满10个则按时间序列选择较小时间序列的菜发送至厨房每发送一条则判断菜的所属桌号,加入对应的桌号的已完成表单中。

结算:服务器收到服务员端的针对某一桌的结账信息后,对应的结算的桌号的消费单中所有已经完成的菜品统计添加相应的交易号,显示或打印账单,提示当前登录的空闲的收银员收银,结算完毕后将账单数据移至当日详细营业历史表并加上对应的交易号,删除当前桌的消费表。

信息接收块:将接受到得数据进行分割,获取用户的用户编号操作命令字及操作内容的信息并分类调用相关处理模块进行对应的数据处理。

信息发送块:区分消息发送的用户并加上对应的命令字以及操作信息发送至对应的服务终端。

图3.3 服务器端流程图

3.2.4厨房端子系统

图3.3为服务器端流程图,该模块有以下功能:

信息接受:接受从服务器传过来的菜单信息。

菜单更新处理,做完一道菜之后,查询当前厨房未做菜和厨师人数比较如果菜数小于厨师数则请求服务器发送新的表单。

缺菜处理:当前菜单中的菜缺失材料或其它情况不能做出则返回对应菜的缺菜信息。

图3.4 厨房端流程图

3.3可行性分析

任何一个课题在开始设计前,进行可行性研究是必不可少的一个环节。可行性研究的目的不是解决问题,而是确定问题是否值得去解决。所以我们就要通过对课题的可行性研究,来判断出原定的系统目标和规模是否现实,以及系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。

针对该系统,从下面三个角度进行了可行性分析:

3.3.1技术可行性

技术可行性研究是研究现有的技术条件能否顺利完成开发工作,硬、软件配置能否满足开发的需要等等。系统的开发环境:服务器端:windows xp操作系统,sqlite3数据库,内存1,4G;开发工具QT,运用技术ZigBee无线通讯,由此看出,系统对软硬件要求均不高,使得系统不存在技术上的阻碍。

3.3.2经济可行性

经济可行性研究的目的是实行系统能达到以最小的开发成本取得最佳的经济效益。从阿里巴巴活的数据可得:市场上大多数PDA价格为1000元左右。对于酒店来说,系统提高了运行效率,这点经济支出完全造成不了负担,所以在经济上来说是可行的。

3.3.3操作可行性

酒店无线点菜系统的开发,是在实际调研后,根据实际的工作过程进行的,因此它完全符合酒店工作和顾客消费者的各种特定要求。一旦系统开发成功并调试运行后,在实际的应用方面是行得通的。

系统的开发充分遵循用户的操作习惯,使得用户在使用时,只要自如的按习惯进行操作,即可轻松完成工作。

因此,从操作角度衡量,系统的开发方案也是可行的。

3.4非功能需求

3.4.1软硬件需求环境

客户手持终端系统环境为Linux 2.6.32,应用服务器为pc机,运行环境为windows xp,数据库为Sqlite 3,运行环境为Windows xp。

3.4.1安全性

不可接触强电磁场,不可触水,所处环境温度在摄氏50度以下,摄氏零度以上。

3.4.2时间响应性

响应性:所有选菜响应时间一般不超过5S。

更新处理时间:所有提交的新的菜品的数据一般在3S内响应。


4章 概要设计

4.1系统概括

酒店无线点菜系统将由三部分组成:置于收银台的服务端,置于厨房的厨房终端,服务员手持的客户终端。该系统间关系如图4.1:

图4.1 系统关系结构示意图

4.2系统基本设计

客人进店之后选定可使用的桌子后,服务员使用手持终端发送"开台"请求。完成开台之后,手持终端将客户所点菜品的具体信息(菜品编号)发送至服务端,服务端再将终端所发送的菜单进行汇总,按时间进行排序并发送规定数量的菜品信息(根据厨师数目进行确定)至厨房终端,同时将发送至厨房的菜品条目分开保存至对应桌号的账单表中,删除未做完菜单汇总表中已发送至厨房的菜的条目,此后,服务端根据厨房终端反馈的菜品完成状态确定是否进行菜单的新一轮发送。客户在用餐时,若有需要,手持终端可发送加菜、退菜、催菜三类请求。服务端通过不同方式处理这三类请求,查询并更改相应菜单记录。客户用餐完毕之后,由手持终端发送结账通知至服务端,服务端此时取出菜单记录并完成金额结算及销售记录保存。对于酒店方而言,在进行酒店管理时,可通过管理用户进行操作用户的添加、删除以及权限的管理,或是对菜谱的添加、删除、菜价变更、厨师数目进行设置。

要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求手持终端和厨房终端的界面简单明了,易于操作,服务端程序利于维护。其功能模块图如图4.2所示:

图4.2 系统功能模块图

4.3客户端移植的环境配置[6]

客户端系统最终从windows xp下要移植到S3C2440开发板上。其配置环境如下:

先准备好两个源代码包

tslib-1.4.tar.bz2,触摸屏的源码包,

qt-everywhere-opensource-src-4.6.2.tar.gz,QT的源码包,把两个包下载到 Redhat Linux 中,在Redhat Linux 中配置,编译,安装到 /usr/local/arm/qte/tslib 目录

1)./autogen.sh

2)./configure --prefix=/usr/local/arm/qte/tslib

       --host=arm-linux

         ac_cv_func_malloc_0_nonnull=yes

3 )make

4 )make install

上面的安装完后,在Redhat 里就会生成/usr/local/arm/qte/tslib这个目录,

在/usr/local/arm/qte/tslib里还有/etc   /lib    /bin   /include  四个目录,

是后面的触摸屏移植有用的。

把qt-everywhere-opensource-src-4.6.2.tar.gz 复制到Redhat Linux 中[7]。

(1)配置QT

./configure -prefix /usr/local/arm/qte/4.6.2

-no-qt3support \

-qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg \

-no-openssl -no-cups -no-iconv -embedded arm \

-xplatform qws/linux-arm-g++ \

-qt-mouse-tslib -little-endian \

-I/usr/local/arm/qte/tslib/include \

-L/usr/local/arm/qte/tslib/lib \

-nomake examples -nomake demos

(2)编译QT

make

(3)安装QT

make install

也会在RedHat Linux 中生成/usr/local/arm/qte/4.6.2目录,这个目录里的lib 是要移植到开发板上去的。bin目录里面是一些执行文件,主要有qmake工具,Qmake 工具是用来编译 Qtcreate软件所写的工程。例calcultor目录 ,最后可以生成arm平台执行的程序calcultor 。为了编译QT项目,需要把bin目录添加到环境变量路经里去[8]。

设置开发库路径

export PATH=/usr/local/arm/qte/4.6.2/bin:$PATH

测试:

从windows 复制一个qtcreate生成的项目包到Redhat中,执行下面三条命令,可生成arm平台执行的程序

qmake –project

qmake

make

(4)移植到开发板[9]

1)把/usr/local/arm/qte目录打包,用U盘复制到开发板上, 然后解压到开发板的 /usr/local/arm/目录下.

2) 修改 /etc/profile ,

添加环境变量

export TSLIB_ROOT=/usr/local/arm/qte/tslib

export QTEDIR=/usr/local/arm/qte/4.6.2

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/event0

export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal

export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts

export POINTERCAL_FILE=$TSLIB_ROOT/etc/pointercal

export QWS_MOUSE_PROTO=tslib:/dev/event0

export LD_LIBRARY_PATH=$TSLIB_ROOT/lib

export LIBRARY_PATH=$TSLIB_ROOT/lib:$QTEDIR/lib

3)执行 source /etc/profile 命令生效

4)把开发板中usr/local/arm/qte/tslib/etc/ts.conf的

# Uncomment if you wish to use the linux input layer event interface

# module_raw input

中module_raw input前面的 # 去掉就可以了,一定要顶格写,不然会有段错误。

5)运行/Tslib/bin/ts_calibrate获得校准文件/etc/pointercal

6)运行/Tslib/bin/ts_test 测试触摸屏,至此 Tslib可以测试通过。

7)运行

 # ./calcultor -qws

8)字体的问题[10] 

文泉驿字体.rar 然后放入到 相应的qt字体路径下/usr/local/arm/qte/4.6.2/lib/fonts

然后在main.cpp, main函数中加入

QFont font("wenquanyi",12,QFont::Bold);

a.setFont(font);

重新编译 calcultor目录

4.4通讯接口设计

手持终端、厨房终端与服务终端之间通过ZigBee发送消息的方式进行传输,服务端通过sqlite提供的接口进行数据操作、通过函数调用的方式进行模块之间的调用。手持终端、服务终端通过Qt提供的API接口进行信息操作。

ZigBee数据传输格式定义为:命令模式+信息+结束符,其中命令模式包括:01、初始化;02、开台;03、点菜;04、加菜;05、退菜;06、催菜;07、结算;08、厨房请求菜单;09、厨房反馈退菜;全局结束符为:/$WOS

其中,手持终端传输至服务端的信息包括菜品编号、桌号以及点菜时间,这部分的数据长度为9个字节,传送的数据总长度为15个字节;服务端传输至手持终端的信息包括菜品名称、菜品价格、菜品编号,这部分的数据长度为16个字节,传送的数据总长度为22个字节;服务端至厨房终端的信息包括菜品名称以及桌号,这部分的数据长度为11个字节,传送的数据总长度为17个字节。

4.5数据列表

(1)用户管理表:对管理员和收银员的权限管理,见表4.1。

表4.1 用户管理表

列名

数据类型

长度

备注

姓名

varchar

12

中文显示用户名

权限

varchar

8

管理员,收银员

密码

varchar

14

长度为6到12位,由数字和字符组成

性别

varchar

6

男,女

联系方式

varchar

14

数字组成

省份证号

varchar

20

由18位字符组成的字符串表示

(2)酒店餐桌状态表:对酒店餐桌状态的管理,见表4.2。

表4.2 酒店餐桌状态表

列名

数据类型

长度

备注

桌号

char

1

桌号为1到255

状态

char

1

0可使用(默认状态)1不可用

(3)未完成的菜品表:从客户端传过来的未炒的菜品的管理,见表4.3。

表4.3未完成的菜品表

列名

数据类型

长度

备注

桌号

char

1

1到255

菜品编号

short

2

菜品编号1到999

菜品名

varchar

12

英文显示

优先级

char

1

0普通(默认)1催菜2急需做的菜

菜品备注

char

1

约束里著名

点菜时间

datatime

8

如12:03:50

菜品状态

char

1

0未完成(默认)1完成

(4)对应桌的账单表:对应桌的消费菜单记录,用以结账,见表4.4。

表4.4对应桌的账单表

列名

数据类型

长度

备注

桌号

char

1

1到255

菜品编号

short

2

1到999

菜品名

varchar

12

英文显示

点菜时间

datetime

8

如12:03:50

菜品单价

float

4

精确到小数点后1位

(5)酒店菜谱列表:酒店的菜单,见表4.5。

表4.5酒店菜谱列表

列名

数据类型

长度

备注

菜品编号

short

1

1到999

菜品名

varchar

12

英文显示

菜品单价

float

4

精确到小数点后1位

菜品状态

char

1

0未完成(默认)1完成

(6)总的历史营业表:所有顾客在酒店消费的总记录,用以计算酒店的经营业绩,见表4.6。

表4.6总的历史营业表

列名

数据类型

长度

备注

交易号

varchar

20

由时间加上桌号组成的

菜品编号

short

2

菜品编号1到999

菜品名

varchar

12

英文显示

菜品单价

float

2

精确到小数点后1位

所属桌号

char

1

1到255

点菜时间

datetime

8

如12:03:50

收银员姓名

varchar

12

中文显示

4.6E-R图设计

E-R图设计是继数据列表之后数据库设计中的一个重要阶段,该系统主要的E-R图如图4.2,图4.3,图4.4所示:

图4.2 顾客与桌子E-R图

图4.3 顾客与点菜表E-R图

图4.4 顾客,收银员,结账表E-R图

4.7异常处理设计

0当以下信息出现时,系统会给出错误信息提示:

(1)输入台号为空时,要求用户重新输入。

(2)输入菜品编号不存在时,操作无效,要求用户重新输入。

(3)用户管理中,删除不存在的用户时,操作无效,退出删除界面。

(4)用户登录时,账号密码不匹配时,要求用户重新输入。

.

 5章 详细设计

5.1功能详述

5.1.1无线点菜系统客户端功能

初始化菜单:服务员终端开机后,通过无线接收模块从服务器数据库下载并初始化菜谱

开台:在客户坐定后,服务员发送桌号服务端,进行开台操作

点菜:开台后记录客户点菜信息并发送至服务器

加菜:选择需要加菜的台号,并加入客户需要点的菜发送至服务器

退菜:选择需要退菜的台号,选择用户需要退订的菜,等待服务器返回信息

催菜:选择需要催菜的台号及需要催的菜,发送至服务器

结账:向服务器发送当前需要结账的台号并接收服务端发送的账单显示

发送菜单:把顾客点所菜的编号以及点才时间串分条发送至服务器

5.1.2无线点菜系统服务端功能

登录:服务器端的用户账号和密码建立对应的服务,经服务器检验,确定是否有效,如果密码或用户账号无效则登录失败服务器拒绝提供进一步的服务直到验证通过

用户管理:管理员用户拥有用户管理权限,其操作包括用户的添加、删除、修改信息(权限(收银员(前台管理员)和管理员)、密码、用户名、性别、联系方式、身份证号)

菜品管理:管理员用户拥有菜品管理权限,其操作包括添加菜品,删除菜品,修改菜品的信息(菜品的单价、菜品菜品菜品名、状态、所属类别,备注)以及设定厨师个数

客户端初始化:包括服务员终端初始化(菜品列表中的菜品的编号、名称、单价、菜品所属类型、菜品状态、备注)和厨房终端初始化(查询服务器的是否菜可做,有菜则发送)

处理客户菜单信息:将对应的台号开台,然后建立对应台号的消费表,并将数据按顺序插入未完成菜的表单中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值