酒店预定系统本科学位论文.doc

酒店预定系统本科学位论文.doc

ID:11683462

大小:2.30 MB

页数:59页

时间:2018-07-13

上传者:zhaojunhui
酒店预定系统本科学位论文.doc_第1页
酒店预定系统本科学位论文.doc_第2页
酒店预定系统本科学位论文.doc_第3页
酒店预定系统本科学位论文.doc_第4页
酒店预定系统本科学位论文.doc_第5页
资源描述:

《酒店预定系统本科学位论文.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

酒店预定系统毕业设计论文 摘要随着酒店业的发展,传统的手工记账已不适应现代酒店管理的需要,及时、准确、全方位的网络化信息管理已成为必需。并且,随着信息技术的日新月异,酒店客房预定系统也得到了不断的完善和发展。酒店客房预定系统以标准的酒店管理模式为蓝本,借助先进的设计思想,高效的设计方法完成。基于WEB的即浏览器/服务器(Browser/Server)体系结构,采用稳定可靠的WINDOWSXP作为服务器应用平台,并利用MSSQLSERVER数据库与WINDOWSXP系统集成好的特点,采用MSSQLSERVER数据库作为后台数据的管理支持,选用Microsoft公司的Visualstudio.net2003作为开发工具,利用其提供的集成开发环境及各种控件,尤其是对ADO.NET的支持完成对数据库的各种操作,达到酒店客房预定的目的。设计时首先建立系统应用原型,然后对原形系统进行不断修正和改进,直到形成用户满意的实际可行系统。关键词:网上酒店客房预定、B/S、数据库、ADO.NET、ASP.NET AbstractWiththedevelopmentofhotelindustry,thetraditionalonekeepaccountsbyhandcannotmeettheneedsofmodernhotelmanagement.Theinstantly,accurate,omni-directionalnetworkedinformationmanagementalreadybecomeindispensable.And,withthechangeoftheinformationtechnology,TheHotelGuestRoomReservationSystemhasgotconstantperfectionanddevelopment.TheHotelGuestRoomReservationSystemregardthestandardhotelmanagementmodeasblueprint,andfulfillitselfbymeansofadvanceddesignideas,andmoreefficientmethod.OnthebasisofWeb(Browser/server)structure,itadoptsthestableanddependableWindowsXPoperationsystemastheserverapplicationbase,takesadvantageofthegoodintegrationcharacteristicsoftheMSSQLServerdatabaseandtheWindowsXPsystem,makesuseoftheMSSQLServerdatabaseasmanagementsupportingofthebackgrounddata,picksuptheVisualstudio.net2003ofMicrosoftasthedevelopedtool,whichprovidingintegrateddevelopingcircumstanceandsortsofcontrols,especiallysupportingfortheADO.NETtocompleteallkindsofoperationsonthedatabase,soastomanagethehotel.Wemustestablishthesystemapplicationprototypeatfirst,then,proceedtoimproveandrevisetheoriginalshapesystemcontinuously,tillformtherealandfeasiblesystemwhichissatisfiedwithusers.KeyWords:WebHotelGuestRoomReservation、B/S、Database、ADO.NET、ASP.NET 目录摘要1Abstract21.绪 论32.系统需求分析42.1现行业务描述42.2现行系统存在的问题42.3解决方案52.4可行性分析52.4.1Browser/Server系统结构52.4.2ASP.NET72.4.2C#(C-Sharp)73.数据库设计93.1数据库的产生和构成93.1.1数据库系统的产生93.1.2数据库系统的构成93.1.3数据库设计的主要内容103.1.4实体联系模型103.1.5数据库的操作103.2SQLServer2005的功能特点113.2.1支持Web的分析113.2.2高级查询处理123.2.3完备的端到端平台123.3酒店客房预定系统功能123.4数据流图123.6数据字典133.7通过ADO.NET技术访问数据的技巧153.7.1ADO和ADO.Net简介153.7.2数据库访问技术164.系统总体设计方案184.1ASP.NET开发数据库技术184.1.1ADO.NET基础184.1.2使用DataSet对象访问数据库184.1.3ASP.NET的数据绑定访问数据库技术194.2组织结构194.3软件配置194.3.1数据库选择204.3.2操作系统选择204.4硬件配置20 4.4.1客户端硬件选择204.4.2服务器端硬件选择214.4.3网络联接设备选型214.4.4打印机选型215.系统详细设计225.1数据库结构的实现225.1.1创建表225.1.2创建存储过程225.2数据库的具体配置255.2.1Web.config配置文档255.2.2调用Web.config代码265.3系统主界面设计275.3.1主界面设计图示275.3.2会员注册285.3.3查看房间信息295.3.4预定房间295.4后台用户335.4.1后台登陆335.4.2后台主框架345.4.3房间管理356软件测试44结束语45致谢46参考文献47附录48其他主要界面48其他主要源程序代码51 1.绪 论随着人们生活水平的提高和旅游业的发展,为酒店行业提供了良好的发展环境,而酒店规模的扩大要求有一套实用而且方便的系统进行酒店客房的管理。在当前的这个大的气候下,酒店行业将具有长足的发展。特别是在互联网高度发展和应用的今天,人们对网上购物和网上交易的需求越来越多,也正因此,酒店客房预定系统应运而生,可以为酒店行业有效的解决很多实际问题。在软件开发过程中最为重要的就是数据库的应用部分。从诞生之日起,数据库应用就一直是计算机技术应用的一个使用范围非常广泛的领域.简单地说,数据库是为了实现一定的目的按某种规则组织起来的、有结构的信息与数据的集合。数据库中的数据可以是文字、图像、声音等。现在人们将越来越多的资料存入计算机机中,并通过一些经过测试的、计算机程序对这些资料进行系统有序的管理,这些程序后来就被称为“数据库管理系统”,它们可以用来协助数据管理员进行维护工作,方便用户随时得到有用的信息并进行相关操作,更可以由开发人员配合。关系型数据库系统的基本特征是按关系数据模型组织数据库,以其结构简单、理论基础坚实、数据独立性高以及提供非过程性语言等优点而被认为是具有很大发展前景的一种数据库,并已得到广泛的应用,在关系型数据库中,数据元素是最基本的数据单元,可以是若干个数据元素组成数据元组,若干个数据元组组成一个数据表(即关系),而所有相互关联的数据表则可以组成一个数据库。这样的数据库集合即被称为基于关系模型的数据库系统。其相应的数据库管理软件即为关系数据库管理系统。酒店客房管理作为计算机应用的一个分支,有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高酒店客房管理的效率。因此,开发一套能够为客户提供充足的信息和快捷的查询手段的酒店客房预定系统,是非常必要的。 2.系统需求分析2.1现行业务描述随着改革开放步伐的加快,我国服务业取得了巨大的发展。而酒店宾馆是我国的改革开放过的程中起步最早的、开拓发展最快、收效最为明显、市场化程度高的服务行业之一。作为一种以服务为主的无烟工业,世界各国对此行业的重视程度并不亚于其它工业。酒店数量的迅猛增长,是酒店必须面临的问题。面对信息时代的机遇和挑战,得用科技手段提高企业管理无疑是一条行之有效的途径。虽然计算机管理并不是酒店管理走向成功的关键元素,但它可以最大限度地发挥准确、快捷、高效等作用,对酒店的服务管理提供有力的支持。因此,采用全新的计算机网络和酒店客房预定系统,已成为提高酒店管理效率、改善服务水准的重要手段之一。这其中的核心就是对每天大量的信息(客人、费用、房间等)的正确处理和保存。采用计算机这一现代化工具作为管理的辅助手段是必须的。计算机的应用包括OA(办公自动化)、MIS(管理信息系统)、CAD(计算机辅助设计)等,酒店的计算机预定系统正是典型的MIS应用。计算机管理系统强大、灵活的查询功能确保决策者可及时得到任何所需信息,掌握酒店客房总体运营情况,分析业务的发展趋势,真正实现酒店管理的现代化。而今,不断发展的酒店客房预定系统,不仅为客户提供了灵活方便的操作方式,人性化的界面,更为您提供了一套科学化、规范化的酒店客房管理模式。使酒店在为客人提供高品质服务的同时,建立良好的企业形象,得到高额的回报,为酒店创造最优效益。2.2现行系统存在的问题酒店客房预定系统对与客房情况相关的信息进行收集、汇总、保存与使用,是酒店管理工作的重要组成部分,也是许多其它工作顺利开展的基础。这项工作的对象是记载旅客与客房信息形成的数据,主要内容有关客房标准的制定、标准信息的输入、客房基本信息的查询、修改,剩余客房信息的查询、订房信息的输入、结算信息的输入、结算信息的修改和查询。 当前,酒店客房信息管理工作还在许多问题,主要包括以下几点:1.重复劳动。由于需要信息的部门与负责收集、汇总信息的工作人员之间缺乏沟通,许多信息在上报的同时没有留底,下次需要时重复统计的现象比较普遍。2.格式不兼容。由于需要信息的部门在内容与格式上有不同的具体要求,许多内容需要重复填写、输入。这一重复劳动的过程不但费时费力,而且增加了数据处理人员犯错误的机会。为了防范可能出现的错误,每一次重新输入至少要校对一遍。3.规范化程度低。各部门仅满足于要求工作人员按要求提供自己当前需要的信息,没有建立完整、通用的客房数据库的意识。 4.数据利用率低。不受统一规范的约束,在工作中各行其是。一方面,信息的收集以完成眼前任务为主,未能在其它领域充分发挥其作用;另一方面,数据管理混乱,已经收集到的信息“遗失”现象严重,互相利用对方的信息也很困难。    这些问题大多数是由管理缺乏系统性引起的,其核心在于酒店客房信息管理还没有被作为一项独立的工作积极、主动地开展。如果这项工作能及早纳入正轨,酒店收益将得到极大的提高。2.3解决方案管理信息系统是对一个组织(单位、企业或部门)进行全面管理的人和计算机相结合的系统,它综合运用计算机技术、信息技术、管理技术和决策技术、与现代化的管理思想、方法和手段结合起来,辅助管理人员进行管理和决策。计算机在管理中应用的发展与计算机技术、通讯技术和管理科学的发展紧密相关。20世纪70年代初随着数据库技术、网络技术和科学管理方法的发展,管理信息系统逐渐成熟起来。管理信息系统最大的特点是高度集中,能将组织中的数据和信息集中起来,进行快速处理,统一使用。有一个中心数据库和计算机网络系统是MIS的重要标志。MIS的处理方式是在数据库和网络基础上的分布式处理。随着计算机网络和通讯技术的发展,不仅能把组织内部的各级管理联结起来,而且能够克服地理界限,把分散在不同地区的计算机网互联,形成跨地区的各种业务信息系统和管理信息系统。新系统采用(browser/Server)结构的数据库系统,前台使用微软公司的ASP.NET(C#)作为编程工具,后台使用SQLServer2000创建数据库,最终开发出用户满意的酒店客房预定系统。2.4可行性分析2.4.1Browser/Server系统结构伴随着Web技术和网络应用技术的迅速发展,传统的C/S(Client/Server)结构渐被B/S(Browse/Server)结构取代。在C/S两层结构模式中,由于客户端直接连接到数据库服务器,业务处理二者分担,致使这种体系结构在现代网络技术应用中存在如下不足:Client与Server直接连接,可能会造成用户的非法入侵;客户端的程序肥大,随着业务规则的变化,需要随时更新Client客户端程序,这样就大大增加维护量,造成维护工作困难;每个Client都要直接连到数据库服务器,服务器将消耗部分系统资源用于处理与客户端的连接工作1为适应Web技术发展需要,建立如Browse/Server(简称B/S)具有多层C/S结构特点的新的应用模式也就成为必然,这种结构模式将用户界面层、商业逻辑层与数据库层相分离,整体结构可描述如图所示:图2-1Browse/Server结构 Browser/Serverstructure其性能优越之处体现在:由于封装了企业逻辑,不同客户端应用程序可以共享同一个中间层;客户端应用程序可以做的很瘦,很多复杂的工作可以由应用程序服务器代劳,客户端应用程序只需关注用户界面本身,且更易发布、安装、配置和维护;这样做还有利于安全,主要是可将一些敏感数据功能部分封装在中间层,并授予不同访问权限以保证对数据的访问限制和防止用户的非法入侵,我们就是根据这种多层结构特点来建立一个应用系统的。B/S结构与C/S结构相比具有以下优点:(1)无需不断升级客户机的硬件设备。通常企业会给每个员工配备一台个人计算机,而用于应用软件的更新,不断提高老旧计算机性能的要求,每隔一段时间就面临着升级或购买新硬件的问题。采用Browser/Server模式,不需要购买升级硬件,只要运行最新版的软件即可,在一定程度上拓展了计算机的生命周期。(2)简化了客户端的安装、配置。客户端只是一个简单易用的标准浏览器,勿需像C/S模式那样,不同客户机安装不同的客户应用程序。各个用户通过HTTP请求在权限范围内调用Web服务器上不同处理程序,从而完成对数据的查询或修改。“瘦客户机”模式,简化了系统的开发和维护,使系统具有较好的可移植性。(3)显著降低了系统开发费用。在Client/Server架构下,如果开发了新的应用,就需要为客户使用的每一种不同的操作系统和版本创建和测试客户软件。Browser/Server模式允许在不依赖系统平台的情况下快速开发应用,客户端只有按键或点击鼠标时才向服务器发送请求,通过有效的网络协议将请求的信息返回到客户端显示。这样开发者可以更好地服务用户,用户也能够更容易地访问和应用数据,并且提高了系统的性能和安全。(4)大大减少了维护人员的工作量。由于客户端不再担负数据访问和复杂数据计算等任务,只负责显示,而把事务处理逻辑放于服务器端,从而充分发挥了服务器的强大作用。这样一方面大大降低了对客户端的要求,另一方面也把技术人员从繁重的维护升级工作中解脱出来,使维护员不再为程序的维护工作奔波于各个客户机之间,而每一次升级软件只需要更新服务器端程序就可以了。(5)B/S模式特别适用于网上信息发布。三层C/S模式中,数据库不是直接服务于每个客户机,而是与Web服务器相连。这个中间层用来存放网站的页面,承担网页对外发布和接收信息的功能,其逻辑易于改进和更新,实现了对客户信息服务的动态性、实时性和交互性,大大加强了企业与外部的联系。其实B/S结构的最大优点是:具有良好的开放性和可扩充性,易于维护和升级。任何用户只需使用WEB浏览器即可对应用系统进行操作。因此B/S结构在管理信息系统开发领域中获得了飞速的发展,出现了很多动态WEB技术,如PHP,ASP和JSP等。程序员可以在这些技术中添加脚本代码,以完成相应的逻辑处理。由于程序代码和HTML文本是放在一个文件里的,当程序代码很长时,HTML代码与其混杂,程序的可读性很差,无法分清程序真正要表示的页面构架。用这些技术开发的Web应用程序不利于升级和维护,且编写程序代码时使用的脚本语言功能较为简单,无法编写一些较为复杂的程序逻辑,具有一定的局限性。微软公司以其最新推出的.NETFramework框架为基础,提出了WEB应用程序开发的最新解决方案ASP.NET,ASP.NET 的出现使得开发电子商务平台更加方便和快捷,且在未来的几年中将成为主要的网络开发工具。因此,对基于B/S结构和ASP.NET技术的Web应用进行探讨和研究是非常有意义的。2.4.2ASP.NET随着网络经济的到来,微软公司希望帮助用户在任何时候、任何地方、利用任何工具都可以获得网络上的信息,并享受网络通信所带来的快乐。.NET战略就是为实现这样的目标而设立的。现在越来越多的企业都建立了自己的WWW网站,企业通过网站可以展示产品,发布最新动态,与用户进行交流和沟通,开展电子商务等。目前都是基于ASP.NET和脚本语言,将动态网页和数据库结合,通过应用程序来处理。ASP.NET具有如下的性能特点:1.由于ASP.NET页面每次打开都必须经过先编译后解释的过程,所以页面在反复打开时速度没有任何提升,而ASP.NET页面只需要一次编译后不需要重新编译,这使得在多次访问时速度有了极大的提升。2.由于ASP.NET没有提供任何输出数据为内容的元件,所以在使用ASP.NET撰写数据库页面时只能借助ADO的RecordSet对象逐笔读取记录,而ASP.NET通过ADO.NET提供的DataGrid等数据库元件可以直接和数据库联系。3.ASP.NET支持应用程序的实时更新。管理员不必关掉网络服务器或者甚至不用停止应用程序的运行就可以更新应用文件。4.ASP.NET采取“code-behind”方式编写代码使得代码更易于编写,结构更清晰,降低了系统的开发与维护的复杂度和费用。2.4.2C#(C-Sharp)Microsoft公司推出了基于XML的WebServices平台的.NET技术,并提供包括VisualStudio.NET在内的一系列.NET平台。而VisualStudio.NET平台支持的C#是面向构件的新型开发语言,它具有:(1)支持构件开发;(2)面向对象;(3)类型安全;(4)能支持版本处理等特点,因此,开发基于.NET平台上的商品化构件,以及基于.NET平台开发应用程序将成为软件业的发展方向,对基于.NET平台的C#逆向工程工具,尤其是支持C#构件化特征的逆向工程工具的需求便日趋迫切。C#是一种面向对象的语言,同时也是面向构件的编程语言,它具有面向对象和面向构件两方面的功能。C#支持所有关键的面向对象概念:封装、继承和多态性。在C#中所有的对象被封装在类中,C#取消了多继承,每个类仅允许有一个基类,以Object作为基类.。当需要多继承时,可以运用接口,一个类可以实现多个接口,从而实现多继承.。C#提供名字空间(namespace)声明一个范围,以便组织代码并创建全局类型。在一个名字空间下,可以声明别的名字空间、类、接口、结构、枚举和代理。通过嵌套的名字空间,把语义相关的程序分成层次结构,从而提供一个逻辑上的组织系统。 3.数据库设计3.1酒店客房预定系统功能酒店客房预定系统前台操作模块后台管理模块客房状况浏览客房状况控制员工管理客房类型管理客房管理客房状况浏览图3-1酒店客房预定系统功能结构图3.2数据流图分析调查有关酒店客房管理信息需求基础上得出本系统处理的数据流程图;其流程图如下: 客房标准设置基本信息显示客房后台管理基本信息录入客房信息管理顾客浏览客房预定管理客房信息管理退房管理结算信息管理客房信息返回图3-2数据流程图3.3数据字典首先将客房预定系统的数据库概念结构转化为SQLSERVER2000数据库系统所支持的实际数据模型,即:数据库的逻辑结构。其各个表格的设计结果如下1用户表(user)列名注释类型长度是否为空是否主键Userid用户编码Int×√Username用户名称Varchar2200××Password密码Varchar2200××secrecy安全问题Varchar2100××secrecyanswer安全答案V200×× archar2Email电子邮件Varchar2200××Credits积分Varchar2200××Regetime注册时间Date××Regip注册IPVarchar2200××logtimes登录次数Int××lastlogip上次登录IPVarchar2200××lastlogtime最后登陆时间Date××Nickname昵称Date××2角色表(role)列名注释类型长度是否为空是否主键Roleid角色编码Int×√Rolename角色名称Varchar2200××Description描述Varchar21024××Masterid创建这个角色用户IDInt××Mastername创建这个角色用户名称Varchar2200××Createdate创建日期Date××3资源表(module)列名注释类型长度是否为空是否主键Moduleid资源编码Int×√Moduleme资源名称Varchar2200××Description描述Varchar21024××Parentid父节点编码Int××Isleaf是否叶子节点Int××4用户角色映射(userrolemapping)列名注释类型长度是否为空是否主键id编码Int×√Userid用户编码Varchar2200××Username用户姓名Varchar21024××Roleid角色编码Int×× Rolename角色姓名Varchar2200××pirororder优先顺序Int××5角色资源映射(modulerolemapping)列名注释类型长度是否为空是否主键id编码Int×√moduleid资源编码Varchar2200××modulename资源名称Varchar21024××Roleid角色编码Int××Rolename角色姓名Varchar2200××privilege权限Int××extendrole是否继承角色1继承0不继承Int××princialtype主体类型varchar220××6.房间表(room)列名注释类型长度是否为空是否主键id编码Int×√Roomname标题Varchar2200××Roomcategory副标题Varchar21024××Isorder摘要Int××Price内容Varchar2200××Orderid发布用户idInt××7房间类别表(roomcategory)列名注释类型长度是否为空是否主键id编码Int×√categoryname类别名称Varchar2200××Parentid父节点Varchar21024××Isleaf是否叶子节点Int××3.7.2数据库访问技术那么在VisualStudio.NET中怎样应用ADO.NET呢?现在接合VisualStudio.NET中C#.NET强大的类开发功能。现在我们在公共类库中定义了三个公共方法来执行数据库操作。启动VisualStudio.NET。在新建项目中选择C#.Net项目,在模板中选择类库,在名称中输入类库文件名如DataAccess确定,则进入类库开发环境中,把Class1换名为DataAccess.在类名最上面写上UsingSystem.Data ;UsingSystem.Data.SqlClient;二条引用生句。这里我们引用了有关ADO.NET的命名空间和空值来源的命名空间。微软为了提高ADO.NET的性能,它把ADO.NET的访问SQLServer数据库。为了提高读写数据的性能,加快读写速度,Microsoft把读写数据分为二种。一种是只读数据,通过SqlDataReader实现。 SqlDataReader是通过执行查询命令SqlCommand来完成的。而SqlCommand有二个重要的属性。一个是连接一个连接对象的Connection属性和一条查询命令的CommandText属性。SqlCommand的执行命令可以返回一个SqlDataReader。下面我们把要访问的表作为输入参数传入,最后返回一个SqlDataReader。完整的代码如下:publicSqlDataReaderGetDataReader(stringstrcom,stringtables){stringstrcon="userid=sa;password=;initialcatalog=SBXT;datasource=localhost;ConnectTimeout=30";SqlConnectionsqlconn=newSqlConnection(strcon);sqlconn.Open();SqlCommandmycom=newSqlCommand(strcom,sqlconn);SqlDataReaderdr=mycom.ExecuteReader();sqlconn.Close();returndr;}publicvoidExecuteNonQuery(stringstrcom){stringstrcon="userid=sa;password=;initialcatalog=SBXT;datasource=localhost;ConnectTimeout=30";SqlConnectionsqlconn=newSqlConnection(strcon);sqlconn.Open();SqlCommandmycom=newSqlCommand(strcom,sqlconn);mycom.ExecuteNonQuery();sqlconn.Close();}SQLServer数据库通过SQLConnection、SqlCommand1、SqlDataAdapter、DataSet、DataView等几个主要的数据访问对象来访问数据。实现方法如下:publicDataSetExecuteDataSet(stringstrcom,stringtables){stringstr1="userid=sa;password=;initialcatalog=SBXT;datasource=localhost;ConnectTimeout=30";SqlConnectioncon=newSqlConnection(str1);con.Open();SqlDataAdaptercomm=newSqlDataAdapter(strcom,con);DataSetds=newDataSet();comm.Fill(ds,tables);con.Close();returnds;}如下,我们更详细的介绍通过ADO.NET连接后台数据库以及怎样怎样调用和执行SQL语句:  (1).在数据库中对数据进行添加,删除,修改。stringstrcom1="insertintotablename(fieldname1,fieldname2,...,fieldnamen)values('"+value1+"','"+value2+"',…,'"+valuen+"')";Condata.ExecuteNonQuery(strcom1);stringdeletecmd="deletefromtablenamewherefieldname=@values";mycommand.ExecuteNonQuery(deletecmd);stringstrcom1="updatetablesnamesetfieldname='"+values+"'wherefieldname='"+values+"'";//修改操作的SQL语句;Condata.ExecuteNonQuery(strcom1);//调用公共模块执行SQL语句; (2).在数据库中对数据进行查询操作。stringstrcom="selectfieldname1,fieldname2,…,fieldnamenfromtablenamewherefieldname=@valuesorderbyfieldnamedesc";ds=Condata.ExecuteDataSet(strcom,"sbinfo"); 酒店预定系统4.系统总体设计方案4.1ASP.NET开发数据库技术数据访问已经成为现代软件开发中的一个主要的任务,对于单独工作的应用程序或者是基于Web的应用程序都是如此。ADO.NET提供了一个解决许多和数据访问程序有关问题的通用解决方案。创建基于Web的应用程序时我们可以在ASP.NET中使用ADO.NET技术来解决网络和Web进行访问。4.1.1ADO.NET基础ADO.NET技术是一个基于标准的面向创建分布式数据共享应用程序的编程模型,是ADO(ActiveDataObjects)技术的延伸和发展,但是它带来了比ADO技术更为优越的互操作性、可维护性、可编程性和更出色的性能。ADO.NET包含了众多的类,程序员通过使用这些类来获得数据访问服务。这些类位于.net类库中,可以被任何基于.net设计的应用程序使用,包括前端的数据库客户程序、中间层的各种应用程序、工具、语言或者浏览器调用的业务逻辑对象。4.1.2使用DataSet对象访问数据库DataSet是一个与数据源无关的内存数据表示方法,DataSet的一个主要应用就是用来在内存中容纳访问数据库得到的数据。ADO.NET对数据访问过程分成了几个层次的抽象,每个层次对应了一系列类对象。直接和数据源交互的对象是Connection对象,所有对数据源的操作命令存储过程参数和数据都是在一定的Connection对象上面运行,所有向数据源发送的送货请求和在数据源与应用程序之间交互、的数据都在其上通过,因此为了访问数据源中的数据,首要做的就是建立起一条合适的Connection通道,不仅如此,还应该向该数据源提供合适的信息。最后真正在内存中容纳了数据的对象是DataSet对象,DataSet对象使用DataAdapter对象来处理同Connection对象和Command对象之间的交互,这样DataAdapter对象可以为DataSet对象隐藏掉和Connection及Command对象之间的交互细节,从而保证了DataSet对象的数据源的无关性。DataAdapter还负责DataSet对象中的数据和数据库中的数据的同步问题,这是因为DataSet对象提供的是无连接的数据访问服务。另外,DataSet对象是与数据源无关的,而且可以容纳多个表,只要使用多个表,只要使用不同的Conntection和Command对象,在数据库向DataSet对象传送完数据后,如果不再需要Connection通道和Command对象,它们便可以关闭,因为传送后DataSet对象便与数据源断开了。第56页 酒店预定系统4.1.3ASP.NET的数据绑定访问数据库技术数据库绑定技术是服务器端控件的一个重要特性,使用数据绑定可以大大简化控件的数据填充过程。反过来看,将数据集合作为服务器控件的数据源绑定到控件中进行显示,是将从数据层得到的数据反映到表现层的主要方式。这种技术主要出现在表现层逻辑的实现代码中。同时ASP.NET还为Web窗体技术提供了数据绑定表达式语法,它是一种声明形式的表达式,程序员不仅可以将服务器端控件的任意属性绑定到数据源,还可以绑定到简单的属性集合、表达式甚至可以是函数调用的返回值。4.2组织结构酒店客房预定系统的主要功能包括一下几个方面:员工管理、客房类型管理、客房管理、酒店营业状况统计、客房预定、结账退房。员工管理模块负责管理参与酒店运作的员工信息。主要功能包括添加、删除、修改、查询员工信息;系统分为两类权限:酒店总管理员、前台工作人员,权限分配在员工管理中实现,酒店总管理员可以管理所有员工的信息,而其他人员只能对自己的信息进行维护。客房类型管理模块负责管理本酒店所涉及到的客房类型信息。主要功能包括添加、删除、修改以及查找客房类型信息,只有酒店总管理员才具有对客房类型信息进行维护的权利,维护完成的客房类型信息将在客房管理模块中调用,所以,客房类型信息的维护是使用本系统的第一步。客房管理模块负责管理所有酒店提供外租的客房详细信息。主要功能包括添加、删除、修改以及查找客房信息。酒店总管理员有权对客房信息进行添加、删除和修改,而酒店前台工作人员主要是对客房信息的查询以及浏览。酒店营业状况统计模块主要向酒店总管理员提供本酒店的营业状况信息,以便总管理员做出更好的决策,营业状况信息可按条件统计,包括日期,房间类型等,是后期管理的核心。客房状况浏览是前台操作模块下的一子模块,客户对房间进行预定、退房操作之前,必然要先了解所有客房的信息。客房状况控制就是进行客房的预定和退房结算处理。客户和前台工作人员是使用该模块的主体,完成所有的预定信息的操作。结账功能块中,系统自动按照客人订房及退房日起计算出他所要缴纳的房费。针对新开发的酒店客房管理信息系统的需求,通过对酒店客房管理过程的内容和流程分析,设计如下面所示的数据项和数据结构:a用户信息,包括的数据项有:用户编号、用户类别、姓名、性别、个人密码、联系地址、联系电话、所在部门、电子邮件等;b客房信息,包括的数据项有:客房编号、客房名称、房间面积、床位数量、房间单价、是否有空调、电视等;c订房信息,包括的数据项有:客房编号、客房种类、客房单价、顾客姓名、顾客身份证号码、入住时间、备注等;d结算信息,包括的数据项有:客房编号、客房种类、客房单价、顾客姓名、顾客身份证号码、入住时间、结算时间、结算金额、备注等。4.3软件配置第56页 酒店预定系统软件配置主要包括数据库的选择和操作系统的选择。酒店客房预定系统的软件配置要根据用户对系统稳定性要求、系统的容量以及用户的维护水平来确定。4.3.1数据库选择根据数据库中将存放的单表的数量来选择不同的数据库,有时,一个酒店尽管人数不多,但是人员变化很大,要求数据库的吞吐量和稳定性较高,这就需要更好的数据库,当然也受建设经费的限制,只能选择较为适宜的数据库,这就需要根据用户的需要来选择数据库。本系统选择的是MSSQLSERVER2000数据库。用户数据量稳定性要求维护水平备选数据库小型酒店500-5000低差Access中型酒店5000-50000中一般SQLServer大型酒店50000-200000高好SQLServer、Oracle表4-1酒店客房预定系统数据库的选择4.3.2操作系统选择一般情况下,用户对微软Windows界面比较熟悉,因此,建议客户端使用Windows98、Windows2000或者WindowsXP操作系统。用户数据访问记录数/秒稳定性要求维护水平备选操作系统小型酒店50-500中一般WindowsNT、Windows2000Server、WindowsXP中型酒店500-2000较高较好WindowsNT、Windows2000Server、WindowsXP、Linux、UNIX大型酒店2000以上高好UNIX表4-2酒店客房预定系统操作系统的选择4.4硬件配置硬件配置主要包括客户端硬件的选择和服务器端硬件的选择。酒店客房预定系统的硬件配置要根据用户对系统的稳定性要求、系统的容量、系统的吞吐量以及用户的维护水平来确定。4.4.1客户端硬件选择可以根据稳定性要求选择不同客户端。一般情况下对客户端的要求不高。如下表所示:第56页 酒店预定系统用户稳定行要求备选客户端管理员客户端中PentiumⅢ/256MB/20GB前台工作人员、客户低PentiumCPU/128MB/8GB表4-3酒店客房预定系统客户端硬件的选择4.4.2服务器端硬件选择可以根据数据量和吞吐量的大小选择不同的服务器硬件。当然,这种配置也不是绝对的,这里只给出参考配置的范围。具体的配置要根据用户的需求精确计算。4.4.3网络联接设备选型服务器网卡采用100MPCI服务器网卡,以保证服务器的稳定安全运行,网络已采用智能综合布线系统,设计时仅考虑各个工作站所需的网络连接设备,工作站网卡采用100M/10M自适应网卡以提高网络数据交换速度。4.4.4打印机选型前台打印机使用AR-5400针高速专用票据打印机,用于打印房卡和打印结账单,以确保前台工作的高效、及时、稳定。同时才能体现酒店的档次。第56页 酒店预定系统5.系统详细设计5.1数据库结构的实现利用MSSQLSERVER2000数据库系统中的查询分析实现数据库的逻辑结构,如下:5.1.1创建表在创建表前先创建一个数据库,然后往数据库中添加新表,本系统中共5个表,分别是用户信息数据表(Users)、客房基本信息数据表(GuestRoom)、客房类型信息数据表(RoomType)、酒店入住信息数据表(Occupy)和客房状态信息数据表(RoomState),按照上述的数据库设计理论分别进行创建表,例如创建客房类型信息数据表(RoomType)的SQL语句如下:CREATETABLERoomType(TIDINT(4)NOTNULLUNIQUE,TNameVARCHAR(50),TAreaFLOAT(8),TBedQuantityINT(4),TPriceMONEY(8),TAirConditionBIT(1),TTVBIT(1));5.1.2创建存储过程构建了数据库的表结构后,接下来创建负责表中的信息选择、添加、更新以及删除的相关存储过程,除部分不便使用存储过程的情况,系统将大量地使用存储过程,本系统涉及了20个存储过程,下面就主要的一些存储过程逐一解释。1.RoomTypeList存储过程该存储过程用于返回所有客房类型信息,该过程主要是面向酒店管理员。CREATEPROCEDURE[GuestRoomList]ASSELECT[dbo].[RoomType].[TID],[dbo].[RoomType].[TName],[dbo].[RoomType].[TPrice],[dbo].[GuestRoom].[RID],[dbo].[GuestRoom].[RType],[dbo].[GuestRoom].[RPosition],[dbo].[GuestRoom].[RDescribe]FROM[dbo].[RoomType],第56页 酒店预定系统[dbo].[GuestRoom]WHEREGuestRoom.RType=RoomType.TIDORDERBYTIDDESCGO2.RoomTypeAdd存储过程该存储过程用于往客房类型信息表中添加新的房间类型信息,该过程主要是面向酒店总管理员。CREATEPROCEDURE[OccupyAdd](@ORID[varchar](50),@OGName[varchar](50),@OGIdCard[varchar](50),@OBeginDate[datetime],@OPay[money])ASINSERTINTO[HMS].[dbo].[Occupy]([ORID],[OGName],[OGIdCard],[OBeginDate],[OPay])VALUES(@ORID,@OGName,@OGIdCard,@OBeginDate,0)GO3.GuestRoomList存储过程该存储过程返回客房基本信息表中所有的客房信息,并且通过与客房类型信息表中字段的连接,返回客房的相关信息,该过程面向所有客户。CREATEPROCEDURE[GuestRoomList]ASSELECT[dbo].[RoomType].[TID],[dbo].[RoomType].[TName],[dbo].[RoomType].[TPrice],[dbo].[GuestRoom].[RID],[dbo].[GuestRoom].[RType],[dbo].[GuestRoom].[RPosition],[dbo].[GuestRoom].[RDescribe]FROM[dbo].[RoomType],第56页 酒店预定系统[dbo].[GuestRoom]WHEREGuestRoom.RType=RoomType.TIDORDERBYTIDDESCGO4.GuestRoomAdd存储过程通过该过程往客户基本信息表添加新的客房信息,该过程面向酒店总管理员。CREATEPROCEDURE[GuestRoomAdd](@RID[varchar](50),@RType[int],@RPosition[varchar](50),@RDescribe[varchar](50))ASINSERTINTO[HMS].[dbo].[GuestRoom]([RID],[RType],[RPosition],[RDescribe])VALUES(@RID,@RType,@RPosition,@RDescribe)GO5.GuestRoomLeft存储过程该存储过程返回当前所有没被外租的客房信息,通过与客房状态信息表的连接来快速判断是否为外租客房,条件是:RoomState表SState字段=1,该过程面向所有要预定房间的客户。CREATEPROCEDURE[GuestRoomLeft]ASSELECT[dbo].[GuestRoom].[RID],[dbo].[GuestRoom].[RType],[dbo].[GuestRoom].[RPosition],[dbo].[GuestRoom].[RDescribe],[dbo].[RoomType].[TID],[dbo].[RoomType].[TName],[dbo].[RoomType].[TArea],[dbo].[RoomType].[TPrice],[dbo].[RoomType].[TBedQuantity],[dbo].[RoomState].[SRID],[dbo].[RoomState].[SState]第56页 酒店预定系统FROM[dbo].[GuestRoom],[dbo].[RoomType],[dbo].[RoomState]WHERERType=TIDANDRID=SRIDANDRoomState.SState=1GO5.2数据库的具体配置系统采用对数据库配置进行统一管理方法,将程序中用到的所有连接字符串信息统一放于Web.config配置文档中,在程序中对该文档的这一配置进行调用,方便系统移植时对系统数据库的统一配置修改。对于数据库调用字符串,由于数据库使用的是本地数据库,DataSource(数据源)设置为Localhost;UID(用户ID)赋值为系统默认的sa;PWD(连接密码)赋值为数据库出示安装时设定的密码,DATABASE(数据库名称)设为我们上面所创建的HMS。5.2.1Web.config配置文档在文档中,HMS数据库设置部分集中在之间,主要的是数据库的连接字符串。而其他的设置主要是面向应用程序,提供服务。Web.config配置文档的相关主要代码如下:5.2.2调用Web.config代码第56页 酒店预定系统在程序中读取Web.config配置文档中的数据库设置信息,使用如下的语句即可。例如:stringstrconn=ConfigurationSettings[“dsn”];只要在程序文件中加入该行代码,就可以轻松地将数据库连接字段读取到字符串strconn中,并且每个配置段处理器只需申明一次即可,子目录的Web.config文件会自动继承根配置文件Machine.config文件中,并且在程序中不用重新申明。5.3系统主界面设计当客户输入网址打开时,首先进入的就是酒店客房预定系统的首页界面。5.3.1主界面设计图示首页如下,主要利用DataGrid控件来读取数据库,显示所有空闲房间,即客户可以预定的房间信息,在界面设计上使用了用户控件,其用户控件的设计还使用了Flash/Photoshop等网页或图像编辑软件。第56页 酒店预定系统图5-1系统首页5.3.2会员注册protectedvoidButton1_Click(objectsender,EventArgse){UsersManagerusermanager=newUsersManager();Usersusers=newUsers();//用户IDusers.Userid=(usermanager.GetMaxIndex()+1).ToString();//用户名users.Username=txtName.Value;//密码users.Password=txtPassword.Value;//电子邮箱users.Email=txtEmail.Value;//积分users.Credits="0";//注册IPusers.Regip=Request.ServerVariables["REMOTE_ADDR"].ToString();//登陆次数users.Logtimes="0";//安全问题users.Secrecy=ddlSecrecy.Text;users.Secrecyanswer=txtSecrecyAnswer.Text;users.Regtime=DateTime.Now;users.Lastlogtime=DateTime.Now;users.Usertype="客户";第56页 酒店预定系统usermanager.Save(users);Userrolemappingurm=newUserrolemapping();//添加角色映射UserrolemappingManagerrrmm=newUserrolemappingManager();urm.Id=(rrmm.GetMaxIndex()+1).ToString();urm.Roleid="2";urm.Rolename="客户";urm.Userid=users.Userid;urm.Username=users.Username;rrmm.Save(urm);Response.Redirect("default.aspx");}5.3.3查看房间信息匿名用户和在线用户可以查看房间信息,房间信息可以由管理员来管理,包括编辑,添加,删除。///

///初始化页面///privatevoidInitData(){RoomManagerroommanager=newRoomManager();roommanager.BindGridView(gvUsers);}//////显示指定页记录//////privatevoidToPage(intpageno){gvUsers.PageIndex=pageno;RoomManagerroommanager=newRoomManager();roommanager.BindGridView(gvUsers);}第56页 酒店预定系统5.3.4预定房间当用户需要预定房间时候,点击预定房间是如果当前用户没有是匿名用户,系统会自动导入到登入页面,让用户自己登入。protectedvoidbtnLogin_Click(objectsender,EventArgse){UsersManagerum=newUsersManager();intresult=um.CommonLogin(txtName.Value,txtPassword.Value);if(result==-1){LBW.Common.WebUI.Alert("密码错误!",this);return;}if(result==0){LBW.Common.WebUI.Alert("不存在用户名或者此用户无此权限!",this);return;}if(result==1){Usersuser=um.Load(newChinaVcv.Common.ParamTable("username",txtName.Value));Session.Add("commonuser",user);Response.Redirect("selfhelp/selfindex.aspx");//WebUI.OpenWindow("main.aspx",this);}}用户经过验证进入自己自助系统如下图所示第56页 酒店预定系统用户可以管理自己的个人信息,可以预定房间,可以管理自己预定的房间信息。如下图所示,客户点击”预定”按钮以后可以预定房间。当客户预定了房间202以后,就可以在“预定房间管理”这一栏里面看到自己已经预定预定的房间。如果想取消预定,则可以点击“取消预定”来取消预定。第56页 酒店预定系统//////初始化页面///privatevoidInitData(){if(Session["commonuser"]==null)Response.Redirect("../login.aspx");Usersu=(Users)Session["commonuser"];RoomManagerroommanager=newRoomManager();gvUsers.DataSource=roommanager.GetAllEntitys("whereisorderlike'%是%'andorderid='"+u.Userid+"'");gvUsers.DataBind();}//////显示指定页记录//////privatevoidToPage(intpageno){gvUsers.PageIndex=pageno;RoomManagerroommanager=newRoomManager();roommanager.BindGridView(gvUsers);}protectedvoidgvUsers_RowCommand(objectsender,GridViewCommandEventArgse){if(e.CommandName=="yuding"){intindex=Convert.ToInt32(e.CommandArgument);Stringid=gvUsers.Rows[index].Cells[1].Text;第56页 酒店预定系统RoomManagerrm=newRoomManager();Roomr=rm.Load(newChinaVcv.Common.ParamTable("id",id));r.Isorder="否";Usersu=((Users)Session["commonuser"]);r.Orderid=u.Userid;rm.Update(r);WebUI.Alert("房间预订成功",this);InitData();}}5.4后台用户5.4.1后台登陆protectedvoidbtnOk_Click(objectsender,EventArgse){UsersManagerum=newUsersManager();intresult=um.AdminLogin(txtUserName.Value,txtPassword.Value);if(result==-1){LBW.Common.WebUI.Alert("密码错误!",this);return;}if(result==0){LBW.Common.WebUI.Alert("不存在用户名或者此用户无此权限!",this);return;第56页 酒店预定系统}if(result==1){Usersuser=um.Load(newChinaVcv.Common.ParamTable("username",txtUserName.Value));Session.Add("user",user);//ACLacl=newACL();//Stringmoduleid=acl.GetModuleIdByResURL("代理商管理\代理商信息");//acl.GetPermission(moduleid,user.Userid,ACL.PRIVLEGE.CREATE);Response.Redirect("main.aspx");//WebUI.OpenWindow("main.aspx",this);}}5.4.2后台主框架第56页 酒店预定系统5.4.3房间管理//////初始化页面///privatevoidInitData(){RoomManagerroommanager=newRoomManager();roommanager.BindGridView(gvUsers);}//////显示指定页记录//////privatevoidToPage(intpageno){gvUsers.PageIndex=pageno;RoomManagerroommanager=newRoomManager();roommanager.BindGridView(gvUsers);}protectedvoidbtnSearch_Click(objectsender,EventArgse){RoomManagerroommanager=newRoomManager();SearchListsl=newSearchList();sl.Add("id");gvUsers.DataSource=roommanager.Search(txtSearchInfo.Text,sl);gvUsers.DataBind();}5.4.3录入房间第56页 酒店预定系统protectedvoidbtnAdd_Click(objectsender,EventArgse){RoomManagerroommanager=newRoomManager();Roomroom=newRoom();room.Id=txtid.Text;room.Roomname=txtroomname.Text;room.Roomcategory=ddlroomcategory.SelectedItem.Text;room.Isorder=ddlIsorder.Text;room.Price=txtprice.Text;room.Isorder=ddlIsorder.Text;if(Request.QueryString["id"]!=null)roommanager.Update(room);elseroommanager.Save(room);Response.Redirect("roommanager.aspx");}publicvoidInitData(){RoomManagerroommanager=newRoomManager();RoomcategoryManagerrcm=newRoomcategoryManager();rcm.BindDropDownList(ddlroomcategory,"name","id");//txtBortyday.Text=DateTime.Now.ToShortDateString();if(Request.QueryString["id"]!=null){btnAdd.Text="更新信息";BindRoom();}else{btnAdd.Text="添加";txtid.Text=(roommanager.GetMaxIndex()+1).ToString();}第56页 酒店预定系统}publicvoidBindRoom(){if(Request.QueryString["id"]!=null){Stringid=Request.QueryString["id"];RoomManagerroommanager=newRoomManager();Roomroom=roommanager.Load(newChinaVcv.Common.ParamTable("id",id));txtid.Text=room.Id;txtroomname.Text=room.Roomname;ddlroomcategory.Text=room.Roomcategory;txtprice.Text=room.Price;}}5.4.3房间类别管理//////初始化页面///privatevoidInitData(){RoomcategoryManagerroomcategorymanager=newRoomcategoryManager();roomcategorymanager.BindGridView(gvUsers);}//////显示指定页记录//////privatevoidToPage(intpageno){gvUsers.PageIndex=pageno;第56页 酒店预定系统RoomcategoryManagerroomcategorymanager=newRoomcategoryManager();roomcategorymanager.BindGridView(gvUsers);}protectedvoidbtnSearch_Click(objectsender,EventArgse){RoomcategoryManagerroomcategorymanager=newRoomcategoryManager();SearchListsl=newSearchList();sl.Add("id");gvUsers.DataSource=roomcategorymanager.Search(txtSearchInfo.Text,sl);gvUsers.DataBind();}5.4.4录入房间类别protectedvoidbtnAdd_Click(objectsender,EventArgse){RoomcategoryManagerroomcategorymanager=newRoomcategoryManager();Roomcategoryroomcategory=newRoomcategory();roomcategory.Id=txtid.Text;roomcategory.Name=txtname.Text;roomcategory.Description=txtdescription.Text;if(Request.QueryString["id"]!=null)roomcategorymanager.Update(roomcategory);elseroomcategorymanager.Save(roomcategory);Response.Redirect("roomcategorymanager.aspx");}publicvoidInitData(){RoomcategoryManagerroomcategorymanager=newRoomcategoryManager();//txtBortyday.Text=DateTime.Now.ToShortDateString();if(Request.QueryString["id"]!=null)第56页 酒店预定系统{btnAdd.Text="更新信息";BindRoomcategory();}else{btnAdd.Text="添加";txtid.Text=(roomcategorymanager.GetMaxIndex()+1).ToString();}}publicvoidBindRoomcategory(){if(Request.QueryString["id"]!=null){Stringid=Request.QueryString["id"];RoomcategoryManagerroomcategorymanager=newRoomcategoryManager();Roomcategoryroomcategory=roomcategorymanager.Load(newChinaVcv.Common.ParamTable("id",id));txtid.Text=roomcategory.Id;txtname.Text=roomcategory.Name;txtdescription.Text=roomcategory.Description;}}5.4.5订单管理//////初始化页面///privatevoidInitData(){RoomManagerroommanager=newRoomManager();gvUsers.DataSource=roommanager.GetAllEntitys("whereisorderlike'%是%'");gvUsers.DataBind();第56页 酒店预定系统}//////显示指定页记录//////privatevoidToPage(intpageno){gvUsers.PageIndex=pageno;RoomManagerroommanager=newRoomManager();roommanager.BindGridView(gvUsers);}protectedvoidbtnSearch_Click(objectsender,EventArgse){RoomManagerroommanager=newRoomManager();SearchListsl=newSearchList();sl.Add("isorder");gvUsers.DataSource=roommanager.Search(ddlSearchInfo.Text,sl);gvUsers.DataBind();}5.4.6用户管理publicvoidShowImages(){UsersManagerum=newUsersManager();Listuserlist=um.GetAllEntitys();StringBuildersb=newStringBuilder();sb.Append("");for(inti=0;i");sb.Append(String.Format("","images\user\user.jpg",userlist[i].Username,userlist[i].Userid));sb.Append("
"+userlist[i].Username+"

");sb.Append("");}sb.Append("");litShowImages.Text=sb.ToString();//returnsb.ToString();}5.4.6角色管理//////初始化页面///privatevoidInitData(){UsersManager.CheckLogin();ACLacl=newACL();Usersuser=(Users)Session["user"];Stringmoduleid=acl.GetModuleIdByResURL("权限配置\角色管理");if(acl.GetPermission(moduleid,user,ACL.PRIVLEGE.CREATE)!=ACL.ACL_RESULT.ACL_YES)Response.Redirect("..\error.aspx");}publicvoidShowImages(){RoleManagerum=newRoleManager();Listuserlist=um.GetAllEntitys();StringBuildersb=newStringBuilder();第56页 酒店预定系统sb.Append("");for(inti=0;i");sb.Append(String.Format("","images\user\quanxian.jpg",userlist[i].Rolename,userlist[i].Roleid));sb.Append("
"+userlist[i].Rolename+"

");sb.Append("");}sb.Append("");litShowImages.Text=sb.ToString();//returnsb.ToString();}[AjaxPro.AjaxMethod]publicvoidDeRegisterRole(Stringroleid){RoleManagerrm=newRoleManager();//rm.DeRegisterRole(roleid);}5.4.7角色授权publicvoidInitTree(){UsersManager.CheckLogin();tvACL.Nodes.Clear();Stringroleid=Request.QueryString["roleid"];if(roleid!=null){Rolerole=newRoleManager().Load(newParamTable("roleid",roleid));lalRoleName.Text=role.Rolename;ModuleManagerf=newModuleManager();第56页 酒店预定系统f.CreateCheckTree(tvACL,role);tvACL.ExpandDepth=1;tvACL.ExpandAll();}}protectedvoidbtnACL_Click(objectsender,EventArgse){AddRoleModuleMapping();}//////初始化页面///privatevoidInitData(){InitTree();}privatevoidAddRoleModuleMapping(){Stringroleid=Request.QueryString["roleid"];if(roleid!=null){ModulerolemappingManagermrmm=newModulerolemappingManager();Roler=newRoleManager().Load(newParamTable("roleid",roleid));//在做授权时候先清除以前可能存在的授权信息mrmm.Delete(newParamTable("roleid",r.Roleid));TreeNodeCollectiontnc=tvACL.Nodes;EachTreeNode(tnc);WebUI.Alert("ACL授权成功!",this);}InitTree();}privatevoidEachTreeNode(TreeNodeCollectiontnc){foreach(TreeNodetnintnc){if(tn.ChildNodes.Count!=0)EachTreeNode(tn.ChildNodes);else{Stringroleid=Request.QueryString["roleid"];ModulerolemappingManagermrmm=newModulerolemappingManager();Roler=newRoleManager().Load(newParamTable("roleid",roleid));Modulerolemappingmrm=newModulerolemapping();mrm.Id=(mrmm.GetMaxIndex()+1).ToString();mrm.Moduleid=tn.Value;intindex=tn.Text.IndexOf("<")-1;mrm.Modulename=tn.Text.Substring(0,index);mrm.Roleid=r.Roleid;//角色IDmrm.Rolename=r.Rolename;//角色名称mrm.Privilege=Privilege(mrm.Moduleid);//权限//访问控制列表第56页 酒店预定系统ACLacl=newACL(mrm);if(!mrm.Privilege.Equals("0")){acl.SetPrivlege(mrm.Privilege);}}}}publicStringPrivilege(Stringmoduleid){inttotal=0;String[]privileges=Request.Form.GetValues(moduleid);if(privileges==null)return"0";foreach(Stringpinprivileges){total+=Convert.ToInt32(p);}returntotal.ToString();}6软件测试无论怎样强调软件测试的重要性和它对可靠性的影响都不过分。在开发数据库系统软件的过程中,面对其错综复杂的问题,人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无瑕,因此,在软件生命周期的每个阶段都不可能避免地会产生差错。我们力求在酒店客房预定系统的每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正错误;测试的目的就是在本系统投入使用之前,尽可能多的发现并纠正软件中的大部分差错。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。就测试而言,它的目标是发现软件中的错误,但是,发现错误并不是我们的最终目的,我们的根本目的是开发出高质量的完全符合用户需要的软件,因此,通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。调试是测试阶段最困难的工作。本系统由于开发时间有限,其功能简单明了,简化了许多测试工作,经调试,各部分功能均能成功实行,基本符合酒店工作人员和客户的酒店客房预定的需求。第56页 酒店预定系统结束语经过三个多月的设计和开发,在.net框架下开发的基于web的酒店客房预定系统基本完毕。其界面设计清爽明朗,符合现代人的审美风格,其功能简单明了,方便客户轻松读取,并快速达到预定房间的目的,而且能够完成客户信息及客房信息的存储和查询以及各类相关报表的查询。并提供部分系统维护功能,使用户方便进行数据备份和恢复、数据删除。对于数据的一致性的问题也通过程序进行了有效的解决。但是由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方,比如帮助文档比较少,客户预定未到,数据难以及时处理,出错处理不够等多方面问题。这些都有待进一步改善。第56页 酒店预定系统致谢在三个多月的毕业设计当中,我从指导老师周传华老师身上学到了很多东西。周老师工作认真负责,教学方法灵活多变,在整个毕业设计过程中,他始终非常耐心地辅导我、鼓励我,而且凭借他深厚的理论水平和踏实的工作作风,使我得到不少的提高。这对于我以后的工作和学习都有一种巨大的帮助。在此,我忠心地感谢您-周老师。同时也感谢和我一起做毕业设计的同学们,和他们一起互帮互学,使我在学习中得到了更多的快乐!也感谢我的家人,不断地鼓励和支持我,使我的整个毕业设计顺利的进行直至完成!第56页 酒店预定系统参考文献[1]张军.ASP.net+SQLserver动态网站开发案例精选.北京:清华大学出版社,2005[2]吴晨、孙少波、叶莞.ASP.net数据库项目案例导航.北京:清华大学出版社,2004[3]宋贤钧、王庆岭.数据库应用程序开发(SQLserver2000).北京:高等教育出版社2004[4]http://www.cnki.net/index.htm(中国CNKI学术期刊网)[5]http://www.wanfangdata.com.cn(中国万方数据资源系统)[6]http://elsevier.lib.tsinghua.edu.cn(elsevier全文数据库)[7]薛华成.管理信息系统(第四版).北京:清华大学出版社,2003年[8]陈晓红.信息系统教程.北京:清华大学出版社,2003年[9]张基温.信息系统开发方法案例(第四辑).北京:清华大学出版社,2003年[10]甘仞初.信息系统分析与设计.北京:高等教育出版社,2003[11]JeffreyL.Whitten,系统分析与设计方法(影印版).北京:高等教育出版社,2001年[12]DavidL.Anderson.ManagingInformationSystems.北京:清华大学出版社,2001年[13]JamesA.O’Brien.IntroductiontoInformationSystems.北京:高等教育出版社,2002年[14]计算机软件工程规范国家标准汇编.北京:中国标准出版社,1998[15]启明工作室编著ASP.NET+SQLServer网络应用系统开发与实例.北京:人民邮电出版社,2005第56页 酒店预定系统附录其他主要界面图(1)所有房间信息页面图(2)已租房间信息页面第56页 酒店预定系统图(3)客户须知页面图(4)联系方式页面第56页 酒店预定系统图(5)管理员登陆页面图(6)房间类型信息维护页面第56页 酒店预定系统其他主要源程序代码房间类型信息维护页面的后台支持类(RoomTypeManage.aspx.cs)主要代码如下:namespaceHMS{//////RoomTypeManage的摘要说明。///publicclassRoomTypeManage:System.Web.UI.Page{protectedSystem.Web.UI.WebControls.HyperLinkhlk_roomtypeadd;protectedSystem.Web.UI.WebControls.HyperLinkhlk_default;protectedSystem.Web.UI.WebControls.HyperLinkhlk_passwordmodifyforadmin;protectedSystem.Web.UI.WebControls.HyperLinkhlk_turnovercount;protectedSystem.Web.UI.WebControls.HyperLinkhlk_roomtypemanage;protectedSystem.Web.UI.WebControls.HyperLinkhlk_roommanage;protectedSystem.Web.UI.WebControls.HyperLinkhlk_goodsmanage;protectedSystem.Web.UI.WebControls.DataGriddgd_roomtypelist;privatevoidPage_Load(objectsender,System.EventArgse){if(!IsPostBack)BindGrid();}publicvoidBindGrid(){//从文件Web.config中读取连接字符串stringstrconn=ConfigurationSettings.AppSettings["dsn"];//连接本地计算机的HMS数据库SqlConnectioncn=newSqlConnection(strconn);//创建SqlDataAdapter对象,调用存储过程SqlDataAdapterda=newSqlDataAdapter("roomtypelist",cn);//创建并填充DataSetDataSetds=newDataSet();da.Fill(ds);dgd_roomtypelist.DataSource=ds;dgd_roomtypelist.DataBind();cn.Close();}publicvoidDataGrid_Delete(Objectsender,DataGridCommandEventArgsE)第56页 酒店预定系统{//从文件Web.config中读取连接字符串stringstrconn=ConfigurationSettings.AppSettings["dsn"];//连接本地计算机的HMS数据库SqlConnectioncn=newSqlConnection(strconn);cn.Open();SqlCommandcm=newSqlCommand("roomtypedelete",cn);cm.CommandType=CommandType.StoredProcedure;cm.Parameters.Add("@TID",SqlDbType.Int);//从DateGrid中取得更新内容//Cells[0]为TID列cm.Parameters["@TID"].Value=Convert.ToInt32(E.Item.Cells[0].Text.ToString());cm.ExecuteNonQuery();dgd_roomtypelist.EditItemIndex=-1;BindGrid();}#regionWebFormDesignergeneratedcodeoverrideprotectedvoidOnInit(EventArgse){////CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。//InitializeComponent();base.OnInit(e);}//////设计器支持所需的方法-不要使用代码编辑器修改///此方法的内容。///privatevoidInitializeComponent(){this.Load+=newSystem.EventHandler(this.Page_Load);}#endregion}}第56页 酒店预定系统添加房间类别信息页面的后台支持类(RoomTypeAdd.aspx.cs)主要代码如下:namespaceHMS{//////RoomTypeAdd的摘要说明。///publicclassRoomTypeAdd:System.Web.UI.Page{protectedSystem.Web.UI.WebControls.Buttonbtn_submit;protectedSystem.Web.UI.WebControls.RadioButtonrtn_acyes;protectedSystem.Web.UI.WebControls.RadioButtonrtn_acno;protectedSystem.Web.UI.WebControls.RadioButtonrtn_tvyes;protectedSystem.Web.UI.WebControls.RadioButtonrtn_tvno;protectedSystem.Web.UI.WebControls.TextBoxtbx_tname;protectedSystem.Web.UI.WebControls.TextBoxtbx_tarea;protectedSystem.Web.UI.WebControls.TextBoxtbx_tprice;protectedSystem.Web.UI.WebControls.RequiredFieldValidatorrfv_tarea;protectedSystem.Web.UI.WebControls.RequiredFieldValidatorrfv_tprice;protectedSystem.Web.UI.WebControls.RangeValidatorRangeValidator1;protectedSystem.Web.UI.WebControls.RequiredFieldValidatorrfv_tname;protectedSystem.Web.UI.WebControls.TextBoxtbx_tbedquantity;protectedSystem.Web.UI.WebControls.RangeValidatorrv_tbedquantity;protectedSystem.Web.UI.WebControls.HyperLinkhlk_roomtypemanage;protectedSystem.Web.UI.WebControls.RequiredFieldValidatorrfv_tbedquantity;privatevoidPage_Load(objectsender,System.EventArgse){//在此处放置用户代码以初始化页面}privatevoidbtn_submit_Click(objectsender,System.EventArgse){if(Page.IsValid)第56页 酒店预定系统{//从文件Web.config中读取连接字符串stringstrconn=ConfigurationSettings.AppSettings["dsn"];//连接本地计算机的HMS数据库SqlConnectioncn=newSqlConnection(strconn);cn.Open();//利用Command对象调用存储过程SqlCommandcm=newSqlCommand("roomtypeadd",cn);//将命令类型转为存储类型cm.CommandType=CommandType.StoredProcedure;//往存储过程中添加参数cm.Parameters.Add("@TName",SqlDbType.VarChar);cm.Parameters.Add("@TArea",SqlDbType.VarChar);cm.Parameters.Add("@TBedQuantity",SqlDbType.VarChar);cm.Parameters.Add("@TPrice",SqlDbType.Money);cm.Parameters.Add("@TAirCondition",SqlDbType.Bit);cm.Parameters.Add("@TTV",SqlDbType.Bit);//给存储过程的参数付值cm.Parameters["@TName"].Value=tbx_tname.Text.ToString();cm.Parameters["@TArea"].Value=tbx_tarea.Text.ToString();cm.Parameters["@TBedQuantity"].Value=Convert.ToInt32(tbx_tbedquantity.Text.ToString());cm.Parameters["@TPrice"].Value=Convert.ToDouble(tbx_tprice.Text.ToString());if(rtn_acyes.Checked)cm.Parameters["@TAirCondition"].Value=1;if(rtn_acno.Checked)cm.Parameters["@TAirCondition"].Value=0;if(rtn_tvyes.Checked)cm.Parameters["@TTV"].Value=1;if(rtn_tvno.Checked)cm.Parameters["@TTV"].Value=0;cm.ExecuteNonQuery();//关闭连接cn.Close();Response.Redirect("roomtypemanage.aspx");}}#regionWebFormDesignergeneratedcode第56页 酒店预定系统overrideprotectedvoidOnInit(EventArgse){////CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。//InitializeComponent();base.OnInit(e);}//////设计器支持所需的方法-不要使用代码编辑器修改///此方法的内容。///privatevoidInitializeComponent(){this.btn_submit.Click+=newSystem.EventHandler(this.btn_submit_Click);this.Load+=newSystem.EventHandler(this.Page_Load);}#endregion}}修改房间类别信息页面的后台支持类(RoomTypeModify.aspx.cs)主要代码如下:namespaceHMS{//////RoomTypeModify的摘要说明。///publicclassRoomTypeModify:System.Web.UI.Page{protectedSystem.Web.UI.WebControls.TextBoxtbx_tname;protectedSystem.Web.UI.WebControls.RequiredFieldValidatorrfv_tname;protectedSystem.Web.UI.WebControls.TextBoxtbx_tarea;protectedSystem.Web.UI.WebControls.RequiredFieldValidatorrfv_tarea;protectedSystem.Web.UI.WebControls.TextBoxtbx_tbedquantity;protectedSystem.Web.UI.WebControls.RequiredFieldValidator第56页 酒店预定系统rfv_tbedquantity;protectedSystem.Web.UI.WebControls.RangeValidatorrv_tbedquantity;protectedSystem.Web.UI.WebControls.TextBoxtbx_tprice;protectedSystem.Web.UI.WebControls.RequiredFieldValidatorrfv_tprice;protectedSystem.Web.UI.WebControls.RangeValidatorRangeValidator1;protectedSystem.Web.UI.WebControls.RadioButtonrtn_acyes;protectedSystem.Web.UI.WebControls.RadioButtonrtn_acno;protectedSystem.Web.UI.WebControls.RadioButtonrtn_tvyes;protectedSystem.Web.UI.WebControls.RadioButtonrtn_tvno;protectedSystem.Web.UI.WebControls.Buttonbtn_modify;protectedSystem.Web.UI.WebControls.Buttonbtn_delete;protectedSystem.Web.UI.WebControls.Labellbl_tid;protectedSystem.Web.UI.WebControls.HyperLinkhlk_roomtypemanage;privatevoidPage_Load(objectsender,System.EventArgse){if(!IsPostBack){//绑定各TextBox数据stringstrconn=ConfigurationSettings.AppSettings["dsn"];//连接本地计算机的HMS数据库SqlConnectioncn=newSqlConnection(strconn);cn.Open();SqlCommandcm=newSqlCommand("roomtypedetail",cn);cm.CommandType=CommandType.StoredProcedure;cm.Parameters.Add("@TID",SqlDbType.Int);cm.Parameters["@TID"].Value=Convert.ToInt32(Request.QueryString["tid"].ToString());SqlDataReaderdr=cm.ExecuteReader();if(dr.Read())//存在对应项{lbl_tid.Text=dr["tid"].ToString();tbx_tname.Text=dr["tname"].ToString();tbx_tarea.Text=dr["tarea"].ToString();tbx_tbedquantity.Text=dr["tbedquantity"].ToString();tbx_tprice.Text=dr["tprice"].ToString();第56页 酒店预定系统//绑定RadioButtom的初值if(dr["taircondition"].ToString()=="False"){rtn_acno.Checked=true;}if(dr["ttv"].ToString()=="False"){rtn_tvno.Checked=true;}}else{Response.Write("对不起,没有该房间类型信息");Response.End();}}}#regionWebFormDesignergeneratedcodeoverrideprotectedvoidOnInit(EventArgse){////CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。//InitializeComponent();base.OnInit(e);}privatevoidInitializeComponent(){this.btn_modify.Click+=newSystem.EventHandler(this.btn_modify_Click);this.btn_delete.Click+=newSystem.EventHandler(this.btn_delete_Click);this.Load+=newSystem.EventHandler(this.Page_Load);}#endregionprivatevoidbtn_modify_Click(objectsender,System.EventArgse){if(Page.IsValid)第56页 酒店预定系统{//从文件Web.config中读取连接字符串stringstrconn=ConfigurationSettings.AppSettings["dsn"];//连接本地计算机的HMS数据库SqlConnectioncn=newSqlConnection(strconn);cn.Open();//利用Command对象调用存储过程SqlCommandcm=newSqlCommand("roomtypemodify",cn);//将命令类型转为存储类型cm.CommandType=CommandType.StoredProcedure;//往存储过程中添加参数cm.Parameters.Add("@TID",SqlDbType.Int);cm.Parameters.Add("@TName",SqlDbType.VarChar);cm.Parameters.Add("@TArea",SqlDbType.VarChar);cm.Parameters.Add("@TBedQuantity",SqlDbType.VarChar);cm.Parameters.Add("@TPrice",SqlDbType.Money);cm.Parameters.Add("@TAirCondition",SqlDbType.Bit);cm.Parameters.Add("@TTV",SqlDbType.Bit);//给存储过程的参数付值try{cm.Parameters["@TID"].Value=Convert.ToInt32(lbl_tid.Text.ToString());cm.Parameters["@TName"].Value=tbx_tname.Text.ToString();cm.Parameters["@TArea"].Value=tbx_tarea.Text.ToString();cm.Parameters["@TBedQuantity"].Value=Convert.ToInt32(tbx_tbedquantity.Text.ToString());cm.Parameters["@TPrice"].Value=Convert.ToDouble(tbx_tprice.Text.ToString());if(rtn_acyes.Checked)cm.Parameters["@TAirCondition"].Value=1;if(rtn_acno.Checked)cm.Parameters["@TAirCondition"].Value=0;if(rtn_tvyes.Checked)cm.Parameters["@TTV"].Value=1;if(rtn_tvno.Checked)cm.Parameters["@TTV"].Value=0;}catch第56页 酒店预定系统{Response.Write("参数输入有误,请返回!");Response.End();}cm.ExecuteNonQuery();//关闭连接cn.Close();Response.Redirect("roomtypemanage.aspx");}}privatevoidbtn_delete_Click(objectsender,System.EventArgse){//从文件Web.config中读取连接字符串stringstrconn=ConfigurationSettings.AppSettings["dsn"];//连接本地计算机的HMS数据库SqlConnectioncn=newSqlConnection(strconn);cn.Open();SqlCommandcm=newSqlCommand("roomtypedelete",cn);cm.CommandType=CommandType.StoredProcedure;cm.Parameters.Add("@TID",SqlDbType.Int);cm.Parameters["@TID"].Value=Convert.ToInt32(lbl_tid.Text.ToString());cm.ExecuteNonQuery();Response.Redirect("roomtypemanage.aspx");}}}第56页

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭