资源描述
目录
第一章 前言 2
第二章 需求分析 3
2.1可行性分析 3
2.1.1技术可行性 3
2.1.2操作可行性 3
2.1.3经济可行性 3
2.2环境分析 3
2.2.1系统核心顾客 3
2.2.2 系统目的 3
2.2.3 系统组织构造 4
2.2.4系统流程 4
2.3 问题和约束 5
2.3.1定义问题 5
2.3.2 定义约束 5
2.4系统目的 6
2.5功能模块与接口 6
第三章 概念构造设计 7
3.1信息源和顾客 7
3.2信息需求 7
3.3系统陈氏E-R模型 8
3.3.1 系统整体E-R图 8
3.3.2 各主题模块陈氏E-R图 8
第四章 逻辑构造设计 10
4.1管理员表及表内信息 10
4.2预订信息表 10
4.3入住信息表 11
4.4房间信息表及表内信息 11
第五章 数据库物理设计 12
5.1数据库需要空间估算 12
5.2数据库表对象需要空间估算 12
5.2.1房间信息 表一 12
5.2.2预定信息 表二 12
5.2.3入住信息 表三 12
5.2.4账单 表四 12
第六章 详细设计阶段—房屋系统 13
6.1.添加房屋 13
} 16
6.2修改房屋信息 16
6.3查询信息 19
6.4删除房屋信息 21
第七章 测试 25
7.1增长房屋 25
7.2查询房间 26
7.3修改房屋信息 27
7.4删除房间 28
总结 30
附 录 31
第一章 前言
随着市场经济和旅游业不断发展,酒店行业日趋发达。老式酒店管理往往令管理者花大量时间来解决琐碎事物,例如错误查询、啰嗦登记和结账手续、费用计算错误、空余客房资料不能及时提供等。从而影响出租率,使得管理人员不得不集中精力规划管理运营方略和进行决策。以上问题可通过电脑系统辅助解决,酒店管理电脑化,不但是体现酒店当代化形象一种重要标志,并且对于提高员工工作效率,加速资金周转、减少各项成本及改进服务质量均有十分积极作用。
为此,国家建设部已于近来做出明确规定:凡星级酒店在项目审批时,其设计方案必要涉及电脑管理系统,否则不予立项。可见,酒店管理电脑化势在必行。本酒店管理系统将先进电脑技术与当代酒店服务管理完美地结合起来,实现了全新概念服务和管理方式。
本系统属于大型酒店管理和民用住宅设计项目中一某些,由NEC公司由日本移植到中华人民共和国并实现了汉化。本系统配合视频点播系统可以对酒店进行全方位管理,重要长处如下:
1.电脑收银,迅速精确,减少宾客等待时间,并可杜绝收银过程中舞弊现象。
2.高效客房管理:能有效提高房率,增长营业收入。
3.提高决策根据:管理者可以随时理解经营状况,以制定相应经营方针。
4.减轻员工工作承担:从而使员工把更多精力放在提高为宾客服务质量上。
5.简朴、以便地保存和查询历史资料。
6.树立良好酒店形象。
咱们设计酒店管理系统后台数据库采用SQL Sever ,以保证数据安全、高效和稳定;前台采用Microsoft公司JAVA作为重要开发工具,它可以与SQL Sever 数据库无缝衔接。在需求分析及总体设计后,将酒店管理系统分为:登陆模块、客房预订模块、客户接待模块、房屋管理模块、收银模块等几某些。
整个设计过程中小构成员分工:
小构成员
成员分工
学号
王郭鑫
客户接待系统
2
程晨
客户预订系统
2
刘鸣晓
退房系统
1
李雪
登录、注册系统
2
张嘉雯
房屋管理系统,界面优化
2
第二章 需求分析
2.1可行性分析
2.1.1技术可行性
酒店管理系统是采用Java语言编写,具备Java“一次编写,处处运营”长处,因此此系统在不同操作系统上都可以运营,具备很强移植性、健全性和安全性。并且酒店管理系统规定规定应具备功能完备、易于使用、易于维护等特点,而对于后者则规定能建立数据一致性和完整性强、数据安全性好库。基于以上规定,本系统采用MyEclipse7.0作为开发工具,使得代码编写过程大大简化。而数据库则是采用当前较为流行Sql Server ,Java对Sql Server 具备较好支持并且在经历了近年发展Sql Server 较好口碑。此系统在技术上是可行。
2.1.2操作可行性
酒店管理系统具备和谐顾客界面,使用以便,易于维护,操作简朴易于被顾客接受,顾客只需纯熟操作计算机,和对此系统使用做简朴理解即可以便使用,并且使用此系统可以大大减少管理人员承担。因而从使用操作方面看,此系统开发是可行。
2.1.3经济可行性
本酒店管理系统运营硬件环境只需一台便宜电脑既可,软件环境则是安装windows XP系统,MyEclipse7.0,Sql Server 既可。对于普通中小型酒店来说都是很小成本支出。
2.2环境分析
2.2.1系统核心顾客
经分析,酒店管理系统核心为房间预订,房间信息修改,收银系统。
2.2.2 系统目的
通过度析,系统需要满足如下功能:
(1)依照不同账号登录界面,可注册账号
(2)生成订单
(3)对于已经生成订单进行查询,修改,删除
(4)将订单信息转为入住。对于入住信息科进行查询,修改,删除
(5)对于房间信息进行增长,查询,修改,删除
(6)退房时,账单生成,涉及房间价格以及网费
(7)退房,计算费用
(8)记录总收益
2.2.3 系统组织构造
退出
添加订房
记录
酒店管理系统
修改客户信息
查询客户信息
添加
房间信息
修改房间信息
删除房间信息
查看所有房间信息
登陆
预订
接待
房务
管理
收银
预定转接待
查询订房
删除订房
修改订房
客户入住
网络管理
结帐
退房
图2.2.3
2.2.4系统流程
系统流程图
图2.2.4
2.3 问题和约束
该系统在真实生活需要更多信息,例如对于登记者信息查询,与公安系统联网等等。咱们所设计只是一种小型酒店重要核心某些。
2.3.1定义问题
(1)酒店管理不是仅仅对于房价信息查询,要以便管理者真正使用
(2)对于已经预定房价信息要可以以便快捷查找
(3)酒店管理中要考虑到除房费意外也许产生费用
2.3.2 定义约束
期限:
系统要在两周内完毕
软件和硬件:
该系统必要具备后台数据库,以保证数据安全、高效和稳定和作为重要开发工具该系统前台。
必要运营在既有操作系统之上。
系统额外拓展:
要有良好人机交流界面。
2.4系统目的
(1)对于大量房间信息可以统一规划管理
(2)对于订单增长,修改,重置简朴可行
(3)对于大量订单,账单统一规划管理
数据流图:
图2.4
2.5功能模块与接口
表1:登录模块
模块
模块接口
功能
登录
Info_Manage
登录系统
注册
Setzhuce
注册顾客
主界面
zhujiemian
进入系统主界面
表2:预定模块
模块
模块接口
功能
添加
Adddingfang
添加预订信息
删除
Deletedingfang
删预订信息
修改
Getdingfang
修改预订信息
查询
setren
按客户姓名查询信息
Setdingfang
查询所有预订信息
表3:接待模块
模块
模块接口
功能
录入信息
AddGrade
查询已预订信息,将其入住
修改信息
Getruzhu
修改入住客户信息
查询信息
Setruzhu
查询入住客户信息
删除信息
Deleteruzhu
删除入住客户信息
表4:房屋管理模块
模块
模块接口
功能
增长房屋
Addroom
增长房屋信息
删除房屋
Deleteroom
删除已有房屋
修改房屋
Getroom
修改房屋信息
查询房屋
setroom
按房间号查询房屋信息
表5:收银模块
模块
模块接口
功能
生成账单
wwww
退房,生成账单,记录收益
第三章 概念构造设计
3.1信息源和顾客
信息源:房间信息表、预订信息表、入住信息表、账单信息表
顾客:酒店系统操作员
3.2信息需求
1 设计系统操作员账号、密码
2 输出各种表
3.3系统陈氏E-R模型
3.3.1 系统整体E-R图
图3.3.1
3.3.2 各主题模块陈氏E-R图
房间信息:
预订信息:
登录信息:
第四章 逻辑构造设计
4.1管理员表及表内信息
4.2预订信息表
4.3入住信息表
4.4房间信息表及表内信息
第五章 数据库物理设计
5.1数据库需要空间估算
项 目
磁盘空间/KB
数据库内创立表固定空间(库内需要空间)
1229
4个表*4KB/个(外存预留空间)
16
数据库使用总空间
1245
5.2数据库表对象需要空间估算
5.2.1房间信息 表一
名称
数据类型
字段大小
可否为空
房间编号
char
10
no
规格
char
10
yes
状态
int
4
yes
价格
money
8
yes
与否有网
char
10
yes
5.2.2预定信息 表二
名称
数据类型
字段大小
可否为空
姓名
char
10
no
证件号
char
10
no
电话
char
10
yes
规格
char
10
yes
房间编码
char
10
yes
入住时间
datetime
8
yes
5.2.3入住信息 表三
名称
数据类型
字段大小
可否为空
姓名
char
10
no
证件号
char
10
no
电话
char
10
yes
规格
char
10
yes
房间编码
char
10
yes
入住时间
datetime
8
yes
与否有网
char
10
yes
5.2.4账单 表四
名称
数据类型
字段大小
可否为空
总价
Int
4
yes
第六章 详细设计阶段—房屋系统
6.1.添加房屋
依照规定添加房屋。输入新增房间编号,如果房间已存在,则提示“该号已存在”;如果房间不存在,则设定房间规格、价格、与否有网。有网状态为1,无网为0。点击添加,房屋信息保存增长成功;点击重置,一切为空,重新添加;点击退出,返回功能页面。
class Addroom extends JFrame
implements ActionListener
{
JLabel JL =new JLabel("添 加 房 屋",JLabel.CENTER);
JLabel JLNumber=new JLabel("房间编号:");
JTextField JTNumber=new JTextField();
JLabel JL1 =new JLabel("规格:");
JTextField JT1 =new JTextField();
JLabel JL2 =new JLabel("价格:");
JTextField JT2 =new JTextField();
JLabel JL3 =new JLabel("与否有网:");
JTextField JT3 =new JTextField();
JButton JBAdd =new JButton("添加");
JButton JBNext =new JButton("重置");
JButton JBExit =new JButton("退出");
String sql="";
public Addroom()
{
setSize(550,700);
setLocation(200,50);
String path = "d:\\addroom.jpg";
ImageIcon background = new ImageIcon(path);
JLabel label = new JLabel(background);
label.setBounds(0,0,this.getWidth(),this.getHeight());
JPanel imagePanel = (JPanel) this.getContentPane();
imagePanel.setOpaque(false);
this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("添加房屋信息");
this.setLayout(null);
JL.setFont(new Font("TimesRoman",Font.BOLD,24));
JL.setForeground(Color.red);
JL.setFont(new java.awt.Font("宋体",Font.PLAIN,19));
JL.setBounds(100,30,200,40);
this.add(JL);
JLNumber.setBounds(100,100,100,20);
this.add(JLNumber);
JTNumber.setBounds(200,100,80,20);
this.add(JTNumber);
JL1.setBounds(100,140,60,20);
this.add(JL1);
JT1.setBounds(200,140,80,20);
this.add(JT1);
JL2.setBounds(100,180,60,20);
this.add(JL2);
JT2.setBounds(200,180,80,20);
this.add(JT2);
JL3.setBounds(100,220,60,20);
this.add(JL3);
JT3.setBounds(200,220,80,20);
this.add(JT3);
JBAdd.setBounds(80,320,90,20);
this.add(JBAdd);
JBAdd.addActionListener(this);
JBNext.setBounds(190,320,90,20);
this.add(JBNext);
JBNext.addActionListener(this);
JBExit.setBounds(300,320,90,20);
this.add(JBExit);
JBExit.addActionListener(this);
this.setBounds(10,10,500,400);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==JBAdd)
{
String snumber=JTNumber.getText();
String sguige=JT1.getText();
String sjiage=JT2.getText();
String swang=JT3.getText();
sql = "select * from room where 房间编号='" + snumber + "'";
System.out.println(sql);
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection cot=DriverManager.getConnection("jdbc:odbc:jiudian","sa","sa");
Statement stm=cot.createStatement();
ResultSet rs=stm.executeQuery(sql);
if(rs.next())
JOptionPane.showMessageDialog(null,"该号已经存在!");
else
{
sql="insert into room values('"+snumber+"','"+sguige+"','0','"+sjiage+"','"+swang+"')";
System.out.println(sql);
int i=stm.executeUpdate(sql);
if(i>0)
JOptionPane.showMessageDialog(null,"添加成功!");
else
JOptionPane.showMessageDialog(null,"添加失败!");
}
}catch(Exception ee)
{
}
}
if(e.getSource()==JBNext)
{
JTNumber.setText(null);
JT1.setText(null);
JT2.setText(null);
JT3.setText(null);
}
if(e.getSource()==JBExit)
{
setVisible(false);
new zhujiemian();
}
}
public static void main(String args[])
{
new Addroom();
}
}
6.2修改房屋信息
输入要修改房间编号,如果房间不存在,则提示“此房间不存在”;如果房间存在有记录,则可任意修改房间规格、价格、与否有网。有网状态为1,无网为0。点击修改,房屋信息保存修改成功;点击重置,一切为空,重新添加;点击退出,返回功能页面。
class Getroom extends JFrame
implements ActionListener
{
JLabel JL =new JLabel("修 改 房 屋 信 息",JLabel.CENTER);
JLabel JLNumber=new JLabel("房间编号:");
JTextField JTNumber=new JTextField();
JLabel JL1 =new JLabel("规格:");
JTextField JT1 =new JTextField();
JLabel JL2 =new JLabel("价格:");
JTextField JT2 =new JTextField();
JLabel JL3 =new JLabel("与否有网:");
JTextField JT3 =new JTextField();
JButton JBAdd =new JButton("修改");
JButton JBNext =new JButton("重置");
JButton JBExit =new JButton("退出");
String sql="";
public Getroom()
{
setSize(550,600);
setLocation(200,50);
String path = "d:\\getroom.jpg";
ImageIcon background = new ImageIcon(path);
JLabel label = new JLabel(background);
label.setBounds(0,0,this.getWidth(),this.getHeight());
JPanel imagePanel = (JPanel) this.getContentPane();
imagePanel.setOpaque(false);
this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("修改房屋信息");
this.setLayout(null);
JL.setFont(new Font("TimesRoman",Font.BOLD,24));
JL.setForeground(Color.red);
JL.setFont(new java.awt.Font("宋体",Font.PLAIN,19));
JL.setBounds(100,30,200,40);
this.add(JL);
JLNumber.setBounds(100,100,100,20);
this.add(JLNumber);
JTNumber.setBounds(200,100,80,20);
this.add(JTNumber);
JL1.setBounds(100,140,60,20);
this.add(JL1);
JT1.setBounds(200,140,80,20);
this.add(JT1);
JL2.setBounds(100,180,60,20);
this.add(JL2);
JT2.setBounds(200,180,80,20);
this.add(JT2);
JL3.setBounds(100,220,60,20);
this.add(JL3);
JT3.setBounds(200,220,80,20);
this.add(JT3);
JBAdd.setBounds(80,360,90,20);
this.add(JBAdd);
JBAdd.addActionListener(this);
JBNext.setBounds(190,360,90,20);
this.add(JBNext);
JBNext.addActionListener(this);
JBExit.setBounds(300,360,90,20);
this.add(JBExit);
JBExit.addActionListener(this);
this.setBounds(10,10,550,450);
this.setVisible(true);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==JBAdd )
{
String snumber=JTNumber.getText();
String sguige=JT1.getText();
String sjiage=JT2.getText();
String swang=JT3.getText();
sql="select * from room where 房间编号='"+snumber+"'";
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection cot=DriverManager.getConnection("jdbc:odbc:jiudian","sa","sa");
Statement stm=cot.createStatement();
ResultSet rs=stm.executeQuery(sql);
if(rs.next())
{
sql="update room set 房间编号='"+snumber+"',规格='"+sguige+"',价格='"+sjiage+"',与否有网='"+swang+"'where 房间编号='"+snumber+"'";
int n=stm.executeUpdate(sql);
if(n>0)
JOptionPane.showMessageDialog(null,"修改成功!");
else
JOptionPane.showMessageDialog(null,"修改失败!");
}
else
{
JOptionPane.showMessageDialog(null,"此房间不存在!");
}
} catch(Exception er)
{
}
}
if(e.getSource()==JBNext)
{
JTNumber.setText(null);
JT1.setText(null);
JT2.setText(null);
JT3.setText(null);
}
if(e.getSource()==JBExit)
{
setVisible(false);
new zhujiemian();
}
}
public static void main(String args[])
{
new Getroom();
}
}
6.3查询信息
依照规定查询房屋。输入房间号,点击查询,在下方表格浮现房间相应房间规格、房间状态、价格、与否有网。有网状态为1,无网为0。输入新居间号,可以查询新信息。点击退出,返回功能页面。
输入房间号,查询房屋状态。
public class setroom extends JFrame
implements ActionListener{
private JTable table;
JButton JB1 =new JButton("返回");
private JScrollPane scpDemo;
private JTableHeader jth;
private JTable tabDemo;
private JButton btnShow;
private JButton btnShow1;
JLabel JLRoom =new JLabel("房间号:");
JTextField JTRoom =new JTextField();
// 构造办法
public setroom(){
// 窗体有关属性定义
JB1.setBounds(400,20,60,30);
this.add(JB1);
JB1.addActionListener(this);
this.setSize(620,400);
this.setLayout(null);
this.setLocation(100,50);
// 创立组件
this.scpDemo = new JScrollPane();
this.scpDemo.setBounds(10,50,500,300);
//final JTextArea textArea=new JTextArea(,300);
//JScrollPane scrollPane=new JScrollPane(textArea);
this.btnShow = new JButton("查询");
this.btnShow.setBounds(300,20,60,30);
// 给按钮注册监听
JLRoom.setBounds(10,10,60,60);
this.add(JLRoom);
JTRoom.setBounds(60,30,100,20);
this.add(JTRoom);
this.btnShow.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
btnShow_ActionPerformed(ae);
}
});
// 将组件加入到窗体中
add(this.scpDemo);
add(this.btnShow);
// 显示窗体
this.setVisible(true);
}
public void btnShow_ActionPerformed(ActionEvent ae){
String sroom=JTRoom.getText();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc:jiudian","sa","sa");
String sql = "select * from room where 房间编号='" +sroom + "'";
System.out.print(sql);
PreparedStatement pstm = conn.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
// 计算有多少条记录
int count = 0;
while(rs.next()){
count++;
}
rs = pstm.executeQuery();
// 将查询获得记录数据,转换成适合生成JTable数据形式
Object[][] info = new Object[count][5];
count = 0;
while(rs.next()){
info[count][0] = rs.getString("房间编号");
info[count][1] = rs.getString("规格");
info[count][2] = rs.getString("状态");
info[count][3] = rs.getString("价格");
info[count][4] = rs.getString("与否有网");
count++;
}
// 定义表头
String[] title = {"房间编号","房间规格","房间状态","价格","与否有网"};
// 创立JTable
this.tabDemo = new JTable(info,title);
// 显示表头
this.jth = this.tabDemo.getTableHeader();
// 将JTable加入到带滚动条面板中
this.scpDemo.getViewport().add(tabDemo);
}catch(ClassNotFoundException cnfe){
JOptionPane.showMessageDialog(null,"数据源错误","错误",JOptionPane.ERROR_MESSAGE);
}catch(SQLException sqle){
JOptionPane.showMessageDialog(null,"数据操作错误","错误",JOptionPane.ERROR_MESSAGE);
}
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==JB1)
{
setVisible(false);
new zhujiemian();
}
}
public static void main(String[] args){
new setroom();
}
}
6.4删除房屋信息
输入房间号,删除房屋信息。此时再查询此房间,信息显示为空。
class Deleteroom extends JFrame
implements ActionListener
{
JLabel JL =new JLabel("删除房间",JLabel.CENTER);
JLabel JLNumber=new JLabel("房间号:");
JTextField JTNumber=new JTextField();
JButton JBGet =new JButton("删除");
JButton JBNext =new JButton("重置");
JButton JBExit =new JButton("退出");
展开阅读全文