宾馆酒店预定系统的设计与实现毕业设计.docx
四川师范大学本科毕业设计 宾馆酒店预定系统的设计与实现学生姓名学 号所 在 系计算机科学与技术系专业名称计算机科学与技术班 级指导教师四川师范大学二一二年五月四川师范大学本科毕业设计宾馆酒店预定系统设计学生:指导老师:群内容摘要:宾馆酒店预定系统是典型的信息管理系统的一部分,主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。本系统采用SQL Server 2008作为后台数据库,Visual Studio 2008作为前台系统开发平台。利用VS提供的各种面向对象的开发工具,开发一个基于B/S体系结构的中小型宾馆酒店预定系统。后台实现了对酒店客房信息、用户账号、个人信息的管理以及实时查询酒店收入情况等功能,前台实现了为客户办理房间入住、退房手续并可添加VIP用户等功能。本系统基本满足了酒店对客户管理的需求。关键词:宾馆酒店预定系统 SQL Server 2008 Visual Studio 2008 B/SDesign for Hotel Management SystemAbstract:The hotel management system is a part of the typical information management system, which mainly includes the setting and maintenance of database and the developing of the frontend application. This system uses SQLServer 2008 as the background database, Visual Studio 2008 as a development platform of foreground system. It uses all sorts of object-oriented development tools which VS provides and develops a small and medium-sized hotel management system based on B/S architecture. The background of the hotel mainly realized the functions of the management of the hotel rooms information, user accounts and personal information and realtime inquiry of the income while front desk deal with room occupancy and checkout for clients and can add VIP users.The system satisfy the inquiry of the customer management basically.Keywords: Hotel Management System SQL server 2008 VS 2008 B/S目 录1 绪论11.1 开发背景11.2 系统目标12 系统解决方案22.2 SQL Server 2008 简介22.3 程序运行环境33 系统分析33.1 系统可行性分析33.1.1经济可行性分析33.1.2 技术可行性分析33.1.3 法律可行性分析33.2 系统需求分析44系统设计44.1 系统模块设计44.2 系统结构图44.3 系统功能图55 数据库设计55.1 E-R模型55.2 数据库的具体实现76 系统主要/关键技术说明96.1 公共模块96.1.1 实现与数据库连接96.1.2 配置相关文件96.1.3 登陆模块136.2 系统模块156.2.1 管理员模块156.2.2 房间信息模块156.2.3 房间设施模块176.2.4 用户信息模块176.2.5 营业状况模块206.2.6 个人信息模块226.3 前台模块226.3.1 房间状态模块226.3.2 VIP用户模块266.3.3 人个信息模块277 软件测试277.1 软件测试的必要性277.2 测试287.2.1 模块测试287.2.2 子系统测试287.2.3 系统测试287.3 调试29结束语29参考文献3131 宾馆酒店预定系统的设计与实现1 绪论1.1 开发背景经济的快速发展,人们的消费水平和消费意识的提高,促进了旅游业的发展,同时也造成了流动人口的增加,酒店业面临着机遇和挑战。信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。为了适应现代社会人们高度强烈的时间观念,宾馆酒店预定系统软件为管理人员带来了极大的方便。操作人员只需输入一些简单的汉字、数字,即可达到自己的目标。对于大中型宾馆来说,利用计算机支持高效率完成日常事务,是适应现代要求、推动管理走向科学化、规范化的必要条件;而且酒店管理又是一项非常烦琐的事情,数量之大,核算极其不便。同时计算机具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高酒店管理的效率,也是酒店的科学化、正规化管理,与世界接轨的重要条件。因此想要使酒店的工作质量和效率提高,采用先进的计算机网络通信技术改变酒店业务模式,实现酒店业务管理的自动化已经成为一种必然。1.2 系统目标此次设计将要模拟完成建立一个宾馆酒店预定系统,实现信息化。通过先进的.NET平台实现前台对房间入住、退房、VIP用户添加等功能。对于酒店管理者可以实现房间信息、人员账号、个人信息的管理并可实时查询酒店营业情况,节省了大量的劳力财力,加强了公司的现代化管理和高效的服务。酒店日常管理中所涉及到的大量数据都由数据库管理系统管理。本文中数据库服务器端采用了商业流行的SQL Server2008作为后台数据库,结合SQL语句强大的处理功能实现酒店管理中各个对象的分类、添加、删除、修改等操作。采用Visual Studio2008作为前台页面设计。经过对酒店管理业务的具体分析,精心对相关信息的学习和在指导老师的指导下,朋友的帮助下多次改进,终于开发制作了这个宾馆酒店预定系统。本系统有以下特点:系统中模块划分明确,模块功能设计有较强的针对性。系统操作界面简单,灵活性好、响应时间短,系统安全性高,运行稳定。2 系统解决方案2.1 Visual Studio.NET平台和C#语言简介Visual Studio.NET 2008是一个功能强大、高效并且可扩展的编程环境。有许多激动人心的新功能,它提供统一的集成开发环境,支持在同样的开发环境里用Visual Basic、Visual C+、Visual C#、Visual J#和其他数十种编程语言,可以编写、调试和部署各种应用程序。它充分展现了应用程序的开发潜能、并提供了生成应用程序的所需要的工具和技术。这些应用程序给当今的企业、机构提供了强大的支持,是有始以来功能最强大、最受欢迎的软件开发工具。C#(发音为“C Sharp”)是一门简单、现代、优雅、面向对象、类型安全、平台独立的新型组件编程语言。它虽然是一种新语言,但却很难在这种语言中找到新的概念,其语法风格不仅源自C/C+家族,而且融合了Visual Basic的高效和C/C+强大,因此是微软为奠定其下一代互联网霸主地位而打造的Microsoft.NET平台的主流语言。依本人看来,优点不外乎以下两方面:A、对于花费很多时间学会C、C+语言的程序员来说,可以不必丢弃以前的知识,就可以使用这种新的语言开发程序,尽管C#中有一些新概念、新技术和新函数,但一般而言它的语言及其语法是跟C、C+类似的,而且对于用C+编写好的代码也可被重用,主要原因是C#具有调用已有代码和系统库中的库函数的机制。B、组件编程已经成为当今世界软件业面向下一代程序开发的一致选择,是90年代面向对象编程的深度发展。C#生逢其时,占尽天时地利,“第一等的面向组件编程的支持”也决不是简单说说那么轻松。实际上,组件特性已经深深植入C#语言的各个层面,可为是C#锐利(Sharp)之处。2.2 SQL Server 2008 简介SQL Server 2008是Microsoft 公司推出的SQL Server 数据库管理系统的新版本。该版本继承了SQL Server2005 版本的优点,同时又比它增加了许多更先进的功能,具有使用方便、可伸缩性好、与相关软件集成程度高等优点。可跨越从运行Microsoft Windows server 2003到运行Microsoft Windows XP 的大型多处理器的服务器等多种平台使用。 其特点有如下几点: a真正的客户机/服务器体系结构。 b图形化用户界面。 c丰富的编程接口工具。 dSQL Server与Windows NT完全集成。 e具有很好的伸缩性。 f对Web技术的支持。gSQL Server提供数据仓库功能。2.3 程序运行环境硬件平台:CPU:P4 1.8GHz内存:512MB以上软件平台:操作系统:Windows xp数据库:SQL Server 2008开发环境: Microsoft Visual Studio 2008开发语言:C#语言3 系统分析3.1 系统可行性分析3.1.1经济可行性分析宾馆酒店预定系统的开发从长远的角度看,投资可以完全收回,并可以节省管理费用,避免了人工填单操作所带来的一系列不必要的麻烦和相当大的风险,节省了用户和相关工作人员的时间,能够很好的提高工作效率,改进决策质量。同时也对酒店的灵活管理有了很大的提高,有利于提高酒店的运营和服务效率,其开发前景良好并能产生很好的经济和社会效益。3.1.2 技术可行性分析本系统数据库部分采用了目前比较流行的SQL Server 2008,可以方便对数据的修改、查找、删除等功能,同时确保数据的完整性和安全性。同时,采用Visual Studio 2008作为前台界面开发平台,方便、有效,还可以保证画面的美观。3.1.3 法律可行性分析本系统的开发作为计算机毕业设计以巩固以前所学的知识,此程序完全由本人独立开发,仅供个人所用,没有侵犯任何版权,也没有违反国家相关法律法规及相关方面的规定,所以法律方面可行。3.2 系统需求分析根椐调查分析,此系统应便于对酒店客房资源进行综合管理,最终目的是提高工作效率和减轻劳动强度;提高信息处理速度和准确性;为业务、管理提供更方便的服务项目。提高酒店经营效益和市场分析抉择。本系统应根据不同的用户实现相应的功能。首先为管理员,即酒店管理者。该类型用户将实现对房间信息的相关操作,同时还可以对用户进行管理,并可实时查看酒店收支情况。其次是前台用户,此类用户主要实现了为客户办理房间的入住,退房等操作,同时还可添加VIP用户。4系统设计4.1 系统模块设计4.1.1 登陆模块必须输入正确的用户名、密码和用户类型才能进入相应的系统界面。任何一处填错或空白都将给出提示信息。4.1.2 管理员模块房间信息模块:可以对房间号,位置,描述等信息的查询,修改等操作。房间设施模块:实现对某一类型房间内部设施的统一管理。用户信息模块:里面包含了公司用户和VIP用户两部分。对于公司用户可以执行添加,删除等操作。对于VIP用户信息,只能执行修改、删除操作,添加部分由前台实现。营业状况模块:可以查询某一时间段的收入情况。个人信息模块:实现了对于当前登陆用户的信息查看和密码修改。4.1.3 前台模块房间状态模块:可以查看当前的房间状态信息。并为客户办理入住,退房手续(对于VIP客户会享受相应的折扣)。VIP模块:可以对VIP用户信息进行添加、修改、删除等操作。个人信息模块:实现了对于当前登陆用户的信息查看和密码修改。4.2 系统结构图酒店管理系统登陆模块管理员模块前台模块房间信息模块房间设施模块用户信息模块营业状况模块个人信息模块公司用户信息VIP用户信息房间状态模块VIP模块个人信息模块图4.2-1 系统结构图4.3 系统功能图酒店管理系统管理员前台房间信息浏览房间信息修改房间删除房间添加内部设施更改公司用户信息浏览公司用户信息删除VIP用户信息修改收支统计个人密码修改房间状态查看客户入住办理客户退房办理VIP用户添加退出图4.3-1 系统功能图5 数据库设计5.1 E-R模型5.1.1 模型简介E-R模型是数据进行第一层抽象的表示方法。它的主要成分包括:实体、联系和属性。使用这三种成分,我们可以建立许多数据库应用系统的E-R模型。对于宾馆酒店预定系统中使用到的实体和属性可以定义如下(其中带下划线的属性为主属性):客房:(房间号,规格,位置,状态,描述,单价,床位数,空调,电视)客户:(房间号,身份证号,姓名,入住时间)管理员:(用户名,密码,权限)VIP用户:(VIP卡号,身份证号,姓名,VIP级别,已客房规格位置状态描述单价床位数空调电视客户租赁身份证号姓名入住时间管理员管理用户名密码权限登记VIP用户管理VIP卡号VIP级别身份证号姓名已消费数额图5.1.1-1 数据库应用系统的E-R模型5.2 数据库的具体实现该系统采用SQL Server2008作为后台数据库进行存储所有与系统相关的数据。在其中建立名为HTL_manager的数据库,本系统的所有数据信息都将储存在该数据库中。在设计过程中考虑数据完整性约束。数据库上的完整性的约束条件一般有以下两类:a、属性值的约束这类约束是对属性取值的类型、范围、精度等的限制,和属性的语义有关。 b、数据之间联系的约束。这类约束反映了数据之间存在的联系,在关系数据模型中指多个属性或多个元组之间联系的约束。比如,属性之间的函数依赖、多值依赖。顾客所住的房间应该在房间列表中存在的;每位工作人员一定属于某个部门,有一定的职位等等。在许多数据模型中都是表明了数据之间的某些依赖关系的,或者是隐式或者是显式的。根据系统功能需要主要包括以下数据表:用户信息表(HTL_user)、房间表(HTL_room)、房间设施表(HTL_room_facilities)、客户表(HTL_guest)、VIP用户表(HTL_vip)、VIP设置表(HTL_vipset)、收入统计表(HTL_count)。具体信息如下: 表5.2-1 用户信息表(HTL_user)列名数据类型长度是否为主键用户名(r_id)nvarchar50是密码(r_pwd)nvarchar50权限(r_permision)int4 表5.2-2 房间表(HTL_room)列名数据类型长度是否为主键房间号(r_id)char10是房间规格(r_slvl)char10位置(r_position)varchar50当前状(r_permision)bit2描述(r_description)varchar50单价(r_price)smallmoney10 表5.2-3 房间设施表(HTL_room_facilities)列名数据类型长度是否为主键规格(r_slvl)nchar10是床位数(bed_num)int4空调(aircondition)bit2电视(tv)bit2 表5.2-4 客户表(HTL_guest)列名数据类型长度是否为主键房间号(r_id)Char10是身份证号(g_id)Varchar50是姓名(g_name)Varchar50入住时间(begindate)Smalldatetime14 表5.2-5 VIP用户表(HTL_vip)列名数据类型长度是否为主键VIP卡号(v_cardid)varchar50是身份证号(v_id)varchar50是姓名(v_name)varchar50VIP级别(v_lvl)int4消费数额(v_count)money10 表5.2-6 VIP设置表(HTL_vipset)列名数据类型长度是否为主键VIP级别(v_lvl)int4是享受折扣(v_zk)int4最低额(v_leasecount)int4称号(v_title)nchar10 表5.2-7 收入统计表(HTL_count)列名数据类型长度是否为主键房间号(r_id)Char10身份证号(g_id)Varchar50姓名(g_name)Varchar50入住时间(begindate)smalldatetime14退房时间(endtate)smalldatetime14消费额(count)Money106 系统主要/关键技术说明6.1 公共模块6.1.1 实现与数据库连接首先要实现与数据库的连接,通过sqldatasource控件添加数据源,并将连接字符串添加进web.config文件中。代码如下:<connectionStrings><add name="HTL_ManagerConnectionString" connectionString="Data Source=(local);Initial Catalog=HTL_Manager;Integrated Security=True" providerName="System.Data.SqlClient"/></connectionStrings>6.1.2 配置相关文件图 6.1.2-1 母版页根据软件设计需要,建立后台母版页admin_MasterPage.master.具体如图。其中包含SiteMapPath控件和TreeView控件。其中SiteMapPath控件需要web.sitemap文件支持。因为本系统在前台页面部分也用到一个SiteMapPath控件,则需要在web.config文件中添加相关数据以实现不同的SiteMapPath控件连接相应的web.sitemap上。SiteMapPath控件的主要作用是用于显示当前页面所处的位置。首先,打开web.config文件,在<system.web></system.web>中添加如下代码:<siteMap><add siteMapFile="/admin/Web.sitemap" name="My_adminWebsitemap" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/><add siteMapFile="/qiantai/Web.sitemap" name="My_qiantaiWebsitemap" type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/></siteMap>其中,siteMapFile中是sitemap的位置,name内部名称不能相同,用于SiteMapPath控件的绑定。添加成功之后,调出SiteMapPathn属性设置面板,将SiteMapProvider属性设置为"My_adminWebsitemap",如图6.1.2-2所示。图6.1.2-1 SiteMapPath属性面板接下来编辑Web.sitemap文件。具体代码如下:<?xml version="1.0" encoding="utf-8" ?><siteMap xmlns=" > <siteMapNode url="./admin/admin.aspx" title="管理员" description="admin"> <siteMapNode url="" title="房间信息" description="room_infor"> <siteMapNode url="./admin/room_scan.aspx" title="信息一览" description="room_scan" /> <siteMapNode url="./admin/room_modify.aspx" title="查询/修改" description="room_modify" /> <siteMapNode url="./admin/room_add.aspx" title ="房间添加" description ="room_add" /> </siteMapNode> <siteMapNode url="" title="房间设施" description="roo_faci_info"> <siteMapNode url="./admin/room_faci_scan.aspx" title="信息一览" desvription="room_faci_scan" /> </siteMapNode> <siteMapNode url="" title="用户信息" description ="user_vip_info"> <siteMapNode url ="" title ="公司用户" description ="usr_info"> <siteMapNode url ="./admin/user_scan.aspx" title ="信息一览" description ="user_scan"/> <siteMapNode url ="./admin/user_add.aspx" title ="公司用户添加" description ="user_add" /> </siteMapNode> <siteMapNode url="" title ="VIP用户" description ="vip_info"> <siteMapNode url ="./admin/vip_scan.aspx" title ="信息一览" description ="vip_scan" /> </siteMapNode> </siteMapNode> <siteMapNode url ="" title ="营业情况" description ="check"> <siteMapNode url ="./admin/check_count.aspx" title ="收支统计" description ="check_count"/> </siteMapNode> <siteMapNode url ="" title ="个人信息" description ="sef_info"> <siteMapNode url ="./admin/loginuser_scan.aspx" title ="信息一览" description ="loginuser_scan" /> </siteMapNode> </siteMapNode></siteMap>点击TreeView控件右上角标志,编辑TreeView结点,设置结点名称,并设置连接属性。图6.1.2-2 TreeView结点编辑面板首先建立前台母版页qiantai_MasterPage.master,并编写web.sitemap文件。并将此处SiteMapPath控件的SiteMapProvider属性设置为"My_qiantaiWebsitemap"。Web.sitemap代码如下:<?xml version="1.0" encoding="utf-8" ?><siteMap xmlns=" > <siteMapNode url="" title="前台" description="qiantai"> <siteMapNode url="./qiantai/free_room.aspx" title="空闲房间" description="free_room"> <siteMapNode url ="./qiantai/yuding_room.aspx" title ="房间预定" description ="yuding_room"/> </siteMapNode> <siteMapNode url ="./qiantai/rent_room.aspx" title ="已租房间" description ="rent_room"> <siteMapNode url="./qiantai/tui_room.aspx" title="退房管理" description="tui_room" /> </siteMapNode> <siteMapNode url ="./qiantai/all_room.aspx" title ="全部房间信息" description ="all_room"/> <siteMapNode url ="" title ="VIP通道" description ="vip_info"> <siteMapNode url ="./qiantai/vip_scan.aspx" title ="VIP用户一览" description ="vip_scan"/> <siteMapNode url ="./qiantai/vip_add.aspx" title ="VIP用户添加" description ="vip_add"/> </siteMapNode> <siteMapNode url ="" title ="个人信息" description ="self_info"> </siteMapNode> </siteMapNode></siteMap>6.1.3 登陆模块图6.1.3-1 登陆界面首先进入登陆界面(如图6.2-1),输入正确的用户名,密码和相应的权限,否则将报错(如图6.2-2)。图6.1.3-2 出错界面具体代码如下:/从文件Web.config中读取连接字符串 string strconn = ConfigurationManager.ConnectionStrings"HTL_ManagerConnectionString".ConnectionString ; /连接本地计算机的HMS数据库 SqlConnection cn = new SqlConnection(strconn); cn.Open(); /构造SQL语句,该语句在Users表中检查用户名和密码是否正确 string mysql = "select * from HTL_user where u_name='" + this.TextBox1.Text.Trim() + "'and u_pwd='" + this.TextBox2.Text.Trim() + "'and u_permision='"+this.RadioButtonList1.SelectedItem.Value+"'" /创建Command对象 SqlCommand cmd = new SqlCommand(mysql, cn); /执行ExecuteReader ()方法 SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read() this.Label3.Text = "" /保存当前用户名及用户权限 Session"uname" = dr"u_name".ToString(); Session"upermision" = dr"u_permision".ToString(); this.Label3.Text = "欢迎您!" + Session"uname" if (Session"upermision".ToString() = "1") /进入酒店总管界面 Response.Redirect("./admin/admin.aspx"); else if (Session"upermision".ToString() = "2") /进入酒店前台界面 Response.Redirect("./qiantai/all_room.aspx"); else this.Label3.Text = "对不起,您的用户名/密码不正确,请重新输入" /关闭连接 cn.Close();6.2 系统模块6.2.1 管理员模块图 6.2.1-1 管理员界面验证密码完毕,进入管理员界面(如图6.2.1-1)。6.2.2 房间信息模块6.2.2-1 房间信息一览点击房间信息子菜单下的信息一览链接,进入房间信息浏览界面,内部使用了GridView控件,同时连接数据源DataSource1,实现将房间相关信息显示出来,并可以执行删除操作(如图6.2.2-1)。图6.2.2-2 查找房间号图6.2.2-3 未找到房间号点击查询/修改,进入查询页面。可以实现对房间的查找,并可对查到的数据进行修改和删除的操作(如图6.2.2-2)。若输入不存在的房号,则提示房间不存在。图6.2.2-4 房间添加界面点击房间添加,进入添加页面。6.2.3 房间设施模块功能与上述模块类似,同样使用了GridView控件,但在控件上增加了编辑功能,取消了删除功能。图 6.2.3-1 房间设施编辑界面6.2.4 用户信息模块图 6.2.4-1 添加公司用户本模块中的公司用户信息一览与VIP信息一览与上面模块功能类似,在此不再缀述。在公司用户部分,管理员拥有添加功能(如图6.2.3-1),添加成功后会给出提示信息。代码如下: protected void Button1_Click(object sender, EventArgs e) int stat = 0; this.Label4.Visible = false; this.Label5.Visible = false; if (this.TextBox1.Text.Trim() = "") this.Label4.Visible = true; this.Label4.Text = "该项不可为空!" stat+; if (this.TextBox2.Text.Trim() = "") this.Label5.Visible = true; this.Label5.Text = "该项不可为空!" stat+; if (stat = 0) /从文件Web.config中读取连接字符串 string strconn = ConfigurationManager.ConnectionStrings"HTL_ManagerConnectionString".ConnectionString; /连接本地计算机的HM