为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

酒店客房管理系统的设计与实现精品

2019-02-01 15页 doc 2MB 67阅读

用户头像 机构认证

金水文库

鑫淼网络科技有限公司主要经营:PPT设计 、课件制作,软文策划、合同简历设计、计划书策划案、各类模板等。公司秉着用户至上的原则服务好每一位客户

举报
酒店客房管理系统的设计与实现精品嘉兴学院南湖学院 ( 2011 届) 本科毕业论文(设计) 题  目:  酒店客房管理系统的设计与实现 专  业:   计算机科学与技术   班  级:   计科N071        学  号:     2007456791631   姓  名:     徐海良          指导教师:       刘小晶          完成日期:                  ...
酒店客房管理系统的设计与实现精品
嘉兴学院南湖学院 ( 2011 届) 本科毕业论文() 题  目:  酒店客房管理系统的设计与实现 专  业:   计算机科学与技术   班  级:   计科N071        学  号:     2007456791631   姓  名:     徐海良          指导教师:       刘小晶          完成日期:                   嘉兴学院南湖学院教学事务管理中心 诚 信 声 明   我申明,所呈交的论文(设计)是本人在老师指导下进行的研究工作及取得的研究成果。据我查证,除了文中特别加以标注和致谢的地方外,论文(设计)中不包含其他人已经发表或撰写过的研究成果,也不包含为获得______或其他教育机构的学位或证书而使用过的材料。我承诺,论文(设计)中的所有内容均真实、可信。    论文(设计)作者签名: 签名日期: 年 月 日 授 权 声 明 学校有权保留送交论文(设计)的原件,允许论文(设计)被查阅和借阅,学校可以公布论文(设计)的全部或部分内容,可以影印、缩印或其他复制手段保存论文(设计),学校必须严格按照授权对论文(设计)进行处理,不得超越授权对论文(设计)进行任意处置。 论文(设计)作者签名: 签名日期: 年 月 日 酒店客房管理系统的设计与实现 徐海良 (嘉兴学院南湖学院数学与信息工程系) 摘要:随着Internet的蓬勃发展,各种行业的管理水平也在不断地完善与提高。酒店作为一项随着旅游业发展起来的服务行业,它的管理水平将直接影响到该领域的发展。本课题结合酒店服务行业的发展现状和需求,利用Visual Basic 2008功能强大的集成开发环境和SQL Server 2000后台数据库,开发了一个简单快捷的酒店客房管理系统。通过此系统,酒店的管理人员能够方便地执行客户的入住、预定、退房等日常事务管理。 关键词:酒店;酒店服务;酒店客户管理 Design and Implementation of Hotel Room Management System Xu Hai Liang (Department of Mathematics and Information Engineering ,Jiaxing University) Abstract: With the rapid development of the Internet, the management level of various industry is constantly perfect and improve. As a service business, the hotel developed with the tourism, its management level will directly affect the development of this field. This subject is combined with the present status and the demand of hotel service industry, using Visual Basic 2008, a powerful integrated exploitation environment and the backend database named SQL Server 2000, exploit a simple and quick hotel room management system. Through this system, manager of hotel can easily execute the Daily affairs managements such as check-in, reservation, check-out etc for customers. Keywords: hotel; hotel service; hotel customer management 目 录 11 绪论 11.1课题的研究背景 11.1.1 酒店管理简介 11.1.2 酒店客房管理系统的兴起 21.2 课题研究的目的与意义 21.3 课题的研究内容 21.4 课题的研究方法 31.5 论文的内容组织 42 基础知识简介 42.1 VB.NET简介 42.2 数据库技术 52.2.1 数据库设计的基本步骤 52.2.2 数据库设计的原则 73 系统分析 73.1 需求分析 93.2 可行性分析 93.2.1 技术可行性 93.2.2 实用性 104 概要设计 104.1 E-R图设计 144.2 数据表的逻辑结构设计 205 系统设计与实现 205.1 主界面设计 205.2 系统设置 205.2.1 房间类型 215.2.2 客房设置 245.2.3 操作员管理 265.2.4 清除数据 275.3 总台接待 275.3.1 房态查看 335.3.3 预定登记 355.3.4 取消预定 375.3.5 调房登记 375.4 收银管理 375.4.1 补交押金 395.4.2 退房结账 405.4.3 交接班 425.4.4 账务提醒 435.5 信息查询 435.5.1 入住查询 455.5.2 预定查询 465.5.3 营业收入查询 475.5.4 预收款查询 485.5.5 日营业报表 516 系统测试与评价 516.1 系统测试的原则及方法 516.2 测试与评价 516.2.1 单元测试 636.2.2 集成测试 636.2.3 系统测试与评价 647 总结及展望 65致 谢 66参考文献 1 绪论 1.1课题的研究背景 1.1.1 酒店管理简介 酒店管理(Hotel Management),是全球十大热门行业之一[1]。随着2008北京奥运会成功的举办,以及2010上海世博会和越来越多的国际大型活动将在中国举行,中国对旅游、酒店管理专业人才的需求也日益增大。 高级酒店管理人才在全球都是一直很紧缺的,酒店行业其薪金与社会福利收入远远高于其它传统行业,同时随着工作经验的增加其工作地位会稳步上升,在诸多优势共同影响下,酒店行业发展的前景十分乐观。 近年来,在国际人才市场上,酒店管理人才出现了供不应求的局面。预计到2010年,高级酒店管理人才将成为职场上炙手可热的高薪阶层。国内酒店从业人员,以高薪阶层为多。酒店管理人员在中国十大百万年薪职业中排名第六。酒店、旅游业将成为上海服务产业的支柱[2]。 随着全球经济的快速发展以及人们生活水平的不断提高,酒店行业在全球与中国地区的发展速度与就业率将远远超出传统型行业[3]。目前,全世界已有17个国际酒店管理集团在上海投资或管理高星级酒店,酒店行业在不断扩充,对人才的需求也不断增加,每年都需要数以千计的国际化酒店管理人才。 由于酒店管理的各种优势,使得它在酒店行业中变得越来越重要,它也将成为数字化社会的基础。 1.1.2 酒店客房管理系统的兴起 随着计算机技术日新月异的发展,信息化浪潮逐渐席卷全球。使用专用的酒店管理软件能为我们节约成本,增加数据的可靠性,提供高质量的服务。因此,酒店的管理人员逐渐开始采用这种先进的方式来代替手工作业[4]。 一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多弊端,如:效率低、保密性差,容易出现差错等,且对于查询空房间及已定房间等极为不方便。在当今时代,无论是一个小型旅店还是一个星级酒店,都有很多的数据需要管理。手工管理这些纷繁复杂数据的方式已经不适应时代的潮流[5]。于是人们开始尝试能否用计算机来代替手工管理呢? 酒店管理系统最早出现于六十年代末、七十年代初的美国,其中较有代表性的有美国的Ecco系统。之后随着硬件技术和各种网络技术、数据库技术的发展,操作系统的发展而推出了许多新型的酒店管理系统。 和国外相比,我国国内的酒店管理系统起步较晚,在其发展过程中吸收了国外的管理系统的精华,并结合国内的实际情况才逐步发展。直到90年代中后期,随着计算机在酒店中的普遍应用,酒店管理系统的发展到了一个新的时代[6]。 如今,我们生活的时代就是一个追求个性的高科技时代。随着Internet技术的进一步发展和普及,传统的管理模式已不能很好的适应世界经济发展的形式和我国国民经济建设的需要,而不断发展的酒店管理系统在满足顾客服务的需求的同时,也为酒店管理人员节省了许多成本。 1.2 课题研究的目的与意义 酒店客房管理系统的运用,使人们摆脱了传统手工作业方式的束缚,给人们带来了更多的便利,节约了大量成本。现如今越来越多的酒店行业采用酒店管理系统,这就给了酒店客房管理系统的发展提供了机会[7]。 本课题的目的是实现利用计算机技术进行酒店业务的管理,使酒店管理水平更加完善。在为客户提供高质量服务的同时,也创造了一个舒适的消费环境,让他们在消费的过程中体会到无限的乐趣,具有一定的现实意义。同时,通过完成本系统的设计,让自己对专业知识有一个更深入的认识,提高自己的综合能力。 1.3 课题的研究内容 本课题研究的主要内容是设计一个符合实际需求的酒店客房管理系统。该系统主要分为系统设置,总台接待,收银管理和信息查询四大功能模块。系统设置模块包括房间类型、客房设置、操作员管理和清理数据四个部分;总台接待模块包括房态查看、住宿登记、预订登记、取消登记和调房登记五个部分;收银部分则是对押金、退房、交接班和账务提醒的管理;信息查询模块则分为入住查询、预定查询、预收款查询和营业收入查询和日营业报表。 1.4 课题的研究方法 (1)文献研究法 文献研究法主要指收集、鉴别、整理文献,并通过对文献的研究,形成对事实科学认识的方法。该方法主要用于系统开发的前期。首先,通过阅读大量酒店客房管理系统的文献,结合现实,总结酒店客房管理系统的基本功能及不足。以此确定毕业设计的选题。然后,根据相关文献,对系统进行需求分析和可行性分析,从而确定自己的研究方向和实现方法。 (2) 数据库设计方法 通过该方法,设计出结构完整并适合管理的数据库。 (3) 面向对象方法 面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。通过该方法,运用面向对象编程工具,来完成酒店客房管理系统的开发。 1.5 论文的内容组织 论文共由七章组成。第1章绪论,主要介绍系统的研究背景、研究目的和意义、研究内容以及研究方法;第2章基础知识简介,主要介绍系统开发过程中会用到的相关技术,主要有系统的开发平台Visual Basic.NET以及数据库技术;第3章系统分析,主要是对系统总体功能的一个阐述,说明系统要实现的各个基本功能模块,并对系统的可行性进行分析;第4章 概要设计,主要介绍系统的总体框架及相关数据结构;第5章系统设计与实现,主要介绍系统的硬件软件环境、界面设计、功能实现、主要技术难点;第6章系统测试与评价,主要涉及系统的测试方法、测试用例、测试结论以及对系统的性能进行评价;第7章总结与展望,主要阐述了本课题所完成的研究工作和存在的不足,以及希望在今后可以完善的地方。 2 基础知识简介 2.1 VB.NET简介 VB.NET(Visual Basic.NET), 是微软最新平台技术,是VS提供的一种功能强大的面向对象编程语言,它是从 Visual Basic 语言演变而来的,是一种为高效地生成类型安全和面向对象的应用程序而设计的语言。Visual Basic 允许开发人员开发面向 Windows、Web 和移动设备的程序。与所有面向 Microsoft .NET Framework 的语言一样,使用 Visual Basic 编写的程序都具有安全性和语言互操作性方面的优点[8]。 同以前的VB相比,VB.NET提供了许多优点: (1)增强的性能。VB.NET中窗体设计器支持可视化继承,并且包含了许多新的特性,比如自动改变窗体大小、资源本地化支持、数据类工具内在支持XML数据。 (2)完全面向对象。VB.NET是基于.NET框架的完全面向对象以及支持类的各种特性的编程语言,而VB 6.0只是半面向对象的语言,使用VB.NET可以编制出功能更加强大的Windows程序。 (3).NET 框架。VB.NET直接建立在.NET的框架结构上,因此开发人员可以充分利用所有.NET平台特性,也可以与其他的.NET语言交互,快速的可视化开发网络应用程序、网络服务、Windows应用程序和服务器端组件。 (4)解决DLL版本问题。VB.NET为Windows应用程序提供了XCOPY部署,开发者不再需要为DLL的版本问题担忧。 (5)结构化强。程序代码结构化更强,开发环境舒适体贴。 随着.NET的发展,VB语言的功能越来越强大,但要理解的最重要的一点可能是,它生成的代码只能在.NET运行库中执行。 2.2 数据库技术 数据库技术产生于20世纪60年代末70年代初,其主要目的是有效地管理和存取大量的数据资源。主要研究如何存储,使用和管理数据。在应用计算机进行数据处理的技术发展过程中经历了三个阶段:程序数据处理技术、文件数据处理技术、数据库数据处理技术。发展至今,所有的数据处理应用系统都是采用数据库数据处理技术实现的[9]。 所谓数据库(Database),顾名思义,就是指按数据结构来存放数据的仓库[10]。它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。 在开发一个系统之前,首先要完成的就是数据库的设计。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据[11]。如何在给定的应用环境下,构造最优的数据库模型至关重要,它将影响整个系统的运作。下面对数据库的设计做下简单的介绍。 2.2.1 数据库设计的基本步骤 (1)需求分析阶段 该阶段的任务是准确了解和分析用户的需求,包括数据与处理。是整个设计过程的基础,也是最困难、最耗费时间的一步。 (2)概念结构设计阶段 该阶段主要是通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,即设计数据库的E-R模型图,是整个数据库设计的关键。 (3)逻辑结构设计阶段 该阶段是将概念结构转换为某个DBMS所支持的数据模型。如将E-R如转换为多张表。 (4)数据库物理设计阶段 该阶段是要为逻辑数据模型选取一个最适合应用环境的物理结构,包括存储结构和存取方法。 (5)数据库实施阶段 这个阶段是运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。 (6)数据库运行和维护阶段 数据库应用系统经过试运行后即可投入正式运行,但在系统运行过程中必须不断地对其进行评价、调整与修改。 在设计过程中要把数据库的设计和对数据库中数据处理的设计紧密结合起来,将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充,以完善两方面的设计[12]。 2.2.2 数据库设计的原则 在数据库设计过程中,往往会出现一些问题,如数据冗余、更新异常或是表与表之间的范式问题,要想减少错误的产生,避免不必要的麻烦,必须遵循数据库设计的基本原则。原则如下: (1)正确反映数据与数据(信息与信息)之间的层次逻辑关系; (2)对进入到数据库中的数据有一个有效性检查; (3)对数据库中的数据进行非逻辑操作进行相应的错误处理; (4)满足系统对性能上的。 3 系统分析 3.1 需求分析 随着信息化时代的到来,使用计算机进行企业信息管理已成为现实和发展的必然趋势[13]。如何建立一个方便快捷的管理系统,如何在最短时间内处理好所有客户的数据作为决策依据,是每个企业普遍面临的问题。 通过网络与书籍对酒店管理系统进行了一番了解之后认为一个完善的酒店客房管理系统应具备如下功能: (1)客房设置:酒店管理系统应具有输入酒店初始信息的功能,操作员需要通过这些信息来完成酒店的日常营业工作。。 (2)操作员管理:该模块主要实现增加或删除操作员并对用户权限加以控制,起到保护酒店信息安全作用。 (3)清理数据:该模块主要实现将系统保存的早期数据删除的功能。 (4)房态查看:该模块主要实现前台对酒店房间状态的查看,方便宾客登记。 (5)客户登记:该模块是系统的核心。要求能够依靠用户查询房态来确定入住房间,然后通过输入客户的信息,完成登记过程,同时更改房态。 (6)取消登记:该模块主要实现为已经登记的客户取消客房登记并还原房态的功能。 (7)调房登记:该模块主要实现按照客户的要求更换房间的功能。通过房态查看功能查找到合适的房间后,取消原有的客房登记,进行新的住宿登记。 (8)补交押金:该模块主要实现按照客户要求续房的功能。 (9)退房结账:该模块主要实现客户退房过程发生的房态复原和费用结算等功能。 (10)交接班:该模块主要实现酒店管理人员换班过程,其中包括前一工作期间营业收入的清点。 (11)账户提醒:该模块主要实现查看入住客房的客人是否需要补交押金的功能。 (12)预收款查询:该模块主要实现查看指定期间的预收款情况。 (13)营业收入查询:该模块主要实现查看指定期间的营业收入情况。 (14)日营业报表:该模块主要实现查看指定日期的营业收入情况。 为此确定系统功能如下图3-1所示。 图3-1 系统功能模块图 系统操作流程图如下图3-2所示。 图3-2 系统操作流程图 3.2 可行性分析 3.2.1 技术可行性 本系统是在Visual Studio 2008 集成开发环境下,VB.NET平台之上,使用VB语言设计完成的。 随着信息技术的发展,现在一般的电脑内存都已达到1G,双核处理器也很普遍,硬盘的存储容量基本上在250G到1T的范围。因此硬件技术能够支持上述软件的正常运行。VB.NET是开发Windows应用程序以及网络服务的强有力工具,它使它们使整个开发过程变得更为简单。所以,运用Visual Studio 2008实现一个管理系统的平台是可行的。 本系统的关键是收银管理功能。该功能以“前台接待”输入的数据为基础,综合管理与核算酒店的日常收入,是酒店经营管理方面的重要组成部分。 由于本人之前对Visual Basic.NET这一块涉及不多,因此在整个设计过程中的确花费了一些时间和精力。 3.2.2 实用性 使用酒店客房管理系统管理酒店是酒店业现代化发展的趋势。现如今,不仅是大型的星级酒店,就连小规模的酒店也陆续转为使用酒店管理软件来代替手工作业[14]。由于所学知识有限,本系统房态图部分的处理比较简单,但是也能够明确显示房间状态,因此也能达到实现效果。任何一个酒店管理系统都包含入住和预定的登记、退房结账和信息查询等功能,都需要连接数据库进行数据的查询与修改,这里对数据库的操作过程也没有太多不同。因此,本系统能满足一定的实用性。 4 概要设计 通过需求分析,确定了本系统所应具备的功能,及操作流程,并据此设计了合理的数据库。系统包含一个数据库,名为hotelbook。其中有九张数据表:操作员信息表(操作员),客房类型表(房间类型),交接信息表(交接班),客房基本信息表(客房设置),酒店楼层信息表(楼层信息),客户入住信息表(入住单),客户入住历史信息表(入住单历史),客户预定信息表(预定单),客户预定历史信息表(预定单历史)。 4.1 E-R图设计 E-R图是实体-联系图,提供了表示实体、属性和联系的方法,下面列出了各表和表与表之间E-R图。 操作员信息表(操作员)E-R图如图4-1所示。 图4-1操作员信息表(操作员)E-R图 客房类型表(房间类型)E-R图如图4-2所示。 图4-2客房类型表(房间类型)E-R图 交接信息表(交接班)E-R图如图4-3所示。 图4-3交接信息表(交接班)E-R图 客房基本信息表(客房设置)E-R图如图4-4所示。 如图4-4客房基本信息表(客房设置)E-R图 酒店楼层信息表(楼层信息)E-R图如图4-5所示。 如图4-5酒店楼层信息表(楼层信息)E-R图 客户入住信息表(入住单)E-R图如图4-6所示。 如图4-6客户入住信息表(入住单)E-R图 客户预定信息表(预定单)E-R图如图4-7所示。 如图4-7客户预定信息表(预定单)E-R图 客户入住历史信息表(入住单历史)E-R图如图4-8所示。 如图4-8客户入住历史信息表(入住单历史)E-R图 客户预定历史信息表(预定单历史)E-R图如图4-9所示。 如图4-9客户预定历史信息表(预定单历史)E-R图 表间E-R图如图4-10所示。 图4-10表间E-R图 4.2 数据表的逻辑结构设计 结合实际,各实体对应的关系表、表属性、数据类型的设计如下: 表4-1 操作员表 列名 数据类型 字段说明 允许NULL 备注 编号 int 用户编号 主键 用户名 varchar(20) 用户名称 允许 密码 varchar(16) 密码 允许 权限 varchar(20) 用户权限 允许 备注 varchar(60) 备注 允许 表4-2房间类型表 列名 数据类型 字段说明 允许NULL 备注 类型编号 int 类型编号 主键 类型名称 varchar(20) 类型名称 允许 表4-3交接班表 列名 数据类型 字段说明 允许NULL 备注 交接班编号 int 交接班编号 主键 交接日期 varchar(30) 交接日期 允许 交接时间 varchar(30) 交接时间 允许 接班 varchar(20) 接班 允许 交班 varchar(20) 交班 允许 接手现金 money 接手现金 允许 表4-4客房设置表 列名 数据类型 字段说明 允许NULL 备注 房间号码 varchar(12) 房间号码 主键 类型编号 int 类型编号 允许 楼层编号 int 楼层编号 允许 房态 varchar(20) 房态 允许 客房价格 money 客房价格 允许 额定人数 int 额定人数 允许 床数 int 床数 允许 是否可拼房 bit 是否可拼房 允许 拼房价格 Money 拼房价格 允许 客房描述 varchar(60) 客房描述 允许 备注 varchar(60) 备注 允许 表4-5楼层信息表 列名 数据类型 字段说明 允许NULL 备注 楼层编号 int 楼层编号 主键 楼层名称 varchar(20) 楼层名称 允许 表4-6入住单表 列名 数据类型 字段说明 允许NULL 备注 入住单号 varchar(60) 入住单号 主键 姓名 varchar(20) 姓名 允许 身份证 varchar(20) 身份证 允许 联系电话 varchar(20) 联系电话 允许 入住日期 smalldatetime 入住日期 允许 退房日期 smalldatetime 退房日期 允许 单据状态 varchar(20) 单据状态 允许 是否加床 bit 是否加床 允许 加床价格 money 加床价格 允许 房间号码 varchar(12) 房间号码 允许 类型编号 int 类型编号 允许 客房价格 money 客房价格 允许 入住人数 int 入住人数 允许 折扣 decimal 折扣 允许 折扣原因 varchar(60) 折扣原因 允许 应收房费 money 应收房费 允许 预收押金 money 预收押金 允许 早餐 bit 早餐 允许 叫醒 bit 叫醒 允许 保密 bit 保密 允许 VIP贵宾 bit VIP贵宾 允许 备注 varchar(510) 备注 允许 操作员 varchar(20) 操作员 允许 是否结账 bit 是否结账 允许 其他费用 money 其他费用 允许 结账金额 money 结账金额 允许 付款方式 varchar(20) 付款方式 允许 表4-7预定单表 列名 数据类型 字段说明 允许NULL 备注 预定单号 varchar(60) 入住单号 主键 姓名 varchar(20) 姓名 允许 身份证 varchar(20) 身份证 允许 联系电话 varchar(20) 联系电话 允许 入住日期 smalldatetime 入住日期 允许 退房日期 smalldatetime 退房日期 允许 单据状态 varchar(20) 单据状态 允许 是否加床 bit 是否加床 允许 加床价格 money 加床价格 允许 房间号码 varchar(12) 房间号码 允许 类型编号 int 类型编号 允许 客房价格 money 客房价格 允许 入住人数 int 入住人数 允许 折扣 decimal 折扣 允许 折扣原因 varchar(60) 折扣原因 允许 应收房费 money 应收房费 允许 预收押金 money 预收押金 允许 早餐 bit 早餐 允许 叫醒 bit 叫醒 允许 保密 bit 保密 允许 VIP贵宾 bit VIP贵宾 允许 备注 varchar(510) 备注 允许 操作员 varchar(20) 操作员 允许 表4-8入住单历史表 列名 数据类型 字段说明 允许NULL 备注 入住单号 varchar(60) 入住单号 主键 姓名 varchar(20) 姓名 允许 身份证 varchar(20) 身份证 允许 联系电话 varchar(20) 联系电话 允许 入住日期 smalldatetime 入住日期 允许 退房日期 smalldatetime 退房日期 允许 单据状态 varchar(20) 单据状态 允许 是否加床 bit 是否加床 允许 加床价格 money 加床价格 允许 房间号码 varchar(12) 房间号码 允许 类型编号 int 类型编号 允许 客房价格 money 客房价格 允许 入住人数 int 入住人数 允许 折扣 decimal 折扣 允许 折扣原因 varchar(60) 折扣原因 允许 应收房费 money 应收房费 允许 预收押金 money 预收押金 允许 早餐 bit 早餐 允许 叫醒 bit 叫醒 允许 保密 bit 保密 允许 VIP贵宾 bit VIP贵宾 允许 备注 varchar(510) 备注 允许 操作员 varchar(20) 操作员 允许 是否结账 bit 是否结账 允许 其他费用 money 其他费用 允许 结账金额 money 结账金额 允许 付款方式 varchar(20) 付款方式 允许 表4-7预定单历史表 列名 数据类型 字段说明 允许NULL 备注 预定单号 varchar(60) 入住单号 主键 姓名 varchar(20) 姓名 允许 身份证 varchar(20) 身份证 允许 联系电话 varchar(20) 联系电话 允许 入住日期 smalldatetime 入住日期 允许 退房日期 smalldatetime 退房日期 允许 单据状态 varchar(20) 单据状态 允许 是否加床 bit 是否加床 允许 加床价格 money 加床价格 允许 房间号码 varchar(12) 房间号码 允许 类型编号 int 类型编号 允许 客房价格 money 客房价格 允许 入住人数 int 入住人数 允许 折扣 decimal 折扣 允许 折扣原因 varchar(60) 折扣原因 允许 应收房费 money 应收房费 允许 预收押金 money 预收押金 允许 早餐 bit 早餐 允许 叫醒 bit 叫醒 允许 保密 bit 保密 允许 VIP贵宾 bit VIP贵宾 允许 备注 varchar(510) 备注 允许 操作员 varchar(20) 操作员 允许 5 系统设计与实现 本系统是在Visual Studio 2008集成开发环境下,运用Visual Basic.NET平台开发完成的。整个系统不仅为用户提供了方便快捷的服务,同时也便于管理者对数据的管理。 5.1 主界面设计 本系统运用了VB.NET的Windows窗体功能,实现了系统的统一风格界面。打开系统后,就会弹出一个登陆界面,输入正确的用户名和密码之后才能进入系统主界面。本系统的主界面加入了一个MenuStrip控件、一个StatusStrip控件和一个Timer控件,样式如下图5-1所示。 图5-1 系统主界面 5.2 系统设置 本系统的设置功能主要实现了房间类型的增加,房间状态的修改以及操作员的增加与删除,密码的修改等功能。 5.2.1 房间类型 通过使用该模块的功能,可以实现对房间类型的添加和删除。使用时会在该窗体左侧的数据窗口中显示房间的类型,并随着用户的操作修改数据库进而改变显示的数据。 房间类型运行界面如图5-2所示。 图5-2 房间类型界面 打开房间类型界面,在房间类型文本框中输入想要添加的类型名称,再单击“添加”按钮,就将该数据加入数据库中,左侧的数据窗口中也显示新添了一条记录。如果需要删除数据,只需要双击数据窗口中的指定信息即可。 房间类型相关事件代码: Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click If TextBox1.Text = "" Then MessageBox.Show("房间类型不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else Dim str = "insert into 房间类型 ( 类型名称 ) values ('" & TextBox1.Text & "')" Dim cmd As New SqlCommand(str, conn) Try conn.Open() cmd.ExecuteNonQuery() dsRoomType.Clear() daRoomType = New SqlDataAdapter("select * from 房间类型", conn) daRoomType.Fill(dsRoomType, "房间类型") DataGridView1.DataSource = dsRoomType.Tables("房间类型") DataGridView1.Columns(0).Width = 40 DataGridView1.Columns(1).Width = 60 MsgBox("插入成功") TextBox1.Text = "" Catch ex As Exception MsgBox(ex.ToString) TextBox1.Text = "" Finally conn.Close() End Try End If End Sub 5.2.2 客房设置 该窗体界面由Label,TextBox,ComboBox,CheckBox,GroupBox,DataGridView和Button控件组成。通过修改这些控件的信息,再单击对应的按钮来执行对客房设置数据表中信息的添加,修改以及删除操作,并将客房设置数据表中的信息显示到下方的数据窗口中。 客房设置运行界面如图5-3所示。 图5-3客房设置界面 客房设置修改事件代码: Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click If DataGridView1.CurrentRow Is Nothing Then MessageBox.Show("请选中数据!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBoxRoomNo.Text = "" Then MessageBox.Show("房间号码不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf ComboBox1.Text = "" Then MessageBox.Show("房间类型不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBoxRoomPrice.Text = "" Then MessageBox.Show("客房价格不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" conn.Open() cmd.Connection = conn str = "select * from 客房设置 where 房间号码 = '" & TextBoxRoomNo.Text & "'" cmd = New SqlClient.SqlCommand(str, conn) dr = cmd.ExecuteReader() If dr.Read() Then dr.Close() If DataGridView1.CurrentRow Is Nothing Then MessageBox.Show("请选中数据!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else Dim i As Integer i = DataGridView1.CurrentRow.Index cmd.CommandText = "update 客房设置 set 类型名称 = @房间类型,楼层名称 = @所属楼层,房态 = @房态,客房价格 = @客房价格,额定人数 = @额定人数,床数 = @床数,是否可拼房 = @是否可拼房,拼房价格 = @拼房价格,客房描述 = @客房描述,备注 = @备注 where 房间号码 = @房间号码" cmd.Parameters.Add("@房间号码", SqlDbType.VarChar).Value = DataGridView1.CurrentRow.Cells(0).Value.ToString() cmd.Parameters.Add("@房间类型", System.Data.SqlDbType.VarChar) cmd.Parameters("@房间类型").Value = ComboBox1.Text cmd.Parameters.Add("@房态", System.Data.SqlDbType.Char) cmd.Parameters("@房态").Value = ComboBoxRoomSitu.Text cmd.Parameters.Add("@客房价格", System.Data.SqlDbType.Int) cmd.Parameters("@客房价格").Value = CInt(TextBoxRoomPrice.Text) cmd.Parameters.Add("@额定人数", System.Data.SqlDbType.Int) cmd.Parameters("@额定人数").Value = CInt(TextBoxPeople.Text) cmd.Parameters.Add("@床数", System.Data.SqlDbType.Int) cmd.Parameters("@床数").Value = CInt(TextBoxBed.Text) cmd.Parameters.Add("@是否可拼房", System.Data.SqlDbType.Bit) cmd.Parameters("@是否可拼房").Value = CBool(CheckBox1.Checked) cmd.Parameters.Add("@拼房价格", System.Data.SqlDbType.Int) cmd.Parameters("@拼房价格").Value = CInt(TextBoxPinPrice.Text) cmd.Parameters.Add("@所属楼层", System.Data.SqlDbType.VarChar) cmd.Parameters("@所属楼层").Value = ComboBoxFloor.Text cmd.Parameters.Add("@客房描述", System.Data.SqlDbType.VarChar) cmd.Parameters("@客房描述").Value = TextBoxDiscrp.Text cmd.Parameters.Add("@备注", System.Data.SqlDbType.VarChar) cmd.Parameters("@备注").Value = TextBoxTip.Text Try cmd.ExecuteNonQuery() MsgBox("修改成功") dsRoom.Clear() daRoom = New SqlDataAdapter("select * from 客房设置 order by 房间号码", conn) daRoom.Fill(dsRoom, "客房设置") DataGridView1.DataSource = dsRoom.Tables("客房设置") Catch ex As Exception MsgBox(ex.ToString) End Try End If Else MessageBox.Show("该客房不存在!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) End If conn.Close() End If End Sub 5.2.3 操作员管理 操作员管理功能由增加操作员、删除操作员和修改密码三部分组成。用户可通过打开对应界面执行对应操作来使用对应功能。 增加操作员、删除操作员、修改密码运行界面分别如图5-4、图5-5、图5-6所示。 图5-4 增加操作员界面 图5-5 删除操作员界面 图5-6 修改密码 增加操作员相关事件代码: Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click If TextBoxUserName.Text = "" Then MessageBox.Show("用户名不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBoxPassword.Text = "" Then MessageBox.Show("密码不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBoxEnsurePassword.Text = "" Then MessageBox.Show("请确认密码!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf ComboBoxRight.Text = "" Then MessageBox.Show("请选择权限!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBoxPassword.Text <> TextBoxEnsurePassword.Text Then MessageBox.Show("两次输入的密码不一致!", "系统提示、", MessageBoxButtons.OK, MessageBoxIcon.Information) Else conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" conn.Open() cmd.Connection = conn str = "Select * From 操作员 Where 用户名 ='" & TextBoxUserName.Text & "'" cmd = New SqlClient.SqlCommand(str, conn) dr = cmd.ExecuteReader() If dr.Read() Then MessageBox.Show("该用户已存在!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else dr.Close() cmd.CommandText = "insert into 操作员 values (@UserName,@Password,@Right)" cmd.Parameters.Add("@UserName", System.Data.SqlDbType.VarChar) cmd.Parameters("@UserName").Value = TextBoxUserName.Text cmd.Parameters.Add("@Password", System.Data.SqlDbType.VarChar) cmd.Parameters("@Password").Value = TextBoxPassword.Text cmd.Parameters.Add("@Right", System.Data.SqlDbType.VarChar) cmd.Parameters("@Right").Value = ComboBoxRight.Text Try cmd.ExecuteNonQuery() MsgBox("插入成功") Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try End If End If End Sub 打开增加操作员界面,在相应文本框内输入用户名、密码和确认密码,再在“权限”组合框中选择相应权限,单击“添加”按钮,便成功添加操作员;打开删除操作员界面,单击选中左侧数据窗口中对应的数据,单击“删除”按钮,便成功完成删除操作;打开修改密码界面,在相应文本框内输入正确的用户名和旧密码以及新密码和确认密码,单击“确定”按钮,便成功修改密码。 5.2.4 清除数据 清除数据界面由DataGridView和Button控件组成。该模块用于删除酒店历史记录,操作员可以通过双击想要删除的数据来实现删除功能。 清除数据运行界面如图5-7所示。 图5-7 清除数据界面 清除数据相关事件代码: Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick If DataGridView1.CurrentRow Is Nothing Then MessageBox.Show("请选中数据!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf MessageBox.Show("确定要删除该数据吗?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then Dim i As Integer i = DataGridView1.CurrentRow.Index Dim cmd As New SqlCommand("delete from 入住单历史 where 入住单号 = @入住单号", conn) cmd.Parameters.Add("@入住单号", SqlDbType.VarChar, 60).Value = DataGridView1.CurrentRow.Cells(0).Value.ToString() Try conn.Open() cmd.ExecuteNonQuery() dsDeleData1.Clear() daDeleData1 = New SqlDataAdapter("select * from 入住单历史 ", conn) daDeleData1.Fill(dsDeleData1, "入住单历史") DataGridView1.DataSource = dsDeleData1.Tables("入住单历史") MsgBox("删除成功!") Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try End If End Sub 5.3 总台接待 本系统的总台接待功能主要实现了房态图的查询与修改,客房的入住和预定,以及预定的取消,客房的调换等功能。 5.3.1 房态查看 该房态查看界面由Label,TextBox,PictureBox,ComboBox,GroupBox,DataGridView和Button多个控件组成。操作员可以通过该模块查询酒店客房的状态信息,还可以在该模块中修改各房间的状态。 房态查看运行界面如图5-8所示。 INCLUDEPICTURE "../../../Users/ADMINI~1/AppData/Local/Temp/%7b%5b%7d%5bPFLGO_XJ456C@TJ2EFN.jpg" \* MERGEFORMAT \d 图5-8 房态查看界面 房态查看相关事件代码: Private Sub InitDataTable() Dim dv1 As New DataView Dim str As String = "select count(客房设置.房间号码) as total from 客房设置,楼层信息 where 客房设置.楼层名称 = 楼层信息.楼层名称 group by 楼层信息.楼层编号 order by 楼层信息.楼层编号" Dim dsRoomCount As New DataSet Dim daRoomCount As SqlDataAdapter = New SqlDataAdapter(str, conn) daRoomCount.Fill(dsRoomCount, "房间数") dv1 = dsRoomCount.Tables("房间数").DefaultView If dv1.Count <> 0 Then For i As Integer = 0 To dv1.Count - 1 If maxnumber < CInt(dv1(i)(0)) Then maxnumber = CInt(dv1(i)(0)) End If Next End If Dim dv2 As New DataView str = "select 房间号码,楼层名称 from 客房设置" Dim dsRoomInf As New DataSet Dim daRoomInf As SqlDataAdapter = New SqlDataAdapter(str, conn) daRoomInf.Fill(dsRoomInf, "房间信息") dv2 = dsRoomInf.Tables("房间信息").DefaultView dtRoomState = New DataTable dtRoomState.Columns.Add("楼层") For j As Integer = 1 To maxnumber dtRoomState.Columns.Add(j.ToString) Next End Sub 打开房态查看界面,可通过左侧数据窗口查看酒店房态信息。操作员欲修改房态时,只需在右侧组合框中选择对应的房间号码,然后单击下方对应按钮,则房态信息修改完毕,左侧数据窗口显示修改后的房态信息。 5.3.2 住宿登记 住宿登记界面由Label,TextBox,CheckBox,ComboBox,DateTimPicker,GroupBox,DataGridView和Button多个控件组成。该界面用于酒店客户入住的登记。操作员填好登记信息后,单击“保存”按钮,系统会自动保存到入住单信息表中,也可以从对应预定单中获取数据。 住宿登记运行界面如图5-9所示。 图5-9 住宿登记界面 住宿登记相关事件代码: Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click If TextBoxName.Text = "" Then MessageBox.Show("姓名不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBoxRoomType.Text = "" And TextBoxRoomPrice.Text = "" Then MessageBox.Show("该客房不可入住!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" str = "Select * From 客房设置 Where 房间号码 ='" & ComboBox1.Text & "' and 房态 = '空房'" cmd = New SqlClient.SqlCommand(str, conn) cmd.Connection = conn conn.Open() dr = cmd.ExecuteReader() If dr.Read() Then dr.Close() cmd.CommandText = "insert into 入住单 (入住单号,姓名,身份证,联系电话,入住日期,单据状态,是否加床,加床价格,房间号码,类型名称,客房价格,入住人数,折扣,折扣原因,转入房费,预收押金,早餐,叫醒,保密,VIP贵宾,备注,操作员,是否结账,其他费用,结账金额)values (@入住单号,@姓名,@身份证,@联系电话,getdate(),@单据状态,@是否加床,@加床价格,@房间号码,@类型名称,@客房价格,@入住人数,@折扣,@折扣原因,@转入房费,@预收押金,@早餐,@叫醒,@保密,@VIP贵宾,@备注,@操作员,@是否结账,'0','0')" cmd.Parameters.Add("@入住单号", System.Data.SqlDbType.VarChar) cmd.Parameters("@入住单号").Value = TextBoxNo.Text cmd.Parameters.Add("@姓名", System.Data.SqlDbType.VarChar) cmd.Parameters("@姓名").Value = TextBoxName.Text cmd.Parameters.Add("@身份证", System.Data.SqlDbType.VarChar) cmd.Parameters("@身份证").Value = TextBoxID.Text cmd.Parameters.Add("@联系电话", System.Data.SqlDbType.VarChar) cmd.Parameters("@联系电话").Value = TextBoxTelephone.Text cmd.Parameters.Add("@单据状态", System.Data.SqlDbType.VarChar) cmd.Parameters("@单据状态").Value = TextBox1.Text cmd.Parameters.Add("@是否加床", System.Data.SqlDbType.Bit) cmd.Parameters("@是否加床").Value = CheckBoxAddBed.Checked cmd.Parameters.Add("@加床价格", System.Data.SqlDbType.Int) cmd.Parameters("@加床价格").Value = TextBoxAddBedPrice.Text cmd.Parameters.Add("@房间号码", System.Data.SqlDbType.VarChar) cmd.Parameters("@房间号码").Value = ComboBox1.Text cmd.Parameters.Add("@类型名称", System.Data.SqlDbType.VarChar) cmd.Parameters("@类型名称").Value = TextBoxRoomType.Text cmd.Parameters.Add("@客房价格", System.Data.SqlDbType.Int) cmd.Parameters("@客房价格").Value = TextBoxRoomPrice.Text cmd.Parameters.Add("@入住人数", System.Data.SqlDbType.Int) cmd.Parameters("@入住人数").Value = TextBoxNumber.Text cmd.Parameters.Add("@折扣", System.Data.SqlDbType.Decimal) cmd.Parameters("@折扣").Value = TextBoxDiscount.Text cmd.Parameters.Add("@折扣原因", System.Data.SqlDbType.VarChar) cmd.Parameters("@折扣原因").Value = TextBoxDiscountReason.Text cmd.Parameters.Add("@转入房费", System.Data.SqlDbType.Int) cmd.Parameters("@转入房费").Value = TextBoxRoomFee.Text cmd.Parameters.Add("@预收押金", System.Data.SqlDbType.Int) cmd.Parameters("@预收押金").Value = TextBoxDeposit.Text cmd.Parameters.Add("@早餐", System.Data.SqlDbType.Bit) cmd.Parameters("@早餐").Value = CheckBoxBreakfast.Checked cmd.Parameters.Add("@叫醒", System.Data.SqlDbType.Bit) cmd.Parameters("@叫醒").Value = CheckBoxWakeUp.Checked cmd.Parameters.Add("@保密", System.Data.SqlDbType.Bit) cmd.Parameters("@保密").Value = CheckBoxSecret.Checked cmd.Parameters.Add("@VIP贵宾", System.Data.SqlDbType.Bit) cmd.Parameters("@VIP贵宾").Value = CheckBoxVIP.Checked cmd.Parameters.Add("@备注", System.Data.SqlDbType.VarChar) cmd.Parameters("@备注").Value = TextBoxTip.Text cmd.Parameters.Add("@操作员", System.Data.SqlDbType.VarChar) cmd.Parameters("@操作员").Value = TextBoxUser.Text cmd.Parameters.Add("@是否结账", System.Data.SqlDbType.Bit) cmd.Parameters("@是否结账").Value = CheckBox1.Checked cmd1.CommandText = "update 客房设置 set 房态 = '住房' where 房间号码 = '" & ComboBox1.Text & "'" cmd1.Connection = conn Try cmd.ExecuteNonQuery() cmd1.ExecuteNonQuery() MsgBox("插入成功") dt = DateTime.Now.ToString("yyyyMMddHHmmss") TextBoxNo.Text = "RZ" + dt TextBoxUser.Text = frmMain.ToolStripStatusLabel2.Text Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try Else str = "Select * From 客房设置 Where 房间号码 ='" & ComboBox1.Text & "' and 房态 = '预定'" cmd = New SqlClient.SqlCommand(str, conn) cmd.Connection = conn dr.Close() dr = cmd.ExecuteReader() If dr.Read() Then dr.Close() cmd.CommandText = "insert into 入住单 (入住单号,姓名,身份证,联系电话,入住日期,单据状态,是否加床,加床价格,房间号码,类型名称,客房价格,入住人数,折扣,折扣原因,转入房费,预收押金,早餐,叫醒,保密,VIP贵宾,备注,操作员,是否结账,其他费用,结账金额)values (@入住单号,@姓名,@身份证,@联系电话,getdate(),@单据状态,@是否加床,@加床价格,@房间号码,@类型名称,@客房价格,@入住人数,@折扣,@折扣原因,@转入房费,@预收押金,@早餐,@叫醒,@保密,@VIP贵宾,@备注,@操作员,@是否结账,'0','0')" cmd.Parameters.Add("@入住单号", System.Data.SqlDbType.VarChar) cmd.Parameters("@入住单号").Value = TextBoxNo.Text cmd.Parameters.Add("@姓名", System.Data.SqlDbType.VarChar) cmd.Parameters("@姓名").Value = TextBoxName.Text cmd.Parameters.Add("@身份证", System.Data.SqlDbType.VarChar) cmd.Parameters("@身份证").Value = TextBoxID.Text cmd.Parameters.Add("@联系电话", System.Data.SqlDbType.VarChar) cmd.Parameters("@联系电话").Value = TextBoxTelephone.Text cmd.Parameters.Add("@单据状态", System.Data.SqlDbType.VarChar) cmd.Parameters("@单据状态").Value = TextBox1.Text cmd.Parameters.Add("@是否加床", System.Data.SqlDbType.Bit) cmd.Parameters("@是否加床").Value = CheckBoxAddBed.Checked cmd.Parameters.Add("@加床价格", System.Data.SqlDbType.Int) cmd.Parameters("@加床价格").Value = TextBoxAddBedPrice.Text cmd.Parameters.Add("@房间号码", System.Data.SqlDbType.VarChar) cmd.Parameters("@房间号码").Value = ComboBox1.Text cmd.Parameters.Add("@类型名称", System.Data.SqlDbType.VarChar) cmd.Parameters("@类型名称").Value = TextBoxRoomType.Text cmd.Parameters.Add("@客房价格", System.Data.SqlDbType.Int) cmd.Parameters("@客房价格").Value = TextBoxRoomPrice.Text cmd.Parameters.Add("@入住人数", System.Data.SqlDbType.Int) cmd.Parameters("@入住人数").Value = TextBoxNumber.Text cmd.Parameters.Add("@折扣", System.Data.SqlDbType.Decimal) cmd.Parameters("@折扣").Value = TextBoxDiscount.Text cmd.Parameters.Add("@折扣原因", System.Data.SqlDbType.VarChar) cmd.Parameters("@折扣原因").Value = TextBoxDiscountReason.Text cmd.Parameters.Add("@转入房费", System.Data.SqlDbType.Int) cmd.Parameters("@转入房费").Value = TextBoxRoomFee.Text cmd.Parameters.Add("@预收押金", System.Data.SqlDbType.Int) cmd.Parameters("@预收押金").Value = TextBoxDeposit.Text cmd.Parameters.Add("@早餐", System.Data.SqlDbType.Bit) cmd.Parameters("@早餐").Value = CheckBoxBreakfast.Checked cmd.Parameters.Add("@叫醒", System.Data.SqlDbType.Bit) cmd.Parameters("@叫醒").Value = CheckBoxWakeUp.Checked cmd.Parameters.Add("@保密", System.Data.SqlDbType.Bit) cmd.Parameters("@保密").Value = CheckBoxSecret.Checked cmd.Parameters.Add("@VIP贵宾", System.Data.SqlDbType.Bit) cmd.Parameters("@VIP贵宾").Value = CheckBoxVIP.Checked cmd.Parameters.Add("@备注", System.Data.SqlDbType.VarChar) cmd.Parameters("@备注").Value = TextBoxTip.Text cmd.Parameters.Add("@操作员", System.Data.SqlDbType.VarChar) cmd.Parameters("@操作员").Value = TextBoxUser.Text cmd.Parameters.Add("@是否结账", System.Data.SqlDbType.Bit) cmd.Parameters("@是否结账").Value = CheckBox1.Checked cmd1.CommandText = "update 客房设置 set 房态 = '住房' where 房间号码 = '" & ComboBox1.Text & "'" cmd2.CommandText = "update 预定单 set 单据状态 = '入住' where 房间号码 = '" & ComboBox1.Text & "'" cmd3.CommandText = "insert into 预定单历史 select * from 预定单 where 房间号码 = '" & ComboBox1.Text & "'" cmd4.CommandText = "delete from 预定单 where 房间号码 = '" & ComboBox1.Text & "'" cmd1.Connection = conn cmd2.Connection = conn cmd3.Connection = conn cmd4.Connection = conn Try cmd2.ExecuteNonQuery() cmd.ExecuteNonQuery() cmd1.ExecuteNonQuery() cmd3.ExecuteNonQuery() cmd4.ExecuteNonQuery() MsgBox("插入成功") dt = DateTime.Now.ToString("yyyyMMddHHmmss") TextBoxNo.Text = "RZ" + dt TextBoxUser.Text = frmMain.ToolStripStatusLabel2.Text Catch ex As Exception MsgBox(ex.ToString) End Try Else MessageBox.Show("该客房不可入住!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) End If conn.Close() End If End If End Sub 5.3.3 预定登记 预定登记界面由Label,TextBox,CheckBox,ComboBox,DateTimPicker,GroupBox,DataGridView和Button多个控件组成。该界面用于酒店用户预定客房的登记。操作员填好登记信息后,单击“保存”按钮,系统会自动保存到预定单信息表中。 预定登记运行界面如图5-10所示。 图5-10 预定登记界面 预定登记相关事件代码: Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click If TextBoxName.Text = "" Then MessageBox.Show("用户名不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBoxRoomType.Text = "" And TextBoxRoomPrice.Text = "" Then MessageBox.Show("该客房不可入住!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" str = "Select * From 客房设置 Where 房间号码 ='" & ComboBox1.Text & "' and 房态 = '空房'" cmd = New SqlClient.SqlCommand(str, conn) conn.Open() dr = cmd.ExecuteReader() If dr.Read() Then dr.Close() cmd.CommandText = "insert into 预定单 (预定单号,姓名,身份证,联系电话,入住日期,单据状态,是否加床,加床价格,房间号码,类型名称,客房价格,入住人数,折扣,折扣原因,转入房费,预收押金,早餐,叫醒,保密,VIP贵宾,备注,操作员,是否结账)values (@预定单号,@姓名,@身份证,@联系电话,getdate(),@单据状态,@是否加床,@加床价格,@房间号码,@类型名称,@客房价格,@入住人数,@折扣,@折扣原因,@转入房费,@预收押金,@早餐,@叫醒,@保密,@VIP贵宾,@备注,@操作员,@是否结账)" cmd.Parameters.Add("@预定单号", System.Data.SqlDbType.VarChar) cmd.Parameters("@预定单号").Value = TextBoxNo.Text cmd.Parameters.Add("@姓名", System.Data.SqlDbType.VarChar) cmd.Parameters("@姓名").Value = TextBoxName.Text cmd.Parameters.Add("@身份证", System.Data.SqlDbType.VarChar) cmd.Parameters("@身份证").Value = TextBoxID.Text cmd.Parameters.Add("@联系电话", System.Data.SqlDbType.VarChar) cmd.Parameters("@联系电话").Value = TextBoxTelephone.Text cmd.Parameters.Add("@单据状态", System.Data.SqlDbType.VarChar) cmd.Parameters("@单据状态").Value = TextBox1.Text cmd.Parameters.Add("@是否加床", System.Data.SqlDbType.Bit) cmd.Parameters("@是否加床").Value = CheckBoxAddBed.Checked cmd.Parameters.Add("@加床价格", System.Data.SqlDbType.Int) cmd.Parameters("@加床价格").Value = TextBoxAddBedPrice.Text cmd.Parameters.Add("@房间号码", System.Data.SqlDbType.VarChar) cmd.Parameters("@房间号码").Value = ComboBox1.Text cmd.Parameters.Add("@类型名称", System.Data.SqlDbType.VarChar) cmd.Parameters("@类型名称").Value = TextBoxRoomType.Text cmd.Parameters.Add("@客房价格", System.Data.SqlDbType.Int) cmd.Parameters("@客房价格").Value = TextBoxRoomPrice.Text cmd.Parameters.Add("@入住人数", System.Data.SqlDbType.Int) cmd.Parameters("@入住人数").Value = TextBoxNumber.Text cmd.Parameters.Add("@折扣", System.Data.SqlDbType.Decimal) cmd.Parameters("@折扣").Value = TextBoxDiscount.Text cmd.Parameters.Add("@折扣原因", System.Data.SqlDbType.VarChar) cmd.Parameters("@折扣原因").Value = TextBoxDiscountReason.Text cmd.Parameters.Add("@转入房费", System.Data.SqlDbType.Int) cmd.Parameters("@转入房费").Value = TextBoxRoomFee.Text cmd.Parameters.Add("@预收押金", System.Data.SqlDbType.Int) cmd.Parameters("@预收押金").Value = TextBoxDeposit.Text cmd.Parameters.Add("@早餐", System.Data.SqlDbType.Bit) cmd.Parameters("@早餐").Value = CheckBoxBreakfast.Checked cmd.Parameters.Add("@叫醒", System.Data.SqlDbType.Bit) cmd.Parameters("@叫醒").Value = CheckBoxWakeUp.Checked cmd.Parameters.Add("@保密", System.Data.SqlDbType.Bit) cmd.Parameters("@保密").Value = CheckBoxSecret.Checked cmd.Parameters.Add("@VIP贵宾", System.Data.SqlDbType.Bit) cmd.Parameters("@VIP贵宾").Value = CheckBoxVIP.Checked cmd.Parameters.Add("@备注", System.Data.SqlDbType.VarChar) cmd.Parameters("@备注").Value = TextBoxTip.Text cmd.Parameters.Add("@操作员", System.Data.SqlDbType.VarChar) cmd.Parameters("@操作员").Value = TextBoxUser.Text cmd.Parameters.Add("@是否结账", System.Data.SqlDbType.Bit) cmd.Parameters("@是否结账").Value = CheckBox1.Checked cmd1.CommandText = "update 客房设置 set 房态 = '预定' where 房间号码 = '" & ComboBox1.Text & "'" cmd1.Connection = conn Try cmd.ExecuteNonQuery() cmd1.ExecuteNonQuery() MsgBox("插入成功") dt = DateTime.Now.ToString("yyyyMMddHHmmss") TextBoxNo.Text = "YD" + dt TextBoxUser.Text = frmMain.ToolStripStatusLabel2.Text Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try Else MessageBox.Show("该客房不为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End If End Sub 5.3.4 取消预定 取消预定界面由Label,TextBox和Button控件组成。该界面的功能是取消客户的客房预定。操作员输入房间号码和姓名信息后,单击“确定”按钮,系统会自动删除对应预定单信息。 取消预定运行界面如图5-11所示。 图5-11 取消预定界面 取消预定相关事件代码: Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click If TextBox1.Text = "" Then MessageBox.Show("房间号码不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBox2.Text = "" Then MessageBox.Show("姓名不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" conn.Open() str = "Select * From 预定单 Where 房间号码 ='" & TextBox1.Text & "' And 姓名 ='" & TextBox2.Text & "' and 单据状态 = '预定'" cmd = New SqlClient.SqlCommand(Str, conn) dr = cmd.ExecuteReader() If dr.Read() Then dr.Close() cmd.CommandText = "delete from 预定单 where 房间号码 = '" & TextBox1.Text & "'" cmd1.CommandText = "update 客房设置 set 房态 = '空房' where 房间号码 = '" & TextBox1.Text & "'" cmd.Connection = conn cmd1.Connection = conn Try cmd.ExecuteNonQuery() cmd1.ExecuteNonQuery() MsgBox("删除成功") Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try End If End If End Sub 5.3.5 调房登记 调房登记界面由Label,TextBox,CheckBox,ComboBox,DateTimPicker,GroupBox,DataGridView和Button多个控件组成。入住客人需要调换房间时,可以通过该界面的功能进行调换。操作员输入房间号码后,单击“查询”按钮,系统会自动查找到对应房间信息,再单击“核算”按钮,可以求出之前的房费,最后通过单击“保存”按钮将新信息保存到入住单信息表中。 调房登记运行界面如图5-12所示。 图5-12 调房登记界面 打开调房登记界面可以看到,起初“核算”与“保存”按钮不可用,在选择转出转入房间号码之后单击“查询”按钮,就会显示转出房间用户的信息,且“核算”按钮变为可用,而“查询”按钮不可用。单击“核算”按钮,就能算出之前所需房费,此时“保存”按钮变为可用,而“核算”按钮不可用。最后只需单击“保存”按钮就可以完成调房操作了。 5.4 收银管理 本系统的收银管理功能主要实现了补交押金,退房结账,交接班和账务提醒功能。 5.4.1 补交押金 补交押金界面由Label,TextBox,ComboBox,GroupBox和Button多个控件组成。当客户押金余额不足时,操作员可以通过该模块补交入住客房的押金。 补交押金运行界面如图5-13所示。 图5-13 补交押金界面 打开补交押金界面,选择房间号码后,在“追加押金”文本框中输入追加押金金额,单击“确定”按钮,便完成补交押金操作。 补交押金相关事件代码: Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click If ComboBoxRoomNo.Text = "" Then MessageBox.Show("房间号码不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBoxDeposit.Text = "" Then MessageBox.Show("押金不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" str = "Select * From 入住单 Where 房间号码 ='" & ComboBoxRoomNo.Text & "' and 单据状态 = '入住'" cmd = New SqlClient.SqlCommand(str, conn) cmd.Connection = conn conn.Open() dr = cmd.ExecuteReader() If dr.Read() Then dr.Close() cmd.CommandText = "update 入住单 set 预收押金 = 预收押金 + '" & TextBoxDeposit.Text & "'" cmd.Connection = conn Try cmd.ExecuteNonQuery() MsgBox("插入成功") Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try Else MessageBox.Show("该客房未入住!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) conn.Close() End If End If End Sub 5.4.2 退房结账 退房结账界面由Label,TextBox,ComboBox,GroupBox,CheckBox,DateTimePicker和Button多个控件组成。操作员可以通过该模块查询到指定房间的信息,计算出结账金额并将修改后的信息保存到入住单历史信息表中。 退房结账运行界面如图5-14所示。 图5-14 退房结账界面 退房结账相关事件代码: Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click Dim cmd3 As New SqlCommand If ComboBoxRoomNo.Text = "" Then MessageBox.Show("房间号码不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBoxRoomType.Text = "" And TextBoxRoomPrice.Text = "" Then MessageBox.Show("该客房不可入住!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf ComboBoxPayWay.Text = "" Then MessageBox.Show("请输入付款方式!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBoxNumber.Text = "" Or TextBoxDiscount.Text = "" Or TextBoxRoomFee.Text = "" Or TextBoxDeposit.Text = "" Or TextBoxAddBedPrice.Text = "" Or TextBoxOtherPrice.Text = "" Or TextBoxTotal.Text = "" Then MessageBox.Show("费用不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else Try cmd3.CommandText = "kf_退房结账" cmd3.CommandType = CommandType.StoredProcedure cmd3.Parameters.Add("@入住单号", System.Data.SqlDbType.VarChar) cmd3.Parameters("@入住单号").Value = TextBoxNo.Text cmd3.Parameters.Add("@付款方式", System.Data.SqlDbType.VarChar) cmd3.Parameters("@付款方式").Value = ComboBoxPayWay.Text conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" conn.Open() cmd3.Connection = conn cmd3.ExecuteNonQuery() MsgBox("退房成功") btnCalc.Enabled = False btnSave.Enabled = False Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try End If End Sub 打开退房结账界面可以看到,起初“核算”与“保存”按钮不可用,在“房间号码”组合框中选择对应的房间号码后单击“查询”按钮,就会显示该房间用户的信息,且“核算”按钮变为可用,而“查询”按钮不可用。此时再选择付款方式,单击“核算”按钮,就能算出所需房费,此时“保存”按钮变为可用,而“核算”按钮不可用。最后只需单击“保存”按钮就可以完成退房操作了。 5.4.3 交接班 交接班界面由Label,TextBox,ComboBox,GroupBox和Button多个控件组成。操作员可以通过该模块查询到指定房间的入住信息,计算出预收款和结账金额并将信息保存到交接班信息表中。 交接班运行界面如图5-15所示。 图5-15 交接班界面 打开交接班界面,选择交接的时间,单击“核算”按钮,下方的“预收款”,“销售款”,“合计”文本框中就会分别显示这段期间内发生的预收款、销售款的金额以及合计。在下方的组合框中选择接班人名,再在密码文本框中输入正确的密码,单击“确定”按钮,就完成了操作员的交接班。 交接班相关事件代码: Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click Dim dr As SqlDataReader If ComboBox1.Text = "" Then MessageBox.Show("接班人不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) ElseIf TextBox1.Text = "" Then MessageBox.Show("密码不能为空!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" str = "Select * From 操作员 Where 用户名 ='" & ComboBox1.Text & "' and 密码 = '" & TextBox1.Text & "'" cmd = New SqlClient.SqlCommand(str, conn) cmd.Connection = conn conn.Open() dr = cmd.ExecuteReader() If dr.Read() Then dr.Close() cmd.CommandText = "insert into 交接班(交接日期,接班,交班,接手现金) values(getdate(),@接班,@交班,@接手现金)" cmd.Parameters.Add("@接班", System.Data.SqlDbType.VarChar, 20) cmd.Parameters("@接班").Value = ComboBox1.Text cmd.Parameters.Add("@交班", System.Data.SqlDbType.VarChar, 20) cmd.Parameters("@交班").Value = frmMain.ToolStripStatusLabel2.Text cmd.Parameters.Add("@接手现金", System.Data.SqlDbType.Int) cmd.Parameters("@接手现金").Value = TextBox4.Text Try cmd.ExecuteNonQuery() frmMain.ToolStripStatusLabel2.Text = ComboBox1.Text MsgBox("交接成功") Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try Else MessageBox.Show("用户名或密码错误!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End If End Sub 5.4.4 账务提醒 账务提醒界面由Label,TextBox,DataGridView和Button多个控件组成。操作员可以通过该模块查询到交纳的押金金额低于指定金额的房间信息。 账务提醒运行界面如图5-16所示。 图5-16 账务提醒界面 打开账务提醒界面,在“押金余额警戒线”文本框中输入金额,单击“检查”按钮,上方数据窗口中就能显示押金少于警戒线金额的入住客户信息。 账务提醒相关事件代码: Private Sub btnCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCheck.Click If TextBox1.Text = "" Then MessageBox.Show("请输入警戒金额!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" conn.Open() Try dsAlarm.Clear() daAlarm = New SqlDataAdapter("select * from 入住单 where 预收押金 < '" & TextBox1.Text & "'", conn) daAlarm.Fill(dsAlarm, "入住单") DataGridView1.DataSource = dsAlarm.Tables("入住单") Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try End If End Sub 5.5 信息查询 本系统的信息查询功能主要实现了入住查询,预定查询,营业收入查询,预收款查询和日营业报表功能。 5.5.1 入住查询 入住查询界面由Label,TextBox,RadioBox,DateTimePicker,GroupBox,DataGridView和Button多个控件组成。操作员可以通过该模块查找到符合条件的入住信息。用户只需选择查询条件,然后单击“查询”按钮,下方数据窗口中就会显示查询到的入住信息。 入住查询运行界面如图5-17所示。 图5-17 入住查询界面 入住查询相关事件代码: Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click If rdoAll.Checked = True Then cmd.CommandText = "select * from 入住单 " cmd1.CommandText = "select * from 入住单历史 " ElseIf rdoUsed.Checked = True Then cmd.CommandText = "select * from 入住单 " cmd1.CommandText = "select * from 入住单 where 单据状态 = '退房'" ElseIf rdoRoomNo.Checked = True Then If TextBox1.Text = "" Then MessageBox.Show("请输入房间号!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else cmd.CommandText = "select * from 入住单 where 入住单.房间号码 = '" & TextBox1.Text & "'" cmd1.CommandText = "select * from 入住单历史 where 入住单历史.房间号码 = '" & TextBox1.Text & "'" End If ElseIf rdoDate.Checked = True Then cmd.CommandText = "select * from 入住单 where 入住单.入住日期 between '" & DateTimePicker1.Value.Date & "' and dateadd(d,1,'" & DateTimePicker1.Value.Date & "')" cmd1.CommandText = "select * from 入住单历史 where 入住单历史.入住日期 between '" & DateTimePicker1.Value.Date & "' and dateadd(d,1,'" & DateTimePicker1.Value.Date & "')" End If cmd.Connection = conn cmd1.Connection = conn conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" Try conn.Open() cmd.ExecuteNonQuery() cmd1.ExecuteNonQuery() dsQueryIN.Clear() daQueryIN = New SqlDataAdapter(cmd.CommandText, conn) daQueryIN1 = New SqlDataAdapter(cmd1.CommandText, conn) daQueryIN.Fill(dsQueryIN, "入住查询") daQueryIN1.Fill(dsQueryIN, "入住查询") DataGridView1.DataSource = dsQueryIN.Tables("入住查询") Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try End Sub 5.5.2 预定查询 预定查询界面由Label,TextBox,RadioBox,DateTimePicker,GroupBox,DataGridView和Button多个控件组成。操作员可以通过该模块查找到符合条件的预定信息。用户只需选择查询条件,然后单击“查询”按钮,下方数据窗口中就会显示查询到的预定信息。 预定查询运行界面如图5-18所示。 图5-18 预定查询界面 预定查询相关事件代码: Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click If rdoAll.Checked = True Then cmd.CommandText = "select * from 预定单 " cmd1.CommandText = "select * from 预定单历史 " ElseIf rdoUsed.Checked = True Then cmd.CommandText = "select * from 预定单 " cmd1.CommandText = "select * from 预定单 where 单据状态 = '退房'" ElseIf rdoRoomNo.Checked = True Then If TextBox1.Text = "" Then MessageBox.Show("请输入房间号!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information) Else cmd.CommandText = "select * from 预定单 where 预定单.房间号码 = '" & TextBox1.Text & "'" cmd1.CommandText = "select * from 预定单历史 where 预定单历史.房间号码 = '" & TextBox1.Text & "'" End If ElseIf rdoDate.Checked = True Then cmd.CommandText = "select * from 预定单 where 预定单.入住日期 between '" & DateTimePicker1.Value.Date & "' and dateadd(d,1,'" & DateTimePicker1.Value.Date & "')" cmd1.CommandText = "select * from 预定单历史 where 预定单历史.入住日期 between '" & DateTimePicker1.Value.Date & "' and dateadd(d,1,'" & DateTimePicker1.Value.Date & "')" End If cmd.Connection = conn conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" Try conn.Open() cmd.ExecuteNonQuery() cmd.ExecuteNonQuery() dsQuerySubs.Clear() daQuerySubs = New SqlDataAdapter(cmd.CommandText, conn) daQuerySubs1 = New SqlDataAdapter(cmd1.CommandText, conn) daQuerySubs.Fill(dsQuerySubs, "预定查询") daQuerySubs1.Fill(dsQuerySubs, "预定查询") DataGridView1.DataSource = dsQuerySubs.Tables("预定查询") Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try End Sub 5.5.3 营业收入查询 营业收入查询界面由Label,DateTimePicker,GroupBox,DataGridView和Button多个控件组成。操作员可以通过该模块查找到符合时间段的营业收入信息。用户只需选择指定查询时间,然后单击“查询”按钮,下方数据窗口中就会显示该时间段内查询到的营业收入信息。 营业收入查询运行界面如图5-19所示。 图5-19 营业收入查询界面 营业收入查询相关事件代码: Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" cmd.CommandText = "select 入住单号,姓名,入住日期,退房日期,房间号码,入住人数,结账金额 from 入住单历史 where 入住单历史.退房日期 between '" & DateTimePicker1.Value & "' and '" & DateTimePicker2.Value & "'" cmd.Connection = conn Try conn.Open() cmd.ExecuteNonQuery() dsQuerySale.Clear() daQuerySale = New SqlDataAdapter(cmd.CommandText, conn) daQuerySale.Fill(dsQuerySale, "营业收入查询") DataGridView1.DataSource = dsQuerySale.Tables("营业收入查询") total() Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try End Sub 5.5.4 预收款查询 预收款查询界面由Label,DateTimePicker,GroupBox,DataGridView和Button多个控件组成。操作员可以通过该模块查找到符合时间段的预收款信息。用户只需选择指定查询时间,然后单击“查询”按钮,下方数据窗口中就会显示该时间段内查询到的预收款信息。 预收款查询运行界面如图5-20所示。 图5-20 预收款查询界面 预收款查询相关事件代码: Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" cmd.CommandText = "select 入住单号,姓名,入住日期,房间号码,入住人数,预收押金 from 入住单 where 入住单.入住日期 between '" & DateTimePicker1.Value & "' and '" & DateTimePicker2.Value & "'" cmd1.CommandText = "select 入住单号,姓名,入住日期,房间号码,入住人数,预收押金 from 入住单历史 where 入住单历史.入住日期 between '" & DateTimePicker1.Value & "' and '" & DateTimePicker2.Value & "'" cmd.Connection = conn cmd1.Connection = conn Try conn.Open() cmd.ExecuteNonQuery() cmd1.ExecuteNonQuery() dsQueryDeposit.Clear() daQueryDeposit = New SqlDataAdapter(cmd.CommandText, conn) daQueryDeposit1 = New SqlDataAdapter(cmd1.CommandText, conn) daQueryDeposit.Fill(dsQueryDeposit, "预收款查询") daQueryDeposit1.Fill(dsQueryDeposit, "预收款查询") DataGridView1.DataSource = dsQueryDeposit.Tables("预收款查询") total() Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try End Sub 5.5.5 日营业报表 日营业报表界面由DateTimePicker,GroupBox,Crystal Report和Button多个控件组成。操作员可以通过该模块查找到符合条件的日营业报表信息。用户只需选择指定查询日期,然后单击“查询”按钮,在下方数据报表中就会显示这一天内的营业信息。 日营业报表运行界面如图5-21所示。 图5-21日营业报表界面 日营业报表相关事件代码: Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click conn.ConnectionString = "Data Source = (local);Initial Catalog = hotelbook;Integrated Security = True" cmd.CommandText = "select 入住单号,姓名,房间号码,类型名称,客房价格,入住人数,预收押金 as 金额 from 入住单 where 入住单.入住日期 between '" & DateTimePicker1.Value.Date & "' and dateadd(d,1,'" & DateTimePicker1.Value.Date & "')" cmd1.CommandText = "select 入住单号,姓名,房间号码,类型名称,客房价格,入住人数,预收押金 as 金额 from 入住单历史 where 入住单历史.入住日期 between '" & DateTimePicker1.Value.Date & "' and dateadd(d,1,'" & DateTimePicker1.Value.Date & "')" cmd2.CommandText = "select 入住单号,姓名,房间号码,类型名称,客房价格,入住人数,结账金额 as 金额 from 入住单历史 where 入住单历史.退房日期 between '" & DateTimePicker1.Value.Date & "' and dateadd(d,1,'" & DateTimePicker1.Value.Date & "')" cmd.Connection = conn cmd1.Connection = conn cmd2.Connection = conn Try conn.Open() dsQueryDay.Clear() daQueryDay = New SqlDataAdapter(cmd.CommandText, conn) daQueryDay1 = New SqlDataAdapter(cmd1.CommandText, conn) daQueryDay2 = New SqlDataAdapter(cmd2.CommandText, conn) daQueryDay.Fill(dsQueryDay, "日营业报表") daQueryDay1.Fill(dsQueryDay, "日营业报表") daQueryDay2.Fill(dsQueryDay, "日营业报表") Dim oRpt As New CrystalReport1() oRpt.SetDataSource(dsQueryDay) CrystalReportViewer1.ReportSource = oRpt Catch ex As Exception MsgBox(ex.ToString) Finally conn.Close() End Try End Sub 6 系统测试与评价 6.1 系统测试的原则及方法 ⑴ 设计测试时,不仅要包括确定的输入数据,还要包括从系统功能出发预期的测试结果。 ⑵ 测试用例不仅要包括合理,有效的输入数据,还要包括无效的或不合理的输入数据。 ⑶ 不仅要检验程序是否做了该做的事,还要检查程序是否同时做了不该做的事。 软件测试包括单元测试、集成测试、确认测试和系统测试四个步骤[15]。本次测试以单元测试为主,分别完成每个单元的测试任务,以确保每个模块能正常工作。单元测试大量地采用了白盒测试法,尽可能发现模块内部的程序差错。在完成单元测试后,将已经测试过的模块组装起来,进行集成测试,来检验与软件设计相关的程序结构问题。最后对本系统进行系统测试,并进行总体评价。 6.2 测试与评价 6.2.1 单元测试 ⑴ 用户登录 主要是测试能否正确实现对用户身份的验证。输入错误的用户名或密码检查是否有错误的用户名或密码的提示;输入正确的用户名和密码,检查能否登陆系统,若登陆到系统,检查登陆后页面是否与预期的结果相吻合。用户名及密码如表6-1操作员表所示,用户登录模块测试用例及结果如表6-2所示。 表6-1 用户表 用户名 密码 admin 012345 表6-2 用户登录模块测试用例及结果表 测试用例 结果 用户名:admin 密码:012345 成功登录 用户名:admin 密码:0123 提示“用户名或密码有误!” 用户名:adm 密码:012345 提示“用户名或密码有误!” (2)系统设置模块 ①房间类型 主要测试能否成功添加酒店客房的类型,并显示到左侧的数据窗口中,以及是否已更新数据库中的内容。房间类型如表6-3所示,测试用例及结果如表6-4所示。 表6-3房间类型表 类型编号 类型名称 1 房 2 双人房 3 四人房 4 总统套房 表6-4 房间类型模块测试用例及结果表 测试用例 结果 用户没有在文本框中输入房间类型,单击“添加”按钮 显示信息“房间类型不能为空!” 用户输入房间类型后单击“添加”按钮 右侧数据窗口中显示新增的房间类型 用户单击“退出”按钮 房间类型窗体退出 ②客房设置 主要测试能否成功添加、修改和删除酒店各间客房信息的设置,并将改动显示到下方的数据窗口中,以及是否已更新数据库中的内容。客房设置模块测试用例及结果如表6-5所示。 表6-5客房设置模块测试用例及结果表 测试用例 结果 用户没有在文本框中输入房间号码,单击“添加”按钮 显示信息“房间号码不能为空!” 用户输入房间号码后没有选择房间类型,单击“添加”按钮 显示信息“房间类型不能为空!” 用户输入房间号码,选择房间类型,却没有输入客房价格,单击“添加”按钮 显示信息“客房价格不能为空!” 用户输入房间号码、房间类型和客房价格等信息之后,单击“添加”按钮 显示信息“插入成功!”,同时数据窗口显示新增后的数据。 用户单击数据窗口中的一条数据 窗体上的各个文本框显示选中的数据。 修改选中的数据后,单击“修改”按钮 显示信息“修改成功!”,同时数据窗口显示修改后的数据。 选中要删除的数据之后,单击“删除”按钮 显示信息“删除成功!”,同时数据窗口显示删除后的数据。 用户单击“退出”按钮 客房设置窗体退出 ③操作员管理 模块主要包括三个部分:增加操作员、删除操作员和修改密码。 1.增加操作员 主要测试能否完成增加操作员,在实施该操作时,是否有相关的提示信息。增加操作员模块的测试用例及结果如表6-6所示。 表6-6增加操作员模块的测试用例及结果表 测试用例 结果 用户没有输入用户名,单击“添加”按钮 显示信息“用户名不能为空!” 用户输入用户名,但没有输入密码,单击“添加”按钮 显示信息“密码不能为空!” 用户输入用户名、密码,但没有确认密码,单击“添加”按钮 显示信息“请确认密码!” 用户输入用户名、密码、确认密码,但没有选择权限,单击“添加”按钮 显示信息“请选择权限!” 用户输入用户名、密码、确认密码和权限,但密码与确认密码不同,单击“添加”按钮 显示信息“两次输入的密码不一致!” 用户输入数据库中已存在的用户名,在将其他信息完整填入后,单击“添加”按钮 显示信息“该用户已存在!” 用户输入正确完整的信息后,单击“添加”按钮 显示信息“插入成功” 用户单击“退出”按钮 增加操作员窗体退出 2.删除操作员 主要测试能否完成删除操作员,在实施该操作时,是否有相关的提示信息。删除操作员模块的测试用例及结果如表6-7所示。 表6-7增加操作员模块的测试用例及结果 测试用例 结果 用户不选中数据窗口中的数据,单击“删除”按钮 显示信息“请选中数据!” 用户选中数据窗口中要删除的数据行,单击“删除”按钮 显示信息“删除成功”,同时在数据窗口中显示。 用户单击“退出”按钮 删除操作员窗体退出 3.修改密码 主要测试能否完成修改密码,在实施该操作时,是否有相关的提示信息。修改密码模块的测试用例及结果如表6-8所示。 表6-8修改密码模块的测试用例及结果 测试用例 结果 用户没有输入用户名,单击“确定”按钮 显示信息“用户名不能为空!” 用户输入用户名,但没有输入密码,单击“确定”按钮 显示信息“旧密码不能为空!” 用户输入用户名、旧密码,但没有输入新密码,单击“确定”按钮 显示信息“新密码不能为空!” 用户输入用户名、旧密码、新密码,但没有确认密码,单击“确定”按钮 显示信息“请确认密码!” 用户输入用户名、旧密码、新密码和确认密码,但密码与确认密码不同,单击“确定”按钮 显示信息“两次输入的密码一致!” 用户输入数据库中不存在的用户名或旧密码,在将其他信息完整填入后,单击“确定”按钮 显示信息“用户名或密码错误!” 用户输入正确完整的信息后,单击“确定”按钮 显示信息“修改成功” 用户单击“退出”按钮 修改密码窗体退出 ④清理数据 主要测试能否完成清理历史数据,在实施该操作时,是否有相关的提示信息,是否立刻显示在数据窗口上。清理数据模块的测试用例及结果如表6-9所示。 表6-9清理数据模块的测试用例及结果 测试用例 结果 用户不选中入住历史数据窗口,单击“删除入住历史”按钮 显示信息“请选中数据!” 用户选中入住历史数据窗口,单击“删除入住历史”按钮 显示信息“删除成功”,同时在数据窗口中显示。 用户不选中预定历史数据窗口,单击“删除预定历史”按钮 显示信息“请选中数据!” 用户选中入住预定数据窗口,单击“删除预定历史”按钮 显示信息“删除成功”,同时在数据窗口中显示。 用户单击“退出”按钮 清理数据窗体退出 (3)总台接待模块 ①房态查看 主要测试能否完成房态的显示与修改,在实施该操作时,是否保持信息的准确,修改房态显示的同时是否修改了数据库。房态查看模块的测试用例及结果如表6-10所示 表6-10房态查看模块的测试用例及结果 测试用例 结果 用户不选择房间号码,直接单击对应的按钮 显示信息“请选择房间号码” 用户选择房间号码后,单击对应的按钮 数据窗口中显示更改后的房态,并更改不同状态的房间数量 用户单击“退出”按钮 房态查看窗体退出 ②住宿登记 主要测试能否完成客户入住登记,在实施该操作时,是否有相关的提示信息。住宿登记模块的测试用例及结果如表6-11所示。 表6-11住宿登记模块的测试用例及结果 测试用例 结果 用户不输入姓名,单击“保存”按钮 显示信息“姓名不能为空!” 用户输入姓名,不输入身份证,单击“保存”按钮 显示信息“身份证不能为空!” 用户输入姓名、身份证,不选择房间号码,单击“保存”按钮 显示信息“房间号码不能为空!” 用户正确输入姓名,身份证和房间号码等信息后,单击“保存”按钮 将数据加入入住单数据表,并显示信息“插入成功” 用户不选择房间号码,直接单击“从预定单找”按钮 不显示信息 用户选择房间号码后,单击“从预定单找”按钮 从预定单中查找数据显示在入住单中。 用户单击“退出”按钮 住宿登记窗体退出 ③预定登记 主要测试能否完成客户预定登记,在实施该操作时,是否有相关的提示信息。预定登记模块的测试用例及结果如表6-12所示。 表6-12预定登记模块的测试用例及结果 测试用例 结果 用户不输入姓名,单击“确定”按钮 显示信息“姓名不能为空!” 用户输入姓名,不输入身份证,单击“确定”按钮 显示信息“身份证不能为空!” 用户输入姓名、身份证,不选择房间号码,单击“确定”按钮 显示信息“房间号码不能为空!” 用户正确输入姓名,身份证和房间号码等信息后,单击“保存”按钮 将信息加入预定单数据表,并显示信息“插入成功” 用户单击“退出”按钮 预定登记窗体退出 ④取消预定 主要测试能否完成客户预定的取消,在实施该操作时,是否有相关的提示信息。取消预定模块的测试用例及结果如表6-13所示。 表6-13取消预定模块的测试用例及结果 测试用例 结果 用户不输入房间号码,单击“确定”按钮 显示信息“房间号码不能为空!” 用户输入房间号码,不输入姓名,单击“确定”按钮 显示信息“姓名不能为空!” 用户输入房间号码和姓名,单击“确定”按钮 清除预定单中对应数据,并显示信息“取消成功” 用户单击“退出”按钮 取消预定窗体退出 ⑤调房登记 主要测试能否完成客户调换房间的登记,在实施该操作时,是否有相关的提示信息。调房登记模块的测试用例及结果如表6-14所示。 表6-14调房登记模块的测试用例及结果 测试用例 结果 用户不选择转出房间号码,单击“查询”按钮 显示信息“转出房间号码不能为空!” 用户选择转出房间号码,不选择转入房间号码,单击“查询”按钮 显示信息“转入房间号码不能为空!” 用户选择的转入和转出房间号码相同时,单击“查询”按钮 显示信息“无法转入同一房间” 用户选择的转出房间号码为空房,单击“查询”按钮 显示信息“该房间为空房” 用户选择的转出房间号码非空房,单击“查询”按钮 查找数据表中的对应信息并显示在相应文本框中。 用户执行查询操作后,单击“核算”按钮 计算转入房费并显示 用户执行查询、核算操作后,单击“保存”按钮 在数据库中删除原有数据,并插入新数据,显示信息“调房成功” 用户单击“退出”按钮 调房登记窗体退出 (4)收银管理模块 ①补交押金 主要测试能否完成客户押金的补交,在实施该操作时,是否有相关的提示信息。补交押金模块的测试用例及结果如表6-15所示。 表6-15补交押金模块的测试用例及结果 测试用例 结果 用户不选择房间号码,单击“确定”按钮 显示信息“房间号码不能为空!” 用户选择的房间号码已入住 显示姓名、押金、人数等信息 用户输入房间号码,不输入补交押金,单击“确定”按钮 显示信息“请输入补交押金!” 用户输入房间号码和补交押金,单击“确定”按钮 系统自动在数据库中查找指定数据,如找到则更新预收押金信息,并显示信息“插入成功”;如未找到则不操作。 用户单击“退出”按钮 补交押金窗体退出 ②退房结账 主要测试能否完成客户退房结账的操作,在实施该操作时,是否有相关的提示信息。退房结账模块的测试用例及结果如表6-16所示。 表6-16退房结账模块的测试用例及结果 测试用例 结果 用户不选择房间号码,单击“查询”按钮 显示信息“房间号码不能为空” 用户选择的房间为空,单击“查询”按钮 显示信息“该房间为空房” 用户选择的房间为住房,单击“查询”按钮 在对应文本框中显示该房间入住信息 用户查询到入住信息后,单击“核算”按钮 在结账费用文本框中显示计算出的金额 用户核算出结账金额后,单击“保存”按钮 将数据输入入住单历史数据表,并删除入住单中对应的数据,显示信息“退房成功” 用户单击“退出”按钮 退房结账窗体退出 ③交接班 主要测试能否完成用户交接班的操作,在实施该操作时,是否有相关的提示信息。交接班模块的测试用例及结果如表6-17所示。 如表6-17交接班模块的测试用例及结果 测试用例 结果 用户选择时间段,单击“核算”按钮 预收押金,营业额和总额显示金额 用户不输入接班人,单击“确定”按钮 显示信息“接班人不能为空!” 用户输入接班人,不输入密码,单击“确定”按钮 显示信息“密码不能为空!” 用户输入错误的接班人或密码,单击“确定”按钮 显示信息“用户名或密码错误!” 用户输入正确的接班人和密码,单击“确定”按钮 在交接班中增加一条记录,显示信息“接班成功” 用户单击“退出”按钮 交接班窗体退出 ④账务提醒 主要测试能否完成对客户是否交纳足够的押金的检查,在实施该操作时,是否有相关的提示信息。账务提醒模块的测试用例及结果如表6-18所示。 表6-18账务提醒模块的测试用例及结果 测试用例 结果 用户不输入金额警戒线,单击“查询”按钮 显示信息“金额警戒线不能为空” 用户不输入金额警戒线后,单击“查询”按钮 在数据窗口中显示查询到的数据 用户单击“退出”按钮 账务提醒窗体退出 (5)信息查询模块 ①入住查询 主要测试能否完成对酒店入住登记信息的查询,在实施该操作时,是否有相关的提示信息。入住查询模块的测试用例及结果如表6-19所示。 表6-19入住查询模块的测试用例及结果 测试用例 结果 用户选中“全部”选项,单击“查询”按钮 在下方数据窗口中显示所有入住客房信息 用户选中“已用”选项,单击“查询”按钮 在下方数据窗口中显示已入住的客房信息 用户选中“房间号”选项,而不在文本框中输入房间号码,单击“查询”按钮 显示信息“请输入房间号!” 用户选中“房间号”选项并在文本框中输入房间号码,单击“查询”按钮 在下方数据窗口中显示指定房间的入住信息 用户选中“限制日期”选项,选择时间后单击“查询”按钮 在下方数据窗口中显示这一天内入住的客房信息 用户单击“退出”按钮 入住查询窗体退出 ②预定查询 主要测试能否完成对酒店预定登记信息的查询,在实施该操作时,是否有相关的提示信息。预定查询模块的测试用例及结果如表6-20所示。 表6-20预定查询模块的测试用例及结果 测试用例 结果 用户选中“全部”选项,单击“查询”按钮 在下方数据窗口中显示所有预定客房信息 用户选中“已用”选项,单击“查询”按钮 在下方数据窗口中显示已预定的客房信息 用户选中“房间号”选项,而不在文本框中输入房间号码,单击“查询”按钮 显示信息“请输入房间号!” 用户选中“房间号”选项并在文本框中输入房间号码,单击“查询”按钮 在下方数据窗口中显示指定房间的预定信息 用户选中“限制日期”选项,选择时间后单击“查询”按钮 在下方数据窗口中显示这一天内预定的客房信息 用户单击“退出”按钮 预定查询窗体退出 ③营业收入查询 主要测试能否完成对酒店营业收入信息的查询,在实施该操作时,是否有相关的提示信息。营业收入查询模块的测试用例及结果如表6-21所示。 表6-21营业收入查询模块的测试用例及结果 测试用例 结果 用户选择时间段后,单击“查询”按钮 在下方数据窗口中显示指定时间段内的营业收入信息,并算出合计 用户单击“退出”按钮 营业收入查询窗体退出 ④预收款查询 主要测试能否完成对酒店预收款信息的查询,在实施该操作时,是否有相关的提示信息。预收款查询模块的测试用例及结果如表6-22所示。 表6-22预收款查询模块的测试用例及结果 测试用例 结果 用户选择时间段后,单击“查询”按钮 在下方数据窗口中显示指定时间段内的预收款信息,并算出合计 用户单击“退出”按钮 预收款查询窗体退出 ⑤日营业报表 主要测试能否完成对酒店日营业报表的输出,在实施该操作时,是否有相关的提示信息。日营业报表模块的测试用例及结果如表6-23所示。 表6-23日营业报表模块的测试用例及结果 测试用例 结果 用户选择时间段后,单击“查询”按钮 在下方数据窗口中显示这一天内的营业信息 用户单击“退出”按钮 日营业报表窗体退出 6.2.2 集成测试 完成单元测试后,由于本系统模块较少,采用非渐增式测试对系统进行集成测试,数据库中各表的更新结果与预期相符,说明数据在各测试模块之间能够正确的流入和流出,未发生错误。 6.2.3 系统测试与评价 本系统的开发基本实现了预定的用户登录、客户住宿和预定的登记等前台功能,以及客房设置、操作员管理等后台功能。在整体运行的流程中没有出现异常情况,可以正常运行。因此,本系统具备了酒店客房管理系统的基本功能,与预期的设计相符,成功的完成了本次课题的设计与实现。 7 总结及展望 经过对收集的资料进行学习与实践,熟悉酒店管理系统的开发流程,包括需求分析,可行性分析,概要设计,系统设计,系统维护等技术,并完成了酒店客房管理软件的设计。本系统是在Visual Studio.NET集成开发环境下,Visual Basic.NET开发平台上,运用VB.NET语言完成的。系统实现了酒店客房管理的房间类型、客房设置、操作员管理、清理数据、房态查看、入住与预定的登记、取消预定、调房登记、补交押金、退房结账、交接班、财务提醒、信息查询等功能,基本符合一般管理系统的需求。 在本次系统的设计与开发过程中,我学到了很多东西。不管是新的知识,还是处理问题能力的提升,对我来说都是一笔不小的财富。 由于时间仓促和个人的知识有限,系统总是会有瑕疵,具体不足归纳如下: (1)权限控制。在这方面本系统仅仅是将系统管理员和普通用户两个权限实现的功能分离开来,并未真正意义上针对不同用户实现权限的控制,例如一般的业务人员和收银员的权限功能应有所不同。 (2)房态图功能。房态图功能可以说是本系统的一大特色。其中包括房态的显示和房态图的修改。本人所学有限,对于房态的显示与修改功能只能以显示状态和更改背景色来完成,这也是本系统需要完善的地方。 (3)C/S结构设计。本系统是针对酒店内部管理人员开发的,所以本人在设计系统过程中选择了C/S结构,以便充分发挥客户端的PC处理能力,响应速度快。但是却不利于系统的扩展性,也不易于维护和升级。 (4)信息安全性。由于本系统的各项信息都是直接保存在数据库中,并未进行任何特别处理,所以酒店数据信息的安全性并不高。 针对以上不足,需要进一步完善。对于权限的控制,希望采用可将各种权限赋予某个组,再将用户加入相应的组的方法来实现。房态图功能希望完善的地方,除了将显示房间状态的方法改为采用不同的图片显示使得界面更专业化以外,还可以添加通过双击房间状态为空的图片来打开对应房间的入住登记界面的功能,使客房的登记过程更加方便。此外,系统的安全性十分重要,直接关系到酒店的利益,在以后的研究中会将一些重要的数据采用数据加密的形式进行存储,从而可更好地保证数据的安全性。 致 谢 我愿借此机会向导师刘小晶老师表示衷心的感谢!感谢老师在毕业过程材料和毕业论文撰写过程中,对我严格要求、耐心教导,在论文写作的理论方面给了我很多的指导,帮助我改进论文的不足,使我顺利完成了过程材料和论文的撰写。在系统功能实现方面,也给了我很多建议与帮助,使我减少了许多不必要的麻烦。 在即将毕业离校之际,我要感谢我的同学和朋友大学四年的陪伴和对我的支持与包容,他们给了我很多无私的帮助。同时,我也要感谢嘉兴学院让我拥有了丰富多彩的大学生活。 最后,我要向一直关心爱护我的父母致以最诚挚的敬意,感谢他们对我的支持和理解。 参考文献 [1] moninfu.探究全球十大热门行业之一的酒店管理专业[EB/OL]. http://edu.qq.com/a/20100617/000152.htm,2010 [2] 彭伟民.基于需求的酒店管理系统的建模与实现[M].北京:人民邮电出版社,2006 [3] 张宏,李彦林.30天学通Visual Basic项目案例开发[M].北京:电子工业出版社,2009.7 [4] 张宏,李彦林.30天学通Visual Basic项目案例开发[M].北京:电子工业出版社,2009.7 [5] 贺宁,苏伟忻.基于VB的中小型酒店管理系统[J].科技经济市场,2009,(7):108-109 [6] 佟焕然.酒店管理系统的设计与实现[EB/OL]. http://wenku.baidu.com/view/ 90a59007e87101f69e3195e5.html,2005 [7] 王晟.Visual Basic.NET数据库开发经典案例解析[M].北京:清华大学出版社,2005.3 [8] nspic.VB.NET的简介[EB/OL]. http://hi.baidu.com/mogosoft/blog/item/ b935b97e7958590029388a01.html,2004 [9] 王健波. 数据库技术与应用[M].北京:人民邮电出版社,2010 [10] 张俊玲. 数据库原理与应用[M]. 北京:清华大学出版社,2005 [11] smileggp.数据库设计Database Design指南[EB/OL]. http://wenku.baidu.com/view/695870fbfab069dc50220132.html,2004-06-15 [12] Jjanni.数据库系统概论-第六章数据库设计[EB/OL]. http://doc.mbalib.com/view /cc40c1205c57a90b9b13f713a457f987.html [13] 紫欣.数据库技术简介[EB/OL]. http://www.docin.com/p-10328088.html, 2009-03-11 [14]clliugw.数据库设计的基本步骤[EB/OL]. http://blog.csdn.net/clliugw/archive/ 2009/12/25/5073603.aspx,2009-12-25 [15] 郑人杰. 计算机软件测试[M]. 北京:清华大学出版社,1992
/
本文档为【酒店客房管理系统的设计与实现精品】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索