酒店管理系统毕业设计 ....酒店管理系统毕业设计摘要本文主要介绍了“荣丰酒店管理系统”的项目背景和意义,着重阐述了该系统开发实现过程,从系统分析、系统设计、系统实现、软件测试、详细下面是小编为大家整理的酒店管理系统毕业设计 ,供大家参考。
.
.
.
.
酒店管理系统毕业设计
摘
要
本文主要介绍了“荣丰酒店管理系统”的项目背景和意义,着重阐述了该系统开发实现过程,从系统分析、系统设计、系统实现、软件测试、详细设计到系统测试等各个环节都进行了详尽的分析和描述。本文还简略的介绍了主要的开发工具C#和SQL数据库的功能特性。传统手工的客房管理,管理过程繁琐而复杂,执行效率低,并且易于出错。随着社会的的不断进步,宾馆酒店业的竞争也愈来愈激烈,要想在竞争中取得优势,必须在经营管理、产品服务等方面提高管理意识。如何利用先进的管理手段,提高客房的管理水平,是每一个宾馆管理者所面临的重大问题。
本系统采用C#语言编辑,实现了与windows操作系统良好的兼容性,通过代码与SQL语言实现了客房查询功能、客户查询功能、入住登记功能、续费管理功能、退房管理功能、每日结算功能、结算报表功能、房间基本信息修改功能、权限用户修改与房间价格调整功能。
通过这样的系统,我们可以做到信息的规管理和快速查询,实现了客房信息管理的系统化、规化和自动化,这样不仅减少了管理工作量,还提高了管理效率,降低了管理成本,以应付当今日趋激烈的竞争环境。
关键字:荣丰酒店管理系统;C#;SQLAbstractAssocietyprogresses,thehotelindustryincreasinglyfiercecompetition,inordertogainadvantageinthecompetitionmustbeinmanagement,products,servicesandsoimprovethemanagementawareness.Howtomakeuseofadvancedmanagementtoolstoimprovethemanagementlevelrooms,ahotelmanagereveryfacemajorproblems.Traditionalhand-roomsinthemanagementoftheprocesstediousandcomplicated,inefficientanderror-prone.Throughsuchasystem,wecandotheI/72.
.
.
.
standardmanagementofinformationandquickqueries,informationmanagementrealizedtheroomsystematic,standardizedandautomated,sothatthemanagementnotonlyreducestheworkload,butalsoimprovemanagementefficiencyandreducemanagementcosts.Thisarticlebrieflydescribesthe"Rongfenghotelmanagementsystem"projectbackgroundandsignificance,focusingontheimplementationofthesystemdevelopmentprocess,fromsystemanalysis,systemdesign,systemimplementation,softwaretesting,detaileddesigntosystemtestingcarriedoutinallaspectsofadetailedanalysisanddescription.Thisarticlealsobrieflyintroducedthemaindevelopmenttools,C#,andSQLdatabasefeatures.
Keyword:Rongfenghotelmanagementsystem;C#;SQLII/72.
.
.
.
目
录
引言11基础知识21.1C#语言21.2SQLServer数据库介绍32系统分析52.1开发背景与意义52.2可行性研究52.3功能需求62.3.1用例分析62.3.2概念类描述2.3.3行为描述112.4性能需求112.4.1响应时间112.4.2吞吐量112.4.3并发用户数132.4.4资源利用率132.5环境需求132.5.1硬件环境132.5.2软件环境133系统设计153.1系统结构设计153.1.1软件设计的原则153.1.2系统层次结构163.2设计阶段类图13.3数据库设计13.3.1数据库概念设计13.3.2数据库逻辑设计13.4人机界面设计1I/72.
.
.
.
3.4.1人机界面设计指南13.4.2用户界面设计23.5系统详细设计223.5.1入住登记PAD图233.5.2房间查询PAD图243.5.3退房管理PAD图244系统实现254.1语言选择原因254.2软件开发环境24.3系统功能实现24.3.1管理员登录24.3.2空余房间查询24.3.3客户查询24.3.4入住登记34.3.5退房操作314.3.6今日结算324.3.7结算报表334.3.8酒店基本信息管理345软件测试365.1测试计划的制定365.1.1调试计划的整体目标365.1.2定义软件测试的标准365.1.3测试实施策略的制定365.1.4软件测试管理流程35.1.5测试计划的要点35.2测试的基础35.2.1测试的目标35.2.2白盒测试和黑盒测试35.2.3测试的准则35.3测试用例设计3II/72.
.
.
.
5.3.1等价类测试用例设计35.3.2边界值测试用例设计45.3.3功能图法测试用例设计45.4软件可靠性425.4.1基本定义425.4.2估算平均无故障时间的方法435.4.3MTTF和ASS的估算44结论45致46参考文献4附录4附录AJSPIntroduction4附录BJSP介绍5附录C程序主要代码63III/72.
.
.
.
引
言
当今时代的两个显著特点就是世界经济一体化和以计算机为代表的信息技术的快速发展。一个组织要在激烈的竞争中保持优势和不断发展,必须对迅速变化的环境灵敏地做出有效地反应。管理信息系统的应用能够提供这种有效的决策支持。
系统效能,是预期一个系统满足一组特定任务的程度的量度。它是系统综合性能的反映,是系统的整体属性。效能评估,就是要对系统进行综合分析,把系统的各项性能与任务要求综合比较,最终得到表示系统的优劣程度的结果。荣丰酒店管理系统的效能,可以细分为系统的自身效能和应用效能。自身效能是酒店管理系统本身固有的性能,它体现了系统本身的完备性;应用效能是酒店管理系统在应用过程中体现的效能,是通过对信息的搜集、传输和处理对平时有利作用的程度。
信息管理的过程包括信息收集、信息传输、信息加工和信息储存。信息收集就是对原始信息的获取。信息传输是信息在时间和空间上的转移,因为信息只有与时准确地送到需要者的手中才能发挥作用。信息加工包括信息形式的变换和信息容的处理。信息的形式变换是指在信息传输过程中,通过变换载体,使信息准确地传输给接收者。信息的容处理是指对原始信息进行加工整理,深入揭示信息的容。信息送到使用者手中,有的并非使用完后就无用了。
信息系统从技术上说就是为了支持决策和组织控制而收集(或获取)、处理、存储、分配信息的一组相互关联的组件。除了支持决策、协作和控制,信息系统也可用来帮助经理和工人分子问题,使复杂性可视化,以与创造新的产品,从商业角度看,一个信息系统是一个用于解决环境提出的挑战的,基于信息技术的组织管理方案。我们用“信息系统”这个词时,特指依赖于计算机技术的信息系统。
一个基于计算机的信息系统是以计算机软件、硬件、存储和电信等技术为核心的人机系统。
酒店管理系统主要是从酒店日常管理入手,严格的遵守系统的效能,是一个结构复杂、功能强大的管理信息系统。酒店部的基本信息、入住、退房和结算、房间基本信息的管理是一项重要的任务。本系统中将引入管理信息系统对酒店的基本信息、入住、退房和结算、房间基本信息进行管理,可以方便管理员对酒店信息的查询,简化了酒店管理的统计计算,从而真正减少管理员日常的工作量,使管理人员轻松、快捷、高效、高质量的完成各项工作。
1/72.
.
.
.
1基础知识
1.1C#语言
C#是微软公司发布的一种面向对象的、运行于.NETFramework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员AndersHejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NETwindows网络框架的主角[1]。
1.C#介绍
C#(读做"Csharp",中文译音暂时没有.专业人士一般读"Csharp",现在很多非专业一般读"C井"。
C#是一种安全的、稳定的、简单的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
并且C#成为ECMA与ISO标准规。C#看似基于C++写成,但又融入其它语言如Delphi、Java、VB等。
在本文中,我将考察创建一种新计算机语言的一般动机,并将特别指明是什么原因导致了C#的出现.然后我将介绍C#和它与Java,c,c++的相似之处.其次我将讨论一些存在于Java和C#之间的高层次的,和基础的差别。我将以衡量在用多种语言开发大型应用程序的时候所需的知识(或者对这种知识的缺乏程度)来结束本文,而这正是.NET和C#的一个主要战略。目前,C#和.NET还只能以C#语言规则,以与Windows2000的一个"d预览版本",还有MSDN上迅速增多的文档集子的形式获得(还没有最终定型)。
2.泛型编程介绍
微软本打算继续保证开发进度,并在2004年推出VisualStudio.NET2004,但由于其间软件工程学尤其是软件管理学的大规模进步,微软所提供的这种仅具备开发和调试功能的IDE已经无法满足团队开发的需求[3]。因此微软决定在项目设计和管理工具方面进行了进一步研发,并将其集成到VisualStudio中,以赢回[2]2/72.
.
.
.
原有的市场。因此,微软将VisualStudio.NET2004“改名”为VisualStudio2005,并决定推迟一年发布。不过,微软还是坚持在2004年的6月份发布了VisualStudio2005的第一个Beta版,同时向开发者展示了C#语言的2.0版本[4]。2005年4月,微软发布了VisualStudio2005Beta2,这已经是具备了几乎全部功能的VisualStudio,包括的产品有SQLServer2005、TeamFoundationServer和TeamSuite。这时的C#编译器已经能够处理C#2.0中所有的新特性[5]。
1.2SQLServer数据库介绍
SQLServer是微软公司开发的一个关系数据库管理系统,以TransactSQL的数据库查询和编程语言。T-SQL是结构化查询语言SQL的一种,支持ANSISQL-92标准。
但说起它的历史,却得从Sybase开始的。SQLServer从20世纪80年代后期开始开发,最早起源于1987年的SybaseSQLServer。SQLServer最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,1988年,Microsoft公司、Sybase公司和Aston-Tate公司把该产品移植到OS/2上。后来Aston-Tate公司退出了该产品的开发,而Microsoft公司、Sybase公司则签署了一项共同开发协议,这两家公司的共同开发结果是发布了用于WindowsNT操作系统的SQLServer,1992年,将SQLServer移植到了WindowsNT平台上[6]。
在SQLServer4版本发行以后,Microsoft公司和Sybase公司在SQLServer的开发方面分道扬镳,取消了合同,各自开发自己的SQLServer。Microsoft公司专注于WindowsNT平台上的SQLServer开发,而Sybase公司则致力于UNIX平台上的SQLServer的开发。本文中介绍的是MicrosoftSQLServer以后简称为SQLServer或MSSQLServer。
SQLServer6.0版是第一个完全由Microsoft公司开发的版本。1996年,Microsoft公司推出了SQLServer6.5版本,接着在1998年又推出了具有巨大变化的7.0版,这一版本在数据存储和数据库引擎方面发生了根本性的变化。又经过两年的努力开发,Microsoft公司于2000年9月布了SQLServer2000,其中包括企业版、标准版、开发版、个人版四个版本。从SQLServer7.0到SQLServer2000的变化是渐进的,没有从6.5到7.0变化那么大,只是在SQLServer7.0的基础上进行了增强[7]。
数据库技术从60年代末期至今只有不到40年的历史,但其发展速度之快是其它技术所不与的。它已由第一代的层次型、网状型数据库,第二代的关系型数据库发展到今3/72.
.
.
.
天以面向对象为主要模型的数据库,即第三代数据库。数据库技术和网络通信技术、面向对象编程技术、并行计算机技术、人工智能技术相互融合、相互渗透,促进了数据库技术的广泛应用[8]。
数据库通常有两个主要部分:一个是保存物理数据库的文件,一个是应用程序用于访问数据的数据库管理系统(DBMS)软件。DBMS负责维护数据库的结构,包括:
1.据库数据间的关系。
2.数据存储正确,定义数据间关系的规则未被违反。
3.系统崩溃的情况下,按照已知的一致性程度恢复所有数据。
4/72.
.
.
.
2系统分析
2.1开发背景与意义
信息在社会和经济的发展中所起的作用越来越为人们所重视。信息资源的开发利用水平成为衡量一个国家综合国力的重要标志之一。计算机作为信息处理的工具,为适应数据处理需求的迅速提高,满足各类信息系统对数据管理的要求,在文件系统的基础上发展基础数据库系统,数据库方法针对事物处理量数据管理需求。我国自从80年代上半期,国家计委统计局计算中心在第一次全国人口普查、工业普查中使用了数据库管理技术以来,随着微机管理系统的推广,数据库信息管理系统的应用逐渐展露头脚,但是也由于发展晚起步低的原因和当代技术的占有独享性质,导致我国虽然在这方面发展迅速但是发展规模普遍都是中小型方向而且运作机制还很不完善。
酒店管理是一项琐碎、复杂而又十分细致的工作,工作量很大,一般不允许出错,如果实行手工操作,每天须手工填制大量的表格,这就会耗费工作人员大量的时间和精力,利用计算机进行酒店日常管理,不仅能够保证核算准确无误、快速输出,而且还可以利用计算机对有关的各种信息进行统计,同时计算机具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、性好、寿命长、成本低等。这些优点能够极提高酒店管理的效率,也是酒店管理管理科学化、正规化,与世界接轨的重要条件。
2.2可行性研究
系统的可行性研究在系统的整个过程中占有很重要的地位,它决定所选项目是不是可能实现或值得去实现。可行性研究的目的就是用最小的代价在尽可能短的时间确定问题是否能够解决。它主要包括技术、经济、运行、法律等方面的可行性:现有技术是否能够实现本系统的设计开发;经济上是否值得去实现;是否能够在一般平台下运行等。
技术可行性是指开发一个新系统所需要的技术是否具备,如支持新系统的软硬件功能以与技术人员的数量和水平。本系统是进行酒店日常管理,所以结合实际需要,经过仔细斟酌,本系统的开发过程采用的是C#+windows窗体的模式。使用SQLServer2005作为后台数据管理系统,而在前端使用dataGridView组件来访问实际的数据库,这样就基本实现了程序代码和数据库的无关性。
5/72.
.
.
.
经济可行性是评价一个计算机管理系统是否可行的最基本的一种方法,是对管理系统解决方案的成本有效性的量度。管理系统的开发是一种投资,因此对于酒店来说,首先关心的是,是否值得开发一个酒店管理系统。而在效益方面,首先关心的是,当使用了这套管理系统后,酒店日常管理的效率是否提高了,人员使用的资金是否节省了。而本系统的设计和开发事实上恰好能满足其这些要求。还有该系统对硬件的要求不高,而且由于.NET系统的可移植性,只要是装有Windows系列操作系统的计算机通过配置一般就能运行系统,所以在系统运行方面也不存在问题。
运行可行性方面,酒店管理系统是酒店日常操作进行统一的管理,可以简单方便高效的进行录入、查询、修改、删除、退出。随时把握酒店部的情况,为酒店日常管理管理提供了解决方案。
2.3功能需求
荣丰酒店管理系统主要实现对酒店部信息的操作和管理,系统的用户是负责管理设备的管理人员,系统具有房间信息查询、入住与退房操作管理、房价调整管理、结算管理等主要功能。
2.3.1用例分析
用例图主要用来图示化系统的主事件流程,它主要用来描述需求,即希望系统具备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,是设计系统分析阶段的起点,设计人员根据需求来创建和解释用例图,用来描述软件应具备哪些功能模块以与这些模块之间的调用关系,用例图图符如表2.1所示。
表2.1uml用例图图符
可视化图符
名称
系统
用例
描述
用来表示系统边界,所有用例放在系统之中
用来表示用例图中的用例
执行者
用于描述与系统功能有关的外部实体,可以是用户,也可以是外部系统
关联
连接执行者和用例
6/72.
.
.
.
通过系统的功能需求分析,可得到系统的执行者为管理员、管理员添加人员和数据库系统,系统的用例为结算管理、酒店基本信息管理、入住管理、房间状态管理、续费管理和退房管理,系统总体用例图如图2.1所示。
结算管理酒店基本信息管理入住管理房间状态管理管理员续费管理操作人员退房管理
图2.1系统总体用例图
结算管理:对酒店当日与按月份的结算信息进行统计计算,如果有必要,还可以打印导出详细信息,为了能更快更准的对账目信息进行查看,可以进行账目信息详细报表,结算管理的用例图如图2.2所示。
结算管理授权管理员当日结算月份统计打印导出
图2.2结算管理用例图
酒店基本信息管理:对酒店中的所有的房间和人员信息进行添加信息、核实并修改现有信息等操作,并且可以查看房间价格信息,如果需要调整房间价格,可以进行总体7/72.
.
.
.
修改,酒店基本信息管理用例图如图2.3所示。
图2.3酒店基本信息管理用例图
入住管理:对前来入住的客户进行统一的登记。可根据要入住的房间类型,填写相应的信息并实现录入数据库。同时相应的房间信息也会跟随改变,并将本次操作的金额存入结算信息表中,以备以后核对账目,入住管理的用例图如图2.4所示。
入住管理授权管理员系统操作员登记信息录入数据
图2.4入住管理用例图
房间状态管理:可以根据选择的房间类型与房间状态信息来分类显示当前符合条件的信息记录,以便登记入住时的房间状态查询之用,房间状态查询用例图如图2.5所示。
8/72.
.
.
.
房间状态查询授权管理员房间状态选择房间类型选择
图2.5房间状态查询用例图
续费管理:可以对已登记入住的客户房间进行续费操作、同时会将记录信息添加到相应的收费报表容里,以便日后核对,续费管理的用例图如图2.6所示。
图2.6续费管理用例图
退房管理:可以已入住房间的基本信息,为了方便用户简化操作,退房时会自动计算用户当前所剩余金额并找零,用户管理的用例图如图2.7所示。
退房管理管理员显示信息退房操作余额计算
图2.7用户管理用例图
2.3.2概念类描述
类图是由若干类关联在一起,反映系统或者子系统组成结构的静态图。类图的建模贯穿工程的分析和设计阶段的始终,通常从商务伙伴能够理解的类开始建模,最终往往成为只有开发小组才能够完全理解的类。
类图是在面向对象的系统模型中使用得最普遍的图。类图包含了一组类、接口和9/72.
.
.
.
协作以与其之间的关系。使用类图来为系统的静态视图建模。通常这包括模型化系统的词汇(从系统的词汇表中发现类),模型化协作,或则模型化模式。类图还是一些相关的图的基础,包括组件图、分布图。
类图的重要性不仅仅体现在为系统建立可视化的、文档化的结构模型,同样重要的是构建通过正向和反向工程建立执行系统。
没有类是单独存在的,类通常和别的类协作,创造比单独工作更大的语义。使用类图来表达这种协作,类图图符如表2.2所示。
表2.2类图图符
可视化图符
名称
类
描述
表示具体的一个类,第一栏为类名,第二栏为类的属性,第三栏为类的方法
一种分组机制,表示一个类图的集合
表示类的对象间的关系,包括聚集关联和组成关联
描述类或包的一般元素与特殊元素之间的分类关系
包
关联
泛化关系
创建类图最好的起点是用例图,根据上面的用例图很容易确定类与其关联、属性和操作。概念类的类图如图2.8所示。
图2.8概念类类图
10/72.
.
.
.
2.3.3行为描述
系统的行为是通过对象的动作来描述的,通常可以通过顺序图来描述对象之间如何进行消息的传递。顺序图是一种动态建模方法。一般用于确认和丰富一个使用情境的逻辑。一个使用情境就是系统潜在的使用方式的描述,也就是它的名称所要描述的。通过观察什么消息被发送给一个对象,以与通过概略的观察运行被调用的方法需要花费多长时间,很快就能了解哪里的设计需要变化,以达到在系统部平衡负荷的目的,uml顺序图图符如表2.3所示。
表2.3uml顺序图图符
可视化图符
名称
带有生命线的对象
激活
消息
返回消息
描述
用于表示顺序图中参与交互的对象
表示在这个时间段,对象处于活动状态
用于表示对象之间传递的消息
用于表示对象之间传递的消息
要绘制系统的顺序图首先要了解系统的过程,根据系统类图中的方法可以获得详细的系统过程,系统管理操作顺序图如图2.9所示。
2.4性能需求
系统的性能是系统的一种非功能特性,它关注的不是系统是否能够完成特定的功能,而是在完成功能时展示出来的与时性。为了能够客观地度量系统的性能,定义了一系列的性能指标,以便于在不同情况下度量系统的性能。
2.4.1响应时间
响应时间是指在操作系统中,用户发出请求或者指令到系统做出反应(响应)的时间。在讨论系统的响应时间时,通常是指系统所有功能的平均响应时间或者所有功能的最大响应时间。对一个系统,其响应时间如果小于1秒应该是不错的,如果达到5秒就完全难以接受了。
2.4.2吞吐量
吞吐量是指在没有帧丢失的情况下,软件能够接受的最大速率。对于无并发的系统而言,吞吐量与响应时间成严格的反比关系,实现上此时吞吐量就是响应时间的倒11/72.
.
.
.
数。由于本系统的响应时间比较短,所以系统的吞吐量比较大。
登陆页酒店管理数据库登录管理员验证正确性可以操作返回错误信息MessageBox创建错误信息销毁查询空余房间查询数据看返回房间状态添加入住记录添加记录错误信息MessageBox创建错误信息销毁返回添加状态退房查询数据库返回执行信息MessageBox创建错误信息销毁图2.9系统管理操作顺序图
12/72.
.
.
.
2.4.3并发用户数
并发用户数是同时执行一个操作的用户,或者是同时执行脚本的用户,这个并发在设置不同场景的时候并发的情况是不一样的,在实际的测试中需要根据具体的需求进行设计。实际上,并发用户数是一个非常不准确的指标,因为用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求。
2.4.4资源利用率
资源利用率反映的是在一段时间资源平均占用的情况。对于数量为1的资源(如CPU),资源利用率可以表示为资源被占用的时间与整段时间的比值;对于数量不为1的资源(如存),资源利用率可以表示为在该段时间平均被占用的资源数与总资源数的比值。
2.5环境需求
2.5.1硬件环境
介于本软件采用的数据库连接方式而定,并不存在C/S,B/S结构,而是单一的操作端,服务端一体化结构,数据库连接方式也是默认为本地,所以本系统操作端的配置如下:
处理器:InterPentium42.4GHz或更高
存:256MB硬盘空间:80GB显卡:GF5200。
因为操作端同时进行数据处理和操作执行,因此需要的配置应该高于下面的配置:
处理器:InterPentium31.6GHz或更高
存:128MB硬盘空间:40GB显卡:MX440。
2.5.2软件环境
操作端要求如下:
操作系统:Windows2000Server或更高版本Windows13/72.
.
.
.
网络协议:TCP/IP系统软件:MicrosoftVisualStudio2005或更高版本
数据库:MircrosoftSQLserver2005应用软件:MicrosoftOffice2003或更高版本
14/72.
.
.
.
3系统设计
3.1系统结构设计
3.1.1软件设计的原则
1.模块化
模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
下面五条标准可以评价一种设计方法定义有效的模块系统的能力。
(1)模块可分解性
如果一种设计方法提供了把问题分解为子问题的系统化机制,它就能降低整个问题的复杂性,从而可以实现一种有效的模块化解决方案。
(2)模块可组装性
如果一种设计方法能把现有的(可重用的)设计构件组装成新系统,它就能提供一种并非一切都从头开始做的模块化解决方案。
(3)模块可理解性
如果可以把一个模块作为一种独立单元(无需参考其他模块)来理解,那么,这样的模块是易于构造和易于修改的。
(4)模块连续性
如果对系统需求的微小修改只导致对个别模块,而不是对整个系统的修改,则修改所引起的副作用将最小。
(5)模块保护性
如果在一个模块出现异常情况时,它的影响局限在该模块部,则由错误引起的副作用将最。
采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。模块化也有助于软件开发工程的组织管理,一个复杂的大型程序可以由许多程序员分工编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的模块。
2.抽象
人类在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。
15/72.
.
.
.
3.逐步求精
逐步求精是人类解决复杂问题时采用的基本技术,是许多软件工程技术的基础。可把逐步求精定义为:“为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。”
求精实际上是细化过程。要从在高抽象级别定义的功能述(或信息描述)开始。求精要求设计者细化原始述,随着每个后续求精(细化)步骤的完成而提供越来越多的细节。
4.信息隐藏
应用模块化原理时,自然会产生的一个问题是:“为了得到最好的一组模块,应该怎样分解软件”。信息隐藏原理指出:应该这样设计和确定模块,使得一个模块包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。
3.1.2系统层次结构
HIPO图是IBM公司发明的“层次图加输人/处理/输出图”的英文缩写。它既可以描述软件总的模块层次结构H图(层次图),又可以描述每个模块输入/输出数据/处理功能与模块调用的详细情况IPO图(也称IPO表)。HIPO图以模块分解的层次性以与模块部输入、处理、输出三大基本部分为基础建立的。
本系统的最顶层的矩形框代表酒店管理系统的主控模块,调用下层模块以完成全部管理功能;第二层的每个模块控制完成系统的一个主要功能,如此实现自顶向下逐步求精,系统的H图如图3.1所示。
荣丰酒店管理系统客房管理1.0房间查询1.1入住登记2.0客户查询1.2续费管理3.0退房管理4.0结算4.1结算管理5.0报表5.1图3.1系统的H图
H图只说明了系统由那些模块组成与其控制层次结构,并未说明模块间的信息传递16/72.
.
.
.
与模块部的处理。因此对一些重要模块还必须根据H图绘制具体的IPO表。用户和管理人员可利用IPO表编写、修改和维护程序。IPO表中包含的附加信息主要有系统名称、图的作者,完成的日期,本图描述的模块的名字,模块在层次图中的编号,调用本模块的模块清单,本模块调用的模块的清单、注释以与本模块使用的局部数据元素等。
房间查询的上层调用模块为客房管理,没有下层模块可调用,房间查询的IPO表如表3.1所示。
表3.1房间查询的IPO表
系统名称:荣丰酒店管理系统
设计者:唐睿
模块名:房间查询
日期:2009-11-20模块编号:1.1上层调用模块:客房管理
下层被调用的模块:无
输入数据:要查询的房间信息
输出数据:查询得到的结果
处理:根据查询的信息判断库中是否有相应的记录,如果有则显示查询的结果
客户查询的上层调用模块为客房管理,没有下层模块可调用,客户查询的IPO表如表3.2所示。
表3.2客户查询的IPO表
系统名称:荣丰酒店管理系统
设计者:唐睿
模块名:客户查询
日期:2009-11-20模块编号:1.2上层调用模块:客房管理
下层被调用的模块:无
输入数据:要查询的客户信息
输出数据:查询得到的结果
处理:判断修改信息的合法性,查询成功后显示查询的结果
3.2设计阶段类图
在系统分析阶段,已经找出了主要的概念类和类的方法、类间的关系。到了系统设计阶段,需要从软件系统的角度来重新设计类图。分析阶段的类到了设计阶段有的可能变成一组类,有的可能消失。
分析阶段的类图主要是用来描述现实世界中的问题;而设计阶段的类图主要是对解决方案进行描述。因此设计阶段的类图描述了软件的系统结构。创建设计类图的过程包括以下几步:
1.识别设计阶段出现的类,为这些类添加属性和方法。
2.建立类间关系,最终完成对属性和方法的细节描述。
系统设计阶段的类图如图3.2所示。
17/72.
.
.
.
图3.2系统设计阶段的类图
3.3数据库设计
3.3.1数据库概念设计
1.EnterUser表:存储操作员的基本信息。
2.Room表:存储酒店客房的基本信息。
3.Customer表:存储入住客户的基本信息。
4.Balance表:存储酒店日常账目的基本信息。
3.3.2数据库逻辑设计
EnterUser表是用来存放操作员的详细信息的数据表,里面存有不同级别的用户,可以在系统中实现不同的功能操作,容如表3.3所示。
表3.3EnterUser表
字段
用户名称
用户密码
用户权限
字段名
UserNameUserPwdUserPower类型
charcharnchar长度
1084允许空
NNN备注
主键
Room表包括房间编号、房间类型、入住日期、退房日期等其他有关房间信息的一切特征信息。由于和很多容相互关联,所以合并为一个数据表,容如表3.4所示。
18/72.
.
.
.
表3.4Room表
字段
房间编号
房间类型
入住日期
到期时间
房间状态
是否含有早餐
房间价格
已付押金
字段名
RIDRTypeRFromDateRToDateRStatusRBreakfastRPriceRDeposit类型
charnchardatetimedatetimencharncharsmallmoneysmallmoney长度
331919311212允许空
NNYYNNNN备注
Customer表是用来存放酒店登记入住客户人员的数据表,也就是当有客人入住本酒店时客人的身份信息将会保存在此表中,而退房离开时自动在此表中消除相应的客户记录,容如表3.5所示。
表3.5Customer表
字段
房间编号
客户
客户性别
客户证件号
字段名
RIDCNameCGendrCID类型
charncharncharchar长度
34118允许空
YYYY备注
Balance表是用来存所有有关金额操作记录的数据表,当用户进行退房,入住,续费等操作时,将会自动保存在该表中,容如表3.6所示。
表3.6Balance表
字段
金额日期
收入金额
支出金额
房间编号
字段名
BDateBEarningBPayoutBRoom类型
datetimesmallmoneysmallmoneychar长度
1912123允许空
NNNN备注
3.4人机界面设计
3.4.1人机界面设计指南
用户界面设计主要依靠设计者的经验。总结众多设计者的经验而得出的设计指南,有助于设计者设计出友好、高效的人机界面。
人机界面的设计过程可分为以下几个步骤:
1.创建系统功能的外部模型设计模型主要是考虑软件的数据结构、总体结构和过程性描述,界面设计一般只作为附属品,只有对用户的情况(包括年龄、性别、心理情况、文化程度、个性、种族背景等)有所了解,才能设计出有效的用户界面;根据终端19/72.
.
.
.
用户对未来系统的假想(简称系统假想)设计用户模型,最终使之与系统实现后得到的系统映象(系统的外部特征)相吻合,用户才能对系统感到满意并能有效的使用它;建立用户模型时要充分考虑系统假想给出的信息,系统映象必须准确地反映系统的语法和语义信息。总之,只有了解用户、了解任务才能设计出好的人机界面。
2.确定为完成此系统功能人和计算机应分别完成的任务
任务分析有两种途径。一种是从实际出发,通过对原有处于手工或半手工状态下的应用系统的剖析,将其映射为在人机界面上执行的一组类似的任务;另一种是通过研究系统的需求规格说明,导出一组与用户模型和系统假想相协调的用户任务。
逐步求精和面向对象分析等技术同样适用于任务分析。逐步求精技术可把任务不断划分为子任务,直至对每个任务的要求都十分清楚;而采用面向对象分析技术可识别出与应用有关的所有客观的对象以与与对象关联的动作。
3.考虑界面设计中的典型问题
设计任何一个机界面,一般必须考虑系统响应时间、用户求助机制、错误信息处理和命令方式四个方面。系统响应时间过长是交互式系统中用户抱怨最多的问题,除了响应时间的绝对长短外,用户对不同命令在响应时间上的差别亦很在意,若过于悬殊用户将难以接受;用户求助机制宜采用集成式,避免叠加式系统导致用户求助某项指南而不得不浏览大量无关信息;错误和警告信息必须选用用户明了、含义准确的术语描述,同时还应尽可能提供一些有关错误恢复的建议。此外,显示出错信息时,若再辅以听觉(铃声)、视觉(专用颜色)刺激,则效果更佳;命令方式最好是菜单与键盘命令并存,供用户选用。
4.借助CASE工具构造界面原型
真正实现设计模型软件模型一旦确定,即可构造一个软件原形,此时仅有用户界面部分,此原形交用户评审,根据反馈意见修改后再交给用户评审,直至与用户模型和系统假想一致为止。一般可借助于用户界面工具箱(Userinterfacetoolkits)或用户界面开发系统(Userinterfacedevelopmentsystems)提供的现成的模块或对象创建各种界面基本成分的工作。
3.4.2用户界面设计
本系统的管理员在使用该系统时,首先要通过管理员登录模块对身份进行验证,当确认和法后可进入系统的主界面。系统主界面要提供包括信息查询、入住与退房、结算、20/72.
.
.
.
报表、酒店基本信息管理、帮助等模块的。每个模块都具有自己的页面和功能,根据人机界面设计指南和模块功能可以设计用户界面。
由于系统的用户界面众多,不可能将所有的用户界面都进行简介,为了能看到直观的用户界面,在此仅以用户主界面、入住登记界面、结算报表等为例,进行简介。
系统管理员通过管理员登录界面输入相应信息,系统对其身份进行验证,验证合法后便可以进入到系统的主界面。系统主界面如图3.3所示。
图3.3系统主界面
在系统的主界面中可以看到信息查询、入住与退房、结算、报表、酒店基本信息管理、帮助等菜单操作界面,入住登记的用户界面如图3.4所示。
图3.4入住登记界面
21/72.
.
.
.
在系统的主界面中可以看到报表模块,在报表模块中可以对结算进行报表操作,结算报表的用户界面如图3.5所示。
图3.5结算报表界面
3.5系统详细设计
程序员根据这个蓝图写出实际的代码。因此,过程设计的结果基本上决定了最终的程序代码的质量。过程设计的任务不是具体地编写程序,而是要设计出程序的“蓝图”,在软件的生命周期中,实际上对于长期使用的软件系统而言,人读程序的时间可能比写程序的时间还要长得多。因此,衡量程序的质量不仅要看它的逻辑是否正确,性能是否满足要求,更主要的是要看它是否容易阅读和理解。过程设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。结构程序设计技术是实现上述目标的关键技术,因此是过程设计的逻辑基础。
PAD是问题分析图(ProblemAnalysisDiagram)的英文缩写,它用二维树形结构的图来表示程序的控制流,是一种用结构化程序设计思想表现程序逻辑结构的图形工具,将这种图翻译成程序代码比较容易。
PAD图的主要优点如下:
(1)使用表示结构化控制的PAD符号所设计出来的程序必然是结构化程序。
(2)PAD图描述的程序结构十分清晰。
图中最左面的竖线是程序的主线,即第一层结构。随着程序层次增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线,PAD图中竖线的总条数就是程序22/72.
.
.
.
的层次数。
(3)用PAD图表现程序逻辑易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖线上端的结点开始执行,自上而下,从左到右顺序执行,遍历所有结点。
(4)有利于提高软件的可靠性和软件生产率。容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可以省去人工编码的工作,有利于提高软件的可靠性和软件生产率。
(5)既可用于表示程序逻辑,也可用于描述数据结构。
(6)PAD图的符号支持自顶向下、逐步求精方法的使用。
开始设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计。
本系统的功能模块有客房查询查询、入住登记、退房管理、每日结算、结算报表、客户查询、房间基本信息管理、价格调整等。每一个模块又包含有自己的子模块,并具有其相应的功能。由于系统的功能模块众多,在此不能对每个模块都设计其PAD图,所以仅以入住登记操作、房间查询操作、退房管理操作的PAD图来进行说明。
3.5.1入住登记PAD图
用户经过登录模块验证成功后可以进行入住登记模块操作,在用户进行入住登记时要输入正确的房间的信息,系统对库存中的记录进行遍历,查询正确后才能进行入住登记的操作入住登记的E-R图如图3.6所示。
输入房间名查询
While(True)查询是否存在
提示信息有误
登记信息
登记
返回主窗体
图3.6入住登记PAD图
23/72.
.
.
.
3.5.2房间查询PAD图
用户进行房间查询操作时,首先要填写相应的查询条件信息,系统会根据调选择的条件来筛选数据表中符合条件的记录显示,房间查询的PAD图如图3.7所示。
输入查询条件
While(True)查询是否存在
提示信息不存在
记录存在
查询显示
继续查询或其它操作
图3.7房间查询用PAD图
3.5.3退房管理PAD图
用户进行退房操作时,首先要验证房间信息是否为“已入住”,如果为真的话,将执行退房操作并计算找零功能,退房操作的PAD图如图3.8所示。
输入房间号查询
While(True)查询是否已住
提示信息有误
显示
退房并找零
返回主界面
图3.8退房管理PAD图
24/72.
.
.
.
4系统实现
4.1语言选择原因
本系统在实现系统功能时使用的是C#语言。C#语言具有许多先进的特性,也正是因为其有这些特性所以才选择用C#语言来开发本系统,C#的特点如下:
1.简洁的语法
在缺省的情况下,C#的代码在.NET框架提供的“可操纵”环境下运行,不允许直接地存操作。它所带来的最大的特色是没有了指针。与此相关的是,那些在C++中被疯狂使用的操作符(例如:“::”、“->”和“.,”)已经不再出现。C#只支持一个“.”,对于我们来说,现在需要理解的一切仅仅是名字的嵌套而已。
C#用真正的关键字换掉了那些把活动模板库(ActiveTemplateLibrary,ALT)和COM搞得乱糟糟的伪关键字,如OLE_COLOR、BOOL、VARIANT_BOOL、DISPID_XXXXX等等。每种C#操作符在.NET类库中都有了新名字。
语法中的冗余是C++中的常见的问题,比如"const"和"#define"、各种各样的字符类型等等。C#对此进行了简化,只保留了常见的形式,而别的冗余形式从它的语法结构中被清除了出去。
2.精心地面向对象设计
C#具有面向对象的语言所应有的一切特性:封装、继承与多态性,这并不出奇。然而,通过精心地面向对象设计,从高级商业对象到系统级应用,C#建造广泛组件的绝对选择。
在C#的类型系统中,每种类型都可以看作一个对象。C#提供了一个叫做装箱(boxing)与拆箱(unboxing)的机制来完成这种操作,而不给使用者带来麻烦,这在以后的章节中将进行更为详细的介绍。
C#只允许单继承,即一个类不会有多个基类,从而避免了类型定义的混乱。在后面的学习中很快会发现,C#中没有了全局函数,没有了全局变量,也没有了全局常数。一切的一切,都必须封装在一个类之中。代码将具有更好的可读性,并且减少了发生命名冲突的可能。
整个C#的类模型是建立在.NET虚拟对象系统(VisualObjectSystem,VOS)的基础之上,其对象模型是.NET基础架构的一部分,而不再是其本身的组成部分。在下面将会25/72.
.
.
.
谈到,这样做的另一个好处是兼容性。
借助于从VB中得来的丰富的RAD经验,C#具备了良好的开发环境。结合自身强大的面向对象功能,C#使得开发人员的生产效率得到极大的提高。对于公司而言,软件开发周期的缩短将能使它们更好应付网络经济的竞争。在功能与效率的杠杆上人们终于找到了支点。
3.与Web的紧密结合
.NET中新的应用程序开发模型意味着越来越多的解决方案需要与Web标准相统一,例如超文本标记语言(HypertextMarkupLanguage,HTML)和XML。由于历史的原因,现存的一些开发工具不能与Web紧密地结合。SOAP的使用使得C#克服了这一缺陷,大规模深层次的分布式开发从此成为可能。
由于有了Web服务框架的帮助,对程序员来说,网络服务看起来就象是C#的本地对象。程序员们能够利用他们已有的面向对象的知识与技巧开发Web服务。仅需要使用简单的C#语言结构,C#组件将能够方便地为Web服务,并允许它们通过Internet被运行在任何操作系统上的任何语言所调用。举个例子,XML已经成为网络中数据结构传递的标准,为了提高效率,C#允许直接将XML数据映射成为结构。这样就可以有效的处理各种数据。
4.完整的安全性与错误处理
语言的安全性与错误处理能力,是衡量一种语言是否优秀的重要依据。任何人都会犯错误,即使是最熟练的程序员也不例外:忘记变量的初始化,对不属于自己管理围的存空间进行修改。这些错误常常产生难以预见的后果。一旦这样的软件被投入使用,寻找与改正这些简单错误的代价将会是让人无法承受的。C#的先进设计思想可以消除软件开发中的许多常见错误,并提供了包括类型安全在的完整的安全性能。为了减少开发中的错误,C#会帮助开发者通过更少的代码完成一样的功能,这不但减轻了编程人员的工作量,同时更有效地避免了错误的发生。
.NET运行库提供了代码访问安全特性,它允许管理员和用户根据代码的ID来配置安全等级。在缺省情况下,从Internet和Intranet下载的代码都不允许访问任何本地文件和资源。比方说,一个在网络上的共享目录中运行的程序,如果它要访问本地的一些资源,那么异常将被触发,它将会无情地被异常扔出去,若拷贝到本地硬盘上运行则一切正常。存管理中的垃圾收集机制减轻了开发人员对存管理的负担。.NET平台提供的垃圾收集器(GarbageCollection,GC)将负责资源的释放与对象撤销时的存清理工作。
26/72.
.
.
.
变量是类型安全的。C#中不能使用未初始化的变量,对象的成员变量由编译器负责将其置为零,当局部变量未经初始化而被使用时,编译器将做出提醒;C#不支持不安全的指向,不能将整数指向引用类型,例如对象,当进行下行指向时,C#将自动验证指向的有效性;C#中提供了边界检查与溢出检查功能。
5.版本处理技术
C#提供置的版本支持来减少开发费用,使用C#将会使开发人员更加轻易地开发和维护各种商业用户。
升级软件系统中的组件(模块)是一件容易产生错误的工作。在代码修改过程中可能对现存的软件产生影响,很有可能导致程序的崩溃。为了帮助开发人员处理这些问题,C#在语言中置了版本控制功能。例如:函数重载必须被显式声明,而不会象在C++或java中经常发生的那样不经意地被进行,这可以防止代码级错误和保留版本化的特性。另一个相关的特性是接口和接口继承的支持。这些特性可以保证复杂的软件可以被方便地开发和升级。
6.灵活性和兼容性
在简化语法的同时,C#并没有失去灵活性。尽管它不是一种无限制语言,比如:它不能用来开发硬件驱动程序,在默认的状态下没有指针等等,但是,在学习过程中将发现,它仍然是那样的灵巧。
如果需要,C#允许将某些类或者类的某些方法声明为非安全的。这样一来,将能够使用指针、结构和静态数组,并且调用这些非安全代码不会带来任何其它的问题。此外,它还提供了一个另外的东西(这样的称呼多少有些不敬)来模拟指针的功能--delegates,代表。再举一个例子:C#不支持类的多继承,但是通过对接口的继承,将获得这一功能。
4.2软件开发环境
软件开发环境(SoftwareDevelopmentEnvironment)是指在基本硬件和宿主软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE。它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护与管理提供统一的支持。
开发本系统所用的软件工具集合为,C#中的播放插件、SQLServer数据库开发工具、27/72.
.
.
.
PhotoShop图片处理工具等。
4.3系统功能实现
4.3.1管理员登录
在管理员登录中,主要实现的是对管理员合法性的验证。管理员在此输入其、证件号并通过软键盘输入密码,经过与后台数据库中的记录进行相应的对比确定其为合法用户,管理员才得到进入系统的权限,如图4.1所示:
图4.1管理员登录界面
功能实现:
1.由于用户在登录系统时,可能会有某些信息忘记输入,这时可能会出现错误。本系统通过获取用户信息框中的信息并进行判断,如果有未输入的信息,则会警告用户并提示用户将信息输入完整。
2.对于用户名的验证,要求必须是长度小于十位。通过设置输入框的属性并编写相应的代码来实现当用户输入的数据不足一位、超过十位或输入的是非数字都会提示相应的错误信息。
4.3.2空余房间查询
在这个功能模块中,操作员可以对房间的基本信息进行分类查看。以便对用户登记入住时的房型选择提供帮助,以未入住双人间查询为例,如图4.2所示。
28/72.
.
.
.
图4.2房间信息查询界面
功能实现:
1.房间的信息记录可能会有很多条,为了方便用户对信息进行查看,设置了分类显示的功能。通过设置comboBox的属性值来触发其SelectedIndexChanged的事件发生,从而实现数据库的动态显示,房间类型的值为comboBox2的容、房间状态的值为comboBox1的容,dataGridView里的容则是满足以上两种条件的房间记录容。
2.当数据库中的信息没有同时满足两种条件的记录时,dataGridView里的容为空。
4.3.3客户查询
客户查询模块主要是实现对已入住的客户信息进行查询模块。在这个管理模块中操作员可以提供已入住客户的或信息来进行客户基本信息的查询显示,以信息查询为例,如图4.3所示。
29/72.
.
.
.
图4.3客户信息查询界面
功能实现:
1.当查询客户信息时,系统将会查询Customer表中的数据,满足条件的记录将会显示在客户信息栏中。否则将会提示“未找到入住客户信息”。通过对“查询”按钮的代码编写,来实现对输入数据的正确性判定,如果输入非法信息,系统将会提示更正操作。
2.在非法输入判断中,将会有的长度判定,信息的长度,字符判定。
4.3.4入住登记
入住登记调用在酒店管理系统中是十分重要的环节,是作为酒店外部信息来源的唯一入口。在入住登记时,通过对操作员如入的房间号来判定房间类型,调用房间信息来实现一定的智能判定,例如入住人数,金额等。同时本次操作的记录将分别保存到Room,Customer,Balance表中,具体操作,如图4.4所示。
30/72.
.
.
.
图4.4入住登记界面
功能实现:
1.当操作员在房间查询界面中确定了客户选择的房间编号后,在入住登记界面中房间编号项里填写房间编号,当输入信息时就会触发房间编号textBox的TextChanged事件,输入的信息正确时,根据房间所属类型来相应的打开客户信息窗口,以供操作员完整的输入入住登记信息。
2.房间编号信息将会判定输入的信息是否合法,输入长度的限定,是否有记录存在。客户信息将会判定客户的长度,信息的合法性。注入天数的判定为整数并且大于0。房间押金的判定为逻辑计算公式,来判定房间价格乘以天数是否小于押金额度。
4.3.5退房操作
当用户退房离开时,操作员可以根据其房间号信息来进行结算与现金返还。如图4.5所示。
31/72.
.
.
.
图4.5退房操作界面
功能实现:
1.当用户输入正确的房间号后,系统将自动在退房操作区中显示当前房间信息以便操作员进行确认,在和客户核对确认无误后,执行退房操作,提示操作员找零功能。
2.当操作员在输入房间号信息时,系统将会触发textBox的TextChanged事件发生,执行其中代码,来验证房间号信息的正确性,如果信息输入非法,将会不执行任何操作,如果房间号所指向的信息标记为“未入住”,将会提示操作员从新输入信息,当输入的信息正确时,将会读出数据表中相应记录的信息填写在“退房操作”信息区中以供核对。当操作员点击“确定”按钮时,会自动结算入住日期到当前系统日期的时间段应付的房租,与押金金额进行差运算,调用系统MessageBox的Show属性提示操作员找零。
4.3.6今日结算
今日结算管理中可以获取到操作在当今日期中所执行的一切有关金额操作的记录选项,并相应的统计出当天的收入,支出与盈利的状况,如图4.6所示。
32/72.
.
.
.
图4.6今日结算界面
功能实现:
1.当用户执行“今日结算”操作时,系统将会提供给用户一个直观的数据表,来显示当天的营业额,同时计算出收入,支出与盈利金额。
2.“今日结算”窗体中的代码全部写在窗体的Load中,窗体生成时将会自动执行,通过DateTime函数的Now方法来获取当前日期,同过数据库查询语句来获取相应满足当前系统日期的记录保存DataTable中,然后绑定到dataGridView中显示,通过遍历DataTable中特定的数据来统计处收入,支出与盈利的数据并显示在textBox中。
4.3.7结算报表
由于本系统应用于酒店行业中,账目的统计和保存打印是十分重要的。在结算报表模块中可以实现账目的分类查看,打印的功能。具体操作方式,如图4.7所示。
33/72.
.
.
.
图4.7结算报表界面
功能实现:
1.当操作员执行“结算报表”时,在窗体中显示出所有账目信息数据,操作员可以通过选择月份来分类显示具体月份账目信息,如果有需要,操作员可以将数据表导出至Excel中用来保存数据和转移、打印。
2.当操作员执行窗体时,加载窗体Load中的代码,将Balance表中所有的数据显示到dataGridView中。在窗体上方toolStrip工具栏中的toolStripComboBox中可以选择相应的月份,操作员执行选择月份操作时,改变toolStripComboBox中的Text属性值,触发其SelectedIndexChanged事件发生并执行其中的代码指令来更新dataGridView中的数据实现了数据动态更新功能。“打印”操作是将数据表中的数据导入到Excel中,窗体添加引用.NET的Microsoft.Office.Interop.Excel组件后才可以引用Excel=Microsoft.Office.Interop.Excel中的函数,实现数据表的“打印”功能。
4.3.8酒店基本信息管理
酒店基本信息管理模块中是对酒店的部基本信息的调整,当酒店的部信息发生变化时,可通过其对酒店房间的信息,房间价格,用户权限的修改,操作员用户的添加等功能,如图4.8所示。
34/72.
.
.
.
图4.8酒店基本信息界面
功能实现:
1.当操作员进行“房间信息管理”时,通过双击下面的数据表中的数据读入到“房间信息管理”区,进行修改。“权限用户管理”是相对简单的操作,其中是对操作员信息的添加,修改操作,相对简单的逻辑验证以确保程序的完整性,“价格调整”操作可以实现酒店在节假日期间进行统一的价格调整,调整的方法是按照房间类型划分的。
2.当操作员打开“房间信息管理”窗体时,加载窗体Load中的代码实现Room表中的全部数据加载到dataGridView中操作,当用户选定信息双击时,触发dataGridView的CellContentClick事件发生,执行其中的代码,将选定的数据行信息显示到“房间信息管理”区中的textBox中,同时将dataGridView的Enabled属性调整为false以实现锁定功能,修改完成后单击“确定”按钮后将数据从新写入数据表中,同时更新dataGridView中的信息和还原其状态。以便再次修改其他记录。“权限用户管理”的功能主要是执行数据库的添加,查询,修改操作,并以代码的方式来实现逻辑验证。“价格调整”是通过定义一个public“价格”类,在其中定义4个public权限的static静态的double类型数据,分别代表不同的房间类型,以实现信息修改的保存化,当用户修改完成后,信息写入“价格”类同时更新Room表中的数据信息以实现同步化。
35/72.
.
.
.
5软件测试
5.1测试计划的制定
软件测试是软件质量管理中最实际的行动。软件测试是有组织性、步骤性和计划性的。由于软件测试有不同的种类与项目,为了方便管理,通常会将一样类型的测试项目归纳在一起,而这个动作就是测试的组织性,如性能测试、功能测试等,这是将测试性质一样的项目组织而形成的。而按照测试用例所执行的测试行为,就是测试的步骤性。必须参考测试计划才能设计出符合软件需求的测试用例。
5.1.1调试计划的整体目标
调试计划的整体目标是为确定测试的任务、所需的各种资源和投入,预见可能出现的问题和风险,以指导测试的执行,最终实现测试的目标。
(1)为测试各项活动制定一个现实可行的、综合的计划,包括每项测试活动的对象、围、方法、进度和预期结果。
(2)为项目实施建立组织模型,并定义测试项目中每个角色的责任与工作容。
(3)开发有效的测试模型,能正确地验证正在开发的软件系统。
(4)确定测试所需的时间和资源,以保证其可获得性和有效性。
(5)确立每个测试阶段的测试完成与测试成功的标准和实现的目标。
5.1.2定义软件测试的标准
为了保证测试工作能按计划执行,必须确认测试在满足什么外部条件下才能开始。这就是要在测试计划中定义软件测试项目的输入标准,然后定义测试项目的输出标准。
5.1.3测试实施策略的制定
测试策略描述当前测试项目的目标和所采用的测试方法。这个目标不是测试计划的目标,而是针对某个应用软件系统或程序、具体的测试项目要达到的预期结果,包括在规定的时间哪些测试容要完成、软件产品的特性或质量在哪些方面得到确认。
测试策略还要描述测试不同阶段的测试对象、围和方法以与每个阶段要进行的测试类型。
36/72.
.
.
.
5.1.4软件测试管理流程
软件开发流程以QA测试的观点分成两大部分:ConstructionTesting部分与SystemTesting部分。在ConstructionTesting的阶段的初期,要开始准备QA的人力资源与人员训练。因为有一些软件需求可能会采取新的技术或观念,所以这个时候就可以针对这个项目进行专业训练,同时一些需要准备的软硬件设施也可以开始着手进行。在这个阶段所进行的测试属于结构测试,通常是由开发人员进行的,也有一些软件公司会指派测试人员协助测试。这个阶段要准备编写测试计划,同时也要开始准备设计测试用例。另外,在接近尾声的时候,就要将系统测试所需要的测试环境配置完成。
5.1.5测试计划的要点
(1)目标和围:包括产品特性、质量目标、各个阶段的测试对象、目标围。
(2)项目估算:根据历史数据和采用恰当的评估技术,对测试工作量、所需资源做出合理估算。
(3)风险计划:测试可能存在的风险分析、识别以与风险的回避监控和管理。
(4)日程:项目工作分解结构,并采用时限图、甘特图等方法制定时间和资源表。
(5)项目资源:人员、硬件和软件等资源的组织和分配,人力资源是重点,而且和日程安排联系紧密。
(6)跟踪和控制机制:质量保证和控制、变更管理和控制。
5.2测试的基础
5.2.1测试的目标
在软件生存周期的每个阶段都不可避免地会产生错误。力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正错误。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。
5.2.2白盒测试和黑盒测试
测试任何产品都有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品部工作过程,可以通过测试来检验产品部动作是否按照规格说明书的规定正常进行。前一个方法称为黑盒测试,后一个方法37/72.
.
.
.
称为白盒测试。
对于软件测试而言,黑盒测试法把程序看成一个黑盒子,完全不考虑程序的部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如,数据库或文件)的完整性。黑盒测试又称为功能测试。与黑盒测试法相反,白盒测试法的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。白盒测试又称为结构测试。
5.2.3测试的准则
为了能设计出有效的测试方案,软件工程师必须充分理解并正确运用指导软件测试的基本准则。主要的测试准则如下所述。
(1)所有的测试都应该能追溯到用户需求。正如前面讲过的,软件测试的自标是发现错误。从用户角度看,最严重的错误是导致程序不能满足用户需求的那些错误。
(2)应该在测试开始之前的相当长时间,就制定出测试计划。一旦完成了需求模型就可以着手制定测试计划,在确定了设计模型之后就可以立即开始设计详细的测试方案。因此,在编码之前就可以对所有测试工作进行计划和设计。
(3)把Pareto原理应用于软件测试。Pareto原理指出,测试发现的错误中的80%很可能是由程序中20%的模块造成的。当然,问题是怎样找出这些可疑的模块并彻底地测试它们。
(4)测试应该从“小规模”开始,并逐步进行“大规模”测试。通常,首先重点测试单个程序模块,进一步的测试重点转向在集成的模块簇中寻找错误,最后在整个系统中寻找错误。
(5)穷举测试是不可能的。所谓穷举测试就是把程序所有可能的执行路径都检查遍的测试。即使是一个中等规模的程序,其路径排列数也是非常大的,由于受时间、人力和资源的限制,在测试过程中不可能执行路径的每一种组合。这就表明,测试只能证明程序中有错误,不能证明程序中没有错误。但是,通过精心设计测试方案,有可能充分覆盖程序逻辑并确保把过程设计中使用的所有条件都检查一遍。
(6)为了达到最佳的测试效果,应该由独立的第三方来从事测试工作。所谓“最佳效果”是指具有最大可能性发现错误的测试(这是测试的基本目标)。软件系统的软38/72.
.
.
.
件工程师并不是完成全部软件测试工作的最佳人选(通常由其主要承担模块测试工作)。
5.3测试用例设计
5.3.1等价类测试用例设计
验证管理员的规格说明
在荣丰酒店管理系统中对管理员的信息的规定:“用户名可以是任意数字、字母或汉字的组合,长度为1-10个字符或2-5个汉字。密码可以为字符和数字的组合,长度要求为1-8个字符”。
用等价类划分的方法得到上述规格说明的要求,建立输入等价类表格。
表5.1用户名等价类表
输入条件
用户名组成
用户名字符个数
用户名汉字个数
有效等价类
无效等价类
数字(1),字母(2),汉字(3)
非数字、字母或汉字(4)
1-10个(5)
0个(6),>10个(7)
2-5个(8)
<2个(9),>5个(10)
下面选取了6个测试用例,其中前两个覆盖了所有的有效等价类,其他的覆盖了4个无效等价类。
输入:adm123}覆盖(1),(2),(5)等价类
输入:唐睿}覆盖(3),(8)等价类
输入:tr*¥}用户名有非法字符,覆盖(4)等价类
输入:空}用户名为0个字符,覆盖(6),(9)等价类
输入:adminstr4233}用户名多于10个字符,覆盖(7)等价类
输入:那么爱你为什么}用户名多于5个汉字,覆盖(10)等价类
表5.2密码等价类表
输入条件
密码组成
密码字符个数
有效等价类
数字(1)字母(2)
1-8个(4)
无效等价类
非数字或字母(3)
0个(5),>8个(6)
下面选取了4个测试用例,其中第一个覆盖了所有的有效等价类,其他的覆盖了3个无效等价类。
输入:admin}覆盖(1),(2),(4)等价类
输入:ss#s1&}密码有非法字符,覆盖(3)等价类
输入:空}密码为0个字符,覆盖(5)等价类
39/72.
.
.
.
输入:34a5s2swq6dd}密码多于8个字符,覆盖(6)等价类
5.3.2边界值测试用例设计
入住登记的规格说明
入住登记的输入文件由客户入住信息组成,选择其中重要信息组成如下的几组:
(1)房间号。这是客户入住房间的名称,为3个数字组成。
(2)客户。客户没有特定的限制,不超出8个字符。
(3)入住押金。输入的押金金额必须为数值型数字,通过逻辑验证必须是大于入住天数和房间价格的乘积。
根据输入条件和边界条件所选择的测试用例,如表5.3所示。
表5.3入住登记的测试用例
输入条件
房间号
测试用例
没有房间号记录
房间号只有1个字符
房间号有4个字符
房间号只有1个汉字
房间号有2个汉字
没有客户记录
客户只有1个字符
客户有10个字符
客户只有1个汉字
客户有5个汉字
没有入住押金记录
入住押金为数据1000入住押金为4个字符
入住押金为1个汉字
客户
入住押金
5.3.3功能图法测试用例设计
管理员查询某个房间信息的功能图,如图5.1所示。其规格说明如下。
40/72.
.
.
.
图5.1房间查询功能图
其规格说明如下。
(1)初始时要求管理员进行登录。
(2)进入登录界面后要求管理员输入其基本信息。
(3)后台数据库对管理员的信息进行比对。若一样,则可以入系统进行查询操作;若不同,要求管理员再次输入信息。
(4)管理员输入要查询房间的信息后,后台数据库检查表中是否有与其对应的记录,若没有则要求管理员重新输入查询信息;否则显示相应的查询结果。
根据功能图和规格说明,设计出了测试用例,如图5.2所示。
41/72.
.
.
.
测试用例1S0S0测试用例2(管理员登录)(管理员登录)S1(管理员信息不正确)S1(管理员信息正确)S1(管理员信息正确)S2(查询到房间信息)S2(查询到房间信息)S3(显示查询结果)S3(显示查询结果)测试用例3S0(管理员登录)S1(管理员信息正确)S2(未查询到房间信息)S2(查询到房间信息)S3(显示查询结果)
图5.2房间查询测试用例
5.4软件可靠性
5.4.1基本定义
1.软件可靠性的定义
1983年美国IEEE计算机学会对“软件可靠性”作出了明确定义,此后该定义被美国标准化研究所接受为国家标准,1989年我国也接受该定义为国家标准。该定义包括两方面的含义:
42/72.
.
.
.
(1)在规定的条件下,在规定的时间,软件不引起系统失效的概率;
(2)在规定的时间周期,在所述条件下程序执行所要求的功能的能力;
其中的概率是系统输入和系统使用的函数,也是软件中存在的故障的函数,系统输入将确定是否会遇到已存在的故障(如果故障存在的话)。
2.软件的可用性
通常用户也很关注软件系统可以使用的程度。一般来说,对于任何其故障是可以修复的系统,都应该同时使用可靠性和可用性衡量它的优劣程度。
软件可用性的一个定义是:
软件可用性是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。
可靠性和可用性之间的主要差别是可靠性意味着在0到t这段时间间隔系统没有失效,而可用性只意味着在时刻t,系统是正常运行的。因此,如果在时刻t系统是可用的,则有下述种种可能:在0到t这段时间,系统一直没失效(可靠);在这段时间失效了一次,但是又修复了;在这段时间失效了两次修复了两次如此反复进行。
如果在一段时间,软件系统故障停机时间分别为td1,td2…,正常运行时间分别为:tu1,tu2….,则系统的稳态可用性,如式(5.1)所示。
Ass=Tup/(Tup+Tdown)(5.1)
Tup为成功运行的时间总和;Tdown为失败的时间总和。
如果引人系统平均无故障时间MTTF和平均维修时间MTTR的概念,则(5.1)式将会改变,如式(5.2)所示。
Ass=MTTF/(MTTF+MTTR)(5.2)
平均维修时间MTTR的是修复一个故障平均需要用的时间,它取决于维护人员的技术水平和对系统的熟悉程度,也和系统的可维护性有重要关系。平均无故障时间MTTF是系统按规格说明书规定成功地运行的平均时间,它主要取决于系统中潜伏的错误的数目,因此和测试的关系十分密切。
5.4.2估算平均无故障时间的方法
软件的平均无故障时间MTTF是一个重要的质量指标,往往作为对软件的一项要求,由用户提出来。为了估算MTTF,首先引入一些有关的量。
在估算MTTF的过程中使用下述符号表示有关的数量:
ET——————测试之前程序中错误总数;
43/72.
.
.
.
IT——————程序长度(机器指令总数);
?————————测试(包括调试)时间;
Ed(?)——————在0至?期间发现的错误数;
Ec(?)————在0至?期间改正的错误数;
经验表明,平均无故障时间与单位长度程序中剩余的错误数成反比,如式(5.3)所示。
MTTF=1/(K*(Et/It-Ec/It))(5.3)其中K为常数,它的值应该根据经验选取。美国的一些统计数字表明,K的典型值是200。估算平均无故障时间的公式,可以评价软件测试的进展情况。
5.4.3MTTF和ASS的估算
对酒店管理系统进行为期10天的集成测试,平均每天测试2个小时。在测试期间记录了数据如下:
(1)在测试之前程序存在20条错误。
(2)程序中指令的长度为24000行。
(3)测试了10天每天2个小时共20小时,期间维护了5次共花费5小时。
(4)在测试期间发现并改正了18条错误。
综合上述测试数据,根据式5.1可计算系统的稳态可用性。
Ass=Tup/(Tup+Tdown)=20/(20+5)=0.8根据式5.3可计算系统的平均无故障工件时间。
MTTF=1/(200*(20/24000-18/24000))=60小时
44/72.
.
.
.
结
论
本系统功能基本符合酒店管理的需求,管理员能够实现对酒店基本信息修改、结算等操作,而操作员登录后也可实现房间查询、入住退房等操作。数据库可以根据用户的操作自动更新,确保数据的一致性,提高工作效率,实现了中小型企业酒店日常的基本操作辅助任务。
本系统通过使用C#.NET进行编程,与Windows系列操作系统有良好的兼容性,通过调用系统自带dataGridView控件来绑定数据库,实现添加、删除、查询、更新数据库等操作,保证了良好的稳定性和安全性。系统窗体调用为Windows应用窗体调用,系统本身安全性更优越于C/S结构系统。
本系统很多地方还存在不足。比如订房模块,费统计,客房服务,支票结账,信用卡消费,客户信息网络验证,叫早服务,消费项等模块并没有实现,还需要进一步的完善。还有对于论文中涉与到的一些知识点了解不够多,这些都有待进一步加强。
45/72
推荐访问:酒店管理毕业设计 酒店管理系统毕业设计 毕业设计 酒店管理系统