1、1)研究内容本系统根据宾馆的业务情况该系统可分客房信息管理、客房经营管理、客户信息查询、员工信息管理4个功能模块。2)实验方案根据课题的具体要求,可以将宾馆客房管理系统大体结构图示为如下:宾馆客房管理系统系统管理(用户登陆)客房信息管理客房经营管理客户信息查询员工信息管理查询房间信息客房使用情况宾馆订房宾馆退房删除房间信息信息客户信息查询员工查询员工添加员工删除修改房间信息录入房间信息整个系统分4个模块:1客房信息管理:录入房间信息、修改房间信息、查询房间信息, 删除房间信息.2客房经营管理:客房使用情况、宾馆订房、客房预订、宾馆退房.3客户信息查询:客户信息查询.4员工信息管理:员工查询、员
2、工添加、员工删除。四、数据库设计1.E-R图的分析:E-R图的分析工作通常采用自底向下的设计方法,首先对局部视图进行分析设计,然后再实现视图集成。宾馆客房管理系统一般包括如下几个表:用户信息(UsersInfo)、客户信息(CustomersInfo)、客房类型(RoomCategory)、客房信息(RoomsInfo)、客房状态(RoomStatus)、客房业务(RoomOperation)、业务记录(History)。他们之间关系如图1所示。图1 宾馆客房管理系统E-R图2. 创建表(1) 用户信息表表1 用户信息表(UsersInfo)编 号字 段 名 称数 据 结 构说 明1UserI
3、dInt服务员编号2Namenchar(6)服务员姓名3PasswordVarchar(50)密码4GenderInt性别(0男,1女)5EmailVarchar(50)Email地址6AddressVarchar(50)通讯地址7Telephonenchar(11)联系电话8DepartmentVarchar(30)所在部门9TypeInt用户类型(1酒店管理员,2前台服务员(2) 客户信息表表2 客户信息表(CustomersInfo)编 号字 段 名 称数 据 结 构说 明1CIdentityIdnVarchar(18)身份证号2CNamenchar(6)客户姓名3CPhonenchar
4、(11)联系电话4VIPDegreenchar(1)会员级别(3) 客房信息表 表3 客房类型表(RoomInfo)编 号字 段 名 称数 据 结 构说 明1RoomIdnVarchar(4)客房号2NamenVarchar(50)类型名称3PriceMoney客房价格4StatusInt状态(1空房,2入住)5DescriptionnVarchar(50)描述 (4) 客户订单表 表4 客房业务表(CustomersBook)编 号字 段 名 称数 据 结 构说 明1RoomIdInt客房号2CNameNchar(6)客户姓名3CPhoneNchar(11)客户电话4BeginTimeDat
5、eTime入住时间5EndTimeDateTime退房时间6CIdentityIdnVarchar(50)客户身份证号7MoneyMoney付款金额8UserIdInt服务员编号9RemarksnVarchar(50)备注 (5)VIP折扣表表5 VIP折扣表(VIPDiscount)编 号字 段 名 称数 据 结 构说 明1CPhoneNchar(11)用户电话2VIPDegreeNchar(1)会员等级3VIPDiscountInt会员折扣五页面设计及相关代码分析宾馆客房管理系统的页面由五部分组成: 宾馆客房管理系统登陆界面的设计 客房管理管理页面的设计 客房经营管理页面的设计 客户信息查
6、询页面的设计 员工信息管理页面的设计1. 宾馆客房管理系统登陆界面的设计系统共分两类用户:酒店管理员和前台服务员当用户进入宾馆客房管理系统登陆界面后,首先需要进行身份验证,系统在验证通过后,将使用UserType变量记录其用户类型,并根据用户类型确定用户的使用权限。宾馆客房管理系统登陆界面如下2所示。现在给出登陆界面的主要代码如下:import .URL.*;import javax.swing.*;import java.sql.*;import java.awt.Container;import java.awt.GridLayout;import java.awt.FlowLayout;
7、import java.awt.Image;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;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 implem
8、ents ActionListener private boolean boo1 = false, boo2 = false;int Type = 0;public JTextField t = new JTextField(用户名:, 6), new JTextField(20),new JTextField(密码:, 6), new JPasswordField(20) ;public JButton b = new JButton(登陆), new JButton(退出) ;ImageIcon ic = new ImageIcon(HoteLand.class.getResource(/
9、hotel.jpg);JFrame app;Statement statement;/ 构造方法public HoteLand() app = new JFrame(宾馆客房管理系统登陆界面);app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);app.setSize(350, 345);app.setLocation(500, 100);app.setResizable(false);Container c = app.getContentPane();c.setLayout(new FlowLayout();JLabel Label = n
10、ew 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; i 4; i+)c.add(ti);c.add(b0);c.add(b1);for (int j = 4; j 0)tryre
11、sultset=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=Integer.parseInt(房间号
12、.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.executeUpdate(str); stat
13、ement.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.printStackTrace(
14、); 房间号.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,警告,JOptionPane.WARNIN
15、G_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.util.*;import java
16、.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(); 房间类型.add(普通单人间
17、); 房间类型.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);box0.add(客房使用情况);B
18、ox 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.createHorizontalBo
19、x();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(房间使用情况),BorderLayou
20、t.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();public void ac
21、tionPerformed(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.Status from RoomsI
22、nfo,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); catch(Excepti
23、on e1) e1.printStackTrace(); 4. 客户信息查询页面的设计该页面主要是实现客户信息查询功能。界面如图5所示。图5 客户信息查询页面现在给出客户信息查询页面主要代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;import java.sql.*;public class CustomerInformation extends JPanel implements ActionListenerJTextField 姓名;
24、JTextArea 查询结果;JButton 查询,查询所有;Statement statement=null;JLabel 客户信息查询;public CustomerInformation(Statement statement)this.statement=statement;姓名=new JTextField(10);查询=new JButton(查询);查询所有=new JButton(查询所有);姓名.addActionListener(this);查询.addActionListener(this);查询所有.addActionListener(this);查询结果=new JT
25、extArea(8,10);查询结果.setEditable(false);查询结果.setFont(new Font(TimesRoman,Font.BOLD,15);查询结果.setForeground(Color.blue);Box box0=Box.createHorizontalBox();客户信息查询=new JLabel(-客户信息查询-,JLabel.CENTER);客户信息查询.setFont(new Font(TimesRoman,Font.BOLD,25);客户信息查询.setForeground(Color.red);box0.add(客户信息查询);Box box1=
26、Box.createHorizontalBox();box1.add(new JLabel(输入要查询的姓名:,JLabel.CENTER);box1.add(姓名);box1.add(查询);Box box2=Box.createHorizontalBox();box2.add(new JLabel(查询结果:,JLabel.CENTER);box2.add(new JScrollPane(查询结果),BorderLayout.CENTER);Box box3=Box.createHorizontalBox();box3.add(查询所有);Box boxH=Box.createVertic
27、alBox();boxH.add(box0);boxH.add(box1);boxH.add(box2);boxH.add(box3);boxH.add(Box.createVerticalGlue();JPanel pCenter=new JPanel();pCenter.add(boxH);setLayout(new BorderLayout();add(pCenter,BorderLayout.CENTER);validate();public void actionPerformed(ActionEvent e)ResultSet resultset=null;boolean boo=
28、false;String CName=,CIdentityId=,CPhone=,CRoom,BeginTime,Remarks;String str=,chk;if(e.getSource()=查询) CName=姓名.getText().toString();if(!CName.equals()try chk=use 宾馆客户数据库;select * from CustomersInfo,RoomOperation where CustomersInfo.CIdentityId=RoomOperation.CIdentityId and CName=+CName+;resultset=st
29、atement.executeQuery(chk); resultset.next(); CIdentityId=resultset.getString(CIdentityId); CPhone=resultset.getString(CPhone); CRoom=resultset.getString(RoomId); BeginTime=resultset.getString(BeginTime); Remarks=resultset.getString(Remarks); str=客房号:+CRoom+n身份证号码:+CIdentityId+n客户姓名:+CName+n电话:+CPhone+n订房时间:+BeginTime+n备注:+Remarks+n; 查询结果.setText(str); catch(Exception e1) String warning=该客房信息不存在!; 查询结果.setText(warning);JOptionPane.showMessageDialog(this,warning,警告,JOptionPane.WARNING_MESSAGE); else Stri