资源描述
数据库系统课程设计报告
题目: 酒店管理系统
课程代号: 0680036
课程名称:数据库系统课程设计
学号:
姓名:
班级:
指导教师
完成日期:2011年4月
目录
第一章 引言
第二章 系统分析与设计
2.1需求分析
2.2结构设计
2.3数据库设计
第三章 系统开发及实现
3.1 创建主窗体
3.2 创建子窗体
3.3 建立公共模块
第四章 总结
参考文献
附录(附部分源代码)
第一章 引言
酒店管理系统是现代服务行业不可缺少的一个组成环节。
酒店管理信息系统是一个由人、计算机和数据库组成的进行酒店经营管理的系统,通过对信息的收集、传递、整理、加工、维护和使用,提高管理水平和效率,从而实现酒店管理的自动化、规范化和人性化。
本文简要介绍了基于Microsoft和VB程序语言开发实现的酒店管理系统,着重阐述了该系统开发实现过程,从系统的需求分析、方案论证、模块设计、数据设计、详细设计到系统测试等各个环节都进行了较为详尽的分析和描述。
关键词:酒店管理系统、Access、数据库、VB
第二章系统分析与设计
2.1需求分析
在进行一个项目的设计之前,首先要进行必要的需求分析。酒店需要管理各种人员和入住信息,希望实现酒店的信息化管理,通过建立一个酒店管理系统来管理酒店的日常业务。其完成功能如下:
1、能够实现对客人的登记信息查询,包括逐个浏览,以及对客人资料的增加、删除和编辑操作。
2、能够的酒店人员值班情况进行管理。
3、管理人员也可以直接增加和删除用户信息。
系统功能模块图如图1所示。
酒店管理系统
人事管理
客户入住
系统管理
客户信息查询
客户投诉
值班管理
散客入住
密码修改
团队入住
新增用户
图1 系统的功能模块图
根据功能模块图设计划出的实体有散客入住实体、团队入住实体、投诉管理实体、值班管理实体。
散客入住实体E-R如图2所示。
团队入住实体E-R如图3所示
投诉管理实体E-R图如图4所示
值班管理实体E-R图如图5所示
散客入住实体
姓名
房价
性别
房号
离店日
抵达日
证件号码
图2 散客入住实体E-R图
团队入住实体
负责人姓名
团队名称
房间号码
备注
入住天数
抵达日
证件号码
图3 团队入住实体E-R图
投诉管理实体
投诉对象
投诉日期
投诉内容
编号
处理意见
受诉日期
受诉部门
图4 投诉管理实体E-R图
值班管理实体
值班人
值班截止时间
记事
值班开始日期
值班开始日期
值班截止日期
图5 值班管理实体E-R图
2.2结构设计
使用windows操作系统、开发维护系统即visual basic软件系统、一套数据库系统Access即可。他们之间的关系如图6所示。
数据库
数据库应用程序
开发人员
用户
用户
用户
图6 结构关系图
根据上面的需求分析,设计好数据库系统,然后开发应用程序可以考虑窗体的系统,每一个窗体实现不同的功能,可以设计以下几个模块。
·客人入住模块:用来实现登记入住的增加、删除和修改等操作。
·客人信息查询模块:用来实现对客人信息的浏览和查询。
·值班管理模块:用来实现对工作人员值班情况的增加、删除和修改等操作。
·系统管理模块:用来实现用户的增加、删除和修改等操作。
2.3数据库设计
这里数据库采用access,用ADO作为连接数据对象。
2.3.1建立access数据库
启动access,建立一个空的数据库jiudian.mbd,如图7所示。
图7 jiudian.mdb
使用程序设计器建立系统需要的表格如下:散客资料表,如图8所示。
团队资料表,如图9所示。
值班管理表,如图10所示。
系统管理表,如图11所示。
投诉管理表,如图12所示。
图8 散客资料表 图9 团队资料表
图10 值班管理表 图11系统管理表
图12 投诉管理表
2.3.2连接数据库
在程序设计的公共模块中,先定义ADO链接对象。语句如下:
Public conn As New ADODB.Connection '标记连接对象
然后在子程序中,用如下的语句即可打开数据库:
Dim connectionstring As String
connectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _
"data source=jiudian.mdb"
conn.Open connectionstring
图12 引用ADO连接数据库
第三章系统开发与实现
这是一个多文档界面(MDI)应用程序,如图13所示,可以同时显示多个文档,每个文档显示在各个窗体中。MDI应用程序中常有包含子菜单“窗体”选项,用于在窗体或文档间进行切换。菜单应用程序中,有5个菜单选项,每个选项对应着E-R图中的一个子项目。
图13 多文档界面
3.1 创建主窗体
首先创建一个工程,命名为酒店管理系统。该窗体属性如表1所示。
属性
值
Caption
酒店管理系统
WindowState
Maxsize
表1 主窗体的属性
图14 菜单编辑器
在主窗体的工具栏中,选菜单编辑器,创建如图14所示的菜单结构。
创建一些菜单项,如表2 所示。
表2 菜单项表
菜单名称
Text属性
功能描述
MenuItem1
系统管理
顶级菜单,包含子菜单
MenuItem2
新增用户
调出用户窗体
MenuItem3
修改密码
调出密码窗体
MenuItem4
退出系统
推出
MenuItem5
客人入住
顶级菜单,包含子菜单
MenuItem6
散客入住
调出散客入住信息窗体
MenuItem7
团队入住
调出团队入住信息窗体
MenuItem8
客人信息查询
调出查询窗体
MenuItem9
人事管理
顶级菜单,包含子菜单
MenuItem10
客户投诉管理
调出客户投诉信息窗体
MenuItem11
值班管理
调出值班信息窗体
MenuItem12
关于
调出对系统的要求
主窗体如图15所示。
图15 主窗体
3.2 创建各个子窗体
“工程”—“添加窗体”命令,添加子窗体。
把窗体的属性MIDChild改成Ture,这个窗体则成为MID子窗体。
这个项目中,要创建的子窗体如表3所示。
下面分别是各个子窗体,以及他们所使用的控件,如表3所示。
表3 所有子窗体
子窗体名
Text
散客入住
frmonly_client
团队入住
Frmdouble_client
增加用户
frmadduser
修改密码
frmchangepwd
客人资料
frmdatamanage
查询输出
frmfind
关于
frmAbout
用户登录
frmlogin
客人投诉管理
frmkhts
值班管理
frmzhiban
3.2.1散客入住子窗体
散客入住子窗体如图16所示,其控件如表4所示。
图16 散客入住子窗体
表4 散客入住子窗口控件
控件类型
控件Name
控件Text
Frame1
散客入住
Frame
Frame2
(空)
DateGrid
DateGrid1
(空)
Commend1
新增记录
Commend2
修改记录
Commend
Commend3
删除记录
Commend4
取消
Commend5
退出
3.2.2增加用户子窗体
增加用户子窗体如图17所示,其控件如表5所示。
图17增加用户子窗体
表5 增加用户控件表
控 件 类 别
控件Name
控件Text
Label1
输入用户名
Label
Label2
输入密码
Label3
确认密码
Label4
选择权限
Text1
(空)
TextBox
Text2
(空)
Text3
(空)
ComboBox
Comb1
(空)
CommandButton
Command1
确认
Command2
取消
3.2.3修改密码子窗体
修改密码子窗体如图18所示,其控件如表6所示。
图18修改密码子窗体
表6修改密码窗体
控 件 类 别
控件Name
控件Text
Label
Label1
新密码
Label2
确认密码
TextBox
Text1
(空)
Text2
(空)
CommandButton
Command1
确定
Command2
取消
3.2.4团队入住子窗体
团队入住子窗体如图19所示,其控件如表7所示
图19 团队入住子窗体
表7 团队入住子窗口控件
控件类型
控件Name
控件Text
Frame
Frame1
团队入住
Frame2
(空)
DataGrid
DataGrid1
(空)
CommandButton
Command1
新增记录
Command2
修改记录
Command3
删除记录
Command4
取消
Command5
退出
3.2.5查询子窗体
查询子窗体如图20所示,其控件如表8所示
图20 查询子窗体
表8 查询子控件
控件类别
控件Name
控件Text
OptionButton
Option1
按房号
Option2
按抵达日
Lable1
从
Lable
Lable2
到
Lable3
从
Lable4
年
Lable5
月
Lable6
日
Lable7
到
Lable
Lable8
年
Lable9
月
Lable10
日
Combo(0 )CoboBox
Combol
(空)
Combo(1 )CoboBox
Combol
(空)
Combo(0 )CoboBox
Comboy
(空)
Combo(1 )CoboBox
Comboy
(空)
Combo(0 )CoboBox
Combom
(空)
Combo(1 )CoboBox
Combom
(空)
Combo(0 )CoboBox
Combod
(空)
Combo(1 )CoboBox
Combod
(空)
CommandButton
Command1
查询
Command2
取消
3.2.6用户登录子窗体
用户登录子窗体如图21所示,其控件如表9所示
图21用户登录子窗体
表9用户登录子窗口控件
控件类别
控件Name
控件Text
Label
Label1
用户名
Label2
密码
TextBox
Text1
(空)
Text2
(空)
CommandButton
Command1
确定
Command2
取消
3.2.7值班管理子窗体
值班管理子窗体如图22所示,其控件如表10所示
图22值班管理子窗体
表10值班管理子窗口控件
控件类别
控件Name
控件Text
Frame
Frame1
值班管理
Datagrid
DataGrid1
(空)
CmdAdd
增加记录
CommandButton
CmdDcl
删除记录
CmdCanccl
取消
3.2.8投诉管理子窗体
投诉管理子窗体如图23所示,其控件如表11所示
图23投诉管理子窗体
表11 投诉管理子窗体控件
控件类别
控件Name
控件属性
控件属性值
Frame
Frame1
Caption
投诉信息
Frame2
Caption
(空)
控件类别
控件Name
控件属性
控件属性值
Label1
Caption
投诉编号
Label2
Caption
投诉日期
Label3
Caption
投诉对象
Label
Label4
Caption
投诉内容
Label5
Caption
受诉部门
Label6
Caption
受诉日期
Label7
Caption
处理意见
DataGrid1
DataSource
Adodc1
AllowAddNew
Ture
DataGrid
AllowDelete
Ture
AllowUpdata
Ture
AllowArrows
Ture
Command1
上一条
(空)
Command2
下一条
(空)
Command3
第一条
(空)
CommandButton
Command4
末一条
(空)
Command5
增加记录
(空)
Command6
删除记录
(空)
Command7
取消
(空)
Adodc
Adodc1
CommunationString
Jiudian.mdb
RecordSource
投诉管理
Text
Text1
Text
(空)
DataField
投诉编号
DataSource
Adodc1
Text2
Text
(空)
DataField
投诉日期
DataSource
Adodc1
Text3
Text
(空)
DataField
投诉对象
DataSource
Adodc1
Text4
Text
(空)
Text
DataField
投诉内容
DataSource
Adodc1
Text5
Text
(空)
DataField
受诉部门
DataSource
Adodc1
Text6
Text
(空)
DataField
受诉日期
DataSource
Adodc1
Text7
Text
(空)
DataField
处理意见
DataSource
Adodc1
3.3 建立公共模块
建立公共模块可以提高代码效率,同时使得修改和维护代码都很方便。创建公共模块的步骤如下:
(1)“工程”—“添加模块”
(2)选择模块图标后,打开,着这个模块已经添加到项目中了。默认情况下名为modulel。
(3)在模块中定义整个项目的公共变量。
Public conn As New ADODB.Connection '标记连接对象
Public userID As String '标记当前用户ID
Public userpow As String '标记用户权限
Public find As Boolean '标记查询
Public sqlfind As String '查询语句
Public rs_data1 As New ADODB.Recordset
Public findok As Boolean
Public frmdata As Boolean
第四章 总结
通过本次设计,设计的基本思想方法,能够独立编写小型的数据库程序,通过数据库系统应用课题的实践,进一步提高分析问题解决问题的能力及软件开发过程的能力。
遗憾的是对数据库设计工作的认识仅仅停留在表面,只是在参考着书做,借被人的思想,亲自操作却尽力很多困难,所以未能领会其精髓。但时通过这次数据库设计,加深了我对数据库设计基本知识的理解,丰富了我做数据库设计的实际技术,虽然学的不精,但让我对数据库产生了浓厚的兴趣,也使我对数据库有了深层次的感性和理性认识。认识到要做好一项工作,既要注重理论知识的学习,更重要的是要把实践与理论两者紧密相结合。
参考文献
[1] 王 珊,萨师煊编译.数据库系统概论. 北京:高等教育出版社,1983
[2] 张跃延,王小科,许文武. 数据库开发案例精选. 人民邮电出版社,2007,
[3] Connolly.T. 数据库设计/设计师实现与管理. 电子工业出版社,2006
[4]钱雪忠,甸海驰,陈国俊编著.数据库原理及技术课程设计. 北京:清华大学出版社,2009
[5]谭浩强编译. Visual basic程序设计.北京:清华大学出版社,2006
附录:
代码设计
.
1主窗体代设计
本项目中,子菜单事件都是click事件,主窗体代码。
下面是响应“新增用户”子菜单click事件,调出新增用窗体代码。
下面是响应“新增用户”子菜单click事件,调出新增用窗体代码。
下面是响应“新增用户”子菜单click事件,调出新增用窗体代码。
下面是响应“新增用户”子菜单click事件,调出新增用窗体代码。
Private Sub about_Click()
frmAbout.Show
End Sub
Private Sub add_user_Click()
frmadduser.Show
End Sub
Private Sub double_check_Click()
frmfind_double.Show
End Sub
Private Sub check_Click()
frmfind.Show
End Sub
Private Sub double_client_Click()
frmdouble_client.Show
End Sub
Private Sub exit_Click()
Unload Me
End Sub
Private Sub khts_Click()
frmkhts.Show
End Sub
Private Sub MDIForm_Load()
frmdata = False
find = False
End Sub
Private Sub modify_pw_Click()
frmchangepwd.Show
End Sub
Private Sub only_check_Click()
frmfind.Show
End Sub
Private Sub only_client_Click()
frmonly_client.Show
End Sub
Private Sub zbgl_Click()
frmzhiban.Show
End Sub
2 子窗体的代码
在各个子窗体建立好后,就可以根据各个子窗体的功能给他们添加相应代码了。
(1)散客入住子窗体代码
本窗口用来录入散客入住信息,用ADO来连接数据库,是本窗体的重点。采用MDI的子程序,所以运行后,它出现在主程序界面下,
下面的代码是定义变量的。
Option Explicit
Dim rs_client As New ADODB.Recordset
新增用户按钮代码
Option Explicit
Dim rs_client As New ADODB.Recordset
Private Sub Command1_Click()
On Error GoTo adderror
If Command1.Caption = "新增记录" Then '当此按钮的状态为为“增加记录”时
Command1.Caption = "确定" '按钮名称改为“确定”
Command2.Enabled = False '删除与修改按钮不可用
Command3.Enabled = False
Command4.Enabled = True '取消按钮可用
DataGrid1.AllowAddNew = True
DataGrid1.AllowUpdate = True '设定datagrid可以增加记录
Else
If Not IsNull(DataGrid1.Bookmark) Then
If Trim(DataGrid1.Columns("房号").CellText(DataGrid1.Bookmark)) = "" Then
MsgBox "房号不能为空!", vbOKOnly + vbExclamation, ""
Exit Sub
End If
If Trim(DataGrid1.Columns("房价").CellText(DataGrid1.Bookmark)) = "" Then
MsgBox "房价不能为空!", vbOKOnly + vbExclamation, ""
Exit Sub
End If
If Trim(DataGrid1.Columns("姓名").CellText(DataGrid1.Bookmark)) = "" Then
MsgBox "姓名不能为空!", vbOKOnly + vbExclamation, ""
Exit Sub
End If
If Trim(DataGrid1.Columns("性别").CellText(DataGrid1.Bookmark)) = "" Then
MsgBox "性别不能为空!", vbOKOnly + vbExclamation, ""
Exit Sub
End If
If Not IsDate(Trim(DataGrid1.Columns("抵达日").CellText(DataGrid1.Bookmark))) Then
MsgBox "请按照格式hh-mm输入抵达日", vbOKOnly + vbExclamation, ""
Exit Sub
End If
If Not IsDate(Trim(DataGrid1.Columns("离店日").CellText(DataGrid1.Bookmark))) Then
MsgBox "请按照格式hh-mm输入离店日", vbOKOnly + vbExclamation, ""
Exit Sub
End If
rs_client.Update
MsgBox "添加信息成功!", vbOKOnly + vbExclamation, ""
DataGrid1.AllowAddNew = False
DataGrid1.AllowUpdate = False
Else
MsgBox "没有添加信息!", vbOKOnly + vbExclamation, ""
End If
Command1.Caption = "新增记录"
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = False
End If
adderror:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
End Sub
Private Sub Command2_Click()
Dim answer As String
On Error GoTo cmdmodify
If Command2.Caption = "修改记录" Then
answer = MsgBox("确定要修改吗?", vbYesNo, "")
If answer = vbYes Then
Command2.Caption = "确定"
Command1.Enabled = False
Command3.Enabled = False
Command4.Enabled = True
DataGrid1.AllowUpdate = True
Else
Exit Sub
End If
Else
If Not IsNull(DataGrid1.Bookmark) Then
rs_client.Update
End If
Command2.Caption = "修改记录"
Command1.Enabled = True
Command3.Enabled = True
Command4.Enabled = False
DataGrid1.AllowUpdate = False
MsgBox "修改成功!", vbOKOnly + vbExclamation, ""
End If
cmdmodify:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
End Sub
Private Sub Command3_Click()
Dim answer As String
On Error GoTo delerror
answer = MsgBox("确定要删除吗?", vbYesNo, "")
If answer = vbYes Then
DataGrid1.AllowDelete = True
rs_client.Delete
rs_client.Update
DataGrid1.Refresh
MsgBox "成功删除!", vbOKOnly + vbExclamation, ""
DataGrid1.AllowDelete = False
Else
Exit Sub
End If
delerror:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
End Sub
Private Sub Command4_Click()
If Command4.Caption = "确定" Then
rs_client.Cancel
DataGrid1.ReBind
DataGrid1.AllowAddNew = False
DataGrid1.AllowUpdate = False
Command1.Caption = "新增记录"
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = False
ElseIf Command2.Caption = "确定" Then
rs_client.Cancel
DataGrid1.ReBind
DataGrid1.Refresh
DataGrid1.AllowUpdate = False
Command2.Caption = "修改记录"
Command1.Enabled = True
Command3.Enabled = True
Command4.Enabled = False
End If
Frame2.Enabled = True
End Sub
Private Sub Command5_Click()
Unload Me
End Sub
Private Sub DataGrid1_Click()
End Sub
Private Sub Form_Load()
Dim sql As String
On Error GoTo loaderror
sql = "select * from 散客资料"
rs_client.CursorLocation = adUseClient
rs_client.Open sql, conn, adOpenKeyset, adLockPessimistic '打开数据库
'设定datagrid控件属性
DataGrid1.AllowAddNew = False '不可增加
DataGrid1.AllowDelete = False '不可删除
DataGrid1.AllowUpdate = False
Set DataGrid1.DataSource = rs_client
Command4.Enabled = False
Exit Sub
loaderror:
MsgBox Err.Description
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set DataGrid1.DataSource = Nothing
rs_client.Close
End Sub
(1) 团队入住子窗体代码
本窗口是用来录入团队入住信息,也是用ADO来连接数据库的。
Option Explicit
Dim rs_dclient As New ADODB.Recordset
Private Sub Command1_Click()
On Error GoTo adderror
If Command1.Caption = "新增记录" Then '当此按钮的状态为为“增加记录”时
Command1.Caption = "确定" '按钮名称改为“确定”
Command2.Enabled = False '删除与修改按钮不可用
Command3.Enabled = False
Command4.Enabled = True '取消按钮可用
DataGrid1.AllowAddNew = True
DataGrid1.AllowUpdate = True '设定datagrid可以增加记录
Else
If Not IsNull(DataGrid1.Bookmark) Then
If Trim(DataGrid1.Columns("团队名称").CellText(DataGrid1.Bookmark)) = "" Then
MsgBox "团队名称不能为空!", vbOKOnly + vbExclamation, ""
Exit Sub
End If
If Trim(DataGrid1.Columns("负责人姓名").CellText(DataGrid1.Bookmark)) = "" Then
MsgBox "负责人姓名不能为空!", vbOKOnly + vbExclamation, ""
Exit Sub
End If
If Trim(DataGrid1.Columns("证件号码").CellText(DataGrid1.Bookmark)) = "" Then
MsgBox "证件号码不能为空!", vbOKOnly + vbExclamation, ""
Exit Sub
End If
If Trim(DataGrid1.Columns("房间号码").CellText(DataGrid1.Bookmark)) = "" Then
MsgBox "房间号码!", vbOKOnly + vbExclamation, ""
Exit Sub
End If
rs_dclient.Update
MsgBox "添加信息成功!", vbOKOnly + vbExclamation, ""
DataGrid1.AllowAddNew = False
DataGrid1.AllowUpdate = False
Else
MsgBox "没有添加信息!", vbOKOnly + vbExclamation, ""
End If
Command1.Caption = "新增记录"
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = False
End If
adderror:
If Err.Number <> 0 Then
MsgBox Err.Description
End If
End Sub
Private Sub Command2_Click()
Dim answer As String
On Error GoTo cmdmodify
If Command2.Capti
展开阅读全文