基于qt的电子点餐系统的设计与实现_第1页
基于qt的电子点餐系统的设计与实现_第2页
基于qt的电子点餐系统的设计与实现_第3页
基于qt的电子点餐系统的设计与实现_第4页
基于qt的电子点餐系统的设计与实现_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

基于QT的电子点餐系统的设计与实现摘要在深入研究中小餐饮企业工作流程的基础上,分析制约餐饮企业工作效率的各种因素,发现影响效率的主要因素是普遍使用手工登记菜谱的现象,本系统运用计算机系统来实现餐饮企业工作流的信息化管理,采用面向对象的开发方法以及C语言,依靠VISUALSTUDIO2008作为开发工具,使用SQLITE网络数据库存储数据。实现了客户点餐、厨师配餐、收银管理、系统设置四大功能,解决餐饮企业中客户点餐速度慢、服务员登记不清晰、厨师配餐漏配、菜谱更新不及时且不直观、会员管理混乱的现象。通过餐饮企业的信息化改造暨利用无线技术,替代传统的纸和笔进行电子点餐(点菜)操作,实现远距离地进行信息即时传递。当然,无线点餐(点菜)系统不只是可以进行点餐操作,同时通过配套的餐饮管理软件,还可以实现强大的统计和管理功能,使餐饮企业真正实现信息化。这样能够有效地的提升餐饮企业的档次和管理水平,做到科学管理、科学决策、高效运转、降低成本,进行信息化是必由之路。而采用无线点餐(点菜)系统取代传统的手工点餐,采用餐饮管理软件取代传统的人工统计和粗放型管理又是信息化当中的核心内容。关键词餐饮点餐;面向对象开发方法;QT;客户端;数据库;BASEDONTHEQTELECTRONICORDERINGSYSTEMDESIGNANDIMPLEMENTATIONABSTRACTINTHEFURTHERSTUDYOFSMALLANDMEDIUMSIZEDCATERINGENTERPRISES,ONTHEBASISOFWORKFLOW,ANALYSISOFTHEEFFICIENCYOFCATERINGENTERPRISESOFVARIOUSFACTORS,FOUNDTHEMAINFACTORSINFLUENCINGTHEEFFICIENCYISTHECOMMONLYUSEDMANUALREGISTRATIONTHEPHENOMENONOFRECIPES,THISSYSTEMUSECOMPUTERSYSTEMTOREALIZEINFORMATIONMANAGEMENTOFCATERINGENTERPRISESWORKFLOW,USESTHEOBJECTORIENTEDDEVELOPMENTMETHOD,ANDCLANGUAGE,RELYONVISUALSTUDIO2008ASADEVELOPMENTTOOL,USESQLITENETWORKDATABASETOSTOREDATAIMPLEMENTSTHECUSTOMERORDER,CHEFCATERING,CASHIERMANAGEMENT,SYSTEMSETUPFOURBIGFUNCTIONS,SOLVETHECATERINGENTERPRISESINTHESLOWSPEEDOFCUSTOMERORDER,UNCLEAR,CHEFCATERINGWAITERTOREGISTERWITHLEAKAGE,THEMENUUPDATENOTTIMELYANDNOTINTUITIVE,MEMBERMANAGEMENTCHAOSPHENOMENONBYCATERINGENTERPRISESINFORMATIZATIONREFORMANDTHEUSEOFWIRELESSTECHNOLOGY,REPLACETRADITIONALPENANDPAPERTOELECTRONICORDERORDEROPERATION,REALIZEREMOTEREALTIMETRANSMISSIONOFINFORMATIONWIRELESSORDERORDERSYSTEM,OFCOURSE,NOTJUSTTOORDEROPERATION,ATTHESAMETIME,BYSUPPORTINGCATERINGMANAGEMENTSOFTWARE,CANALSOREALIZEPOWERFULSTATISTICSANDMANAGEMENT,CATERINGENTERPRISESTOREALIZEINFORMATIONIZATIONITCANEFFECTIVELYPROMOTETHECLASSOFTHECATERINGENTERPRISESANDTHEMANAGEMENTLEVEL,ACHIEVESCIENTIFICMANAGEMENT,SCIENTIFICDECISIONMAKING,HIGHEFFICIENCY,REDUCECOST,INFORMATIZATIONISTHEONLYWAYANDUSEWIRELESSORDERORDERSYSTEMTOREPLACETHETRADITIONALMANUALORDER,CATERINGMANAGEMENTSOFTWARETOREPLACETHETRADITIONALARTIFICIALSTATISTICSANDEXTENSIVEMANAGEMENTISTHECORECONTENTOFINFORMATIZATIONKEYWORDSFOODANDBEVERAGEORDEROBJECTORIENTEDDEVELOPMENTETHODQTCLIENTDATABASE目录摘要1ABSTRACT21绪论111引言1111编写目的1112项目背景1113现实背景112术语定义213参考资料214研究目的和意义2141目的2142意义32开发平台及核心技术简介421开发语言介绍4211QT介绍4212QT信号槽机制简介5213属性介绍722开发环境7221VISIOSTUDIO2008简介7222VC2008与QT47的开发环境搭建823核心技术介绍8231UDP协议8232TCP协议9233QT数据库支持103需求分析1231目前餐饮企业工作流程1232所建议系统的工作流程1233产品功能1334软件需求描述1435系统用例图1436软件接口164总体设计与实现1741系统架构设计1742系统编码规范17421类型的命名17422方法和属性的命名18423变量和常数18424MAIN函数代码195详细设计2051数据库模块功能设2052登录模块功能设计2053点餐模块功能设计2154服务器模块功能设计2155厨房模块功能设计2256数据库模块设计与实现22561数据库模块设计22562数据库模块实现2357登录模块设计与实现23571登录模块设计23572登陆模块代码23573注册模块代码2458点餐模块设计与实现24581点餐模块设计24582点餐客户端代码2559服务器模块设计与实现26591服务器模块设计与实现26592服务器代码26510厨房模块设计与实现285101厨房模块设计285102厨房客户端代码286系统测试3161简介31611编写目的31612项目背景31613系统简介31614参考资料3162测试概要31621测试用例设计32622测试环境与配置32623测试方法和工具3263测试结果及缺陷分析32631登录模块测试32632点餐模块实现33633服务器模块实现34634厨房模块实现3664测试结论37总结38参考文献39致谢40外文原文411绪论11引言111编写目的本文档是餐饮点餐管理系统的项目需求说明书,对餐饮点餐管理系统的发展进行简要回顾,分析当前的业务流程,总结此类管理系统的基本特点以及总体功能,尽可能完整的概括提取出需求方的全部想法。本文档对项目开发人员、设计人员及系统实施人员具有很重要的指导意义。112项目背景项目名称餐饮点餐管理系统;中国是举世闻名的美食大国,拥有五千年的饮食文化和巨大的餐饮市场,随着人民生活水平和生活方式的转变,餐饮业具有巨大的投资市场,被称为中国的黄金产业,但同样也应看到,餐饮业不仅面临着巨大的发展机遇,也面临着前所未有的挑战和考验。餐饮业的不断发展,在经营管理上也逐步向电子化迈进,通过电脑信息系统管理餐饮业的内部事务,使得作业更加简单化、高效。以财务为中心,减轻一线操作人员的劳动强度,节省营业人员的交班时间,加强财务审核管理。提供多种点菜、结算、统计报表功能,提供分厨房直接打印前台点菜数据。在餐饮经营中,传统的纸制作业流程无法满足现代客户在信息娱乐及服务安保等方面的要求。而此系统的使用,使餐厅管理者便捷的进行经营娱乐的管理,大大增加的各店成本控制及销售额113现实背景我国的餐饮市场经过30多年的改革开放及发展,可以说我国正迎来一个餐饮业大发展的时期,市场潜在力量巨大,远景很是广阔。根据中国烹饪协会发布的2009年度餐饮业发展报告显示,即便在经济遭受重创的2009年,全社会餐饮业零售额达依然到17998亿元,同比增长168。其中,每月的零售额均超过1300亿元,增长率稳定在144至216。在各类消费性支出中增幅居前,仅次于交通和通信支出。并且预计2012年餐饮市场还将继续增长,营业额也将达到20000亿元。与此同时,我国餐饮业发展的质量和内涵也发生了重大变化。行业的经营领域和市场空间不断拓宽,经营档次和企业管理水平不断提高,经营业态日趋丰富,投资主体和消费需求多元化特点更加突出,网点数量和人员队伍继续扩大;餐饮市场更加繁荣,消费的个性化和特色化的趋势明显,追求健康营养和连锁规模发展成为主题。集团化、品牌化、产业化和国际化的发展步伐加快,餐饮现代化的进程不断推进。近几年来,中国餐饮业的发展一直保持强劲快速增长同时,也看到目前餐饮行业普遍存在的问题。餐饮企业的发展一直处于自我摸索、自我运作、自我积累和自我完善为主的状态,利润低、承载重、支撑小、发展难的特点突出。餐饮企业在产品标准化技术设备开发、连锁管理体系的建立、专业人才的培养、吸纳资本投入、理论指导和信息交流等方面的条件十分不足,存在着技术开发与设备配套难、管理与人才难、配送渠道与发展资金难、沟通交流与合作难等深层次因素的制约,行业平台和基础支持力量不强,对企业发展产生较大的影响。12术语定义所谓”翻台率”是指在某期间里,指餐桌座位坐满及餐桌空荡的速度。一个高翻台率意味更多用餐者吃了并且走了,而一个低的翻台率意味同样用餐者是在一段长时间里使用餐桌,或者餐桌座位是空的。13参考资料1餐饮点餐管理系统项目开发计划_V10014研究目的和意义141目的在我们这个“食文化”高度发达的国度里,餐饮业毋庸置疑地成为第一大传统产业。然而,正是这历史悠久、规模庞大的产业,却也是信息化程度最慢和最低的产业之一。至今为止,绝大多数餐饮企业的经营方式仍然停留在“一张纸、一支笔、经理喊破嗓、员工跑断腿”的境地;而会计工作,也仍然是以一支笔或一个算盘,或最好的情况下一个计算器进行加减乘除,其本质仍然是以人脑计算为基础,不但工作量巨大,而且极易出错。笔者曾经见过生意极好的大排档,服务员进进出出地飞奔于户外桌台、大堂吧台和厨房之间,而经理则用计算器算得满头大汗的场景,蔚为壮观。且不说这种日复一日的重复、单调的劳动意义何在,单就消费计算方面的出错而引发的与客户之间的矛盾纠纷,就不可胜计。其实在人类文明已经进入电子信息的时代,绝大多数重复、单调、可程式化的工作都已经可以交由计算机来完成。面对复杂和庞大的计算任务,计算机在效率和准确度方面是人脑所不能望其项背的。作为传统产业的餐饮业,同其他很多传统产业一样,同样可以引入信息化改造。餐饮业的信息化改造内容,主要有由传统的笔和纸点餐,改用电子点餐;由传统的人工计算、统计、管理,改用电脑进行计算、统计和管理;将现代的电子技术、无线技术、计算机技术和网络技术引入到餐饮行业中来,替代部分人工操作,加快餐饮企业的运转效率,提升餐饮企业的管理水平,使餐饮企业运作更规范、更科学、更高效。在餐饮企业的信息化改造当中,无线点餐(点菜)系统,成为其核心内容,也是餐饮企业进行信息化改造的必由之路。因此本论文研究的目的在于通过餐饮企业的信息化改造暨利用无线技术,替代传统的纸和笔进行电子点餐(点菜)操作,实现远距离地进行信息即时传递。当然,无线点餐(点菜)系统不只是可以进行点餐操作,同时通过配套的餐饮管理软件,还可以实现强大的统计和管理功能,使餐饮企业真正实现信息化。142意义能够有效地的提升餐饮企业的档次和管理水平,做到科学管理、科学决策、高效运转、降低成本,进行信息化是必由之路。而采用无线点餐(点菜)系统取代传统的手工点餐,采用餐饮管理软件取代传统的人工统计和粗放型管理又是信息化当中的核心内容。餐饮企业引进一套无线点餐(点菜)系统,成本大约在一万元左右(视配置情况而不同),大约相当于一个服务员一年的工资,但带来的便利性和管理水平的升级则是无与伦比的。无线点餐(点菜)系统所带来的运营效率的大幅度提高和人力成本的节约,远超其投资成本,对于餐饮企业信息化,可以说是不二的选择。2开发平台及核心技术简介21开发语言介绍211QT介绍QT是一个1991年由奇趣科技开发的跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。QT是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器METAOBJECTCOMPILER,MOC)以及一些宏,易于扩展,允许组件编程。2008年,奇趣科技被诺基亚公司收购,QT也因此成为诺基亚旗下的编程语言工具。2012年,QT被DIGIA收购。QT是一个跨平台的C图形用户界面库,由挪威TROLLTECH公司出品,目前包括QT/X11,基于FRAMEBUFFER的QTEMBEDDED,快速开发工具QTDESIGNER,国际化工具QTLINGUIST等,QT支持UNIX系统及LINUX,还支持WINNT/WIN2K,WIN95/98平台。QT的良好封装机制使得QT的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。QTAPI和开发工具对所有支持平台都是一致的,从而可以进行独立于平台的程序开发和配置。它使得跨平台软件编程直观、简易和方便。QT提供了一种称为SIGNALS/SLOTS的安全类型来替代CALLBACK回调函数,这使得各个控件之间的协同工作变得十分简单。QT在LINUX下有GPL版,可方便用户的学习及开发。如果用户使用C,对库的稳定性,健壮性要求比较高,并且希望跨平台开发的话,那么使用QT是较好的选择,QT还支持2D/3D图形渲染、OPENGL、XML等。QTSCRIPTFORAPPLICATIONSQSA是TROLLTECH的跨平台脚本工具箱。QT为静态的QT/C程序提供了一个脚本界面,可以定制和扩展程序。QTOPIA是为基于LINUX的PDA,智能电话和其他移动设备设计的一个全面的,可以用户化的应用程序平台和用户界面。QT/EMBEDDED是面向嵌入式系统的QT版本,是QT的嵌入式LINUX窗口,是完整的自包含CGUI和基于LINUX的嵌入式平台开发工具。QT/EMBEDDEDAPI可用于多种开发项目。许多基于QT的XWINDOW程序可以非常方便地移植到嵌入式版本,适用于高端PDA等产品。QT/EMBEDDED内部对于字符集的处理采用了UNICODE编码标准。QT是基于面向对象的C语言,QT提供了SIGNAL和SLOT的对象通信机制,具有可查询和可设计的属性以及强大的事件和事件过滤器,同时,还具有字符国际化,即支持根据上下文进行国际化的字符串翻译。许多QT的特性是基于QOBJECT的继承,通过标准C技术实现的优良的跨平台特性QT支持下列操作系统MICROSOFTWINDOWS95/98,MICROSOFTWINDOWSNT,LINUX,SOLARIS,SUNOS,HPUX,DIGITALUNIXOSF/1,TRU64,IRIX,FREEBSD,BSD/OS,SCO,AIX,OS390,QNX等等。面向对象QT的良好封装机制使得QT的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。QT提供了一种称为SIGNALS/SLOTS的安全类型来替代CALLBACK,这使得各个元件之间的协同工作变得十分简单。丰富的APIQT包括多达250个以上的C类,还提供基于模板的COLLECTIONS,SERIALIZATION,FILE,I/ODEVICE,DIRECTORYMANAGEMENT,DATE/TIME类。甚至还包括正则表达式的处理功能。支持2D/3D图形渲染,支持OPENGL,丰富的XML支持。212QT信号槽机制简介信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C语言,因此要正确的处理信号和槽,必须借助一个称为MOC(METAOBJECTCOMPILER)的QT工具,该工具是一个C预处理程序,它为高层次的事件处理自动生成所需要的附加代码。在我们所熟知的很多GUI工具包中,窗口小部件WIDGET都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在QT中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生COREDUMPS。所有从QOBJECT或其子类例如QWIDGET派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射EMIT出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的通信机制。我们可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,甚至于将一个信号与另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射系统都将立刻发射第二个信号。总之,信号与槽构造了一个强大的部件编程机制。(1)信号当某个信号对其客户或所有者发生的内部状态发生改变,信号被一个对象发射。只有定义过这个信号的类及其派生类能够发射这个信号。当一个信号被发射时,与其相关联的槽将被立刻执行,就象一个正常的函数调用一样。信号槽机制完全独立于任何GUI事件循环。只有当所有的槽返回以后发射函数(EMIT)才返回。如果存在多个槽与某个信号相关联,那么,当这个信号被发射时,这些槽将会一个接一个地执行,但是它们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行、哪个后执行。信号的声明是在头文件中进行的,QT的SIGNALS关键字指出进入了信号声明区,随后即可声明自己的信号。例如,下面定义了三个信号SIGNALSVOIDMYSIGNALVOIDMYSIGNALINTXVOIDMYSIGNALPARAMINTX,INTY在上面的定义中,SIGNALS是QT的关键字,而非C/C的。接下来的一行VOIDMYSIGNAL定义了信号MYSIGNAL,这个信号没有携带参数;接下来的一行VOIDMYSIGNALINTX定义了重名信号MYSIGNAL,但是它携带一个整形参数,这有点类似于C中的虚函数。从形式上讲信号的声明与普通的C函数是一样的,但是信号却没有函数体定义,另外,信号的返回类型都是VOID,不要指望能从信号返回什么有用信息。信号由MOC自动产生,它们不应该在CPP文件中实现。(2)槽槽是普通的C成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。既然槽是普通的成员函数,因此与其它的函数一样,它们也有存取权限。槽的存取权限决定了谁能够与其相关联。同普通的C成员函数一样,槽函数也分为三种类型,即PUBLICSLOTS、PRIVATESLOTS和PROTECTEDSLOTSPUBLICSLOTS在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。PROTECTEDSLOTS在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。PRIVATESLOTS在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。槽也能够声明为虚函数,这也是非常有用的。槽的声明也是在头文件中进行的。例如,下面声明了三个槽PUBLICSLOTSVOIDMYSLOTVOIDMYSLOTINTXVOIDMYSIGNALPARAMINTX,INTY(3)信号与槽的关联建立连接通过调用QOBJECT对象的CONNECT函数来将某个对象的信号与另外一个对象的槽函数相关联,这样当发射者发射信号时,接收者的槽函数将被调用。该函数的定义如下BOOLQOBJECTCONNECTCONSTQOBJECTSENDER,CONSTCHARSIGNAL,CONSTQOBJECTRECEIVER,CONSTCHARMEMBERSTATIC这个函数的作用就是将发射者SENDER对象中的信号SIGNAL与接收者RECEIVER中的MEMBER槽函数联系起来。当指定信号SIGNAL时必须使用QT的宏SIGNAL,当指定槽函数时必须使用宏SLOT。如果发射者与接收者属于同一个对象的话,那么在CONNECT调用中接收者参数可以省略。断开连接DISCONNECT函数来断开连接。其定义如下BOOLQOBJECTDISCONNECTCONSTQOBJECTSENDER,CONSTCHARSIGNAL,CONSTOBJECTRECEIVER,CONSTCHARMEMBERSTATIC这个函数断开发射者中的信号与接收者中的槽函数之间的关联。213属性介绍QT的属性也基于元对象系统,在类声明中用宏Q_PROPERTY来声明。属性只能在继承于QOBJECT的子类中声明。宏Q_OVERRIDE用来覆盖一些子类中由继承得到的属性。属性也是一个类的成员。元对象系统中设置属性和得到属性的成员函数列出如下QOBJECTSETPROPERTY可以让你控制类中那些在编译时不可用的属性。QMETAOBJECTPROPERTYNAMES返回所有可用属性的名称。QMETAOBJECTPROPERTY返回一个指定属性的属性数据一个QMETAPROPERTY对象。下面两个设置函数是等效的/QBUTTONB和QOBJECTO指向同一个按钮时BSETDOWNTRUEOSETPROPERTY“DOWN“,TRUE22开发环境221VISIOSTUDIO2008简介MICROSOFTVISUALSTUDIO(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境IDE等等。所写的目标代码适用于微软支持的所有平台,包括MICROSOFTWINDOWS、WINDOWSMOBILE、WINDOWSCE、NETFRAMEWORK、NETCOMPACTFRAMEWORK和MICROSOFTSILVERLIGHT及WINDOWSPHONE。VISUALSTUDIO2008在三个方面为开发人员提供了关键改进1、快速的应用程序开发。2、高效的团队协作。3、突破性的用户体验。VISUALSTUDIO2008提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。VISUALSTUDIO2008包括各种增强功能,例如可视化设计器(使用NETFRAMEWORK35加速开发)、对WEB开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。VISUALSTUDIO2008为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持AJAX的WEB应用程序。开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的WEB应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问ASPNET应用程序服务和MICROSOFT平台。2程序开发为了帮助开发人员迅速创建先进的软件,VISUALSTUDIO2008提供了改进的语言和数据功能,例如语言集成的查询LINQ,各个编程人员可以利用这些功能更轻松地构建解决方案以分析和处理信息。VISUALSTUDIO2008还使开发人员能够从同一开发环境内创建面向多个NETFRAMEWORK版本的应用程序。开发人员能够构建面向NETFRAMEWORK20、30或35的应用程序,意味他们可以在同一环境中支持各种各样的项目。VISUALSTUDIO2008为开发人员提供了在最新平台上加速创建紧密联系的应用程序的新工具,这些平台包括WEB、WINDOWSVISTA、OFFICE2007、SQLSERVER2008和WINDOWSSERVER2008。对于WEB,ASPNETAJAX及其他新技术使开发人员能够迅速创建更高效、交互式更强和更个性化的新一代WEB体验。3高效的团队协作VISUALSTUDIO2008提供了帮助开发团队改进协作的扩展的和改进的服务项目,包括帮助将数据库专业人员和图形设计人员加入到开发流程的工具。3222VC2008与QT47的开发环境搭建VC2008与QT开发环境搭建是十分简单的事情,QT授权模式有三种授权协议,分别是GPL,LGPL和COMMERCIAL,选择GPL协议即可。1下载并安装VC2008专业版。2下载并安装QT安装包QTWINOPENSOURCE470VS2008EXE。3下载并安装QTVSADDIN117EXE。4在系统环境变量中添加DQT470。23核心技术介绍231UDP协议UDP协议是英文USERDATAGRAMPROTOCOL的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。与我们所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。UDP协议的全称是用户数据报协议2,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。232TCP协议TRANSMISSIONCONTROLPROTOCOL传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(TRANSPORTLAYER)通信协议,由IETF的RFC793说明(SPECIFIED)。TCP在IP报文的协议号是6。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为应用层应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(TELNET)等。传输层在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。互连网络层负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。网络接口层对实际的网络媒体的管理,定义如何使用实际网络(如ETHERNET、SERIALLINE等)来传送数据。在因特网协议族(INTERNETPROTOCOLSUITE)四层协议中,TCP层是位于IP层之上,应用层之下的传输层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算和校验。首先,TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,它是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。在拥塞控制上,采用广受好评的TCP拥塞控制算法(也称AIMD算法),该算法主要包括三个主要部分1,加性增、乘性减;2,慢启动;3,对超时事件做出反应。233QT数据库支持QT提供了QTSQL模块来提供平台独立的基于SQL的数据库操作。这里我们所说的“平台独立”,既包括操作系统平台,有包括各个数据库平台。另外,我们强调了“基于SQL”,因为NOSQL数据库至今没有一个通用查询方法,所以不可能提供一种通用的NOSQL数据库的操作。QT的数据库操作还可以很方便的与MODEL/VIEW架构进行整合。通常来说,对数据库的操作更多地在于对数据库表的操作,而这正是MODEL/VIEW架构的长项。不过,由于受到协议的限制,QT开源版本并没有提供上面所有驱动的二进制版本,而仅仅以源代码的形式提供。通常,QT只默认搭载QSQLITE驱动(这个驱动实际还包括SQLITE数据库,也就是说,如果需要使用SQLITE的话,只需要该驱动即可)。我们可以选择把这些驱动作为QT的一部分进行编译,也可以当作插件编译。如果习惯于使用SQL语句,我们可以选择QSQLQUERY类;如果只需要使用高层次的数据库接口(不关心SQL语法)。QT为数据库访问提供的QTSQL模块实现了数据库和QT应用程序的无缝集成,同时为开发人员提供了一套与平台无关和具体所用数据库均无关的调用接口。这使得开发人员只需掌握基本的SQL语句,就能进行简单的数据库应用程序开发。如下表所示,QTSQL模块由3部分组成。驱动层驱动层实现了特定数据库与SQL接口的底层桥接。SQL接口层SQL接口层提供了数据库类的访问用户接口层用户接口层提供从数据库数据到用于数据库表示的窗体的映射QTSQL模块提供了一个平台无关且数据库无关的访问SQL数据库的接口。QT中的每个数据库连接用一个QSQLDATABASE对象来表示;QT使用不同DRIVER来和各种不同数据库的API进行通讯。QSQLQUERY提供了直接执行任意SQL语句的特性;此外还提供了两个高层次的无需SQL命令的数据库接口QSQLTABLEMODEL和QSQLRELATIONALTABLEMODELSECTION1CONNECTINGANDQUERYING在执行SQL命令前,必须先建立好同数据库的连接。静态函数QSQLDATABASEADDDATABASE用于创建一个新的QSQLDATABASE对象,函数的第一个参数指定了QT该选择哪个DRIVER来访问数据库。在对创建的QSQLDATABASE对象设定好HOSTNAME,DATABASENAME,USERNAME和PASSWORD后,需要调用OPEN函数来建立到数据库的连接。一旦到数据库的链接建立好后,就可以通过QSQLQUERYEXEC来执行底层数据库所支持的任意SQL语句了。QSQLQUERYNEXT返回查询结果集中的下一行,而QSQLQUERYVALUE则返回当前行中的某一项的值,以QVARIANT的形式返回。可以使用QSQLQUERYISACTIVE来检查SQL语句的执行是否出现错误。PLACEHOLDERQSQLQUERYPREPAREQSQLQUERYBINDVALUEORQSQLQUERYADDBINDVALUEQSQLQUERYEXECQT支持数据库中TRANSACTION事务这个概念。TRANSACTION用于启动TRANSACTION,而COMMIT或ROLLBACK用于结束TRANSACTION。静态函数QSQLDATABASEDATABASE,返回指定连接所对应的QSQLDATABASE对象。QSQLDATABASEDRIVER返回该连接底层所使用的DIRVERQSQLDATABASEHASFEATURE可用来查询底层数据库是否支持某项特性。QT允许在一个程序中创建多个数据库连接,这中情况下在执行SQL语句时,需要为QSQLQUERY的构造函数传入要执行该语句的数据库对应的QSQLDATABASE对象。与QSQLQUERY相比,QSQLTABLEMODEL提供了一个更高层次、更抽象的接口,可以避免使用原始的SQL命令。QSQLTABLEMODELRECORDQAPPLICATIONADDLIBRARYPATH“/PLUGINS“QTEXTCODECSETCODECFORTRQTEXTCODECCODECFORNAME“GB2312“QTEXTCODECSETCODECFORLOCALEQTEXTCODECCODECFORNAME“GB2312“QTEXTCODECSETCODECFORCSTRINGSQTEXTCODECCODECFORNAME“GB2312“QAPPLICATIONADDLIBRARYPATH“/SQLDRIVERS“QDATABASEPQDATABASEGETINSTANCEPCONNECTDATABASEQLOADMANGERDLGIFDLGEXECQDIALOGACCEPTEDRETURN0QMEALWWSHOWRETURNAEXEC5详细设计51数据库模块功能设数据库模块主要包括用户管理、菜品管理、会员管理三大部分,这三大部分都需要将数据保存到数据库,所以都归结到了数据库模块中。其中用户管理模块主要是包括用户的注册和用于用户登录的验证功能;而菜品管理模块主要是实现对菜品的添加,对菜品的修改,对菜品的删除三大功能;同样会员管理也主要是实现对会员添加,对会员的修改,以及对会员的删除。图5152登录模块功能设计登录模块主要实现的功能就是对系统管理员用户的注册以及对已经注册的用户进行用户信息验证,用来完成用户登录模块。图5253点餐模块功能设计点餐模块主要包括四个功能用户点餐、呼叫服务、结账、更新菜单。用户点餐主要是用户用来从菜单上进行菜品选择,这个功能包括了用户对菜品的选择,既选择菜单;下单,既将选择的菜单同步到厨房客户端中,告诉厨房需要做那些菜;提交菜单,既将菜单提交到了服务器中,主要是用来进行菜品的登记以及菜价的求和等操作。呼叫服务主要是呼叫服务员,这个是需要在柜台上进行一下设置,所以在软件中这个功能没有详细实现,只是留下了实现端口。结账功能现在以及实现了自动算账功能,这个功能也是需要在柜台上留下一个实现端口,在投入使用后直接在柜台电脑实现即可。更新菜单是将菜单从服务器中同步到点菜客户端中,每次系统重启后必须选择一下更新菜单,这样才能实现点菜客户端的更新。图5354服务器模块功能设计服务器模块式最主要的模块,这个模块其实包括了上面的数据库模块,但是还有一些其他功能模块包括在其中,这就是我整个系统的后台服务器模块,所有需要后台进行的运算都在这个模块中实现。这个服务器模块主要还是包括了用户登录模块和数据库模块量大部分。登录模块主要实现的功能就是对系统管理员用户的注册以及对已经注册的用户进行用户信息验证,用来完成用户登录模块。数据库模块主要包括用户管理、菜品管理、会员管理三大部分,这三大部分都需要将数据保存到数据库,所以都归结到了数据库模块中。其中用户管理模块主要是包括用户的注册和用于用户登录的验证功能;而菜品管理模块主要是实现对菜品的添加,对菜品的修改,对菜品的删除三大功能;同样会员管理也主要是实现对会员添加,对会员的修改,以及对会员的删除。同时还有一个呼叫功能在服务器模块中进行了实现,该功能主要就是实现将用户的点餐过程进行一个记录,所有的点餐呼叫都是会记录到系统中的,点击呼叫中心就可以进行呼叫记录的查看。图5455厨房模块功能设计厨房客户端的设计主要是实现接受订单功能和对所点产品的删除功能实现,厨房客户端在未进行点菜时候是没有显示任何菜品的,当在点菜客户端进行点菜后点击提交按钮后就可以把所点菜品提交到厨房客户端。图5556数据库模块设计与实现561数据库模块设计单例模式单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。本论文中对数据库进行封装成QDATABASE类,采用单例模式,提供全局唯一实例化接口STATICQDATABASEGETINSTANCESTATICQDATABASEINSTANCERETURNQDATABASE对数据库的操作提供接口,例如用户登录模块中的添加用户、修改用户、检验用户是否存在提供对应的接口VOIDADDUSERCONSTUSERINFOVOIDMODIFYUSERCONSTUSERINFOBOOLEXISTUSERCONSTUSERINFO562数据库模块实现图5657登录模块设计与实现571登录模块设计登陆模块的功能就是验证用户名及密码是否有效,同时提供用户注册功能。572登陆模块代码VOIDQLOADMANGERONLOADUSERINFOINFOINFOSTRNAMEM_PEDTNAMETEXTINFOSTRPASSWDM_PEDTPASSWORDTEXTQDATABASEPQDATABASEGETINSTANCEIFPEXISTUSERINFOQMESSAGEBOXWARNINGTHIS,TR“MEALSEVER“,TR“用户名或者密码错误“,QMESSAGEBOXOKREJECTELSEACCEPT573注册模块代码VOIDQLOADMANGERONREGISTERIFM_PDLGREGISTERRETURNIFM_PDLGREGISTEREXECQDIALOGACCEPTEDUSERINFOINFOM_PDLGREGISTERGETUSERINFOINFOQDATABASEPQDATABASEGETINSTANCEPADDUSERINFOQMESSAGEBOXWARNINGTHIS,TR“MEALSEVER“,TR“注册完成“,QMESSAGEBOXOK58点餐模块设计与实现581点餐模块设计点餐模块是系统中重要的模块,主要实现客户餐单的创建以及所点菜品的保存,该模块的实现思路是首先系统分类显示今日特价、凉菜、热菜、汤类、酒水、饮料,客人按照所需登记桌位,选择菜品及分数(默认1份),系统自动计算总金额,如果有误客人则可以删除某类菜品,最后点击提交保存到数据库。那么该模块实现的前提条件是用户以服务员身份登录到系统,且数据库中有相应的菜品信息以及一定数量的桌位。点餐模块主要包括四个功能用户点餐、呼叫服务、结账、更新菜单。用户点餐主要是用户用来从菜单上进行菜品选择,这个功能包括了用户对菜品的选择,既选择菜单;下单,既将选择的菜单同步到厨房客户端中,告诉厨房需要做那些菜;提交菜单,既将菜单提交到了服务器中,主要是用来进行菜品的登记以及菜价的求和等操作。呼叫服务主要是呼叫服务员,这个是需要在柜台上进行一下设置,所以在软件中这个功能没有详细实现,只是留下了实现端口。结账功能现在以及实现了自动算账功能,这个功能也是需要在柜台上留下一个实现端口,在投入使用后直接在柜台电脑实现即可。更新菜单是将菜单从服务器中同步到点菜客户端中,每次系统重启后必须选择一下更新菜单,这样才能实现点菜客户端的更新。表51点餐模块输入输出数据数据数据输出类型数据类型约束菜名输出字符串类型长度小于50价格输出字符串类型长度小于50图片输出二进制类型桌号输入字符串类型长度小于50菜名编号输入数字份数输入数字下图为点菜客户端的类图QORDERUIQORDERCLIENTQORDERWDGTQUDPSOCKETQTCPSOCKETQSELECTWDGTQLISTWIDGETQSTACKEDVIDGET实现功能1与厨房模块信息交流(通过UDP)2连接服务器提交请求(通过TCP)实现功能1客户点餐2客户呼叫服务3客户结账呼叫4菜品更新实现功能1点餐分类2具体菜品信息3点餐统计1111111图57582点餐客户端代码QORDERQORDERQWIDGETPARENT,QTWFLAGSFLAGSQMAINWINDOWPARENT,FLAGSUISETUPUITHISQORDERQORDER59服务器模块设计与实现591服务器模块设计与实现下图为服务器的类图QMEALQDATEBASEQMEALSERVERQSQLDATEBASEQUDPSOCKETQTCPSOCKETQTCPSERVER实现功能1与厨房模块信息交流(通过UDP)2连接服务器提交请求(通过TCP)

温馨提示

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

评论

0/150

提交评论