毕业论文-基于eclipse和oracle餐厅管理系统设计与实现学士学位论文.doc
毕 业 设 计题目: 基于eclipse和oracle餐厅管理系统设计与实现 学院: 计算机与通信学院 专业:信息管理与信息系统 班级: 1202 学号:201203110208 学生姓名: 熊 强 导师姓名: 李 峰 完成日期: 2016年6月7日 诚 信 声 明本人声明:1、本人所呈交的毕业设计(论文)是在老师指导下进行的研究工作及取得的研究成果;2、据查证,除了文中特别加以标注和致谢的地方外,毕业设计(论文)中不包含其他人已经公开发表过的研究成果,也不包含为获得其他教育机构的学位而使用过的材料;3、我承诺,本人提交的毕业设计(论文)中的所有内容均真实、可信。作者签名: 日期:2016年 6 月 3 日毕业设计(论文)任务书 题目: 基于eclipse和oracle的餐厅管理系统设计与实现 姓名 熊强 学院 计算机与通信学院 专业 信息管理与信息系统 班级 1202 学号 201203110208 指导老师 李峰 职称 讲师 教研室主任 曾赛峰 一、 基本任务及要求: 本系统是使用MVC三层框架技术来完成控制层、界面层和数据模型层的设计。由java的Swing技术来进行界面设计,数据模型层传输过程中各项数据的接收、存储,控制层来完成各项业务逻辑。同时用oracle数据库来存储数据,保证数据的完整性。 该系统主要功能有:登录功能、人员管理、菜单管理、订单管理、库存管理、以及桌位管理。 二、 进度安排及完成时间: 第1 周 老师集中指导,分析并明确课题任务与要求,学习资料收集检索方法,并搜索收集所需中英文资料。 第2-3 周 阅读资料、书籍,学习所需知识,撰写文献综述。 第4-5 周 毕业实习、完成毕业实习报告撰写。 第 6 周 建立毕业设计实验环境;初步拟订设计方案;完成开题报告。 第 7 周 完成总体设计。 第8-12周 具体设计、调试、修改、实现。 第13-14周 撰写毕业论文(说明书)。 第15周 完成毕业答辩资格审查、毕业答辩准备。 第16周 毕业答辩。 目 录摘要IAbstract:II第1章 前 言11.1 课题背景11.2 研究意义11.3 课题目的与方向11.4 系统开发环境介绍21.4.1 MVC简介21.4.2 Swing技术21.4.3 Oralce技术3第2章 需求分析42.1可行性分析42.1.1技术可行性研究42.1.2经济可行性研究42.1.1操作可行性研究42.2 编写目的52.3 功能分析52.4 数据字典5第3章 总体设计73.1 功能结构图83.2业务实体设计93.3 数据库设计93.3.1实体属性图103.3.2数据库详细设计11第4章 详细设计与实现144.1 系统主模块设计144.1.1登录模块144.1.2主界面模块154.2 系统功能模块设计184.2.1订单模块184.2.2菜谱管理194.2.3桌位管理20第5章 调试与运行225.1测试方法225.1.1黑盒测试225.1.2黑盒测试225.2调试过程225.2.1登录调试225.2.2菜单工具栏调试235.2.3订单调试245.2.4菜谱调试255.2.5桌位调试25总 结26参考文献27致 谢28附录29 I湖南工程学院毕业设计(论文)基于eclipse和oracle的餐厅管理系统设计与实现摘要:随着科技的发展,计算机的普及,信息技术也在企业当中得到了越来越广泛的应用,各行各业的管理者也提出了更高的要求,餐饮行业也不例外。一直以来餐饮管理者在管理企业时主要是以人为主体,耗费大量的人力、物力、财力等,而且效率相对低下,在操作过程中还可能因为人为原因造成巨大损失。为及时、高效的给管理者提供强有力的管理手段,针对传统管理带来的诸多不便,结合信息技术,开发出餐厅管理系统。系统运用Java SE中Swing技术完成系统登录,主界面,订餐等各个界面的设计,采用Oracle作为数据库保存数据,在代码管理、设计方面,使用MVC分层模式,将实现类似作用的文件放置在一起,方便管理。本系统完成了餐厅管理当中基本的业务功能,包括订餐到付单、菜单及库存的管理,初次之外还有所有企业最基本的人事管理,还增加了登录模块。关键词:餐厅管理;MVC;数据库技术;OracleThe design and Implementation of restaurant management system based on Eclipse and Oracle Abstract:With the development of science and technology, the popularity of computers, information technology has been widely used in enterprises, the management of all walks of life have made a higher request, the food and beverage industry is no exception. Has been catering management in enterprise management is mainly take the human as the main body, consuming a lot of manpower, material and financial resources and relatively low efficiency, in operation process may also because human reason caused huge losses. For the timely and efficient management to provide a powerful tool for the traditional management of the inconvenience, combined with information technology, the development of restaurant management system. System uses Java se swing technology to complete the system registry, the main interface, reservation and so on each interface design, using Oracle as a database to store data, code management, design, using the MVC hierarchical mode, will achieve a similar role to the file placed together, convenient management. The system completed the restaurant management basic business functions, including ordering to pay a single, menu and inventory management, outside for the first time, and all enterprises the basic personnel management, also increased the login module. Keywords:restaurant management; MVC; database technology; Oracle第1章 前 言1.1 课题背景随着电子信息化的不断发展,各行各业业都已经使用这项技术为创造自己的利益。同时也给我们生活带来了相当大的改变,创造了许许多多的便利,有了更优质的生活质量。类似像电子商城、社区论坛、门户网站等等。而随着人们生活水平的提高,人们便开始向更好更高要求的生活质量迈进,最平常的人们的吃,更多的人会在日常生活中时不时的到各样的餐馆、酒店中大餐一顿,享受一下。就餐的人越多,原本的各项管理制度就可能随着人员数量的变化慢慢的不再能够满足于管理需要,需要的是更加便利更加高效的管理方法。既能增加餐厅业务管理的运行速率,又能快速的给顾客以回复。在当前的状况下,满足的餐厅管理的需要,又结合现代电子信息技术,开发出一个餐厅管理系统,提高管理水平,简化各种复杂操作,在最合理最短时间内完成业务规范操作。1.2 研究意义随着网络和网络设备的普及,即使是在比较偏远的地方也应该听说多电子信息技术,越来越多的人开始向着方面发展,而其他人,随便不能说自己开发出一个什么样子的软件,但是对于形形色色的软件的运用,我们都能够在短时间内上手,并且运用的熟练,更别说是一个只用来管理餐厅各项业务流程的系统了。对于餐饮业来说,能够满足于日常销售的管理,完成从点餐到结算等一系列过程,然后提供方便的操作方式,就可能对其有一定程度上的帮助。本系统设计的主要意义在于它能够切实有效地指导工作人员规范业务操作流程,更高效、快捷地实现业务的管理,提高管理水平和工作效率,进而提高业务竞争能力。1.3 课题目的与方向如何能够让自己的生活、工作变得更加便利,一直都是人们所追求的目标。在餐饮行业已经发展的越来越好的今天,开发出餐厅管理系统,是必要的,能够给餐厅管理工作带来极大的便利,提高工作效率。能够在点餐就、计费、菜单等许多方面给管理者的管理带去方便。而且各从更大的餐饮企业看,它所要管理的各项业务更加复杂和繁琐,有事甚至是在不同地区,那么使用电子信息化来取得帮助不是更好么。1.4 系统开发环境介绍1.4.1 MVC简介MVC是一种架构模式,它本身并没有引入新的功能,是用来指导我们提高应用程序的体系结构、应用模型和相分离的观点,才能得到更好的发展和维护效率。 在MVC模式中,应用程序分为三个部分:模型(Model),视图(View)和控制器(Controller)。其中,模型的一部分包含应用程序的业务逻辑和业务数据;局部视图封装应用程序的输出,即通常所说的网页或界面;和控制器负责协调模型和视图,根据用户选择的模式来处理业务的要求,和最终,用哪个界面给用户做出响应。对MVC模式的三个部分的职责是非常明确和彼此分开,使每一个部分都可以独立地变化而不影响其他部分,从而大大提高了应用的灵活性和重用性。它的设计模式有以下三种。 演示层:包含代码,用户交互界面,数据验证。该层用于提供图形用户界面的交互,允许用户在显示系统中输入和编辑数据,并提供数据验证功能。 业务逻辑层:包含业务规则来处理代码,即程序和业务相关的专业算法、业务策略等。该层是用来执行业务流程,并制定数据的业务规则。业务逻辑层主要用于业务应用,为表示层提供业务服务。 数据持久层:包含数据处理代码和数据存储代码。数据持久层主要包括数据访问服务,负责数据库管理系统和数据库管理系统(如数据库)之间的通信。每一层的三层都有自己特定的任务处理过程中,有一个明确的区别是,在功能实现上,每一层和其他层分离,但有一个层之间的通信接口。1.4.2 Swing技术由于AWT不能满足图形用户界面开发的需求,并且也存在着严重的缺陷,人们会基于继承AWT事件模型的适应性,具有很大的灵活性,基于奇偶校验系统结构已经成为其致命的弱点。于是出现了。 除了图形、字体使用摆动、布局管理器和其他AWT的功能,所有的Swing轻量级组件基本上都是从容器的AWT类继承,并且容器AWT类和扩展组件AWT类。换句话说,秋千不仅使用较低级别的组件所提供的AWT,但是所有的Swing组件实际上是AWT容器。注:AWT类本身是轻量级容器。 摆是由100%纯摆动实现,java组件是用java实现的轻量级组件,没有本地代码,不依赖于操作系统的支持,这是最大的区别和AWT组件。由于AWT组件是由等价类中实现(同伴)的特定平台相关,Swing比AWT组件更实用。在不同的平台上展开是一致的,并有能力提供其他功能,不支持本地窗口系统。 餐厅管理系统的界面是用Swing技术完成的。1.4.3 Oralce技术ORACLE数据库系统是美国甲骨文公司(甲骨文)在分布式数据库中提供的一组软件产品的核心,是最受欢迎的客户/服务器(客户端/服务器)和数据库的系统结构。例如,silverstream是一种基于数据库的中间件。ORACLE数据库是使用世界上最广泛使用的数据库管理系统,作为一个通用的数据库系统。它具有完整的数据管理功能,作为一个关系型数据库,它是一个完整的产品关系,作为分布式数据库,实现了分布式处理功能。但所有的知识,只要在一个模型中学习到甲骨文的知识,就可以用在各种机器上了。第2章 需求分析2.1可行性分析2.1.1技术可行性研究本系统是基于Oralce和java技术实现的,两个出现已经有很长时间了,已经发展的相当成熟,而且在企业中java技术的使用也相当普遍,其学习起来也很容易,oracle技术也是如此,就目前而言,众多大型公司都使用的都是此数据库,足以见得其地位,所以本系统采用此两种技术,可增加系统的可维护性和可扩展性,开发技术的成熟,也势必大大提高了开发效率,降低开发成本。2.1.2经济可行性研究依据餐饮行业的要求,餐厅管理系统所需要的设备设施很普遍,且价格已经非常低廉,已经到了每一家都可以用得起的地步,而此系统却可以带来相当大的价值,创造巨大的利益。可从一下几个方面表现出来:第一,设备配置只许一般,平常的就可以,且价格相对不高;第二,系统开发简单,所需人工开发成本低,时间短; 第三,系统的运行可以取代众多的复杂的人工劳动,系统的运行可以在很大程度上提高餐饮酒店的工作效率; 所以,可以看出,本系统在开发不需要多大成本,但其往后可能创造的价值确是巨大,综合考虑,肯定会带来经济上的利益,故此次系统是在经济上是可行的。2.1.1操作可行性研究本系统是一个用在电脑的一个小型的桌面应用程序,将程序安装到桌面,启动程序,就可以按照餐厅当业务的流程来操作此程序,且各项功能操作简单,方便快捷,加上其页面设计与功能设计,即使是从未了解过的使用者也能在极短是时间内熟练的操作此系统。2.2 编写目的 为了能让餐厅在业务管理方面更加方便快捷,所以设计并实现了此餐厅管理系统。系统在使用方面有其定向性,最主要的就是操作者,而此系统也正是为了能够让餐厅管理人员能够更加便利的管理,减少其管理复杂、繁琐的状况,缩短时间,也增加工作效率,让其有更多的时间和精力去寻找其它有助于餐厅管理,增加餐厅收益的有效方法。2.3 功能分析本系统可以分以下几个功能模块:(1) 登录:用户在选择账号和输入密码后,点击登录按钮。如果输入的密码正确的时候,跳到主界面,如果不正确则提示错误并需要重写输入。(2) 人事管理:用户的添加、修改、以及可能的员工离职。(3) 菜单管理:添加、修改、删除菜单信息。有各种各样的菜肴需要及时的更新,菜单管理 人员通过对市场的调研和用户口味的调研,添加一些菜名及其对应的价格。(4) 订单界面:操作员可以根据顾客的选择从而针对修改订单。(5) 桌位界面:可根据桌位来找到顾客信息,快速计算出顾客用餐金额,加快工作效率。(6) 库存界面:完成各项食材的添加、修改。2.4 数据字典数据字典存放着有关于数据库所有的相关信息,是所有和有关系统的数据元素的有组织的列表。主要运用于让人对于一些人查阅对不了的条目的解释,同时其主要作用是能够在软件分析及设计的过程中将一些有关于数据的描述的信息提供给分析人员。数据字典的内容主要包括:数据流、数据流分量、数据存储及处理。而除了数据的定义外,数据字典还需要包括一些另外的信息,例如:一般信息和使用特点及控制信息。数据字典条目列出如下。数据流“菜单信息”的字典条目如表3.1所示。 表3.1 菜单信息字典条目数据流名: 菜单组 成: 编号+种类+名称+价格数据流“桌位信息”的字典条目如表3.2所示。 表3.2 桌位信息字典条目数据流名: 桌位组 成: 编号+名称+最大数量+桌位状况数据流“库存信息”的字典条目如表3.3所示。 表3.3 库存信息字典条目数据流名: 库存组 成: 编号+数量+订购日期+保质期数据流“订单信息”的字典条目如表3.4所示。 表3.4 订单信息字典条目数据流名: 订单组 成: 编号+订单人+订单日期+联系方式+用餐人数+位置数据流“订单价格信息”的字典条目如表3.5所示。 表3.5 订单价格信息字典条目数据流名: 订单价格组 成: 订单号+桌位号+价格数据流“订单详细信息”的字典条目如表3.6所示。 表3.6 订单详细信息字典条目数据流名: 订单详情组 成: 订单编号+菜单编号+数量数据流“人员信息”的字典条目如表3.7所示。 表3.7 人员信息字典条目数据流名: 员工组 成: 账号+密码+职位+权限 排版第3章 总体设计3.1 功能结构图 本系统用于前台业务流程应用,主要模块见图3.1。功能模块桌位管理菜谱管理员工信息订单管理桌位状态查看订单结账添加订单信息修改菜品信息删除菜品信息添加菜品信息订单价格修改查看订单信息薪酬信息员工信息显示在职状态显示图3.1 前台模块功能结构图各个模块的功能介绍如下:员工信息:包括所有员工信息的现实,在职的与离职的。同时可以对员工信息进行注册,修改信息,以及删除。订单管理:这是这个系统中最为重要的存在,在这个模块里面,操作者通过增加订单,完成用户的点菜活动,电话预定用户可通过先告知自己信息,然后点菜。而在场用户可直接进行点单。由此来完成整个点餐功能。 菜谱管理:添加、修改、删除菜单信息。有各种各样的菜肴需要及时的更新,菜单管理 人员通过对市场的调研和用户口味的调研,添加一些菜名及其对应的价格等信息。桌位管理:可通过桌位信息得知用户用餐金额,完成最后的支付操作。3.2业务实体设计 餐厅管理系统中有这些实体:员工、库存、订单、订单详情、菜单,价格。这些实体之间的关系如下: 图3.2 业务实体关系图3.3 数据库设计通过前面对数据字典和类图的分析,根据需求关系,我们可以很快得到系统所需要的表的结构关系,从而快速设计出表。数据库的设计是程序开发中在设计阶段非常重要的一个环节,是整个程序的基础核心。3.3.1实体属性图实体属性图如下:名称价格编号类型菜谱基本信息 图3.3 菜谱基本信息实体属性图排版 数量订购日期保质期编号商品类别信息 图3.4 库存信息信息实体属性图人数电话姓名位置编号编号订单日期订单信息 图3.5 订单信息实体属性图职位性别入职日期姓名离职日期密码薪水账号人员 图4.6 会员信息实体属 图3.6 人员信息实体属性图3.3.2数据库详细设计本系统所使用的数据库是oracle11g数据库,oracle是一个非常优秀数据库,先在数据库里创建一个数据库,然后在创建的数据库里建立以下表。(1)库存信息表 表3.1 库存信息表间距 列名数据类型是否主键允许空描述Sidint是否编号,自增surplus int否否剩余食材数量ordertime date 否否订购日期peroid int否否剩余可用时间 (2)订单价格表 表3.2 订单价格表 列名数据类型是否主键允许空描述orderid int是否订单编号,外键deskid int是否桌位编号。外键oprices int否否价格(3) 桌位信息表表3.3 桌位信息表 列名数据类型是否主键允许空描述deskid int是否编号,自增deskname Varchar否否名称desknum int否否可接受人数deskstate int否否状态(4)订单详情表 表3.4 订单详情表 列名数据类型是否主键允许空描述orderid int是否订单编号,外键did int是否菜品编号,外键foodnum int否是数量(5)人员表表3.5 人员表 列名数据类型是否主键允许空描述Widvarchar是否账号wpwd varchar否否密码wname varchar否否姓名job varchar否否职位gender char否否性别hiredate date否否入职日期hiredate date否是离职日期Payint否否薪酬(6)订单表 表3.6 订单表 列名数据类型是否主键允许空描述orderid int是否订单号oname varchar否是订单人otel varchar否是电话opnum int否是用餐人数deskid int否是桌位号odate date否是订单日期 (7)菜单表 表3.7 菜单表 列名数据类型是否主键允许空描述dtype varchar否否种类did int是否编号dname varchar否是菜品名称dprice int否是价格第4章 详细设计与实现作为软件开发时期的第三个阶段,详细设计的的根本目的确定了怎样去实现所要求的系统。经过这个阶段,我们用该知道对所要开发系统的精确描述,然后在代码编写阶段就可以直接将其翻译成程序语言所写的程序。当然详细设计的任务还不是真正具体的编写程序,而是设计出程序的“蓝图”,在之后的编码时期,程序员就可以直接按照这张“蓝图”直接进行编码。从而可以推测出,详细设计结果的好坏能够直接决定程序代码的质量,而代码质量的程度决定于人和计算机。对人而言,如果想设计测试方案,诊断错误以及修改改进程序都需要在读懂程序的基础上进行,所以程序的质量不仅要观察程序的逻辑正确与否,性能是否满足要求,更重要的是要看它是否能够被人容易的阅读和理解。在保证程序软件可靠的前提下,让被编写出来的程序可读性好、容易测试、容易理解、容易修改和维护,也是详细设计的重要目标。4.1 系统主模块设计系统主要分为员工信息模块,订单模块,菜单模块,库存模块,以及桌位收费管理模块等。4.1.1登录模块程序的入口,需要求账号密码的人员才能进行登录操作,防止其他人员修改或者删除数据。 当用户选择登录名、输入密码后,登录名和密码会被获取在数据库中开始验证登录密码是否正确,从而确定能否正常进入系统主界面。在登录过程中,密码若为空,则提示密码输入为空,其他,若输入密码错误则提示密码错误,不能进入系统主界面,当输入密码正确时,才能够进入主界面,关闭登录窗口。这样一个完整的登录功能就完成了,主要代码如下:/登录if(e.getSource()=btnLogin)/获取密码字符串,判断是否输入密码String pwd= String.valueOf(txtPwd.getPassword();/如果没有输入密码,则提示为空返回if(pwd.length() = 0)JOptionPane.showMessageDialog(null, "密码不能为空,请输入密码");return;/根据选择的账号,到数据库中查找密码String wname = cboname.getSelectedItem().toString();String wpwd = wdao.getWpwdBywid(wname);/判断密码是否匹配if(wpwd.equals(pwd)new MainFrame().setVisible(true); this.dispose();elseJOptionPane.showMessageDialog(null, "密码错误");return;/不登录,退出系统if(e.getSource()=btnCancel)this.dispose();4.1.2主界面模块主界面模块是系统流程整体体现的模块,在这个模块中,可以清楚的看出系统的功能划分,从而在操作是正确的选择不同模块。顺利完成各项工作。 主界面中设有标题栏和工具栏,可以快速的开始一些功能其,主要代码如下:/ 创建一级菜单jm1 = new JMenu("基本功能");jm1.setFont(MyTools.f3);/ 创建它的二级菜单jm1_jmi1 = new JMenuItem("订单管理", jm1_jmi1_icon);jm1_jmi1.setFont(MyTools.f2);jm1_jmi2 = new JMenuItem("菜单管理", jm1_jmi2_icon);jm1_jmi2.setFont(MyTools.f2);jm1_jmi3 = new JMenuItem("人事管理", jm1_jmi3_icon);jm1_jmi3.setFont(MyTools.f2);jm1_jmi4 = new JMenuItem("万年历", jm1_jmi4_icon);jm1_jmi4.setFont(MyTools.f2);/* * 响应菜单栏的事件 */ if ("订单管理".equals(msg) OrderFrame of = new OrderFrame();jp3.add(of,"2");this.cardJp3.show(jp3, "2"); else if ("菜单管理".equals(msg) MenuPanel m = new MenuPanel();jp3.add(m,"3");this.cardJp3.show(jp3, "3"); else if ("人事管理".equals(msg) WorkerFrame eInfo = new WorkerFrame();jp3.add(eInfo,"1");/cardJp3.rthis.cardJp3.show(jp3, "1");else if ("退出".equals(msg) System.exit(0);系统的主要功能在主界面中有更加直观的体现,用卡片布局将整个界面布置起来,形成更为直观的功能系统。其主要代码如下:/ 把图片面板加到jp1面板上jp1.add(jp1_imgPanel);/* * 处理jp2,jp3,jp4 让jp2,jp3被jp4包起来 */ 创建jp4面板对象jp4 = new JPanel(new BorderLayout();/ 创建jp2卡片布局cardJp2 = new CardLayout();/ 创建jp2面板,将jp2的卡片布局加到jp2上jp2 = new JPanel(cardJp2);/ 用两个label存放图片jp2_lab1 = new JLabel(new ImageIcon("image/jp2_left.jpg");jp2_lab1.addMouseListener(this);jp2_lab2 = new JLabel(new ImageIcon("image/jp2_right.jpg");jp2_lab2.addMouseListener(this);/ 将两个存放图片的label放到jp2面板上,命名为0和1jp2.add(jp2_lab1, "0");jp2.add(jp2_lab2, "1");/ 先给jp3加入一个主界面卡片面板(ImagePanel)Image zhu_image = null;Image jp3_bg1 = null;try zhu_image = ImageIO.read(new File("image/jp3_bg.jpg");jp3_bg1 = ImageIO.read(new File("image/jp3_1.jpg"); catch (IOException e1) e1.printStackTrace();ImagePanel ip1 = new ImagePanel(zhu_image);jp3.add(ip1, "0"); / 把jp2 jp3加入jp4jp4.add(jp2, BorderLayout.WEST);jp4.add(jp3, BorderLayout.CENTER);/实现其各项点击功能if (e.getSource() = this.jp1_jlab2) / 响应鼠标左单击if (e.getButton() = MouseEvent.BUTTON1) / 点击按钮就显示jp3这个卡片布局相应的图片WorkerFrame eInfo = new WorkerFrame();jp3.add(eInfo,"1");/cardJp3.rthis.cardJp3.show(jp3, "1"); else if (e.getSource() = jp2_lab1)