首页 餐饮管理系统设计毕业论文

餐饮管理系统设计毕业论文

举报
开通vip

餐饮管理系统设计毕业论文摘要现代化的餐饮行业服务项目多、信息量大。为了提高劳动生产、降低成本、提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。餐饮管理系统正是为此而设计的。本系统根据国内中小餐厅现状开发,采用了C/S架构,同时使用MyEclipse作为前台开发工具,SQLServer2005作为后台数据库。前者是一个开放源代码的、基于Java的可扩展开发平台,具有稳定和与平台无关的特性;对于后者主要是利用了其在数据库方面的优势,其拥有对数据库强大的支持能力。本系统采用JDBC技术连接数据库。在软件开发方式上...

餐饮管理系统设计毕业论文
摘要现代化的餐饮行业服务项目多、信息量大。为了提高劳动生产、降低成本、提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。餐饮管理系统正是为此而设计的。本系统根据国内中小餐厅现状开发,采用了C/S架构,同时使用MyEclipse作为前台开发工具,SQLServer2005作为后台数据库。前者是一个开放源代码的、基于Java的可扩展开发平台,具有稳定和与平台无关的特性;对于后者主要是利用了其在数据库方面的优势,其拥有对数据库强大的支持能力。本系统采用JDBC技术连接数据库。在软件开发方式上,采用软件工程分析、设计软件的主要一般步骤及模型来完成设计,这里软件开发方法主要是面向对象的软件开发方法。本系统主要具有点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能,并继承Java的“WriteOnce,RunAnywhere”的优点,可以在任何一个系统下运行。本系统的优点在于能充分发挥客户端的处理能力,对服务器的运行数据负荷比较轻,且数据的存储管理比较通透。关键词:餐饮管理系统,SQLServer2005,MyEclipse,Java ABSTRACTModerncateringindustryservicesmoreinformative.Inordertoimprovelaborproductivity,reducecosts,improveservicequalityandmanagementlevel,thuspromotingeconomicefficiency,havetorelyoncomputerstocarryoutthemodernizationofinformationmanagement.RestaurantManagementSystemisdesignedforthispurpose. Thesystemdevelopedunderthecurrentsituationofdomesticsmallandmediumsizedrestaurant,withaC/Sstructure,usingMyEclipseasadevelopmenttool,SQLServer2005asbackenddatabase.Theformerisanopensource,Java-basedextensibledevelopmentplatform,hasthestabilityandcharacteristicsofplatform-independent;forthelatteristheuseofitsadvantagesinthedatabase,whichhasastrongabilitytosupportthedatabase.ThesystemconnectstothedatabaseusingJDBCtechnology.Thewayinsoftwaredevelopmentusingsoftwareengineeringanalysis,designsoftware,andmodelthemaingeneralstepstocompletethedesign,wherethemainsoftwaredevelopmentmethodisobject-orientedsoftwaredevelopmentmethods. Thissystemhasthealacartefeatures,intelligentaccesstodishes,automatedbillingfunction,turnoverreportingcapabilities,andinheritJava's"WriteOnce,RunAnywhere"theadvantagesthatcanrunonanysystem.Theadvantagesofthissystemcangivefullplaytotheclient'sprocessingpowertorunthedataloadontheserverrelativelylight,andthedatastoragemanagementmoretransparent. Keywords:Hotelmanagementsystem,SQLServer2005,MyEclipse,Java目录摘要 IABSTRACT II第1章引言 11.1背景和意义 11.2研究内容 1第2章相关技术简介 22.1JAVA简介 22.2开发工具MyEclipse简介 22.3SQLServer2005 22.4C/S结构 3第3章系统分析 43.1问题分析 43.2可行性研究 53.2.1技术可行性分析 53.2.2经济可行性分析 53.3需求分析 53.3.1系统功能需求 53.3.2系统软硬件需求 63.4系统数据流分析 63.4.1顶层数据流图 63.4.2第0层数据流图 73.4.3前台服务数据流图 73.4.4结账报表数据流图 8第4章系统概要设计 94.1系统总体结构设计 94.2数据库设计 94.2.1数据库概念设计 94.2.2E-R图 114.2.3数据库逻辑结构设计 12第5章系统详细设计与实现 135.1公共模块设计 135.1.1数据库连接类 135.1.2自定义表格组件 145.2主窗体设计 155.3用户登录窗口设计 155.4登录模块设计 175.4.1功能概述 175.4.2功能设计与实现 175.5开台签单工作区设计 195.5.1功能概述 205.5.2主要功能设计与实现 205.6自动结账工作区设计 225.6.1功能概述 225.6.2主要功能设计与实现 235.7结账报表工作区设计 275.7.1功能概述 275.7.2主要功能设计与实现 285.8后台管理工作区设计 31第6章系统测试 336.1部分单元测试 336.1.1智能点菜功能测试 336.1.2菜品管理功能测试 346.2集成测试 356.3系统测试 36第7章结束语 37致谢 38参考文献 39附录源代码 40 第1章引言1.1背景和意义经济的快速发展,人们的生活水平和消费意识的提高,促进了旅游业的发展。餐饮行业将面临着机遇和挑战。面对快速发展的信息产业带来的影响。将电脑技术和电脑服务引入餐饮管理成为一种趋势。众多餐饮企业中,中小型餐饮企业由于他们的先天条件,使他们不能投入大量的资金进行这项必须的改革。因此开发一套简单,实用的中小型餐饮企业管理系统是十分有必要的。现在我国的中小型餐饮信息管理水平普遍不高,有的还停留在纸介质的基础上,这种管理手段已不能适应时代的发展,因此它浪费了许多人力和物力。在当今信息时代这种传统的管理方法必然被计算机为基础的信息管理系统所代替。如果本系统能被中小型餐饮企业采用,将会改变以前靠手工管理餐饮信息的状况,可以树立良好的餐饮企业形象,提高工作效率。1.2研究内容餐饮管理系统研究的内容涉及系统登陆、菜品管理、菜系管理、台号管理、营业报表管理、系统管理、制定菜单功能模块、模糊检索获取菜品功能模块、快捷找零功能模块。其中系统登陆、管理是将用户等级划分为管理员,前台职员;菜品、菜系管理将菜色大致分为几个菜系(浙菜、川菜等),然后进行详细化;快捷找零及模糊检索模块都是为了能提高工作质量和效率。在设计过程中应该解决的主要问题有:1.系统具备一般餐厅在餐饮管理中所包括的各项功能2.使系统能够使用方便又具有美观的软件界面3.从软件的角度快捷开发这个系统第2章相关技术简介2.1JAVA简介Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(JavaEnterpriseAPIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。2.2开发工具MyEclipse简介MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的Java集成开发环境,包括了完备的编码、调试、测试和发布功能。2.3SQLServer2005本系统所使用的数据库是SQLServer2005.SQLServer2005是微软在2005年12月发布的新一代数据库产品,它对SQLServer2000的性能、可靠性、可用性和可编程性进行了全面扩展和升级,对关系数据库引擎、大规模联机事务处理、数据仓库和电子商务应用进行了全方位整合,成为构建企业数据管理和商务智能解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 的首先数据平台。特别是它与MyEclipse、MicrosoftOfficeSystem等开发工具及软件系统进行了无缝集成,为数据库开发人员提供了一个高效、灵活和开放式的开发环境。2.4C/S结构C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。C/S结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成DBMS的核心功能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。C/S结构的优点在于能充分发挥客户端的处理能力,对服务器的运行数据负荷比较轻,且数据的存储管理比较通透。第3章系统分析3.1问题分析2009年,作为六大新兴消费热点行业之一的旅游业,将成为我国居民生活中的一大消费主题,并且,随着整个消费升级概念的不断深入人心,人们将会不断地向更高生活水准看齐,旅游市场前景发展十分看好。与此同时,酒店、餐饮娱乐行业日趋发达,引入全方位的电脑服务和电脑管理日益流行。同时,酒店和餐厅娱乐业引入电脑服务和管理也取得了优良的经济效益和社会效益。为此,国家建设部明确规定:凡星级酒店餐厅在项目审批时,其设计方案必须包括电脑管理系统,否则不予立项。可见,餐饮管理信息化势在必行。传统的餐饮管理往往令管理者花大量的时间来处理顾客投诉,例如错误查询、烦琐的开台登记和结账手续、顾客费用计算错误、菜品资料不能及时提供等,从而影响上座率,使管理人员不得不集中精力 规划 污水管网监理规划下载职业规划大学生职业规划个人职业规划职业规划论文 管理运行策略和进行决策。另一方面,传统的手工操作管理也存在着许多无法避免的问题,例如收银工作中跑单、漏单、偷钱现象;个别服务员作弊、改单、宰客现象。以上问题可通过电脑系统辅助解决,餐饮管理的信息化,不仅是体现餐饮现代化形象的一个重要标志,而且对于提高员工工作效率,加速资金周转、降低各项成本及改善服务质量都有十分积极的作用。综上所述,使用餐饮管理系统,将会有以下好处:(1)电脑收银,打印账单快速准确,减少顾客等待时间,并可杜绝收银过程中的舞弊现象。(2)高效的信息管理能有效的提高上座率,增加营业收入。(3)提高决策依据,管理者可以随时了解经营情况,以制定相应的经营方针。(4)减轻员工的工作负担,从而使员工把更多的精力放在提高为顾客服务的质量上。(5)简单、方便地保存和查询历史资料,树立良好的餐厅形象。 3.2可行性研究3.2.1技术可行性分析本系统采用MyEclipse/SQLServer2005编程语言和数据库管理系统来开发餐饮管理系统,在以上限制条件下利用现有技术,完全可以实现预期目标。3.2.2经济可行性分析在经济方面的可行性考虑的是耗费的资金与收益之间的对比关系。在用这套系统时,只需添置低档计算机,但它可增强用户在管理方面的效率是显著的。而且如果条件允 许可 商标使用许可商标使用许可商标使用许可商标使用许可商标使用许可 添加打印机以便查询能方便打印资料作为参考。3.3需求分析一个成熟的餐饮管理系统不仅仅是记录顾客的信息,提供查询,报表存储等一系列简单的工作,它能让工作人员从烦琐的手工操作中解脱,并且餐饮管理系统本身就代表着一种管理方法。随着它的深入,将带动企业的运作,为管理和决策提供支持。为了达到这个要求,它必须依靠高起点的硬件环境和软件开发工具来保证系统的稳定和正常运行。餐厅电脑系统要求24小时连续运行,数据量大,可靠性要求高,因此整个电脑系统供电采用专线方式,加配UPS(不间断供电系统),并合理接地,以便保障整套系统的正常运行。3.3.1系统功能需求(1)前台服务功能顾客在消费之前必须进行开台登记,然后才能进行各种消费,例如:点菜就餐、酒水消费、外卖小吃等等,将这些消费信息记录在一张消费单上,就满足了顾客的消费录入需求。因为本系统多用于中小餐厅,顾客流动比较大,所以特需要加入了一个快速检索菜品的功能,将尽可能的提升操作人员的办理业务的效率。(2)后台管理功能餐厅后勤人员需要分类管理各种不同的菜品,并将它们纳入相应的菜系;餐厅领班需要对房间台号进行编排,并在不同的时间段或顾客需求来改变座位数。细分如下三个需求:台号管理、菜品管理、菜系管理。(3)结账报表功能餐厅管理人员需要查询餐厅营业的各种信息,并以报表形式体现。细分为三个需求,其余的根据餐厅要求,正在不断增加中。日结账报表、月结账报表、年结账报表。(4)系统维护功能餐厅电脑中心需要对系统运行的有关参数进行设置,其中部分参数的设置必须有一定的设置权限方可操作。细分为三个需求:修改密码、基础数据设置、初始化设置。3.3.2系统软硬件需求本系统的软硬件需求如下:(1)在Vista平台上运行;(2)后台数据库用SQLServer2005开发;(3)前台应用程序用MyEclipse开发;(4)个人计算机,P4CPU,1G内存。3.4系统数据流分析符号意义说明为:正方形(或立方形),表示数据的源点或终点,即指外部实体。圆柱体,表示数据存储。圆形,表示变换数据的处理。箭头,表示数据流,即特定数据的流动方向。3.4.1顶层数据流图本系统的顶层数据流图如图3-1所示图3-1顶层数据流图3.4.2第0层数据流图将顶层图中的加工(即系统)分解成若干个子加工,并用一些新定义的数据流进行连接,使得系统的输入数据流(即顶层图的输入数据流)经过以连串的加工处理后,变换成系统的输出数据流(即顶层图的输出数据流)。本系统的0层数据流图如图3-2所示。图3-2第0层数据流图3.4.3前台服务数据流图当数据流图中存在某个比较复杂的加工时,可以将它分解成子图。分解的方法是:将该加工看作一个小系统,该加工的输入输出数据流就是这个假设的小系统的输入输出数据流。由于篇幅所限下面仅画出前台服务部分和结账报表部分的第一层图。本系统的前台服务数据流图如图3-3所示。图3-3前台服务数据流图3.4.4结账报表数据流图本系统的结账报表数据流图如图3-4所示。图3-4结账报表数据流图第4章系统概要设计4.1系统总体结构设计本文设计的该餐饮管理系统的总体结构设计如图4-1所示。图4-1餐饮管理系统的总体结构设计图4.2数据库设计在开发应用程序时,对数据库的操作时必不可少的,数据库的设计要根据程序的需求及其功能制定,而一个数据库的设计优秀与否,将直接影响到软件的开发进度和性能,所以对数据库的设计就显得尤为重要。本系统选取SQLServer2005作为后台数据库。4.2.1数据库概念设计数据库设计 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 系统设计过程中的重要组成部分,它是通过管理系统的整体需求而制定的,数据库设计的好坏直接影响到系统的后期开发。下面对本系统具有代表性的数据库设计进行详细说明。餐台和菜系在本系统中最简单的实体,在本系统中用来描述餐台信息的只有台号和座位数。描述菜系的主要是名词。餐台信息表(tb_desk)如表4-1所示,菜系信息表(tb_sort)如表4-2所示。表4-1餐台信息表列名数据类型数据长度是否可空说明numVARCHAR5NOTNULL台号(主键)seatingINT4NULL座位数表4-2菜系信息表列名数据类型数据长度是否可空说明idINT4NOTNULL序号(主键)nameVARCHAR20NULL名称在描述菜品实体时,加入了助记码,目的是为了实现智能化获取菜品功能,通过这一功能系统操作员可以快速地获取顾客所点的菜品信息,菜品信息表(tb_menu)如表4-3所示。表4-3菜品信息表列名数据类型数据长度是否可空说明numCHAR8NOTNULL编号(主键)sort_idINT4NULL所属菜系nameVARCHAR20NULL名称codeVARCHAR10NULL助记码unitVARCHAR4NULL单位unit_priceINT4NULL单价stateCHAR4NULL标记消费单是用来记录每次消费的相关信息,例如消费时使用的餐台、消费时间、消费金额等。消费单信息表(tb_order_form)如表4-4所示。表4-4消费单信息表列名数据类型数据长度是否可空说明numCHAR11NOTNULL编号(主键)desk_numVARCHAR5NULL消费餐台datetimeDATETIME8NULL消费时间moneyINT4NULL消费金额user_idINT4NULL操作用户消费项目用来记录每个消费单消费的菜品,记录的主要信息有所属消费单、消费菜品的名称、消费数量、消费额。消费项目信息表(tb_order_item)如表4-5所示。表4-5消费项目信息表列名数据类型数据长度是否可空说明idINT4NOTNULL项目号(主键)order_form_numCHAR11NULL所属消费单号menu_numCHAR8NULL消费菜品号amountINT4NULL消费数量totalINT4NULL消费额用户信息表用来记录每个操作员的信息,记录的主要信息用户编号、用户名、性别、生日、身份证、密码、使用权。用户信息表(tb_user)如表4-6所示。表4-6用户信息表列名数据类型数据长度是否可空说明idINT4NOTNULL用户编号(主键)nameVARCHAR8NULL用户名sexCHAR2NULL性别birthdayDATETIME8NULL生日id_cardVARCHAR20NULL身份证passwordVARCHAR20NULL密码freezeCHAR4NULL使用权4.2.2E-R图根据以上分析得到系统数据表实体关系图即E-R图如图4-2所示。图4-2E-R图4.2.3数据库逻辑结构设计在数据库概念设计中已经分析了菜品、消费单、消费项目等主要的数据库实体对象,这些实体对象是数据表结构的基本模型,最终的数据模型都要实施到数据库中,形成整体的数据结构,可以使用PowerDesigner工具完成这个数据库的建模。具体的模型结构如图4-3所示。图4-3餐饮管理系统数据库物理数据模型图第5章系统详细设计与实现5.1公共模块设计5.1.1数据库连接类数据库连接类负责加载数据库驱动程序,及创建和关闭数据库连接,为了最大程度地应用每个已经缓解的数据库连接,这里将其保存到了Threadlocal类的对象中。具体代码如下:importjava.sql.*;publicclassJDBC{ privatestaticfinalStringDRIVERCLASS="com.microsoft.sqlserver.jdbc.SQLServerDriver"; privatestaticfinalStringURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=db_DrinkeryManage"; privatestaticfinalStringUSERNAME="sa"; privatestaticfinalStringPASSWORD=""; privatestaticfinalThreadLocal<Connection>threadLocal=newThreadLocal<Connection>(); static{ try{ Class.forName(DRIVERCLASS).newInstance(); }catch(Exceptione){ e.printStackTrace(); } } publicstaticConnectiongetConnection(){ Connectionconn=threadLocal.get(); if(conn==null){ try{ conn=DriverManager.getConnection(URL,USERNAME,PASSWORD); threadLocal.set(conn); }catch(SQLExceptione){ e.printStackTrace(); } } returnconn; } publicstaticbooleancloseConnection(){ booleanisClosed=true; Connectionconn=threadLocal.get(); threadLocal.set(null); if(conn!=null){ try{ conn.close(); }catch(SQLExceptione){ isClosed=false; e.printStackTrace(); } } returnisClosed; }}5.1.2自定义表格组件通过JTable类的getDefaultRenderer()方法可以得到单元格对象,这个单元格对象代码的是除表格头之外的部分单元格,在MTable类中对该方法进行简单的重构,即通过单元格对象设置单元格内容水平为居中显示。具体代码如下:publicTableCellRenderergetDefaultRenderer(Class<?>columnClass){ DefaultTableCellRenderertableRenderer=(DefaultTableCellRenderer)super .getDefaultRenderer(columnClass); tableRenderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER); returntableRenderer; }5.2主窗体设计本系统将主窗体划分为6个工作区,分别是开台签单工作区、自动结账工作区、后台管理工作区、结账报表工作区、系统安全工作区、系统提示区,餐饮管理系统主窗体效果如图5-1所示。图5-1餐饮管理系统主窗体效果图5.3用户登录窗口设计用户登录窗口时每个应用软件都不可缺少的部分,其主要功能是保证用户的数据安全;同时用户登录窗口也是用户看到的第一个系统界面。因此,一个设计优秀的用户登录窗口,将有效地提供用户对系统的第一印象。登录窗口如图5-2所示。图5-2登录窗口本系统对“登录”、“重置”和“退出”按钮添加了事件监听器,使得它们能在不同的状态下显示不同的效果,如图5-3所示为默认情况下按钮的效果,如图5-4则展示了当光标位于按上方时按钮的效果,如图5-5展示了当按钮被按下时的效果。图5-3默认状态图5-4光标位于上方图5-5按钮被按下具体代码实现如下:finalJButtonlandButton=newJButton(); landButton.setMargin(newInsets(0,0,0,0)); landButton.setContentAreaFilled(false); landButton.setBorderPainted(false); URLlandUrl=this.getClass().getResource("/img/land_submit.png"); landButton.setIcon(newImageIcon(landUrl)); URLlandOverUrl=this.getClass().getResource( "/img/land_submit_over.png"); landButton.setRolloverIcon(newImageIcon(landOverUrl)); URLlandPressedUrl=this.getClass().getResource( "/img/land_submit_pressed.png"); landButton.setPressedIcon(newImageIcon(landPressedUrl)); landButton.addActionListener(newLandButtonActionListener()); buttonPanel.add(landButton);5.4登录模块设计5.4.1功能概述本模块的主要功能是对用户身份进行,验证只有系统的合法用户才能进入系统。5.4.2功能设计与实现用户单击“登录”按钮后,系统将首先判断是否选择了登录用户,然后再判断是系统默认用户,还是系统管理员,最后验证登录密码,如果通过验证则登录成功,否则登录失败并弹出提示。系统登录程序开发流程图如图5-6所示:图5-6系统登录程序开发流程图实现具体代码如下:classLandButtonActionListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ Stringusername=usernameComboBox.getSelectedItem().toString(); if(username.equals("请选择")){ JOptionPane.showMessageDialog(null,"请选择登录用户!","友情提示", JOptionPane.INFORMATION_MESSAGE); resetUsernameAndPassword(); } char[]passwords=passwordField.getPassword(); StringinputPassword=turnCharsToString(passwords); if(username.equals("陆俊")){ if(inputPassword.equals("111")){ land(null); Stringinfos[]={"请立刻单击“用户管理”按钮添加用户!","添加用户后需要重新登录,本系统才能正常使用!"}; JOptionPane.showMessageDialog(null,infos,"友情提示", JOptionPane.INFORMATION_MESSAGE); }else{ JOptionPane.showMessageDialog(null, "默认用户“陆俊”的登录密码为“111”!","友情提示", JOptionPane.INFORMATION_MESSAGE); passwordField.setText("111"); } }else{ if(inputPassword.length()==0){ JOptionPane.showMessageDialog(null,"请输入登录密码!","友情提示", JOptionPane.INFORMATION_MESSAGE); resetUsernameAndPassword(); } Vectoruser=Dao.getInstance().sUserByName(username); Stringpassword=user.get(5).toString(); if(inputPassword.equals(password)){ land(user); }else{ JOptionPane.showMessageDialog(null,"登录密码错误,请确认后重新登录!", "友情提示",JOptionPane.INFORMATION_MESSAGE); resetUsernameAndPassword(); } }}5.5开台签单工作区设计开台签单工作区的主要功能有开台、点菜、加菜、签单、查看开台信息和签单信息,开台签单工作区的效果如图5-7所示。图5-7开台签单工作区效果5.5.1功能概述当顾客要求开台用餐时,首先在图5-6下方的“台号”下拉列表框中选择分配的餐台号,然后选择获取顾客点菜的方式,默认为通过助记码获取,也可以通过编号获取,这里假设以助记码获取。在输入商品助记码的过程中会在“商品名称”文本框中显示匹配的商品的名称,并在“单位”文本框中显示该商品的销售单位。当在“商品名称”文本框中显示顾客所点的菜品时,如果点菜数量为1,可以通过按ENTER键将该菜品添加到签单列表中;如果需要修改数量,修改后则需要通过单击“开单”按钮加到签单列表中。新点的菜品在表格的最前方显示NEW(如图5-7所示),在这种情况下可以选中后点击“取消”按钮取消菜品。最后,在点菜结束后单击“签单”按钮,新点菜品前方的NEW会消失(如图5-8所以),这种情况将不允许取消,至此点菜完成。如果顾客在用餐的过程中要求添加菜品,可以再“开台列表”中选择要求添加菜品的餐台号,然后重复点菜过程。如图5-9所示。图5-8签单后签单列表图5-9新增菜品后列表5.5.2主要功能设计与实现智能点菜功能:通过为文本框添加键盘事件监听器实现。当按下的是ENTER键时,等同于单击“开单”按钮;如果按下的不是ENTER键,则获取输入内容;同时判断输入的是商品编号,还是商品助记码,并按指定条件查询所以符合所有符合条件的菜品,如果存在符合条件的菜品,则获取第一个符合条件的菜品,并显示菜品名称和单位,否则将菜品名称和单位设置为空。智能点菜功能程序开发流程图如图5-10所示:图5-10智能点菜功能程序开发流程图具体代码如下:codeTextField.addKeyListener(newKeyAdapter(){ publicvoidkeyReleased(KeyEvente){ if(e.getKeyCode()==KeyEvent.VK_ENTER){ makeOutAnInvoice(); }else{ Stringinput=codeTextField.getText().trim(); Vectorvector=null; if(input.length()>0){ if(codeRadioButton.isSelected()){ vector=dao.sMenuByCode(input); if(vector.size()>0) vector=(Vector)vector.get(0); else vector=null; }else{ vector=dao.sMenuById(input); if(vector.size()>0) vector=(Vector)vector.get(0); else vector=null; } } if(vector==null){ nameTextField.setText(null); unitTextField.setText(null); }else{ nameTextField.setText(vector.get(3).toString()); unitTextField.setText(vector.get(5).toString()); } } } });5.6自动结账工作区设计5.6.1功能概述自动结账工作区有两个主要功能,一个功能是自动计算当前选中餐台的消费金额,例如选中餐台“8001”,如图5-11所示,在自动结账工作区将显示该餐台的消费金额,如图5-12所示。图5-11选中台号为“8001”图5-12“8001”的消费金额另一个功能是在结账时自动计算找零金额。用户输入“实收金额”后单击“结账”按钮,系统将自动计算出找零的金额,并弹出一个结账完成的提示框,如图5-13所示。图5-13结账5.6.2主要功能设计与实现首先实现自动计算当前选中餐台消费金额的功能,即为与“签单列表”对应的表格模型添加一个TableModelListenr监听器,在监听器中通过循环重新计算该餐台的消费金额,并更新“消费金额”文本框。自动结账功能(上)程序开发流程图如图5-14所示:图5-14自动结账功能(上)程序开发流程图具体代码如下:leftTableModel.addTableModelListener(newTableModelListener(){ publicvoidtableChanged(TableModelEvente){ introwCount=leftTable.getRowCount(); floatexpenditure=0.0f; for(introw=0;row<rowCount;row++){ expenditure+=Float.valueOf(leftTable.getValueAt(row,7) .toString()); } sum=expenditure; expenditureTextField.setText(expenditure+"0"); }});然后实现结账功能。在结账之前首先要判断是否有未签单的菜品,如果有则弹出提示信息,如果没有则获得消费金额;然后判断实收金额是否小于消费金额,如果小于同样弹出提示,否则进行结账操作,将消费信息持久化到数据库,并弹出结账完成额提示框;最后将“实收金额”文本框的“找零金额”文本框设置为默认值。自动结账功能(下)程序开发流程图如图5-15所示:图5-15自动结账功能(下)程序开发流程图具体代码如下:introwCount=leftTable.getRowCount();StringNEW=leftTable.getValueAt(rowCount-1,0) .toString(); if(NEW.equals("NEW")){ JOptionPane.showMessageDialog(null,"请先确定未签单商品的处理方式!","友情提示",JOptionPane.INFORMATION_MESSAGE); }else{ floatexpenditure=Float.valueOf(expenditureTextField .getText()); floatrealWages=Float.valueOf(realWagesTextField .getText()); if(realWages<expenditure){ if(realWages==0.0f) JOptionPane.showMessageDialog(null,"请输入实收金额!","友情提示", JOptionPane.INFORMATION_MESSAGE); else JOptionPane.showMessageDialog(null, "实收金额不能小于消费金额!","友情提示", JOptionPane.INFORMATION_MESSAGE); realWagesTextField.requestFocus(); }else{ changeTextField.setText(realWages-expenditure +"0"); String[]values={ getNum(), rightTable.getValueAt(selectedRow,1) .toString(), Today.getDate() +""+rightTable.getValueAt(selectedRow,2), expenditureTextField.getText(), user.get(0).toString()}; dao.iOrderForm(values); values[0]=dao.sOrderFormOfMaxId(); for(inti=0;i<rowCount;i++){ values[1]=leftTable.getValueAt(i,2) .toString(); values[2]=leftTable.getValueAt(i,5) .toString(); values[3]=leftTable.getValueAt(i,7) .toString(); dao.iOrderItem(values); } JOptionPane.showMessageDialog(null,rightTable .getValueAt(selectedRow,1) +"结账完成!","友情提示", JOptionPane.INFORMATION_MESSAGE); rightTableModel.removeRow(selectedRow) leftTableValueV.removeAllElements(); leftTableModel.setDataVector(leftTableValueV, leftTableColumnV); realWagesTextField.setText("0.00"); changeTextField.setText("0.00"); menuOfDeskV.remove(selectedRow); } } } }5.7结账报表工作区设计5.7.1功能概述本系统提供了3种方式的结账报表,分别是日结账报表、月结账报表和年结账报表,在结账报表工作区只提供了这3种结账报表功能的按钮,如图5-1所示。日结账报表功能提供了对一日营业情况的统计,包括日开台数量、各个餐台的消费金额,菜品的销售情况、各个菜品的日销售情况,及日营业额等,如图5-16所示。图5-16日结账报表月结账报表功能提供了对一个月营业情况的统计,包括日开台总数、日总营业额、日开台的平均消费额、日开台的最大和最小消费额,以及当月的开台总数、月营业额、以及一个月中的日平均营业额、最大的最小消费额,如图5-17所示。图5-17月结账报表年结账报表功能提供了对一年营业情况的统计,包括一年中每天的营业额。每月的营业额。每月同一日期的总营业额,以及一年的营业额,如图5-18所示。图5-18年结账报表5.7.2主要功能设计与实现首先要解决在实现结账报表功能时日期的有效性问题,用来存放各个月份拥有的天数,默认2月份为28天。为了方便使用,将月份月数组的索引一一对应,即不使用数组索引为1的位置。具体代码如下:privateintdaysOfMonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};下面为年度下拉列表框添加事件监听器。首先获得选中的年度,并判断是平年还是闰年,以确定2月份的天数,即修改数组daysOfMonth[]中的索引为2的值,如果为平年则修改为28,为闰年则修改为29;然后获得当前选中的月份,如果当前选中的为2月份,则继续获得日下拉列表框拥有可选项的数量,如果日下拉列表框有可选项的数量不等于数组daysOfMonth[]中索引为2的值,当日下拉列表框拥有可选项的数量为28时,则为日下拉列表框加一个可选项“29”,否则从日下拉列表框中移除。年度下拉列表框程序开发流程图如图5-19所示:图5-19年度下拉列表框程序开发流程图具体代码如下: yearComboBox.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ intyear=(Integer)yearComboBox.getSelectedItem(); judgeLeapYear(year); intmonth=(Integer)monthComboBox.getSelectedItem(); if(month==2){ intitemCount=dayComboBox.getItemCount(); if(itemCount!=daysOfMonth[2]){ if(itemCount==28) dayComboBox.addItem(29); else dayComboBox.removeItem(29); } } } });下面为月份下拉列表添加事件监听器。首先获得选中的月份,并获得日下拉列表框拥有的数量。如果日下拉列表框拥有可选项的数量不等于当前选中月份拥有的天数,当日下来列表框拥有可选项的数量大于当前选中月份拥有的天数时,则移除日下拉列表框中最大的可选项,并将日下拉列表框拥有可选项的数量减1;否则将日下来列表框拥有可选项的数量加1,并添加到日下拉列表框的可选项中。月份下拉列表框程序开发流程图如图5-20所示:图5-20月份下拉列表框程序开发流程图具体代码如下:monthComboBox.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ intmonth=(Integer)monthComboBox.getSelectedItem(); intitemCount=dayComboBox.getItemCount(); while(itemCount!=daysOfMonth[month]){ if(itemCount>daysOfMonth[month]){ dayComboBox.removeItem(itemCount); itemCount--; }else{ itemCount++; dayComboBox.addItem(itemCount); } } } });通过年度和月份下拉列表框的事件监听器对日下拉列表框可选项的控制,无论选择哪一年或哪一月,日下拉列表框提供的日期可选项都是一个有效的日期。5.8后台管理工作区设计在后台管理工作区提供了对台号。菜系和菜品信息的维护功能。早添加信息时,一是验证数据的合法性,例如在添加台号信息时,不小心将座位位数输入为100,在单击“添加”按钮时将弹出座位数输入错误的提示,如图5-21所示;再就是查看新添加的信息是否已经存在,例如在添加菜系信息时,输入“酒水类”后单击添加按钮,将弹出菜系已经存在的提示,因为添加同名的菜系是没有意义的,如图5-22所示。图5-21餐台座位数输入错误图5-22添加菜系已经存在在删除信息之前,通常情况下建议弹出一个确认提示框,以免由于疏忽错误删除信息,如图5-23所示。图5-23删除菜品之前弹出的确认提示框第6章系统测试6.1部分单元测试6.1.1智能点菜功能测试在测试快速获取商品功能时,输入部分助记码后再输入一个空格,在“商品名称”文本框中仍然显示输入空格之前的商品名称,如图6-1所示。图6-1输入空格后的效果这其中有2个小错误,一个错误时输入空格后就不应该显示原理的商品名称,这是因为在获取输入内容时去掉了首尾空格。具体代码如下: Stringinput=codeTextField.getText().trim();另一个错误时该文本框就不应该允许输入空格,建议将去掉首尾空格的代码去掉,这样对提升软件性能还是有好处的。解决 办法 鲁班奖评选办法下载鲁班奖评选办法下载鲁班奖评选办法下载企业年金办法下载企业年金办法下载 :通过重载KeyListener类的keyTyped(KeyEvente)方法实现,通过该方法的入口参数e的getKeyChar()方法可以得到此次输入的字符,如果空格则通过consume()方法销毁此次事件。具体代码如下:publicvoidkeyTyped(KeyEvente){ if(e.getKeyChar()=='') e.consume(); }同样,对“数量”文本框也可以采用这种办法控制用户输入的内容,并且可以控制输入数量的最大位数和不允许输入的第一位为0。具体代码如下:amountTextField.addKeyListener(newKeyAdapter(){ publicvoidkeyTyped(KeyEvente){ intlength=amountTextField.getText().length(); if(length<2){ Stringnum=(length==0?"123456789":"0123456789"); if(num.indexOf(e.getKeyChar())<0) e.consume(); }else{ e.consume(); } } }
本文档为【餐饮管理系统设计毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
满天星0822
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:56
分类:工学
上传时间:2018-06-09
浏览量:2