客房信息管理系统概述.docx
- 文档编号:26728358
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:48
- 大小:3.43MB
客房信息管理系统概述.docx
《客房信息管理系统概述.docx》由会员分享,可在线阅读,更多相关《客房信息管理系统概述.docx(48页珍藏版)》请在冰豆网上搜索。
客房信息管理系统概述
数据库课程实训报告
题目:
客房信息经管系统
客房信息经管系统设计
1课题内容和要求
1.1课题描述
随着市场经济的发展,各行各业为加强信息经管,提高经济效益,都迫切地将现代化信息处理技术应用到经济经管中。
客房经管系统是酒店、宾馆经管中必不可少的一部分,它不仅对经管者在运营过程中起到至关重要的作用,而且也能为用户提供充分的信息和快捷的查询手段。
但是传统的人工操作经管存在着许多缺点,如:
效率低、保密性差,而且保存时间一长,在查找、更新、维护文件和数据时都比较困难。
这时就引入了客房信息经管系统,优点如下:
检索迅速、查找方便、保密性高、成本低等。
酒店在正常运营中需要对顾客信息、客房资源、结算情况进行经管,利用客房信息经管系统能更好地了解信息的变更,提高了经管效率。
1.2课题要求
1)可以对客房基本信息进行增加、删除、修改
2)客房分为三种类型:
三人房、双人房、单人房,每种类型房间价位不同
3)可以实现客户订房、退房、续房功能
4)可以登记、查询客户基本信息
5)可以查询房间状态信息
6)可以实现住宿计费
2需求分析
2.1功能需求分析
(1)作为酒店客房信息经管系统,应该具有增加、删除、修改这几个基本功能。
所需录入的表有客户基本信息表、房间资源信息表、密码表。
(2)设计登陆后系统的主窗口,要求能够显示酒店经管信息。
数据的增加、删除、修改、查询能直接放在桌面上供用户选择,而且要布局合理、美观。
应当减少用户的键盘输入,减少用户的工作量,提高效率。
2.2数据需求分析
图2-1
表2-1数据项说明表
数据项名称
含义说明
类型
长度
客人编号
惟一标识一位客人
bigint
10
房间号
惟一标识一间客房
int
10
入住时间
标识入住时间
datetime
10
离开时间
标识离店时间
datetime
10
单价
标识一间客房价格
money
10
金额
标识总金额
money
10
房间等级
标识房间类型
smallint
2
-
表2-2数据流说明表
数据流名称
含义说明
来源
去处
组成
登陆
经管员进入系统界面
系统设置界面
经管员端
编号+密码
查询已住房
查询房间资料
客人信息表
统计界面
客人信息表+客房编号表
查询空房间
查询空房间
客房编号表
统计界面
客房编号表
结算
计算总金额
系统设置界面
经管员端
系统设置界面
登记、删除
录入、删除住房信息
经管员端
系统设置界面
系统数据库
统计
统计住房信息
系统数据库
统计界面
系统数据库
表2-3数据存储说明表
数据存储名称
含义说明
组成结构
客户信息表
存放客人相关信息
个人信息+入住时间+金额
房间信息表
存放客房的信息与状态
客房信息+客房等级
经管员信息表
存放经管员验证信息
编号+密码
3系统设计
3.1功能模块设计
图3-1
3.2数据库概念设计
图3-2
图3-3
图3-4
图3-4
图3-5
N
N
1
1
图3-6
3.3数据库逻辑设计
客户信息(客房编号,姓名,性别,年龄,证件号码,证件名称);
房间信息(房间号,房间等级,单价,最大人数,金额,离开时间,入住时间);
经管员信息(编号,密码);
3.4数据库物理设计
1.客户信息
createtable客户信息(房间号varchar(5)notnullprimarykey,
姓名varchar(8)notnull,
性别char
(2)notnull,
年龄char(5)notnull,
证件号码varchar(20)notnull,
证件名称varchar(10)notnull)。
图3-6
2.房间信息
createtable房间信息(房间号varchar(10)notnullprimarykey,
房间等级varchar(10)notnull,
单价char(10)notnull,
最大人数char(10)notnull,
金额char(10)notnull,
入住时间char(10)notnull,
离开时间char(10)notnull)。
图3-7
3.经管员信息
createtable经管员信息(编号varchar(10)notnullprimarykey,
密码char(10)notnull)。
图3-8
3.5数据库表间联系
图3-9数据库表间联系截图
4系统实现
4.1登陆模块实现
Login类:
登陆界面(用户名+密码),如果用户名和密码正确,则显示成功登陆
本窗体连接到数据库中的经管员表通过定义ResultSet来调用表中的数据,相关代码:
ResultSetrs。
rs=stat.executeQuery("select*from经管人员where编号="+"'"+tUser.getText()+"and密码="+"'"+String.valueOf(password.getPassword())+"'")。
判断成功后实现主窗体中子菜单的setEnable()方法。
4.2登记模块实现
Add类:
方便经管人员添加新的客人信息,包括编号、姓名、性别、年龄、家庭地址、来自、客房名、身份证号码、工作单位、预入住时间、入住时间、离开时间、押金
本窗体主要用到T-SQL语句中的insertinto…..VALUES语句,相关代码:
a1="'"+tName.getText().trim()+"'"。
a2="'"+tSex.getText().trim()+"'"。
a3="'"+tAge.getText().trim()+"'"。
a4="'"+tIdentication.getText().trim()+"'"。
a5="'"+tAddress.getText().trim()+"'"。
a6="'"+tWorkPlace.getText().trim()+"'"。
a7="'"+tFrom.getText().trim()+"'"。
a8="'"+tRoomNo.getText().trim()+"'"。
a9="'"+tWillIn.getText().trim()+"'"。
a10="'"+tIn.getText().trim()+"'"。
a11="'"+tLeave.getText().trim()+"'"。
inti=Integer.valueOf(tCash.getText()).intValue()。
Stringb="insertinto客人信息(客房编号,姓名,性别,年龄,身份证号码,家庭住址,工作单位,来自地的地名,预定入住时间,入住时间,离店时间,押金)VALUES("+a8+","+a1+","+a2+","+a3+","+a4+","+a5+","+a6+","+a7+","+a9+","+a10+","+a11+","+i+")"。
stat=conn.prepareStatement(b)。
r=stat.executeUpdate();
4.3查询模块实现
SearchForName类:
可以需要查询客人的信息
本窗体主要用到JTable和连接客人信息表,相关代码:
stat=conn.createStatement()。
rs=stat.executeQuery("select姓名,性别,工作单位,客房编号,入住时间from客人信息where姓名="+"'"+tName.getText()+"'")。
rs=stat.executeQuery("select姓名,性别,工作单位,客房编号,入住时间from客人信息where客房编号="+"'"+tName.getText()+"'")。
5代码调试与功能测试
5.1测试技术方案
系统测试是一个系统必须经历的过程,一个系统想要能满足用户需求,就必须经过一套科学的、完善的测试。
对于本系统,我做了以下几方面的测试:
(1)数据合法性测试。
这是对输入的数据是否合法的一个测试。
(2)数据一致性测试。
在这个测试的过程中,我对数据进行了添加、删除、修改的操作,观察界面上显示的数据是否与操作的内容相一致。
(3)功能模块测试。
这个测试是对各个模块是否能正常运行的一个测试。
5.2测试结果
图5-1
图5-2
图5-3
图5-4
图5-5
图5-6
图5-7
6收获与体会
时间过的好快,两个星期的实训终于告一段落。
这学期做的是数据库实验,老师很负责任,第一节课就把大家要做的任务分配好,并且每一步应该做什么都很详细地讲解。
但是尽管这样,当我自己开始做报告的时候,看到密密麻麻的步骤,我还是有点慌张,怕自己完成不好。
问身边的同学,大家都有自己的任务,不能给予帮助,所以还是得靠自己。
于是慢慢静下心来,按照老师给的目录一步步做,不理解的,多读几遍要求,总能搞懂。
在键盘上一个字一个字地打出来的感觉很踏实,因为是自己的成果。
在做SQL的时候,问题倒不是很大,书上都有概念知识,不会的步骤看书上就能很快的解决。
而且我发现平时都在学理论,但是到实践的时候很多东西还是要自己摸索的,就像我上面要在SQL中建表,程序中已经标注要显示主键,但是执行后表里一直都没有出现那把小钥匙,我操作了很久,最后才发现,只要在表上直接设置就行,绕了好大一个弯,但是心里真的很开心。
在JAVA部分就有点头疼了,对我来说这就是一个庞大的程序,不知道从何处下手,所以我想到了合作,找到一个和我做同样工程的同学,一起探讨、磨合,程序最后也成型了,喜悦可想而知!
这次实验后,我深刻地意识到实践的重要性,平时老师说的再多,书看的再多,没动手就什么都不是。
在实践过程中会遇到困难想放弃,但是每次都坚持下来了,现在看看之前的两周其实都不算什么。
只要认真踏实地一步步完成,不懂地自己摸索,有错误不要紧,只要不放弃,总会有解决的那天。
还有让我收获的就是——合作。
当然这是建立在互惠互利的基础上的。
一个人蒙头做,很容易走进死胡同,思维也变得狭隘,而且还会有挫败感。
可是合作了就不一样了,大家都把自己的观点说出来,很容易就会发现自己之前的不足在哪里了,然后加以改进。
合作的好处还有就是思考问题会更全面,可以说这是一件效率很高的事情,我也乐在其中!
参考文献
[1]钱雪忠,王燕玲,林挺.数据库原理及技术[M].北京:
清华大学出版社,2011.
[2]钱雪忠,罗海驰,陈国俊.数据库原理及技术课程设计[M].北京:
清华大学出版社,2014.
附 录
附录1源程序部分清单
附录1源程序部分清单
附录1.1登录代码
packagecom.plat.frame。
importjava.awt.event.ActionEvent。
importjava.awt.event.ActionListener。
importjava.sql.Date。
importjava.text.ParseException。
importjava.text.SimpleDateFormat。
importjavax.swing.JButton。
importjavax.swing.JDialog。
importjavax.swing.JLabel。
importjavax.swing.JOptionPane。
importjavax.swing.JTextField。
importcom.plat.db.UtilHepler。
importcom.plat.db.today。
importcom.plat.model.checkInfo。
importcom.plat.model.customerInfo。
importcom.plat.model.roomBase。
importcom.plat.service.checkService。
importcom.plat.service.customerService。
importcom.plat.service.roomBaseService。
importcom.plat.view.AppMainFrame。
importcom.plat.view.swing.MainPanel。
publicclassAddCheckDialogextendsJDialog{
privatestaticAddCheckDialogeditdialog。
privateJTextFieldj1,j2,j3,j4,j5,j6,j7,j8。
privateJLabeljr1,jr2。
privateJButtonensure,cancel。
privatebooleanisedit。
publicstaticAddCheckDialoginstance(Stringtext){
if(editdialog!
=null)
editdialog.dispose()。
editdialog=newAddCheckDialog(text)。
returneditdialog。
}
publicAddCheckDialog(Stringtext){
super(AppMainFrame.instance(),text+"旅客",true)。
setLayout(null)。
setSize(420,400)。
setLocationRelativeTo(null)。
editdialog=this。
j1=newJTextField()。
j2=newJTextField()。
j3=newJTextField()。
j4=newJTextField()。
j5=newJTextField()。
j6=newJTextField()。
j7=newJTextField()。
j8=newJTextField()。
//JLabelj11=newJLabel("入住编号:
")。
JLabelj21=newJLabel("证件号:
")。
JLabelj31=newJLabel("客房号:
")。
JLabelj41=newJLabel("入住时间:
")。
JLabelj51=newJLabel("入住天数:
")。
JLabelj61=newJLabel("押金")。
jr1=newJLabel("续房天数:
")。
jr2=newJLabel("续房时间:
")。
JLabeljlbto=newJLabel("—")。
ensure=newJButton("确定")。
cancel=newJButton("取消")。
//j11.setBounds(60,30,85,30)。
j21.setBounds(60,60,85,30)。
j31.setBounds(60,90,85,30)。
j41.setBounds(60,120,85,30)。
j51.setBounds(60,150,85,30)。
j61.setBounds(60,180,85,30)。
jr1.setBounds(60,210,85,30)。
jr2.setBounds(60,240,85,30)。
//j1.setBounds(130,30,190,30)。
j2.setBounds(130,60,190,30)。
j3.setBounds(130,90,190,30)。
j4.setBounds(130,120,190,30)。
j5.setBounds(130,150,190,30)。
j6.setBounds(130,180,190,30)。
j7.setBounds(130,210,190,30)。
j8.setBounds(130,240,190,30)。
jlbto.setBounds(210,86,30,40)。
ensure.setBounds(115,260,70,40)。
cancel.setBounds(210,260,70,40)。
//add(j1)。
add(j2)。
add(j3)。
add(j4)。
add(j5)。
add(j6)。
add(j7)。
add(j8)。
add(jr1)。
add(jr2)。
add(j21)。
add(j31)。
add(j41)。
add(j51)。
add(j61)。
add(ensure)。
add(cancel)。
if(text=="入住登记"){
this.isedit=false。
}else{
this.isedit=true。
}
cancel.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
AddCheckDialog.instance("").dispose()。
}
})。
ensure.addActionListener(newActionListener(){
@Override
publicvoidactionPerformed(ActionEvente){
if(isedit==true){
//编辑
StringjString=j7.getText()。
if(!
UtilHepler.isNumeric(jString)){
JOptionPane.showMessageDialog(null,"天数必须是一个数字!
")。
return。
}
if(jString.equals("")){
JOptionPane.showMessageDialog(null,"天数不能为空!
")。
return。
}
//checkInfoentity=getInfo()。
//if(entity==null)
//return。
checkInfoentity=newcheckInfo()。
entity.setCheckId(Integer.parseInt(j1.getText()))。
entity.setContinuedDay(Integer.parseInt(jString))。
entity.setStatus
(1)。
//SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:
mm:
ss")。
java.util.Datedate=UtilHepler.StrToDate(j8.getText())。
entity.setContinuedTime(date)。
checkServiceservice=newcheckService()。
service.updateCont(entity)。
Callback("续房成功!
")。
}else{
checkInfoentity=getInfo()。
if(entity==null)
return。
checkServiceservice=newcheckService()。
customerServicecustomerService=newcustomerService()。
//新增时验证身份证是否存在!
customerInfor=customerService.getEntityById("customerId",entity.getCustomerId()+"")。
if(r==null){
JOptionPane.showMessageDialog(null,"该身份证不存在,请先添加旅客个人基本信息!
")。
return。
}
roomBaseServiceroomBaseService=newroomBaseService()。
roomBaseroomBase=roomBaseService.getEntityByValue("roomId",entity.getRoomId()+"")。
if(roomBase==null){
JOptionPane.showMessageDialog(null,"该房间号不存在!
你想去此此房间?
")。
return。
}
if(roomBase.getRoomStatus()==1){
JOptionPane.showMessageDialog(null,"该房间已有人住了!
")。
return。
}
service.insert(entity)。
Callback("订房间成功,你的房间号为:
"+entity.getRoomId()+"位置在:
"+roomBase.getPoisition())。
}
}
})。
}
publicvoidopen(checkInfoentity){
if(entity==null){
this.isedit=false。
j1.setVisible(false)。
jr1.setVisible(false)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 客房 信息管理 系统 概述