基于Linux餐厅点菜系统的设计与开发毕业论文.doc_第1页
基于Linux餐厅点菜系统的设计与开发毕业论文.doc_第2页
基于Linux餐厅点菜系统的设计与开发毕业论文.doc_第3页
基于Linux餐厅点菜系统的设计与开发毕业论文.doc_第4页
基于Linux餐厅点菜系统的设计与开发毕业论文.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

哈尔滨远东理工学院学士学位论文基于Linux餐厅点菜系统的设计与开发毕业论文目录摘 要IAbstractII第1章 绪 论11.1 选题目的和意义11.2 国内外综述11.3 论文研究内容2第2章 相关知识概述32.1 系统开发环境32.2 系统的结构42.3 应用的相关技术52.3.1 QT图形界面52.3.2 SQLite数据库52.3.3 Linux系统支配的TCP/IP协议62.4本章小结8第3章 系统分析及设计93.1系统需求分析93.1.1功能需求93.1.2性能需求93.2系统开发环境103.3系统总体功能模块103. 4数据库结构设计123.5本章小结12第4章 软件设计134.1 数据库表结构设计134.2 各功能模块的详细设计134.2.1 服务器管理模块134.2.2 前台管理模块144.2.3 顾客点菜端管理模块154.2.4 后厨管理系统204.2.5 数据库管理模块204.3本章小结22第5章 系统测试235.1测试方法与原则235.1.1 黑盒测试235.1.2 测试基本原则235.2 系统测试235.3 测试小结26结 论27致 谢28参考文献29附录A30附录B35-II-第1章 绪 论1.1 选题目的和意义面对餐饮业多元化的经营现状,经营的特色、规模、出品这些因素的不同,带给餐饮企业的则是不同的标准和工作流程和方法,面对着这解决方法不一的情况,对人才的专业化程度的要求也相应地提高了,然而在国内市场上,餐饮业人才供应不足,在这样的两难情况下,信息系统得出现暂缓了这一紧张局面。首先,餐饮管理信息系统不是单纯的用于结帐计算的工具,它有着科学的、标准的管理体系,它是通过对目前餐饮市场的具体情况科学的调研分析后设计而成的,它能够针对中餐因其菜品的多样化和特色化的服务很难实现标准化管理,使中餐企业的成本控制很难实现这些问题给与解决。其次,餐饮管理信息系统能够给出具体的相应的符合企业自身要求的较科学的标准化管理流程,这暂时缓解了专业人才的需求,通过使用该系统就能完成专业人员所要做的事。最后,餐饮管理信息系统可以针对企业的经营现状而做出科学的分析,使得企业对市场的应变能力得到了提高,从而通过餐饮管理信息系统来实现强化管理、降低成本、堵漏节流等作用。更好的完善企业的经营管理,提高企业自身的竞争实力。另一方面,基于ARM和Linux的嵌入式系统,具有成熟的嵌入式硬件结构和丰富的开放软件资源,优良的性能和广泛的市场定位,这无疑对开发工作和学习研究是一个重大帮助;在GUI(图形用户界面)的选用上,使用基于C+语言面向对象编程的应用程序开发软件库Qt,它汇集了丰富的C+类提供开发应用程序用户界面所需要的全部内容,具有优良的跨平台性能和丰富的API函数及开发文档。另外,当前量产的普通PDA和PC机硬件上已经基本满足点菜需求,使自行研究的专用硬件设备不再具有明显的成本优势,为此,本课题集合嵌入式Linux和Qt开发应用等技术,以程序软件的通用性和易用性为方向,构造能够方便移植的软件。提高餐饮业的服务质量,并为自身研究学习嵌入式系统和GUI应用开发提供一个良好的平台。1.2 国内外综述餐厅点菜系统代表着当今餐饮业解决方案中最尖端的领先科技,它集网络通信技术与移动电脑终端技术与一身,此高端技术应用在餐饮行业中,即使在美国也是2001年才在洛杉矶的一家高档餐厅中诞生;国内于2002年3月份方有一例高档的餐馆在上海露面,开中国餐饮管理真正数字化之先河,在餐饮业轰动一时。自此,点菜系统市场上豪杰并起,全面促进了餐饮业信息化管理的普及和发展。目前,国内已经有不少公司开发出电子点菜系统,例如上海工理电子有限公司的点菜通、餐饮通等,北京辰森计算机系统有限公司的手持点菜宝等。有些大型的餐饮企业已经采用了这两个公司的产品,例如,花雨大酒店、上海美林阁等采用了上海工理电子有限公司的点菜通或餐饮通;向阳渔港集团、中国全聚集团、四川文杏大酒楼则采用了北京辰森计算机系统有限公司的手持点菜系统。但是由于成本等原因使电子点菜系统的餐馆还比较少,市场需求很大。随着技术的进步及餐饮业的激烈竞争,电子点菜系统将会越来越普遍,并越做越好。市场上出现的点菜系统都是作为餐厅信息化管理系统的一部分出现的,它们除了实现基本的点菜功能外,为了便于客户及管理者的使用,还添加了许多其他的功能,例如,查询当前餐馆的资源使用情况,记录营业历史,当前工作状态等。由此可见,开发餐厅点菜系统具有重大的意义。首先,提高运营效率与降低运营成本,使用餐厅点菜系统可以加快点菜速度,减少人力资源的投入,避免跑、冒、漏;其次,提升餐厅品牌与形象,餐厅点菜系统是一个高科技产品,它代替传统的纸笔式点菜方式给人一种高贵的感觉;最后,营造一个安静、舒服的就餐环境,传统的餐厅点菜方式在某些环节中出现大声喧哗的场面,餐厅点菜系统则可以避免这类情况的发生。如今开源的嵌入式Linux操作系统已经发展的非常成熟,其性能并不亚于很多商业操作系统,而且,它支持的上层软件非常多,数据库方面的有MySQL、Sqlite等,用户图形界面系统有Qt、MiniGUI和Microwindows等。因此,构造一个基于嵌入式Linux的点菜系统在技术上来说已经不是困难的事。1.3 论文研究内容本文设计并实现了一个功能简单的餐厅点菜系统,基于该系统可以容易过渡到实用的点菜系统。在该系统的实现过程中设计到许多技术,其中主要有嵌入式技术、数据库技术、用户图形界面编程技术等。餐厅点菜系统一般都涉及很多数据,而且还要对数据进行各种处理,因而绝大部分餐厅点菜系统都用数据库管理系统来管理数据。数据库管理系统一般依赖与某种操作系统,因此,也要选择一个合适的操作系统。另外,为了方便用户的使用,还要设计一个人性化的图形界面。餐厅点菜系统中,管理数据的地方与使用数据的地方往往不在同一个站点上,需要用到计算机网络将二者联系起来。在本文设计的系统中使用了MySQL来管理数据,操作系统选用了Linux,用户图形界面引入了Qt。本课题通过研究现有的电子点菜系统的解决方案,以当代广泛应用的Linux系统、Qt图形界面、SQLite数据库、系统支持的TCP/IP网络通信协议来实现的点菜系统的终端。具体包括以下内容:1Linux系统开发平台的构建:使用是全球应用最广泛的Red Hat Linux,建立基本的开发环境,建立编译工具,安装用于程序开发的Qt,用于数据管理的SQLite3。2.点菜终端程序设计:首先利用Qt设计器规划点菜终端的程序的大致界面,然后遵循Qt编程一般规则编写代码,主要为主窗口类的实现,实现开台、点菜、加菜、删菜等功能,并在主程序中添加国际化和中文支持,编译后进行测试。3数据库的设计:首先利用Qt设计器规划数据库管理程序的大致界面,然后遵循Qt编程一般规则编写代码,主要为主窗口类的实现,数据库的管理功能,包括删除菜单列表、添加菜单列表,查询菜单等功能,并在主程序中添加中文支持。第2章 相关知识概述本系统主要运用到的开发系统环境是Linux系统,选择的是RedHat 企业版5,该系统是采用C/S(客户端/服务器)架构开发的,其中运用到的技术有QT图形界面的开发、SQLITE3数据库的开发及socket编程。2.1 系统开发环境Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。1.Linux操作系统概述:Linux操作系统是UNIX操作系统的一种克隆系统。Linux于1991年8月在Usenet新闻组comp.os.minix上正式发布(Free minx-like kernel sources for 386-AT)。其创始人是林纳斯本纳第克特托瓦兹(Lines Benedict Tornados),出生于芬兰赫尔辛基市。他毕业于赫尔辛基大学计算机科学系。早期的Linux1.0版本内核发布于1994年3月14日,两年之后2.0版本发布,此时,Linux功能已经非常强大,只是界面设计不是很理想。Linux被大众所关注是在1998年3月,当Netscape承诺在GNU计划的GPL(General Public License,通用公共许可证)的一个修订版本的基础上公开Netscape Communicator Internet套件的源代码的时候。同年7月,世界上最大的两家关系数据库厂商Informix和Oracle宣布把他们的数据库产品移植到了Linux上。一个月后,Intel和Netscape公司购买了Linux发布商中的领头羊Red Hat公司的少量股票,专项资金投入了Linux世界。次年,Linux成为了IT市场的年青分子,随着RedHat和Valium成为上市的Linux公司,Linux得到了软硬件厂商的投资支持,很快便众所周知,公众对Linux的兴趣与日俱增,相关的大众媒体也蜂拥而至,几乎每周都有与Linux相关的消息发布,此时的Linux已经不仅仅是爱好者的玩具了。如今Linux已经是软件开发人员的首选开发环境,其发行版超过了三百个,最普遍被使用的发行版有大约十二个,例如Bantu,RedHat,Defiant,Fedora等。通常来讲,一个Linux发行版包括Linux内核,将整个软件安装到电脑上的一套安装工具,各种GNU软件,其他的一些自由软件,在一些特定的Linux发行版中也有一些专有软件。发行版为许多不同的目的而制作,包括对不同计算机结构的支持,对一个具体区域或语言的本地化,实时应用,和嵌入式系统。Linux主要作为Linux发行版(通常被称为distort)的一部分而使用2. Linux操作系统特点:Linux是一款开放源代码的操作系统。用户可以通过任何途径免费获得它的源代码,并可以任意修改其源代码。这是其他的操作系统所做不到的。由于它的开放性使无数程序员积极的参与了Linux的修改、编写工作,使得Linux吸收了无数程序员在根据自己的兴趣和灵感对其所做的精华改变,并不断壮大。Linux支持多任务、多用户。多任务使得Linux可以同时独立运行多个程序而互不影响,为大型的多任务工程提供保障。多用户使得各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。Linux提供了先进的网络支持。它的网络功能和其内核紧密相连,用户可以轻松实现网页浏览、文件传输、远程登陆等网络工作。并且可以作为服务器提供WWW、FTP、E-Mail等服务。Linux完全运行于保护模式,其中有对读、写进行权限控制、审计跟踪、核心授权等技术。Linux以它较高的稳定性在网络服务器上利于不败之地。Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,业界归纳为什么Linux嵌入式操作系统发展如此之快的三大原因是:第一,Linux在嵌入式系统所需的实时性、电源管理等核心技术不断发展,成熟可期。第二,国际标准组织OSDL、CELF等,持续建立嵌入式Linux相关标准,有效解决版本分歧与兼容性问题。第三,业界主导组织、开发厂商等不断推出嵌入式Linux相关开发工具、维护系统。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。Linux支持数十种文件系统格式。普通文件,纯文本文件,二进制文件,数据格式文件,目录,连接文件,设备与设备文件,块设备文件,字符设备文件,套接字和管道等。采用先进的内存管理机制,更加有效的利用物理内存。主要有页面、连续内存区管理和非连续存储区管理机制。3.Linux的基本思想:Linux的基本思想有两点,第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。2.2 系统的结构传统的C/S体系结构常采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统开发不同版本的软件,加之产品的更新换代快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。目前,C/S 结构的基本原则是将计算机任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成DBMS的核心功能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。C/S结构的优点是能充分发挥出客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度非常快。缺点主要反映以下3个方面: 1.只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。 2.客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。3.对客户端的操作系统一般也会有限制。可能适应于Win98, 但不能用于win2000或Windows XP。或者不适用于微软新的操作系统等等,更不用说Linux、Unix等。2.3 应用的相关技术本系统应用的相关技术主要有QT的图形界面的开发、数据库的SQLITE的应用、还有运用到了TCP/IP协议。2.3.1 QT图形界面1.Qt概念:Qt是诺基亚开发的一个跨平台的C+图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。QT是完全面向对象的,很容易扩展,并且允许真正地组件编程。所以说QT的进步发展将会推进诺基亚桌面等方面的大幅度进步。2.Qt的特点:Qt是一款面向对象的图形界面开发工具。Qt 的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简单。它具有丰富的API。Qt包括多达 250 个以上的 C+ 类,还提供基于模板的 collections,serialization,file,I/O device,directory management, date/time 类。甚至还包括正则表达式的处理 功能。Qt支持 2D/3D 图形渲染,支持 OpenGL。真正使得 Qt 在自由软件界的众多 Widgets (如 Lesstif,Gtk,EZWGL,Xforms,fltk 等等)中脱颖而出的还是基于 Qt 的重量级软件 KDE。3.QtCreator:在发布Qt 4.6 的同时,作为Qt开发跨平台 IDE 的 Qt Creator 也发布了更新版本。Qt Creator 1.3 和 Qt 4.6共同构成的 Qt SDK,包含了开发跨平台应用程序所需的全部功能。Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处:提供首个专为支持跨平台开发而设计的集成开发环境 (IDE),并确保首次接触Qt框架的开发人员能迅速上手和操作。Qt Creator包含了一套用于创建和测试基于Qt应用程序的高效工具,包括:一个高级的C+代码编辑器 上下文感知帮助系统 可视化调试器 源代码管理 项目和构建管理工具。2.3.2 SQLite数据库SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月,至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。SQLite的具有以下特性:1.ACID事务;2.零配置无需安装和管理配置;3.储存在单一磁盘文件中的一个完整的数据库; 4.数据库文件可以在不同字节顺序的机器间自由的共享;5.支持数据库大小至2TB; 6.足够小,大致3万行C代码, 250K;7.比一些流行的数据库在大部分普通数据库操作要快; 8.简单,轻松的API;9.包含TCL绑定,同时通过Wrapper支持其他语言的绑定。;10.良好注释的源代码,并且有着90%以上的测试覆盖率;11.独立:没有额外依赖;12.Source完全的Open,你可以用于任何用途, 包括出售它; 13.支持多种开发语言,C,PHP, Perl, Java, C#,Python。基于SQLITE有诸多特性,我在设计该点菜系统时应用的数据库选择了它,它虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,同时还支持事务处理功能等待。2.3.3 Linux系统支配的TCP/IP协议TCP/IP 是一个网络协议族的名字,协议是所有软件产品必须遵守的、能够保证各种软件产品能够正确通讯的规则。协议还定义了每一部分数据块怎样管理所传输的数据。精确一点说,一个协议定义了两个应用程序或是计算机之间能够进行互相通讯,对于其中的每一个(应用程序或计算机)都保证使用同样的标准。TCP/IP 代表传输控制协议/网络协议,它是做为软件的网络组成部件而设计的。每个TCP/IP 的协议都有他专门的工作,比如万维网(WWW),发送电子邮件(E-mail),传输文件(Ftp),提供远程登陆服务等。从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。 TCP/IP协议并不完全符合OSI的七层参考模型。OSI是传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。由于ARPNET的设计者注重的是网络互联,允许通信子网(网络接口层)采用已有的或是将来有的各种协议,所以这个层次中没有提供专门的协议。实际上,TCP/IP协议可以通过网络接口层连接到任何网络上,例如X.25交换网或IEEE802局域网。TCP/IP协议的具有以下3个特点:1.对数据可靠性的要求:对数据要求高可靠性的应用需选择TCP协议,如验证、密码字段的传送都是不允许出错的,而对数据的可靠性要求不那么高的应用可选择UDP传送。2.应用的实时性:TCP协议在传送过程中要使用三次握手、重传确认等手段来保证数据传输的可靠性。使用TCP协议会有较大的时延,因此不适合对实时性要求较高的应用,如VOIP、视频监控等。相反,UDP协议则在这些应用中能发挥很好的作用。3.网络的可靠性:由于TCP协议的提出主要是解决网络的可靠性问题,它通过各种机制来减少错误发生的概率。因此,在网络状况不是很好的情况下需选用TCP协议(如在广域网等),但是若在网络状况很好的情况下(如局域网等)就不需要再采用TCP协议,而建议选择UDP协议来减少网络负荷。TCP/IP协议的运作机制是IP层负责接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层-TCP层,相反,IP层也把从TCP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。高层的TCP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。 如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向上传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。基于TCP/IP有诸多特点,它的数据可靠性刚好符合本系统设计的要求数据的安全性,同时它具有很好的网络的安全性,保证餐厅点菜系统能够很好的运行,所以我在设计该系统的时候选择了该协议来实现通信。TCP/IP协议的实现的流程图如下图2-1所示。客户端服务器端socketsocketrecv/recvfromsend/sendtoclosesend/sendtoclosebindlistenacceptconnectrecv/recvfrom图 2-1 TCP/IP协议流程图 2.4本章小结本章主要详细介绍了该点菜系统应用的相关的技术,主要介绍了开发的系统环境Linux系统和用到的数据库SQLITE3,运用到的图形界面开发工具QT,运用到的网络技术TCP/IP协议等概念,并且介绍了相关技术的特点。第3章 系统分析及设计3.1系统需求分析随着局域网技术与电子商务的深入发展,餐厅自助点菜系统也在国内外蓬勃发展,并日益深入到人们的生活当中。餐厅自助自助点菜在国外早已成为一种时尚。餐厅每日消费人数的巨大,自助点菜是一种必不可少的工具,而国内的点菜系统还不成熟 ,所以本课题将设计实现一个餐厅自助点菜系统。本系统根据一般餐厅的需要,分析本系统的业务流程如下:1.服务器负责前台、厨房、数据库管理、点菜终端的通信;2.点菜终端从数据库获取菜品信息;3.前台负责查询餐台的空闲状态和结账并打印账单;4.顾客点菜,并填入数据库;5.服务器接受点菜信息并发送给后厨;6.后厨开始按照菜单信息做菜;7.用户到前台结账;8.结果被显示给用户,顾客结账。3.1.1功能需求用户在客户端点菜,通过局域网传送到服务器,后厨接受从服务器接受到菜单信息,客户在前台结账。同时有个数据库管理界面可以实现菜品信息的管理。根据系统功能的需求,分析了所需要的系统总功能结构如表3-1所示。表 3-1 功能需求名称功能客户端 设置基础信息,更新菜谱,点菜,结账,打印账单;服务器 负责各终端间的通信;3.1.2性能需求本系统性能要求主要是以下5个方面。1系统处理的准确性和及时性:系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足信息处理的需求。由于餐厅自助点菜系统客户端的点菜对于整个系统的功能和性能完成举足轻重。作为客户自助点菜的模块,其准确性很大程度上决定了系统的成败。在系开发过程中,必须保证系统的准确性。2系统的开放性和系统的可扩充性:餐厅自助点菜系统在开发过程中,应该充分考虑以后的可扩充性。例如新增菜品,会员充值等。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成。3系统的易用性:餐厅自助点菜系统是直接面对用户的,而用户往往对计算机并不是非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面。4系统的标准性:系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。例如在开发中使用的操作系统、网络系统、开发工具都必须符合通用标准。如规范的数据库操纵界面、作为业界标准的TCP/IP网络协议及ISO9002标准所要求的质量规范等;同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性。5系统的先进性:目前计算系统的技术发展相当快,做为餐厅管理系统工程,应该在系统的生命周期尽量做到系统的先进。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的工具。3.2系统开发环境本系统是基于Linux系统中Qt来设计前台应用系统的可视化界面,而后台部分数据库的实现采用SQLite3来构建。Linux系统采用了可视化的程序设计,具有面向对象的可视化设计工具,结构化的程序设计语言,提供了易学易用的应用程序集成开发环境,支持多种数据库系统的访问,Linux系统中的Qt提供了可视化的界面。用QtCreator可以动态的调整用户风格图形界面,直到满意为止。3.3系统总体功能模块根据对餐厅点菜系统需要实现的功能进行需求分析,将本系统的前台划分为前台管理,点菜管理,后厨管理,数据库管理,服务器五个功能模块;系统功能模块如图3-1所示。查询查询餐台信息结账打印账单前台管理模块服务器后厨管理模块删菜询问接收菜单做完顾客点菜模块点菜加菜退菜开始 图3-1 系统总功能模块餐厅点菜系统的功能模块概要描述如表3-2所示。表3-2 功能模块描述表名称功能服务器负责前台,点菜终端,后厨终端间的通信;前台终端负责查询餐台空闲信息,顾客结账,并打印账单信息;点菜终端设置基础信息,更新菜谱,点菜,加菜,删菜;后厨终端接收顾客点菜的菜单信息进行做菜;数据库管理负责管理数据库的菜菜品信息;1服务器功能:服务器功能是整个系统的传输通道,是系统的重中之重。当顾客点菜客户端与服务器连接后,可通过此将点菜信息发送到后厨。后厨和服务器连接后,可以将做完的菜发送到服务器,服务器将信息发送到点菜客户端和前台。2前台终端管理:前台是本系统重要组成部分之一。本模块可以查询当前餐台的空闲信息、接收服务器发送过来顾客点菜的消费菜单信息,并打印菜单给客户。细分的功能模块如图3-2。结账前台管理模块查询餐台信息打印账单图3-2 前台终端模块3点菜终端:点菜终端是本系统给顾客的使用的,是本系统的重要组成部分。本模块将用户点菜单菜肴发送到服务器,并将数据信息添加到数据库。细分的功能模块如图3-3所示。选择菜肴功能是将用户选择的菜肴存与表中,用户可以添加与删除。点菜信息发送功能是将用户点菜信息以结构体的形式发送到服务器,并添加到相应的数据库中。点 菜点菜信息发送点菜终端选择菜肴删 菜加 菜图3-3 点菜终端模块4后厨终端:后厨终端从服务器接收到顾客点的菜肴,可以继续接受顾客加菜的菜单、按照菜单做菜,并可以询问菜是否需要退菜。细分功能如图3-4所示。询问删菜做完接收菜单后厨管理模块图3-4 后厨终端模块5数据库管理:数据库管理管理菜单数据库信息,包括删除菜单列表、添加菜单列表,查询菜单等功能。细分数据库管理功能模块如图3-5所示。删除菜单列表功能是将删除不做的菜肴信息。添加菜单列表功能是允许可以添加新的菜肴信息。查询菜单功能是查询是否有哪道菜肴信息。数据库管理模块查询菜谱信息添加菜谱信息删除菜谱信息图3-5 数据库管理模块3. 4数据库结构设计 根据对本系统数据的分析,系统的数据库设计了一个表:菜肴信息表。该表用于存放菜肴的信息,包括菜肴的名字、菜肴的类别、菜肴的价格、菜肴的描述。3.5本章小结本章主要对该系统设计进行了需求分析、功能分析,最后做出详细设计方案。设计中主要将餐厅点菜系统分为五个模块,每个模块的需求和实现的功能进行了阐述和详细设计过程分析。第4章 软件设计软件采用面向对像的设计方法,考虑到对计算效率的要求,采用C+编程语言,开发环境为Linux RedHat 企业版5,服务器编译工具为gcc,其余编程工具为g+编译器,采用C+标准库函数和QT类库。4.1 数据库表结构设计本系统数据库中建立了一张菜单信息表,该表详细结构如图表4-1所示。表4-1 菜单信息表名称类型(长度)空属性Idvarchar(20)nouniqueIddvarchar(20)yesNamevarchar(20)yesPricevarchar(20)yesImagepathvarchar(20)yesAboutvarchar(20)yes4.2 各功能模块的详细设计本系统有五个模块组成,分别为server(服务器),前台管理模块,顾客点菜管理模块,后厨管理模块,数据库管理模块等。4.2.1 服务器管理模块服务器模块主要是用C语言编写的,主要是为其他模块间的通信。其中主要运用到TCP/IP协议通信的。运用到了TCP/IP协议函数,首先socket()函数获得套接字描述符,然后用bind()函数将描述符捆绑到IP上,监听listen()函数,其中可以设置客户端的个数。然后就是等待客户端的请求连接用accept()函数,其中运用到了线程,创建线程函数pthread_create()用来处理客户的的请求。主要实现代码如下: if(sockfd = socket(AF_INET,SOCK_STREAM,0) = -1)perror(-Socket error!-);exit(0);/* 服务器端填充 sockaddr_in结构 */bzero(&server_addr,sizeof(server_addr);server_addr.sin_family = AF_INET;server_addr.sin_addr.s_addr = inet_addr();server_addr.sin_port = htons(portnumber);/* 捆绑sockfd描述符到IP地址 */if(bind(sockfd,(struct sockaddr*)&server_addr,sizeof(server_addr) = -1)perror(-Bind error!-);exit(0);/* 设置允许连接的最大客户端数 */if(listen(sockfd,10) = -1)perror(-Listen error!-);exit(0);address_size = sizeof(client_addr);while(1)int i=0;/* 服务器阻塞,等待客户程序建立连接 */if(accefd = accept(sockfd,(struct sockaddr*)&client_addr,&address_size) = -1)perror(-Accept error!-);exit(0);sock_accepti =accefd;i+;/*创建线程,处理客户端请求*/pthread_t tid;pthread_create(&tid,0,run,&accefd);/*服务器主程序返回继续等待下一次客户端连接*/close(sockfd);4.2.2 前台管理模块 前台管理模块主要查看餐台空闲信息,和打印账单两部分组成。餐台空闲信息主要是根据Button组件文本显示判断的是否是空闲状态,空闲时,当顾客来时如空闲点击按钮就connect()触发了槽函数table1(),其中槽函数中用到Button类的成员函数setText(),将button的文本信息设置为“1号有人”。同样,当顾客结账时点击按钮触发槽函数打印账单给顾客查看,同时将Button的文本信息设置为“2人桌”,账单是用QListWidget类来显示。主要实现代码如下:void foregroundDialog:table1()QTextCodec:setCodecForTr(QTextCodec:codecForName(utf8);static bool a = true;if(a)button1-setText(tr(1号有人);a = false;else/结帐shou();int i=0;double sum=0;/将客人消费情况添加到账单列表QListWidget *list = new QListWidget;QString str1 = QString(tr(菜名 价格 数量);list-insertItem(0,str1);while(menu1i.num!=0)char a50;memset(a,0,sizeof(a);sprintf(a,%d %d ,menu1i.price,menu1i.num);list-insertItem(i+1,QString(tr()+tr( )+tr(a);sum+=menu1i.price*menu1i.num;i+;QString a;char af10;sprintf(af,%d,menu10.buff1);a.append(QString(%1).arg(sum);QString str2 = QString(tr(桌号:)+tr(af)+tr(共计);list-insertItem(i+1,str2+a);list-show();/添加当前时间到账单time_t lt;lt =time(NULL);char aa80;memset(aa,0,sizeof(aa);sprintf(aa,%s,ctime(<);list-insertItem(i+2,QString(tr(aa);button1-setText(tr(1号(2人桌);a = true;4.2.3 顾客点菜端管理模块点菜端是顾客从前台获知该餐桌空闲,则开台,并开始点菜,点菜界面可以根据菜谱信息点击选择按钮,如果需要删除可以点击删除按钮,当确认后点击提交按钮就将顾客点菜信息发送到服务器,服务器并发送到后厨。首先创建套接字描述符Socket()函数,然后连接服务器connect()。主要代码实现如下:/* 客户程序建立 sockfd描述符 */if(sockfd=socket(AF_INET,SOCK_STREAM,0) = -1)/* 客户程序填充服务端的资料 */bzero(&server_addr,sizeof(server_addr);server_addr.sin_family = AF_INET;server_addr.sin_addr.s_addr = inet_addr();server_addr.sin_port = htons(portnumber);/* 客户程序发起连接请求 */if(connect(sockfd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr) = -1)开台界面有两个选择都是用QComboBox类,可以选择现在是几号桌和人数,点击开台Button同样触发槽函数slotOkButton()的发生,会让点菜界面显示用到QWidget类中的成员show()函数。再send()将开台信息发送到服务器。点击主要实现代码如下:void welcomeDialog:slotOkButton() /开台if(star=true)QString st=numberComboBox-currentText();tableNumber=st.toInt();diancaiDialog *dianc = new diancaiDialog;dianc-show();SeleteList0.buffer0=1;SeleteList0.buffer1=tableNumber;send(sockfd,SeleteList,sizeof(SeleteList),0);star=false;else;菜单列表是从数据库列表中获取的,首先用QSqlDatabase类中的addDatabase()成员函数加载数据库驱动,然后用setDatabaseName()成员函

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论