宾馆客房信息管理系统
成绩: __________
滨江学院花旗营校区
课程设计(专业实习)
院、系______________专业____________ 姓 名______________学号____________ 指导教师____________________________
二零一六 年 六 月 日
目录
1、系统需求分析 .......................................................................................................................................... 3
1.1 设计前调查 ...................................................................................................................................... 3 1.2 用户需求分析 .................................................................................................................................. 3 1.3 核心数据流图 .................................................................................................................................. 4 1.4 核心数据字典 .................................................................................................................................. 5 2、概念设计 . ................................................................................................................................................. 7
2.1 局部E-R 图 . ..................................................................................................................................... 7 2.2 全局E-R 图 . ..................................................................................................................................... 7 3、逻辑设计 . ................................................................................................................................................. 8
3.1 开发环境 .......................................................................................................................................... 8 3.2 关系模式形成以及规范 .................................................................................................................. 8
3.2.1有以下关系模式: ................................................................................................................ 8 3.2.2分解分析: ............................................................................................................................ 8 4、创建数据库 . ............................................................................................................................................. 8 5、程序以及调试和使用说明 ...................................................................................................................... 9
5.1程序登陆界面 ................................................................................................................................... 9 5.2 主面板 ............................................................................................................................................ 10 5.3具体介绍 ......................................................................................................................................... 11
5.3.1房态查看 .............................................................................................................................. 11 5.3.2 入住登记和预定房间 ......................................................................................................... 11 5.3.3 调房,住宿、退宿查询 ..................................................................................................... 12 5.3.4 挂帐,结帐,日报表,追加押金...................................................................................... 12 5.3.5报修和维修 .......................................................................................................................... 13 5.3.6添加用户,添加员工,修改密码....................................................................................... 13 6、总结 . ....................................................................................................................................................... 15 7、部分代码 . ............................................................................................................................................... 16
7.1模块 ................................................................................................................................................. 16 7.2添加员工 ......................................................................................................................................... 17 7.3 宾客入住 ........................................................................................................................................ 18
宾馆客房信息管理系统
摘要:本文论述了分析、开发、设计一个宾馆管理系统的过程。该系统融入宾馆科学、规范的现代管理思想,为提高各业务部门本身的工作效率,自动完成各业务部门之间的各种营业信息、帐务、报表的自动化传输与汇总,使各项业务工作制度化,科学化。结合先进的计算机技术,采用ASP 和SQL 开发而成。
通过设计分析,划分数据库,基本上满足了用户在客房管理等方面的需求。如对客房、用户的设置修改,相关的顾客服务等。系统中的各业务管理模块既可单机独立运行,也可在服务器/工作站组成的局域网络平台上联网运行。 关键词:宾馆管理, 信息系统, 数据库, 结构设计,VB
徐顺航
南京信息工程大学滨江花旗系,南京 210044
1、系统需求分析
1.1 设计前调查
近年来,宾馆业迅猛发展,市场的竞争日趋激烈,全面提高宾馆的软件管理水准,已成为宾馆业发展的当务之急。尤其是对于星级宾馆,既需要完成前台的一些服务工作,还需要完成后台的管理工作。然而,传统的人工管理模式已经远远不能满足有效、快捷地处理经营中产生的大量信息数据的需要,从而使得企业决策层无法及时、准确地掌握一线资料,继而影响对市场进行正确地分析和预测。像沿海城市三星级以上宾馆引进外方管理,使小部分宾馆管理水准几乎接近或达到国际水平。但对占80%以上的广大中小型宾馆来说,是难以做到的。因此,欲在竞争中甩开对手,取得优势,必须在经营、管理、产品、服务等方面具备独到之处。而对宾馆的经营状况起决定作用的是客房的管理。简单的服务标准已不是制胜的锦囊,只有管理做到最细微之处,才能让顾客体会到宾馆服务的高标准、高质量,而准确、快速、周全往往就是最基本的成功要素。
传统的管理方法已经不能适应现代社会的需要,因此采用电脑管理业务、财务等诸多环节已成为推动宾馆业迅速发展的先决条件,宾馆客房管理信息系统是各大中小型宾馆所需要使用的一个管理系统。
1.2 用户需求分析
建立一套功能完善的管理信息系统,既能满足业务人员日常处理的需要,增强企业经营全过程的数字化管理水平;又能满足管理人员决策分析的需要,提高公司管理层对公司经营反馈信息的响应速度。从而大幅度提高工作效率,提高实施管理的准确性、科学性,使担负管理的工作人员从繁杂的手工劳作中解脱出来。因而程序需要实现的功能有如下主要六大功能:
一、
客房管理:客房登记,入住情况查询,客房状态查看。
二、 三、 四、 五、 六、
宾客入住管理:客房预定,登记入住,房间调整,退房结帐 物资管理:物品登记,物品查询,报修和维修,定时提醒。 财务管理:追加押金,增删财务,日报表 员工管理:增改员工,查删员工
系统管理:增删管理员,修改密码,以及预留的基于SQL 的数据库管理(该程序考虑到
作为课程设计和信息系统不是很大,使用了单机版的ACCESS ,以求方便 写程序) 七、
其他功能:界面管理(提供两套外观:经典外观和春天里)
1.3 核心数据流图
(宾馆客房管理系统的数据流——客人信息)
(宾馆客房管理系统的数据流——入住登记)
(宾馆客房管理系统的数据流——房间状态)
(宾馆客房管理系统的数据流——帐务信息)
1.4 核心数据字典
[宾客入住信息表:Cmanage]
[客房登记表:Roomlogin]
[管理员表::pw]
表:Smanage]
[维修/报修表:fix]
[提醒表:Reminder]
财务管理
[
2.2 全局E-R 图
[全局E-R 图]
3、逻辑设计
3.1 开发环境
开发语言:Visual Basic
开发平台:windows xp,1G内存,集成显卡。
开发工具:Visual Basic 6.0企业版,SQL Server 2000,Access 2003
3.2 关系模式形成以及规范
3.2.1有以下关系模式:
PW(user,pwd,power);
Empl(eid,ename,eage,esex,eaddress,etel,ejob,ejtime,ejage); Fix(Fid,fname,froom,fstatue,ffdate,fpay,fman,fuser);
Gmanage(Gid,gname,gtype,gnum,gprice,guse,gsum,gdate,guser,gdw); Roomlogin(Rid,rname,rtype,rdescribe,rprice,rstatue,ruser); Reminder(remid,remname,remdate,remtype,remstatue,remuser); Smanage(Sid,sreason,sin,sout,ssum,sdate,sman,scomp,suser);
Cmanage(cnumber,cname,cictype,cicnum,csex,caddress,ctel,cmember,croom,ctype,cprice,
cindate,cintype,coutdate,cya,cyaadd,cstatue,cchange,creason,cmtel,cmmeeting,cmcar ,cmdamage,cmother,cmshould,cmpay,cmback,cuser);
3.2.2分解分析:
1)各分量都是不可分割的数据项。满足第一范式;
2)每一个关系中的非码属性都完全函数依赖于码,符合第二范式; 3)每个关系中的主属性不传递依赖关系中的每个关系键,符合第三范式;
4)关系中所有非主属性对每个码都是完全依赖,且所有主码对于每个不包含它的码也是完全函数依赖,没有任 何属性完全函数依赖非码的任何一组属性
4、创建数据库
1)创建数据库, 让数据库可以动态增长 create database hotel
on
(name=hotel_data, filename='E:\hotel.mdf',
size=5mB,maxsize=20mb,filegrowth=10%)
log on
(name=hotel_log, filename='E:\hotel.ldf',
size=2mb,maxsize=5mb,filegrowth=1mb) go
2) 创建PW 用户表
use hotel go
create table pw
(user char (12) not null primary key, Pwd char(8) not null, Power char(1) not null ) go
3) 创建客房登记表RoomLogin
create table roomlogin
(rid char (12) not null, Rname char(20) not null primary key, Rtype char(10) not null Rdescribe char(100), Rprice money not null, Rstatue char(8) not null, Ruser char(12) not null,) go
4)同上创建提醒表Reminder 、物品表Gmanage 、维修表fix 、员工表Empl 、帐务表Smanage 、客户如住表Cmanage
5、程序以及调试和使用说明
5.1程序登陆界面
[说明:进入登陆界面后,系统会自动加载已有的用户,让用户选择自己的帐户进行登陆,密码输入三次后关闭窗口;用控件属性设置来实现用户定义的完整性:密码最大长度为8。用户名错误,或密码错误,系统都会对其进行提醒,以达到正确输入,本程序设置一超级用户:admin ,权限为1,其他用户的权限均为0。超级用户能对押金进行追加,其他用户必须在超级用户协助下才能完成押金追加]
5.2 主面板
[说明:主界面用VB 中的MDIForm ,多入口提供给用户操作,包括菜单栏、工具栏(可选择显示和不
显示)、侧边栏(可隐藏) 、主面板Panel(提供操作员最常用的操作,节约时间) ,在状态栏可以显示系统时间和当前用户以及需要维修的房间数。实现了所有要求的功能
]
[说明:提供两种风格供用户选择。在vb 模块里有一函数change(),一变量保存当前风格类型,当每次show 一窗口时,就会调用该函数通过变量判断是显示那种风格]
5.3具体介绍
5.3.1房态查看
[说明:在主面板上的快速入口上点击房态查询,显示当前房间入住图形界面。直观、方便。点击房间能显示在该房间入住过的客户。嵌入的查询语句为:"select
cnumber,cname,cictype,cicnum,csex,caddress,ctel,cmember,croom,ctype,cprice,cindate,coutdate ,cstatue from cmanage where croom='" & Command1(Index).Caption & "'" ,Command1(Index).Caption为当前按下的要查询的房间按钮的名称]
5.3.2 入住登记和预定房间
[说明:点" 登记", 系统自动在 roomlogin表中rstatue='空闲' 的房间名字添加到
房间号码的下拉列表
中,供客户选择房间,用户可以选择" 现开/预定" 当用户选择下拉列表中的一个房间时,系统自动将roomlogin 中该房间的标准类型,价格自动加载显示,房间状况一目了然。其他用户自定义完整性约束都通过对控件的属性设置来完成,当用户输入数据破坏完整性时,系统会发出警告,以保持数据库的完整性]
5.3.3 调房,住宿、退宿查询
[说明:通过入口可以打开窗体。当客户需要调整房间时,点登记后,系统自动加载已入住客户的房间和空闲的房间号码,当用户选择要调房的客户时,系统自动加载客户的信息。选择目标房间时候,系统自动加载房间信息。用户确定调房后,系统修改数据库:原房间状态改为空闲,目标房间改为入住。原住房产生的费用将加在新入住房间上, 而提醒表中原房间改为现房间。因而需要修改三个表:
Cmanage,roomlogin,reminder. 而查询入住信息的嵌入sql 语句为:"select
cnumber,cname,cictype,cicnum,csex,caddress,ctel,cmember,croom,ctype,cprice,cindate,coutdate ,cstatue from cmanage", 其他查询语句雷同,此后不在赘述。在文本框里输入要查询的姓名,MSFlexGrid 空间将会显示查询结果,嵌入的查询语句为: "select
cnumber,cname,cictype,cicnum,csex,caddress,ctel,cmember,croom,ctype,cprice,cindate,coutdate ,cstatue from cmanage where cname like '" & Text1.Text & "*'"]
5.3.4 挂帐,结帐,日报表,追加押金
[说明:追加押金窗体. 系统自动加载已入住客户号码,当用户选择客户号码时候,系统自动加载客户信息,用户添加押金后,保存时系统对cmanage 表进行修改,保存数据;结帐窗体。系统自动加载已入住还没退
房的房间号,用户选择要退房的房间号,系统加载客户信息以需付款和明细供核对,确定结帐后,系统将
对 cmanage表,smanage ,reminder ,roomlogin 进行修改,以保持数据库的参照完整性。如果是挂帐,用户可以选择挂帐,在客户结帐的时候,调出挂帐结帐窗体,系统自动加载挂帐的单位,用户选择挂帐单位,系统自动加载需还金额。挂帐结帐只对smanage 表操作。而日报表显示smange 里的信息,提供按日期查找的方法,打印当天的帐务明细。查询的嵌入sql 语句为:"select sreason,sin,sout,ssum,sdate,sman,scomp,suser from smanage where sdate =#" & DTPicker1.Value & "#"。在该处开始一直调试不出,后来发现在sql 语句中对日期要加"#"来格式说明是日期型的。
5.3.5报修和维修
[说明:打开该窗体,左边有一组option 选项。当选报修时候,系统自动加载空闲的房间号。如果为入住的房间报修,则需先调房退房后才能报修,总不能让客户住在需维修的房间中吧。确定报修后。系统将在reminder 表中增加一条需提醒事项,即需维修事项,传递 房间号 和维修状态 给 reminder表做为关键字。在主窗体中便会有提示需要维修的房间,可以通过房态查询,查看需要维修的房间号。维修完后要进行登记,选择登记后,系统加载当前状态为 维修的房间,记录维修费用和维修员,确定后,系统将操作 roomlogin 和reminder 表,保持数据库系统的参照完整性]
5.3.6添加用户,添加员工,修改密码
[说明:只有管理员,即超级用户才能添加操作员和员工,但是普通拥护可以修改自己的密码。添加操作员的代码为: If Text1.Text "" And Text2.Text "" And Text2.Text = Puser.Fields("pwd") Then
If Text3.Text "" Then
Puser.Edit
Puser.Fields("pwd") = Text3.Text
MsgBox ("密码修改成功, 退出操作员密码修改!")
Puser.Update
main.Enabled = True
Unload Me
Else
MsgBox ("请输入新密码!!")
End If
Else
If Text1.Text = "" Then
MsgBox ("请输入操作员!")
Text1.SetFocus
Else
If Text1.Text Puser.Fields("user") Then
Text1.SetFocus
Text1.Text = ""
MsgBox ("无此操作员, 请重新输入
!")
End If
End If
If Text2.Text = "" Then
MsgBox ("请输入操作员原密码!")
Text2.SetFocus
Else
If Text2.Text Puser.Fields("pwd") Then
MsgBox ("原密码错误, 请重新输入原密码!")
Text2.SetFocus
End If
End If
End If 这是才用 DAO 3.6对象来对数据库进行操作,这是另一种方法对数据库操作
cr = "insert into pw values(' " & text1.text& " ',' " & text2.text & " ' ,'0')"
mydb.Execute cr 这是直接用嵌入sql 语句来插入记录。两种效果都一样
]
6、总结
选定课题后,开始收集相关资料和设计软件架构。到宾馆调查和到网上收集信息,以及参考了其他信息管理系统,心里就有了轮廓。设计好软件的几大模块,采用自顶向下的经典设计方法,确定实现的功能,开始设计数据库。运用相关的数据库知识,设计好数据表,确定字段。并通过模式分解,确定其是无损的连接。有了数据库作为整个设计的底层,就好象盖房子有了骨架,而软件就象是砖瓦,只是将骨架填充完善,给客户一个好的外观。因而数据库的设计尤为重要,但是在设计之初,往往会有很多情况不能考虑周全,再加之一个人编写,所以进度一度很慢,后来通过列出所有可能的情况,以及同同学老师等交流,总结并重新设计了数据库,终于是能有一个比较好的效果。通过将所有和客户相关的财务信息都加到客户信息里,避免了对多表的操作,避免了有可能会出现的参照完整性不一致的问题。继而是软件的设计,由于对vb 还是算比较熟悉,因而有了数据库的支撑,就得心应手了。考虑到用户使用的方便性,软件主界面提供了很多入口,以及直观的图形显示,方便用户操作,因而也给客户带来方便,免去了客户的很多等待时间,提升宾馆的形象。同时提供了两套外观,春天里这套外观可以避免用户的审美疲劳。整个程序完成了,又花了大量的时间对其进行调试。通过白盒黑盒测试,程序能正常的显示结果和准确报错,达到了单机运行的效果。接着在不同机环境器上测试,有些控件因为没有带走,所以报错,后来带上控件后都能正常运行,在xp 和win7上都能正常运行。
由于公司规模和业务量大,因而信息系统不可能只在单机上运行,所以才用C/S,或B/S结构比较合
适。因时间关系所以没能完成,只预留了接口,供以后开发扩展用。当然这次课程设计因为是数据库的课程设计,重点在数据库的设计,所以对于软件体系结构风格,没有考虑,只求能达到目的!
7、部分代码
7.1模块
Public NowUser As String '当前用户名
Public nowpower As String '当前用户权限
Public mydb As DAO.Database '定义数据库
Public bgi As Integer '判断背景风格
Public Sub LoadAccess()
Set mydb = DAO.OpenDatabase(App.Path & "\hotel.mdb")
End Sub
Public Sub bground()
If bgi = 1 Then
main.Picture = panel.Image1.Picture
panel.Picture = panel.Image1.Picture
panel.Picture1.Picture = panel.Image1.Picture
main.Picture1.Picture = panel.Image1.Picture
main.Picture2.Picture = panel.Image1.Picture
Unload findEm: Unload findlogin: Unload fingG: Unload InLogin: Unload LogoutBG: Unload managekf: Unload payoff: Unload View
Unload changelogin: Unload findLogout: Unload find: panel.resizeme
Else
If bgi = 0 Then
main.Picture = Nothing
panel.Picture = Nothing
panel.Picture1.Picture = Nothing
main.Picture1.Picture = Nothing
main.Picture2.Picture = Nothing
Unload findEm: Unload findlogin: Unload fingG: Unload InLogin: Unload LogoutBG: Unload managekf: Unload payoff: Unload View
Unload changelogin: Unload findLogout: Unload find: panel.resizeme
End If
End If
End Sub
7.2添加员工
Private Declare Function ReleaseCapture Lib "user32" () As Long '获取“变动”信息
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_SYSCOMMAND = &H112
Private Const SC_MOVE = &HF010&
Private Const HTCAPTION = 2
Dim Emp As Recordset
Private Sub DTPicker1_Change()
Text7.Text = Year(Date) - Year(DTPicker1.Value)
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then
'如果按下鼠标左键
Dim ReturnVal As Long
X = ReleaseCapture()
ReturnVal = SendMessage(addEm.hwnd, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0) End If
End Sub
Private Sub Form_Load()
LoadAccess
Set Emp = mydb.OpenRecordset("select * from empl")
Text1.Text = Year(Date) & Month(Date) & Day(Date) & Hour(Time) & Minute(Time) Text7.Text = Year(Date) - Year(DTPicker1.Value)
End Sub
Private Sub Command1_Click() '================================================!!!!!!!!!!!!!!!!!!!!!!!!!!!
' 缺少判断员工号是否存在的信息
If Text1.Text = "" Or Text2.Text = "" Or Text4.Text = "" Then
msg$ = MsgBox("请确认 员工号、员工姓名、职务 已经输入", 48, "Error")
Else
Emp.AddNew
Emp.Fields("emid") = Text1.Text
Emp.Fields("ename") = Text2.Text
Emp.Fields("esex") = Combo1.Text
Emp.Fields("ejob") = Text4.Text
Emp.Fields("eage") = Val(Text5.Text)
Emp.Fields("etel") = Text6.Text
Emp.Fields("ejtime") = DTPicker1.Value
Emp.Fields("ejage") = Text7.Text
Emp.Update '更新记录
Emp.Close
msg$ = MsgBox("添加成功", 64, "Success!")
Unload Me
End If
End Sub
Private Sub Command2_Click()
Text1.Text = "": Text2.Text = "": Combo1.Text = ""
Text4.Text = "": Text5.Text = "": Text6.Text = ""
End Sub
Private Sub Command3_Click()
main.Enabled = True
Unload Me
End Sub
7.3 宾客入住
Dim i As Integer '定义一个整型变量
Dim InLog As Recordset
Dim Room As Recordset
Dim Remind As Recordset
Private Sub Combo4_Click()
Set Room = mydb.OpenRecordset("select * from roomlogin where rname='" & Combo4.Text & "'") ZSDJ(4).Text = Room.Fields("rtype"): ZSDJ(5).Text = Room.Fields("rprice")
End Sub
Private Sub Combo5_click()
Label11.Caption = Combo5.Text
End Sub
Private Sub DTP3_Change()
ZSDJ(6).Text = DTP3.Value - DTP1.Value
End Sub
Private Sub Form_Load()
If bgi = 1 Then Me.Picture = panel.Image1.Picture
If bgi = 0 Then Me.Picture = Nothing
DTP1.Value = Date: DTP2.Value = Date: DTP3.Value = Date '初始化日期及时间
czy.Text = NowUser '赋值给czy
LoadAccess
End Sub
Private Sub Form_Unload(Cancel As Integer)
main.Enabled = True '设置主窗体有效
End Sub
Private Sub Combo2_Click()
If Combo2.Text = "折扣" Then
ZSDJ(8).Enabled = True '设置ZSDJ(8)有效
ZSDJ(8).SetFocus 'ZSDJ(8)获得焦点
End If
If Combo2.Text = "招待" Then
ZSDJ(8).Enabled = True '设置ZSDJ(8)有效
ZSDJ(8).Text = 0 '赋值给ZSDJ(8)
End If
End Sub
Private Sub ZSDJ_Change(Index As Integer)
Select Case Index
Case 6
ZSDJ(7).Text = Format(Val(ZSDJ(6).Text) * Val(ZSDJ(5).Text), "0.00") '计算折前宿费
ZSDJ(9).Text = ZSDJ(7).Text '赋值给ZSDJ(9)
ZSDJ(8).Text = 100
DTP3.Value = DTP1.Value + Val(ZSDJ(6).Text) '计算退宿日期
Case 8
ZSDJ(9).Text = Format(Val(ZSDJ(7).Text) * Val(ZSDJ(8).Text) / 100, "0.00") '计算实际宿费
Case 10
If ZSDJ(10).Text "" Then
ZSDJ(10).Text = Val(ZSDJ(10).Text) '用val 函数将字符串转换为数字
DTP2.Value = DTP1.Value + Int(Val(ZSDJ(10).Text) / Val(ZSDJ(5).Text)) '计算提醒日期
End If
End Select
End Sub
Private Sub ZSDJ_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer) Select Case Index
Case 0
If KeyCode = vbKeyReturn Then Combo1.SetFocus '按回车键Combo1获得焦点 Case 1
If KeyCode = vbKeyReturn Then ZSDJ(2).SetFocus '按回车键ZSDJ(2)获得焦点 Case 2
If KeyCode = vbKeyReturn Then ZSDJ(3).SetFocus '按回车键ZSDJ(3)获得焦点 Case 3
If KeyCode = vbKeyReturn Then DBCombo1.SetFocus '按回车键ZSDJ(2)获得焦点
Case 4
If KeyCode = vbKeyReturn Then ZSDJ(5).SetFocus '按回车键ZSDJ(5)获得焦点 Case 5
If KeyCode = vbKeyReturn Then ZSDJ(6).SetFocus '按回车键ZSDJ(6)获得焦点 Case 6
If KeyCode = vbKeyReturn Then ZSDJ(10).SetFocus
Case 8
If KeyCode = vbKeyReturn Then ZSDJ(10).SetFocus '按回车键ZSDJ(10)获得焦点 Case 10
If KeyCode = vbKeyReturn Then ZSDJ(11).SetFocus 'ZSDJ(11)获得焦点
Case 11
If KeyCode = vbKeyReturn Then Comok.SetFocus '按回车键Comok 获得焦点
End Select
End Sub
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then ZSDJ(1).SetFocus '按回车键ZSDJ(1)获得焦点
End Sub
Private Sub DBCombo1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then ZSDJ(5).SetFocus 'ZSDJ(5)获得焦点
End Sub
Private Sub comdj_Click()
' 查询空闲房间信息
Set Room = mydb.OpenRecordset("select * from roomlogin where rstatue='空闲'")
'On Error GoTo u
Room.MoveFirst
Combo4.Text = Room.Fields("rname")
ZSDJ(4).Text = Room.Fields("rtype")
ZSDJ(5).Text = Room.Fields("rprice")
Set Room = mydb.OpenRecordset("select * from roomlogin ")
While Not Room.EOF
If Room.Fields("rstatue") = "空闲" Then Combo4.AddItem Room.Fields("rname") Room.MoveNext
Wend
bh.Text = Year(Date) & Month(Date) & Day(Date) & Hour(Time) & Minute(Time) & Second(Time) ' 设置编号
ZSDJ(8).Text = "": ZSDJ(10).Text = ""
'设置控件有效或无效
Comok.Enabled = True: Comdj.Enabled = False: Comprint.Enabled = False: ZSDJ(8).Enabled = True
ZSDJ(10).Enabled = True: Combo1.Enabled = True: DTP3.Enabled = True
Combo2.Enabled = True: ZSDJ(0).Enabled = True: ZSDJ(0).SetFocus
Label11.Caption = Combo5.Text
Exit Sub
'u: h$ = MsgBox("没有空闲房间, 客房已满", 48, "Error"): Comok.Enabled = False:
Comprint.Enabled = False: Comcancel.Enabled = False: Comend.Enabled = True: Comdj.Enabled = True
End Sub
Private Sub comok_Click() '===========================!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11
Set InLog = mydb.OpenRecordset("select * from cmanage")
If ZSDJ(0).Text "" And ZSDJ(1).Text "" And Text1.Text "" And ZSDJ(6).Text "" Then
InLog.AddNew
If bh.Text "" Then InLog.Fields("cnumber") = bh.Text
If ZSDJ(0).Text "" Then InLog.Fields("cname") = ZSDJ(0).Text
If Combo1.Text "" Then InLog.Fields("cictype") = Combo1.Text
If ZSDJ(1).Text "" Then InLog.Fields("cicnum") = ZSDJ(1).Text
If ZSDJ(2).Text "" Then InLog.Fields("caddress") = ZSDJ(2).Text
If Text2.Text "" Then InLog.Fields("ctel") = Text2.Text
If Combo4.Text "" Then InLog.Fields("croom") = Combo4.Text
If Combo5.Text "" Then InLog.Fields("cintype") = Combo5.Text
If Combo3.Text "" Then InLog.Fields("csex") = Combo3.Text
If Text1.Text "" Then InLog.Fields("cmember") = Text1.Text
If ZSDJ(4).Text "" Then InLog.Fields("ctype") = ZSDJ(4).Text
If DTP1.Value "" Then InLog.Fields("cindate") = DTP1.Value
If ZSDJ(5).Text "" Then InLog.Fields("cprice") = Val(ZSDJ(5).Text)
If ZSDJ(9).Text "" Then InLog.Fields("cmshould") = ZSDJ(9).Text
If ZSDJ(10).Text "" Then InLog.Fields("cya") = Val(ZSDJ(10).Text)
If DTP3.Value "" Then InLog.Fields("coutdate") = DTP3.Value
InLog.Fields("cstatue") = "1"
InLog.Update
'添加住宿预收信息
Set Room = mydb.OpenRecordset("select * from roomlogin where rname='" & Combo4.Text & "'") Room.Edit
Room.Fields("Rstatue") = "入住"
Room.Update
Set Remind = mydb.OpenRecordset("select * from reminder") '更新提醒表
Remind.AddNew
Remind.Fields("remname") = Combo4.Text
Remind.Fields("remdate") = DTP2.Value
Remind.Fields("remtype") = Combo5.Text
Remind.Fields("remstatue") = "1"
Remind.Fields("remuser") = NowUser
Remind.Update
f$ = MsgBox("操作成功", 64, "Tips")
'设置控件有效或无效
'/////////////////////////////////////////////////////////////////////////////// ZSDJ(8).Enabled = False: ZSDJ(10).Enabled = False
Combo4.Enabled = False: Combo1.Enabled = False: DTP3.Enabled = False
Comok.Enabled = False: Comprint.Enabled = True: Comdj.Enabled = True
Comprint.SetFocus: ZSDJ(0).Enabled = False
Else
H$ = MsgBox("请确认姓名、证件号码和入住人数都已经填写", 48, "Tips")
End If
End Sub
Private Sub comcancel_Click() '取消操作
For i = 0 To 11
ZSDJ(i).Enabled = False
Next i
Comprint.Enabled = False: Comok.Enabled = False: Combo4.Enabled = False
Combo1.Enabled = False: Combo2.Enabled = False: DTP2.Enabled = False: DTP3.Enabled = False Comdj.Enabled = True
End Sub
Private Sub comprint_Click() '打印住宿登记单据
Dim BeginPage, EndPage, NumCopies, i
'将 Cancel 设置成 True。
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
'显示“打印”对话框。
CommonDialog1.ShowPrinter
'从对话框中获取用户选定数值。
BeginPage = CommonDialog1.FromPage
EndPage = CommonDialog1.ToPage
NumCopies = CommonDialog1.Copies
For i = 1 To NumCopies
'在此放置代码,将数据发送到打印机。
Next
Exit Sub
ErrHandler:
'用户按下了“取消”按钮。
Exit Sub
End Sub
Private Sub comend_Click()
Unload Me
main.Enabled = True
End Sub
参考文献
[1] 钱雪忠. 新编Visual Basic程序设计实用教程[M]. 北京: 机械工业出版社, 2004
[2] 求是科技, 刘韬, 骆娟. Visual Basic进销存系统开发实例导航[M]. 北京: 人民邮电出版社, 2003
[3] 赛奎春. Visual Basic工程应用与项目实践[M]. 北京: 机械工程出版社, 2005
[4] 求是科技. Visual Basic6.0数据库开发技术与工程实践[M]. 北京: 人民邮电出版社, 2004
[5] 辛本柱. Visual Basic从入门到实践[M]. 北京: 清华大学出版社, 2009 [6] 源江科技. VB编程技巧280例
[M]. 上海: 上海科技普及出版社, 2002 [7] 本书编委会. Visual Basic6.0/.NET精彩编程150例Ⅲ[M]. 西安: 西北工业大学出版社, 2003
[8] 明日科技, 高春艳, 李俊民, 刘彬彬. Visual Basic应用开发完全手册[M]. 北京: 人民邮电出版社, 2006
[9] 吴靖. 数据库原理及应用[M]. 北京: 机械工业出版社, 2009 [10] 王珊, 萨师煊. 数据库系统概论(第四版). 北京: 高等教育出版社,
2010
[11] 郑阿奇, 刘启芬, 顾韵华. SQL Server 应用教程. 北京: 人民邮电出版社, 2011
[12] 沈光阳, 李劲. SQL Server 2000的应用. 北京: 清华大学出版社, 2001
[13] 黄梯云, 李一军. 管理信息系统(第四版). 北京: 高等教育出版社, 2011
[14]
崔洪芳, 李凌春, 包琼. 数据库应用技术[M]. 武汉: 华中科技大学出版社, 2009
[15]
郭圣路, 张荣圣. Visual Basic6.0中文版从入门到精通[M]. 北京:
电子工业出版社, 2008
[16]
谭浩强. Visual Basic程序设计[M]. 北京: 清华大学出版社, 2004