版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本科毕业论文本科毕业论文(设计设计) 题目: 基于 C/S 模式的大中型酒店 点菜管理系统的设计与实现 学院: 数学与计算机科学学院 班级: 2009 级计算机本科三班 姓名: 指导教师: 职称: 讲师 完成日期: 2013 年 6 月 2 日 2 基于 C/S 模式的大中型酒店点菜管理系统的设计与实现 摘要:随着社会经济的不断发展前进,餐饮行业在社会各行业中占据着越来越重要 的地位。现代人们生活水平的提高也对餐饮行业做出了更高的要求,传统的手写点 菜和人工记账显然已经无法满足要求,大量的预定和结算信息数据无法避免地出现 这样那样的小问题。酒店点菜管理系统软件的出现可以为大到”豪华酒店”小到”
2、 快餐饭店”的餐饮行业提供更加便捷的管理。在酒店点菜管理系统软件的帮助下, 酒店餐馆的工作错误率可以趋近于零。它不仅降低了人工成本,提高了酒店的工作 效率,而且使得餐饮管理行业变得更加的现代化、人性化,使酒店的管理工作变得 轻松而有效。 本系统用 MyEclipse 8.5 作为开发工具搭建管理系统平台并以 MySQL Server 5.0 为数据库,采用 Java 主流开发技术和 C/S 架构,是一套实现了流程规范化和数据灵 活化配置的酒店餐饮管理系统。使用的编程语言是即将在文中继续介绍的具有很多 的优点和特性的 Java 语言。 关键词:酒店点菜信息管理;Java;C/S 架构 ;MySQ
3、L Server 5.0 目 录 1 绪论.1 1.1 开发背景.1 1.2 国内外的相关研究状态.2 1.3 开发工具和相关技术简介.3 1.3.1 Java 程序开发技术.3 2 系统分析.4 2.1 系统定义.4 2.2 系统需求分析.5 3 总体设计.6 3.1 系统功能模块的划分.6 3.2 系统业务流程图.7 3.3 数据库设计.8 3.3.1 数据可规划.8 3.3.2 E-R 图 .8 3.3.3 数据库、表的设计.10 4 系统详细设计.12 4.1 数据库.12 4.1.1 数据库的连接.12 4.1.2 查询数据库的方法.13 4.1.3 数据表中插入数据的执行语句.14
4、 4.2 登录模块的实现.15 4.3 登录后系统主界面.15 4.4 用户管理.17 4.4.1 用户的添加.18 4.4.2 用户的删除.19 4.4.3 用户修改密码.19 4.5 餐桌管理.20 4 4.6 菜单、菜系管理.20 4.6.1 菜单管理.20 4.7 账单查看,年结账、月结账、日结账.22 4.8 添加预订、开餐台、签单、结账.23 5 结束语.27 谢辞.29 参考文献:.30 1 1 绪论 “民以食为天”随着现代社会人们生活水平的不断进步,人们的生活质量也在 不断提高,餐饮业在服务行业的重要性也在不断的提升。现今如何在餐饮行业中激 烈的斗争中脱颖而出,已经成为餐饮行业
5、管理人员必须认真思考面对的问题了。经 过多年的发展,餐饮企业的管理已经从传统的简单人工管理迈向规范、科学的管理 阶段。 虽然现在连锁经营在中国的历史还是比较短,只有二十几年的历史,但是现在 连锁经营在餐饮业的重要性和不容质疑的强大功能作用已经成为以后餐饮业发展的 趋势了。但是在对连锁分店的有效管理上提高服务质量、使用电脑化的酒店系统管 理软件是发展的必然趋势,它可以使管理者更好的掌握并且总结分析酒店的发展趋 势和不足,以便做出对酒店更好发展的决策。 近年来,我国的现代酒店业得到了蓬勃的发展,无论是行业规模,设施质量, 还是经营理念或者管理水平,都取得长足的进步,已经进入了现代化水平阶段。如 果
6、我们设计一款专门为酒店管理者和服务员点菜管理系统,将会很大程度减少酒店 的工作量并在一定范围内可以再次提高酒店营业额。随着信息技术的发展,许多酒 店都把酒店点菜管理信息系统作为酒店实施科学化管理的主要工具,并在应用技术 上不断地加 以完善和发展,大大提高了酒店运营的质量与效益。 1.1 开发背景 中国餐饮业一直保持高速发展的状态,2011 年我国餐饮收入突破 2 万亿元。 2010 年度我国餐饮百强企业营业额为 1395.84 亿元,比 2009 年度餐饮百强营业额增 长了 11.69%,占 2010 年全社会餐饮收入的比重为 7.91%。2010 年度百强企业直营 店资产总额 346.36
7、亿元,直营店利润总额超过 60 亿元,直营店从业人员约 28.74 万 人。从经营业态来看,餐馆酒楼、快餐送餐以及火锅类企业依然是百强榜单中的主 力军,占据了 84 个席位,与 2009 年度相比多了 4 个席位。前 10 强涵盖了除西餐外 的所有业态,火锅类企业依然是前 10 强企业中的佼佼者,占据 4 个席位,紧随其后 的是餐馆酒楼和快餐,但从前 50 强来看,餐馆酒楼类企业多于火锅类企业。快餐类 企业虽然从前 10 强和前 50 强的席位数来看,不及火锅及餐馆酒楼类企业,但上榜 企业的营业额总和高居榜首,占百强企业营业额的比重接近 40%,比餐馆酒楼和火 锅类企业的占比约高出了 15 个
8、百分点。2011 年百强企业中火锅业态营业额 321.26 亿元,占比 23.02%。 酒店点菜管理系统含盖从点菜、送单到分单、自动结帐,编制营业、统计报表, 2 菜系与菜品管理、系统安全管理、服务员业绩考核等方面内容。给管理者提供了大 量人工管理难以得到的重要数据,充分弥补传统管理中存在的不足,从而进一步提 高管理水平、改善服务质量。 在这个科技不断进步的社会中,计算机科学日趋成熟,人们已经深刻认识到其 强大的功能,他在当今社会中的各个领域都发挥出其强大的作用。越来越多的管理 层人员已经认识到电脑化信息系统管理在未来发展的重要性了。当今社会已经迅速 进入到激烈的计算机信息系统管理竞争时代,计
9、算机的高科技应用已经搜到普遍应 用,就像我们平时所用的手机、电视、汽车等,成为生活中不可或缺的。在当代社 会,我们必须承认,谁能掌握更多的知识,更大的信息量,更快的信息处理,谁有 更高的效率,谁就能够在各种竞争中胜券在握。 作为计算机应用的一个方面,使用酒店点菜管理软件对餐饮行业信息进行处理 和管理。相对于传统的手工记账方式,有不可比拟的优点,如:快速检索、便捷查 找、高可靠性、大存储量、良好保密性、较长使用寿命、低成本。将统计、计算信 息的错误率降低甚至趋近于零。 1.2 国内外的相关研究状态 最早开始在 80 年代初的国内的酒店计算机管理系统,是由清华大学自动化系的 金国芬教授、西安交大和
10、浙江省计算技术研究所从事这方面工作的。到了 80 年代中 后期,随着国外计算机应用的酒店管理系统和先进管理技术的大规模引进,进一步 促进了我国酒店餐饮业管理技术的发展。 到了 90 年代初期形成了几个较成熟的软件系统,同时产生了许多专职从事酒店 计算机管理系统的公司。到了 90 年代中期,随着计算机在饭店中的普及应用,以及 计算机技术的不断发展,酒店计算系统的发展到了一个新的时期,新的系统平台、 新的软件功能、新的系统特点及发展方向不断涌现。 最早在 70 年代初,国外的酒店管理系统就已经发展起来的,到了 80 年代,国 外的酒店管理系统,如 HIS(Hotel Information Sys
11、tem)、CLS、Lodgistix 等,整个模 式已基本定型,技术较成熟,使用功能也较齐全。现今,国外酒店行业正向个性化 方向发展,按其经营方式将酒店分为商务型酒店、长住型酒店、度假型酒店等等; 按其经营形式又可分为独立经营饭店、集团经营饭店等。所以国外产生比较成熟的 软件有龙腾触摸屏点菜系统, “龙腾餐饮管理系统”软件采用了独特的组网技术,以 Window 为操作系统平台,全 32 位应用软件系统,功能在国内处于领先地位。网络 系统是以 Windows 搭成的对等网络,简单实用、稳定可靠,保证企业非常迅速地把 3 信息传递到各个点。这个系统适用于快餐企业、西餐、火锅有勾划式菜单的餐饮企 业
12、,中高档中餐可以配合其他点菜设备一起使用这个系统。 1.3 开发工具和相关技术简介 开发工具:硬件:联想笔记本一台 软件:Windows 7 Java MySQL Server 5.0 MyEclipse 8.5 1.3.1 Java 程序开发技术 Java 不仅仅是一种编程语言,而且是一个为 Java 技术程序员提供了许多工具的 开发平台。同时 Java 还是一个程序发布平台,有两种主要的“发布环境” ,首先 Java 运行时环境(Java Runtime Environment,简称 JRE)包含了完整的类文件包, 其次很多主要的浏览器都为 Java 提供了解释器和运行时环境。从 Java
13、 语言的诞生发 展到现在,Sun 公司把 Java 平台划分成 J2EE、J2SE、J2ME 三个平台,针对不同的 市场目标和设备进行定位。J2EE 是 Java2 Enterprise Edition,主要目的是为企业计算 机提供一个应用服务器的运行和开发平台。J2EE 本身是一个开放的标准,任何软件 厂商都可以推出自己的符合 J2EE 标准的产品,使用户可以有多种选择,Java 的开 源性为很多厂商的发展提供了巨大的空间。 Java 主要有以下特点 1.Java 是简单的。Java 语言与 C+语言很相似,但却更简单。在高级编程语言 所有的特性中不是绝对需要的都已经删除了。Java 中去掉
14、了指针,并且提供废料的 自动收集,这样使程序员在编程过程中不必再担忧内存管理。 2.Java 是面向对象的语言。Java 语言中提供类、接口和继承原语,而且为了简 单,只提供类之间的单继承,但又同时支持接口之间的多继承,并支持类与接口之 间的实现机制(关键字为 Implements) 。Java 相对于 C+来说,它是一种更加纯面向 对象的编程语言。 3、Java 语言是分布式的。Java 语言支持 Internet 应用的开发,在基本的 Java 应 用编程接口中有一个网络应用编程接口(Java Net) ,它提供了用于网络应用编程的 类库,包括 URL、URLConnection、Sock
15、et、 ServerSocket 等。Java 支持数据分布 和操作分布。 4、Java 语言是健壮的。Java 的强类型机制、异常处理、废料的自动收集等是 4 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机 制使得 Java 更具健壮性。 5、Java 语言是安全的。Java 通常被用在网络环境中,为此,防止恶意代码的攻 击 Java 提供了一个安全机制。Java 语言除了具有的许多安全特性以外,Java 对通过 网络下载的类具有一个安全防范机制(类 ClassLoader) ,如分配不同的名字空间以 防替代本地的同名类、字节代码检查,并提供安全
16、管理机制(类 SecurityManager) 让 Java 应用设置安全哨兵。 6、Java 语言是可移植的。操作系统的变化,处理器升级以及核心系统资源的变 化,都可能导致其它编程语言编写的程序出现错误或无法运行。Java 的虚拟机成功 地解决了这个问题,Java 编写的程序可以在任何安装了 Java 虚拟机 JVM 的计算机 上正确的运行,程序不经修改就能在不同的硬件或软件平台上运行。 7、Java 语言是解释型的。如前所述,Java 程序在 Java 平台上被编译为字节码 格式, 然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中 的 Java 解释器对这些字
17、节码进行解释执行,执行过程中需要的类在联接阶段被载入 到运行环境中。 8、Java 是高性能的。与那些解释型的高级脚本语言相比,Java 的确是高性能的。 事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C+。 1.3.2 MySQL Server 5.0 MySQL Server 5.0 是 Oracle 公司发行的关系型数据库管理系统,相对于其他的 大型数据库,MySQL 有它自己的不足,但也有自己的优点,如:体积小、速度快、 总体拥有成本低,尤其是开放源码这一特点,因此许多中小型网站为了降低总体成 本而选择了 MySQL 作为网站数据库。
18、而且对于一般的个人使用者和中小型企业来 说,MySQL 提供的功能已经绰绰有余。 2 系统分析 2.1 系统定义 随着计算机技术的飞快发展,使其在管理领域受到了广泛的应用。20 世纪 60 年代,美国经营管理协会及其事业部第一次提出了建立管理信息系统的设想,即建 立一个有效的信息管理系统,使得各级管理部门都能了解本企业的一切相关经营活 动,为各级决策人员提供所需重要信息。 5 酒店点菜管理系统也是一个酒店不可缺少的部分,它的内部无论对于客户还是 服务员来说都至关重要,所以一个系统应该能够为用户提供充足的快捷的信息和方 便的查询方式,而且不应有时间和地域的限制。由于酒店点菜管理系统是基于 C/S
19、 模式,所以论文更倾向于以下定义:酒店餐饮信息管理系统是通过对整个酒店餐饮 服务流程的管理,实现对酒店业务的整体优化,提高酒店运行控制和外部交易过程 的效率的管理工具。 本系统可以使服务员的工作更加快捷有效,为顾客提供更完善的服务;酒店管 理员可以快速的编辑菜单、登录用户管理信息和打折等服务,适时的整理结账报表 等工作,完全掌握酒店每天、每月的营业额。可以根据酒店的实际营业情况对酒店 未来的发展做出更好的规划。 2.2 系统需求分析 项目需求分析就是描述系统需求,当今社会,随着酒店餐饮业的快速发展,传 统的人工管理已经不能满足社会的需求了,餐饮业的管理者已经意识到在未来发展 中使用计算机酒店管
20、理软件的必要性了,根据酒店餐饮行业的实际情况和特点,酒 店餐饮管理系统不仅要有人性化的用户界面,人性化管理的系统,便于管理者的管 理,此系统分为两个大的类型,一个是类型针对服务员使用的餐饮管理系统,另一 个类型是针 对于管理者的餐饮管理系统。 1.服务员使用餐饮管理系统实现的功能: 查询菜单、点菜 添加查询预订信息 迅速查看开台点菜信息 自动结账 查看、修改、添加客户会员的个人信息(通过客户本人的确认) 2.管理者使用餐饮管理系统实现的功能: 查看、修改、添加客户会员的个人信息(通过客户本人的确认) 添加、修改、查询菜单 添加查询预订信息,根据消费提供打折 给顾客提供具体的打折规定(如消费满
21、300 元,打九折) 添加职员信息,设定职员的权限(管理员权限、服务员权限) 对每天、每月、每年营业额结算报表的查看 除了实现以上功能,对于系统安全和系统维护功能,也是软件应用不可少的部 6 分,保障软件的正常安全运行。本系统需要设计的的更加人性化和智能化,是用户 可以很快地熟练的掌握该酒店餐饮管理系统。 3 总体设计 3.1 系统功能模块的划分 根据系统需求分析,餐饮信息系统的功能被划分为以下模块:登录模块、订餐 模块、后台管理模块。如图 3.1 所示: 各功能模块说明如下: 1.后台管理模块 后台管理模块分为菜单管理和用户管理,菜单管理主要有:查看菜单、增加菜 单、修改菜单和删除菜单,增加
22、餐台、删除餐台,用户管理主要有:查看用户、增 加用户、修改用户密码和删除用户,查看结账报表。 2.订餐模块(前台服务) 订餐模块主要的功能是:开台、智能化获取菜品,根据客户的要求对菜单进行 订 餐 模 块 后 台 管 理 模 块 登 录 模 块 服 务 员 登 录 餐饮管理系统 开 台 订 餐 智 能 化 获 取 菜 品 结 帐 餐 台 维 护 菜 单 维 护 用 户 管 理 取 消 菜 品 图 3-1 功能模块图 管 理 员 登 录 菜 系 维 护 账表查看 7 查询并下单、取消菜品、自动结账。 3.登录模块 登录主要功能是:限制登录者的权限,员工没有后台管理权限,经理还有查看 结账报表的权
23、限和后台管理的权限,是经理能对整个餐厅业绩的查看和分析。 3.2 系统业务流程图 8 流程图简介:管理员登录系统后建立员工基本信息添加登录权限,员工登录后 可以给客户开单,中途可以为客户添加菜品,客户用完餐后来到服务台签单,管理 员登录的话可以使用员工的所有功能,而且可以设定为客户打折的折扣程度和添加 N Y N N Y Y 退菜 图 3.2 系统流程图 菜品选择 加入点菜单 点菜单 继续点菜 打开系统 管理员登录 添加员工 是否添加员工 员工登录 开台 确认点菜单 提交点菜单 结账(打折) 退出系统 是否加菜 9 菜单,以及管理员工账户。 3.3 数据库设计 3.3.1 数据可规划 根据以上
24、模块和流程图的分析,针对本酒店餐饮信息管理系统,分别对管理员、 酒店服务员、菜品、点菜、预订等几个实体进行了详细的分析和调研。数据库的设 计方式采用的是“一库多表设计” 。即:设计一个数据库,把该系统在使用过程中涉 及到的对象设计为独立的应用实体。 3.3.2 E-R 图 操作者 (User) 身份证号 登陆密码性别 姓名 服务员编 号 出生日期 用户类型 主要存储一些用户的信息,如管理员和酒店服务员的信息,用户的服务员编号、 姓名等,添加、修改、删除登陆用户的信息。 图 3-3 用户 E-R 图 10 菜品(food) 所属菜系 助记码 单位(盘)编号 用户编号 名称 价格 用户编号 主要存
25、储菜品的价格、所属菜系、助记码等。在描述菜品的实体的时候,加入 了一个助记码属性,目的是为以后实现智能化的获取菜品的功能。酒店服务员可以 通过这一功能迅速了解顾客所点菜品信息。 订餐(order) VIP 客户账号 客户姓名 预订时间 桌号 预定餐点 图 3-5 预订 E-R 图 主要存储一些客户预定信息,如客户的 VIP 账号、预定就餐时间、等等,主要 用于记录客户的预定信息。 图 3-4 菜品 E-R 图 11 消费单 (consume) (consume) 折扣程度编号 消费餐台 消费时间 操作服务员 图 3-6 消费单 E-R 图 消费单信息表用来记录每次消费的相关信息,例如消费时就餐
26、餐台、消费时间、 消费金额、消费折扣、操作的服务员等信息。 3.3.3 数据库、表的设计 1、tb_user 表(登录用户表,服务员工号为 10001 的默认为管理员) 表 3-1 tb_user 序号字段名称字段描述字段类型长度备注 1Jnumber服务员工号Char20不允许空 2name 服务员姓名Char20不许为空 3sex性别 Char 10不许为空 4Birthday生日 Char 20不许为空 5Id_card服务员身份 证号 Char 20不允许空 6password服务员密码 Char 20不允许空 7freeze登录权限 Char 20默认为“正 常” 用户表主要用于存储
27、一些服务员信息,如服务员的工号、姓名、密码、身份证 号、登录权限等等,主要用于管理员、服务员登录,添加入职服务员和修改、删除 服务员信息和登录权限。 12 2、tb_menu (菜品(食谱)表) 表 3-2 tb_menu 序号字段名称字段描述字段类型长度备注 1num编号Char8 不允许空 2sort_id所属菜系Int10 不允许空 3name 菜名Varchar20 不允许空 4code助记码Varchar10 不允许空 5unit单位(盘)Int4 不允许空 6unit_price单价Float10 不允许空 7stating状态Varchar10 不允许空 菜品表主要用于存储一些食
28、谱信息,如食物的名称、价格有无食材等等,主要 用于客户点餐,使用于添加预定。字段 unit_price 记录的是食物的单价。当客户预定 餐点时或者结账时,系统使用它来算费用。 3、tb_order_form(消费单和预定表) 表 3-3 tb_order_form 序号字段名称字段描述字段类型长度备注 1num编号Char11不允许空 2desk_num消费桌号Varchar5不允许空 3datetime消费时间Datetime不允许空 4money消费金额Int10不允许空 5user_id操作服务员char10不允许空 6discount折扣程度Float3允许空 消费单表主要用于存储一些
29、用餐信息,如客户的消费餐台、消费时间、桌号和 消费金额、折扣等等,主要用于记录客户的消费信息。 13 4、tb_order_item(消费项目信息表) 表 3-4 tb_order_item 序号字段名称字段描述字段类型长度备注 1id编号Int5不允许空 2order_for_num所属消费单Char11不允许空 3menu_num消费菜品Char8不允许空 4amount消费数量Int4不允许空 消费项目信息表主要记录客户消费的项目,菜品、数量、等。给客户详细列出 消费项目。 5、tb_sort(菜系信息表) 表 3-5 tb_sort 序号字段名称字段描述字段类型长度备注 1id序号in
30、t4不允许空 2name名称Varchar20不允许空 菜系信息表为了统计顾客所点的食物属于什么菜系(川菜、粤菜等等) ,方便顾 客在就餐时查找所要点的菜品,也使服务员更快捷、更好的为客户服务。 4 系统详细设计 4.1 数据库 4.1.1 数据库的连接 为了方便用户的使用和维护,我们将与数据库的连接,单独写出来并进行编译, 这样系统在新的环境使用时,只需改动一处数据库部分连接代码,即可立即使用, 连接关键代码如下: private static final String URL = jdbc:mysql:/localhost:3306/db_DrinkeryManage1; private
31、static final String UserName = root; private static final String Password = guozhuo; private static final ThreadLocal threadLocal = new 14 ThreadLocal(); static / 通过静态方法加载数据库驱动 try Class.forName(com.mysql.jdbc.Driver).newInstance(); catch (Exception e) e.printStackTrace(); JOptionPane.showMessageDia
32、log(null,不能加载数据驱动序: +DRIVERCLASS,错误,JOptionPane.ERROR_MESSAGE); public static Connection getConnection() Connection conn = threadLocal.get();/ 从线程中获得数据库连接 if (conn = null) / 没有可用的数据库连接 try conn = DriverManager.getConnection(URL, UserName, Password); threadLocal.set(conn);/ 将数据库连接保存到线程中 catch (SQLExc
33、eption e) e.printStackTrace(); JOptionPane.showMessageDialog(null,不能连接数据库: +DRIVERCLASS,错误,JOptionPane.ERROR_MESSAGE);/ return conn; 4.1.2 查询数据库的方法 查询多条记录的方法 selectSomeRecord(如多个服务员用户的信息)其中使用 vector 向量类,相对于 ArrayList 来说,Vector线程是安全的,换言之就是说是同步的。 protected Vector selectSomeRecord(String sql) VectorVec
34、tor vec = new VectorVector();/ 创建结果集向量 Connection conn = JDBC.getConnection();/ 获得数据库连接 try 15 Statement stmt = conn.createStatement();/ 创建连接状态对象 ResultSet rs = stmt.executeQuery(sql); int columnCount = rs.getMetaData().getColumnCount(); / 获得查询数据表中列数 int row = 1;/ 定义行序号 while (rs.next() / 遍历结果集 Vect
35、or rowS = new Vector();/ 创建行向量 rowS.add(new Integer(row+);/ 添加行序号 for (int column = 1; column 4) JOptionPane.showMessageDialog(null, 姓名最多只能为 4 个汉字!, 友情提示, JOptionPane.INFORMATION_MESSAGE); nameTextF.setText(); nameTextF.requestFocus(); return; . Vector rowV = new Vector(); int row = table.getRowCoun
36、t();/得到表格中已有记录行 rowS.add(row + 1); for (int i = 0; i 10) JOptionPane.showMessageDialog(null, 菜品名称最多只能 为 10 个汉字!, 友情提示, JOptionPane.INFORMATION_MESSAGE); nameTextField.requestFocus(); return; (中间相似代码省去) if (dao.sMenuByNameAndState(menu1, 销售状态) != null) JOptionPane.showMessageDialog(null, 该菜品已经存在!, 友情
37、提示, JOptionPane.INFORMATION_MESSAGE); nameTextField.requestFocus(); return; int row = tableModel.getRowCount();/ 获得当前拥有的菜品数量 Vector newMenuV = new Vector(); newMenuV.add(row + 1);/ 添加序号 for (int i = 0; i menu.length; i+) newMenuV.add(menui);/ 添加菜品信息 Vector sortVector = (Vector) dao.sSortByName(menu3
38、).get(0); / 获得所属菜系(菜系中第一位置) menu3 = sortVector.get(1).toString();/ 设置菜系主键 Vector homonymyMenuOfDel = dao.sMenuByNameAndState(menu1, 删除); if (homonymyMenuOfDel = null) dao.iMenu(menu);/ 将新菜品信息保存到数据库 else newMenuV.set(1, homonymyMenuOfDel.get(0); dao.uMenu(menu); /将曾经删除的菜品 状态更新为“销售状态” 23 4.7 账单查看,年结账、
39、月结账、日结账 主要代码: Vector totalL = new Vector(); totalL.add(总计); totalL.add(); totalL.add(); int rowCount = tableValueL.size(); for (int column = 3; column columnCount; column+) int total = 0; for (int row = 0; row rowCount; row+) Object value = tableValueL.get(row).get(column); if (!value.equals() total
40、 += (Integer) value; totalL.add(total); tableValueL.add(totalV); Container contentPane = getContentPane(); contentPane.remove(1); contentPane.add(new FixedColumnTablePanel(tableColumnV, tableValueV, 4), BorderLayout.CENTER); 图 4-7 日结账界面 24 SwingUtilities.updateComponentTreeUI(contentPane); ); submit
41、Button.setText(确定); panel.add(submitButton); tableColumnL = new Vector(); tableColumnL.add(编号); tableColumnL.add(台号); tableColumnL.add(开台时间); tableColumnL.add(消费金额); VectorVector vector = dao.sMenu(); for (int i = 0; i vector.size(); i+) tableColumnL.add(vector.get(i).get(2).toString();/2是代表菜名 table
42、ValueL = new Vector(); getContentPane().add(new FixedColumnTablePanel(tableColumnL, tableValueL, 4), BorderLayout.CENTER); 4.8 添加预订、开餐台、签单、结账 /处理开台信息 int rightSelectedRow = rightTable.getSelectedRow();/ 获得被选中的台号 int leftRowCount = 0;/ 默认点菜数量为0 if (rightSelectedRow = -1) / 没有被选中的台号,即新开台 rightSelected
43、Row = rightTable.getRowCount(); / 被选中的台号为新开的台 Vector deskV = new Vector();/ 创建一个代表新开台的向量对象 deskV.add(rightSelectedRow + 1);/ 添加开台序号 deskV.add(deskNum);/ 添加开台号 / deskV.add(); deskV.add(Today.getTime();/ 添加开台时间 25 rightTableModel.addRow(deskV);/ 将开台信息添加到“开台列表”中 rightTable.setRowSelectionInterval(right
44、SelectedRow);/ 选中新开的台 menuOfDeskV.add(new Vector();/ 添加一个对应的签单列表 else / 选中的台号已经开台,即添加菜品 leftRowCount = leftTable.getRowCount();/ 获得已点菜的数量 / 处理点菜信息 Vector vector = dao.sMenuByNameAndState(menuName, 销售); / 获得被点菜品 int amount = Integer.valueOf(menuAmount);/ 将菜品数量转为int型 int unitPrice = Integer.valueOf(ve
45、ctor.get(5).toString(); / 将菜品单价转为int型 int money = unitPrice * amount;/ 计算菜品消费额 Vector menuV = new Vector(); menuV.add(NEW);/ 添加新点菜标记 menuV.add(leftRowCount + 1);/ 添加点菜序号 menuV.add(vector.get(0);/ 添加菜品编号 menuV.add(menuName);/ 添加菜品名称 menuV.add(vector.get(4);/ 添加菜品单位 menuV.add(amount);/ 添加菜品数量 menuV.ad
46、d(unitPrice);/ 添加菜品单价 menuV.add(money);/ 添加菜品消费额 leftTableModel.addRow(menuV);/ 将点菜信息添加到“签单列表”中 leftTable.setRowSelectionInterval(leftRowCount); /将新点菜设置为选中行 menuOfDeskV.get(rightSelectedRow).add(menuV); / 将新点菜信息添加到对应的签单列表 codeTextField.setText(null); nameTextField.setText(null); unitTextField.setTex
47、t(null); amountTextField.setText(1); 26 /签单结账 public void actionPerformed(ActionEvent e) int selectedRow = rightTable.getSelectedRow(); if (selectedRow = -1) JOptionPane.showMessageDialog(null, 请选择要结账的台 号!, 友情提示, JOptionPane.INFORMATION_MESSAGE); else int rowCount = leftTable.getRowCount(); / 获得结账餐台
48、的点菜数量 String NEW = leftTable.getValueAt(rowCount - 1, 0).toString(); / 获得最后点菜的标记 if (NEW.equals(NEW) / 如果最后点菜被标记为“NEW”,则弹出提示 JOptionPane.showMessageDialog(null, 请先确定未签 单商品的处理方式!, 友情提示, JOptionPane.INFORMATION_MESSAGE); else float expenditure = Float.valueOf(expenditureTextField.getText();/ 获得消费金额 fl
49、oat realWages = Float.valueOf(realWagesTextField.getText();/ 获得实收金额 float dicount = Float.valueOf(discountTextField.getText(); if (realWages expenditure* dicount) / 如果实收金额小于消费金额,则弹出提示 if (realWages = 0.0f) JOptionPane.showMessageDialog(null, 请输 入实收金额!, 友情提示, JOptionPane.INFORMATION_MESSAGE); else JO
50、ptionPane.showMessageDialog(null, 实收 27 金额不能小于消费金额!乘以折扣的值, 友情提示, JOptionPane.INFORMATION_MESSAGE); realWagesTextField.requestFocus(); / 并令“实收金额”文本框获得焦点 else changeTextField.setText(realWages - expenditure*dicount + 0);/ 计算并设置“找零金额” String values = getNum(), rightTable.getValueAt(selectedRow, 1).toSt
51、ring(), Today.getDate() + + rightTable.getValueAt(selectedRow, 2), expenditureTextField.getText(), user.get(0).toString() ;/ 组织消费单信息 dao.iOrderForm(values);/ 持久化到数据库 values0 = dao.sOrderFormOfMaxId();/ 获得消费单编号 for (int i = 0; i rowCount; i+) / 通过循环获得各个消费项目的信息 values1 = leftTable.getValueAt(i, 2).toS
52、tring();/ 获得商品编号 values2 = leftTable.getValueAt(i, 5).toString();/ 获得商品数量 values3 = leftTable.getValueAt(i, 7).toString();/ 获得商品消费金额 dao.iOrderItem(values);/ 持久化到数据库 JOptionPane.showMessageDialog(null,rightTable.getValueAt(selectedRow, 1) + 结账完成!, 友情提示, JOptionPane.INFORMATION_MESSAGE); / 弹出结账完成提示 r
53、ightTableModel.removeRow(selectedRow); / 从“开台列表”中取消开台 leftTableValueV.removeAllElements();/ 清空“签单列表” leftTableModel.setDataVector(leftTableValueV, leftTableColumnV); / 刷新“签单列表” realWagesTextField.setText(0.00);/ 清空“实收金额”文本框 changeTextField.setText(0.00);/ 清空“找零金额”文本框 28 menuOfDeskV.remove(selectedRo
54、w); / 从“签单列表”集合中移除已结账的签单列表 5 结束语 这次毕业设计既是一个学习的过程,也相当于一个实际工作的过程,我从中获 取了一些开发小型系统的经验。至此,我已将所做的系统做了一个非常详细的描述。 这次设计的大部分功能模块已经实现,提供的界面友好,美观。但由于自身能力和 经验的限制,没能对其进行进一步完善。 在这次的设计与开发中我没有实现的功能有VIP客户功能的实习和数据库建立, 这其中包括VIP客户的姓名、账号、身份证号等,每次结账的时候都会自动匹配VIP 客户的消费信息、消费额度、账户余额和积分信息,并将客户风味金卡VIP会员(消 费打85折)、银卡会员(消费打九折)(银卡会
55、员消费额积分达到一万会自动转为 金卡会员)。由于时间等的因素这次没能完全实现当初设计时计划的功能,我会在 以后逐渐完善这次的设计。使其成为更加的人性化有真正的实用价值餐饮点菜管理 系统。 通过这次所做的酒店点菜管理的设计和开发,我对编程有了真正的了解,以及 做一个设计与开发的思路和步骤,对软件工程也有了一个非常清晰明确的概念。这 次的毕业设计也让我在以后的工作中有了一个明确的学习方向。 有些东西想起来比较容易做起来却难,只有真正做的时候,才会发现自己还有 许多知识是不懂的。比如设计时想好要如何实现订餐系统,但是实际编写代码时会 遇到了很多的问题,例如:数据库的连接,界面美化等,在实际设计过程中
56、都遇到 了或多或少的问题。但是通过这些遇到的问题,我也学到了很多以前没有学习到的 知识。通过这次的毕业设计,将大学所学的所有知识贯穿起来。这并不是单单由编 程的知识与软件工程的概念的结合完成的任务,还必须弄清楚酒店餐饮管理系统是 怎样运行,究竟是怎样一个过程等。只有把这些都弄清楚了,才能做出有用的,合 乎逻辑和人性化的系统。 第一次做如此正规的设计与开发,难免会有些遗漏和疏忽的地方,设计的软件 29 系统也会有不稳定,不完善的地方。但这些都是以后我需要改进的地方。只有亲自 实践了,才知道问题所在,才能使自己在今后避免再犯相同的错误。一个完整的系 统设计开发仅仅靠几个月的分析和设计和开发时远远不
57、够的,它需要更长的时间来 测试并完善。 这次毕业设计对我来说具有非同一般的意义,让我对专业知识有了更深刻地认 识,对今后的工作也有了更多的自信。更是我大些四年的读书生涯中难忘的经历。 在大学的四年学习生活,我不仅学到了专业知识,也成就了我良好的组织能力和团 队协作精神相信这些会在我未来的生活和工作中给我带来巨大的帮助。 30 谢辞 在论文完成之际,我的心情万分激动,虽然已经是深夜,但我依然没有困意。 从论文的选题、资料的收集、程序的设计到论文的撰写、编排整个过程中,我付出 了很多的努力,但功夫不负有心人,那份锲而不舍的精神使我终于成功了! 毕业论文是对学生大学阶段学习知识的总结,也是对学生分析问题、解决问题 能力的综合考察。在本次毕业设计中,我首先要感谢教过我的每一位老师,是你们 将我领入了计算机科学的大门,并对我的学习给予了很大的帮助,使我在毕业设计 中有了目标和方向。在大学这近四年的时间里,你们对我悉心的指导和教育。使我 能够不断地提高学习成绩,而且这些课题的研究成果也成为了本论文的主要素材。 同时,我从指导老师高云老师身上学到了很多东西。无论在理论上还是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山西国际能源集团有限公司人员招聘考试题库及答案详解
- 气瓶安全操作规程
- 山体边坡生态防护治理设计方案
- 园区噪声在线监测专项设计方案
- 直流变频风机维修技术手册
- 植被覆盖度遥感监测技术方案
- 项目式教学法在素养导向课堂实施手册
- 2026年中国农业发展集团有限公司人员招聘考试参考试题及答案详解
- 土壤环境质量现场采样作业SOP
- 植物生产与环境中职全套教学课件
- 2026-2027学年小学五年级上册数学全册教案(教学设计)人教版
- (零模)南京市2027届高三年级学情调研语文试卷(含答案)
- T∕CCEAS008-2026 建设工程造价咨询成果文件质量标准
- (正式版)DB34∕T 4541-2023 《废弃露天采坑一般工业固废处置与生态修复技术规范》
- 2026年湖北省检察官、法官入员额考试真题(附答案)
- 常见ABO疑难血型案例分析
- 【新教材】2026年秋季统编版九年级上册道德与法治第一单元 坚持党的全面领导 考点速记+练习题(含答案)
- 新闻学概论(李良荣)超全版笔记
- 炼油与化工装置离心式压缩机组在线监测系统技术规范
- 2025年【小学】汉字听写大会竞赛题库(含答案)
- 奇妙的七巧板01 七巧板的认识和拼组(课件)数学苏教版二年级上册(新教材)
评论
0/150
提交评论