Dreamweaver实现客房预订业务系统

dreamweaver

客房预订业务的特点是顾客流动性大,其用户注册方式更为灵活,预订业务除了常用的验证外,还要防止在预订满的情况下继续预订客房。本实例将为读者介绍如何实现客房预订业务。
  效果说明

  图 96-1 所示是预订业务的基本界面,用户可以直接登录或注册并预订客房。

  创作构思

  通过程序检测用户是否成功登录,登录错误的是否能够注册成功,并添加用户的预订资料。通过“ DataTime ”类下的“ Compare ”,将用户预订的时间与其他用户已预订的时间进行比较,以检测是否预订满。

  操作步骤

  步骤一 设置应用程序的环境

  ( 1 )复制光盘中实例 96 的内容。将“光盘 \ 源文件 \ 实例 96 ” 目录下的所有文件复制到“ C:\ Inetpub\wwwroot\ ”目录下。在 IIS 服务器中设置默认网站的主目录为“ C:\ Inetpub\wwwroot\hotel ”(可参考实例 1 中的相关方法)。在 Dreamweaver 中新建站点“ hotel ”,其站点目录为“ C:\ Inetpub\wwwroot\hotel ”,建立站点的方法可参照实例 2 。

  ( 2 )“ hotel.mdb ”结构。运行 Access ,打开“ C:\ Inetpub\wwwroot\adweb\data\hotel.mdb ”,可以看到数据库“ hotel.mdb ”中有“ tbOder ”、“ tbUser ”和“ tbRoom ” 3 个数据表。“ tbOder ”表用于存储用户订房的相关资料,该表的数据结构如图 96-2 所示。“ tbUser ”表用于存储用户的注册信息,该表的数据结构如图 96-3 所示。“ tbRoom ”表用于存储酒店各类客房的价格及相应的客房数,该表的数据结构如图 96-4 所示。数据库“ hotel.mdb ”中还有一个查询表“ UserOrder ”,该查询表在设计视图中的设置如图 96-5 所示。

  ( 3 )建立数据库链接“ ADconn ”,链接数据库“ C:\ Inetpub\wwwroot\adweb \data\hotel.mdb ”,方法可参考实例 75 。

步骤二 设计基本页面
  ( 1 )“ index.aspx ”页面结构。打开“ index.aspx ”,该页面是素材直接提供的,初始打开时如图 96-6 所示。图中①、②所示是图像而不是图像按钮,圆角方框①所示的图像其作用是添加“ OnClick ”动作以显示“ Layer1 ”层,该层中添加了一个日历控件,其 ID 为“ MyCalendar1 ”;圆角方框②所示图像的作用是添加“ OnClick ”动作以显示“ Layer2 ”层,该层中添加了一个日历控件,其 ID 为“ MyCalendar2 ”。

  提示:“ index.aspx ”初始页面中其他控件的设置情况如表 96-1 所示。

  表 96-1 “ index.aspx ”初始页面中其他控件的设置情况

  

  控件对应文本

  控件类型

  控件 ID

  入住时间

  asp :文本框

  StartTime

  离店时间

  asp :文本框

  LastTime

  预订数量

  asp :文本框

  OrderNum

  会员 ID

  asp :文本框

  UserID1

  会员密码

  asp :文本框

  UserPass1

  注册 ID

  asp :文本框

  UserID

  真实姓名

  asp :文本框

  UseName

  登录密码

  asp :文本框

  UserPass

  重复密码

  asp :文本框

  UserPass2

  电子邮件

  asp :文本框

  UserEmail

  联系电话

  asp :文本框

  UserTel

  【现在预订】按钮

  asp :按钮

  Orderbt

  【全部重置】按钮

  表单按钮

  Submit (其动作为重置表单)

 
  ( 2 )添加数据集【 RoomData 】。在【服务器行为】面板中添加数据集【 RoomData 】,其在【数据集】对话框中的设置如图 96-7 所示。

  ( 3 )修改 SQL 命令。在【数据集】对话框中单击【高级】按钮,切换到【数据集】高级对话框,将 SQL 命令由 SELECT Pice,RoomID, RoomNum,RoomType FROM tbRoom 改为 SELECT Pice,RoomID, RoomNum, trim(RoomType)+chr(32)+cstr(Pice) As RoomType FROM tbRoom ,如图 96-8 所示。

( 4 )添加数据列表。单击 ASP.NET 快捷菜单中的【 asp :单选按钮列表】,操作如图 96-9 所示。

  ( 5 )为页面添加“ System.Data ”、“ System.Data.OleDb ”、“ System.Globalization ”和“ System.Threading ” 4 个命名空间,如图 96-10 中圆角方框所示。

  ( 6 )定义页面载入过程“ Page_Load ”,该过程的代码如下所述。

Sub Page_Load(ByVal Src As Object, ByVal E As EventArgs)
Dim i As Integer
If Not Page.IsPostBack Then
For i = 0 To RoomData.RecordCount - 1
Dim str1, str2 As String
str1 = RoomData.DefaultView(i).Row("RoomType")
str2 = CStr(RoomData.DefaultView(i).Row("RoomID"))
RoomRadio.Items.Add(New ListItem(str1, str2))
Next
End If
End Sub

  (读者可打开【光盘】|【源文件】|【实例 96 】|【 96.1.txt 】文件,直接复制)

  程序说明:

  该 “ Page_Load ”过程是在第一次载入页面时,为单选按钮列表“ RoomRadio ”添加列表项,添加列表项的标签值等于“ RoomData ”数据集下的字段“ RoomType ”,而选取值等于字段“ RoomID ”。

  提示:也许有人会问为什么不直接用单选按钮列表的数据绑定呢?这由于通过 Dreamweaver 进行数据绑定,在程序中经常会出现无法获取单选按钮列表选取值的错误。

  ( 7 )定义“ MyCalendar1_SelectionChanged ”过程,用于响应日历控件“ MyCalendar1 ”的“ SelectionChanged ”事件,该过程的代码如下所述。

Protected Sub MyCalendar1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs)Handles MyCalendar1.SelectionChanged
starttime.text = MyCalendar1.SelectedDate.ToShortDateString
End Sub

  (读者可打开【光盘】|【源文件】|【实例 96 】|【 96.2.txt 】文件,直接复制)

  ( 8 )定义“ MyCalendar2_SelectionChanged ”过程,用于响应日历控件“ MyCalendar2 ”的“ SelectionChanged ”事件,该过程的代码如下所述。

Protected Sub MyCalendar2_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs)Handles MyCalendar2.SelectionChanged
lasttime.text= MyCalendar2.SelectedDate.ToShortDateString
End Sub

 步骤三 实现客户预订业务

  ( 1 )实现客户预订业务的程序流程如图 96-11 所示。

   ( 2 )为页面添加 4 个全局变量,如图 96-12 中圆角方框所示。

  ( 3 )定义“ Usercheck ”函数。该函数用于检测用户是否登录正确,登录不正确时是否注册成功,如果用户登录正确或者注册成功,则该函数返回“ True ”,否则将返回“ False ”,该函数的代码如下所述。

Function Usercheck() As Boolean
Dim Hotelada1, Hotelada2 As OleDbDataAdapter
Dim HotelDataSet1, HotelDataSet2 As System.Data.DataSet
Dim Hoteldt1, Hoteldt2 As DataTable
Dim tbRow As DataRow
Dim yy As OleDbCommandBuilder
Hotelstring = "Select * From tbUser Where UserId='" & UserID1.Text & "' And UserPass='" & UserPass1.Text & "'"
Hotelada1 = New OleDbDataAdapter(Hotelstring, conn)
HotelDataSet1 = New System.Data.DataSet
Hotelada1.Fill(HotelDataSet1, "tbUser")
Hoteldt1 = HotelDataSet1.Tables("tbUser")
If Hoteldt1.Rows.Count > 0 Then
strName = Hoteldt1.Rows(0)("UserId")
Else
If (Trim(UserID.Text) <> Nothing) And (Trim(UserPass.Text) <> Nothing) _
And (Trim(UserName.Text) <> Nothing) And (Trim(UserEmail.Text) <> Nothing) _
And (Trim(UserTel.Text) <> Nothing) Then
Hotelstring = "Select * from tbUser"
Hotelada2 = New OleDbDataAdapter(Hotelstring, conn)
yy = New OleDbCommandBuilder(Hotelada2)
HotelDataSet2 = New System.Data.DataSet
Hotelada2.Fill(HotelDataSet2, "tbUser")
Hoteldt2 = HotelDataSet2.Tables("tbUser")
tbRow = Hoteldt2.NewRow
tbRow("UserId") = UserID.Text
tbRow("UserPass") = UserPass.Text
tbRow("UserName") = UserName.Text
tbRow("UserEmail") = UserEmail.Text
tbRow("UserTel") = UserTel.Text
Hoteldt2.Rows.Add(tbRow)
Hotelada2.Update(HotelDataSet2, "tbUser")
strName = UserID.Text
Else
Usercheck = False
Exit Function
End If
End If
Usercheck = True
End Function

( 4 )定义“ Roomcheck ”函数。该函数首先检测用户有没有选择预订客房类型,如果没有选择,则该函数返回“ False ”,接着在用户选择预订客房类型的情况下,检测所选择的客房类型在预订的时间段中是否已预订满,如果是,则返回“ False ”,否则将返回“ True ”,该函数的代码如下所述。

Function Roomcheck() As Boolean
Dim Hotelada1, Hotelada2 As OleDbDataAdapter
Dim HotelDataSet1, HotelDataSet2 As System.Data.DataSet
Dim Hoteldt1, Hoteldt2 As DataTable
Dim i, RoomI As Integer
If RoomRadio.SelectedItem.Value <> Nothing Then
Hotelstring = "Select * From UserOrder Where RoomID=" & RoomRadio.SelectedItem.Value
Hotelada1 = New OleDbDataAdapter(Hotelstring, conn)
HotelDataSet1 = New System.Data.DataSet
Hotelada1.Fill(HotelDataSet1, "UserOrder")
Hoteldt1 = HotelDataSet1.Tables("UserOrder")
Dim Date1, Date2 As Date
Date1 = StartTime.Text
Date2 = LastTime.Text
For i = 0 To Hoteldt1.Rows.Count - 1
Dim roomdate1, roomdate2 As Date
roomdate1 = Hoteldt1.Rows(i)("StartTime")
roomdate2 = Hoteldt1.Rows(i)("LastTime")
If (System.DateTime.Compare(Date1, roomdate1) And System.DateTime.Compare(roomdate2, Date1)) _
Or (System.DateTime.Compare(Date2, roomdate1) And System.DateTime.Compare(roomdate2, Date2)) _
Or (System.DateTime.Compare(roomdate1, Date1) And System.DateTime.Compare(Date2, roomdate2)) Then
RoomI += 1
End If
Next
Hotelstring = "select RoomNum From tbRoom where RoomID=" & RoomRadio.SelectedItem.Value
Hotelada2 = New OleDbDataAdapter(Hotelstring, conn)
HotelDataSet2 = New System.Data.DataSet
Hotelada1.Fill(HotelDataSet2, "tbRoom")
Hoteldt2 = HotelDataSet2.Tables("tbRoom")
If RoomI +CInt(OrderNum.Text) > Hoteldt2.Rows(0)("RoomNum") Then
Roomcheck = False
Exit Function
End If
Else
Roomcheck = False
Exit Function
End If
Roomcheck = True
End Function

  (读者可打开【光盘】|【源文件】|【实例 96 】|【 96.5.txt 】文件,直接复制)

  提示:程序中采用“ DataTime ”类下的“ Compare ”方法进行时间比较,查找出现时间重复的订单。以下 3 种情况属于时间重复:① 用户选择的入住时间小于订单中的“ StartTime ”字段值,选择的离店时间大于“ LastTime ”字段值;② 用户选择的入住时间大于订单中的“ StartTime ”字段值,选择的离店时间小于“ LastTime ”字段值;③ 用户选择的入住时间小于订单中的“ StartTime ”字段值,选择的离店时间小于“ LastTime ”字段值。查找得出的重复数如果等于该类型客房的最大客户数,则说明该时间段中该类型的客房已预订满。

  ( 5 )定义“ Orderinser ”过程用于添加用户预订客房的相关信息到“ tbOrder ”表中,该过程的代码如下所述。

Sub Orderinser()
Dim Hotelada2 As OleDbDataAdapter
Dim HotelDataSet2 As System.Data.DataSet
Dim Hoteldt2 As DataTable
Dim tbRow As DataRow
Dim yy As OleDbCommandBuilder
Hotelstring = "Select * From tbOrder"
Hotelada2 = New OleDbDataAdapter(Hotelstring, conn)
HotelDataSet2 = New System.Data.DataSet
yy = New OleDbCommandBuilder(Hotelada2)
Hotelada2.Fill(HotelDataSet2, "tbOrder")
Hoteldt2 = HotelDataSet2.Tables("tbOrder")
tbRow = Hoteldt2.NewRow
tbRow("UserID") = strName
tbRow("RoomID") = CInt(RoomRadio.SelectedItem.Value)
tbRow("OrderNum") = CInt(OrderNum.Text)
tbRow("StartTime") = StartTime.Text
tbRow("LastTime") = LastTime.Text
HotelDataSet2.Tables("tbOrder").Rows.Add(tbRow)
Hotelada2.Update(HotelDataSet2, "tbOrder")
End Sub

( 6 )定义过程“ ErrInfo ”用于出错时调用该过程显示错误信息,该过程的代码如下所述。

Sub ErrInfo(ByVal Errmess As String)
Dim strScript As String
strScript = "<script language=javascript>"
strScript += "alert('" + Errmess + "');"
strScript += "<"
strScript += "/"
strScript += "script>"
RegisterClientScriptBlock("showSaveMessage", strScript)
End Sub

  (读者可打开【光盘】|【源文件】|【实例 96 】|【 96.7.txt 】文件,直接复制)

  ( 7 )定义【现在预订】按钮的“ OnClick ”事件响应过程为“ Orderbt_Click ”,并将该过程绑定到【现在预订】按钮的“ OnClick ”事件中。“ Orderbt_Click ”过程的源代码如下所述。

Protected Sub Orderbt_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim Errstr As String
HotelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/hotel.mdb")
conn = New OleDbConnection(HotelConn)
If Usercheck() = False Then
Errstr = " 请正确登录或正确输入您的注册信息! "
ErrInfo(Errstr)
Exit Sub
End If
If Roomcheck() = False Then
Errstr = " 您预订客房在您预订时间段中已预订满了! "
ErrInfo(Errstr)
Exit Sub
End If
Orderinser()
End Sub

  ( 8 )预览效果。保存“ index.apsx ”,在 IE 中预览效果,如图 96-1 所示。

  本实例讲解了客房预订业务中最简单的流程:用户注册、登录、验证用户预订客房是否预订满,以完成客房预订业务。本实例没有对服务器控件进行验证,也没有对注册名惟一性的验证进行,有兴趣的读者可以参考实例 76 和实例 77 ,添加相关功能。当提交预订资料时,客房预订业务会把预订资料以电子邮件的方式发给预订客房的用户,本实例也没有对这方面的知识进行讲解,有兴趣的读者可以参考实例 84 中“步骤三 建立订单邮件自动回复”里的相关内容。当提交预订资料时,客房预订业务也会将资料发给酒店的总台,以便更新总台客房预计的相关数据库,由于这方面的知识已经超出 Dreamweaver 的应用范围,所以这里就不再详细介绍了。至此,本实例操作完毕。

时间: 2024-10-03 23:49:09

Dreamweaver实现客房预订业务系统的相关文章

DM中实现客房预订业务

  客房预订业务的特点是顾客流动性大,其用户注册方式更为灵活,预订业务除了常用的验证外,还要防止在预订满的情况下继续预订客房.本实例将为读者介绍如何实现客房预订业务. 效果说明 图 96-1 所示是预订业务的基本界面,用户可以直接登录或注册并预订客房. 创作构思 通过程序检测用户是否成功登录,登录错误的是否能够注册成功,并添加用户的预订资料.通过" DataTime "类下的" Compare ",将用户预订的时间与其他用户已预订的时间进行比较,以检测是否预订满.

赶集网涉足在线客房预订业务

商报讯(记者 王璀一)在线住宿预订业务的庞大市场,让二手交易信息平台赶集网(微博)也加入其中,与携程.艺龙争抢客源.赶集网CEO杨浩涌昨日宣布,出资2000万美元成立短租平台,并借此转型电子商务. 赶集网的"蚂蚁短租"立足目前平台上的众多闲置房源,包括农家院.小客栈等,其人群定位于出差.背包客等有短租需求的用户.杨浩涌表示,赶集网的短租业务与携程.艺龙等酒店实现了差异化.大量闲置房源为低价实惠提供了可能. 尽管赶集网方面认为其短租用户平均住4晚,而携程.艺龙的客户住宿时间则集中在一两天

求网上客房预订系统||酒店客房预订系统

问题描述 请问大家谁有用java开发的网上客房预订系统,酒店客房预订系统,有的麻烦共享下,很急,做毕设,一点头绪都没有,谢谢大家了 解决方案 解决方案二:你找到网上客房预订了吗??我也要·~~~急死了解决方案三:都两年了,还没有人回复,哎解决方案四:每年快毕业的时候都这样子的.解决方案五:packageday06.hotel_management;importjava.util.Scanner;publicclassHotel{privateStringname;privateStringadd

携程双腿疲软:机票与酒店预订业务遭受挑战

一直顺风顺水的国内在线旅行服务业"老大"携程旅行网(下称携程)在迎来自己"十周岁生日"之时,突然间置身于麻烦与争议的漩涡之中.先是因在预订业务中向客户出售假冒航意保险单从而引发"保单门"事件,随后又因"封杀"之争被多年的合作伙伴格林豪泰酒店管理集团(下称格林豪泰)诉诸公堂. 而与这些终究会产生一个结果的事件相比,携程赖以生存的"两条腿"--机票与酒店预订业务正在遭受的挑战对携程来说或许才是真正的最大危机.

整合Activiti Modeler到业务系统(或BPM平台)

1. 为什么要整合 Activiti 5.10版本把原本独立的Activiti Modeler模块整合到了Activiti Explorer中,两者相结合使用起来很方便,通过Modeler设计的流程模型可以直接部署到引擎,也可以把已经部署的流程转换为Model从而在Modeler中编辑. 在实际应用中也有这样的需求,把Modeler整合到业务系统中可以供管理员使用,或者作为BPM平台的一部分存在,很遗憾官方没有给出如何整合Modeler的文档. 2. 整合工作 2.1 下载源码 首先需要从Git

业务系统(“增量迭代”)开发流程管理

NoahWeb作为一套B/S轻量级快速开发引擎,能够帮助您快速实现网站以及信息系统的开发.而对于一些规模略大.周期略长,特别是需求变更频繁的系统,使用NoahWeb引擎配合"增量迭代"的开发模式,更能让您成倍的缩短项目周期,提高效率,节约成本. 您可以从下文内容中体验一下使用NoahWeb来进行一个需求变化频繁的系统(如:网站后台内容管理系统.业务系统.OA.人员编制为2个全职开发人员.1个项目经理(工作量约为20%).1个美工(工作量1周),整个项目周期在1-2个月)时的开发流程.

在业务系统中处理小数精度, 四舍五入,全舍弃,全进位的方法

在业务系统中,不同的客户对小数的处理有不同的方法 通过在设置保留的小数位数,以及小数位数以后的尾数的处理方法,可以灵活的满足客户要求 处理方法表  ID NUMBER(1)    ,                                                       --设置ID AMOUNTDOT      NUMBER(4,2) DEFAULT 0.01,  --金额精确度 1: 精确到元  0.1:精确到角  0.01:精确到分ROUNDING       NUMB

提供多业务系统无缝对接实现企业协同办公信息化

企业信息化管理软件正式进入云时代 本报讯 与同事相隔千里却需要进行协同办公和召开会议怎么办?企业和部门间使用的业务软件系统过多,不停地在诸如OA.ERP.CRM.EIM.行政审批.网站订单系统.客户故障处理系统等业务软件间进行频繁的切换不仅效率不高,而且极易出现疏漏和失误怎么办?企业对业务软件系统的管理.升级和维护跟不上怎么办?类似以上的这些问题,一直以来都直接影响着现代企业的发展步伐,也是企业管理人员心中一个长久无法解开的结. 近日,作为"广东省企业综合信息服务平台示范基地"的广东群

携程就宣布将提供高铁即动车组火车票的在线预订业务

前日国务院机构改革方案公布,不再保留铁道部的消息刚传出,昨日携程就宣布将提供高铁即动车组火车票的在线预订业务.有专家分析称,车票市场化将从高铁先行,高铁票价或现淡旺季浮动.去年代购曾被叫停为何选择在国务院机构改革方案公布的第二天宣布重启代购?记者向携程相关负责人询问是否与铁道部撤销有关,截至发稿前未得到回复.事实上,关于火车票代购业务携程早有打算.2011年7月,携程网收购久久票务网(现为"铁友网")就是看中铁友的火车票在线分销资质.不过,去年4月携程的代购业务被叫停.携程发布公告称是