版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、宾馆管理信息系统摘要说到服务行业,住宿服务、销售服务是人们最早容易联想到的。其中住宿服务在古代就有客栈服务,以及如今被称为的现代宾馆服务(俗称酒店服务、饭店服务)。在现代宾馆服务行业中,其服务管理系统是庞大的系统,包括有客房价格服务功能、来客登记功能、额外服务收费功能等等。在本设计中,将来介绍如何制作简单的宾馆管理信息系统,实现部分实用功能,包括登录功能、客户入住登记功能、客户退房登记功能、客户历史记录查询功能、客户投诉登记功能、客户投诉处理登记功能、客户投诉查询功能、用户管理功能和数据安全管理功能等。第15章 综合实战iii宾馆管理信息系统 1 系统分析及设计1.1 需求分析在对系统进行设计
2、之前,首先必须了解项目的需求。在本实例中,所介绍设计的宾馆管理系统的功能具体要求如下:l 实现用户管理功能,可以通过管理级用户添加新用户,并设定其权限级别;同时,系统中还具有密码修改功能。l 实现客户入住和退房的登记功能。l 实现入住客户的历史查询功能。l 实现查看软件信息功能。1.2 系统设计根据上小节的需求分析,设计出宾馆管理系统的功能结构如图1所示。图1 宾馆管理系统的功能结构图宾馆管理系统的客户管理实体关系如图2所示。图2 客户管理实体关系图宾馆管理系统的用户管理实体关系如图3所示。图3 用户管理实体关系图从如上的功能结构图和实体关系图,设计出功能模块以及说明,具体如下:l 用户管理模
3、块 用于增加新用户、修改用户密码等操作。l 客户管理模块 用于客户入住登记和客户历史记录查询操作。l 系统信息模块 用于显示软件信息和退出操作。2 数据库设计采用的数据库为access桌面关系型数据库,使用ado对象作为数据连接对象。2.1 数据表设计在access数据库中,数据库中的数据表共有二张,分别是“系统设置”数据表、“入住”数据表。“入住”数据表主要用于存储来客入住及退房信息,包括有入住房号、房客姓名、身份证、入住年、入住月、入住日、退房年、退房月和退房日等字段。 “系统设置”数据表主要用于存储用户信息,包括有用户id、口令二个字段,具体如图5所示。数据库表设计完毕后,在数据表列表框
4、中分别依次双击“入住”和“系统设置”图标,进入数据记录输入状态,检查是否与所设计有出路,同时录入部分数据。图4 “入住”数据表图5 “系统设置”数据表图6 输入入住数据图7 输入用户信息2.2 连接数据库的准备在本例中,连接数据库与前面的实例稍有不同,准备工作不仅包括ado库文件的导入,还包括为数据库文件添加加密功能,与此同时连接数据库的语句也有所变化,其简要操作步骤如下:第1步 新建exe标准工程,并保存为“宾馆管理系统”工程。首先来导入库文件,即在菜单栏上选择【工程】【引用】命令,弹出“引用”对话框。第2步 在“引用”对话框中的列表框内选择【microsoft activex data o
5、bjects 2.8 library】复选框,如图8所示。第3步 在本例中将会有网格数据显示,同时选择mshflexgrid控件作为显示单元。由于mshflexgrid控件不是默认控件工具箱中的控件,因此需要将其从部件中导入,即右击控件工具箱,在弹出的下拉列表上选择【部件】命令,在弹出的“部件”对话框中的“控件”选项卡下的列表框中选定【microsoft hierachical flexgrid control 6.0】复选框,如图13所示,单击【确定】按钮,即可完成mshflexgrid控件的导入。第4步 完成数据库加密的设置,对access数据库文件加密有其特定的要求,需要以独占方式打开,
6、进入空文件的access数据库窗口,在菜单栏上选择【文件】【打开】命令,在弹出的“打开”对话框中,选择需要设置密码的数据库文件,在本例中是hotel.mdb,然后单击右下角的【打开】按钮右侧的下拉列表按钮,在弹出的列表上选择【以独占方式打开】命令,如图10所示,然后单击【打开】按钮,将数据库文件打开。选择图8 确认库文件是否导入选择图9 选定【microsoft hierachical flexgrid control 6.0】复选框选择图10 选择【以独占方式打开】命令第5步 在菜单栏上选择【工具】【安全】【设置数据库密码】命令,如图11所示。选择图11 选择【设置数据库密码】命令第6步 屏
7、幕弹出“设置数据库密码”对话框,在其中的“密码”和“验证”文本框中输入相同的预设定密码,在此处,“验证”相当于重复输入密码之意。图12 设置密码第7步 单击【确定】按钮即可完成access数据库文件加密工作,此后用户若想打开该文件,则会弹出消息对话框,提示输入密码,此举可以杜绝用户直接从数据库中获悉用户和密码等信息。同时,由于数据库文件进行加密操作,则使用ado数据对象连接数据时的语句也稍有变化,在后面的模块介绍中会有涉及,请读者仔细阅读。3 主要功能模块的设计功能模块的设计包括界面设计以及程序代码的设计,在宾馆管理系统中,主要功能模块设计主要包括主窗体模块的设计、登录模块的设计、用户管理模块
8、的设计、数据安全模块的设计、客户管理模块的设计、用户管理模块的设计和系统信息管理模块的设计。注意在本实例章节中所介绍的模块设计代码环节中,代码并不是完全的,此处只是将每个模块中的主要代码列出便于模块讲解,若要获取所有源代码,可查阅光盘中的源文件。3.1 主窗体模块的设计主窗体模块是指所有模块的操作界面,在本例中使用多文档窗体及菜单方式来实现,创建主窗体模块的简要操作步骤如下:第1步 在工程中创建mdi窗体,然后使用菜单设计功能,即在选定mdi窗体的前提下,在菜单栏上选择【工具】【菜单编辑器】命令,或者单击常用工具栏上的【菜单编辑器】按钮,打开“菜单编辑器”窗口,如图13所示。图13 菜单编辑器
9、第2步 在菜单编辑器上依次创建系统管理、新增用户、修改密码、分割线、备份数据、数据恢复、分割线、退出系统、客户管理、客户入住、分割线、客户查询、投诉管理、客户投诉、分割线、投诉查询和关于等菜单,其中菜单的名称及其他设置请参考源代码,最后设置的菜单清单显示第3步 菜单设计完成后,单击【确定】按钮,返回mdi窗体上,刚设计的菜单已经添加至窗体标题栏下段,显示效果如图14所示。图14 设计菜单效果将为主窗体上的各个菜单添加代码的内容介绍放至系统集成中,接下来介绍用户登录模块的设计。3.2 登录模块的设计图15 添加控件用户登录模块的功能是防止不合法用户的登录;用户名通过文本框控件输入,而非组合框列表
10、选择性输入,进一步增强安全性。设计用户登录模块主要部分的简要操作步骤如下:第1步 在一空白窗体上,添加标签控件、文本框控件和命令按钮控件,调整大小及位置,并设置其各项属性,显示效果如图15所示。第2步 为登录窗体添加【登录】按钮单击事件,实现数据库中用户名和密码的匹配、权限设置等功能,在窗体的代码编辑窗口中输入如下代码:private sub cmd_ok_click()if txt(0).text = or txt(1).text = then 不允许为空 msgbox 请输入完整的用户id和口令, vbcritical, 警告 exit sub else dim rs as new ado
11、db.recordset, rs1 as new adodb.recordset 打开ado数据连接对象,连接加密数据库,黑体部分为特殊之处 cn.open provider=microsoft.jet.oledb.4.0;data source= _ & app.path & _ hotel.mdb;jet oledb:database password=hero;admin,hero rs.open select * from 系统设置 where 用户id= & txt(0).text & ,_ cn, adopenkeyset, adlockoptimistic if rs.eof =
12、 true then 检查是否存在用户 msgbox 无此用户!, vbcritical, 警告 end elseif txt(1) = rs.fields(1) then rs1.open select 权限 from 系统设置 where 用户id= _ & txt(0).text & , cn, adopenkeyset, adlockoptimistic if rs1.fields(0) = guest then 进行权限设置 mdimanagement.show mdimanagement.mnu_addnew.visible = false mdimanagement.mnu_ba
13、ckup.visible = false mdimanagement.mnu_recover.visible = false mdimanagement.mnu_callege.visible = false mdimanagement.mnu_in.visible = false rs1.close unload me elseif rs1.fields(0) = system then rs1.close mdimanagement.show unload me end if else msgbox 密码错误, vbcritical, 警告 int_c = int_c + 1 if int
14、_c = 3 then msgbox 密码错误次数超过限制!, vbcritical, 警告 end end if end if rs.close cn.close end ifend sub但注意,一定要有“封闭”意识,即打开链接,要记住关闭,这是由于每个窗体模块均有打开连接操作,避免程序出错的举措。至此,登录模块的主要部分设计完成,接着进行用户管理模块的设计环节。3.3 用户管理模块的设计用户管理模块主要分为两个部分:即增加新用户窗体模块和密码修改窗体模块,前者用于实现新增新用户功能,后者用于实现合法用户的密码修改功能。设计用户管理模块主体的简要操作步骤如下:第1步 创建新增用户名窗体,即
15、在一空白窗体上,添加标签控件、文本框控件和组合框控件以及命令按钮控件,调整大小及位置后显示效果如图22所示。其中,“选择权限”组合框只有两个选项,即system选项(管理级别用户)和guest选项(普通级别用户)。第2步 设置窗体的启动事件,实现“选择权限”组合框选项初始化功能和建立本窗体内的数据连接,在窗体的代码编辑窗口内输入如下代码:private sub form_load() combo1.additem system 为组合框添加选项 combo1.additem guest cn.open provider=microsoft.jet.oledb.4.0;data source=
16、& app.path & _ hotel.mdb;jet oledb:database password=hero;admin,heroend sub第3步 设置【确定】按钮功能,即单击该按钮,将新用户、密码及权限添加至数据库中,窗体的代码编辑窗口内输入第4步 创建修改密码窗体模块,即任何合法用户均有修改密码的权利,只要知道用户名和正确密码的前提下,便可修改登录密码 如图17所示。图16图17 添加控件第5步 设置【确定】按钮功能,即单击该按钮,实现修改密码的目的,在窗体的代码编辑窗口中输入如下代码:private sub cmdok_click() if txt(0).text = or t
17、xt(1).text = or txt(2).text = then msgbox 请输入完整的信息!, vbcritical, 警告 else rs.open select 口令 from 系统设置 where 用户id= & txt(0).text & , _ cn, adopenkeyset, adlockoptimistic if txt(1).text rs.fields(0) then 将错误合并 msgbox 用户名或原密码错误, vbcritical, 警告 rs.close txt(0).text = txt(1).text = txt(2).text = exit sub
18、else rs.fields(0) = txt(2).text 直接修改数据库数据 rs.update 不需要使用addnew方法 rs.close msgbox 密码修改成功!, , 恭喜 txt(0).text = txt(1).text = txt(2).text = end if end ifend sub至此,用户管理模块的主要部分功能设计完毕,接下来设计数据安全模块。3.4 数据安全模块的设计数据安全模块的功能是为了确保数据的安全,比如前面所介绍的给数据库加密与连接加密数据的内容也属于数据安全的范畴,在此处将介绍通过备份数据库和恢复数据库的手段来达到数据安全的目的,其中备份的数据库
19、文件可自定义路径。设计数据安全模块主体部分的简要操作步骤如下:图18 选择公共对话框控件第1步 在备份数据库和恢复数据库文件时,分别需要使用到公共对话框(commondialog)中的“另存为”对话框和“打开”对话框,由于公共对话框控件属于非默认常用控件,因此需要将其从部件中导入,即右击控件工具箱,在弹出的下拉列表上选择【部件】命令,在弹出的【部件】对话框中的【控件】选项卡下的列表框中选定microsoft common dialog control 6.0复选框,如图18所示,单击【确定】按钮即可完成commondialog控件的导入。第2步 在主窗体界面上添加一commondialog控件
20、。3.5 客户管理模块的设计客户管理模块包含两个窗体模块:客户入住窗体模块和客户查询窗体模块,前者的功能将客户入住的入住房号、房客姓名、身份证号、入住日期和退房日期保存至数据库中,但该模块有其特殊之处,前四项内容是必须填写的,而最后一项“退房日期”不是必须的,这是由于该模块中存在两个过程,即入住过程和退房过程。后者的功能则是通过选择房号,查询所有数据库中关于该房号的历史数据。创建客户管理模块部分功能的简要操作步骤如下:第1步 创建客户入住窗体模块,即在一空白窗体上添加frame控件、标签控件、文本框控件、组合框控件和命令按钮控件,调整窗体大小及其他控件的各项属性,最后显示效果如图19所示,其具
21、体属性请参阅源代码。显示区mdi子窗体用于入住和退房用于入住图19 客户入住的控件集合第2步 设置客户入住窗体的启动事件,实现各个组合框项目的初始化以及按钮有效性的初始化操作,具体代码如下:private sub form_load() dim i as integer for i = 2008 to 2015 添加年份 combo1.additem i combo4.additem i next i for i = 1 to 12 添加月份 combo2.additem i combo5.additem i next i for i = 1 to 31 添加日 combo3.additem
22、i combo6.additem i next i cmddj.enabled = true cmdxg.enabled = true cmdqx.enabled = true cmdbc.enabled = false cmddyt.enabled = true cmdmyt.enabled = true cmdsyt.enabled = true cmdxyt.enabled = true cmdqd.enabled = false frame1.enabled = false cn.open provider=microsoft.jet.oledb.4.0;data source= _&
23、 app.path & hotel.mdb;jet oledb:database password=hero;admin,hero rs2.open 入住, cn, adopenkeyset, adlockoptimistic call viewdataend sub由于组合框不仅用于输入数据至数据库,还用于显示数据库数据的功能,因此为了使程序编程便利,需将组合框的style属性设置为0-dropdown combo。第3步 设置【登记】按钮功能,单击此按钮,主要实现将显示区的控件设置为有效,同时清空所有数据,具体代码如下:private sub cmddj_click() cmdbc.ena
24、bled = true 交替按钮有效性的设置 cmddj.enabled = false cmdxg.enabled = false cmddyt.enabled = false cmdmyt.enabled = false cmdsyt.enabled = false cmdxyt.enabled = false text1.text = 清空数据 text2.text = text3.text = combo1.text = combo2.text = combo3.text = combo4.text = combo5.text = combo6.text = frame1.enable
25、d = true 使显示区呈可编辑状态end sub第4步 设置【保存】按钮功能,实现显示区内的数据增添存至数据库中的功能,在其单击事件中输入如下代码:private sub cmdbc_click()if text1.text = or text2.text = or text3.text = _ or combo1.text = or combo2.text = or combo3.text = then msgbox 请补全前四项数据, vbcritical, 警告 exit sub 需确认前四项数据的完整性else rs2.addnew 使用addnew方法进行数据添加 rs2.fie
26、lds(1) = text1.text rs2.fields(2) = text2.text rs2.fields(3) = text3.text rs2.fields(4) = combo1.text rs2.fields(5) = combo2.text rs2.fields(6) = combo3.text rs2.fields(7) = combo4.text rs2.fields(8) = combo5.text rs2.fields(9) = combo6.text rs2.update cmdbc.enabled = false 交替按钮和frame控件的有效性设置 cmddj.
27、enabled = true cmdxg.enabled = true frame1.enabled = false cmddyt.enabled = true cmdmyt.enabled = true cmdsyt.enabled = true cmdxyt.enabled = true msgbox 保存成功!, , 提示end ifend sub第5步 设置【修改】按钮功能,该按钮功能简单,只需实现按钮和frame控件的有效性交替,具体代码如下:private sub cmdxg_click() cmdqd.enabled = true 按钮交替有效性要根据顺序逻辑设置 cmdxg.e
28、nabled = false cmddj.enabled = false frame1.enabled = trueend sub第6步 设置【确定】按钮功能,单击该按钮,实现将显示区的数据对应的修改至数据库中,其单击事件的代码如下:private sub cmdqd_click() if text1.text = or text2.text = or text3.text = _or combo1.text = or combo2.text = or combo3.text = then msgbox 请补全前四项数据, vbcritical, 警告 exit sub 需确认前四项数据的完整
29、性 else rs2.fields(1) = text1.text 修改记录集对象中数据 rs2.fields(2) = text2.text rs2.fields(3) = text3.text rs2.fields(4) = combo1.text rs2.fields(5) = combo2.text rs2.fields(6) = combo3.text rs2.fields(7) = combo4.text rs2.fields(8) = combo5.text rs2.fields(9) = combo6.text rs2.update cmddj.enabled = true 设
30、置按钮和frame控件有效性交替 cmdqd.enabled = false cmdxg.enabled = true frame1.enabled = false msgbox 修改成功, , 提示 end ifend sub第7步 设置【第一条】按钮、【上一条】按钮、【下一条】按钮和【末条】按钮的功能,实现数据库中数据在显示区内显示浏览,具体代码如下:private sub cmdsyt_click() 设置【上一条】按钮 if rs2.recordcount 0 then if rs2.bof = false then rs2.moveprevious if rs2.bof = true
31、 then rs2.movefirst call viewdata end ifend sub待添加的隐藏文字内容1private sub cmdxyt_click() 设置【下一条】按钮 if rs2.recordcount 0 then if rs2.eof = false then rs2.movenext if rs2.eof = true then rs2.movelast call viewdata end ifend subprivate sub cmddyt_click() 设置【第一条】按钮 if not rs2.bof then rs2.movefirst call vie
32、wdata end ifend subprivate sub cmdmyt_click() 设置【末条】按钮 if not rs2.eof then rs2.movelast call viewdata end ifend sub第8步 创建客户查询窗体模块,即在一空白窗体上添加frame控件、标签控件、文本框控件、mshflexgrid控件和命令按钮控件,调整窗体大小及其他控件的各项属性,最后显示效果如图29所示。提示在该模块中,只提供了一种查询方式,即通过房号进行查询操作,读者可以根据需要在源代码上进行功能添加。第9步 在模块窗体中,主要介绍的是【搜索】按钮功能设置,即单击该按钮,显示符合
33、房号条件的所有数据,若为空则显示空数据。在窗体的代码编辑窗口中输入如下代码:private sub cmdsearch_click() cn.open provider=microsoft.jet.oledb.4.0;data source= & app.path _& hotel.mdb;jet oledb:database password=hero;admin,hero rs.open select * from 入住 where 入住房号= & text1.text & , _cn, adopenkeyset, adlockoptimistic mshflexgrid1.colwidth(0)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年《画漫画》教案设计:从漫画到动画的跨越
- 2024教案设计趋势:大学物理教学策略解析
- 2021年湖北省孝感市八年级(下)期中考试物理试卷
- 矿山地质环境治理表格目录(施工单位)
- 物业纠纷起诉状
- 2024-2025学年高中历史专题五无产阶级革命家七中国改革开放的总设计师-邓小平一教学教案人民版选修4
- 2024-2025学年高考数学一轮复习专题3.3函数与导数的综合应用知识点讲解理科版含解析
- 探索2024:《剪窗花》教学课件的创新发展
- 第三单元《分数除法》(选择题篇十二大题型)单元复习讲义-2024-2025学年六年级数学上册(苏教版)(学生版+解析)
- 第一单元《负数的初步认识》(核心素养-填空题篇七大题型)单元复习讲义-2024-2025学年五年级数学上册(苏教版)(学生版+解析)
- 调酒初级基础理论知识单选题100道及答案解析
- 危废治理项目经验-危废治理案例分析
- 南京市2024-2025学年六年级上学期11月期中调研数学试卷二(有答案)
- 汽车防冻液中毒
- 粉条产品购销合同模板
- 2024至2030年中国自动车配件行业投资前景及策略咨询研究报告
- 2024-2030年中国蔗糖行业市场深度调研及发展趋势与投资前景研究报告
- 北师版 七上 数学 第四章 基本平面图形《角-第2课时 角的大小比较》课件
- 北师大版(2024新版)七年级上册生物期中学情调研测试卷(含答案)
- 产品包装规范管理制度
- 2024年海南省中考物理试题卷(含答案)
评论
0/150
提交评论