1、 Oracle 数据库设计和实现选题名称: 酒店管理系统 姓 名: 学 号: 专 业: 班 级: 指导老师: 设计地点: 目 录一、 系统需求分析1.1系统开发目标和意义 -31.2系统要求 -3二、系统总体设计2.1系统功效需求 -42.2系统数据需求 -42.3系统功效结构图 -52.4系统部分步骤图 -5三、数据库设计3.1数据库概念模型 -73.2数据库物理模型 -83.3酒店管理系统部分数据字典 -9四、系统实现过程4.1设计过程 -114.2系统各界面设计代码 -28五、试验总结5.1试验中碰到问题 -355.2心得体会 -35一、系统需求分析1.1系统开发目标和意义 首先应该在此
2、次实践中有所收获,能够学习到相关软件功效,和进行实践设计需要知识。能够在实践中学习。 面对酒店行业高速发展和酒店行业信息化发展过程中出现多种情况,酒店客房管理系统在实施后应达成以下目标: 实现多点操作信息共享,相互之间信息传输正确、快捷、顺畅; 服务管理信息化,可随时掌握客人住宿情况; 系统界面友好美观,操作简单易行,查询灵活方便,数据存放安全。 实现客房登记入住和查询功效,查询酒店信息,客人信息,客房信息等功效。 实现Delphi和oracle连接,进行数据插入。1.2系统要求要求实现酒店职员信息管理、用户信息管理、客房信息管理、订单管理等功效,包含用户信息添加、修改、删除及查询;客房信息添
3、加、修改、删除及查询;订单查询及退房管理等。二、 系统总体设计2.1系统功效需求 经过对互联网上各大酒店管理系统认识和分析,我对酒店管理系统有了基础了解,我认为该系统最少应该含有以下部分基础功效: (1) 系统管理模块:包含登录系统,用户管理,权限管理,角色管理,和查询统计,用户管理折扣管理和开台管理等。 (2) 基础设置管理模块:包含厨师管理,买单管理等。 (3) 用户管理模块:包含用户点菜,上菜,结账,统计等。 (4) 用户订房管理模块:包含订房,续房,查房,退房,结算等。 2.2 系统数据需求依据数据需求分析可知该系统最少应该含有以下部分数据需求:DESKTYPE餐桌类别表(餐桌类别编号
4、,餐桌座位数,餐桌方位,备注)。DESK餐桌表(餐桌编号,餐桌类别编号,餐桌状态,备注)。FOODYPE菜系 (菜系编号,菜系名称,备注)。FOOD菜品(菜品编号,菜单编号,所属菜系,菜品名称,菜品价格,助记码,备注)。FOODTICKET餐饮订单(订单编号,餐桌编号,下单服务员编号,点菜时间,订单状态,备注)。ROOMCUSTINFO住房用户信息表(住户编号,客房类别编号,住户姓名,住户省份证号)。FOODLIST菜单(菜单编号,餐桌编号,菜品编号,厨师编号,状态,备注)。ROOMTYPE客房类别表(客房类别编号,客房类型名称,客房类别价格,备注)。ROOMINFO客房信息表(房间编号,客房
5、类别编号,客房状态,备注)。ROOMTICKET客房订单管理表 (订单编号,房间号,下单服务员ID,身份证号,入住时间,离开时间,押金金额,结算金额,下单时间,备注)。CUSTINFO用户信息表 (身份证号,用户姓名,用户性别,用户电话,是否会员,信息录入时间,备注)。USER 用户信息表(用户编号,角色编号,部门编号,用户名,用户密码,是否审核经过,年纪,性别,生日,联络电话,备注)。ROLE 用户角色表(角色编号,角色名,备注)。DEPARMENT 部门表(部门编号,名称,上级部门编号,备注)。PERMISSION 权限表(权限编号,权限组编号,权限名称,备注)。ROLEPER 角色-权限
6、关联表(角色权限编号,角色编号,权限编号)。PERMISSIONGROUP 权限组表(权限组编号,权限组名称)。2.3系统功效模块图酒店管理系统功效结构图2-3所表示图2-3 系统功效结构图2.4系统部分步骤图客房订单步骤图图2-4所表示图2-4 客房订单管理步骤图餐饮部分开台步骤图图2-5所表示图2-5 餐饮部分开台步骤图三、数据库设计3.1数据库概念模型数据库概念模型图图3-1所表示:图3-1数据库概念模型图3.2数据库物理模型数据库物理模型图图3-2所表示:图3-2 数据库物理模型图3.3酒店管理系统部分数据字典本系统数据库采取Oracle数据库,系统数据库名称为HotelDB,共包含1
7、7张表。菜系表:用来存放菜系信息,其中FOODTYPEID字段为主键。表3-3-1 菜系:FOODYPE字段名称类型许可空主键外键外键参考表 说明FOODTYPEIDNUMBE(5)NOTYES菜系IDFOODTYPENAMEVARCHAR2(20)NOT菜系名称FOODTYPEREMARKVARCHAR2(50)YES备注菜品表:用于菜品全部信息,也是点菜菜单一个信息起源表,从中可取得菜品全部信息。其中字段FOODTYPEID用来描述该菜品属于哪个菜系是外键参参考表FOODTYPE,依据此字段值,能够知道菜品属于对应哪个菜系。表3-3-2 菜品:FOOD字段名称类型许可空主键外键外键参考表说
8、明FOODIDNUMBER(5)NOTYES菜品IDFOODNAMEVARCHAR2(20)NOT菜品名称FOODTYPEIDNUMBER(5)NOTYESFOODYPE所属菜系IDFOODPRICENUMBER(5)NOT菜品价格FOODHELPCODEVARCHAR2(10)NOT助记码FOODREMARKVARCHAR2(50)YES备注客房类别表:用来存放客房类别信息,表3-3-3客房类别表:ROOMTYPE字段名称类型许可空主键外键外键参考表说明ROOMTYPEIDNUMBER(5)NOTYES客房类别编号ROOMTYPENAMEVARCHAR2(20)NOT客房类别名称ROOMTY
9、PEPAYNUMBER(5)NOT类别价格ROOMTYPEREMARKVARCHAR2(50)NOT备注客房信息表:用来存放客房信息。表3-3-4 客房信息表:ROOMINFO字段名称类型许可空主键外键外键参考表说明ROOMIDNUMBER(5)NOTYES房间编号ROOMTYPEIDNUMBER(5)NOTYESROOMTYPE客房类别编号续表 5-4字段名称类型许可空主键外键外键参考表说明ROOMCHECKNUMBER(5)NOT客房状态ROOMREMARKVARCHAR2(50)YES备注用户信息表:用来存放酒店用户相关信息。表3-3-5 用户信息表: CUSTINFO字段名称类型许可空
10、主键外键外键参考表说明CARDIDVARCHAR2(20)NOTYES身份证号CUSTNAMEVARCHAR2(20)NOT姓名CUSTSEXVARCHAR2(10)NOT性别CUSTPHONEVARCHAR2(20)YES电话VIPCHECKNUMBER(5)YES是否会员CUSTDATEVARCHAR2(20)YES信息录入时间四、 系统实现过程4.1设计过程4.1.1窗体设计新建一个标准工程,会出现form1,能够遵照默认格式,也能够更更名称,这里默认。添加所需控件mainmenu,双击控件在其中加入所要进行功效以下: 添加控件Image插入图片,选中image控件,在其属性表中选中pi
11、cture,选择需要图片:再建立一个Form2,默认格式即可。在其中加入客房登记所需控件:再建立一个Form3,默认格式即可,而且在project-options中设置其为主窗体。在其中加入客房登记所需控件,8个label,8个Edit,两个bitbtn图:能够在bitbtn按钮中添加图片,使其愈加生动,选中按钮,在其属性选择Glyph,选择需要图片即可,注意图片格式要符合要求,还能够为界面换颜色。再建立一个Form4,默认格式即可。在其中加入客人信息查询所需控件,1个label,一个Edit,2个按钮,1个DBGrid:这里需要链接数据库,和krxx表中信息进行链接。连接方法为:首先添加一个
12、数据模板(datemodule),然后选择ADOQuery控件和datasource控件添加到数据模板,选中ADOQuery控件,在其属性中找到connectionstring,进行数据库链接,选择再建立一个Form5,默认格式即可。在其中加入客房登记所需控件,和上面一样:这个窗体也要进行数据库链接,过程和上面一样,只是链接表名不一样,这里链接是kfxx表。双击确定添加代码以下:with Data3.ADOQuery1 do begin Close; SQL.Clear; SQL.Add(select * from fjxx where 房间号码=:a); Parameters.ParamBy
13、Name(a).value:=Trim(edit1.Text); Open; end;关闭键代码以下:form5.close;form1.show;这么就完成了房间信息查询操作。(7) 再建立一个Form6,默认格式即可。在其中加入查看酒店信息所需控件:1个label,1个按钮,1个DBGrid:这里关键就是数据库链接,改用另外一个方法为:首先再建立一个Form7,默认格式即可。在其中加入查看客房信息所需控件,和(7)一样,不过这里能够采取(5)方法进行数据库链接。再建立一个再建立一个Form8 ,默认格式即可。在其中加入退房所需控件:1个label,1个Edit,两个bitbtn,1个DBG
14、rid,和一个DBNavigator图:将其和数据库中表krxx链接后,输入证件号码单击DBNavigator控件上能够突出显示选择信息,然后点击退房能够实现退房功效。4.1.2 进行窗体之间转换(1)在form3中进行密码设置,双击登录按钮进行代码输入以下:varresults: Variant;BEGINresults:=ADOTable1.Lookup(姓名,edit1.text,密码);if results=edit2.Text thenbeginform3.Hide;form1.Show;endelsebeginapplication.MessageBox(姓名或密码错误,提醒信息,
15、64); edit1.SetFocus; exit;end;end;退出代码为:close;(2)在form1中进行剩下各form间连接,在form1中分别单击要实现功效菜单按钮,并分别输入代码,得到最终代码以下:procedure TForm1.N2Click(Sender: TObject);beginform1.Hide;form2.showmodal;end;procedure TForm1.N3Click(Sender: TObject);beginform1.Hide;form4.showmodal;end;procedure TForm1.N4Click(Sender: TObj
16、ect);beginform1.Hide;form5.ShowModal;end;procedure TForm1.N5Click(Sender: TObject);beginform1.Hide;form6.ShowModal;end;procedure TForm1.N6Click(Sender: TObject);beginform1.hide;form7.ShowModal;end;procedure TForm1.N8Click(Sender: TObject);beginform1.hide;form8.ShowModal;end;procedure TForm1.N7Click(
17、Sender: TObject);beginclose;end;procedure TForm1.FormCreate(Sender: TObject);beginend;而且要在uint1连接代码上添加:uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, DB, ADODB,unit2,unit4,unit5,unit6,unit7,unit8,;在form2中进行和form1间转换,代码以下: 双击关闭按钮添加代码: form2.close; form
18、1.show;(4)在form4,form5,form6,form7中进行form1间转换,代码类似(3)。3、form1中退出菜单实现双击退出菜单进行代码输入:close;即可。至此完成了菜单管理实现,能够运行后进行各功效实现。代码设计Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Key Case DJ zsdj_Click Case TF tf_Click Case FT ftck_Click Case CX zscx_Click Case exit If Ms
19、gBox(确定退出该系统?, 4, 系统提醒) = vbYes Then End End If End SelectEnd SubPrivate Sub sztx_Click()Dim StrCommonDialog1.Filter = BMP图片(*.BMP)|*.BMP|JPG图片(*.JPG)|*.JPG|GIF图片(*.GIF)|*.GIF|全部文件(*.*)|*.*CommonDialog1.ShowOpenIf CommonDialog1.FileName ThenImage2.Picture = LoadPicture(CommonDialog1.FileName)Str = C
20、ommonDialog1.FileName Open (App.Path & picture.txt) For Output As #1 Print #1, Str Close #1 CommonDialog1.FileName = Else CommonDialog1.FileName = End IfEnd SubPrivate Sub sjbf_Click()main_sjbf.Showmain.Enabled = FalseEnd SubPrivate Sub sjhf_Click()main_sjhf.ShowEnd SubPrivate Sub zsdj_Click() main_
21、kfdj.Show main.Enabled = FalseEnd SubPrivate Sub tf_Click() main_tf.Show main.Enabled = FalseEnd SubPrivate Sub kfcx_Click() main_kfcx.Show main.Enabled = FalseEnd SubPrivate Sub ftck_Click() main_ftcx.Show main.Enabled = FalseEnd SubPrivate Sub zscx_Click() Load main_zscx main_zscx.Show main.Enable
22、d = FalseEnd SubPrivate Sub tfcx_Click() Load main_tfcx main_tfcx.Show main.Enabled = FalseEnd Sub4.1.3 系统登录模块设计窗体设计添加新窗体,命名为main_Login,Caption属性为“酒店客房管理系统”;添加Adodc控件和两个TextBox控件,Text1放在用户名后,Text2放在密码后;添加两个Image控件,分别设置Picture属性,添加“确定”和“退出”按钮。代码设计Private Sub Image1_Click() If Text1.Text = 7 And Text2
23、.Text = 123456 Then main.Show Me.Hide Else MsgBox 密码错误!, vbCritical, 提醒 End IfEnd SubPrivate Sub Image2_Click()EndEnd Sub4.1.4住宿登记模块窗体设计添加新窗体命名为main_kfdj,Caption属性为“住宿登记”;添加两个Adodc控件、TextBox控件数组和2个DTPicker控件;添加3个ComboBox控件。代码设计Private Sub comdj_Click() Adodc1.ConnectionString = PROVIDER=MSDASQL;DRIV
24、ER=Oracle in OraDb11g_home1 ; & server=webserver;DSN=;databasename=aa;databasefile=d:aa;UID=scott;PWD=123456 Adodc1.RecordSource = select * from tb_kf where 房态=空房 Adodc1.Refresh Adodc2.ConnectionString = PROVIDER=MSDASQL;DRIVER=Oracle in OraDb11g_home1 ; & server=webserver;DSN=;databasename=aa;datab
25、asefile=d:aa;UID=scott;PWD=123456 Adodc2.RecordSource = select * from tb_djb order by 凭证号码 Adodc2.Refresh If Not Adodc2.Recordset.EOF Then Adodc2.Recordset.MoveLast If lsph.Text = Then bh.Text = Fdate & d & Format(1, #000) If lsph.Text Then y1.Text = Month(Fdate) y2.Text = Month(Left(lsph.Text, 10)
26、If y1.Text = y2.Text Then bh.Text = Fdate & d & Format(Val(Right(lsph.Text, 3) + 1, #000) Text1.Text = Val(Right(lsph.Text, 3) + 1 End If If y1.Text y2.Text Then bh.Text = Fdate & d & Format(1, #000) End If End If For i = 0 To 2 ZSDJ(i).Text = ZSDJ(i).Enabled = True Next i For i = 4 To 6 ZSDJ(i).Tex
27、t = ZSDJ(i).Enabled = True Next i Combo3.Text = Comok.Enabled = True: Comdj.Enabled = False Combo3.Enabled = True: Combo1.Enabled = True ZSDJ(0).SetFocus Adodc3.ConnectionString = PROVIDER=MSDASQL;DRIVER=Oracle in OraDb11g_home1 ; & server=webserver;DSN=;databasename=aa;databasefile=d:aa;UID=scott;P
28、WD=123456 Adodc3.RecordSource = select * from tb_kf where 房态 = 空房 Adodc3.Refresh Combo3.Clear If Adodc3.Recordset.RecordCount 0 Then For i = 1 To Adodc3.Recordset.RecordCount Combo3.AddItem Adodc3.Recordset.Fields(房间号).Value Adodc3.Recordset.MoveNext Next i End IfEnd SubPrivate Sub comok_Click() If
29、ZSDJ(0) = Or Combo3 = Then MsgBox 请输入完整信息, , 系统提醒 Else Adodc2.RecordSource = select * from tb_djb where 房间号 = & Combo3.Text & and 标志 like 1 Adodc2.Refresh If Adodc2.Recordset.RecordCount = 0 Then Adodc2.Recordset.AddNew If bh.Text Then Adodc2.Recordset.Fields(凭证号码) = bh.Text If ZSDJ(0).Text Then Ado
30、dc2.Recordset.Fields(姓名) = ZSDJ(0).Text If Combo1.Text Then Adodc2.Recordset.Fields(证件名称) = Combo1.Text If ZSDJ(1).Text Then Adodc2.Recordset.Fields(证件号码) = ZSDJ(1).Text If ZSDJ(2).Text Then Adodc2.Recordset.Fields(具体地址) = ZSDJ(2).Text If Combo3.Text Then Adodc2.Recordset.Fields(房间号) = Val(Combo3.Te
31、xt) If ZSDJ(4).Text Then Adodc2.Recordset.Fields(客房类型) = ZSDJ(4).Text If DTP1.Value Then Adodc2.Recordset.Fields(住宿日期) = DTP1.Value If ZSDJ(5).Text Then Adodc2.Recordset.Fields(客房价格) = Val(ZSDJ(5).Text) If ZSDJ(6).Text Then Adodc2.Recordset.Fields(住宿天数) = ZSDJ(6).Text If ZSDJ(7).Text Then Adodc2.Rec
32、ordset.Fields(宿费) = ZSDJ(7).Text If DTP3.Value Then Adodc2.Recordset.Fields(退宿日期) = DTP3.Value Adodc2.Recordset.Update Adodc2.Refresh adocon.Open Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & App.Path & DB_KFGL.mdb;Persist Security Info=False adoRs.Open select * from tb_djys, adocon, adOpenKeyset,
33、 adLockOptimistic adoRs.AddNew If bh.Text Then adoRs.Fields(凭证号码) = bh.Text If ZSDJ(0).Text Then adoRs.Fields(姓名) = ZSDJ(0).Text If Combo1.Text Then adoRs.Fields(证件名称) = Combo1.Text If ZSDJ(1).Text Then adoRs.Fields(证件号码) = ZSDJ(1).Text If ZSDJ(2).Text Then adoRs.Fields(具体地址) = ZSDJ(2).Text If ZSDJ(
34、4).Text Then adoRs.Fields(客房类型) = ZSDJ(4).Text If Combo3.Text Then adoRs.Fields(房间号) = Val(Combo3.Text) If ZSDJ(5).Text Then adoRs.Fields(客房价格) = Val(ZSDJ(5).Text) If DTP1.Value Then adoRs.Fields(住宿日期) = DTP1.Value If ZSDJ(6).Text Then adoRs.Fields(住宿天数) = ZSDJ(6).Text If ZSDJ(7).Text Then adoRs.Fie
35、lds(宿费) = ZSDJ(7).Text If DTP3.Value Then adoRs.Fields(退宿日期) = DTP3.Value adoRs.Update adocon.Close Adodc1.RecordSource = select * from tb_kf where 房间号 like + Combo3.Text + If Combo3.Text Then Adodc1.Recordset.Fields(房态) = 入住 Adodc1.Recordset.Update For i = 0 To 6 ZSDJ(i).Enabled = False Next i ZSDJ
36、(8).Enabled = False: ZSDJ(10).Enabled = False: ZSDJ(11).Enabled = False Combo3.Enabled = False: Combo1.Enabled = False End If Comok.Enabled = False: Comprint.Enabled = True: Comdj.Enabled = True Comprint.SetFocus End IfEnd SubPrivate Sub comcancel_Click() For i = 0 To 2 ZSDJ(i).Enabled = False Next
37、i For i = 4 To 6 ZSDJ(i).Enabled = False Next i Comok.Enabled = False: Combo3.Enabled = False Combo1.Enabled = False: DTP3.Enabled = False Comdj.Enabled = TrueEnd SubPrivate Sub comend_Click() Unload Me main.Enabled = TrueEnd Sub4.1.5退宿登记模块根据如上方法设计窗体以下:代码设计:Private Sub Form_Load() Adodc1.ConnectionS
38、tring = PROVIDER=MSDASQL;DRIVER=Oracle in OraDb11g_home1 ; & server=webserver;DSN=;databasename=aa;databasefile=d:aa;UID=scott;PWD=123456 Adodc1.RecordSource = select * from tb_djb Adodc1.Refresh Adodc2.ConnectionString = PROVIDER=MSDASQL;DRIVER=Oracle in OraDb11g_home1 ; & server=webserver;DSN=;dat
39、abasename=aa;databasefile=d:aa;UID=scott;PWD=123456 Adodc2.RecordSource = select * from tb_kf Adodc2.Refresh Adodc3.ConnectionString = PROVIDER=MSDASQL;DRIVER=Oracle in OraDb11g_home1 ; & server=webserver;DSN=;databasename=aa;databasefile=d:aa;UID=scott;PWD=123456 Adodc3.RecordSource = select * from tb_gzmx Adodc3.Refresh Adodc4.ConnectionString = PROVIDER=MSDASQL;DRIVER=Oracle in OraDb11g_home1 ; & server=webserver;DSN=;databasen
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100