1、内蒙古工业大学信息 工 程 学 院课 程 设 计设计题目: Java 程序设计课程设计 -酒店管理系统 系 别 信息工程系 班级 软件 08-1 学生姓名 古海峰 学号 20 18 24 29 号 指导教师 杨弘平、费雅洁 职称 副教授、教授 起止日期:2011 年 7 月 13 日起 至 2011 年 7 月 25 日止II内蒙古工业大学信息 工 程 学 院课程设计任务书课程设计题目: Java 程序设计课程设计 -酒店管理系统 系 别 信息工程系 班级 软件 08-1 学生姓名 古海峰 学号 20 18 24 29 号 指导教师 杨弘平、费雅洁 职称 副教授、教授 课程设计进行地点: 实训
2、 F 任 务 下 达 时 间: 2011 年 6 月 13 日起止日期: 2011 年 7 月 13 日起 至 2011 年 7 月 25 日止教 研 室 主 任 杨 弘 平 2011 年 7 月 12 日批准1.设计的原始资料及依据通过课程设计使学生进一步加深对课程内容的理解,利用程序设计的基本思想进行程序的开发,进一步掌握编程方法和技巧,提高学生用程序的思想来解决实际问题的能力。2设计的主要内容及要求本小组设计题目:酒店管理管理系统需要完成的功能: 前台服务:开台点菜、添加菜品、结账 后台管理:维护台号、维护菜系、维护菜品 结账报表:日结账报表、月结账报表、年结账报表 系统安全:修改密码、
3、用户管理 数据库的创建、登陆界面3.对设计说明书撰写内容、格式、字数的要求 学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计说明书(论文)的结构及各部分内容要求可参照沈阳工程学院毕业设计(论文)撰写规范执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。 装订格式封面、任务书、成绩评审意见表、摘要和关键词、目录、正文、结论、致谢、参考文献。 课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于 3000 字。打印时采用 A4 纸,页边距均为 20mm,正文采用宋体小四号字,行间距 18 磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题
4、采用黑体小四号字,三级节标题采用黑体小四号字,表题与图题采用宋体五号字。4. 设计完成后应提交成果的种类、数量、质量等方面的要求 课程设计任务书 课程设计报告 设计成品(光盘)5.时间进度安排顺序 阶段日期 计 划 完 成 内 容 备注1 第 16 周第 1 天 查阅资料,充分解读题目内容,小组分工,确定每个人的具体任务。1 天2 第 16 周第 2 天 数据库设计及登陆界面的实现。 1 天3 第 16 周第 3,4,5天,第 17 周第 1 天编制程序,单元测试。 4 天4 第 17 周第 2,3 天 程序整合,综合调试。 2 天5 第 17 周第 4 天 答辩。 1 天6 第 17 周第
5、5 天 撰写课程设计报告。 1 天6.主要参考资料(文献)1 耿祥义.JAVA2 实用教程.北京:清华大学出版社,20062 朱仲杰.JAVA2 全方位学习.北京:机械工业出版社,2006 IV3 张思民.JAVA 程序设计实践教程.北京:清华大学出版社,20064 汤一平.Java 语言程序设计.北京:科学出版社,20065 刘艺.Java 程序设计大学教程. 北京:机械工业出版社,20066 耿祥义.Java 课程设计.北京:清华大学出版社,20037 Sharon Zakhour. Java 教程. 北京:人民邮电出版社,2007V沈阳工程学院 课程设计成绩评定表系(部): 信息工程系
6、班级: 学生姓名:指 导 教 师 评 审 意 见评价内容 具 体 要 求 权重 评 分 加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。 0.1 5 4 3 2工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.2 5 4 3 2工作量 按期圆满完成规定的设计任务,工作量饱满,难度适宜。 0.2 5 4 3 2说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.5 5 4 3 2指导教师评审成绩(加权分合计乘以 8) 分 加权分合计指 导 教 师 签 名: 年 月 日评
7、阅 教 师 评 审 意 见评价内容 具 体 要 求 权重 评 分 加权分查阅文献查阅文献有一定广泛性;有综合归纳资料的能力 0.2 5 4 3 2工作量 工作量饱满,难度适中。 0.5 5 4 3 2说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.3 5 4 3 2评阅教师评审成绩(加权分合计乘以 4) 分 加权分合计评 阅 教 师 签 名: 年 月 日答 辩 小 组 评 审 意 见评价内容 具 体 要 求 权重 评 分 加权分学生汇报汇报准备充分,思路清晰;语言表达准确,概念清楚,论点正确,有层次,有重点,基本上反映
8、了所完成任务的全部内容;时间符合要求。 0.5 5 4 3 2答 辩 思路清晰;回答问题有理论依据,基本概念清楚;主要问题回答准确,深入,有说服力。 0.5 5 4 3 2答辩小组评审成绩(加权分合计乘以 8) 分 加权分合计答辩小组教师签名: 年 月 日课 程 设 计 总 评 成 绩 分摘 要随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已被人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对酒店进行管理,具有手工管理无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、成本低等。这些优点能够极大地提高酒店管理的效
9、率,也是酒店的科学化、正规化管理和与世界接轨的重要条件。因此,开发这样一套酒店管理系统已成为很有必要的事情。JAVA是一门很优秀的编程语言,具有面向对象、与平台无关、安全、稳定和多线程等特点,是目前软件设计中极为健壮的编程语言。JAVA不仅可以用来开发大型的应用程序。而且特别适合Internet的应用开发。JAVA确实具备 “一次写成,处处运行”的特点,JAVA以成为网络时代最重要的编程语言之一。本报告中介绍了用JAVA语言实现酒店管理系统的全部过程。本次课程设计是配合JAVA程序设计课程,帮助学生深入学习掌握JAVA语言,熟练运用这个工具来编写的。通过课程设计各个项目的综合训练,培养学生实际
10、分析问题、编程和动手能力、提高学生的综合素质。本课程设计尝试使用一些较生动的示例和设计项目,激发学生学习兴趣,引导学生主动学习,正确理解、接受需要重点掌握的知识点,为参加项目开发及更深入学习做好准备。本次课程设计主要是用 JAVA 和 MySQL 数据库实现酒店管理系统,其系统主要完成以下功能模块:前台服务:主要实现开台点菜、添加菜品和结账;后台管理:主要实现台号维护、菜系维护、菜品维护;结账报表:主要实现日结账报表、月结账报表和年结账报表;系统安全:主要实现修改密码以及用户管理;另外还有数据库的创建、登陆界面。关键词 酒店管理系统,JAVA,MySQL沈阳工程学院课程设计报告 目 录VII目
11、 录摘 要 .I第 1 章 绪 论 .- 1 -第 2 章 系统功能介绍 .- 2 -2.1 系统功能总框图 - 2 -2.2 模块功能介绍 .- 2 -2.2.1 用户登录模块介绍 .- 2 -2.2.2 前台服务功能介绍 .- 3 -2.2.3 后台服务模块介绍 .- 3 -2.2.4 结账报表模块介绍 .- 5 -2.2.5 系统安全模块介绍 .- 7 -2.3 组内任务分工 .- 8 -第 3 章 数据库设计 .- 10 -第 4 章 系统功能实现 .- 14 -4.1 公共模块设计 .- 14 -4.1.1 编写数据库连接类 .- 14 -4.2 登陆模块设计 .- 14 -4.3
12、前台服务模块设计 .- 15 -4.4 后台管理模块设计 .- 17 -4.4.1 菜系管理 - 17 -4.4.2 菜品管理 .- 18 -4.4.3 台号管理 .- 18 -4.5 结账报表模块设计 .- 19 -4.5.1 结账报表工作区技术分析 .- 19 -4.5.2 日结账报表工作区的实现过程 .- 20 -4.5.3 月结账报表工作区的实现过程 .- 21 -4.5.4 年结账报表工作区的实现过程 .- 23 -4.6 系统安全模块设计 .- 24 -结 论 .- 26 -致 谢 .- 27 -参考文献 .- 28 -第 1 章 绪 论世界的发展,社会的进步,人们的物质生活和精神
13、生活都得到了很大的飞跃,人们以前的意识里就是所谓的人工管理。可是人类在进步、国家在进步、世界在进步,那么必然会带来新的产物,由前一个阶段向后一阶段过度。随着电子电子计算机技术的进步,为各行各业的自动化管理打开了方便之门。在新的条件下,有必要实现酒店的自动化管理,提高酒店工作人员的效率。本系统从对酒店的核心业务前台服务出发,着眼于为酒店管理创造自动化的办公环境而开发在计算机飞速发展的今天,将计算机这一信息处理利器应用于酒店的日常管理已是势必所然,而且这也将为酒店管理带来前所未有的改变,它可以带来意想不到的效益,同时也会为酒店的飞速发展提供无限潜力。采用计算机管理信息系统已成为企业、酒店管理科学化
14、和现代化的重要标志,它给酒店管理带来了明显的经济效益和社会效益。主要体现在:极大的提高了管理人员和工作人员的工作效率,大大减少了以往入出存流程繁琐、杂乱、周期长的弊端。减少的出错率,更大程度避免了不必要的误差,使酒店管理正规化、标准化、社会化。基于酒店管理的全面自动化,可以减少前台服务、后台管理及结账报表管理中的漏洞,可以节约不少管理开支,增加企业收入。这样可使酒店有更大的发展空间,被人们和社会所认同,在社会上有它的位置和地位。对于前台服务的操作自动化和信息化,全面提高了公司管理的水平,让工作人员很容易的实现开台、点菜以及结账的查询和管理。对于报表结算的管理,更明确和准确化,既保证了酒店日常运
15、营的准确,又利于管理者进行统计和查询。对于后台管理,很方便的提供台号、菜系以及菜品的添加删除,可以方便的对酒店的运营进行管理。具体信息的处理有强大的数据库做后盾,它里面保存大量且重要的信息,实现了酒店管理的数据化,因为现在可以说是数据的时代,其实就是所谓的信息时代。随着我国改革开放的不断深入,经济飞速的发展,酒店要想生存、发展,要想在激烈的市场竞争中立于不败之地,没有现代化的管理是万万不行的,酒店管理的全面自动化、信息化则是其中极其重要的部分。为了酒店管理自动化的步伐,提高酒店管理业务处理效率,建酒店管理系统已变得十分重要。酒店管理已经成为现在的发展趋势,目前为止,酒店采用自动化管理的很少,还
16、有大部分采用人工管理,不过就是比较正规化,改善了以前的人工管理的部分缺点。可是在很大程度上并没有解决问题,因为社会目前的发展对它们的要求仅限于此,但是就目前的社会发展趋势看,社会在不断的发展,而且向全面自动话靠拢,那么酒店管理系统就将成为一大亮点,是社会发展的必然产物。因此开发一个标准化的酒店管理系统是很有必要的,而且 JAVA 是一种面向对象的、无平台的编程语言,具有很大的发展空间,用它编写酒店管理系统可以更体现出酒店管理的优势。第 2 章 系统功能介绍2.1 系统功能总框图 酒店管理系统的功能结构图如图 2.1 所示。酒店管理系统前台服务 后台服务 结账报表 系统安全开台点菜智能化获取菜品
17、自动结账台号管理菜系管理菜品管理日结账报表月结账报表年结账报表修改密码用户管理图 2.1 酒店管理系统功能模块2.2 模块功能介绍2.2.1 用户登录模块介绍用户登录模块是每个软件应用软件都不可或缺的部分,其主要功能是保证用户数据安全,同时用户登录窗口也是用户看到的第一个系统界面,因此,一个设计优秀的用户登录窗口,将有效的提高用户对系统的第一印象。本系统的用户登录界面如图 2.2 所示。用户登录窗口的设计优秀与否,主要包括以下几个方面:沈阳工程学院课程设计报告 第 2 章 系统功能介绍X图 2.2 用户登录界面2.2.2 前台服务功能介绍酒店管理系统的主窗体效果如图 2.2 所示。窗体的中间部
18、分用来显示当前的开台点菜信息,窗体的下方用来操作该系统,例如开台点菜,自动结账,台号、菜系管理,营业报表等。单击图 2.2 中右下方的“菜品管理”按钮,将打开菜品管理对话框,该对话框用来维护菜品信息,包括名称、助记码、菜系、单位和单价。其中助记码用来在点菜时快速获取菜品信息(建议设置为菜品名称的首字母,例如将菜品“红烧牛肉面”的助记码为“hsnrm” ) 。同理单击图 2.2 中右下方的菜系管理、台号管理将分别显示所对应的菜系管理对话框和台号管理对话框。单击图 2.2 中右下方的“日结账”按钮,将打开“日结账”对话框,该对话框用来统计指定日期的销售情况,包括日营业额和各个商品的日营业额。同理单
19、击“月结账” 、 “年结账”按钮,将分别显示出对应的“月结账” 、 “年结账”对话框。图 2.2 酒店管理系统主窗体2.2.3 后台服务模块介绍本系统的后台服务模块包含有 3 个小模块,分别为菜品管理,菜系管理和台号管理,每个小模块又分为若干功能。后台管理模块如图 2.3 所示。沈阳工程学院课程设计报告 第 2 章 系统功能介绍XI图 2.3 后台管理模块菜品管理是对整个酒店的菜单进行的管理,所提供的功能包括菜品的查询,添加和删除功能,其中菜品的查询功能为系统自动查询,并且在添加或者删除菜品后自动刷新真个菜品表,并把信息重新显示在表单中,如图 2.4 所示。图 2.4 菜品管理菜系管理模块包括
20、了对整个酒店所有菜系的查询,添加和删除功能,同时菜系的查询功能为自动查询,如图 2.5 所示。沈阳工程学院课程设计报告 第 2 章 系统功能介绍XII图 2.5 菜系管理台号管理包含的功能有台号的查询,添加和修改功能,如图 2.6 所示。图 2.6 台号管理2.2.4 结账报表模块介绍本系统提供提供了三种方式的结账报表,分别是日结帐号报表、月结账报表和年结账报表,在结账报表的工作区中提供了打开这三种结账 功能的按钮,如图 2.7 所示。沈阳工程学院课程设计报告 第 2 章 系统功能介绍XIII图 2.7 结账报表工作区日结账功能提供了对一日营业情况的统计,包括日开台数、各个餐台的消费金额、菜品
21、的消费情况、各个菜品的日销售情况,以及日营业额等,如图 2.8 所示。图 2.8 日结账报表月结帐报表功能提供对一个月营业情况情况的统计,包括日开台总数、日总营业额、日开台的平均消费额、日开台的最大和最小消费额,以及当月的总开台数、月总营业额、以及一个月中的日平均营业额、一月中开台的最大和最小消费额,如图 2.9 所示。沈阳工程学院课程设计报告 第 2 章 系统功能介绍XIV图 2.9 月结账报表年结账报表功能提供了对一年营业情况的统计,包括一年中每天的营业额、每月的营业额、每月同一日的总营业额,以及一年的营业额,如图 2.10 所示。图 2.10 年结账报表2.2.5 系统安全模块介绍在本模
22、块里所实现的三种功能分别是:修改密码、用户管理和推出系统。在系统安全工沈阳工程学院课程设计报告 第 2 章 系统功能介绍XV作区提供了这三种功能的按钮。如果所示。图 2.6 系统安全工作区修改密码功能是对旧密码的修改。如图所示。图 2.7 修改密码功能用户管理功能提供了对用户和管理员的查询、添加、修改和删除的实现。图 2.8 用户管理功能沈阳工程学院课程设计报告 第 2 章 系统功能介绍XVI2.3 组内任务分工组内分工如表 2.1 所示。表 2.1 组内分工表全体成员任务组长学号:20姓名:杜黎明学号:18姓名:温周洋学号:24姓名:胡金龙学号:29姓名:郭潇阳数据库设计 登陆界面设计 前台
23、服务模块设计 后台服务模块设计 结账报表模块设计 系统安全模块设计 程序测试 第 3 章 数据库设计在开发应用程序时,对数据库的操作时必不可少的。而一个数据库的设计优秀与否,将直接影响到开发进度和性能。所以对数据库的设计就显得尤为重要。数据库的设计要根据程序的需求及其功能制定。如果在开发软件之前不能很好的设计数据库,在开发过程中将反复修改数据库,必将严重影响到开发进度。3.1 数据库需求分析酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表共跟功能等。在这些功能设计到的数据表包括台号表、菜品表、消费单表;为了使系统更加完美,还需要为菜品分类,即需要用到菜系表;为了
24、实现菜品的日销售情况统计,还需要建立一个消费项目表,用来记录消费单消费的菜品。3.2 数据库概念结构设计数据库设计是系统设计过程中的重要组成部分,它通过管理系统的整体的整体需求而指定的,数据库设计的好坏直接影响到系统的后期开发。下面对本系统中具有代表性的数据库设计进行详细说明。餐台和菜系在本系统中最简单的实体,在本系统中用来描述餐台信息的只有台号和座位数,而描述菜系的主要是名称。餐台信息表的 E-R 图如图 3.1 所示,菜系信息表的 E-R 图如图 3.2 所示餐台台号 座位数菜系序号 名称图 3.1 餐台信息表 E-R 图 图 3.2 菜系信息表 E-R 图在描述菜品尸体时,加入了助记码,
25、目的是为了实现智能化获取菜品功能,通过这一功能系统操作员可以快速获取顾客所点的菜品信息、菜品信息表的 E-R 图如图 3.3 所示。图 3.3 菜品信息表 E-R 图 沈阳工程学院课程设计报告 第 3 章 数据库设计XVIII消费单用来记录每次消费的相关信息,例如消费时使用的餐台、开台时间、消费金额等。消费单信息表 E-R 图如图 3.4 所示。图 3.4 消费单信息表 E-R 图消费项目用来记录每个消费单消费的菜品,记录的主要信息由所属消费单、消费菜品的名称、消费数量、消费额。消费项目信息表的 E-R 图如图 3.5 所示。图 3.5 消费项目信息表 E-R 图将各个实体 E-R 图进行合并
26、后即可得到整个系统的整体 E-R 图如图 3.6 所示。图 3.6 系统整体 E-R 图3.3 数据库表的设计针对本系统的特点,在对所搜集的数据进行规范化之后,定义了如下六张表格,分别是沈阳工程学院课程设计报告 第 3 章 数据库设计XIX用户信息表、餐台表,菜品表,菜系表,消费单表,消费项目表。通过对这六张表格的操作可以较好地完成系统设计的各项功能,六张表格之间有着不同程度的联系。表 3.1 用户信息表(user)字段名称 数据类型 长 度 备 注loginName varchar 21 用户登录名,做主键loginPassword varchar 21 用户登录密码type char 1
27、用户类型name varchar 21 用户姓名sex char 2 用户性别age int 用户年龄tel varchar 20 用户电话createTime timestamp 创建用户时间表 3.2 餐台表 desk字段名称 数据类型 长 度 备 注id varchar 8 餐台号,做主键count int 座位数量表 3.3 菜品表 menu字段名称 数据类型 长 度 备 注id varchar 8 菜品编号,做主键sortId int 菜系编号,与菜系表中菜系编号外键关联name varchar 30 菜品名称code varchar 10 菜品助记码unit varchar 4 菜
28、品单位unitPrice float 菜品单价表 3.4 消费项目表 orderItem字段名称 数据类型 长 度 备 注id int 消费项目编号,做主键orderFormId varchar 15 消费单编号,与消费单中消费单编号外键关联menuId varchar 10 菜品编号,与菜品表中菜品编号外键关联amount int 消费数量沈阳工程学院课程设计报告 第 3 章 数据库设计XXtotal float 消费额表 3.5 菜系表 sort字段名称 数据类型 长 度 备 注id int 菜系编号,做主键name varchar 50 菜系名称表 3.6 消费单表 orderForm字
29、段名称 数据类型 长 度 备 注id varchar 15 消费单编号,做主键deskId varchar 8 餐台编号,与餐台表餐台编号外键关联dateTime time 开台时间money float 消费金额userId varchar 21 操作用户第 4 章 系统功能实现4.1 公共模块设计4.1.1 编写数据库连接类数据库连接类负责加载数据库驱动程序,以及创建和关闭数据库连接,为了最大程度的应用每个已经创建的数据库连接。首先在数据库连接类中编写加载数据库驱动程序的代码,通常情况下将其放在静态代码块中,这样的好处是只要该类第一次被加载时执行加载数据库启动的动作,避免了反复加载数据库驱
30、动程序,从而提高了软件的性能。具体代码如下:statictryClass.forName(“com.mysql.jdbc.Driver“);catch(Exception e)e.printStackTrace();然后编写用来创建和关闭数据库连接的方法,这里将定义两个方法,一个用于创建数据库的连接,一个用与将数据库连接关闭。具体代码如下:public Connection getConnection() throws SQLException, ClassNotFoundExceptionconn=DriverManager.getConnection(“jdbc:mysql:/localh
31、ost:3306/db_Manager“,“root“,“root“);return conn;public void close_All(Connection conn,Statement stmt,ResultSet rs)try if(rs!=null)rs.close();else if(stmt!=null)stmt.close(); else if(conn!=null)conn.close(); catch (SQLException ex) e.printStackTrace(); 沈阳工程学院课程设计报告 第 4 章 系统功能实现XXII4.2 登陆模块设计用户登录模块是用户
32、使用软件时看到的第一个系统界面,因此对于用户登录界面的设计需要美观大方。本系统的开发工具是使用 NetBeans7.0,首先创建用于用户登陆界面的窗体,为窗体设置标题、大小等信息,并添加一个分层窗体,然后将一个 JLabel 对象设置成整个窗体的最底层,并为其设置背景图片。为了达到整个窗体美观的效果,在设计过程中,将界面的按钮也同样添加图片背景。在用户第一次使用本系统时,数据库中将不存在系统管理员。在这种情况下,系统提供一个默认的用户供用户登录后添加其他用户。在用户使用系统时,填写完用户名和密码后点击登录按钮,或者单击键盘的确定键时,系统通过检测用户名和密码合法后即可登录本系统,实现登录的具体
33、代码如下:private void mouseLogin(java.awt.event.MouseEvent evt) /GEN-FIRST:event_mouseLogin/鼠标点击登录this.check();/GEN-LAST:event_mouseLoginprivate void KeyLogin(java.awt.event.KeyEvent evt) /GEN-FIRST:event_KeyLoginSystem.out.println(evt.getKeyChar();if(evt.getKeyCode()=KeyEvent.VK_ENTER)this.check();/GEN
34、-LAST:event_KeyLoginpublic void check()String name=“,password=“;name = jTextField1.getText();username = name;password = String.valueOf(jPasswordField1.getPassword();if(name.split(“).length1)javax.swing.JOptionPane.showMessageDialog(this, “违法的用户名!“,“警告“, JOptionPane.WARNING_MESSAGE);LoginData ld = ne
35、w LoginData();if(ld.check(name, password)this.dispose();new MainFrame().showFrame();else javax.swing.JOptionPane.showMessageDialog(this, “用户名或者密码错误nt请从新输入!“,“警告“, JOptionPane.WARNING_MESSAGE);沈阳工程学院课程设计报告 第 4 章 系统功能实现XXIII4.3 前台服务模块设计开台签单工作区是本系统最常用的工作区如图 4.1 所示,所以需要将该工作区设计的更加人性化和智能化。例如,在获取欲添加的菜品时,既可
36、以通过菜品编号获得,又可以通过才频频助记码获得,并且菜品的默认数量为一个等。图 4.1 开台签单工作区在开台签单工作区设计中,首先为“台号”下拉列表框添加事件监听器,用来处理开台或点菜的相关信息。如果选中的台号尚未开台,则取消“开台列表”中的选定行,并清空“签单列表”中的所有行;如果选中的台号已经开台,并且在“开台列表”中尚未选中,则选中“开台列表”中的该台号,并刷新“签单列表”中的菜品信息,既显示为当前选中台号所点的菜品。然后开发智能化获取菜品功能,通过为文本框添加键盘事件监听器实现。当用户在文本框进行输入时,同时判断输入的是商品编号,还是商品助记码,并按指定条件查询符合条件的菜品,如果存在
37、符合条件的菜品,则获取第一个符合条件的菜品,并显示菜品的名称和单位,负责将菜品名称和单位设置为空。具体代码如下:String input = jTextField2.getText().trim();Vector vector = null;if (input.length() 0) if (jRadioButton2.isSelected() getMenuName gmn = new getMenuName();vector = gmn.returnName(input);if (vector.size() 0) vector = (Vector) vector.get(0); else
38、vector = null; else if (jRadioButton1.isSelected() /按编号查询getMenuName gmn = new getMenuName();vector = gmn.returnNameById(input);if (vector.size() 0) vector = (Vector) vector.get(0);在新添加的菜品的前方唯有一个 NEW 标记,确定点菜结束后单击 “签单”按钮,将取沈阳工程学院课程设计报告 第 4 章 系统功能实现XXIV消所有新添加菜品前方的 NEW 标记。在未取消 NEW 标记的情况下合约选中后单击“取消”按钮取消
39、该菜品,如果该餐台只点了该菜品,取消该菜品后同时取消该餐台的开台信息;如果该餐台已经点了其他菜品,并且取消后不是最后点的菜品,还需要修改所点菜品的序号。结账功能设计,结账功能是作为酒店管理系统中一个重要的组成部分。结账功能的设计需要在用户选择相应的台号后就将选中的台号的消费金额显示在结账工作区中(如图 4.2 所示) ,因此需要为开台列表添加表格别选择时间,既当表格被选中时显示台号消费金额。在结账功能区,为了方便用户结账计算金额的方便,需要为实付金额文本框添加键盘监听时间,当用户输入实付金额以后即可计算出找零金额并显示出来。当点击结账后,当前台号就已经完成结单,则需要在开台列表中将选中的台号删
40、除,并相连删除签单列表中选中台号所点的所有菜品。图 4.2 结账工作区4.4 后台管理模块设计后台管理模块提供了 3 个子模块,分别为菜品管理、菜系管理和台号管理。菜品管理是对整个酒店的所有菜品进行的管理,菜系管理是对酒店的菜系进行管理,台号管理是对酒店的桌号进行管理。4.4.1 菜系管理在该子模块中,有两个需要注意的问题。添加菜系时获取菜系的编号。在添加菜系时,只需要输入所要添加菜系的名称而无需输入菜系的编号,而菜系的编号是通过对当前数据表中的菜系编号进行检索,用当前数据表中最后一项数据的菜系编号自加一来实现的,然后和菜系名称一起插入数据表中。删除菜系时对菜品表中的操作菜品表中的菜系编号和菜
41、系表中的菜系编号是外键关联的,当删除菜系表中的数据时,如果不对菜品表中的菜系编号进行处理的话是会抛出异常的,而当删除菜系表中数据时又不能删除菜品表中与之相关的所有数据,因此只能对菜品表中相关的数据进行修改,使其菜系沈阳工程学院课程设计报告 第 4 章 系统功能实现XXV编号对应于菜系表中菜系名称为“未分类”的编号。其主要代码如下所示:/删除菜系之前对菜品进行修改=GetStatement gs = new GetStatement();String sql = “delete from sort where name=“ + sortName + “;String sql2 = “select
42、 id from sort where name=未分类“;ResultSet rs = gs.return_statement().executeQuery(sql2);String id=“;while(rs.next()id=rs.getString(“id“);String sql1 = “update menu set sortId=“+id+“ where sortId=(select id from sort where name=“+ sortName + “)“;gs.return_statement().execute(sql1);gs.return_statement()
43、.execute(sql);同时要注意的是菜系表中菜系名称为“未分类”的数据项是不能被删除的。4.4.2 菜品管理菜品管理子模块包含有菜品的添加和删除功能,在该子模块中,难点在与添加菜品过程中对所添加信息的判断。添加菜品过程中,菜品的所有字段都不能为空,而且ID,NAME,CODE 这 3 个字段在数据库中必须是唯一的,所以在添加过程中必须加以控制。下面仅以 ID 字段说明,其他字段都与之类似,控制流程如图 4.4.2.1 所示。文本框获取 S T R空数据库获取 I DI D . e q u a l s ( S T R ) ?结束执行插入操作开始提示信息是否是否图 4.4.2.1 字段控制流
44、程图沈阳工程学院课程设计报告 第 4 章 系统功能实现XXVI4.4.3 台号管理台号管理子模块的功能宝库台号的查询,添加和修改功能。台号的查询分为有关键字查询和无关键字查询。当执行有关键字查询是,系统只查询 SORT 表中 COUNT 与输入的作为数相同的台号。当执行无关键字查询时,系统将查询整个 SORT 表中的数据项,关键代码如下:/查询 SORT 表关键代码 =public class selectSorts public void selectSorts() public ResultSet returnResultSet() throws ClassNotFoundExceptio
45、n, SQLException GetStatement gs = new GetStatement();String sql = “select * from sort “;ResultSet rs = null;rs = gs.return_statement().executeQuery(sql);return rs;public ResultSet returnResultSet(String s) throws ClassNotFoundException, SQLException GetStatement gs = new GetStatement();String sql =
46、“select * from sort “+ “ where name=“+s+“;ResultSet rs = null;rs = gs.return_statement().executeQuery(sql);return rs;在添加和修改台号的过程中,同样要对所添加或修改的信息进行进行判断。在添加台号过程中,台号不能为空,而且座位数量也不能为空。在修改台号过程中,台号编号不能为空,而且必须是在数据表中存在的台号,并且座位数也不能为空,其控制流程类似与菜品管理过程中的字段控制流程。4.5 结账报表模块设计结账报表模块提供了三种方式的结账报表,分别是日结账、月结账和年结账。日结账提供了对一
47、日营业额营业的统计,月结账提供了对一月营业额的统计,年结账提供了对一年营业额的统计。4.5.1 结账报表工作区技术分析在实现结账报表功能时,有两个技术要点。对日期有效性的控制。沈阳工程学院课程设计报告 第 4 章 系统功能实现XXVII在实现日结账功能时,无论用户修改了统计日期的年度和月份,都要影响到日下拉菜单列表框中的可选项,包括大月(31 天)和小月(30 天)的变化,以及 2 月份在平年(28 天)和闰年(29 天)的变化,如果不能正确处理这些变化,将导致系统无法正常运行。其实在实现月结账报表和年结账报表时也会设计到这个问题,只是在系统界面上不会明显的体会到。解决该问题的大体思路是通过年度和月份下拉列表框加事件监听器,实现对日下拉列表框添加事件监听器,实现对日下拉列表框可选项的控制。对统计表格的控制。当系统界面不能显示出所有统计记录时,只需要将表格放到滚动面板中,这个办法对系统界面不能显示出统计记录的所有行有效,因为在移动垂直滚动条时,表格的列名并不会随之滚动,即表格的列名永远是可见的;但是当系统界面不能显示出统计记录的所有列时,这个办法就