还剩39页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
XX科技大学毕业设计(论文)二〇一二年五月二十二日摘要随着社会的发展,计算机信息管理系统越来越受到企业重视,传统的酒店管理往往令管理者花大量的时间来处理顾客投诉,例如错误查询、烦琐的登记和结帐手续、旅客费用计算错误、空余客房资料不能及时提供等,从而影响出租率,使得管理人员不得不集中精力规划管理运行策略和进行决策以上问题可通过电脑系统辅助解决,酒店管理的电脑化,不仅是体现酒店现代化形象的一个重要标志,而且对于提高员工工作效率,加速资金周转、降低各项成本及改善服务质量都有十分积极的作用本文主要分析了酒店管理系统的一些基本功能和组成情况,包括系统的需求分析、系统结构,功能模块划分以及数据库模式分析等,重点对应用程序的实际开发实现作了介绍达到了数据的一致性和安全性,且应用程序功能完备,符合了酒店管理系统作为典型的信息管理系统MIS的要求关键词酒店管理系统;JAVA;MySQLABSTRACTWiththedevelopmentofsocietyinformationmanagementsystemofthecomputerisbeingpaidattentiontobyenterprisesthetraditionalhotelmanagementoftenmakemanagersspendalotoftimetodealwithcustomercomplaintssuchasincorrectinformationcumbersomeregistrationandpaymentproceduresthecostofmiscalculationpassengersinformationisnottimelyprovidedfreeroomsthusaffectingtherentalratemakethemanagementstafftoconcentrateonstrategicplanningandoperationalmanagementdecision-making.Abovethequestionmaythroughthecomputersystemaidedsolutionthehotelmanagementcomputerizationnotonlyistheembodimentofhotelimageofamodernimportantsignbutalsotoimproveemployeeworkefficiencyacceleratethecapitalturnoverreducecostsandimprovethequalityofserviceallhastheextremelypositiverole.Thispapermainlyanalyzesthehotelmanagementsystemofsomeofthebasicfunctionsandcompositionincludingthesystemrequirementanalysissystemstructurefunctionmoduleanddatabaseschemaanalysisfocusingontheactualapplicationdevelopmentwasintroducedtoachieve.AchievedataconsistencyandsecurityandapplicationfunctionsinlinewiththehotelmanagementsystemasatypicalmanagementinformationsystemMISrequirements.AndbrieflyintroducedtheprogrammingenvironmentoftheJavaandMySQLdatabasemanagementsystemfeatures.Keywords:HotelManagementSystem;JAVA;MySQL目录第一章绪论
11.1研发背景
11.2系统目标
11.3组织结构1第二章系统相关技术
32.1JDK简介
32.2Eclipse简介
32.3MySQL简介3第三章系统设计
63.1系统功能需求
63.3系统功能模块图
73.4数据库设计8第四章系统实现
94.1开发环境的搭建
94.
1.1JDK下载、安装及配置
94.
1.2MySql的下载、安装及配置
104.
1.3Eclipse的下载、安装及配置
104.2数据库实现
114.3主要功能模块的实现
164.
3.1系统登录
164.
3.2主界面
174.
3.3散客开单
184.
3.4团体开单
204.
3.5宾客结帐
224.
3.6客房预订
244.
3.7营业查询
264.
3.8客户管理
284.
3.9系统设置30第五章总结35致谢36参考文献37第一章绪论
1.1研发背景随着旅游业的发展,酒店、餐饮娱乐行业日趋发达,引入全方位的电脑服务和电脑管理日益流行同时,酒店和餐厅娱乐业引入电脑服务和管理也取得了优良的经济效益和社会效益为此,国家建设部已于最近作出明确规定凡星级酒店在项目审批时,其设计方案必须包括电脑管理系统,否则不予立项可见,酒店管理电脑化势在必行酒店管理系统将先进的电脑技术与现代酒店服务管理完美地结合起来,实现了住宿、餐饮、娱乐全新概念的服务和管理方式开发一款用于酒店管理,使酒店更具信息化管理,方便使用者查阅,减轻管理人员的工作量该系统具备散客开单、团体开单、宾客结帐、客房预订、营业查询、客户管理、系统设置等等功能同时为了方便工作人员的管理系统还具备权限设置功能,可以向系统中添加系统角色,系统用户及设置权限,还可以查看系统用户操作日志
1.2系统目标此次设计将要模拟完成建立一个酒店管理系统系统,实现信息化,节省大量的劳力财力,加强公司的现代化管理和高效的服务酒店日常管理中所涉及到的大量数据都由数据库管理系统管理本文中数据库服务器端采用MySQL作为后台数据库,结合SQL语句强大的处理功能实现酒店管理中各个对象的分类、添加、删除、修改等操作,采用免费的eclipse编程平台,使开发成本降到最小经过对酒店管理业务的具体分析,精心对相关信息的学习和在指导老师的指导下,朋友的帮助下多次改进终于开发制作了这个酒店管理系统,本系统的设计遵循软件开发的全过程,在做需求分析的时候实际到酒店企业中熟悉酒店的业务流程和管理,然后概要设计,详细设计和编码测试每个过程都按照软件工程的规范进行本系统的设计中运用Java技术和SQL语言操作后台数据库由于Java虚拟机,实现了各种平台的兼容性,体现了良好的跨平台特点和编程技术的优点该系统的操作界面简洁,适合各类管理人员应用在安全性方面,通过数据库的权限管理和Java的优秀技术,实现系统的灵活性和系统的安全性管理者还可以通过修改密码来进行用户管理笔者完成了酒店管理系统的全部制作,从需求分析到编码测试,从概要设计到详细设计,基本实现了酒店管理系统的基本功能,并对业务所需要信息进行维护本系统有以下特点系统中模块划分明确,模块功能设计有较强的针对性系统操作界面简单,灵活性好、响应时间短,系统安全性高,运行稳定设计完全符合软件工程中的各个阶段的要求,模块间具有高内聚,低耦合的良好性能
1.3组织结构本论文的主要内容安排如下第一章绪论介绍课题研究的背景和目标第二章系统相关技术涉及到开发用的技术与理论概念第三章系统设计需求分析与技术分析第四章系统实现根据需求分析和技术分析来实现系统的各个模块功能,使系统能够正常运行这部分主要搭建开发环境,设计数据库,编写代码,测试,运行,修改bug等第五章结论对本课题做一个总结,对本课题的重点难点做一个分析,提出对本系统需要改进与加强的地方第二章系统相关技术
2.1JDK简介JDK(JavaDevelopmentKit)是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)不论什么Java应用服务器实质都是内置了某个版本的JDK因此掌握JDK是学好Java的第一步最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等其中IBM的JDK包含的JVM(JavaVirtualMachine)运行效率要比SunJDK包含的JVM高出许多而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多从SUN的JDK
5.0开始,提供了泛型等非常实用的功能,其版本信息也不再延续以前的
1.2,
1.3,
1.4,而是变成了
5.0,
6.0了从
6.0开始,其运行效率得到了非常大的提高,尤其是在桌面应用方面
2.2Eclipse简介Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台它提供建造块和构造并运行集成软件开发工具的基础EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始EclipseSDK(软件开发者包)是EclipsePlatform、JDT和PDE所生产的组件合并,它们可以一次下载这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到EclipsePlatform中的工具EclipseSDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成Eclipse项目生产的软件以CPL发布,第三方组件有各自自身的许可协议现在eclipse已经成为最广泛的Java开发平台,成为广大Java爱好者的首选编程平台凭借其免费和稳定以及强大的功能和丰富的插件功能,所以本程序采用eclipse环境
2.3MySQL简介MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力
2.
3.1MySQL的特点与作用MySQL是一个真正的多用户、多线程SQL数据库服务器SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成SQL是一种标准化的语言,它使得存储、更新和存取信息更容易例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像MySQL主要目标是快速、健壮和易用最初是因为我们需要这样一个SQL服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL就开发出来自1996年以来,我们一直都在使用MySQL,其环境有超过40个数据库,包含10000个表,其中500多个表超过7百万行,这大约有100个吉字节(GB)的关键应用数据MySQL数据库的主要功能只在组织和管理很庞大或复杂的信息和基于WEB的库存查询请求不仅仅为客户提供信息,而且还可以为您自己使用数据库可以提供如下功能减少记录编档的时间减小记录检索时间灵活的查找序列灵活的输出格式多个用户同时访问记录
2.
3.2MySQL的技术路线与发展在运行数据库系统时,MySQL的使用相当简单,且进行MySQL安装和使用所需的工作也很少然而,不论您是什么级别的专家,MySQL的安装程序都不能自动运行MySQL数据库系统由几部分组成
2.
3.3MySQL服务器MySQL的服务器能够从命令行中手工启动和终止服务器,并且在系统启动和关闭时知道怎样进行自动启动和关闭如果服务器崩溃了或启动不正常的话,了解怎样使服务器再次运行也是重要的
2.
3.4安全性当运行MySQL安装程序时,确保用户所存储的数据的安全性是很重要的MySQL管理员有责任控制对数据目录和服务器的访问,并应了解以下的问题文件系统的安全性UNIX机器可能会使几个用户账号成为宿主账号,而这些账号都没有与MySQL相关的管理职责确保这些账号没有对数据目录的访问是重要的因为这样可以防止它们通过拷贝数据库表或移动数据库表,或者通过能够读取包含敏感信息的日志文件来损坏文件系统级的数据您应该知道如何建立MySQL服务器的UNIX用户账号,如何建立该用户所拥有的数据目录,以及如何启动服务器以便利用该用户的权限运行服务器的安全性必须了解MySQL的安全系统是怎样进行工作的,以便在建立用户账号时授予适当的权限通过网络连接到服务器的用户只允许做他们应该做的事情您不要由于对安全系统的错误理解,将超级用户的访问权授予匿名用户第三章系统设计
3.1系统功能需求功能概述
1、散客开单完成散客的开单,可一次最多开5间相同类型的房间
2、团体开单完成团体的开单,开放数量没有限制,可同时开不同类型的房间
3、宾客结帐自动统计每个登记客人在店时所发生的消费额和应付款额,并完成结帐收银操作
4、客房预订完成增加预订、修改预订、删除预订,预订情况的查询等功能
5、营业查询完成结帐单、全部宾客消费、在店宾客消费、离店宾客消费的查询
6、客户管理完成会员基本信息的维护和来宾一览
7、系统设置完成房间项目、客户类型、操作员、计费设置用户权限分配管理员,具有操作全部功能的权限;普通用户,部分功能不允许使用系统数据流图如图
3.1所示消费信息消费信息表D3台号信息表D2会员顾客开房、预定查询房间信息D1房间信息表管理员删除、修改添加管理员房间信息房间信息台号信息房间信息房间信息查询信息房间信息图
3.1系统数据流图表
3.2功能需求与程序的关系
3.3系统功能模块图登录界面主框架窗口散客开单团体开单宾客结帐客房预订营业查询客户管理关于我们系统设置离店宾客查询房间项目设置客户类型设置操作员设置计费设置在店宾客查询结帐单查询会员信息维护来宾信息一览退出系统图
3.2系统功能模块图
3.4数据库设计该系统的主要的数据操作是对客房和客户信息的管理,及对房间信息表、客户信息表的操作房间信息表主键(pk)、房间号(id)、房间类型编号(r_type_id)、房间状态(state)、所处位置(location)、房间电话(t_tel)、备注(remark)、状态计时(statetime)、删除标记(delmark)等客户信息表主键(pk)、客户类型编号(id)、客户类型(c_type)、证件号(no_post)、电话号码(c_tel)、备注(remark)、删除标记(delmark)等全局E-R图如图
3.2编号类型状态姓名类型证件号使用顾客客房mn类型联系方式计时位置mn服务维护11服务台图
3.2全局E-R图第四章系统实现
4.1开发环境的搭建
4.
1.1JDK下载、安装及配置JDK是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)第一步下载JDK的一个常用版本J2SEJava2SDKStandardEdition可以从Sun的Java网站上下载到http://java.sun.com/j2se/downloads.html,我们建议下载最新版本的当前最新版本为:J2SE
5.0JDK第二步安装下载好的JDK是一个可执行安装程序,执行安装即可安装完成在安装目录下会有jdk
1.
5.0和jre
1.
5.0两个文件夹第三步设置环境变量打开“我的电脑-属性-高级-环境变量-系统变量”,设置以下三个变量JAVA_HOME=JDK安装目录如E:\ProgramFiles\Java\jdk
1.
5.0CLASSPATH=.Path=原Path;bin安装目录如E:\ProgramFiles\Java\jdk
1.
5.0\bin请注意CLASSPATH变量的值是“.”(不包括引号).Java虚拟机的ClassLoader会按照CLASSPATH设定的路径搜索class文件请注意,ClassLoader不会在当前目录下搜索,习惯了Windows的用户可能会感到意外,Linux用户就非常清楚为方便起见,我们将CLASSPATH设置为“.”就包括了当前目录第四步环境测试
1、编辑用任何文本编辑器编辑如下HelloWorld.java文件publicclassHelloWorld{publicstaticvoidmainString[]args{System.out.printlnHelloWorld!;}}
2、编译打开控制台,切换到该文件所在目录下,输入javacHelloWorld.java如果编译通过,屏幕上没有任何显示否则,屏幕上会有出错信息
3、运行输入javaHelloWorld屏幕输出HelloWorld!说明运行成功!JDK环境搭建成功!
4.
1.2MySql的下载、安装及配置第一步下载MySql是一款非常优秀的开源数据库管理系统你可以从其官方网站上得到http://dev.mysql.com/downloads/index.html页面上有各个版本的下载,建议您下载最新版(但不要下载测试版)网站上提供了安装版和非安装版(zip包),我们以安装版为例第二步安装安装版提供一个可执行文件,双击即可完成安装第三步测试到bin目录下(我的是E:\ProgramFiles\MySQL\MySQLServer
4.1\bin)找到winmysqladmin.exe,双击运行,进行第一次注册设置完后,运行“cmd”,改变目录到bin目录下,运行mysql–uroot–p,输入密码(默认为空)进入mysql输入showdatabases;如果你看到:+----------+|Database|+----------+|mysql||test|+----------+2rowsinset
0.02secmysql已经安装成功了
4.
1.3Eclipse的下载、安装及配置Eclipse是一款非常优秀的开源IDE,基于Java的可扩展开发平台除了可作为Java的集成开发环境外,还可作为编写其他语言(如C++和Ruby)的集成开发环境Eclipse凭借其灵活的扩展能力、优良的性能与插件技术,受到了越来越多开发者的喜爱
1、下载Eclipse下载面向Windows系列操作系统的最新版本Eclipse-SDK资源包(eclipse-SDK-
3.
6.1-win
32.zip)该资源包包括了适合于windows平台的Eclipse开发环境、Java开发环境、Plug-in开发环境、所有源代码和文档
2、安装Eclipse下载Eclipse-SDK(eclipse-SDK-
3.
6.1-win
32.zip)后,将其解压Eclipse是一个绿色软件,无需安装即可执行进入解压后的eclipse目录,点击eclipse.exe文件即可运行Eclipse集成开发环境如需中文版的Eclipse集成开发环境,可在Eclipse官方网站下载中文语言包(NLpack1-eclipse-SDK-
3.
6.1-win
32.zip)解压后,分别将其features、plugins目录下的文件复制到Eclipse安装目录下的features、plugins目录中复制完成后,重新启动Eclipse即可
4.2数据库实现表
4.1房间类型表[roomtype]表
4.2房间信息表[roominfo]表
4.3客户类型表[customertype]表
4.4入住信息表[livein]表
4.5预定信息表[engage]表
4.6预订信息中间表[engage1]表
4.7结算表[checkout]表
4.8临时费用表[expense_temp]表
4.9临时结算表[checkout_temp]表
4.10日志表[record]表
4.11操作员信息表[pwd]表
4.12会员信息表[member]表
4.13散客开单中间表[roomnum]表
4.14团体开单中间表[roomnums]
4.3主要功能模块的实现
4.
3.1系统登录实现用户登录,如图
4.1所示图
4.1系统登录选择用户名,输入密码,调用JDBC.java对象连接数据库,在表tb_user中进行多次核对,以保证更高的准确度,连续3次输入错误将自动退出登录界面,部分核心代码如下程序流程图用户名和密码重新输入提示错误数据库匹配退出登录错误正确登录成功主界面图
4.2程序流程图
4.
3.2主界面系统运行主框架,实时显示房态信息,并进行客房预定、散客开单、团体开单、营业查询等操作,如果是超级用户可以进行客户管理、系统设置等所有操作,普通用户只能进行开单、预定、查询等常规操作,如图
4.3所示图
4.3主界面主窗体分4个模块左上面板、左下面板、右下面板还有上面框架在左下的快速通道栏,输入放号,将在状态栏显示相应房号的所有信息,便签用来进行实时的记录备忘或事件,核心代码如下
4.
3.3散客开单完成对散客的开单任务,最多能追加五个相同类型的房间,如图
4.4所示图
4.4散客开单以客户的第一个房间号为主号,可以开设不多于5间同类型的房间,核心代码如下散客开单退房数据流图客房顾客信息登记开通服务退房结账修改房间状态申请开房申请成功申请退房图
4.5数据流图
4.
3.4团体开单完成对团体宾客的开单任务房间数没有限制,可同时追加不同类型的房间,如下图
4.6所示图
4.6团体开单核心代码程序流程图客房顾客信息登记开通服务退房结账修改房间状态申请开房申请成功申请退房主房号图
4.7程序流程图
4.
3.5宾客结帐自动统计每个登记客人在店时所发生的消费额和应付款额,并完成结帐收银操作,如图
4.8所示图
4.8收银结账选择要结账的房号,实收金额大于或等于应收金额时可以成功结账,如果实收金额小于营收金额则有错误提示,结账成功后,客房恢复可用程序流程图顾客押金申请入住时间退房服务台房间类型折扣信息信息整合结算结账完成图
4.9结账流程图核心代码
4.
3.6客房预订完成增加预订、修改预订、删除预订,预订情况的查询等功能,如图
4.
10、
4.11所示图
4.10客户预定程序流程图顾客申请服务台信息确认信息回馈信息采集预定信息确认预定成功图
4.11预定流程图客户电话预定客房,为客户选取房间,设置抵达时间及预留时间,房间状态处于预定状态,客户到前台确认开房,选择对应的预定房间选择开设房间后房间处于使用状态,超过预留时间为开房,房间自动出于可用状态,也可以对预定房间进行删除、修改等操作,核心代码如下添加、修改预订信息时弹出子窗口,如图
4.11所示图
4.11客房预订核心代码
4.
3.7营业查询完成结帐单、全部宾客消费、在店宾客消费、离店宾客消费的查询,如图
4.12所示图
4.12营业查询可通过时间查询、条件查询两种方式显示宾客消费信息,核心代码
4.
3.8客户管理完成会员基本信息的维护和来宾一览,如图
4.13所示图
4.13客户管理可增加、删除、修改会员信息,只有超级用户才是进入该设置,也可通过会员编号、姓名对会员信息进行查询,核心代码如下增加、修改会员信息时弹出子窗口,如下图
4.14所示图
4.14会员信息修改核心代码
4.
3.9系统设置完成房间项目、客户类型、操作员、计费设置,如图
4.15所示图
4.15系统设置操作员设置主要包括对权限的设置,操作员的添加、修改、删除,计费设置主要包括对钟点房和普通房的初始计费时间的设置核心代码如下添加、修改房间类型时弹出子窗口点击房费打折弹出子窗口,如图
4.
16、
4.17所示图
4.16房间参数修改图
4.17折扣设置房间项目设置包括房间类型设置、房间信息设置、房间的添加、删除操作,房费的折扣设置等等,核心代码添加、修改房间类型窗口弹出子窗口批量添加房间弹出子窗口,如图
4.
18、
4.19所示图
4.18类型添加图
4.19房间批量添加实现房间类型的添加、修改、删除等操作,批量的添加某类型的房间,核心代码如下单个添加、修改房间弹出子窗口,如图
4.20所示图
4.20房间信息修改对单个房间进行添加、修改,核心代码如下第五章总结在整个毕业设计过程中,学习了Java技术、熟悉了eclipse编程环境,还有mysql的数据库操作以及解决问题的能力在学习相关的技术的同时,摸索着进行毕业设计题目的相关制作让我认识到了在软件开发过程中设计的重要性;设计一个好的软件结构(包括相关的模块组成和调用关系、考虑模块的相对独立性、数据库结构设计和实际的软件流程)对于最终的软件质量和中间的开发量来说是十分至关重要的其次,再设计初期得考虑到将来软件的可扩展性,这一点对于将来的功能改动至关重要,这一点在后来的改动中由很深的体会通过这次实际开发,我掌握了一定的Java技术和sql语言,程序也基本上达到了预期的效果由于系统的数据表很多,信息量大,有时会出现信息不能及时更新到数据库的问题,导致错误提示由于实地考察不够加上时间紧迫,导致功能也不够完善,未考虑到团体开单的合并单据等问题,在返工为时太晚,尽管已经想办法补救,但难免出现漏洞但是本系统也有闪光点,例如系统布局合理色调清新,给人一目了然的感觉,一些细小部分的处理更是体现了人性化,使用更快捷方便致谢本次毕业设计是在上班实习期间完成的,因为白天上班没太多时间做毕业设计,从论文选题到搜集资料,从提纲的完成到正文的反复修改,花了不少睡眠时间第一次初稿很糟糕,没理清思路,很混乱,非常感谢我的导师XXX老师,对我论文的详细的批改,为我理清思路,陈老师为人随和热情,治学严谨细心,经常跟我们聊天,相互沟通,知道我们的进展,提醒我们抓紧时间完成毕业设计,所以,在上班的同时,顺利的完成了毕业设计,特别还要感谢XXX同学给予我的帮助,很多时候找不到错误的时候,或者想不到好的解决方法时,他总是热心的、不辞辛苦的帮助我,解决一个个问题同样,非常感谢在大学四年中给我们授课的所有老师们,是他们让我学到了很多知识,也教会了我很多做人做事的道理最后感谢四年里陪伴我的同学、朋友们,养育我的父母,关心过我的所有人,因为有你们,才有我的精彩跟充实,我会带上这份感恩与感激之情,踏入社会,服务社会!参考文献
[1]王兆国.Java开发完全手册[M].北京人民邮电出版社,
2006.
[2]吴其庆.Java项目开发宝典第三版.高等教育出版社,2002.
[3]杨树林.面向对象程序设计第二版[M].北京人民邮电出版社,2006.
[4]刘云生.数据库系统概论.华中理工大学出版社.
1996.
[5]耿祥义张跃平.Java2实用教程程序.北京清华大学出版社,2005.
[6]杨鑫华.数据库原理与DB2应用教程.北京清华大学出版社,2002.
[7]萨师煊,王珊.数据库系统概论第三版[M].北京高等教育出版社,
2003.
[8]BruceEckel.JAVA编程思想第三版[M].北京机械工业出版社,2005.
[9]GeorgeReese.JDBC与JAVA数据库编程第二版[M].中国电力出版社,2002.
[10]JohnHunt,ChrisLoftus.精通J2EEJava企业级应用[M].清华大学出版社,2004.
[11]MaryCampione,KathyWalrath,AlisonHuml.Java语言导学[M].机械工业出版社,20题目酒店管理系统的设计与实现作者学院专业学号指导教师功能需求散客开单团体开单宾客结帐房间预定营业查询客户管理系统设置开单√√—————结帐——√————房间查询————√——结帐查询————√——宾客查询————√——会员设置—————√操作员设置——————√房间设置——————√房间预定———√———字段名类型允许为空默认值说明pkdecimal×—主键idvarchar×—房间类型编号r_typevarchar×—房间类型bedint×—床位数pricefloat×—单价foregiftfloat×—押金cl_roomvarchar×N是否钟点房cl_pricefloat×—钟点房价remarkvarchar√—备注sysmarkint×0系统级标志delmarkInt×0删除标记字段名类型允许为空默认值说明pkdecimal×—主键idvarchar×—房间号r_type_idvarchar×—房间类型编号statevarchar×—房间状态locationvarchar×—所处位置r_telvarchar×—房间电话remarkvarchar√—备注statetimeint×0状态计时delmarkint×0删除标记other1varchar√—保留1other2varchar√—保留2Indimarkint√—字段名类型允许为空默认值说明pkdecimal×—主键idvarchar×—客户类型编号c_typevarchar×—客户类型dis_attrvarchar×—折扣属性discountint×—折扣比例pricefloat×—原价格dis_pricevarchar×—折扣后价格remarkvarchar√—备注delmarkint×0删除标记字段名类型允许为空默认值说明pkdecimal×—主键In_novarchar×—入住单号r_novarchar×—房间号r_type_idvarchar×—房间类型编号Main_roomvarchar×—主房间号Main_pkdecimal×—主PKc_type_idvarchar×—客户类型编号m_idvarchar×*客户编号c_namevarchar×—客户名称c_jpvarchar√—客户名称简拼sexvarchar×—性别zj_typevarchar×—证件类型zj_novarchar×—证件编号addressvarchar×*地址renshuint×—人数in_timevarchar×—入住时间daysint×—预住天数accountfloat×—消费数量foregiftfloat×押金chk_novarchar×*结算单号chk_timevarchar×*结算时间remarkvarchar√—备注useridvarchar×—操作员cluemarkint×0提醒标志statemarkvarchar×0状态标志delmarkint×0删除标记字段名类型允许为空默认值说明pkdecimal×—主键c_namevarchar×—客户名称c_jpvarchar×—客户名称简拼c_telvarchar×—客户电话r_type_idvarchar×—房间类型编号r_novarchar×—房间号pa_timevarchar×—预抵时间keep_timeint×—保留时间eng_timevarchar×—预定时间remarkvarchar√—备注engagemarkint×0预定状态标志cluemarkint×0提醒标志delmarkint×0删除标记字段名类型允许为空默认值说明pkdecimal×—主键c_namevarchar×—客户名称c_jpvarchar×—客户名称简拼c_telvarchar×—客户电话r_type_idvarchar×—房间类型编号r_novarchar×—房间号pa_timevarchar×—预抵时间keep_timeint×—保留时间eng_timevarchar×—预定时间remarkvarchar√—备注engagemarkint×0预定状态标志cluemarkint×0提醒标志delmarkint×0删除标记字段名类型允许为空默认值说明pkdecimal×—主键chk_novarchar×—结帐单号in_novarchar×—入住单号daysint×—实住天数moneyfloat×—金额chk_timevarchar×—结算时间remarkvarchar√0备注delmarkint×—删除标记字段名类型允许为空默认值说明In_novarchar×—入住号r_novarchar×—房号pricefloat×—价格c_namevarchar×—用户姓名discountbigint×—折扣moneyfloat×—金额In_timevarchar×—入住时间useridvarchar×—用户编号字段名类型允许为空默认值说明pkdecimal×—主键chk_novarchar×—结帐单号in_novarchar×—入住单号daysint×—实住天数moneyfloat×—金额chk_timevarchar×—结算时间remarkvarchar√0备注delmarkint×—删除标记字段名类型允许为空默认值说明pkdecimal×—主键timedatetime×—操作时间operatorvarchar×—操作员briefvarchar×—内容摘要contentvarchar×—内容delmarkint×—删除标记other1varchar√0保留1字段名类型允许为空默认值说明pkdecimal×—主键useridvarchar×—用户登录IDpwdvarchar×—登录密码puisint×—用户权限delmarkint√0删除标记字段名类型允许为空默认值说明pkdecimal×—主键m_idvarchar×—会员编号m_namevarchar×—会员名称sexvarchar×—性别zj_novarchar×—证件编号addressvarchar×—详细地址m_telvarchar×—联系电话remarkvarchar×—备注delmarkint√0删除标记字段名类型允许为空默认值说明roomidvarchar√—房间编号字段名类型允许为空默认值说明rr_typevarchar√—房间类型roomidvarchar√—房间编号pricefloat√—单价privatevoiddengLu{Stringuser=cb.getSelectedItem+;Stringpwd=String.valueOfpf.getPassword;Stringcode=selectpwdpuisfrompwdwheredelmark=0anduserid=+user+;ResultSetrs=sunsql.executeQuerycode;try{ifrs.next{//用户名存在ifpwd.equalsrs.getString1{bott.setTextclue+登录成功,正在进入系统...;Stringpuis=rs.getString2;//获得操作员权限booleanflag=Journal.writeJournalInfouser登录本系统Journal.TYPE_LG;ifflag{//记录日志newcom.sunshine.mainframe.HotelFrameuserpuis;//进入主程序窗口用户名权限this.setVisiblefalse;}//Endifpwd.equalsrs.getString1}else{bott.setTextclue+用户ID[+user+]不存在...;}//Endifrs.next}publicHotelFrameStringusStringpu{super王府酒店管理系统;userid=us;//获得操作员名称puil=pu;//获得操作员权限panelMain=newJPanelnewBorderLayout;//主面板//制作菜单buildMenuBar;//制作工具栏buildToolBar;//制作分割面板buildSpaneMain;//制作窗口底端信息框buildBott;//加入组件到主面板panelMain.addNorthtb;//加入工具栏panelMain.addSouthbott;//加入窗口底端信息框panelMain.addCenterspaneMain;//加入分割面板//加入菜单栏this.setJMenuBarmb;//加事件监听addListener;this.addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEventwe{quit;}//EndwindowClosing};newThreadthis.start;//启动房间状态检查线程}}privatevoidaddRoom{//获得选择的行号intarows[]=tb
1.getSelectedRows;ifarows.length+tb
2.getRowCount5{JOptionPane.showMessageDialognull最多只能追加四间客房,+入住五间以上客房请使用团体开单提示JOptionPane.INFORMATION_MESSAGE;StringsqlCode[]=newString[arows.length*2];ifarows.length0{forinti=0;iarows.length;i++{sqlCode[ar]=insertintoroomnumroomidvalues+dtm
1.getValueAtarows[i]0+;//加入开单列表ar++;//清除可供列表sqlCode[ar]=updateroominfosetindimark=1where+delmark=0andid=+dtm
1.getValueAtarows[i]0+;ar++;zRooms++;//记数器+1}//Endforintflag=sunsql.runTransactionsqlCode;ifflagarows.length{JOptionPane.showMessageDialognull添加失败,请检查网络情况提示JOptionPane.INFORMATION_MESSAGE;zRooms=zr;}else{JOptionPane.showMessageDialognull请在可供房间列表中选中指定房间,+再追加提示JOptionPane.INFORMATION_MESSAGE;return;}//endif}StringsqlCode[]=newString[arows.length*2];ifarows.length0{forinti=0;iarows.length;i++{sqlCode[ar]=dtm
2.getValueAtarows[i]0+;if!sqlCode[ar].equalstf
5.getText{//判断主房间不能删除sqlCode[ar]=deletefromroomnumswhereroomid=+dtm
2.getValueAtarows[i]0+;//移除开单列表ar++;//清除可供列表sqlCode[ar]=updateroominfosetindimark=0where+delmark=0andid=+dtm
2.getValueAtarows[i]0+;ar++;}else{JOptionPane.showMessageDialognull[+dtm
2.getValueAtarows[i]0+]房间是主房间,不能移除...提示JOptionPane.INFORMATION_MESSAGE;intflag=sunsql.runTransactionsqlCode;longckPK=sunsql.getPrimaryKey;//获得结算记录首PKStringchNO=suntools.getNumbersuntools.Number_JS;//获得结算单号StringchkTime=Journal.getNowDTime;//结算时间StringreMark=tf
3.getText;//备注intflag=Integer.parseIntsunini.getIniKeyCk_Habitus;//结算后的房间状态0:可供1:清理ifflag==1{riState=脏房;stateTime=sunini.getIniKeyCk_Minute;}//EndifsqlCode[i]=insertintocheckoutpkchk_noin_nodaysmoneychk_timeremarkvalues+ckPK+sc++chNO++inNo++dtm.getValueAtsc6++dtm.getValueAtsc7++chkTime++reMark+;i++;sqlCode[i]=updateliveinsetstatemark=已结算wherepk=+dtm.getValueAtsc0+;flag=sunsql.runTransactionsqlCode;//执行事务操作}elseifflag==sqlCode.length{//如果事务成功,则更改状态图片RightTopPanel.setViewListButtonImagedtm.getValueAti1+dtm.getValueAti2+riState;tf
1.setText
0.00;//清空控件tf
2.setText
0.00;Objecto=ae.getSource;ifo==bt1{//增加预定信息sunsql.executeUpdatedeletefromengage1;StringsqlCode=selecta.r_type预定规格b.r_no房间fromroomtypeasaengage1asbwherea.id=b.r_type_id;sunsql.initDTMei.dtm1sqlCode;ei.chk.setSelectedfalse;ei.showtrue;initDTM;}elseifo==bt2{//修改预定信息ifinitMrt{//传数据给窗口em.showtrue;//修改预定信息initDTM;//刷新表数据publicvoidactionPerformedActionEventae{Objecto=ae.getSource;Stringr_typer_nopa_timekeep_timeremark;r_type=cb
1.getSelectedItem+;r_no=cb
2.getSelectedItem+;pa_time=tf
3.getText;keep_time=tf
4.getText;remark=ta.getText;ifo==bt1{//===============================================保存用事务完成ifr_no.equals||pa_time.equals||keep_time.equals{JOptionPane.showMessageDialognull预定信息有空值,请完整填写!;return;}else{//if!suntools.isDatepa_time{//判断预抵日期是否合法JOptionPane.showMessageDialognull预抵时间输入有误请正确输入yyyy-mm-dd;tf
3.setText;tf
3.requestFocus;}elseif!suntools.isDatetf
4.getText{//判断保留时间是否合法JOptionPane.showMessageDialognull保留时间输入有误请正确输入yyyy-mm-dd;tf
4.setText;tf
4.requestFocus;}else{StringsqlCode[]=newString
[3];StringsqlCode=selecta.chk_no帐单号b.r_no房间号b.c_name宾客姓名b.foregift已收押金a.money实收金额a.chk_time结算时间a.remark备注+fromcheckoutasaliveinasbwherea.delmark=0anda.in_no=b.in_no;sunsql.initDTMdtm1sqlCode;ifo==bt11{//结帐单查询HotelFrame.lbA.setTextHotelFrame.clue+查询结帐单信息 ;}elseifo==bt12{//结帐单刷新HotelFrame.lbA.setTextHotelFrame.clue+刷新结帐单信息 ;}elseifo==bt31{//在店宾客查询HotelFrame.lbA.setTextHotelFrame.clue+查询在店宾客信息 ;}elseifo==bt32{//在店宾客刷新HotelFrame.lbA.setTextHotelFrame.clue+刷新在店宾客信息 ;}elseifo==bt41{//离店宾客查询HotelFrame.lbA.setTextHotelFrame.clue+查询离店宾客信息 ;}elseifo==bt42{//离店宾客刷新HotelFrame.lbA.setTextHotelFrame.clue+刷新离店宾客信息 ;}}Objecto=ae.getSource;ifo==bt1{//=====================================保存longpk=sunsql.getPrimaryKey;//得到主键Stringm_idm_namesexzj_nom_teladdress;ifm_id.equals||m_name.equals||zj_no.equals||m_tel.equals||address.equals{//若添加项有空值JOptionPane.showMessageDialognull会员信息有空值,请重新输入!;return;}else{try{ResultSetrs=sunsql.executeQueryselectm_idfrommemberwherem_id=+m_id+anddelmark=0;ifrs.next{JOptionPane.showMessageDialognull该会员编号已存在,请重新输入!;StringsqlCode=insertintomemberpkm_idm_namesexzj_nom_teladdress+values+pk++m_id++m_name++sex++zj_no++m_tel++address+;sunsql.executeUpdatesqlCode;this.setVisiblefalse;if!suntools.isNumtf
4.getText{//判断电话是否由数字组成JOptionPane.showMessageDialognull联系电话必须由数字组成请重新输入!;try{ResultSetrs=sunsql.executeQueryselectm_idfrommemberwherem_id=+m_id+anddelmark=0;ifrs.next{JOptionPane.showMessageDialognull该会员编号已存在,请重新输入!;tf
1.requestFocus;tf
1.setText;}elseif!suntools.isNumtf
4.getText{//判断电话是否由数字组成}else{//将添加的信息插入会员表StringsqlCode=insertintomemberpkm_idm_namesexzj_nom_teladdress+values+pk++m_id++m_name++sex++zj_no++m_tel++address+;sunsql.executeUpdatesqlCode;this.setVisiblefalse;}if!suntools.isNumtf
4.getText{//判断电话是否由数字组成JOptionPane.showMessageDialognull联系电话必须由数字组成请重新输入!;tf
4.setText;}else{tf
5.requestFocus;longckPK=sunsql.getPrimaryKey;//获得结算记录首PKStringchNO=suntools.getNumbersuntools.Number_JS;//获得结算单号StringchkTime=Journal.getNowDTime;//结算时间StringreMark=tf
3.getText;//备注intcount=tb.getRowCount;//得到有几点结算记录StringsqlCode[]=newString[count*3];//创建SQL语句数组StringriState=可供;//房间状态StringstateTime=0;//房间的状态计时ifflag==1{stateTime=sunini.getIniKeyCk_Minute;}//Endifintsc=0;forinti=0;icount*3;i++{//向结算表加数据inNo=sqlCode[i]=insertintocheckoutpkchk_noin_nodaysmoneychk_timeremarkvalues+ckPK+sc++chNO++inNo++dtm.getValueAtsc6++dtm.getValueAtsc7++chkTime++reMark+;i++;//更改入住信息表里的记录状态为已结算sqlCode[i]=updateroominfosetstate=+riState+statetime=+stateTime+wheredelmark=0andid=+dtm.getValueAtsc2+;sc++;//DTM指针+1flag=sunsql.runTransactionsqlCode;//执行事务操作forinti=0;itb.getRowCount;i++{RightTopPanel.setViewListButtonImagedtm.getValueAti1+dtm.getValueAti2+riState;privatebooleanisValidity{iftf
1.getText.length==0{JOptionPane.showMessageDialognull[房间编号]不能为空提示JOptionPane.INFORMATION_MESSAGE;tf
1.requestFocustrue;returnfalse;}elseiftf
2.getText.length==0{JOptionPane.showMessageDialognull房间[所在区域]不能为空提示JOptionPane.INFORMATION_MESSAGE;tf
2.requestFocustrue;returnfalse;}elseif!suntools.isNumtf
3.getText410009999{JOptionPane.showMessageDialognull[房间电话]只能是数字,最长为4位,+范围1000-9999之间提示JOptionPane.INFORMATION_MESSAGE;tf
3.requestFocustrue;returnfalse;}//Endifreturntrue;}privatebooleanisValidity{iftf
0.getText.length==0{JOptionPane.showMessageDialognull房间[类型编号]不能为空提示JOptionPane.INFORMATION_MESSAGE;tf
0.requestFocustrue;returnfalse;}elseiftf
1.getText.length==0{JOptionPane.showMessageDialognull房间[类型名称]不能为空提示JOptionPane.INFORMATION_MESSAGE;tf
1.requestFocustrue;returnfalse;}elseif!suntools.isNumtf
2.getText2110{JOptionPane.showMessageDialognull[床位数量]只能是数字,且范围在1-10之间提示JOptionPane.INFORMATION_MESSAGE;tf
2.requestFocustrue;returnfalse;}elseifDouble.parseDoubletf
3.getText=Double.parseDoubletf
4.getText{JOptionPane.showMessageDialognull[预设押金]必需要大于[预设单价]try{ResultSetrs=sunsql.executeQueryselectr_type_idfromroominfo+wheredelmark=0andid=+tf
1.getText+;ifrs.next{//检测新的房间编号是否存在JOptionPane.showMessageDialognull新指定的房间编号[+tf
1.getText+]已存在,不能执行添加操作,请重新核对...提示JOptionPane.INFORMATION_MESSAGE;tf
1.requestFocustrue;return;}//Endifrs=sunsql.executeQueryselectidfromroominfo+wheredelmark=0andr_tel=+tf
3.getText+;ifrs.next{//检测新的房间电话号是否重复JOptionPane.showMessageDialognull分配给新房间的电话号[+tf
3.getText+]已存在,不能执行添加操作,请重新核对...提示JOptionPane.INFORMATION_MESSAGE;tf
3.requestFocustrue;return;}。