视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数据库课程设计宾馆住宿管理系统
2025-09-24 00:05:49 责编:小OO
文档
宾馆住宿管理系统

本系统针对宾馆住宿的一般管理模式,采用基于计算机网络技术的宾馆管理解决方案,按照宾馆的现代化管理要求设计,实现对宾馆住宿的接待,客房,订房,收支情况,电话等服务设施的全面全方位计算机管理。目标在于提高宾馆营业体系的作业效率,提高服务的客户满意度,加强宾馆的市场竞争力,树立良好的企业形象.通过计算机管理,一方面提供给客户快捷准确可靠的服务,另一方面提高宾馆自身的管理水平,及时准确获取营业信息,辅助对市场需求变化的决策.

第一章 系统概述

1.1系统开发的背景和意义

随着我国经济的迅速发展,人们的生活水平有了显著的提高,假日经济和旅游经济已成为人们消费的热点。各地也把旅游业当作本地经济发展的重要经济支柱之一,从而促进了宾馆酒店业的快速发展。同时,随着宾馆酒店越来越多,人们的要求越来越高,宾馆酒店业的竞争也愈来愈激烈。

如何在激烈的竞争中生从发展,是每一个宾馆酒店必须面临的问题。对宾馆的经营状况起决定作用的是宾馆的服务管理水平。如何利用先进的管理手段、提高宾馆的管理水平,以成为宾馆酒店业发展的当务之急。面对信息时代的机遇和挑战,利用科技手段提高企业管理水平是企业管理无疑的一条行之有效的途径。现在的宾馆行业已经发生拉巨大变化,已不仅是提供给人们一个吃住行的简单场所,所以,将计算机管理引入宾馆的管理体系中,无疑对宾馆的服务水平更上一层楼提供了一种有利的支持。

虽然计算机管理并不是宾馆管理走向成功的关键元素,但它可以最大限度地发挥准确、快捷、高效等作用,对宾馆的服务管理提供强有力的支持。因此,采用全新的计算机网络和宾馆管理系统,已成为提高宾馆的管理效率、改善服务的水准的重要手段之一。在某种意义上,宾馆客房管理方面的信息话已成为现代化宾馆的重要标志。

1.2系统所要实现功能

该系统应充分利用信息技术提高宾馆客房的管理水平、服务水平。酒店客房管理系统要实现客房住宿的登记、宿费提醒、追加押金、调房登记、退房结帐、查询统计等功能。其中宿费提醒可以在住宿费超过押金时预警,提示前台要客人补交押金,该功能可明显提高对住宿人员宿费的有效管理。将动态时的住宿登记、客房调整追加押金等有机的联系在一起,对酒店进行全方位的管理。

1.3系统开发工具

开发数据库管理信息系统需要选择两种工具,即前台开发语言和后台数据库。本系统运用了Visual Basic作为开发工具,SQL Server2000作为后台数据库。

1.4系统模块分析

(1)系统管理模块

该模块实现操作员的管理,如添加删除和修改操作,并设置操作员的操作权限对指定的用户进行密码修改.

(2)客房管理模块状

该模块实现对客房的基本信息的设置,如客房的地点,客房等级,客房物品等信息.同时提供对客房信息的查询。

(3)订房管理模块状

该模块实现用户订房信息管理,提供对订房客户资料的登记,查询和退订操作。其中订房信息包括客房的类型和订房的时间等。

(4)收银管理模块状

该模块实现用户的确订房信息管理,提供对订房客户资料的登记,查询,并提供当日报表的打印。

第二章 系统需求分析

2.1编写目的

本文档对《酒店管理系统》的开发需求进行描述,目的是明确酒店管理系统对用户的功能要求.该文档对《酒店管理系统》做全面细致的用户需求分析,明确所要开发的系统应有的功能、性能与界面,使有关人士能够清楚的了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。

2.2开发背景

随着人民生活水平的提高,旅游出行的人越来越多,酒店的客流量不断增加,传统的酒店管理方法已经不适应现代社会的需求。宾馆在正常运营中需要对客房资源、顾客信息、退房信息等进行管理,利用客房管理系统及时了解各个环节中信息的变更,有利于提高管理的效率。 

本项目作为《软件工程课程设计》课程的训练项目提出,目的是为了提高同学们软件的开发和数据库的创建链接,以及软件文档的相关标准和编写原则,提高大家的实践能力。

2.3实现目标

建立一套功能完善的管理信息系统,既能满足业务人员日常处理的需要,增强企业经营全过程的数字化管理水平;又能满足管理人员决策分析的需要,提高公司管理层对公司经营反馈信息的响应速度。从而大幅度提高工作效率,提高实施管理的准确性、科学性,使担负管理的工作人员从繁杂的手工劳作中解脱出来。

面对酒店行业的高速发展和酒店行业信息化发展的过程中出现的各种情况,酒店客房管理系统在实施后,应能达到以下目标:

(1)实现多点操作的信息共享,相互之间的信息传递准确、快捷和顺畅。

(2)服务管理信息化,可随时掌握客人住宿、客房状态、客人挂帐等情况。

(3)系统界面友好美观,操作简单易行,查询灵活方便,数据存储安全。

(4)客户档案、挂帐信息、预警系统的结合,可对往来可户进行住宿监控,防止坏帐发生。

(5)通过酒店客房管理系统的实施,可逐步提高宾馆的管理水平,提升员工的素质。

(6)系统维护方便可靠、有较高的安全性,满足实用性、先进性的要求。

2.4数据描述

2.4.1信息需求

(1)顾客信息:姓名、有效证件、证件号码、联系电话、工作单位、详细地址。

(2)客房信息:房间号、房间类型 、房间价格、所在楼层、

(3)住宿信息:顾客姓名、房间编号、有效证件、房间标准、房间位置、折扣、入住时间、预交押金。

(4)退房信息:顾客姓名、房间编号、客房标准、退房时间、折扣、预交押金、所付金额、找还金额。

(5)调房信息:顾客姓名、客房标准、原始房、目标房、住宿天数、入住时间、预交押金、联系电话。

2.4.2 处理需求

宾馆在运营中需要对宾馆资源、顾客信息、结算信息进行管理,如果有顾客来往,经过对客房状态的查询,查看是否有房间能及时为客户办理登记手续,如果有顾客来退房,能及时为顾客登记并办理退房手续,并且修改客房信息,因此,利用开发完成后的宾馆管理系统能够十分便利的对住房系统进行管理有利于提高效率。

酒店住房管理系统开发的任务是实现各种住房信息的系统规范化、自动化主要完成的功能有以下几个方面。

(1)住宿管理

这个模块包括四个部分,即住宿登记、追加押金、调房登记、退宿结帐。该模块要实现客人的住宿登记,收取客人的预交宿费,自动计算折前宿费、实际宿费等;能够收取客人的续交押金,自动计算宿费提醒日期,并能够实现客户调房登记、退宿结帐、自动计算住宿费用及退还费等。

(2)客房管理

这个模块包括三个部分,即客房设置、客房查询、房态查看。宾馆客房在不同的时间有不同的状态,如空静房、空脏房、清理房、占用房、毛病房、修理房等。该部分要完成客房基本信息的查询、能够按房间号检索所需的客房基本信息,以及显示当前客房的入住数、空闲数、维修数、客房的使用率等。

(3)查询管理

这个模块包括三个部分,即住宿查询、退宿查询、宿费提醒。该部分要实现对客房的查询,查询客房的住宿情况、退宿情况以及宿费提醒等。尤其是宿费提醒,当客人的上帐金额超过押金时系统自动提示要求客人补交押金,以防止宾馆财产损失。

(4)日结设置

该模块包括两个部分:客房销售报表、客房销售统计。该模块中要实现按任意时间汇总客人结帐后所需费用的总额的功能及按任意年汇总应收宿费、电话费等的功能。

(5)结帐管理

这个模块包括两个模块,挂帐查询模块、客户结款模块。主要实现选择挂帐单位或个人,检索符合条件的挂帐信息、还款信息及统计欠款余额等。

(6)设置管理

这个模块包括三个部分,主要用来完成操作员及密码设置,操作员密码的修改以及实现清空选定表的数据的功能。

2.5数据流图

数据流图描绘信息流和数据从输入移动到输出过程中在系统中流动和处理的情况。

2.5.1总体数据流图

                                   退宿信息   D1退房信息

                 住宿信息                           

 

              客房号码                      住宿信息    D2住宿信息

                                             

客房信息  

    客房信息    D3 客房信息

                                    

                      图2.1  总数据流图

2.5.2 分数据流图

①住宿数据流图

  

                                                    客房号码

                 客房信息

                          查询信息

                                            预定信息    客房信息

D3   客房信息          D4  退宿信息    

图2.2 住宿数据流图

②退房数据流图 

                                                    退宿信息

                住宿信息

                          住 宿

                              信 息       住宿信息       退房信息

D1   住宿信息          D2  退宿信息    

图2.3 退房数据流图

③客房数据流图

                                                   住宿信息

                客房信息

                          住 宿

                              信 息      客房号码       住宿对象

D5   客房信息          D6  房客信息    

图2.4 客房数据流图

2.6数据字典

数据字典是关于数据信息的集合,即对数据流图中包含的所有元素的定义的集合。

2.7数据库概念设计  

概念性信息模型是一种面向 问题的数据模型,是按照用户的观点来对数据和信息建模。它描述了从用户角度看到的数据,它反映了用户的现实环境。最常用的表示概念性数据模型方法,是实体——联系方法(Entity-Relationship Approach)。这种方法用E——R图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法。用这种方法表示的概念性数据模型又称为ER模型。ER模型包含“实体”、“联系”、“属性”等三个基本成份。

2.7.1局部E-R图

1顾客属性如图2.5

图2.5 顾客实体属性图

2客房属性如图2.6

图2.6 客房实体属性图

3服务员属性如图2.7

图2.7 服务员实体属性图

4 经理属性如图2.8

                            图2.8 经理实体属性图

2.7.2 总E-R 图

                                      

                                    

1               1

                        1

 N  

             N

                 N

                          1

                  

                     1

图2.9 总E-R实体图

第三章 系统总体设计

3.1系统功能模块设计

3.1.1功能模块图

                                 图3.1 功能模块图

3.2系统主要功能描述

(1)住宿管理:住宿登记、追加押金、调房登记、推房结帐。

(2)客房管理:客房设置、客房查询、房态查看。

(3)查询统计:住宿查询、退宿查询、宿费提醒。

(4)系统设置:初始化、密码设置、权限设置。

(5)日结设置:客房销售报表、客房销售统计。

(6)挂帐管理:客户结款、挂帐查询。

3.3系统流程分析

查询

选房

                

                           确定手牌                                                  退 牌

                                             建立账户

                         

                                图3.2 系统流程图

第四章 系统详细设计

4.1程序流程设计

所谓系统流程分析,就是用户使用系统时的工作过程。不同的用户有着不同的工作流程和使用权限。但是所有的用户都是从用户登录模块开始的。登录主要是判断是否是合法的用户,在数据库设计中用户的登录名是固定的,如果要添加用户则在用户主界面进行添加用户信息。本系统的系统流程分析如下图所示:

                                              否

                     重试     

                                                     否

                                  失败                                 是

     成 功                         用户管理模块                    宾馆管理模块

   

       A dmin用户  

       领班用户

普通用户  

            

                                 图4.1程序流程图

4.2系统结构的实现

该系统采用了SQL Server2000数据库,数据库名称为kfgl.数据库包含以下几个表:客房基本信息表kf、登记表djb、密码表ma、权限设置表qxsz、退房登记表tfdj、挂帐明细表gzmx。

表4-1  密码表

字段名称数据类型字段大小
操作员文本10
密码文本6
表4-2  客房基础信息表

字段名称数据类型字段大小
房间号文本30
房间类型文本50
价格货币8
房态文本4
标志是/否

1
备注文本100
配置文本100
使用设置文本10
营业日期时间/日期

8
表4-3  挂账明细表

字段名称数据类型字段大小
日期日期/时间

100
挂帐单位文本100
摘要文本8
住宿金额货币8
欠款金额货币8
还款金额货币8
金额累计文本16
姓名文本100
证件号码文本100
票号文本20
时间日期/时间

8
房间标准文本10
房间价格文本10
表4-4 登记表

字段名称数据类型字段大小
姓名文本50
证件名称文本20
证件号码文本20
详细地址文本50
房间号文本20
客房类型文本10
联系电话文本20
客房价格货币8
住宿日期日期/时间

8
住宿时间日期/时间

8
住宿天数数字双精度型
宿费货币8
折扣数字双精度型
应收宿费货币8
预收金额货币8
提醒日期日期/时间

8
提醒时间日期/时间

8
退宿日期日期/时间

8
退宿时间日期/时间

8
备注文本50
结款方式文本10
摘要文本200
表4-5 退房登记

应收宿费货币8
杂费货币8
电话费货币8
存车费货币8
赔偿费货币8
金额总计货币8
预收宿费日期/时间

8
退还宿费日期/时间

8
退还日期日期/时间

8
备注文本8
表4-6  权限设置表

字段名称数据类型字段大小
编号是/否

50
操作员是/否

50
密码是/否

双精度型
住宿登记是/否

1
退宿登记是/否

1
追加押金是/否

1
客房管理是/否

1
客房查询是/否

1
住宿查询是/否

1
退宿查询是/否

1
宿费查询是/否

1
客房销售报表是/否

1
操作员设置是/否

1
密码设置是/否

1
权限设置是/否

1
调房登记是/否

1
客户结款是/否

1
第五章 系统界面设计及代码实现

5.1系统登陆窗口界面

程序启动后,首先进入系统登陆界面验证操作密码。在系统登陆模块中主要实现如下功能:

(1)可选择操作员,支持鼠标和键盘操作。

(2)操作员和密码验证成功后,进入主界面。

(3)操作员错误或密码错误提醒并返回错误点。

(4)输入三次错误密码,自动退出系统。

图5.1 用户登陆界面

[登陆代码实现]

Option Explicit

Dim cnt As Integer                     '记录确定次数

Private Sub Command1_Click()

Dim sql As String

Dim rs_login As New ADODB.Recordset

If Trim(text1.Text) = "" Then            '判断输入的用户名是否为空

   MsgBox "没有这个用户", vbOKOnly + vbExclamation, ""

   text1.SetFocus

Else

   sql = "select * from 系统管理 where 用户名='" & text1.Text & "'"

   rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic

   If rs_login.EOF = True Then

      MsgBox "没有这个用户", vbOKOnly + vbExclamation, ""

      text1.SetFocus

   Else                                  '检验密码是否正确

      If Trim(rs_login.Fields(1)) = Trim(text2.Text) Then

          userID = text1.Text

          userpow = rs_login.Fields(2)

          rs_login.Close

          Unload Me

          MDIForm1.Show

      Else

         MsgBox "密码不正确", vbOKOnly + vbExclamation, ""

         text2.SetFocus

      End If

   End If

End If

cnt = cnt + 1

If cnt = 3 Then

   Unload Me

End If

Exit Sub

End Sub

Private Sub Command2_Click()

Unload Me

End Sub

Private Sub Form_Load()

Dim connectionstring As String

connectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _

                   "data source=jiudian.mdb"

conn.Open connectionstring

cnt = 0

End Sub

5.2系统主程序窗口界面

程序启动后,在系统登陆界面验证完操作员及操作员密码后,将进入主程序界面。主程序界面要实现:

(1)选择菜单或工具栏,调用相应程序,进行相应操作。

(2)根据操作员不同,确定操作员相应的权限。

图5.2 主程序窗口

[登陆代码实现]

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

Privte Sub zbgl_Click()

frmzhiban.Show

End Sub

5.3住宿管理设计

程序启动后,选择“客人入住”菜单下的“散客入住”和“团客入住”项,将进入住宿登记模块。在住宿登记模块主要实现如下功能:

(1)自动生成住宿登记凭证号码。

(2)提供空房间供用户选择。

(3)实现客人住宿登记,收取客人预交宿费。

(4)自动计算折前宿费、实际宿费、宿费提醒时间、退宿时间。

5.3.1 散客入住

图.5.3 散客入住界面

[登陆代码实现]

Option Explicit

Dim rs_client As New ADODB.Recordset

Private Sub Command1_Click()

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 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

Set DataGrid1.DataSource = Nothing

rs_client.Close

End Sub

5.3.2 团客入住

图5.4 团客入住界面

[登陆代码实现]

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.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_dclient.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_dclient.Delete

   rs_dclient.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_dclient.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_dclient.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 Form_Load()

Dim sql As String

On Error GoTo loaderror

sql = "select * from 团队资料"

rs_dclient.CursorLocation = adUseClient

rs_dclient.Open sql, conn, adOpenKeyset, adLockPessimistic     '打开数据库

'设定datagrid控件属性

DataGrid1.AllowAddNew = False                                 '不可增加

DataGrid1.AllowDelete = False                                 '不可删除

DataGrid1.AllowUpdate = False

Set DataGrid1.DataSource = rs_dclient

Command4.Enabled = False

Exit Sub

loaderror:

   MsgBox Err.Description

End Sub

Private Sub Form_Unload(Cancel As Integer)

Set DataGrid1.DataSource = Nothing

rs_dclient.Close

EndSub

5.4客人信息查询

在该模块中主要实现输入客户的姓名检索住宿信息的功能。

图.5.5 客人信息查询界面

[登陆代码实现]

Option Explicit

Dim rs_find As New ADODB.Recordset

Private Sub Command1_Click()

On Error GoTo cmderror

Dim find_date1 As String

Dim find_date2 As String

If Option1.Value = True Then

   sqlfind = "select * from 散客资料 where 房号 between '" & _

   Combo1(0).Text & "'" & " and " & "'" & Combo1(1).Text & "'"

End If

If Option2.Value = True Then

   find_date1 = Format(CDate(Comboy(0).Text & "-" & _

   Combom(0).Text & "-" & Combod(0).Text), "yyyy-mm-dd")

   find_date2 = Format(CDate(Comboy(1).Text & "-" & _

   Combom(1).Text & "-" & Combod(1).Text), "yyyy-mm-dd")

   sqlfind = "select * from 散客资料 where 抵达日 between #" & _

   find_date1 & "#" & " and" & " #" & find_date2 & "#"

End If

rs_data1.Open sqlfind, conn, adOpenKeyset, adLockPessimistic

frmdatamanage.displaygrid1

Unload Me

cmderror:

If Err.Number <> 0 Then

   MsgBox "请输入正确的查询条件!", vbOKOnly + vbExclamation, "警告"

End If

End Sub

Private Sub Command2_Click()

Unload Me

MDIForm1.Show

End Sub

Private Sub Form_Load()

Dim i As Integer

Dim sql As String

'If findok = True Then

  ' rs_data1.Close

'End If

sql = "select * from 散客资料 order by 房号 desc"

rs_find.CursorLocation = adUseClient

rs_find.Open sql, conn, adOpenKeyset, adLockPessimistic

If rs_find.EOF = False Then               '添加编号

   With rs_find

        Do While Not .EOF

           Combo1(0).AddItem .Fields(0)

           Combo1(1).AddItem .Fields(0)

           .MoveNext

        Loop

   End With

End If

For i = 2001 To 2005                      '添加年

    Comboy(0).AddItem i

    Comboy(1).AddItem i

Next i

For i = 1 To 12                           '添加月

    Combom(0).AddItem i

    Combom(1).AddItem i

Next i

For i = 1 To 31                           '添加日

    Combod(0).AddItem i

    Combod(1).AddItem i

Next i

End Sub

Private Sub Form_Unload(Cancel As Integer)

rs_find.Close

End Sub

5.5 系统管理

系统管理包括“新增用户”,“修改密码”二部分。

5.5.1 新增用户

图5.6 新增用户界面

[登陆代码实现]

Private Sub Command1_Click()

Dim sql As String

Dim rs_add As New ADODB.Recordset

If Trim(text1.Text) = "" Then

   MsgBox "用户名不能为空", vbOKOnly + vbExclamation, ""

   Exit Sub

   text1.SetFocus

Else    

   sql = "select * from 系统管理"

   rs_add.Open sql, conn, adOpenKeyset, adLockPessimistic

   While (rs_add.EOF = False)

        If Trim(rs_add.Fields(0)) = Trim(text1.Text) Then

           MsgBox "已有这个用户", vbOKOnly + vbExclamation, ""

           text1.SetFocus

           text1.Text = ""

           text2.Text = ""

           Text3.Text = ""

           Combo1.Text = ""

           Exit Sub

         Else

           rs_add.MoveNext

         End If

    Wend

     If Trim(text2.Text) = "" Then

         MsgBox "密码不能为空,请重新输入!", vbOKOnly + vbExclamation, "警告"

         text2.Text = ""

         text2.SetFocus

         Exit Sub

    End If

If Trim(text2.Text) <> Trim(Text3.Text) Then

       MsgBox "两次密码不一致", vbOKOnly + vbExclamation, ""

       text2.SetFocus

       text2.Text = ""

       Text3.Text = ""

       Exit Sub

ElseIf Trim(Combo1.Text) <> "system" And Trim(Combo1.Text) <> "guest" Then

       MsgBox "请选择正确的用户权限", vbOKOnly + vbExclamation, ""

       Combo1.SetFocus

       Combo1.Text = ""

       Exit Sub

    Else

       rs_add.AddNew

       rs_add.Fields(0) = text1.Text

       rs_add.Fields(1) = text2.Text

       rs_add.Fields(2) = Combo1.Text

       rs_add.Update

       rs_add.Close

       MsgBox "添加用户成功", vbOKOnly + vbExclamation, ""

       Unload Me

    End If

End If

End Su

Private Sub Command2_Click()

Unload Me

End Su

Private Sub Form_Load()

Combo1.AddItem "system"

Combo1.AddItem "guest"

End Sub

5.5.2  修改密码

图5.7修改密码界面

[登陆代码实现]

Private Sub Command1_Click()

Dim rs_chang As New ADODB.Recordset

Dim sql As String

If Trim(text1.Text) <> Trim(text2.Text) Then

   MsgBox "密码不一致!", vbOKOnly + vbExclamation, ""

   text1.SetFocus

   text1.Text = ""

   text2.Text = ""

Else

   sql = "select * from 系统管理 where 用户名='" & userID & "'"

   rs_chang.Open sql, conn, adOpenKeyset, adLockPessimistic

   rs_chang.Fields(1) = text1.Text

   rs_chang.Update

   rs_chang.Close

   MsgBox "密码修改成功", vbOKOnly + vbExclamation, ""

   Unload Me

End If

End Sub

Private Sub Command2_Click()

Unload Me

End Sub

5.6人事管理

图5.8 人事管理界面

[登陆代码实现]

Option Explicit

Dim rs_zhiban As New ADODB.Recordset

Private Sub cmdadd_Click()

On Error GoTo adderror

If cmdadd.Caption = "确定增加记录" Then           '当此按钮的状态为为“增加记录”时

   cmdadd.Caption = "确定"                    '按钮名称改为“确定”

   cmddel.Enabled = False

   cmdcancel.Enabled = True

   DataGrid1.AllowAddNew = True

   DataGrid1.AllowUpdate = True               '设定datagrid可以增加记录

Else

If Not IsNull(DataGrid1.Bookmark) Then

   If Not IsDate(Trim(DataGrid1.Columns("值班开始日期").CellText(DataGrid1.Bookmark))) Then

          MsgBox "请按照格式yyyy-mm-dd输入值班开始日期", 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 "请按照格式yyyy-mm-dd输入值班截止日期", 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 Trim(DataGrid1.Columns("值班人").CellText(DataGrid1.Bookmark)) = "" Then

          MsgBox "值班人不能为空!", vbOKOnly + vbExclamation, ""

          Exit Sub

   End If

   rs_zhiban.Update

   'MsgBox "添加信息成功!", vbOKOnly + vbExclamation, ""

   DataGrid1.AllowAddNew = False

   DataGrid1.AllowUpdate = False

Else

   MsgBox "没有添加信息!", vbOKOnly + vbExclamation, ""

End If

   cmdadd.Caption = "确定增加记录"

   cmddel.Enabled = True

End If

adderror:

If Err.Number <> 0 Then

   MsgBox Err.Description

End If

End Sub

Private Sub cmdcancel_Click()

Unload Me

MDIForm1.Show

End Sub

Private Sub cmddel_Click()

Dim answer As String

On Error GoTo delerror

answer = MsgBox("确定要删除吗?", vbYesNo, "")

If answer = vbYes Then

   DataGrid1.AllowDelete = True

   rs_zhiban.Delete

   rs_zhiban.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 Form_Load()

Dim sql As String

On Error GoTo loaderror

sql = "select * from 值班管理"

rs_zhiban.CursorLocation = adUseClient

rs_zhiban.Open sql, conn, adOpenKeyset, adLockPessimistic     '打开数据库

'设定datagrid控件属性

DataGrid1.AllowAddNew = False                                 '不可增加

DataGrid1.AllowDelete = False                                 '不可删除

DataGrid1.AllowUpdate = False

Set DataGrid1.DataSource = rs_zhiban

Exit Sub

loaderror:

   MsgBox Err.Description

End Sub

Private Sub Form_Unload(Cancel As Integer)

第六章 系统测试

6.1 测试目的

在系统开发过程中存在许多复杂的问题,为了保证系统在投入运行中;保证软件的质量和运行的安全行,测试过程是必不可少的,同时也是关键的。测试是为了发现软件在运行过程中所出现的问题,并在出现问题时能够及时的做出相应的修改。测试的目标是保证系统在投入运行中的安全性和稳定性。

6.2 测试方法

本系统采用黑盒测试,测试方法是测试过程中至关重要的环节,采用的测试方法不同所产生的效果和所用的测试经费也是不同的。一个好的测试方法能够提高测试的效率,缩短测试的时间,也能够减少测试的经费。

6.3 测试记录与运行结果

6.3.1管理员登陆测试

输入密码错误:

图6.1登录测试界面

密码错误显示结果密码不正确:

图6.2密码错误显示界面

6.3.2信息查询测试

未输入查询信息:

图6.3查询测试界面

查询成功:

图6.4查询成功界面

6.3.3新增用户测试

用户输入重复:

图6.5新增用户测试界面

用户重复显示已有这个用户:

图6.6用户重复测试界面

经过测试,对于拥有正确管理员帐号和密码的管理员可以进入宾馆客房管理系统主菜单进行权限所允许的各项功能操作,并能正确实现已完成的各种功能。对不拥有正确帐号和密码的用户则拒绝其进入系统,以保护系统的秘密数据和保证其运行安全,防止恶意破坏。

结束语

在做宾馆客房管理系统以前,我对管理信息系统开发的理解只是停留在理论知识的水平上,是纸上谈兵,缺乏实际的软件开发经验。这次通过做软件工程课程设计,完成了《宾馆客房管理信息系统》的软件开发任务。在整个开发过程中遇到了很多的问题,但最终都一一解决,对其中比较深刻的几点体会总结如下:

第一,让我发愁的是对宾馆客房的具体业务流程不太熟悉,通过走访各宾馆和查阅资料,经过反复的修改论证,才完成了系统的分析和设计工作。

第二,面临的困难是不熟悉软件开发工具。我只好翻阅了有关VB的书籍,同时又不断向老师和同学们请教,才逐渐熟练和掌握了开发工具。

第三,从教条主义到理论联系实际的转变。因为没有写论文的经验,所以开始总是生搬硬套书本上的理论和概念,结果写出的论文就非常死板,缺乏新意,不能真正描述出自己软件的开发过程,犯了教条主义的错误。后来经过老师的多次指点,才对论文从结构和内容上都进行了大幅度的调整和修改,删掉了论文中过多的理论和概念,利用理论知识把自己实际的开发过程,用自己的语言和科学方法准确的表达出来,经过多次修改终于完成了论文的写作。这使作者真正体会到什么叫理论联系实际。

第四,在软件开发的过程中,开始编写菜单、窗口、表结构时,进展还是比较顺利,但当有些字段、表关联、数据窗口混淆在一起的时候,作者被搞得晕头转向。最后不得不重新整理表结构,修改字段名称,到 SQLServer中去修改数据库,才将系统的结构最终确定下来。对于源代码的编写,也是经过反复的修改测试,才使系统的设计功能得以正确实现。 

总之,理论+实践=知识,程序设计过程中,我以理论为指导,以实践为主体,将理论与实践紧密结合起来,亲身体会到只有将理论与实践有效的结合起来,才能使理论指导实践,又反过来丰富理论,二者相得益彰,使学习效率大大提高。

参考文献

[1] 萨师煊,王珊 .数据库系统概论.北京:高等教育出版社,1998年.

[2] 张海藩.软件工程导论(第三版).北京:清华大学出版社,1998年.

[3] 刘志铭,高春燕 .数据库开发实例解析VB.北京:机械工业出版社,1999年

[4] 龚沛曾,陆慰民.VB程序设计简明教程(第二版).北京:高等教育出版社,2003年.

[5] 张国有.软件工程上机指导书.太原:太原科技大学印刷厂,2007年.

[6] 白尚旺.PowerDesigner数据库建模技术.西安:西安电子科技大学出版社,1999年.下载本文

显示全文
专题