宾馆信息管理系统数据库课程设计报告_第1页
宾馆信息管理系统数据库课程设计报告_第2页
宾馆信息管理系统数据库课程设计报告_第3页
宾馆信息管理系统数据库课程设计报告_第4页
宾馆信息管理系统数据库课程设计报告_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库课程设计报告 -宾馆信息管理系统一、 系统开发平台题目:酒店信息管理预订系统 开发语言:Java Eclipse /netbeans后台数据库管理系统:SQL Server 2000操作系统:windows xp二、 数据库规划2.1 任务述Ø 引言客房管理系统是典型的信息管理系统的一部份,而且是必不可少的一部份。其开发主要包括后台数据库的建立和维护以与前端应用程序的开发两个方面。对于前者要求建立起简洁且资料一致性和完整性强、资料安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。酒店客房管理系统的容对于经营的决策者和管理者来说都至关重要,所以客房管理系统、信息管

2、理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多弊端,如:效率低、性差,容易出现差错等,且对于查询空房间与已定房间等极为不方便。在当今时代,这些完全可以改用计算机来代替人的手工操作。 作为计算机与网络应用的一部分,使用计算机对客房信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、性好、寿命长、成本低等。这些优点能够极提高客房经营管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。且办事效率也是决定收入的一个关键因素。 因此,我选择的酒店客房管理系统设计,力求开发出一套界面

3、友好,功能强大,使用简单的适用于各大、中、小规模的酒店客房的管理系统。同时也是一款完全适合宾馆或旅馆酒店客房管理傻瓜式日常业务管理的软件。酒店系统由前台和后台管理两个部分组成。前台作为与前台服务员直接交互的可视化界面,由于使用方便,能将系统的各个功能提供给他们,以帮助服务员进行客房管理。前台在考虑功能实现的同时,也考虑了操作的简洁和方便性,目的是让大多数客户能够轻松地享受电子商务给他们带来的便利。 为了确保客户和酒店的信息具有更好的安全性,前台管理和后台管理是分离的。前台的各管理模块只有部分功能和权限,我为此设计了两个角色:一是酒店管理员,二是前台服务员。其中:酒店管理员享有最高权限,可以使用

4、酒店客房管理系统所提供的所有功能,包括员工信息修改、客房类型维护、客房信息维护、客户信息查询。前台服务员的主要职能是负责订房,入住和退房,以与查询和修改订单,查询房间信息和查询预订与入住的客户信息。所有该角色只可以使用部分功能,后台管理主要由数据库系统作为支持,后台管理的维护工作主要由系统管理员进行。Ø 数据库管理系统由于酒店管理系统是一个典型的数据库应用系统,因而选择一个良好的DBMS是系统实现的另一个重要环节。DBMS访问数据库。一般来说现代的DBMS具备以下几个功能:(1)事务的恢复功能:为尽可能减少由于故障而引起的数据库数据失效的损失,现代的DBMS通常具备恢复功能。(2)完

5、整性约束检查:由于数据库中的数据是持久和共享的,其正确性十分重要,为保证数据的正确性,DBMS提供对数据库数据的语法和语义的检查,数据在语义上的约束称为完整性约束。(3)访问控制:并不是任何用户可以不加限制的访问任何数据库中的数据,DBMS应有控制用户访问权限的功能,即所谓的访问控制功能,访问控制不但可以限制用户的访问围,而且可以限制用户可进行的操作。(4)数据目录管理:数据库中保留的是持久和共享的数据,对数据的定义应不同于一般的程序设计语言,应独立于应用程序,长期保留在数据库中,这就构成了数据目录,数据目录的管理是DBMS的基本功能。2.2 任务目标Ø 设计目标(1)操作简单方便、

6、界面简洁美观,方便中小型酒店人员使用。(2)前台服务员功能:住宿管理:客房预订(能实现散客和团体客户预订,团体预订可预订多间不同类型的房间,并在这些房间中选择一个作为主房间号)客人入住(能实现散客和团体客户入住,团体入住可选择多间不同类型的房间,并在这些房间中选择一个作为主房间号)客户信息录入(在订单生成页面将录入客户信息,团体客户只记录一位主客户信息,而不需所有客户依次登记)入住押金管理(押金设为住宿总费用的百分之五十,在开入住订单时系统自动计算并显示)信息管理: 预订和入住订单查询(可按订单号、客户号、入住类型查询)团体订单细则(对团体订单中每一个房间信息显示)修改预订订单和入住订单(可修

7、改主客的基本信息与订单信息)取消预订订单(直接删除预订订单,恢复房间的可用状态)将预订订单直接转为入住(省去了再次生成入住订单的程序)房间查询(可按照房间号、房间类型、房间状态查询)客户查询(可按照客户、客户号、入住类型查询)入住客户中途换房(只能换同种类型房间,消费金额不变)入住客户正常退房(根据入住时间计算消费金额,最后客户应缴费用为总费用与已交押金之差)(3)管理员功能:除了前台接待的功能之外,还包括房间信息设定与修改(包括客房类型,客房分机号,楼层,备注)个人信息修改(包括个人密码,联系方式,住址)增加客房类型(包括类型号,单价,床位数,房间设施,面积等)增加客房信息(包括房间号,房间

8、类型,房间分机,楼层,备注)(4)酒店介绍等信息:介绍酒店的地址,房间价格标准,联系等信息三、 系统定义3.1 系统边界酒店信息管理系统住宿管理客房管理后台管理员散客客房预订散客客房入住团体客房预订团体客房入住押金管理客户信息录入预订订单查询入住订单查询预订订单修改入住订单修改取消预订订单房间信息查询客户信息查询个人信息维护增加客房类型增加客房信息修改已有房间信息退换房管理已住订单换房已住订单退房与结账3.2 用户视图Ø 前台服务员散客客房预订与入住前的房间查询散客预订生成订单,录入客户基本信息散客入住生成订单,录入客户基本信息团体客房预订与入住前房间查询,设置主房间号团体预订生成订

9、单,录入主客户基本信息团体入住生成订单,录入主客户基本信息预订订单信息查询预订订单修改团体预订订单所有房间信息细则取消预订订单入住订单信息查询入住订单修改团体入住订单所有房间信息细则客房信息查询客户信息查询入住换房管理入住正常退房与消费结账管理Ø 后台管理员后台管理员登陆管理员个人功能主页个人信息修改增加客房类型增加客房信息修改已有客房信息四、需求分析4.1 用户需求分析4.1.1 数据需求Ø 前台服务员用户视图预订信息:预订订单号(唯一),客户号,客户,主客房间号,预订房间数,入住类型(散客/团体),预订时间,入住时间,入住天数,主客。预订登记:预订登记号(唯一),所属预

10、订订单号,房间号,房间类型号,房间类型,预订时间,入住时间,入住天数,房间单价。入住信息:入住订单号(唯一),客户号,客户,主客房间号,预订房间数,入住类型(散客/团体),入住时间,入住天数,主客,房间总费用,需收押金。入住登记:入住登记号(唯一),所属入住订单号,房间号,房间类型号,房间类型,预订时间,入住时间,入住天数,房间单价。客户信息:客户号(唯一),客户,客户,性别,备注客房信息:房间号,房间类型号,房间类型(标准间/高级套房/普通单间/总统套房),房间状态(可用/预订/入住),楼层,分机号,备注换房信息:房间号,房间类型,客户,客户号,订单号退房信息:订单号,客户,客户号,入住时间

11、,入住天数,房间单价,已交押金,房间总费用,还需缴纳费用Ø 后台管理员用户视图管理员登陆:管理员账号,管理员密码管理员个人信息维护:管理员,管理员账号,管理员密码,联系,住址,职务增加房间类型:房间类型号,房间类型名称,房间单价,床位数,面积,房间设施增加客房:房间号,房间类型,房间状态,楼层,分机,备注4.1.2 事务需求Ø 前台服务员视图:数据查询:现有各类房间的详细信息以供预订或入住列出已有所有预订订单列出已有所有入住订单列出所有客房信息(可用/已住/预订)列出所有客户信息(预订/入住)列出某客户的订单情况列出某团体的所有登记房间情况列出需要换房的房间信息以与所有同种

12、类型当前可用房间信息列出需要退房的房间信息,已交金额与需交金额显示酒店详细信息数据录入:录入客户需要的房间信息(选择房间类型与房间数目)录入客户的基本信息(,号,等)录入订单信息(时间,入住天数)录入订单修改信息(修改预订与入住订单,与取消订单)录入换房信息录入退房信息数据输出:输出酒店现有有所类型房间的数目自动输出预订订单与入住订单的订单号和登记号(每一个订单有一个订单号,一个订单中的每个房间有一个登记号,一个登记号对应一个订单号,一个订单号对应一个或多个登记号。订单号和登记号按系统时间自动生成)自动输出退房信息,退房所需交的金额Ø 后台管理员视图数据录入:录入管理员账号,密码录入

13、个人修改信息(密码,住址)录入新增加房间类型(类型号,类型名称,单价等)录入新增加房间信息(房间号,房间类型,分机,楼层)录入已有房间修改信息(房间号,房间类型等)数据查询:列出现有所有房间信息列出个人所有信息列出修改后的房间信息数据输出:输出增加的房间类型输出增加的房间信息4.2 系统需求说明4.2.1 软件环境软件环境需要支持Window操作系统,与SQL Server 2000商业数据库4.2.2 硬件环境Inter(R)Core(TM)2 Duo CPU T5670 1.80GHz 1.79 GHz, 504MB存4.2.3 初始数据库大小 客房信息40条员工信息4条 客户信息15条

14、预订订单信息8条入住订单信息7条预订登记信息15条入住登记信息15条4.2.4 数据库增长速度住宿信息每天增长大约50条预订信息每天增长大约50条 退宿信息每天增长大约30条换房信息每天增长大约10条 其他信息增长速度不定4.2.5记录查找的类型和平均数量查询客房信息 大约每天50次查询住宿信息 大约每天50次查询客户信息 大约每天50次 查询退宿信息 大约每天50次4.2.6 安全性管理员和服务员有不同的权限每个管理员登录系统是需要身份验证(前台服务员不需要)五、数据库逻辑设计5.1 ER图订单号酒店客房房间类型预订登记表登记有属于客户预订订单预订入住管理管理员所属登记号登记号订单号入住登记

15、表入住订单登记登记号所属订单号5.2 数据字典5.2.1实体和联系属性客房信息(房间号,房间类型号,房间类型,房间状态,楼层,房间分机,备注)房间类型(房间类型号,类型名称,房间单价,面积,床位数,房间设施)客户信息(号,客户,联系,性别,备注)预订订单(预订订单号,主客,主客号,主客房间号,入住类型,房间数目,预订时间,入住时间,入住天数,客户)预订登记表(预订登记号,所属预订订单号,房间号,房间类型号,房间类型,预订时间,入住时间,入住天数,入住类型,房间单价)入住订单(入住订单号,主客,主客号,主客房间号,入住类型,房间数目,入住时间,入住天数,客户,房间总费用,需交押金)入住登记表(入

16、住登记号,所属入住订单号,房间号,房间类型号,房间类型,入住时间,入住天数,入住类型,房间单价)团体入住信息(团体入住订单号,主客,主客号,客户人数,主客房间号,入住时间,入住天数,主客,房间总费用,需收押金)管理员(管理员账号,密码,管理员,职位,联系,住址)5.2.2属性描述实体属性类型与大小空客户信息号(key)char(10)否客户varchar(50)否联系varchar(50)否性别varchar(50)否备注varchar(50)客房信息房间号(key)char(10)否房间类型号char(10)否房间类型verchar(50)否房间状态verchar(50)否房间分机char(

17、10)否楼层char(10)否备注varchar(10)管理员管理员账号(key)char(10)否密码char(10)否职位varchar(50)否联系方式char(10)否住址varchar(50)预订订单预订订单号(key)char(10)否主客varchar(50)否主客号char(10)否入住类型varchar(50)否预订房间数目char(10)否主客房间号char(10)否预订时间Datetime否入住时间Datetime否入住天数Char(10)否主客Char(10)否预订登记表预订登记号(key)char(10)否所属预订订单号char(10)否房间号char(10)否房间类

18、型号char(10)否房间类型varchar(50)否预订时间datetime(8)否入住时间datetime(8)否入住天数char(10)否入住类型varchar(50)否房间单价char(10)否入住订单入住订单号(key)char(10)否主客varchar(50)否主客号char(10)否入住类型varchar(50)否入住房间数目char(10)否主客房间号char(10)否入住时间Datetime否入住天数Char(10)否主客Char(10)否房间总费用Char(10)否需交押金Char(10)否入住登记表入住登记号(key)char(10)否所属入住订单号char(10)否房

19、间号char(10)否房间类型号char(10)否房间类型varchar(50)否入住时间datetime(8)否入住天数char(10)否入住类型varchar(50)否房间单价char(10)否房间类型房间类型号(key)char(10)否类型名称varchar(50)否床位数char(10)否单价char(10)否房间设施varchar(50)否面积char(10)否5.3关系表六、数据库物理设计6.1 索引使用查询分析器运行:USE 酒店管理系统DBCC SHOWCONTIG WITH TABLERESULTS, ALL_INDEXES可以得到“酒店管理系统”数据库中全部索引的相关信息

20、,其中用户所建表的部分信息如下:ObjectNameIDIndexNameAverageFreeBytesLogicalFragementation入住订单18099105PK_团体入住信息6384.00.0入住登记表210099789PK_团体入住登记表5240.00.0客户信息837578022PK_客户信息4730.0100.0房间类型933578364PK_房间类型7422.00.0客房信息1669580986PK_客房信息3876.0100.0管理员1909581841PK_高级管理7617.00.0预订订单2021582240PK_团体预订信息6278.00.0预订登记表20855

21、82468PK_团体预订登记表4280.0100.0以上都是主键索引。6.2 安全机制(1)后台管理员登录必须要通过身份验证,当数据库中有此账号并且权限与用户类型一致是,才能成功登录。保证了系统的安全性。(2)前台工作人员没有权利访问经理的工作空间,对一些宾馆的基本信息和重要数据,如房间类型、客房信息,没有全部查询或者修改的权利。保证了数据的安全性。七、应用程序设计7.1 功能模块Ø 前台服务员(1) 散客的预订和入住房间可按照房间类型(如单人间,标准间等)选择房间,该房间必须为空闲,即未被预订,并且目前无人入住的房间,登记客户的基本信息,包括客户、登记入住时间、预定时间。在预订后,

22、会自动生成一个订单号和一个登记号,客房状态即为“预订”,从而在其他客户登记查询房间的时候此房间不会被查询到。同时,如果客户在预订订单中的入住时间之后三天仍未到达,则视为放弃,此时房间状态恢复“可用”。(2)团体的预订和入住登记页面首先显示酒店现在剩余的各类空闲房间数,客户可选择其中的各种类型数目,并设定一个主房间。登记入住客户的基本信息,包括客户、通讯地址、登记预定时间和入住时间以与准备入住天数,对于已经预定过房间的情况,根据房间号直接找出其预定信息,修改需变动的信息后做入住登记。每一个订单有一个订单号,一个订单中包括了该团体中的所有房间,且每个房间有一个登记号。即一个订单对应多个登记号,一个

23、登记号只对应一个订单号。团体预订只需记录主客的等信息即可。入住之后的房间状态为“已住”,从而在其他客户登记查询房间的时候此房间不会被查询到。(3)退宿结账根据订单号查询客户的入住订单信息,包括住宿天数、退宿时间,根据单价、已交押金和入住天数等信息自动计算费用。(4)入住换房根据房间号可查询到该房间与订单的所有信息,同时会显示该类房间的其他剩余房间,选择其中一间确定换房后,订单表和登记表中的数据都会改变。(5)房间管理与查询查询预订订单:可以直接查询所有订单,也可根据订单号、主客号,入住类型查询。对每一个订单,可以显示其登记的所有房间信息。修改预订订单:可以对预订订单中的客户信息和预订信息修改,

24、其中客户信息包括除了号之外的所有信息,预订信息包括入住天数和入住时间。查询入住订单:可以直接查询所有订单,也可根据订单号、主客号,入住类型查询。对每一个订单,可以显示其登记的所有房间信息。修改入住订单:可以对入住订单中的客户信息和预订信息修改,其中客户信息包括除了号之外的所有信息,预订信息包括入住天数和入住时间。查询房间信息:可以直接查询所有房间的房间号,房间状态,房间楼层,房间类型等信息,也可以根据房间号,房间类型,房间状态查询。查询客户信息:可以直接查询所有客户,也可以根据客户,客户号,订单类型查找。(6)关于我们对酒店的简介与联系方式等信息。Ø 后台管理员 (1) 高级管理查询

25、、增加、删除、修改客房信息,还包括修改个人信息,修改密码等功能。修改房间的各项数据信息,包括房间号、房间类型、位置、状态、备注。修改个人信息,包括个人登录密码,联系方式,住址等。(2) 房间类型维护增加房间类型信息,包括类型号、名称、面积、床位数、设施(是否有沙发、是否有电视、是否有、是否有卫生间),房间价格。对该类信息的修改只有高级管理员才有权限。7.2 界面设计使用了Netbeans设计界面。Ø 主界面Ø 散客预订与入住界面:选择房间类型可以查询当前剩余此类房间数Ø 生成预订订单。点击预订,自动生成预订订单号和登记号。Ø 生成入住订单。点击入住,自动

26、生成入住订单号和登记号,与需交押金。Ø 团体预订与入住。选择房间类型,点击添加可以增加房间,并可以设定一个主房间。Ø 生成预订订单和入住订单,填写客户信息。Ø 查询订单信息,可以全部查询,按订单号、主客号,入住类型查询。Ø 点击详情,可查看该订单的详细登记信息Ø 点击修改,可以修改预订订单,也可以取消订单Ø 查询入住订单,和预订订单类似。入住信息修改Ø 查询房间信息和客户信息Ø 换房。输入房间号可查询同类房间,点击确定可以换房。Ø 退房结账。输入订单号可以显示应缴金额。Ø 管理员登陆界面点击修改

27、,可以显示自己个人信息并修改。点击增加,可以增加房间类型和房间信息。输入房间号或房间类型,可以查询房间信息。修改房间信息后选择确定修改。Ø 酒店简介。7.3 事务设计Ø 自动生成订单号和登记号。publicstaticsynchronized String nextCode(String PREFIX) /产生序列号 GregorianCalendar calendar=new GregorianCalendar();int month=calendar.get(Calendar.MONTH)+1; int day =calendar.get(Calendar.DAY_OF

28、_MONTH); int hour =calendar.get(Calendar.HOUR_OF_DAY); int minute =calendar.get(Calendar.MINUTE); int seconds =calendar.get(Calendar.SECOND); long m =month*100000000 + day*1000000 + hour*10000 + minute * 100 + seconds; String n = (Long)m).toString();return PREFIX + n ;调用时预订订单参数为“a”,入住订单为“b”。登记号为入住号加

29、后缀。/需要自动生成散客入住订单号和登记号 Xuliehao xulie=new Xuliehao();comeno=xulie.nextCode("b");/订单号registerno=comeno+"0"/登记号/需要自动生成团体入住订单号和登记号Xuliehao xulie=new Xuliehao();comeno=xulie.nextCode("b");/订单号registerno=new Stringmessage.length;/登记号registernoi=comeno+String.valueOf(i);Ø

30、 自动计算现在剩余各类房间数目private String rest(String typno)String sql1="select count(房间号) from 客房信息 where 房间状态='可用' and 房间类型号='"+typno+"'"String rest=null;ResultSet a;try sc=new DBconnect();stat=DBconnect.getStatement();a=stat.executeQuery(sql1);while(a.next()rest=a.getStrin

31、g(1);/System.out.print(a); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return rest;Ø 自动计算退房时应缴金额try PreparedStatement prs = conn.prepareStatement("select 需收押金 from 入住订单 where 入住订单号=?"); prs.setString(1, ordno);rs1=prs.executeQuery();while(rs1.next()depo

32、sit=rs1.getString(1).trim();/已交押金 catch (SQLException e1) e1.printStackTrace();System.out.println(deposit);String allfare=jTable1.getValueAt(0, 6).toString().trim();/总费用int need=Integer.parseInt(allfare)-Integer.parseInt(deposit);/还需缴纳Ø 换房后,房间状态改变try PreparedStatement prs1 = conn.prepareStateme

33、nt("update 入住订单 set 主客房间号=? where 主客房间号=?");prs1.setString(1, newroom);prs1.setString(2, roomno);prs1.executeUpdate();PreparedStatement prs = conn.prepareStatement("update 入住登记表 set 房间号=? where 房间号=?");prs.setString(1, newroom);prs.setString(2, roomno);prs.executeUpdate();Prepare

34、dStatement prs2 = conn.prepareStatement("update 客房信息 set 房间状态='可用' where 房间号=?");prs2.setString(1, roomno);prs2.executeUpdate();PreparedStatement prs3 = conn.prepareStatement("update 客房信息 set 房间状态='已住' where 房间号=?");prs3.setString(1, newroom);prs3.executeUpdate();

35、JOptionPane.showMessageDialog(null, "换房成功!","ok",JOptionPane.INFORMATION_MESSAGE); catch (SQLException e1) JOptionPane.showMessageDialog(null, "换房失败!","Error",JOptionPane.ERROR_MESSAGE);e1.printStackTrace();八、测试和运行Ø 测试:在测试时花时间最多的地方时sql语句。有时候一个小小的引号没有中英切换就

36、要出错,或者是在preparedStatement语句中用setString时候可能会把序号写错。出错以后就不得不反复用System.out.println()语句检测,并且用查询分析器检测sql语句是否正确。在测试中也发现当条件语句检测比如jTextField是否为空的时候,用“=null”是检测不出来的,就要不断上网搜查资料。在测试中也发现有很多没有想到的情况,比如在输入客房订单信息时,不仅要考虑所有客户信息不能为空,还要考虑入住天数不能小于一,入住时间要晚于预订时间等等。可能需要很多条件语句,而条件语句嵌套的多了,就容易出问题。实验进行中我的想法一直跟着做的程度变化。因为最开始的时候不可能将所有的情况和事件都料想到。比如roommanage的类中,在查询窗口中我一直没有确定到底按照哪种方式查询。本来设想了很多jTextField可以供不同的条件查询,可是测试的时候发现这样的出错率很高,于是将它改成了一个下拉列表,选择查询方式再按照条件查询。不仅界

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论