java酒店管理系统项目书.docx
《java酒店管理系统项目书.docx》由会员分享,可在线阅读,更多相关《java酒店管理系统项目书.docx(70页珍藏版)》请在冰豆网上搜索。
java酒店管理系统项目书
java酒店管理系统项目书
Java语言程序设计小组课程设计
个人报告书
小组题LI:
酒店管理系统
完成日期:
2012年1月4日
酒店管理系统
1、问题描述
随着信息的迅速发展,信息化管理已经引入并且应用到各行各业的管理领域中去,而一个大型的机电将管理信息化也是势在必行的,大量的客流量,同时还要存储各项业务的信息不断更换的客流信息,员工个人信息和工资发配等任务,若要时还是用人力管理不仅将会影响到盈利的同时无异于乂给每一位员丄带来了很大的工作量!
本文从开发酒店管理系统的相关技术及可行性分析入手简述了
管理系统采用C/S模式的好处及需要实现员丄信息管理、预定、简单的财务管理以及进货系统等日程管理信息等功能。
详细介绍了各个功能的实现,以及系统测试的情况。
本文主要功能包括:
从系统安全可弟性,系统功能,软件运行环境等方面对酒店管理系统进行需求分析,说明系统的合理性与可行性,较为详细的阐述了系统的运行情况。
本文最终设计并实现了一个基于C/S模式的酒店管理系统,该系统包括系统设置、日常细细管理、库存管理、预定管理、订餐管理。
测试结果表明,本文所开发的管理系统具有简单管理的功能。
酒店形态具有种种优点,但在LI前状况下,它仍存在服务业企业所共有的落后的一面,如:
不能有效地、快速地服务于每个顾客,收款结算速度慢,容易出现服务不周,不易进行服务评价等。
而且在酒店日常管理中,货物的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。
随着酒店形态的高速发展,其经营管理也变的愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。
而企业若想再激烈的市场经济中立足并胜出,就必须拥有一套完善并适应自身特点的信息化管理系统,以实现企业降低成本、及时反馈市场信息,完善服务质量、提高经济效益、分析市场需求、制定服务讣划和LI标等管理LI的。
21世纪,酒丿占的竞争也进到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。
技术的提
升和管理的升级是酒店业的竞争核心。
2、开发环境搭建
□前,市场上计算机语言和开发工具有很多,但是Eclipse的以其稳定和与平台无关的特性,从众多编程工具中脱颖而出,成为很多Java程序员的首选。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发丄具(JavaDevelopmentTools,JDT)o虽然大多数用户很乐于将Eclipse当作JavaIDE来使用,但Eclipse的LI标不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C卄、COBOL和
Eiffel等编程语言的插件已经可用,或预计•会推出。
Eclipse是一个开发源码项
U,它其实是VisualAgefor
Java的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各
自的插件,因此越来越受人们关注。
近期还有包括Oracle在内的许多大公司也纷纷加入了该项II,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。
3、系统功能:
(1)进行系统的需求分析:
系统需对用户登录进行管理。
使用各功能模块时,系统应验证用户身份的有效性,否则要求用户登录。
另外,允许用户对自己的密码进行修改。
系统应提供客房的分类管理功能,可分类制订客房面积、价格、是否配备空调等客房类型,对不同标准的客房进行有效管理。
系统可实现对客房信息的添加、删除以及修改。
在进行入住/退房管理时,系统可以根据客房当前的状态自动提示可用服务(入住/退房)。
如果客房没有客人入住,则该客房的可用服务为“入住”;否则,可用服务为“退房”。
系统的客户端在Windows平台下运行,服务器端可在Windows平台或UNIX平台下运行。
系统还需要有较好的安全性和可扩展性。
需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,规划出系统的功能模块,即定义用例。
这个步骤是对理解需求的升华,直接关系到该系统的质量。
住店部分由于考虑到人们日常生活等方面,住店的过程中可能会
发生多变的情况,同时也为了方便处理,我们对这个系统对订房、退房进行了处理,使前台工作人员更好为客人服务,我们的系统将会详细的显示出每个房间所处的状态,是预定了、还是有用户入住了、还是空闲,做出较详细的资料显示,同时在退房期间,按照一定规定计算消费金额。
应用软件是直接被用户使用的软件,因此应具有良好的用户界面。
通过用户界面,用户不必去了解许多关于计算机硬件和软件方面的知识,只需按屏幕提示便能方便地完成产品设计。
用户界面的好坏是评价一个软件运行好坏的重要标志之一,一个友好的用户界面应满足以下儿个方面的要求:
(1).界面友好:
要考虑到软件的通用。
面向大多数人,尽量采用汉字显示,以克服语言障碍。
(2).使用方便:
提供的用户界面应方便用户使用,无需对用户做过多的界面转换训练工作。
(3).记忆最少原则:
一个好的应用软件应使用户尽量少记各种操作规则、专门名词和特殊符号。
(4).灵活的提示信息:
应用软件运行时,应能给出简单易懂的提示信息,以提高用户的工作效率。
(5).软件具有较强的容错能力:
以便能有效地解决设讣者因误操作而造成的运算错误及系统的“死锁”等现象,提高软件使用的安全性和可靠感。
(6).良好的交互方式:
用户使用讣算机进行设计时,应使其感到
与计算机所进行的信息交换是十分自然的,与人们的日常工作习惯相符合。
把握好屏幕数字菜单、图标菜单、下拉式菜单、对话框等技术的正确使用,有时其至需要儿种技术交义应用,其LI的应便于设讣者操作。
(2)系统的总体设讣
住房管理模块。
此模块必须具有以下功能:
登录管理:
只有在输入正确的户名和密码才可登录进入操作界面。
房间类型的管理:
可以对房间类型进行增添、删除、修改、查询功能。
房间信息的管理:
可以对房间信息进行增添、删除、修改、查询功能。
开房功能:
记录住户信息,并把相应的房间状态改为“入住”。
退房:
退房时算出总费用(房间价格+加床价格)*天数;退房时要判断当前退房的时间,一般酒店是在中午12点退房,超过12点理论上要多算一天.可弹出提示“是否多加一天”;退房成功后把相应的房间状态改为"空闲”;更新用户消费总金额;更新用户的VIP状态。
数据操作:
可按月查看入住记录,可查看指定日期的入住记录,可搜索指定姓名住户的入住记录。
预订房功能:
提前预定房间,注意房间的状态,预定日期前还是可以山其他房客入住,预定房间到期时未入住的处理。
换房间:
可以在住户需要时办理换房间业务。
员工(服务员)
通过输入相关信息到人员管理信息系统;
软件计算交易总金额;
可使用管理员动态分配的权限进行操作。
酒店经理:
软件录入菜品、原材料、供货商、厂商;操作软件制定进货计划;
查询计划进货与入库记录;
查询账务情况;
查询库存明细记录;
根据软件发出的库存告警进行入货;基本信息登记管理;
员工(营业员)操作权限管理。
客户:
查询相关信息、房间信息、个人信息;可使用管理员动态分配的权限进行操作。
酒店住房管理系统
客房房退开数预换户间间据信类信订房息型息更管管管房间房新理理理房
房房将退按
间间房房月
结类的间、指算型添状定、的加态日更添、改期改加删为、状、除“姓删态、
入名除及修住查、住改”询修户、入改信查住、息询查记
询录
客人进店
查看桌台信息
否
是否有人入座,人
数
是
开台
是
点菜
结账
台桌自动清空
(3)系统的详细设计
主模块设计.
模块子模块功能
整体设讣总界面(登陆界对功能模块和公共辅助模主模块面)块有整体的概览和认知
公共模块设计
模块子模块功能
1.查询客房等基本信息
2.便于工作人员及时掌握
客房及客人信息
3.在此界面可以通过单1.查询模块击和双击图标来查看桌台信息,2.信息浏览模块公共辅助模块可以直接通过图标来看桌台是3.前台管理否已使用,可以选中图标单击右4.后台管理键选择相应业务,非常友好和方
便。
4.便于查看桌台信息和使
用情况
功能模块设计
用户登录用户登录
1•增添房间类型
2.修改房间类型房间类型管理模块3.删除房间类型
4.查询房间类型
1•增添房间信息
2.修改房间信息房间信息管理模块3.删除房间信息
4.查询房间信息
记录用户信息并将房间状态改为功能模块开房功能模块“入住”
1.算岀总费用
2.判断当前退房的时间
3.退房成功后把相应的房间该为退房功能模块“空闲”
4.更新用户消费总金额
5.更新用户VIP状态
1.可按月查询入住记录
2.可查看指定日期的入住记录数据操作模块3.可搜索指定姓名住户的入住记
录
4、任务模块
本人主要负责界面设计和查询部分
5、测试数据
包括正确的输入及其输岀结果,以及含有错误的输入及其输岀结果。
测试数据要能全面地测试所设讣程序的功能。
6、程序模块调用关系图。
酒店管理系统
统
用户登录模块
否
用户登录
是否有效
是
房退开数预换间据信订房息更管房间房新理房
7、代码
查询部分代码:
/**
*[模块名]:
营业查询模块
*[文件实现功能]:
组织营业查询窗口及功能
*/
packagecom.hotel,query;
importjavax.swing.*;//提供一组“轻量级”(全部是Java语言)组件,尽量让这些组件在所有平台上的工作方式都相同。
importjavax.swing,border.*;//提供围绕Swing组件绘制特殊边框的类和
接口。
importjavax.swing,table.*;//提供用于处理javax.swing.JTable的类和接口。
importjava.awt.*;//包含用于创建用户界面和绘制图形图像的所有类。
importjava.awt.event.*;//提供处理illAWT组件所激发的各类事件的接口和类。
importjava.sql.*;//提供使用JavaTM编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的APIo
importjava.util.♦;//包含collection框架、遗留的collection类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。
importcom.hotelhotelsdk.sql.*;//公共类库
importcom.hotel,hotelsdk.system.*;
importcom.hotel,hotelsdk.swing.*;import
com.hotel,mainframe.HoteIFrame;//力口载主窗口
publicclassQueryextendsJDialogActionListener,MouseListener
{//ActionListener
超级接口是EventListener,子接口是:
Action
privateJLabeltop;//呈现列表中的一个项
privateJTabbedPanetp;//—个组件,它允许用户通过单击具有给定标题和/或图标的选项卡,在一组组件之间进行切换。
〃如果为制表符指定一个组件,则JTabbedPane将不会呈现为该制表符指定的任何文本或图标。
privateJPanelpanelMain;
//====二结帐单查询
privateJTextFieldtfll,tfl2,tfl3,tfl;//是一个轻量级组件,它允许编辑单行文本
privateJButtonbtll,btl2;//创建不带有设置文本或图标的按钮。
privateJCheckBoxchkll,chkl2;//复选框的实现,复选框是一个可以被选定和取消选定的项,它将其状态显示给用户。
按照惯例,可以选定组中任意数量的复选框
privateJTabletbl;//将此对象作为其头的表,默认值为null。
privateDefaultTableModeldtml;
privateJScrollPanespl;//JScrollPane不支持重量级组件。
//=====全部宾客信息查询
privateJTextFieldtf21,tf2;//JTextField是一个轻量级组件,它允许编辑单行文本
privateJButtonbt21,bt22,bt23;
privateJTabletb2;
privateDefaultTableModeldtm2:
privateJScrollPanesp2;
//二====在店宾客消费查询
privateJTextFieldtf31,tf32,tf33,tf3;
privateJButtonbt31,bt32;
privateJRadioButtonrb31,rb32;
privateJTabletb3;
privateDefaultTableModeldtm3;
privateJScrollPanesp3;
//====二离店宾客消费查询
privateJTextFieldtf41,tf42,tf43,tf4;
privateJButtonbt41,bt42;
privateJCheckBoxchk41,chk42;//复选框的实现,复选框是一个可以被选定和取消选定的项,它将其状态显示给用户。
按照惯例,可以选定组中任意数量的复选框
privateJComboBoxcb41;
privateJTabletb4;
privateDefaultTableModeldtm4;
privateJScrollPanesp4;
/**===========================================================
*[##publicQuery(JFrameframe){}]:
构造函数
*参数:
JDialog对象表示本对话框的父窗口
*返回值:
无
*修饰符:
public
*功能:
组建营业查询模块
龙火———————————————————————————————————————————————————————————
•I••1•
======**/
publicQuery(JFrameframe){
super(frame,"营业查询",true);
top=newJLabel();//假空格
panelMain=newJPanel(newBorderLayout(0,5)):
tab();//制作系统设置项日标签面板
addListener():
//加入事件监听
panelMain.add("North",top);
panelMain.add("Center",tp);
this・setContentPane(panelMain);
this・setPreferredSize(newDimension(800,500));
this・setMinimumSize(newDimension(800,500));
this.setResizable(false);//不允许改变窗口大小
pack();
sunswing・setWindowCenter(this);//窗口屏幕居中
}
/**二===========================
======**/
*[##privatevoidaddListener(){}]:
加事件监听
*参数:
无
*返回值:
无
*修饰符:
private
*功能:
加事件监听
**===========================================================
privatevoidaddListener(){
btl1.addActionListener(this)btl2・addActionListener(this)bt21・addActionListener(this)bt22・addActionListener(this)bt23・addActionListener(this)bt31.addActionListener(this)bt32・addActionListener(this)bt41.addActionListener(this)bt42・addActionListener(this)btl1.addMouseListener(this);btl2・addMouseListener(this);bt21・addMouseListener(this);bt22・addMouseListener(this);bt23・addMouseListener(this);bt31.addMouseListener(this);bt32・addMouseListener(this);bt41・addMouseListener(this);bt42・addMouseListener(this);}
/**二二二二二二二二二二二二二二二二二二二二二二二二二
*privatevoidtab(){}
*参数:
无
*返回值:
无
*修饰符:
private
;〃加动作监听
〃加鼠标监听
**/
*功能:
制作系统设置项LI标签面板
privatevoidtab(){
JPaneljpl,jp2,jp3,jp4;
///////////////////////////////////////////////模块接口
jpl=pay();//结账单查询
jp2=allCustomer():
//全部宾客信息査询
jP3=stay();〃在店宾客消费査询
JP4=leave();〃离店宾客消费查询
//////////////////////////////////////////////////////////////////tp=newJTabbedPane();
tp.addTabC结帐单查询",newImageiconCzpic/u04.gif,z),jpl);
tp.addTabC全部宾客信息查询",newImageicon(,zpic/u02.gif^),jp2);
tp.addTabC在店宾客消费査询",newImagelcon("pic/u03.g辻"),jp3);
tp.addTabC离店宾客消费查询",newImageicon(^pic/vOd.gif/z),jp4);
}
*[##privateJPanelpay(){}]:
*参数:
无
*返回值:
JPanel
*修饰符:
private
*功能:
结帐单查询
**
**
privateJPanelpay(){
tf11=newTJTextField(13);
tf12=newTJTextField(13);
tf13=newTJTextField(13);
tfl=newJTextField("结帐状态信息");
tfl・setHorizontalAlignment(JTextField・CENTER);
tfl.setBackground(newColor(199,183,143));
tfl.setBorder(newLineBorder(newColor(87,87,47)));
tfl.setEditable(false);
btll=newTJButton("pic/find.gif","查询","查询结帐单信息”);
btl2=newTJButtonfpic/bl.gif","刷新","刷新结帐单信息〃);
chkll=newJCheckBoxC结帐时间:
“);
chkl2=newJCheckBox();
dtml=newDefaultTableModel():
tbl=newJTable(dtml):
spl=newJScrollPane(tbl);
////////////////////////填写表格
StringsqlCode="selecta.chk_no帐单号,b.r_no房间号,b.c_name宾客姓名,b.foregift已收押金,a.money实收金额,a.chk_time结算时间,a.remark备注"+"fromcheckoutasa,liveinasbwherea.delmark=0anda.in_no=b.in_no";
sunsq1.initDTM(dtml,sqlCode);
JLabellbl,lb4,lb5,lb8,lb9,lblO,lbll;
lbl=newJLabelC起始时间");
lb4=newJLabelC终止时间");
lb5=newJLabel(”“);
lb8=newJLabelC姓名/房间号/帐单号:
”);
lb9=newJLabel(”“);
lblO=newJLabel("");
lbll=newJLabelC");
JPanelpanelPay,pn,pnl,pn2,pc;
panelPay=newJPanel(newBorderLayout());pn=newJPanel(newGridLayout(2,1,0,0));
pnl=newJPanel(newFlowLayout()):
pn2=newJPanel(newFlowLayout()):
pc=newJPanel(newBorderLayout());
pnl.add(chkll);
pnl.add(lbl);
pnl.