




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计说明书 论论文文题题目目 学学 号号 姓姓 名名 指指导导教教师师职职称称 办办 学学 点点 教教 学学 班班 2012 年年 3 月月 30 日日 摘摘 要要 随着计算机技术的迅速发展,人们不但对工作效率的要求越来越高,还更加强调其 准确性和精确性。计算机在各种领域的地位愈加重要。作为第三产业的之主业的酒店业, 其经营管理变得日益复杂,日常所需处理的数据量渐渐庞大,商业运转的中间环节也越 来越多,以前主要依靠人工管理的方法显然已无法适应酒店规模的不断扩大。提高酒店 的服务质量,主要依靠其管理力。酒店管理系统能提高酒店各项工作的质量;减轻各类 事务性工作的劳动强度,使酒店的职员腾出更多的精力和时间来服务于顾客;改善经营 管理,堵塞漏洞,保证顾客和酒店的经济效益。让消费者少付时间、精力,而获得更好 的服务,更新的创意,更多的信息和更加方便的消费,使消费者和酒店管理者在市场上 取得双赢。 本文完整描述了利用 eclipse 开发平台、采用真正跨平台的 java 编程技术、结合当 前成熟的 sql server 2005 数据库技术,设计和实现酒店管理系统的过程。 关键词:酒店管理系统;java;sql server 2005 目目 录录 第一章第一章 系统开发背景和环境系统开发背景和环境 1 1.1 开发背景.1 1.2 开发环境.1 1.2.1 java 简介.1 1.2.2 sql server 2005 简介.1 1.2.3 eclipse 简介 2 第二章第二章 系统分析系统分析.3 2.1 可行性分析 .3 2.1.1 经济可行性分析 3 2.1.2 技术可行性分析 3 2.1.3 法律可行性分析 3 2.2 系统需求分析 .3 第三章第三章 系统总体设计系统总体设计6 3.1 系统功能结构 .6 3.2 系统概念设计 .6 3.2.1 系统实体描述 6 3.2.2 系统实体关系图 .8 3.3 数据库表的设计 .8 3.3.1 消费座位信息表 8 3.3.2 菜单信息表 8 3.3.3 用户信息表 9 3.3.4 订单信息表 9 3.3.5 菜系信息表 9 3.3.6 订菜信息表 9 第四章第四章 系统详细设计与实现系统详细设计与实现 11 4.1 java核心类的设计11 4.2 酒店管理员业务 .12 4.2.1 登录模块 12 4.2.2 日结账模块 13 4.2.3 月结账模块 18 4.2.4 年结账模块 21 第五章第五章 结束语结束语.24 致致 谢谢25 参考文献参考文献26 毕业设计说明书 1 第一章第一章 系统开发背景和环境系统开发背景和环境 1.11.1 开发背景开发背景 随着餐饮企业的迅速发展,现有的人工管理方式已经不能满足实际需求,广大餐饮营业者已经 意识到使用计算机应用软件的重要性,决定在餐饮企业的经营管理上引入酒店管理系统。 根据餐饮行业的特点和实际情况,酒店管理系统应以餐饮业务为基础,突出前台管理,中式营 业数据分析等功能,从专业角度出发,努力为餐饮管理者提供科学。有效的管理模式和数据分析功 能。 经过多年的发展,对餐饮企业的管理已经逐渐由简单的人工管理,逐步进入到规范,科学管理 的阶段。众所周知,在科学管理的具体实现过程中,最有效的方法就是运用管理软件进行管理。节 省了大量的时间和精力。 1.21.2 开发环境开发环境 本文利用 eclipse 开发平台、采用真正跨平台的 java 编程技术、结合当前成熟的 sql server 2005 数据库技术,完成酒店管理系统的设计和实现。 .1 javajava 简介简介 java 编程语言是一个纯的面向对象的程序设计语言,它继承了 c+ 语言面向对象技术的核心, java 舍弃了 c +语言中容易引起错误的指针(以引用取代) 、运算符重载(operator overloading) 、多重继承(以接口取代)等特性,增加了垃圾回收功能用于回收不再被引用的对象 所占据的内存空间,使得程序员不用再为内存管理而担忧。java 不同于一般的编译执行计算机语 言和解释执行计算机语言。它首先将源代码编译成二进制字节码(byte code),然后依赖各种不同 平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每 次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 java 程序的运行效率。但在 j2se 1.4.2 发布后,java 的执行速度有了大幅提升。 与传统程序不同,sun 公司在推出 java 之 际就将其作为一种开放的技术。全球数以万计的 java 开发公司被要求所设计的 java 软件必须相互 兼容。 “java 语言靠群体的力量而非公司的力量”是 sun 公司的口号之一,并获得了广大软件开发 商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。sun 公司对 java 编程语言 的解释是:java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移 植、高性能、多线程和动态的语言。 java 语言的特点如下: (1)简单性:java 是个精简的系统,无需强大的硬件环境便可以很好地运行。java 的风格和 语法类似于 c+,因此,c+程序员可以很快就掌握 java 编程技术。java 摒弃了 c+中容易引发程 序错误的地方,如多重继承、运算符重载、指针和内存管理等,java 语言具有支持多线程、自动 垃圾收集和采用引用等特性。java 提供了丰富的类库,方便用户迅速掌握 java。 (2)面向对象:面向对象可以说是 java 最基本的特性。java 语言的设计完全是面向对象的, 它不支持类似 c 语言那样的面向过程的程序设计技术。所有的 java 程序和 applet 均是对象,java 支持静态和动态风格的代码继承及重用。 (3)分布式:java 包括一个支持 http 和 ftp 等基于 tcp/ip 协议的子库。因此,java 应用程 序可凭借 url 打开并访问网络上的对象,就像访问本地文件一样简单方便。java 的分布性为实现 在分布环境尤其是 internet 下实现动态内容提供了技术途径。 毕业设计说明书 2 (4)健壮性:java 是一种强类型语言,它在编译和运行时要进行大量的类型检查。类型检查 帮助检查出许多开发早期出现的错误。java 自己操纵内存减少了内存出错的可能性。java 的数组 并非采用指针实现,从而避免了数组越界的可能。java 通过自动垃圾收集器避免了许多由于内存 管理而造成的错误。java 在程序中由于不采用指针来访问内存单元,从而也避免了许多错误发生 的可能。 (5)结构中立:作为一种网络语言,java 编译器将 java 源程序编译成一种与体系结构无关 的中间文件格式。只要有 java 运行系统的机器都能执行这种中间代码。从而使同一版本的应用程 序可以运行在不同的平台上。 (6)安全性:作为网络语言,安全是非常重要的。java 的安全性可从两个方面得到保证。一 方面,在 java 语言里,像指针和释放内存等 c+功能被删除,避免了非法内存操作。另一方面, 当 java 用来创建浏览器时,语言功能和一类浏览器本身提供的功能结合起来,使它更安全。java 语言在你的机器上执行前,要经过很多次的测试。它经过代码校验,检查代码段的格式,检测指针 操作,对象操作是否过分以及试图改变一个对象的类型。另外,java 拥有多个层次的互锁保护措 施,能有效地防止病毒的入侵和破坏行为的发生。 (7)可移植:java 与体系结构无关的特性使得 java 应用程序可以在配备了 java 解释器和运 行环境的任何计算机系统上运行,这成为 java 应用软件便于移植的良好基础。但仅仅如此还不够。 如果基本数据类型设计依赖于具体实现,也将为程序的移植带来很大不便。java 通过定义独立于 平台的基本数据类型及其运算,使 java 数据得以在任何硬件平台上保持一致,这也体现了 java 语 言的可移植性。还有 java 编译器本身就是用 java 语言编写的,java 运算系统的编制依据 posix 方便移植的限制,用 ansic 语言写成,java 语言规范中也没有任何“同具体实现相关”的内容, 这说明 java 本身也具有可移植性。同时 java 语言的类库也具有可移植性。 jdk(java development kit)是整个 java 的核心,包括了 java 运行环境(java runtime environment) ,一堆 java 工具和 java 基础的类库(rt.jar)。不论什么 java 应用服务器实质都是 内置了某个版本的 jdk。因此掌握 jdk 是学好 java 的第一步。最主流的 jdk 是 sun 公司发布的 jdk,除了 sun 之外,还有很多公司和组织都开发了自己的 jdk,例如 ibm 公司开发的 jdk,bea 公 司的 jrocket,还有 gnu 组织开发的 jdk 等等。其中 ibm 的 jdk 包含的 jvm(java virtual machine)运行效率要比 sun jdk 包含的 jvm 高出许多。而专门运行在 x86 平台的 jrocket 在服务 端运行效率也要比 sun jdk 好很多。从 sun 的 jdk5.0 开始,提供了泛型等非常实用的功能,其版本 信息也不再延续以前的 1.2,1.3,1.4,而是变成了 5.0,6.0 了。从 6.0 开始,其运行效率得到了 非常大的提高,尤其是在桌面应用方面。 .2 sqlsql serverserver 20052005 简介简介 今天的商业环境要求不同类型的数据库解决方案。性能、可伸缩性及可靠性是基本要求,而进 入市场时间也非常关键。除这些核心企业品质外,sql server 2005 还为您的数据管理与分析带来 了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势。从数据管理和分析角度看, 将原始数据转化为商业智能和充分利用 web 带来的机会非常重要。作为一个完备的数据库和数据 分析包,sql server 2005 为快速开发新一代企业级商业应用程序、为企业赢得核心竞争优势打开 了胜利之门。作为重要的基准测试可伸缩性和速度奖的记录保持者,sql server 2005 是一个具备 完全 web 支持的数据库产品,提供了对可扩展标记语言 (xml) 的核心支持以及在 internet 上和 防火墙外进行查询的能力。采用 sql server 2005 的优点有: (1)sql2005 具有完全的 web 支持。sql server 2005 提供了以 web 标准为基础的扩展数 毕业设计说明书 3 据库编程功能。丰富的 xml 和 internet 标准支持允许您使用内置的存储过程以 xml 格式轻松存 储和检索数据。您还可以使用 xml 更新程序容易地插入、更新和删除数据。通过 web 轻松访问数 据。有了 sql server 2005,您可以使用 http 来向数据库发送查询、对数据库中存储的文档执行 全文搜索、以及通过 web 进行自然语言查询。 强大而灵活的基于 web 的分析。sql server 2005 分析服务功能被扩展到了 internet。您可以通过 web 浏览器来访问和控制多维数据。 (2)高度的可伸缩性和可靠性。使用 sql server 2005 可以获得非凡的可伸缩性和可靠性。 通过向上伸缩和向外扩展的能力,sql server 满足了苛刻的电子商务和企业应用程序要求。 向上 伸缩。sql server 2005 利用了对称多处理器 (smp) 系统。sql server enterprise edition 最 多可以使用 32 个处理器和 64 gb ram。向外扩展。向外扩展可以将数据库和数据负载分配给多台 服务器。 可用性。通过增强的故障转移群集、日志传送和新增的备份策略,sql server 2005 达到了最 大的可用性。 (3)最快的进入市场时间。sql server 2005 是 microsoft .net enterprise server 的数 据管理与分析中枢。sql server 2005 包括加速从概念到最后交付开发过程的工具。有了 sql server 2005,您可以建立带有集成工具的端到端分析解决方案,从数据创造价值。此外,还可以 根据分析结果自动驱动商业过程以及从最复杂的计算灵活地检索自定义结果集。快速开发、调试和 数据转换。sql server 2005 带有交互式调节和调试查询、从任何数据源快速移动和转化数据、以 及按 transact-sql 方式定义和使用函数等功能。您可以从任意 visual studio 工具以可视化方 式设计和编写数据库应用程序。简化的管理和调节。使用 sql server 2005,您可以很容易地在企 业资源旁边集中管理数据库。可以在保持联机的同时轻松地在计算机间或实例间移动和复制数据库。 .3 eclipseeclipse 简介简介 eclipse 是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、 具有商业品质的工业平台。它主要由 eclipse 项目、eclipse 工具项目和 eclipse 技术项目三个项 目组成,具体包括四个部分组成eclipse platform、jdt、cdt 和 pde.jdt 支持 java 开发、 cdt 支持 c 开发、pde 用来支持插件开发,eclipse platform 则是一个开放的可扩展 ide,提供了 一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。eclipse platform 允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另 一个工具功能在哪里开始。 eclipse sdk(软件开发者包)是 eclipse platform、jdt 和 pde 所生产的组件合并,它们可 以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无 缝集成到 eclipse platform 中的工具。eclipse sdk 由 eclipse 项目生产的工具和来自其它开放 源代码的第三方软件组合而成。eclipse 项目生产的软件以 cpl 发布,第三方组件有各自自身的许 可协议。 现在 eclipse 已经成为最广泛的 java 开发平台,成为广大 java 爱好者的首选编程平台。凭借 其免费和稳定以及强大的功能和丰富的插件功能,所以本程序采用 eclipse 环境。 毕业设计说明书 4 第二章 系统分析 2.12.1 可行性分析可行性分析 .1 经济可行性分析经济可行性分析 酒店管理系统一旦开发成功投入使用,就避免了人工操作所带来的一系列不必要的麻烦,节省 了用户和相关工作人员的时间,能够很好地提高工作效率。可以节省大量的管理费用,从长远来看, 投资可以完全收回。 本系统开发所要用到的软件 java 和 eclipse 都可以从 sun 公司的网站中直接免费下载,大大 减少了开发成本。 .2 技术可行性分析技术可行性分析 java 连接数据库主要由两种方法,一种是 jdbc-odbc 桥接,另外一种是纯数据驱动连接。 jdbc(java data base connectivity, java 数据库连接)是一种用于执行 sql 语句的 java api,可以为多种关系数据库提供统一访问,它由一组用 java 语言编写的类和接口组成。jdbc 为 工具/数据库开发人员提供了一个标准的 api,据此可以构建更高级的工具和接口,使数据库开发 人员能够用纯 java api 编写数据库应用程序。 jdbc-odbc 是微软公司开放服务结构(wosa,windows open services architecture)中有关数 据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准 api(应用程序编程 接口) 。这些 api 利用 sql 来完成其大部分任务。odbc 本身也提供了对 sql 语言的支持,用户可以 直接将 sql 语句送给 odbc。 一个基于 odbc 的应用程序对数据库的操作不依赖任何 dbms,不直接与 dbms 打交道,所有的 数据库操作由对应的 dbms 的 odbc 驱动程序完成。也就是说,不论是 foxpro、access , mysql 还 是 oracle 数据库,均可用 odbc api 进行访问。由此可见,odbc 的最大优点是能以统一的方式处 理所有的数据库。缺点是连接的时候必须依靠 odbc,在其他非微软平台没有 odbc 的情况下无法用 该方法。 该酒店管理系统采用的是第二种连接方式,即纯数据驱动连接的方法,这种方式不需要建立桥, 设置数据源,由于不依赖于 odbc,使得程序具有更好的移植性,运行时只需要安装 sql server 2005 提供的纯 java 数据库驱动程序就可以了。 .3 法律可行性分析法律可行性分析 本系统的开发作为计算机毕业设计以巩固先前所学的知识,此程序开发仅供个人所用,没有侵 犯任何版权,也没有违反国家相关法律法规及相关方面的规定,与业界有关规定也无矛盾之处,所 以法律方面可行 。 2.22.2 系统需求分析系统需求分析 系统的主要业务流程如下: 第一步:登录系统,选择适合您的身份。根据登录用户和密码进行登陆。 第二步:录入顾客消费信息和菜单种类信息等。即吧台查询菜品,菜系和日结账等详细资料, 提交订单,将信息录入酒店管理系统的数据库中。一个姓名对应一个台号,台号一定要确保准确无 误,以便方便上菜。 第三步:对顾客消费进行销账处理。对顾客的消费信息进行结账。 毕业设计说明书 5 第四步:对日,月,年的消费信息进行汇总处理。对整个酒店每日,每年,每月的消费信息进 行简单的计算,方便酒店管理人员了解酒店的运行状态和运营趋势。 综上所述,酒店管理系统应该满足以下一些基本要求: (1)系统内存储的菜品菜系信息,应至少包括:名称、助记码、菜系、单位、单价等信息。 (2)每一位顾客应该包括的信息至少有:对应的台号,开台时间,消费金额,消费的菜品等 详细消费信息。 (3)系统必须实现以下基本功能: 录入和查询菜品:即用户能录入新到的菜品和查出酒店内的所有菜品; 酒店管理人员能随时查询出客人预订菜品的具体情况,对应的吧台号可以对应查询对应的客户 消费信息。 承办订餐业务:这是最基本的。订餐的时候,要求输入客户资料;若要求的吧台号尚有,则为 其开台,并保存信息;如果没有,则显示抱歉信息,并询问用户是否有其他要求。 管理员业务:首先对管理员身份进行验证,符合身份的管理员可以对信息进行维护:对用户的 信息,订餐信息,开台信息,消费信息进行增加,删除,修改,查询。管理员可以按条件分类查询 菜品信息,用户信息,日月年消费信息,单个顾客消费信息,如果不输入查询条件,则查询全部。 毕业设计说明书 6 第三章第三章 系统总体设计系统总体设计 3.13.1 系统系统功能结构功能结构 系统主要功能结构如下图所示: 用 户 管 理 酒店管理系统 前台服务 开 台 菜 单 智 能 化 获 取 菜 品 自 动 结 账 后台服务 台 号 管 理 菜 系 管 理 菜 品 管 理 结账报表 日 结 账 报 表 月 结 账 报 表 年 结 账 报 表 系统安全 修 改 密 码 图 3-1 系统功能结构图 3.23.2 系统概念设计系统概念设计 .1 系统实体描述系统实体描述 一是菜品实体,菜品实体是酒店对酒菜的描述,它保存的是关于酒菜的所有信息: 实体集菜品,有菜品编号、菜名、菜系别、助记码、计量单位、单价和状态。其中以“菜品号” 作为主键。 状态单价计量单位 菜助记码菜品号 菜系别菜名菜品实体 图 3-2 菜品实体属性图 二是消费台实体,消费台实体是酒店对消费位置桌号的描述,它保存的是消费台位置的信息: 毕业设计说明书 7 图 3-3 消费台实体属性图 实体集消费台,有属性台号和座位数量。每一个座位都是与众不同的,都是唯一和不重复的, 所以以台号作为主键。 三是用户实体,用户实体是酒店管理员对具体操作人员的描述,它保存的是酒店操作人员的信 息: 图 3-4 用户实体属性图 实体集用户,有用户编号、姓名、性别,出生年月,密码,工作卡号和状态。因为姓名有可能 重名,所以不能作为主键;以“用户编号”作为主键。 四是用菜系实体,菜系实体是酒店对菜的类别的描述,它保存的是所有菜类别的信息: 菜系实体 类别名编号 图 3-5 菜系实体属性图 实体集菜系,有编号和菜系类别名 2 个属性,其中以“编号”作为主键 。 消费台实体 座位数量台号 密码性别生日 工作卡号状态 用户编号姓名用户实体 毕业设计说明书 8 .2 系统实体关系图系统实体关系图 图 3-6 系统实体 e-r 图 3.33.3 数据库表数据库表的设计的设计 .1 消费座位信息表消费座位信息表 标识名称:tb_desk 主要作用:此表主要用来存储消费台,即座位的状态,包括台号和座位的数量,便于以后系统 查询信息等操作的实现。 字段名字段解释字段类型是否空 num消费台号varchar(5)非空 seating座位数量int非空 表 3-1 消费台信息表 .2 菜单信息表菜单信息表 标识名称:tb_menu 主要作用:此表主要用来存储菜单信息,包括有菜单编号、菜名、菜系别、助记码、计量单位、 单价和状态。实现系统对菜单信息的查询、修改等相关管理工作,方便用户和管理员的相关系统操 作。 包含 1 1n m nn 1 m 隶属 菜品 菜系 包含 包含点菜 酒店消费台 毕业设计说明书 9 字段名字段解释字段类型是否空 num菜单号varchar(8)非空 sort_id菜系号int非空 name菜名varchar(20)非空 code所属菜系varchar(10)非空 unit计量单位varchar(4)非空 unit_price单价int非空 state该菜状态char(4)非空 表 3-2 菜单信息表 .3 用户信息表用户信息表 标识名称:tb_user 主要作用:此表主要用来存储操作员用户信息,其中包括编号、姓名、性别、工作证卡号,管 理密码和状态。它实现了管理者对操作员,同时可以实现系统查询数据库相关信息时的相关功能。 字段名字段解释字段类型是否空 id用户编号int (自加一)非空 name姓名varchar(8)非空 sex性别 char(2)非空 birthday生日datetime非空 id_card工作卡号varchar(20)非空 password 管理密码varchar(20)非空 freeze当前状态 char(4)非空 表 3-3 用户信息表 .4 订单信息表订单信息表 标识名称:tb_order_form 主要作用:此表用来存储每一个消费台的具体消费记录,主要包括主键序号、台桌号、时间和 消费者编号。根据此表可以进行营业额查询,和每一个消费台(桌子)的消费状态。 字段名字段解释字段类型是否空 num唯一标识char(11)非空 desk_num台号char(5)非空 datatime消费时间date可以空 money消费金额int非空 uer_id消费者编号int非空 表 3-4 订单信息表 .5 菜系信息表菜系信息表 标识名称:tb_sort 主要作用:此表主要用来存储登陆信息,包括主键序号、管理员账户和管理员密码。在管理员 登录时系统主动访问此表,进行相关信息的验证。可以实现数据库表结构的相关功能。 毕业设计说明书 10 字段名字段解释字段类型是否空 id唯一标识int 非空 name菜系名varchar(20)非空 表 3-5 菜系信息表 .6 订菜信息表订菜信息表 标识名称:tb_order_item 主要作用:此表用来存储每一个消费台的具体点菜记录,消费时以台号为单位,以消费台进行 增加菜品。主要包括主键序号、台桌号、菜单编号和数量和总金额。根据此表可以查询每一桌客人 具体都定了那些菜品,和每一个消费台的消费金额的状态。 字段名字段解释字段类型是否空 id唯一标识int非空 order_form_num台号char(11)非空 meun_num菜品号char(8)非空 amount消费菜品数量int非空 total消费金额int非空 表 3-6 订单信息表 毕业设计说明书 11 第四章 系统详细设计与实现 4.14.1 数据库连接类的设计数据库连接类的设计 数据库连接类负责加载数据库驱动程序,以及创建和关闭数据库连接。为了最大程度地应用每 个已经创建的数据库连接,这里将其保存到了 threadlocal 类的对象中。 首先在数据库连接类中定义一些常量,包括连接数据库使用的驱动程序、连接数据库的路径、 连接数据库使用的用户名和密码,并且定义一个 threadlocal 类的对象,用来保存已经创建的数据 库连接。具体代码如下: private static final string driverclass = “com.microsoft.jdbc.sqlserver.sqlserverdriver“; /数据库驱动 private static final string url = “jdbc:microsoft:sqlserver:/:1434;databasename=db_drinkerymanage“; /路径 private static final string username = “sa“; /连接数据库的用户名 private static final string password = “; /连接数据库的密码 private static final threadlocal threadlocal = new threadlocal(); /创建保存连接的对象 然后编写用来加载数据库驱动程序的代码,通常情况下将其放到静态代码中,这样做的好处是 只在该类第一次被加载(即第一次被调用)时执行加载数据库驱动程序的动作,避免了反复加载数 据库驱动程序,从而提高软件的性能。具体代码如下: static /通过静态方法加载数据库驱动 try class.forname(driverclass).newinstance(); / 加载数据库驱动 catch (exception e) e.printstacktrace(); 最后编写用来创建和关闭数据库连接的方法,这里将这两个方法均定义为静态的,这样通过类 名就可以调用方法,方便使用。在这两个方法中,首先从 threadlocal 类的对象中获得数据库连接, 然后判断是否存在可用的数据库连接,如果存在则直接返回或关闭,否则重新创建。具体代码如下: public static connection getconnection() / 创建数据库连接的方法 connection conn = threadlocal.get(); / 从线程中获得数据库连接 if (conn = null) / 没有可用的数据库连接 try conn = drivermanager.getconnection(url, username, password); / 创建新的数据库连接 threadlocal.set(conn); / 将数据库连接保存到线程中 catch (sqlexception e) e.printstacktrace(); return conn; public static boolean closeconnection() / 关闭数据库连接的方法 boolean isclosed = true; /默认关闭成功 connection conn = threadlocal.get(); / 从线程中获得数据库连接 threadlocal.set(null); / 清空线程中的数据库连接 if (conn != null) / 数据库连接可用 毕业设计说明书 12 try conn.close(); / 关闭数据库连接 catch (sqlexception e) isclosed = false; /关闭失败 e.printstacktrace(); return isclosed; 4.24.2 系统业务系统业务模块模块 .1 结账报表工作区设计结账报表工作区设计 首先解决在实现结账报表功能是日期的有效性问题。需要定义一个数组,用来存放各个月份拥 有的天数,默认 2 月份为 28 天。为了方便使用,将月份与数组的索引一一对应,即不使用数组索 引为 1 的位置。具体代码如下: private int daysofmonth=0,31,28,31,30,31,30,31,31,30,31,30,31; 下面为年度下拉列表框添加时间监听器。首先获得选中的年度,并判断是平年还是闰年,以确 定 2 月份的天数,即修改索引为 2 的值,如果为平年则修改为 28,为闰年则修改为 29;然后获得 当前选中的月份,如果当前选中的为 2 月份,则继续活得日下拉列表框拥有可选项的数量,如果日 下拉列表框拥有可选项的数量不等于索引为 2 的值,当日下拉列表框拥有可选项的数量为 28 时, 则为日下拉列表框添加一个可选项“29” ,否则从日下拉列表框中移除可选项“29” 。具体代码如下: yearcombobox.addactionlistener(new actionlistener() public void actionperformed(actionevent e) int year = (integer) yearcombobox.getselecteditem();/ 获得选中的年度 judgeleapyear(year);/ 判断是否为闰年,以确定 2 月份的天数 int month = (integer) monthcombobox.getselecteditem();/ 获得选中的月份 if (month = 2) / 如果选中的为 2 月 int itemcount = daycombobox.getitemcount();/ 获得日下拉菜单当前的天数 if (itemcount != daysofmonth2) / 如果日下拉菜单当前的天数不等于 2 月份的天数 if (itemcount = 28)/ 如果日下拉菜单当前的天数为 28 天 daycombobox.additem(29);/ 则添加为 29 天 else / 否则日下拉菜单当前的天数则为 29 天 daycombobox.removeitem(29);/ 则减少为 28 天 ); 下面为月份下拉列表框添加事件监听器。首先获得选中的月份,并活得日下拉列表框拥有可选 项的数量。如果日下拉列表框拥有可选项的数量不等于当前选中月份拥有的天数,当日下拉列表框 拥有可选项的数量大于当前选中月份拥有的天数时,则移除日下拉列表框中最大的可选项,并将日 下拉列表框拥有可选项的数量减 1;否则将日下拉列表框拥有可选项的数量加 1,并添加到日下拉 列表框的可选项中。具体代码如下: monthcombobox.addactionlistener(new actionlistener() 毕业设计说明书 13 public void actionperformed(actionevent e) int month = (integer) monthcombobox.getselecteditem();/ 获得选中的月份 int itemcount = daycombobox.getitemcount();/ 获得日下拉菜单当前的天数 while (itemcount != daysofmonthmonth) / 如果日下拉菜单当前的天数不等于选中月份 的天数 if (itemcount daysofmonthmonth) / 如果大于选中月份的天数 daycombobox.removeitem(itemcount);/ 则移除最后一个选择项 itemcount-;/ 并将日下拉菜单当前的天数减 1 else / 否则小于选中月份的天数 itemcount+;/ 将日下拉菜单当前的天数加 1 daycombobox.additem(itemcount);/ 并添加为选择项 ); 通过年度和月份下拉列表框的事件监听器对日下拉列表框可选项的控制,无论选择哪一年或哪 一个月,日下拉列表框提供的日期可选项都是一个有效的日期。 .2 日结账日结账模块模块 图 4-2 日结账汇总界面 上图记录了酒店的日结账汇总界面,日结账报表功能提供了对一日营业情况的统计,包括日开 台数量、各个餐台的消费金额、菜品的消费情况、各个菜品的日销售情况,以及营业额等。 首先创建一个用于日结账界面的窗体,为窗体设置标题、大小等信息,具体代码如下: public daydialog() 毕业设计说明书 14 super(); setmodal(true); settitle(“日结账“); setbounds(60, 60, 860, 620); final jpanel panel = new jpanel(); getcontentpane().add(panel, borderlayout.north); int year = today.getyear(); int month = today.getmonth(); int day = today.getday(); yearcombobox = new jcombobox(); yearcombobox.setmaximumrowcount(10); string mindatetime = dao.sorderformofmindatetime(); if (mindatetime = null) yearcombobox.additem(year); else int minyear = integer.valueof(mindatetime.substring(0, 4); for (int y = minyear; y daysofmonthmonth) / 如果大于选中月份的天数 daycombobox.removeitem(itemcount);/ 则移除最后一个选择项 itemcount-;/ 并将日下拉菜单当前的天数减 1 else / 否则小于选中月份的天数 itemcount+;/ 将日下拉菜单当前的天数加 1 daycombobox.additem(itemcount);/ 并添加为选择项 ); 日结账查询表格,显示查询结果,具体代码如下: final jbutton submitbutton = new jbutton(); submitbutton.addactionlistener(new actionlistener() public void actionperformed(actionevent e) tablevaluev.removeallelements(); int year = (integer) yearcombobox.getselecteditem(); int month = (integer) monthcombobox.getselecteditem(); int day = (integer) daycombobox.getselecteditem(); int columncount = tablecolumnv.size(); vector orderformv = dao.sorderformofday(year + “-“ + month+ “-“ + day); for (int row = 0; row (); tablecolumnv.add(“编号“); tablecolumnv.add(“台号“); tablecolumnv.add(“开台时间“); 毕业设计说明书 17 tablecolumnv.add(“消费金额“); vector vector = dao.smenu(); for (int i = 0; i (); tablecolumnv.add(“日期“); tablecolumnv.add(“开台总数“); tablecolumnv.add(“消费总额“); tablecolumnv.add(“平均消费额“); tablecolumnv.add(“最大消费额“); tablecolumnv.add(“最小消费额“); tablevaluev = new vector(); tablemodel = new defaulttablemodel(tablevaluev, tablecolumnv); 毕业设计说明书 21 table = new mtable(tablemodel); scrollpane.setviewportview(table); private void judgeleapyear(int year) if (year % 100 = 0) if (year % 400 = 0) daysofmonth2 = 29; else daysofmonth2 = 28; else if (year % 4 = 0) daysofmonth2 = 29; else daysofmonth2 = 28; .4 年结账年结账模块模块 图 4-4 年结账汇总界面 上图记录了酒店的月结账汇总界面,年结账报表功能提供了对一年营业情况的统计,包括一年 中每天的营业额、每月的营业额、每月同一日期的总营业额,以及一年的总营业额。核心代码如下: 首先创建一个用于年结账界面的窗体,为窗体设置标题、大小等信息,具体代码如下: 毕业设计说明书 22 public yeardialog() super(); setmodal(true); settitle(“年结账“); setbounds(60, 60, 860, 620); final jpanel panel = new jpanel(); getcontentpane().add(panel, borderlayout.nort
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离职工资结算协议书范本
- 餐饮连锁企业厨师长职位竞聘及培训协议
- 餐饮品牌授权与餐厅承包合同
- 个人美容院租赁合同模板
- 代驾泊车服务合同模板(含事故处理)
- 餐饮店租赁承包合作协议
- 【课件】弹力+2024-2025学年人教版物理八年级下册+
- 产后抑郁生活护理常规
- 组织管理方法论
- 中班健康保护眼睛教案
- DB43-T 2927-2024 中医护理门诊建设与管理规范
- 青岛志远学校新初一分班数学试卷
- 护理三基技能培训课件
- 拒绝假努力让努力更高效-2023-2024学年热点主题班会大观园(全国通用)课件
- 新视野大学英语(第四版)读写教程2(思政智慧版)课件 Unit 4 Mission and exploration of our time Section A
- 五年级下册语文试题课外名著阅读之《三国演义》阅读训练(含答案)部编版
- 支原体感染后护理查房课件
- DB63-T 2220-2023 风积沙填筑路基技术规范
- 工程股权转让协议
- 高位截瘫的护理查房
- 北京大学考博英语历年真题及详解
评论
0/150
提交评论