1、JAVA宾馆客房管理系统报告成绩评阅人评阅日期计算机科学与技术系数据库课程设计设计题目:宾馆客房管理系统 班 级: 计算机06-1学 号: 06034050126姓 名: 庞 景 中 指导老师: 朱 兴 统 2008年12月25日目录目录1课程设计题目:宾馆客房管理系统.2一选题的依据及课题的意义2二、系统需求分 2三、研究内容及实验方案3四、数据库设计4五页面设计及相关代码分析7六、使用说明27七、实验总结27 八、主要参考文献28课程设计题目:宾馆客房管理系统一、 选题的依据及课题的意义 随着宾馆酒店业竞争的加剧,宾馆之间客源的争夺越来越激烈,宾馆需要使用更有效的信息化手段,拓展经营空间,
2、降低运营成本,提高管理和决策效率.传统的宾馆酒店计算机管理系统主要包括前台管理系统和后台管理系统两大部分,基本包含了宾馆主要业务部门,初步实现了对顾客服务和进行财务核算所需要的各个功能.但传统的宾馆酒店管理系统基于财务管理为主线的设计理念,无法满足宾馆酒店全面信息化管理的需要. 现代宾馆酒店业迅速发展,新的管理观念与模式层出不穷.宾客客房管理系统亦随着宾馆管理理念的发展而发展.宾馆客房管理系统依照国家星级宾馆标准化业务程序,采用了先进的数据库理论,多媒体技术,软件工程理念等,从基层,中层,高层三个管理者层次为切入点,以成本分析,预测,控制为主线,形成一套上下贯通,操作便捷的酒店系统解决方案,科
3、学地将宾馆各种日常业务完美的结合在一起,为管理及决策提供了强有力的支持.其对客人个性化服务及全面彻底的信息化,使企业电算化管理水平提升到一个新的更高层次.提供大量丰富的基于企业管理经营过程中实际的数据。二、系统需求分析 本系统设计实现的目标是对宾馆的客房管理、客户信息管理和餐厅服务管理功能,前台用java实现对数据的添加,删除,查询等功能,在后台用Sql server作为数据库,其中数据库设计是用PowerDesigner.v11软件设计的。本系统就是利用计算机信息提高了餐馆宾馆的管理水平,主要对系统的操作员权限、菜收银客房、客户等信息管理。系统操作权限管理可以实现对操作员的添加、删除、修改操
4、作,并设置操作员对指定用户进行密码修改。 宾馆的信息量大,数据安全性和保密性要求高。本系统实现对宾馆信息的管理和总体的统计等,营业信息的查看和维护。操作管理人员可以浏览,查询,添加,删除等宾馆的基本信息等。 本系统基本包含了宾馆管理的主要需求,具有完善细致的功能:1) 系统具有高可靠性、安全性、操作性;2) 模块化结构,具有强大的数据处理功能,可根据业务需要,十分便捷地进行模块增减,灵活地进行系统组合;3) 直观的图形用户界面,面向事务处理。随心所欲的查询,并全面支持分析和决策的功能。三、研究内容及实验方案1)研究内容本系统根据宾馆的业务情况该系统可分客房信息管理、客房经营管理、客户信息查询、
5、员工信息管理4个功能模块。2)实验方案根据课题的具体要求,可以将宾馆客房管理系统大体结构图示为如下:宾馆客房管理系统系统管理(用户登陆)客房信息管理客房经营管理客户信息查询员工信息管理查询房间信息客房使用情况宾馆订房宾馆退房删除房间信息信息客户信息查询员工查询员工添加员工删除修改房间信息录入房间信息整个系统分4个模块:1客房信息管理:录入房间信息、修改房间信息、查询房间信息, 删除房间信息.2客房经营管理:客房使用情况、宾馆订房、客房预订、宾馆退房.3客户信息查询:客户信息查询.4员工信息管理:员工查询、员工添加、员工删除。四、数据库设计1.E-R图的分析:E-R图的分析工作通常采用自底向下的
6、设计方法,首先对局部视图进行分析设计,然后再实现视图集成。宾馆客房管理系统一般包括如下几个表:用户信息(UsersInfo)、客户信息(CustomersInfo)、客房类型(RoomCategory)、客房信息(RoomsInfo)、客房状态(RoomStatus)、客房业务(RoomOperation)、业务记录(History)。他们之间关系如图1所示。图1 宾馆客房管理系统E-R图2. 创建表(1) 用户信息表用户信息表(UsersInfo)用来保存使用该系统的酒店员工的基本信息,表UsersInfo的结构如表1所示。表1 用户信息表(UsersInfo)编 号字 段 名 称数 据 结
7、 构说 明1UserIdInt用户编号2NameVarchar(50)用户姓名3PasswordVarchar(50)密码4GenderInt性别(0男,1女)5EmailVarchar(50)Email地址6AddressVarchar(50)通讯地址7TelephoneVarchar(50)联系电话8DepartmentVarchar(50)所在部门9TypeInt用户类型(1酒店管理员,2前台服务员(2) 客户信息表客户信息表(CustomersInfo)用来保存在酒店订房的客户的基本信息,表CustomersInfo的结构如表2所示。表2 客户信息表(CustomersInfo)编 号
8、字 段 名 称数 据 结 构说 明1CIdentityIdnVarchar(50)身份证号2CNamenVarchar(50)客户姓名3CPhonenVarchar(50)联系电话(3) 客房类型表客房类型表(RoomCategory)用来保存酒店所有客房类型的基本信息,表RoomCategory的结构如表3所示。 表3 客房类型表(RoomCategory)编 号字 段 名 称数 据 结 构说 明1RCategoryIdInt客房类型编号2NamenVarchar(50)类型名称3AreaFloat客房面积4BedNumInt配置床位5PriceMoney客房价格6AirConditionI
9、nt配置空调(0是,1否)7TVInt配置电视(0是,1否)(4) 客房信息表客房信息表(RoomsInfo)用来保存酒店所有客房的相关信息,表RoomsInfo结构的如表4所示。表4 客房信息表(RoomsInfo)编 号字 段 名 称数 据 结 构说 明1RoomIdInt客房号2RCategoryIdInt客房类型编号3RPostitionnVarchar(50)客房位置4DescriptionnVarchar(50)描述(5) 客房状态表客房状态表(RoomStatus)用来保存客房使用情况的基本信息,表RoomStatus结构的如表5所示。表5 客房状态表(RoomStatus)编
10、号字 段 名 称数 据 结 构说 明1RoomIdInt客房编号2StatusInt状态(1空房,2入住)(6) 客房业务表客房业务表(RoomOperation)用来保存目前酒店正有客户入住的客房的相关信息,表RoomOperation的结构如表6所示。 表6 客房业务表(RoomOperation)编 号字 段 名 称数 据 结 构说 明1RoomIdInt客房编号2BeginTimeDateTime入住时间3CIdentityIdnVarchar(50)客户身份证号4RemarksnVarchar(50)备注(7) 业务记录表业务记录表(History)用来保存酒店里所有入住过客户的客房
11、的业务信息,表History的结构如表7所示。 表7 业务记录表(History)编 号字 段 名 称数 据 结 构说 明1BeginTimeDateTime入住时间2EndTimeDateTime退房时间3RoomIdInt客房编号4TotalPriceMoney金额5CIdentityIdnVarchar(50)客户身份证号6CNamenVarchar(50)客户姓名7CPhonenVarchar(50)客户电话8RemarksnVarchar(50)备注根据上面的E-R图和各表属性用PowerDesigner.v11软件可以很轻松地制作也一个宾馆客房数据库。五页面设计及相关代码分析宾馆客
12、房管理系统的页面由五部分组成: 宾馆客房管理系统登陆界面的设计 客房管理管理页面的设计 客房经营管理页面的设计 客户信息查询页面的设计 员工信息管理页面的设计1. 宾馆客房管理系统登陆界面的设计系统共分两类用户:酒店管理员和前台服务员当用户进入宾馆客房管理系统登陆界面后,首先需要进行身份验证,系统在验证通过后,将使用UserType变量记录其用户类型,并根据用户类型确定用户的使用权限。宾馆客房管理系统登陆界面如图2所示。现在给出登陆界面的主要代码如下:/* 简介:宾馆客房管理系统登陆界面,应用数据库加密技术 * 作者:庞景中 * 功能:管理宾馆客房 * 版权:本人所有 * 版本:HoteLan
13、d1.0 * 时间:2008.11.13 * 文件名:HoteLand.java * 环境:Windows xp JDK6.0*/import .URL.*;import javax.swing.*;import javax.swing.ImageIcon;import javax.swing.JLabel;import java.sql.*;import java.awt.Container;import java.awt.GridLayout;import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.J
14、Frame;import javax.swing.JTextField;import javax.swing.JPasswordField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.*;public class HoteLand extends JFrame implements ActionListener private boolean boo1=false,boo2=false; int Type=0; public JTextField t =new JT
15、extField(用户名:,8),new JTextField(27), new JTextField(密码:,8),new JPasswordField(27),new JTextField(宾馆客房管理系统登陆界面-(组长:庞景中 队员:陈自发 陆钧洋),36),new JTextField(后台技术:应用数据库加密技术-安全保护你的信息!请放心使用!,36),new JTextField(功能:管理宾馆客房 版权:本人所有 时间:2008.12.7,36); public JButton b=new JButton(登陆),new JButton(退出); ImageIcon ic=ne
16、w ImageIcon(HoteLand.class.getResource(/迪拜七星级酒店.jpg); JFrame app; Statement statement; /构造方法 public HoteLand() app= new JFrame(-宾馆客房管理系统登陆界面-); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); app.setSize(438,583); app.setResizable(false); Container c=app.getContentPane(); c.setLayout(new FlowLay
17、out(); JLabel aLabel=new JLabel(ic,JLabel.LEFT); t0.setFont(new Font(TimesRoman,Font.BOLD,13); t0.setForeground(Color.red); t0.setEditable(false); t2.setFont(new Font(TimesRoman,Font.BOLD,13); t2.setForeground(Color.red); t2.setEditable(false); for(int i=0;i4;i+) c.add(ti); c.add(b0); c.add(b1); for
18、(int j=4;j0)tryresultset=statement.executeQuery(use 宾馆客户数据库;select * from RoomsInfo where RoomId=+number+); try resultset.next(); resultset.getInt(RoomId); String warning=该客房信息已存在,请到修改页面修改!;JOptionPane.showMessageDialog(this,warning,警告,JOptionPane.WARNING_MESSAGE); catch(Exception e1) int RoomId=Int
19、eger.parseInt(房间号.getText().toString(); String RCategory=房间类型.getSelectedItem().toString(); String RPostion=房间位置.getText().toString(); String Description=描述.getText().toString(); String str=use 宾馆客户数据库;insert into RoomsInfo values(+RoomId+,+RCategory+,+RPostion+,+Description+); try statement.execute
20、Update(str); statement.executeUpdate(use 宾馆客户数据库;insert into RoomStatus values(+RoomId+,+1+); JOptionPane.showMessageDialog(this,成功录入客房信息!,提示,JOptionPane.WARNING_MESSAGE); catch(Exception e2) String warning=输入格式有误,请重新输入!; JOptionPane.showMessageDialog(this,warning,警告,JOptionPane.WARNING_MESSAGE); e2
21、.printStackTrace(); 房间号.setText(null); 房间类型.select(普通单人间); 房间位置.setText(null); 描述.setText(null);catch(Exception e1) String warning=输入格式有误,请重新输入!; JOptionPane.showMessageDialog(this,warning,警告,JOptionPane.WARNING_MESSAGE); else String warning=必须要输入房间号!; JOptionPane.showMessageDialog(this,warning,警告,J
22、OptionPane.WARNING_MESSAGE); if(e.getSource()=重置)房间号.setText(null);房间类型.select(普通单人间);房间位置.setText(null);描述.setText(null);3. 客房经营管理页面的设计该页面主要是实现如下三个功能:客房使用情况,宾馆订房,宾馆退房。其的界面如图4所示。图 4客房经营管理页面现在给出客房经营管理页面的主要代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.u
23、til.*;import java.sql.*;public class UseOfRooms extends JPanel implements ActionListenerJButton 查询;Choice 房间类型,状态;Statement statement=null;JTextArea 房间使用情况;JLabel 客房使用情况=null;public UseOfRooms(Statement statement)this.statement=statement;查询=new JButton(查询);查询.addActionListener(this);房间类型=new Choice(
24、); 房间类型.add(普通单人间); 房间类型.add(普通双人间); 房间类型.add(vip单人间); 房间类型.add(vip双人间); 房间类型.add(豪华贵宾间); 房间类型.add(总统套间);状态=new Choice();状态.add(有);状态.add(否);Box box0=Box.createHorizontalBox();客房使用情况=new JLabel(-客房使用情况-,JLabel.CENTER);客房使用情况.setFont(new Font(TimesRoman,Font.BOLD,25);客房使用情况.setForeground(Color.red);b
25、ox0.add(客房使用情况);Box box1=Box.createHorizontalBox();box1.add(new JLabel(按房间类型:,JLabel.CENTER);box1.add(房间类型);Box box2=Box.createHorizontalBox();box2.add(new JLabel(状态:,JLabel.CENTER);box2.add(状态);box2.add(查询);Box box3=Box.createHorizontalBox();box3.add(new JLabel(房间使用情况:,JLabel.CENTER);Box box4=Box.c
26、reateHorizontalBox();box4.add(new JLabel(-客房号:);box4.add(new JLabel(-客房类型:);box4.add(new JLabel(-是否空房:);Box box5=Box.createHorizontalBox();房间使用情况=new JTextArea(8,12);房间使用情况.setFont(new Font(TimesRoman,Font.BOLD,15);房间使用情况.setForeground(Color.red);房间使用情况.setEditable(false);box5.add(new JScrollPane(房间
27、使用情况),BorderLayout.CENTER);Box boxH=Box.createVerticalBox();boxH.add(box0);boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(box4);boxH.add(box5);boxH.add(Box.createVerticalGlue();JPanel pCenter=new JPanel();pCenter.add(boxH);setLayout(new BorderLayout();add(pCenter,BorderLayout.CENTER);validate
28、();public void actionPerformed(ActionEvent e) int i=1; ResultSet resultset=null; String string=;if(e.getSource()=查询) String str=房间类型.getSelectedItem().toString(); String str1=状态.getSelectedItem(); if(str1.equals(有) i=2; else i=1; String str2=use 宾馆客户数据库;select RoomsInfo.RoomId,RCategory,RoomStatus.S
29、tatus from RoomsInfo,RoomStatus where RoomsInfo.RoomId=RoomStatus.RoomId and Status=+i+ and RCategory=+str+; try resultset=statement.executeQuery(str2); while(resultset.next() string+=resultset.getInt(1)+, +resultset.getString(2)+, +str1+n;if(string=)房间使用情况.setText(没有要找的客房!);else房间使用情况.setText(string);