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