基于ASP.NET MVC 技术的某酒店房间管理系统的设计与实现.doc
基于ASP.NET MVC 技术的某酒店房间管理系统的设计与实现
收藏
资源目录
压缩包内文档预览:(预览前20页/共69页)
编号:27736546
类型:共享资源
大小:3.14MB
格式:ZIP
上传时间:2019-11-28
上传人:遗****
认证信息
个人认证
刘**(实名认证)
湖北
IP属地:湖北
6
积分
- 关 键 词:
-
基于ASP.NET
MVC
技术的某酒店房间管理系统的设计与实现
基于
ASP
NET
技术
酒店
房间
管理
系统
设计
实现
- 资源描述:
-
基于ASP.NET MVC 技术的某酒店房间管理系统的设计与实现,基于ASP.NET,MVC,技术的某酒店房间管理系统的设计与实现,基于,ASP,NET,技术,酒店,房间,管理,系统,设计,实现
- 内容简介:
-
本科毕业论文(设计)论文(设计)题目:基于ASP.NET MVC 技术的某酒店房间管理系统的设计与实现 学 院:计算机科学与技术学院专 业: 网络工程 班 级: 1 1 1 学 号: 1108060041 学生姓名: 周制彪 指导教师: 邓少勋老师 2015年 6 月 2 日基于ASP.NET MVC 技术的某酒店房间管理系统的设计与实现摘要:该软件采用ASP.NET应用开发技术,具有一些客房查询、入住、退房等功能,尤其依靠ASP.NET的优点来为酒店更好的进行管理,稳定性,可扩展性,安全性,健壮性,都是该酒店管理的优势所在。数据库采用的 SQL Server 2008,SQL SERVER是大数据库,它也属于中型数据库,应用于中小型企业。SQL SERVER的分布式、复制、全文检索、DTS都可以满足中型的应用。所以使用SQL SERVER作为酒店管理系统的数据库再合适不过。系统基于C/S架构,以C#语言并使用Microsoft Visual Studio 2010平台和SQL Server 2008数据库;实现了酒店管理的客房管理、员工管理、财务管理、前台管理以及相关的资料的管理,并经过在本机Win7系统上运行测试可以很好的应用。本文档很好的介绍了系统分析、数据流程分析、功能设计、数据库设计、系统实现和系统测试等内容。关键字:酒店管理系统,SQL Server 2008,Microsoft Visual Studio 2010,C/S架构。 Abstract:The software uses ASP.NET application development technology, with some rooms, check-in, check-out and query function, especially on the advantages of ASP.NET for hotel and better management, stability, scalability, security, robustness, is the hotel management advantage. Database using SQL Server 2008, SQL SERVER is a large database, it also belongs to the medium-sized database, applicable to small and medium enterprises. SQL SERVER distributed, copied, full-text retrieval, DTS can meet medium application. So the use of SQL SERVER as a hotel management system database t.The system is based on C / S architecture, C Microsoft Visual # language and using Studio2010 platform and SQL Server 2008 database; the hotel management hotel management, staff management, financial management, medicine management and information management, and through this machine Win7system running test can be a very good application. This document is a very good introduction of the system analysis, data flow analysis, functional design, database design, system realization and system test etc.Keywords: hotel management system, SQL Server 2008, Microsoft Visual Studio 2010, C / S structure.第一章 绪 论11.1 系统开发背景11.2 课题研究目的及意义31.3 国内外现状及发展动态31.4 系统开发工具及相关技术41.4.1 系统开发工具41.4.2 数据库开发工具41.4.3 C#开发语言介绍5第二章 系统分析82.1 需求分析82.1.1 系统的主要功能82.1.2 系统的实现目标82.1.3 系统的性能需求82.1.4 运行环境92.2 可行性分析102.3 数据需求分析112.4 数据字典142.5 数据流图15第三章 系统设计163.1 系统功能结构设计163.2 数据库设计173.3 系统流程图22第四章 系统详细设计与实现234.1 用户登录234.2主界面244.3客房管理254.3.1客房信息修改264.3.2 入住管理294.3.3 退租管理344.3.4 客房类型管理364.4 员工管理394.5 财务管理454.6 酒店初始化474.7用户密码更改49第五章 系统测试535.1测试的作用和意义535.2测试方法535.3系统测试54参考文献58致谢59附录 源代码60第一章 绪 论1.1 系统开发背景随着我国加入世界贸易组织,酒店服务业与国际市场接轨已成为大势所趋,酒店要迎接这场挑战,就必须提高整体竞争能力,提高整体竞争能力必须变革酒店的管理模式,提高管理水平,实施信息化建设无疑是实现这一目的的必由之路和明智之举。目前,我国酒店服务业信息化管理的进程缓慢,跟国外的酒店相比管理依然落后。在激烈的酒店业竞争中,如何能把握机会,保持自己的优势,立于不败之地呢?这就需要提供最好的服务,提供最完善的设施和最先进的技术。一个成功的酒店,其经营者不仅要提高服务水平和服务质量,从而提高客房占有率和回头率,还要有好的工作效率,并控制成本。在信息时代,更重要的是还必须要有一个完善的管理信息系统,便于方便客人和更好地管理酒店。一套优秀的酒店管理信息系统应该是一套适用于星级宾馆使用的优秀系统,操作简单、灵活性好、系统安全性高、运行稳定,是管理者的理想选择。我的毕业设计题目就是设计一个小型酒店管理信息系统,在前期的考察和分析之后,对系统进行了设计,虽然受水平所限,实践经验十分匮乏,独立完成一套完备的优秀的酒店管理信息系统有很大的难度,但是我努力在实践中巩固以及整理自己在大学期间所学的知识,尽量把这个系统设计的更好。1.2 课题研究目的及意义随着计算机网络的飞速发展,Internet技术越来越广泛的应用,网络覆盖的区域不断扩大,给酒店业计算机应用带来了蓬勃发展的机遇。采用全新的计算机网络和管理系统,将成为提高酒店管理效率,改善服务水准的重要手段之一。所以城市酒店入住信息管理系统是酒店经营不可缺少的现代工具。而本系统就是为了实现酒店高效管理而设计的。现代化酒店是城市的重要基础设施,酒店业的发展,直接支持着城市经济的繁荣、旅游业的兴旺和广大市民的生活需要,同时也是城市建设现代化的一个重要标志。全球都把现代化酒店管理作为现代企业管理的重要组成部分。随着当今世界经济和计算机的飞速发展以及网络的普及,酒店在内部实现用户通过电话预约或亲自前往酒店预订客房,服务员人工填写客房预订表进行客房预订的传统模式已经十分落后,满足不了现代人的需要。对那些在外地的旅客来说,他们十分希望可以方便快捷的查看酒店的配套设施和环境来决定预订酒店房间,以节约他们宝贵的时间,而且面对酒店业竞争的日益激烈,酒店业要发展就需要尽力扩大经营规模,适应当今网络时代的步伐。1.3 国内外现状及发展动态随着信息化技术的日益普及,酒店这样的传统行业也越来越多的采用信息技术来管理业务,市场上酒店管理软件正处于百花齐放、百家争鸣的阶段。目前市场上大多数酒店管理软件是基于Windows操作系统的,也有部分酒店管理软件考虑到版权的问题,采用Linux操作系统;又比如,系统数据库,有Access、Sybase、MySQL、SQLServer等,对于酒店系统来说,采用什么数据库与酒店的规模比较相关,较小的酒店可以采用比较简单的数据库如Access,这样使用维护都可以做的比较简单,而规模大的酒店就应该用SQLServer这样的数据库,可以保障数据比较安全、系统比较稳定,但同时也要求有专门的系统管理员来维护。还有,数据的录入通常有三种方式,一是基于普通电脑,二是基于触摸屏。从目前的发展趋势看,酒店系统越来越多的采用触摸屏。国内酒店关于酒店营销的理念落后国际太多了,理念落后,系统建设滞后,人才流动太频繁培养不出具备丰富经验以及创新能力的酒店经理人。对于酒店行业的最先进的电子营销策略几乎一无所知。完全靠经验管理,干预承担责任的经理人太少,对于国际标准化的管理只是一种表面上的运用。有些酒店对分销商的依赖非常的强。营业额基本靠拉会议,拉中介,拉旅行社,关系户。没有自己明确的目标客服营销策略,没有建立自己的信任客户群的能力和想法。等等这些问题在未来酒店数量剧增的几年会愈来愈突出。国内的酒店管理系统最早是在80年代初开始的,到了80年代中后期,随着国外酒店管理系统的大规模引进,国外酒店的先进管理技术进入我国,进一步促进了我国酒店管理技术的发展。国内系统正是在充分吸收国外管理系统的精华,再结合国内的实际情况,逐步发展成熟,到90年代初期形成了几个较成熟的软件系统。到了90年代中期,随着计算机在酒店中的普及应用,以及计算机技术的不断发展,酒店管理系统的发展到了一个新的时期,新的系统平台、新的软件功能、新的系统特点及发展方向不断涌现。国外酒店管理系统,高标准的酒店一般都用fidelio,其他还有Hotel Star、KingSmart等。1.4 系统开发工具及相关技术1.4.1 系统开发工具目前,市场上计算机语言和开发工具有很多,但是Visual Studio 2010的以其稳定和与平台无关的特性,从众多编程工具中脱颖而出,成为很多ASP.NET程序员的首选。Visual Studio 2010 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C+、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web 应用程序和 XML Web Services 开发的关键技术。Microsoft为单独工作或在小型团队中的专业开发人员提供了两种选择,Visual Studio 2010 Professional Edition和用于Microsoft Office系统的Visual Studio 2010工具。每种版本都在标准版的特性上进行了扩展,包括用于远程服务程序开发和调试、SQL Server2008开发的工具,以及完整的、没有限制的开发环境。1.4.2 数据库开发工具在本次数据库中,采用了SQLServer2008。Microsoft SQL Server2008是一个分布式的关系型数据库管理系统,具有客户机/服务器体系结构,采用了Transact-sql的sql语言在客户机与服务器间传递客户机的请求与服务器的处理结果;是一种应用广泛的数据库管理系统,具有许多显著的优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等适用于大型或超大型数据库服务器端。SQL Server 2008 是Microsoft 公司推出的SQL Server 数据库管理系统的一个版本,该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。SQL Server 2008是一项全面完整的数据库与分析产品。从借助浏览器实现的数据库查询功能到内容丰富的扩展标记语言(XML)支持特性均可有力地证明,SQL Server 2008无谓为全面支持Web功能的数据库解决方案。与此同时,SQL Server 2008还在可伸缩性与可靠性方面保持着多项基准测试纪录,而这两方面特性又都是企业数据库系统在激烈市场竞争中克敌致胜的关键所在。无论以应用程序开发速度还是以事务处理运行速度来衡量,SQL Server 2008都堪称最为快捷的数据库系统,而这恰恰是该产品成为灵活企业首选解决方案的原因所在。1.4.3 C#开发语言介绍C#(读作“C sharp”,中文译间暂时没有,专业人士一般读“C sharp”,现在很多非专业一般读作“C#”)。C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与JAVA有着惊人的相似:它包括了诸如单一继承、接口、与JAVA几乎相同的语法和编译成中间代码再运行的过程。但是C#与JAVA有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET Windows网络框架的主角。并且C#成为ECMA与ISO标准规范。C#看似基于C+写成,但又融入其它语言如Delphi、JAVA、VB等。C#的新特性:1命名窨中的申明:当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类,同时在这个命名空间里(在类的外面)你还有可能声明接口,枚举类型和结构体。必须使用using关键字来引用其他命名空间的内容。2基本的数据类型:C#拥有比C,C+或者JAVA更广泛的数据类型,这些类型是bool,byte,ubyte,short,ushort,int,uint,long,ulong,float,double decimal。3两个基本类:一个名叫object的是所有类的基类,而一个名叫string的类也象object一样是这个语言的一部分。作为语言的一部分存在意味着编译器有可能使用它无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它。4参数传递:方法可以被声明接受可变数目的参数。缺省的参数传递方法是对基本数据类型进行值传递。5与COM的集成:C#与COM的无缝集成,C#编写的类可以子类化一个以存在的COM组件;生成的灰也能被作为一个COM组件使用,然后又能使用。6索引下标:一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名引用(就像用数组下标一样)以外是相似的。7代理和反馈:一个代理对象包括了访问一个特定对象的特定方法所需的信息。只要把它当成一个聪明的方法指针就行了。代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用。一个反馈方法是代理的特例。Event关键字用在将在事件发生的时候被当成代理调用的方法声明中。第二章 系统分析2.1 需求分析2.1.1 系统的主要功能根据酒店行业的特点实际情况,该系统以住房业务为基础,突出前台管理,从专业角度出发,提供科学有效的管理模式。系统主要功能设计有八部分,分别为前台管理、客房管理、员工管理、财务管理、系统初始化、密码修改、工具、帮助。1、前台管理:主要包括客户入住登记,结账开单,房间查询,房间基本信息修改等。2、客房管理:主要是对酒店客房类型管理增加、修改、删除,客房添加。3、员工管理:主要是对酒店员工进行信息修改、删除、添加的管理。4、财务管理:主要是对酒店财务方面的管理。包括一段时间内客户数量统计、客户入住月报、客户入住与退出数量统计。5、酒店初始化:主要是对酒店的基础设置信息的管理。包括酒店名称设置,酒店老板姓名设置,酒店电话设置,酒店地址设置,酒店描述设置。6、密码修改:主要是用户密码修改功能。7、工具:主要是方便用户时间查询,数据计算功能。8、帮助:主要是展示酒店信息,软件的信息链接。2.1.2 系统的实现目标面对服务行业的高速发展和酒店住宿信息化发展的过程中出现的各种情况,该酒店管理系统在实施后应能够达到以下目标:1、采用汉字图形用户界面,系统界面友好美观,操作简单易行。2、业务管理信息化,可随时掌握客户入住、客户退租、客房信息等情况。3、采用流行的客户机/服务器方式,响应速度快,安全性高,扩充方便。4、该软件应尽可能地降低使用者的劳动强度,同时提高工作质量和效率。5、系统维护方便可靠,具有灵活性、通用性及安全性的特点。2.1.3 系统的性能需求1、系统的安全性系统运行安全是决定软件质量的重要因素,虽然此酒店管理系统不需要接入Internet,但系统中涉及多方信息,有厨房请购信息、盘点信息、原材料信息、菜品信息等等,如果有人蓄意破坏任意信息,都可能会导致系统的停用,会带来损失,因此仍然需要保证它的安全。为了保证系统的安全性,必须采取一定的安全措施,防止用户越权使用,防止工作数据被非法篡改、破坏和泄露等。既要考虑操作系统的安全性,还要考虑到酒店管理系统本身的安全性。2、系统的合理性在设计系统时要考虑实际的系统性能和硬件要求,不能忽视所处环境,也不能一味地追求新技术,要保证系统的合理性。3、系统的简单性、易用性要考虑到不同层次服务人员及领导人员的计算机操作水平,一般而言,大部分服务员的计算机操作水平偏低,因此开发时要本着“简单易用”的原则,方便各层次人员的使用,使人员的培训降到最低。对于收银的服务员只需要简单且快捷地收银方式,既利于他们使用,也提高收银速度,同样对于领导人员,也需求简单、一目了然的界面,这样即使是没有操作过计算机的人来说,只需要进行简单的操作培训就可以达到熟练,使之能顺利地完成系统各种功能。4、系统的稳定性、可靠性酒店服务业从业人员来源广泛,分布性强,往往不具备专业的计算机知识,因此,酒店管理系统必须稳定、可靠。另外,酒店服务业营业时间与一般公司(或企业)区别很大:一般公司(或企业)正常上班时间,酒店企业生意不多;而一般公司(或企业)休息时间却正是酒店服务业营业高峰。酒店管理系统必须兼顾到酒店业这种间隙性的营业状况,必须具有高度的稳定性,保证在营业高峰时不出故障,即使出现故障,系统也必须具有快速恢复能力。2.1.4 运行环境系统对运行的环境的要求:(1)、硬件环境服务器端服务器端的最低配置是由建立站点所需的软件来决定的,在最低配置的情况下,服务器的往往不尽如人意,现在的硬件性能已经相当出色,而且价格也很便宜,因此通常应给服务器端配置高性能的硬件。本网络系统服务器端的配置如下:处理器:Inter Pentium 4 1.6GHz 或更高内存:512MB硬盘空间:160GB光驱:CD-ROM 48X显卡:SVAG显示适配器。用户端因为客户端主要用于浏览和操作数据,所以对客房端的硬件要求不高,不过现在的电脑很高的性价比,因此需要的配置应该高于下面的配置:处理器:Inter Pentium 1.0GHz 或更高内存:216MB硬盘空间:80GB光驱:CD-ROM 48X显卡:SVAG显示适配器。(2)、软件环境服务器端操作系统:Windows 2000 Server或者更高版本网络协议:TCP/IP数据库:SQL server2008用户端操作系统:Windows 98/2000/XP/win7网络协议:TCP/IP客户端软件:酒店管理系统v1.02.2 可行性分析1、技术可行性系统采用了C/S技术结构,使用Microsoft Visual Studio 2010开发软件,数据库服务器选用微软公司的SQL Server 2008数据库,它是目前能处理所有大、中、小型系统最方便的流行数据库,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。它的灵活性、安全性和易用性为数据库编程提供了良好的条件。2、 经济可行性对于酒店这样的中型企业来说,开发这样的一个系统是非常有必要的,它们完全有能力和资金来负担系统的开发成本,况且,系统一旦开发完毕,投入到运行之后,将大大的提高其工作效率,减少人工成本,从而获得更多的利益。所以在经济上是可行的。3、安全可行性在系统运行后,就用户方而言,由于用户使用本系统时不会也不必关心系统内部的结构及实现方法,即对用户来说是透明的,所以本系统对用户而言是定位在界面友好、操作方便、功能齐全的原则上的,用户只需简单的用鼠标点击各页面上的链接或按钮就能执行相应的功能。就管理者而言,关心的是如何处理用户信息,只要把用户的信息放入服务器端的数据库或专门的数据库服务器,管理者就可运行相应的后台程序进行处理。4、操作可行性在高系统配置、高网络带宽的服务情况下,各个级别操作很容易通过网络对其操作范围内的系统内容信息进行操作管理,完全满足日常经营、管理的要求。回到家也可以轻轻松松办公,决胜千里之外。况且,该系统有非常简洁的图形界面,并在某些操作中附有操作说明,即使是对系统毫无了解的人来说,也是很容易接受的。综上所述,该酒店管理系统在技术上、经济上、操作上都是可行的。2.3 数据需求分析针对酒店管理系统,分别对前台接待、后台管理进行详细的调研和分析,总结出如下的需求信息:本系统包括房间类型实体、酒店实体、客户实体、房间实体、房间类型删除实体、用户实体。客房按类管理,所以需要有一客房类型信息,主要记录客房类型、不同类型客房价格、客房床位数量、客房展示图片。酒店实体主要是记录酒店名称、酒店老板姓名、酒店电话、酒店地址、酒店描述。客户实体主要是记录客户姓名、所交押金、身份证号、住房编号、入住时间、退租时间。房间实体主要记录房间编号、房间类型、房间床铺数量、房间状态标记、房间描述。房间类型删除记录实体主要记录删除的房间类型、删除时间。用户实体主要记录用户编号、用户名、用户密码、角色标记、用户电话。数据库将反映的现实世界中的实体,属性和它们之间的关系等原始的数据形式,包括各数据项、记录、文档的标识符、定义、类型、度量单位和值域。本系统根据以上的设计规划出的实体有下面给出各个实体图以及实体与实体之间的联系图。房间信息实体如图2.2所示:房间描述房间编号状态标记房间床铺数量房间类型图2.2 房间信息实体图酒店信息实体如图2.3所示:酒店酒店描述酒店名称 地址联系电话酒店老板图2.3 酒店信息实体图客户信息实体如图2.4所示: 客户退租时间客户姓名入住时间证件号码押金住房编号图2.4 客户信息实体图房间类型信息实体如图2.5所示:房间类型价格 类型 编号图2.5 房间类型信息实体图用户信息实体如图2.6所示:用户电话编号角色密码用户名图2.6 用户信息实体图房间类型删除信息实体图图2.7所示:房间类型删除记录删除时间房间类型图2.7 房间类型删除记录实体图总体实体联系图如2.8所示:房间类型标记登记mnm客房客户 1管理 mn用户n11管理酒店m图2.8总体E-R图2.4 数据字典数据字典是系统中给类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。下面以数据字典卡片来描述。表3.7 房间信息数据字典 表 3.8酒店信息信息数据字典 名字:房间信息别名:描述:用来存储房间信息定义:房间信息=房间编号+房间类型+入住人数+床铺个数+状态标记+描述位置:数据库名字:酒店信息别名:描述:用来存储酒店信息定义:酒店信息=酒店名称+酒店老板+联系电话+酒店地址+酒店描述位置:数据库表3.9 入住信息表数据字典 表 3.10 房间类型信息数据字典 名字:入住信息表别名:描述:用来存储客人入住信息定义:入住信息=序号id+客人姓名+身份证号码+房间编号+床号+押金+入住时间+退房时间+备注+付款位置:数据库名字:房间类型信息别名:描述:用来存储房间类型信息定义:房间类型信息=房间类型+床位数+价格+图片位置:数据库表3.11房间类型删除信息数据字典 表 3.12 用户信息数据字典 名字:房间类型删除信息别名:描述:用来存储房间类型删除信息定义:房间类型删除信息=房间类型+删除时间位置:数据库名字:用户信息别名:描述:用来存储用户信息定义:用户信息=用户id+用户密码+用户姓名+角色+电话位置:数据库2.5 数据流图系统顶层数据流图如下:后台管理员向酒店管理系统添加数据,系统存储数据信息,前台用户通过向系统输入用户名和密码后就让系统后,通过客房管理模块输入信息,系统把前台用户输入的信息以列表形式返回给用户。前台用户酒店管理系统用户名、密码列表显示管理员查询 登陆、查询、修改存入读取数据库图2.9 系统顶层数据流图第三章 系统设计3.1 系统功能结构设计采用本系统可以大大减少前台的服务人员的人数,直接和后勤联系加快入住登记速度。由于采用计算机操作,可以大大提高操作速度。为了能够适应信息化发展的需要,提高服务行业的工作效率,引入了该信息系统。酒店管理系统功能结构如图3.1所示。酒店管理系统前台登陆管理员登陆帮助工具客户入住客户退租客房管理客房信息员工管理客房类型财务管理软件信息日历表计算器结账退租客户登记客房修改客房删除修改房间删除房间添加房间添加员工删除员工员工修改添加类型修改类型删除类型图3.1 功能模块图本系统包括以下功能模块。1、前台管理:主要包括客户入住登记,结账开单,房间查询,房间基本信息修改等。2、客房管理:主要是对酒店客房类型管理增加、修改、删除,客房添加。3、员工管理:主要是对酒店员工进行信息修改、删除、添加的管理。3、财务管理:主要是对酒店财务方面的管理。包括一段时间内客户数量统计、客户入住月报、客户入住与退出数量统计。4、酒店初始化:主要是对酒店的基础设置信息的管理。包括酒店名称设置,酒店老板姓名设置,酒店电话设置,酒店地址设置,酒店描述设置。5、密码修改:主要是用户密码修改功能。6、工具:主要是方便用户时间查询,数据计算功能。7、帮助:主要是展示酒店信息,软件的信息链接。3.2 数据库设计数据库技术的发展,已成为先进信息技术的重要组成部分,是现代计算机信息系统和计算机应用系统的基础和核心。下面对数据库的需求、概念设计、逻辑设计加以说明。1数据库的需求分析现代的、成熟的和广泛占领市场的数据库产品一般都是关系数据库产品。本系统选择SQL Server 2008作为后台数据库,其强大的管理功能能够对大量的数据进行有效管理,并且与Visual Studio 2010无缝集成,使用起来非常方便。酒店管理系统核心功能主要涉及到6个表,即:房间信息表、酒店信息表、客户信息登记表、房间类型表、用户信息表。房间信息表:这张表是用来存储客房信息的。客房添加以后它的信息就会储存到这张表中,其中包含:客房编号、客房类型、入住人数、价格、床铺个数、状态标记、客房描述。酒店信息表:这张表是用来存酒店名称、酒店老板、联系电话、地址、酒店描述。会员信息表:这张表是用来存储客户姓名、客户证件号码、所交押金、住房编号、入住时间、退租时间。房间类型表:这张表是用来存储房间编号、房间类型、房间单价。用户信息表:这张表是用来存储各各用户与员工的编号、姓名、密码、角色标记、联系电话。房间类型删除记录表:主要记录删除的房间类型、删除时间。2数据库逻辑设计本系统的后台数据库使用SQL Server 2008作为数据库管理工具。该数据库包括以下几个表。(1)酒店信息表(hotelInfo):此表是在用户进行酒店初始化时,用于存放用户所填写的酒店信息。酒店序列号Id为酒店信息表的主键。下表3.1为酒店信息表(hotelInfo)的详细设计与说明:表3.1 酒店信息表(hotelInfo)列名数据类型长度主键否允许空注释IdInt4是不允许序号idhNameVarchar30否允许酒店名称hDetailVarchar30否允许酒店详细信息hImageimage否允许酒店图片hContactVarchar10否允许酒店管理人hPhoneVarchar11否允许电话hAddressVarchar100否允许地址hStateInt10否允许状态hFristRundatetime7否允许第一次运营时间hCloseCountint5否允许关闭次数(2)客户信息表(menber):此表为存储客户信息。客户编号mId为主键,主键为自动生成,这样就消除了客户记录的覆盖,同样也便于以后客户入住、退房信息的查询和统计。下表3.2为客户信息实体详细设计与说明:表3.2 客户信息表(menber)列名数据类型长度主键否允许空注释mIdInt4是不允许序号idmNameVarchar10否允许客人姓名mNumberVarchar19否允许身份证号码roomidInt4否允许房间编号bedNumberInt4否允许床号RentMoneydecimal(5, 2)否允许押金indatedatetime7否允许入住时间enddatedatetime7否允许退房时间remarktinyint100否允许备注paymentnumeric(5, 2)否允许付款(3)房间信息表(room):此表主要是记录房间具体信息。房间编号roommid为主键,后台管理员在进行房间添加时,系统会对房间编号进行检测。如果所填写的房间编号在系统中已经存在,那么系统将会提醒用户重新输入房间编号,所以房间编号是唯一的,这样既避免了主键冲突的情况发生也利于客房管理,同样也有利于客房有效管理。下表3.3为房间信息表(room)详细设计与说明:表3.3 房间信息表(room)列名数据类型长度主键否允许空注释roomidInt4是不允许房间idroomtypeVarchar30否允许房间类型currPeopleInt4否允许可住人数bedNumberInt4否允许床位数tvInt4否允许电视telInt4否允许电话compInt4否允许电脑toilInt4否允许热水器aircondtionInt4否允许空调rstateInt4否允许状态remarkVarchar100否允许备注pricedecimal(5, 2)否允许价格(4)房间类型信息表(roomType):此表主要由于存储房间类型的,它包括房间类型、房间床铺数量、单价、房间展示图片。房间类型roomType为主键,后台管理员在进行房间类型添加时,系统会对房间类型进行检测。如果所填写的房间类型在系统中已经存在,那么系统将会提醒用户重新输入房间类型,所以房间类型是唯一的,这样既避免了主键冲突的情况发生也利于客房管理,同样也有利于客房有效管理。下表3.4为房间类型信息表(roomType)详细设计与说明:表3.4 房间类型信息表(roomType)列名数据类型长度主键否允许空注释roomTypeVarchar30是不允许房间类型bedNumberInt4否允许床位数pricedecimal(5, 2)否允许价格rtimageVarchar50否允许图片(5)房间类型删除信息表(roomType_Tombstone):此表主要存储房间类型删除记录,包括所删除的房间类型、删除时间。表3.5 房间类型删除信息表(roomType_Tombstone)列名数据类型长度主键否允许空注释roomTypeVarchar30否不允许房间类型DeletionDatedatetime7否允许删除时间(6) 用户信息表(UserInfo):此表主要存储用户个人信息,它包括用户编号、用户密码、用户姓名、用户角色、用户电话;其中用户编号为主键,且编号为自动生成,所以这样就保证了用户唯一性,避免了主键冲突,保证了系统和数据安全性。表3.6用户信息表(UserInfo)列名数据类型长度主键否允许空注释u_idint4是不允许用户idu_pwdvarchar10否允许用户密码u_namevarchar10否允许用户姓名u_roleint4否允许角色u_telvarchar15否允许电话开始3.3 系统流程图系统程序流程图如图3.8所示:登陆管理员员工前台主界面后台主界面 功能操作 功能操作修改密码查询信息添加房间管理退房登记住房登记正确?正确?正确?是 否是 否否是结果更新数据库更新数据库继续?继续?继续?是是是否否否返回是退出? 否否结束是图3.8 系统流程图第四章 系统详细设计与实现4.1 用户登录用户通过输入用户编号和密码并选择用户角色登录入系统,如果密码或者用户编号不正确,则不任许用户登录到系统。只有有此系统账号的用户才可以登录到本系统,并把用户的基本信息赋到userInfo中,以便其他工能模块能获得登录用户的基本信息。下图4.1为用户登录流程图,图4.2为用户登录界面图开始用户登录错误验证用户信息正确后台界面前台界面图4.1 用户登录流程图图4.2 用户登录界面具体程序设计如下:private void btn_login_Click(object sender, EventArgs e) try var userLogin = new UserInfo(); bool result = userLogin.CheckUser(txb_id.Text, txb_pwd.Text, cbx_main_role.SelectedIndex.ToString(); if (result) switch (cbx_main_role.Text) case 员工: var f = new frmMain(); f.uid = txb_id.Text; f.uname = checkusername(); Hide(); f.Show(); break; case 管理员: varhm = new HotelManager(int.Parse(txb_id.Text); Hide(); hm.Show(); break;default: break; string str = string.Format(select * from UserInfo where u_id=0, int.Parse(txb_id.Text); SqlDataReader dtr = DBhelper.ExecuteReader(str, CommandType.Text, null, null); else var ms = new MessageShow(this); ms.Show(用户信息或者是密码错了?); catch (Exception ex) var ms = new MessageShow(this); ms.Show(界面没有得到赋值,请确定数数据库是否正确连接); 4.2主界面用户成功登陆之后,进入前台主界面。前台主界面主要由三个部分组成:顶端页面、左侧导航栏和右侧内容显示栏。顶端页面主要显示系统的名称、识别登陆用户的名称和身份。左侧导航栏采用分级模式,导航栏中显示整个系统的前台功能点。右侧内容显示栏主要显示客房的信息,其中用了iframe。点击左侧导航栏功能点的时候,不需重新打开窗口,而是在右侧的显示栏中显示内容。1、管理员登录成功后的主界面如图4.3。管理员除了不能登记租房、退房外拥有其他所有最高权限。图4.3 管理员主功能界面2、用户登录成功后进入的主功能界面如图4.4。普通用户一般为酒店员工,所以只能进行客房管理和查看资料以及修改自己的登录密码。图4.4 普通用户主功能界面4.3客房管理用户在成功登录系统后,进入客房管理模块对客房信息修改、添加、删除以及客房入住、退租操作。下图4.4为客房管理流程图:登录成功客房管理客房入住、退租客房添加客房删除客房信息修改图4.4 客房管理流程图4.3.1客房信息修改前台用户在登录系统后,通过客房信息列表管理,对客房进行修改操作,修改操作截图如图4.5所示: 图4.5 客房信息修改图主要程序设计如下: * 房间初始化信息查询 var room = new Room(); DataTable dt = room.GetRoomList(); dgwRoomList.DataSource = dt; dgwRoomList.Columns4.Visible = false; dgwRoomList.Columns5.Visible = false; dgwRoomList.Columns6.Visible = false; dgwRoomList.Columns7.Visible = false; dgwRoomList.Columns8.Visible = false; dgwRoomList.Columns10.Visible = false; button2.Enabled = false; btnDel.Enabled = false; catch (Exception ec) var ms = new MessageShow(this); ms.Show(查寻宾馆,数据库读取出错. + ec); private void button2_Click(object sender, EventArgs e) /价格一栏中如果不是输入的数字产生异常 try double y = double.Parse(one_price.Text); if (one_price.Text.Trim() = )/价格一栏中如果没有输入东西 var ms = new MessageShow(this); ms.Show(你没有输入单价。); else if (int.Parse(lblCurrentP.Text) 0) var ms = new MessageShow(this); ms.Show(当前房间有人,暂时不能修改); else var room = new Room(); room.RoomId = int.Parse(roomid.Text); room.CurrPeople = int.Parse(lblCurrentP.Text); var rt = new RoomType(); rt.TypeName = cbxroomTYpe.Text; room.RoomTpye = rt; room.Price = double.Parse(one_price.Text); room.Tv = tv3.Checked ? 1 : 0; room.Tel = te3.Checked ? 1 : 0; room.Comp = co3.Checked ? 1 : 0; room.Toil = to3.Checked ? 1 : 0; room.Aircondtion = air3.Checked ? 1 : 0; room.Rstate = curre.Checked ? 1 : 0; room.Remark = txtRemark.Text; room.BedNumber = int.Parse(comboBox4.Text); int result = room.UpdateRoom(room); if (result = 1) var ms = new MessageShow(this); ms.Show(修改成功); DataTable dt = room.GetRoomList(); dgwRoomList.DataSource = dt; else var ms = new MessageShow(this); ms.Show(不对头); catch (Exception en) var ms = new MessageShow(this); ms.Show(你的价格输入不正确。 + en); private void dgwRoomList_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) /获取roomid DataGridViewRow selectItem = dgwRoomList.SelectedRows0; / MessageShow ms = new MessageShow(this);ms.Show(selectItem.Cells.Count.ToString(); /MessageShow ms = new MessageShow(this);ms.Show(selectItem); roomid.Text = selectItem.Cells0.Value.ToString(); lblCurrentP.Text = selectItem.Cells2.Value.ToString(); cbxroomTYpe.Text = selectItem.Cells1.Value.ToString(); one_price.Text = selectItem.Cells11.Value.ToString(); tv3.Checked=selectItem.Cells4.Value.ToString()=1?true:false; te3.Checked = selectItem.Cells5.Value.ToString() = 1 ? true : false; co3.Checked = selectItem.Cells6.Value.ToString() = 1 ? true : false; to3.Checked = selectItem.Cells7.Value.ToString() = 1 ? true : false; air3.Checked = selectItem.Cells8.Value.ToString() = 1 ? true : false; curre.Checked = selectItem.Cells10.Value.ToString() = 1 ? true : false; txtRemark.Text = selectItem.Cells9.Value.ToString(); button2.Enabled = true; btnDel.Enabled = true; private void btnDel_Click(object sender, EventArgs e) if (MessageBox.Show(系统将会永久的删除,确认删除吗?, 确定?, MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = DialogResult.OK) if (int.Parse(lblCurrentP.Text) 0) var ms = new MessageShow(this); ms.Show(当前房间有人,暂时不能修改); else var room = new Room(); int result = room.DelRoomById(roomid.Text); if (result = 1) var ms = new MessageShow(this); ms.Show(删除成功); DataTable dt = room.GetRoomList(); dgwRoomList.DataSource = dt; else var ms = new MessageShow(this); ms.Show(不对头); else4.3.2 入住管理当前台接受客户入住需求后,根据客户需求信息查询是否有合要求的客房,如有,则登记客户信息,进行入住。下面两个图分别为客房查询截图和入住登记截图。图4.6 客房查询图4.7 客户入住登记主要程序设计如下:public bool blmc = true; /true 表示是查寻,而false表示是主页面传过来的数据 public bool customerin = true; /客人来了租房 private bool error_in = true; public int index; public rentmanage(int index) blmc = false;InitializeComponent();this.index = index; string str =string.Format(select 房间号= room.roomid,房间类型= room.roomtype,当前该房间已住人数= currPeople,当前还可住人数= bedNumber-currPeople ,你的床位号为 =currPeople+1 , 价格为 =price from room where roomid=0, index); DataTable dt = DBhelper.FillTable(str, CommandType.Text); /执行得以数据放在表格中 /数据绑定到页面的文本框 if (dt.Rows.Count = 0) MessageBox.Show(产生错误 。请联系管理员。); else groupBox8.Enabled = true; / button1_clickin(); /tb_inroom_customer.Enabled = true; /tb_inroom_customerid.Enabled = true; button4.Enabled = true; customercome.DataSource = dt; tx_inroomid.DataBindings.Add(text, dt, 房间号, false); tx_inroom_bednumber.DataBindings.Add(text, dt, 你的床位号为, false); tb_inroom_rent.DataBindings.Add(text, dt, 价格为, false); /设置为只读 tx_inroomid.ReadOnly = true; tx_inroom_bednumber.ReadOnly = true; tb_inroom_rent.ReadOnly = true; customerin = false; /标志位 public rentmanage() blmc = true; InitializeComponent(); public void button1_clickin() customercome.DataSource = ; tb_inroom_customer.Text = ; tb_inroom_customerid.Text = ; tx_inroomid.DataBindings.Clear(); tx_inroom_bednumber.DataBindings.Clear(); /customercome.DataSource=; tx_inroomid.DataBindings.Clear(); tx_inroomid.Text = ; tx_inroom_bednumber.Text = ; tx_inroom_bednumber.DataBindings.Clear(); tb_inroom_rent.DataBindings.Clear(); tb_inroom_rent.Text = ; private void button1_Click(object sender, EventArgs e) /当客人租房时查找空房 blmc = true; try lb_inroom_error.Text = ; button1_clickin(); /如果不是第一次执行就移出绑定控件 string check = ; string cob_roomtypestr = cob_roomtype.Text; int tv, tel, comp; tv = tel = comp = 0; check = string.Format( select 房间号= room.roomid,房间类型= room.roomtype,当前该房间已住人数= currPeople,当前还可住人数= bedNumber-currPeople ,你的床位号为 =currPeople+1 , 价格为 =price from room where ); if (all2.Checked) check += string.Format( tv=1 and tel=1 and comp=1 and toil=1 and aircondtion=1 and rstate=1 and bedNumberroom.currPeople and roomtype=0, cob_roomtypestr); else if (tv2.Checked) check += string.Format( tv=1 and ); if (te2.Checked) check += string.Format( tel=1 and); if (co2.Checked) check += string.Format( comp=1 and ); if (to2.Checked) check += string.Format( toil=1 and ); if (air2.Checked) check += string.Format( aircondtion=1 and ); check += string.Format( rstate=1 and bedNumberroom.currPeople and roomtype=0, cob_roomtypestr); try DataTable dt = DBhelper.FillTable(check, CommandType.Text); /执行得以数据放在表格中 /数据绑定到页面的文本框 if (dt.Rows.Count = 0) MessageBox.Show(没有服从条件的.); else button4.Enabled = true; customercome.DataSource = dt; tx_inroomid.DataBindings.Add(text, dt, 房间号, false); tx_inroom_bednumber.DataBindings.Add(text, dt, 你的床位号为, false); tb_inroom_rent.DataBindings.Add(text, dt, 价格为, false); /设置为只读 tx_inroomid.ReadOnly = true; tx_inroom_bednumber.ReadOnly = true; tb_inroom_rent.ReadOnly = true; customerin = false; /标志位 groupBox8.Enabled = true; catch (Exception ec) MessageBox.Show(出错了! + ec.Message); catch (Exception ec) MessageBox.Show(出错了 + ec.Message); private void button4_Click(object sender, EventArgs e) /租房提交4.3.3 退租管理当前台接受客户退租需求后,根据客户信息查询相关的客房,如有,则登记结算,进行退租管理。下面为客房查询与退租截图。图4.8 退租管理主要程序设计如下:private void btn_check_out_Click(object sender, EventArgs e) /结帐按钮处理事件 if (checkmark & adatemark) if (tb_money.Text.Trim().Length = 0) | (tb_indate.Text.Trim().Length = 0) | (tb_endate.Text.Trim().Length = 0) | (tb_rentmoney.Text.Trim().Length = 0) | (tb_member.Text.Trim().Length = 0) MessageBox.Show(操作有错误。); else var mb = new Member(); /更新客人表 var rm = new Room(); /更新房间表 mb.Mid = int.Parse(lb_mid.Text); mb.CheckOutDate = tb_endate.Text; double pay = double.Parse(tb_money.Text); int i = mb.updatemember(mb.Mid, pay, mb.CheckOutDate); int j = rm.updateroom(int.Parse(tb_roomid.Text); if (i 0 & j 0) /如果更新成功 dgv_account_check.DataSource = ; tb_member.Text = ; tb_roomid.Text = ; tb_indate.Text = ; tb_rentmoney.Text = ; tb_money.Text = ; MessageBox.Show(谢谢光临!); groupBox6.Enabled = false; else MessageBox.Show(有错误,请联系技术员.); else MessageBox.Show(有错误,请联系XXX); private void abate_TextChanged(object sender, EventArgs e) adatemark = true;lb_account_error.Text = ; try double discount = double.Parse(abate.Text); if (0 discount & discount = 10) compute(endt); /计算应付金额 else lb_account_error.Text = 折扣应在(110)之间; adatemark = false; catch adatemark = false;MessageBox.Show(你输入的折扣不正确); finally /处理 4.3.4 客房类型管理客房类型管理主要是后台管理员针对房间类型的添加、修改和删除的操作。下为客房类型管理截图:1、客房类型添加图4.9 客房类型添加2、客房类型删除图4.10 客房类型删除3、客房添加图4.11 房间添加主要程序设计如下:/更新客房类型表roomType private void btn_up_update_Click(object sender, EventArgs e) /RoomType rt = new RoomType(); rt = new RoomType(); SqlDataReader reader = null; ListViewItem lvI; /用原有客房类型名查询出原有的图片路径 rt.TypeName = roomtypename; rt.Timage = rt.selecPath(); /将新的客房类型名赋值给RoomType中的变量TypeName rt.TypeName = this.txt_up_roomType.Text; rt.BedNumber = Convert.ToInt32(this.txt_up_bedNumber.Text); rt.Price = Convert.ToDouble(this.txt_up_price.Text); bool flag;/布尔值flag判定其是否更新 if (this.openFileDialogUpRoomType.FileName=浏览) flag = rt.Update(roomtypename); else rt.Timage = this.openFileDialogUpRoomType.SafeFileName; flag = rt.Update(roomtypename); /数据更新成功则直接在ListView里面显示出来,反之则ListView保持原样 if (flag) try reader = rt.selectSQL(); /this.rlist.lvroomType.Items.Clear(); this.frmroomtype.lvroomType.Items.Clear(); while (reader.Read() lvI = new ListViewItem(readerroomtype.ToString(); lvI.SubItems.Add(readerbedNumber.ToString(); lvI.SubItems.Add(readerprice.ToString(); /this.rlist.lvroomType.Items.Add(lvI); this.frmroomtype.lvroomType.Items.Add(lvI); catch (Exception ex) MessageShowms=newMessageShow(this);ms.Show(ex.ToString(); finally reader.Close(); MessageShow ms1 = new MessageShow(this);ms1.Show(修改成功!); else MessageShow ms = new MessageShow(this);ms.Show(未能修改!); 4.4 员工管理后台员工管理主要是对酒店员工进行信息修改、删除、添加的管理下图为员工管理实现截图。1、员工信息修改 图4.12 员工信息修改2、员工信息删除若员工出现辞职问题或者其他不在公司原因,需根据具体情况进行人员管理相关操作。下为员工信息删除:图4.13 员工信息删除3、员工信息添加员工信息录入主要包括:员工姓名、员工初始登陆密码、员工电话。因员工编号是采用的自动编号,每个编号是固定且唯一的,所以不需要人工添加的。下为员工信息添加截图:图4.14 员工信息添加主要程序设计如下:public partial class UserManage : Form / / 初始化一个ListViewItem / ListViewItem lvi; / /声明一个userinfo事例 / UserInfo ui=new UserInfo(); / / 定义一个datatable用于返回用户数据表 / public DataTable dtUserInfo; public UserManage() InitializeComponent(); / / 窗体加载时ListBox绑定,显示用户详细信息 / / / public void UserManage_Load(object sender, EventArgs e) dtUserInfo = ui.GetAllUser(); var query = from User in dtUserInfo.AsEnumerable() select new id = User.Field(u_id), name = User.Field(u_name), tel = User.Field(u_tel) ; foreach (var v in query) string values; values = new string v.id.ToString(), , v.tel ; lvi = new ListViewItem(values); lstv_user.Items.Add(lvi); / / 查询,调用getinfo方法 / / / private void btnEmpSeach_Click_1(object sender, EventArgs e) /清空数组 lstv_user.Items.Clear(); try switch (cbxSearch.SelectedItem.ToString() case 员工姓名: getInfo(u_name, dtUserInfo); break; case 员工编号: getInfo(u_id, dtUserInfo); break; default: break; catch (Exception ex) MessageShow ms = new MessageShow(this);ms.Show(ex.Message); / / 定义一个方法,用于查询用户数据表 / / 数据表字段类型 / 用户数据表 private void getInfo(string type, DataTable dtUserInfo) var query_role = from user in dtUserInfo.AsEnumerable() where user.Field(type).ToString().Contains(txbSearch.Text) select new id = user.Field(u_id), name = user.Field(u_name), tel = user.Field(u_tel), ; foreach (var v in query_role) string values; values = new string v.id.ToString(), , v.tel ; lvi = new ListViewItem(values); lstv_user.Items.Add(lvi); / / 用户输入关键字时,清空 / / / private void txbSearch_Enter_1(object sender, EventArgs e) txbSearch.Clear(); / / 右键单击删除事件 / / / private void tsmi_user_Click(object sender, EventArgs e) if (MessageBox.Show(系统将会永久的删除,确认删除吗?, 确定?, MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = DialogResult.OK) if (lstv_user.SelectedItems.Count = 0) MessageShow ms = new MessageShow(this);ms.Show(对不起!请选择一项进行操作!); else try for (int i = 0; i lstv_user.SelectedItems.Count; i+) /获取选中行的用户编号intid=int.Parse(lstv_user.SelectedItems0.SubItems0.Text.ToString(); ui.delUser(id); /刷新listview DataTable dtUserInfo = ui.GetAllUser(); lstv_user.Items.Clear(); UserManage_Load(sender, e); catch (Exception ex) MessageShowms=newMessageShow(this);ms.Show(ex.Message); / / 右键单击修改事件,弹出对话筐进行修改信息 / / / private void 修改ToolStripMenuItem_Click(object sender, EventArgs e) /MessageBox.Show(lstv_user.SelectedItems.Count.ToString(); if (lstv_user.SelectedItems.Count = 0) MessageShow ms = new MessageShow(this); ms.Show(对不起!请选择一项进行操作!); else ModifyUser fmmod = new ModifyUser(); fmmod.usm = this; fmmod.ShowDialog(); private void 添加ToolStripMenuItem_Click(object sender, EventArgs e) AddUser aduser = new AddUser(); aduser.usm = this; aduser.ShowDialog(); private void btnOK_Click(object sender, EventArgs e) this.Close(); 4.5 财务管理财政管理主要是对酒店财务方面的管理。包括一段时间内客户数量统计、客户入住月报、客户入住与退出数量统计。1、一段时间客户统计:一段时间客户统计是为了预防并列显示全部信息而设置的。为的是防止大量数据的堆积而不容易统计。下图是一段时间客户统计截图:图 4.15一段时间客户统计2、客户入住月报:详细显示一段时间内客户入住信息。可根据客户姓名、或入住时间详细显示客户入住记录。并可以本地文本记录导出,这样更便于数据分析。默认的导出格式为excel文件。图4.16 客户入住月报主要程序设计如下:public partial class staticnum : Form private readonly DateTime dt = DateTime.Now; public staticnum() InitializeComponent(); private void staticnum_Load(object sender, EventArgs e) private void button1_Click(object sender, EventArgs e) if (dateTimePicker1.Value dateTimePicker2.Value) string str = string.Format(select 总人次=count(*) from Member where indate1, dateTimePicker2.Value, dateTimePicker1.Value); DataTable data = DBhelper.FillTable(str, CommandType.Text); show_number.DataSource = data; else if (dateTimePicker2.Value dt) var ms = new MessageShow(this); ms.Show(统计时间不能大于当前。); else var ms = new MessageShow(this); ms.Show(这段时间没有人租房。); private void dateTimePicker1_ValueChanged(object sender, EventArgs e) if (dateTimePicker1.Value dt) var ms = new MessageShow(this); ms.Show(你没有输入正确); private void dateTimePicker2_ValueChanged(object sender, EventArgs e) private void button2_Click(object sender, EventArgs e) Close(); 4.6 酒店初始化酒店初始化主要是酒店老板对软件初次使用的信息注明,主要包括:酒店名称、酒店老板姓名、联系电话、酒店地址、酒店描述,并支持本地酒店上传预览,这样有助于酒店跟专业化、正规化的管理。下为酒店初始化截图:图4.17 酒店初始化主要程序设计如下: private void btnOK_Click(object sender, EventArgs e) try /定义文件流,存取图片 FileStream fImageFile ; if(ImagePath = ) fImageFile = new FileStream(Application.StartupPath+11.jpg, FileMode.Open); else fImageFile= new FileStream(ImagePath, FileMode.Open); byte fImageByte = new byte(int)fImageFile.Length; fImageFile.Read(fImageByte, 0, fImageByte.Length); /向数据库里面修改信息 /sqlParameter参数的使用方法 : /在定义sql语句时,需要传入参数值的字段用hName=hName方式填充 string sql = update hotelInfo set hName=hName,hDetail=hDetail,hImage=hImage,hContact=hContact,hPhone=hPhone,hAddress=hAddress,hState=hState where id=1;SqlParametersp=newSqlParameternewSqlParameter(hName,txtName.Text), newSqlParameter(hDetail,txtDesc.Text), newSqlParameter(hImage,fImageByte), newSqlParameter(hContact,txtBoss.Text), newSqlParameter(hPhone,txtPhone.Text), newSqlParameter(hAddress,txtAdd.Text), newSqlParameter(hState,chbState.Checked?0:1); int result = DBhelper.ExecuteNoeQuery(sql, CommandType.Text, null, sp); fImageFile.Close(); if (result = 1) MessageShow ms = new MessageShow(this); ms.Show(修改成功); else MessageShow ms = new MessageShow(this); ms.Show(对不起,系统出现问题); this.Close(); catch (Exception ex) MessageShow ms = new MessageShow(this); ms.Show(异常错误+ex.ToString(); 4.7用户密码更改用户密码更改主要是为了软件和人员更好的管理模式设置的。下为用户密码修改截图:图4.18 用户密码修改主要程序设计如下:public partial class ModifyPwd : Form / / 实例一个userinfo / public UserInfo ui = new UserInfo(); / / 初始化,设置员工不能修改自己的编号和姓名 / public int index; public ModifyPwd(int index) InitializeComponent(); txbmyid.Enabled = false; this.index = index; txbmyid.Text = index.ToString(); /员工的原密码 string oldPwd=; private void ModifyPwd_Load(object sender, EventArgs e) try SqlDataReader reader = ui.GetUserById(int.Parse(txbmyid.Text); while (reader.Read() txbmyid.Text = readeru_id.ToString(); txbmyname.Text = readeru_name.ToString(); this.oldPwd = readeru_pwd.ToString(); txbmytel.Text = readeru_tel.ToString(); reader.Close(); catch (Exception ex) MessageShow ms = new MessageShow(this); ms.Show(ex.Message); / / 重值按扭,清空用户 / / / private void btnmycancel_Click(object sender, EventArgs e) txbmypwd.Clear();txbmytel.Clear(); / / 修改密码 / / / private void btnmyok_Click(object sender, EventArgs e) try if (this.oldPwd = this.txbmypwd.Text.Trim() if (this.txtNewPwd.Text = ) this.lblError.Text = 请输入新密码; else this.lblError.Text = ; int id = int.Parse(txbmyid.Text); int result = ui.updateUser(id, this.txtNewPwd.Text, txbmytel.Text,this.txbmyname.Text); if (result = 1) this.lblError.Text=恭喜您,成功修改; else this.lblError.Text=出现异常,请重新修改; else this.lblError.Text = 原密码错误,请重新输入!; this.txbmypwd.Focus(); this.txtNewPwd.Text = ; catch (Exception ex) MessageShow ms = new MessageShow(this);ms.Show(ex.Message); private void button1_Click(object sender, EventArgs e) this.Close(); 第五章 系统测试5.1测试的作用和意义系统测试是系统开发周期中的一个非常重要环节。尽管在系统开发周期的各个阶段均采取了严格的技术审查,但依然难免会留下错误,如果系统的一些漏洞或错误在投入运行之前的系统检测阶段没有发现并纠正,这些问题在运行阶段是迟早会暴露出来的,到那时要纠正错误将会付出更大的代价。系统测试占用的时间、花费的人力和成本占软件开发的很大比例。统计表明,开发较大规模的系统,系统测试的工作量大约占整个软件开发工作量的4050。而对于一些特别重要的大系统,测试的工作量和成本更大,甚至超过系统开发其他各阶段的总和的若干倍。5.2测试方法1、个人单元测试对于小系统,在编码过程中,最常用的单位测试。单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 单元测试不仅仅是作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护。2、系统功能测试系统功能测试最常见的两种方法是黑盒测试和白盒测试,黑盒测试也称功能测试,将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,研究软件的外部特性。根据软件的需求规格说明书测试用例,从程序的输入和输出特性上测试是否满足设定的功能。白盒测试也称结构测试,将软件看作一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查与测试是否相符。(1) 表单测试当用户给wingdows应用程序管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。(2) 数据库测试在windows应用技术中,数据库起着重要的作用,数据库为windows应用程序的管理、运行、查询和实现用户对数据存储的请求等提供空间。在windows应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。在使用了数据库的windows应用程序中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。5.3系统测试软件测试方法从测试人员角度看,可分为人工测试和机器测试。人工测试又称为代码复审。主要有三种方法:个人复查、走查、会审。机器测试分为黑盒测试(又称功能测试)和白盒测试(又称结构测试)两种。下面对本酒店管理系统进行测试,以检查系统能否正确完成各种操作,是否能够实现预期具有的功能。1.用户登录输入密码错误时系统会提示。测试结果如图5.1所示图5.1 登陆界面2.修改密码员工登录后可以自行修改密码,输入密码 123436,新密码是0。测试结果如图5.2所示图5.2 修改密码界面测试3.人员管理从人员列表中,删除人员信息,增加人员信息删除数据后,列表找不到该数据图 5.3 员工删除测试添加姓名:梅万里,密码,电话123456 ,系统提示操作成功图 5.4员工添加4 客房管理测试客房信息修改、入住管理、退租管理、客房类型管理;下图为测试截图:图5.5 客房入住测试图5.6 客房退租测试5 财务管理财政管理主要是对酒店财务方面的管理。包括一段时间内客户数量统计、客户入住月报、客户入住与退出数量统计。下图为财务测试截图:图5.7 财务管理测试当选择入住时间晚于退租时间时,系统提示出错。参考文献1彭伟民. 基于需求的酒店管理系统的建模与实现J. 微机发展, 2005,15(10): 75-77.2翟广宇. 基于C/S结构的酒店管理系统J. 兰州工业高等专科学报, 2004,11(2): 2-4.3薛华成. 管理信息系统M. 北京:清华大学出版社,1996.7.4刘学明. 饭店客房管理M. 广东:广东旅游出版社,2000.10.5萨师煊,王珊.数据库系统概论M. 北京:高等教育出版社,2000.7.6王建设, 张金娜.酒店管理系统设计与实现J. 计算机与现代化, 2011(2): 90-93.7戚桂杰,陈洪顺.SQL Sever Management Objectsd 的研究与应用J. 中国管理信息化, 2010, 13(4)
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
2:不支持迅雷下载,请使用浏览器下载
3:不支持QQ浏览器下载,请用其他浏览器
4:下载后的文档和图纸-无水印
5:文档经过压缩,下载后原文更清晰
|