




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1基于QT的电子点餐系统的设计与实现摘要在深入研究中小餐饮企业工作流程的基础上,分析制约餐饮企业工作效率的各种因素,发现影响效率的主要因素是普遍使用手工登记菜谱的现象,本系统运用计算机系统来实现餐饮企业工作流的信息化管理,采用面向对象的开发方法以及C+语言,依靠Visualstudio2008作为开发工具,使用Sqlite网络数据库存储数据。实现了客户点餐、厨师配餐、收银管理、系统设置四大功能,解决餐饮企业中客户点餐速度慢、服务员登记不清晰、厨师配餐漏配、菜谱更新不及时且不直观、会员管理混乱的现象。通过餐饮企业的信息化改造暨利用无线技术,替代传统的纸和笔进行电子点餐(点菜)操作,实现远距离地进行信息即时传递。当然,无线点餐(点菜)系统不只是可以进行点餐操作,同时通过配套的餐饮管理软件,还可以实现强大的统计和管理功能,使餐饮企业真正实现信息化。这样能够有效地的提升餐饮企业的档次和管理水平,做到科学管理、科学决策、高效运转、降低成本,进行信息化是必由之路。而采用无线点餐(点菜)系统取代传统的手工点餐,采用餐饮管理软件取代传统的人工统计和粗放型管理又是信息化当中的核心内容。关键词:餐饮点餐;面向对象开发方法;Qt;客户端;数据库;2BasedOnTheQTElectronicOrderingSystemDesignAndImplementationAbstractInthefurtherstudyofsmallandmedium-sizedcateringenterprises,onthebasisofworkflow,analysisoftheefficiencyofcateringenterprisesofvariousfactors,foundthemainfactorsinfluencingtheefficiencyisthecommonlyusedmanualregistrationthephenomenonofrecipes,thissystemusecomputersystemtorealizeinformationmanagementofcateringenterprisesworkflow,USEStheobject-orienteddevelopmentmethod,andc+language,relyonVisualstudio2008asadevelopmenttool,useSqlitenetworkdatabasetostoredata.Implementsthecustomerorder,chefcatering,cashiermanagement,systemsetupfourbigfunctions,solvethecateringenterprisesintheslowspeedofcustomerorder,unclear,chefcateringwaitertoregisterwithleakage,themenuupdatenottimelyandnotintuitive,membermanagementchaosphenomenon.Bycateringenterprisesinformatizationreformandtheuseofwirelesstechnology,replacetraditionalpenandpapertoelectronicorder(order)operation,realizeremotereal-timetransmissionofinformation.Wirelessorder(order)system,ofcourse,notjusttoorderoperation,atthesametime,bysupportingcateringmanagementsoftware,canalsorealizepowerfulstatisticsandmanagement,cateringenterprisestorealizeinformationization.Itcaneffectivelypromotetheclassofthecateringenterprisesandthemanagementlevel,achievescientificmanagement,scientificdecision-making,highefficiency,reducecost,informatizationistheonlyway.Andusewirelessorder(order)systemtoreplacethetraditionalmanualorder,cateringmanagementsoftwaretoreplacethetraditionalartificialstatisticsandextensivemanagementisthecorecontentofinformatization.Keywords:foodandbeverageorder;Object-orienteddevelopmentethod;QT;client;database;目录摘要.1Abstract.21绪论.11.1引言.11.1.1编写目的.11.1.2项目背景.11.1.3现实背景.11.2术语定义.21.3参考资料.21.4研究目的和意义.21.4.1目的.21.4.2意义.32开发平台及核心技术简介.42.1开发语言介绍.42.1.1Qt介绍.42.1.2Qt信号槽机制简介.52.1.3属性介绍.72.2开发环境.72.2.1VisioStudio2008简介.72.2.2VC2008与Qt4.7的开发环境搭建.82.3核心技术介绍.82.3.1UDP协议.82.3.2TCP协议.92.3.3Qt数据库支持.103需求分析.123.1目前餐饮企业工作流程.123.2所建议系统的工作流程.123.3产品功能.133.4软件需求描述.143.5系统用例图.143.6软件接口.164总体设计与实现.174.1系统架构设计.174.2系统编码规范.174.2.1类型的命名.174.2.2方法和属性的命名.184.2.3变量和常数.184.2.4Main函数代码.195详细设计.205.1数据库模块功能设.20I5.2登录模块功能设计.205.3点餐模块功能设计.215.4服务器模块功能设计.215.5厨房模块功能设计.225.6数据库模块设计与实现.225.6.1数据库模块设计.225.6.2数据库模块实现.235.7登录模块设计与实现.235.7.1登录模块设计.235.7.2登陆模块代码.235.7.3注册模块代码.245.8点餐模块设计与实现.245.8.1点餐模块设计.245.8.2点餐客户端代码.255.9服务器模块设计与实现.265.9.1服务器模块设计与实现.265.9.2服务器代码.265.10厨房模块设计与实现.285.10.1厨房模块设计.285.10.2厨房客户端代码.286系统测试.316.1简介.316.1.1编写目的.316.1.2项目背景.316.1.3系统简介.316.1.4参考资料.316.2测试概要.316.2.1测试用例设计.326.2.2测试环境与配置.326.2.3测试方法(和工具).326.3测试结果及缺陷分析.326.3.1登录模块测试.326.3.2点餐模块实现.336.3.3服务器模块实现.346.3.4厨房模块实现.366.4测试结论.37总结.38参考文献.39致谢.40外文原文.41II01绪论1.1引言1.1.1编写目的本文档是餐饮点餐管理系统的项目需求说明书,对餐饮点餐管理系统的发展进行简要回顾,分析当前的业务流程,总结此类管理系统的基本特点以及总体功能,尽可能完整的概括提取出需求方的全部想法。本文档对项目开发人员、设计人员及系统实施人员具有很重要的指导意义。1.1.2项目背景项目名称:餐饮点餐管理系统;中国是举世闻名的美食大国,拥有五千年的饮食文化和巨大的餐饮市场,随着人民生活水平和生活方式的转变,餐饮业具有巨大的投资市场,被称为中国的黄金产业,但同样也应看到,餐饮业不仅面临着巨大的发展机遇,也面临着前所未有的挑战和考验。餐饮业的不断发展,在经营管理上也逐步向电子化迈进,通过电脑信息系统管理餐饮业的内部事务,使得作业更加简单化、高效。以财务为中心,减轻一线操作人员的劳动强度,节省营业人员的交班时间,加强财务审核管理。提供多种点菜、结算、统计报表功能,提供分厨房直接打印前台点菜数据。在餐饮经营中,传统的纸制作业流程无法满足现代客户在信息娱乐及服务安保等方面的要求。而此系统的使用,使餐厅管理者便捷的进行经营娱乐的管理,大大增加的各店成本控制及销售额1.1.3现实背景我国的餐饮市场经过30多年的改革开放及发展,可以说我国正迎来一个餐饮业大发展的时期,市场潜在力量巨大,远景很是广阔。根据中国烹饪协会发布的2009年度餐饮业发展报告显示,即便在经济遭受重创的2009年,全社会餐饮业零售额达依然到17998亿元,同比增长16.8%。其中,每月的零售额均超过1300亿元,增长率稳定在14.4%至21.6%。在各类消费性支出中增幅居前,仅次于交通和通信支出。并且预计2012年餐饮市场还将继续增长,营业额也将达到20000亿元。与此同时,我国餐饮业发展的质量和内涵也发生了重大变化。行业的经营领域和市场空间不断拓宽,经营档次和企业管理水平不断提高,经营业态日趋丰富,投资主体和消费需求多元化特点更加突出,网点数量和人员队伍继续扩大;餐饮市场更加繁荣,消费的个性化和特色化的趋势明显,追求健康营养和连锁规模发展成为主题。集团化、品牌化、产业化和国际化的发展步伐加快,餐饮现代化的进程不断推进。近几年来,中国餐饮业的发展一直保持强劲快速增长同时,也看到目前餐饮行业1普遍存在的问题。餐饮企业的发展一直处于自我摸索、自我运作、自我积累和自我完善为主的状态,利润低、承载重、支撑小、发展难的特点突出。餐饮企业在产品标准化技术设备开发、连锁管理体系的建立、专业人才的培养、吸纳资本投入、理论指导和信息交流等方面的条件十分不足,存在着技术开发与设备配套难、管理与人才难、配送渠道与发展资金难、沟通交流与合作难等深层次因素的制约,行业平台和基础支持力量不强,对企业发展产生较大的影响。1.2术语定义所谓”翻台率”是指在某期间里,指餐桌座位坐满及餐桌空荡的速度。一个高翻台率意味更多用餐者吃了并且走了,而一个低的翻台率意味同样用餐者是在一段长时间里使用餐桌,或者餐桌座位是空的。1.3参考资料1餐饮点餐管理系统项目开发计划_v1.001.4研究目的和意义1.4.1目的在我们这个“食文化”高度发达的国度里,餐饮业毋庸置疑地成为第一大传统产业。然而,正是这历史悠久、规模庞大的产业,却也是信息化程度最慢和最低的产业之一。至今为止,绝大多数餐饮企业的经营方式仍然停留在“一张纸、一支笔、经理喊破嗓、员工跑断腿”的境地;而会计工作,也仍然是以一支笔或一个算盘,或最好的情况下一个计算器进行加减乘除,其本质仍然是以人脑计算为基础,不但工作量巨大,而且极易出错。笔者曾经见过生意极好的大排档,服务员进进出出地飞奔于户外桌台、大堂吧台和厨房之间,而经理则用计算器算得满头大汗的场景,蔚为壮观。且不说这种日复一日的重复、单调的劳动意义何在,单就消费计算方面的出错而引发的与客户之间的矛盾纠纷,就不可胜计。其实在人类文明已经进入电子信息的时代,绝大多数重复、单调、可程式化的工作都已经可以交由计算机来完成。面对复杂和庞大的计算任务,计算机在效率和准确度方面是人脑所不能望其项背的。作为传统产业的餐饮业,同其他很多传统产业一样,同样可以引入信息化改造。餐饮业的信息化改造内容,主要有:由传统的笔和纸点餐,改用电子点餐;由传统的人工计算、统计、管理,改用电脑进行计算、统计和管理;将现代的电子技术、无线技术、计算机技术和网络技术引入到餐饮行业中来,替代部分人工操作,加快餐饮企业的运转效率,提升餐饮企业的管理水平,使餐饮企业运作更规范、更科学、更高效。在餐饮企业的信息化改造当中,无线点餐(点菜)系统,成为其核心内容,也是2餐饮企业进行信息化改造的必由之路。因此本论文研究的目的在于通过餐饮企业的信息化改造暨利用无线技术,替代传统的纸和笔进行电子点餐(点菜)操作,实现远距离地进行信息即时传递。当然,无线点餐(点菜)系统不只是可以进行点餐操作,同时通过配套的餐饮管理软件,还可以实现强大的统计和管理功能,使餐饮企业真正实现信息化。1.4.2意义能够有效地的提升餐饮企业的档次和管理水平,做到科学管理、科学决策、高效运转、降低成本,进行信息化是必由之路。而采用无线点餐(点菜)系统取代传统的手工点餐,采用餐饮管理软件取代传统的人工统计和粗放型管理又是信息化当中的核心内容。餐饮企业引进一套无线点餐(点菜)系统,成本大约在一万元左右(视配置情况而不同),大约相当于一个服务员一年的工资,但带来的便利性和管理水平的升级则是无与伦比的。无线点餐(点菜)系统所带来的运营效率的大幅度提高和人力成本的节约,远超其投资成本,对于餐饮企业信息化,可以说是不二的选择。32开发平台及核心技术简介2.1开发语言介绍2.1.1Qt介绍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等。QtScriptforApplications(QSA)是Trolltech的跨平台脚本工具箱。Qt为静态的Qt/C+程序提供了一个脚本界面,可以定制和扩展程序。Qtopia是为基于Linux的PDA,智能电话和其他移动设备设计的一个全面的,可以用户化的应用程序平台和用户界面。Qt/Embedded是面向嵌入式系统的Qt版本,是Qt的嵌入式Linux窗口,是完整的自包含C+GUI和基于Linux的嵌入式平台开发工具。Qt/EmbeddedAPI可用于多种开发项目。许多基于Qt的XWindow程序可以非常方便地移植到嵌入式版本,适用于高端PDA等产品。Qt/Embedded内部对于字符集的处理采用了UNICODE编码标准。Qt是基于面向对象的C+语言,Qt提供了signal和slot的对象通信机制,具有可查询和可设计的属性以及强大的事件和事件过滤器,同时,还具有字符国际化,即支持根据上下文进行国际化的字符串翻译。许多Qt的特性是基于QObject的继承,通过标准C+技术实现的优良的跨平台特性:Qt支持下列操作系统:MicrosoftWindows95/98,MicrosoftWindowsNT,Linux,Solaris,SunOS,HP-UX,DigitalUNIX(OSF/1,Tru64),Irix,FreeBSD,BSD/OS,SCO,AIX,OS390,QNX等等。4面向对象:Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为signals/slots的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。丰富的API:Qt包括多达250个以上的C+类,还提供基于模板的collections,serialization,file,I/Odevice,directorymanagement,date/time类。甚至还包括正则表达式的处理功能。支持2D/3D图形渲染,支持OpenGL,丰富的XML支持。2.1.2Qt信号槽机制简介信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C+语言,因此要正确的处理信号和槽,必须借助一个称为moc(MetaObjectCompiler)的QT工具,该工具是一个C+预处理程序,它为高层次的事件处理自动生成所需要的附加代码。在我们所熟知的很多GUI工具包中,窗口小部件(widget)都有一个回调函数用于响应它们能触发的每个动作,这个回调函数通常是一个指向某个函数的指针。但是,在QT中信号和槽取代了这些凌乱的函数指针,使得我们编写这些通信程序更为简洁明了。信号和槽能携带任意数量和任意类型的参数,他们是类型完全安全的,不会像回调函数那样产生coredumps。所有从QObject或其子类(例如Qwidget)派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射(emit)出去,这就是对象所要做的全部事情,它不知道另一端是谁在接收这个信号。这就是真正的信息封装,它确保对象被当作一个真正的软件组件来使用。槽用于接收信号,但它们是普通的对象成员函数。一个槽并不知道是否有任何信号与自己相连接。而且,对象并不了解具体的通信机制。我们可以将很多信号与单个的槽进行连接,也可以将单个的信号与很多的槽进行连接,甚至于将一个信号与另外一个信号相连接也是可能的,这时无论第一个信号什么时候发射系统都将立刻发射第二个信号。总之,信号与槽构造了一个强大的部件编程机制。(1)信号当某个信号对其客户或所有者发生的内部状态发生改变,信号被一个对象发射。只有定义过这个信号的类及其派生类能够发射这个信号。当一个信号被发射时,与其相关联的槽将被立刻执行,就象一个正常的函数调用一样。信号-槽机制完全独立于任何GUI事件循环。只有当所有的槽返回以后发射函数(emit)才返回。如果存在多个槽与某个信号相关联,那么,当这个信号被发射时,这些槽将会一个接一个地执行,但是它们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行、哪个后执行。信号的声明是在头文件中进行的,QT的signals关键字指出进入了信号声明区,随后即可声明自己的信号。例如,下面定义了三个信号:signals:voidmySignal();voidmySignal(intx);5voidmySignalParam(intx,inty);在上面的定义中,signals是QT的关键字,而非C/C+的。接下来的一行voidmySignal()定义了信号mySignal,这个信号没有携带参数;接下来的一行voidmySignal(intx)定义了重名信号mySignal,但是它携带一个整形参数,这有点类似于C+中的虚函数。从形式上讲信号的声明与普通的C+函数是一样的,但是信号却没有函数体定义,另外,信号的返回类型都是void,不要指望能从信号返回什么有用信息。信号由moc自动产生,它们不应该在.cpp文件中实现。(2)槽槽是普通的C+成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。既然槽是普通的成员函数,因此与其它的函数一样,它们也有存取权限。槽的存取权限决定了谁能够与其相关联。同普通的C+成员函数一样,槽函数也分为三种类型,即publicslots、privateslots和protectedslots:publicslots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。protectedslots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。privateslots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。槽也能够声明为虚函数,这也是非常有用的。槽的声明也是在头文件中进行的。例如,下面声明了三个槽:publicslots:voidmySlot();voidmySlot(intx);voidmySignalParam(intx,inty);(3)信号与槽的关联建立连接:通过调用QObject对象的connect函数来将某个对象的信号与另外一个对象的槽函数相关联,这样当发射者发射信号时,接收者的槽函数将被调用。该函数的定义如下:boolQObject:connect(constQObject*sender,constchar*signal,constQObject*receiver,constchar*member)static这个函数的作用就是将发射者sender对象中的信号signal与接收者receiver中的member槽函数联系起来。当指定信号signal时必须使用QT的宏SIGNAL(),当指定槽函数时必须使用宏SLOT()。如果发射者与接收者属于同一个对象的话,那么在connect调用中接收者参数可以省略。断开连接:disconnect函数来断开连接。其定义如下:boolQObject:disconnect(constQObject*sender,constchar*signal,6constObject*receiver,constchar*member)static这个函数断开发射者中的信号与接收者中的槽函数之间的关联。2.1.3属性介绍Qt的属性也基于元对象系统,在类声明中用宏Q_PROPERTY来声明。属性只能在继承于QObject的子类中声明。宏Q_OVERRIDE用来覆盖一些子类中由继承得到的属性。属性也是一个类的成员。元对象系统中设置属性和得到属性的成员函数列出如下:QObject:setProperty()可以让你控制类中那些在编译时不可用的属性。QMetaObject:propertyNames()返回所有可用属性的名称。QMetaObject:property()返回一个指定属性的属性数据:一个QMetaProperty对象。下面两个设置函数是等效的:/QButton*b和QObject*o指向同一个按钮时b-setDown(TRUE);o-setProperty(down,TRUE);2.2开发环境2.2.1VisioStudio2008简介MicrosoftVisualStudio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括MicrosoftWindows、WindowsMobile、WindowsCE、.NETFramework、.NETCompactFramework和MicrosoftSilverlight及WindowsPhone。VisualStudio2008在三个方面为开发人员提供了关键改进:1、快速的应用程序开发。2、高效的团队协作。3、突破性的用户体验。VisualStudio2008提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。VisualStudio2008包括各种增强功能,例如可视化设计器(使用.NETFramework3.5加速开发)、对Web开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。VisualStudio2008为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持AJAX的Web应用程序。开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的Web应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内7运行并完全访问ASPNET应用程序服务和Microsoft平台。2程序开发为了帮助开发人员迅速创建先进的软件,VisualStudio2008提供了改进的语言和数据功能,例如语言集成的查询(LINQ),各个编程人员可以利用这些功能更轻松地构建解决方案以分析和处理信息。VisualStudio2008还使开发人员能够从同一开发环境内创建面向多个.NETFramework版本的应用程序。开发人员能够构建面向.NETFramework2.0、3.0或3.5的应用程序,意味他们可以在同一环境中支持各种各样的项目。VisualStudio2008为开发人员提供了在最新平台上加速创建紧密联系的应用程序的新工具,这些平台包括Web、WindowsVista、Office2007、SQLServer2008和WindowsServer2008。对于Web,ASPNETAJAX及其他新技术使开发人员能够迅速创建更高效、交互式更强和更个性化的新一代Web体验。3高效的团队协作VisualStudio2008提供了帮助开发团队改进协作的扩展的和改进的服务项目,包括帮助将数据库专业人员和图形设计人员加入到开发流程的工具。32.2.2VC2008与Qt4.7的开发环境搭建VC2008与Qt开发环境搭建是十分简单的事情,Qt授权模式有三种授权协议,分别是GPL,LGPL和Commercial,选择GPL协议即可。1下载并安装Vc2008专业版。2下载并安装Qt安装包qt-win-opensource-4.7.0-vs2008.exe。3下载并安装qt-vs-addin-1.1.7.exe。4.在系统环境变量中添加D:QT4.7.0。2.3核心技术介绍2.3.1UDP协议UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。与我们所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。8UDP协议的全称是用户数据报协议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个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。2.3.2TCP协议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层之上,应用层之下的传输层。不同主机的应用层之间经常需要可靠的、像管道一样的9连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算和校验。首先,TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,它是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。在拥塞控制上,采用广受好评的TCP拥塞控制算法(也称AIMD算法),该算法主要包括三个主要部分:1,加性增、乘性减;2,慢启动;3,对超时事件做出反应。2.3.3Qt数据库支持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和QSqlRelationalTableModelSection1.ConnectingandQuerying在执行SQL命令前,必须先建立好同数据库的连接。10静
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届高考物理大一轮复习课件 第十二章 第70课时 专题强化:电磁感应中的动量问题
- DeepSeek职教应用场景规划方案
- 《婴宁》原文注释译文赏析
- 夏朝考试题及答案
- 武汉高校试题大全及答案
- 河南省驻马店市汝南县2025届九年级下学期中考二模历史试卷(含答案)
- 甘肃省天水市六校2025届高三下学期第三次联考(三模)语文试卷(含答案)
- 2025年浙江省“山海联盟”初中学业水平考试模拟卷(五)数学试题
- 玻璃板块安装防坠落措施
- 通过大数据分析优化家电产品设计
- “沙钢杯”第十一届全国钢铁行业职业技能竞赛(电工)理论试题库-中(多选题)
- 人音版 三年级下册《摇船调》教案
- 人教版五年级数学下册同分母分数加减法100道口算题
- 重庆市沙坪坝区南开中学校2023-2024学年八年级下学期期末英语试题(无答案)
- 日本明治维新完整课件
- DL-T839-2003大型锅炉给水泵性能现场试验方法
- 海南省三亚2024年八年级物理第二学期期末统考试题及答案解析
- 人教版数学八年级下册一次函数综合大题练习
- JC-T408-2005水乳型沥青防水涂料
- FZT 74005-2016 针织瑜伽服行业标准
- 2024年广东佛山市顺德区公安局辅警招聘笔试参考题库附带答案详解
评论
0/150
提交评论