您的当前位置:首页正文

酒店客房管理系统毕业设计论文

2024-04-21 来源:独旅网


目录

第1章 绪 论 ...................................................... 2

1.1 选题背景 ............................................................. 2

1.2 选题意义 ............................................................. 2 1.3 总体目标 ............................................................. 3

第2章 编程工具介绍 ....................................................... 3 第3章 系统简介 ........................................................... 4

4.1数据库概念结构设计 ................................................... 7 4.2 数据库逻辑结构设计 ................................................... 9 4.3 数据库结构的实现 .................................................... 10

第5章 宾馆客房管理系统分析 ............................................. 10

5.1 系统的初步调查 ...................................................... 10 5.2 系统的可行性分析 .................................................... 11

5.2.1技术可行性 .................................................... 11 5.2.2 经济可行性 .................................................... 12 5.2.3 管理可行性 .................................................... 12 5.3业务流程分析 ........................................................ 12 5.4 数据流程分析 ........................................................ 14

§5.4.1 数据字典 .................................................... 14

第6章 宾馆客房管理系统详细设计 ........................................ 18

6.1 系统运行环境 ........................................................ 18 6.2 系统详细说明 ........................................................ 19

6.2.1 系统登录 ...................................................... 19 6.2.2.宾客入住 ...................................................... 21 6.2.2.查询 .......................................................... 27

第7章 系统测试 ......................................................... 31

7.1测试的目的 .......................................................... 31 7.2 测试步骤 ............................................................ 32 7.3 测试方法 ............................................................ 32 7.4 小结 ................................................................ 33

第8章 开发设计总结 ..................................................... 33

8.1 工作小结 ............................................................ 33 8.2 系统展望 ............................................................ 34 8.3结束语 .............................................................. 35

参考文献 .................................................................. 35

1

第1章 绪 论

随着社会经济的发展,人们对生活质量的要求越来越高,作为服务之一的宾馆业也在不断的完善服务体制。它是集餐饮、住宿、娱乐于一体的立体化服务体系,其中顾客可以随意消费并统一结账;宾馆管理者可及时了解宾馆的全部运营情况及经营走势,找出运转成本,作为经营决策的依据。只有运用先进的科学管理手段,利用计算机管理系统才能更好实现这一管理模式。[1] §1.1 选题背景

近年来,宾馆业迅猛发展,市场的竞争日趋激烈,全面提高宾馆的软件管理水准,已成为宾馆业发展的当务之急。尤其是对于星级宾馆,既需要完成前台的一些服务工作,还需要完成后台的管理工作。然而,传统的人工管理模式已经远远不能满足有效、快捷地处理经营中产生的大量信息数据的需要,从而使得企业决策层无法及时、准确地掌握一线资料,继而影响对市场进行正确地分析和预测。像沿海城市三星级以上宾馆引进外方管理,使小部分宾馆管理水准几乎接近或达到国际水平。但对占80%以上的广大中小型宾馆来说,是难以做到的。因此,欲在竞争中甩开对手,取得优势,必须在经营、管理、产品、服务等方面具备独到之处。而对宾馆的经营状况起决定作用的是客房的管理。简单的服务标准已不是制胜的锦囊,只有管理做到最细微之处,才能让顾客体会到宾馆服务的高标准、高质量,而准确、快速、周全往往就是最基本的成功要素。

传统的管理方法已经不能适应现代社会的需要,因此采用电脑管理业务、财务等诸多环节已成为推动宾馆业迅速发展的先决条件,宾馆客房管理信息系统是各大中小型宾馆所需要使用的一个管理系统。 §1.2 选题意义

在飞速发展的信息时代,信息已经成为所有企业的关键资源。宾馆客房管理信息系统是用来收集、处理、存贮和传播客房、顾客、结算信息,以信息管理为核心的计算机应用系统。利用宾馆客房管理信息系统中合理的数据库结构来保存数据信息,及时了解各个环节中信息的变更,通过有效的程序结构来支持各种数据操作的执行,以提高管理效率,实现宾馆服务的系统化、规范化、自动化。通

2

过该项目的开发与使用,宾馆可以改善宾馆酒店的管理与运行效率,提高服务质量,节约开支,提高劳动生产率。[2]从而赢得高信誉、强实力、好效益! §1.3 总体目标

建立一套功能完善的管理信息系统,既能满足业务人员日常处理的需要,增强企业经营全过程的数字化管理水平;又能满足管理人员决策分析的需要,提高公司管理层对公司经营反馈信息的响应速度。从而大幅度提高工作效率,提高实施管理的准确性、科学性,使担负管理的工作人员从繁杂的手工劳作中解脱出来。

﹡快速实现客人入住登记和账务处理,减少客人住店及离店时的等待时间 ﹡准确实现客人预订入住的要求,实现有效及有保障的前台系统作业 ﹡快速响应住宿客人的有关项目查询要求

﹡实现入住、消费、结账一条龙服务,方便客人在店内的各类消费要求

第2章 编程工具介绍

随着多媒体技术和图形图像技术的不断发展,可视化技术得到广泛重视,越来越多的计算机专业人员和非专业人员开始研究并应用可视化技术。Visual C++是一个很好的可视化编程工具,使用VC++ 环境来开发Windows 应用程序大大缩短了开发时间,而且它的界面更友好,便于程序员操作。Visual C++自诞生以来一直是Windows环境下最重要的应用开发系统之一。

VC++不仅是C++语言的集成开发环境,而且与Win32紧密相连,所以,利用Visual C++可以完成各种各样的应用程序的开发,从底层软件到上层直接面向用户的软件。而且,Visual C++强大的调试功能也为大型复杂的软件的开发提供了有效的排错手段。

利用VC++开发数据库:

Visual C++6.0提供了多种多样的数据库访问技术——ODBC API、MFC ODBC、DAO、OLE DB、ADO等。这些技术各有自己的特点,但都提供了简单、灵活、访问速度快、可扩展性好的开发技术。

1.简单性

Visual C++6.0中提供了MFC类库、ATL模板类以及AppWizard、ClassWizard等一系列的Wizard工具,用于帮助程序员快速的建立应用程序,大大简化了应用程序的设计过程。使用这些技术,只需编写很少的代码或不需编写代码就可以开发一个数据库应用程序。

2.灵活性

3

Visual C++6.0提供的开发环境可以使程序员根据自己的设计需要设计界面和功能,Visual C++6.0还提供了丰富的类库和方法,程序员可以根据应用程序的特点进行选择。

3.访问速度快

为了解决ODBC开发的数据库应用程序访问速度慢的问题,Visual C++6.0提供了新的访问技术——OLE DB和ADO,OLE DB和ADO都是基于COM接口的技术,使用这种技术可以直接对数据库驱动程序进行访问,这大大提高了对数据库的访问速度。

4.可扩展性

Visual C++6.0 提供了OLE技术和ActiveX技术。这种技术可以增强应用程序的能力。使用OLE技术和ActiveX 技术可以使程序员利用Visual C++中提供的各种组件、控件以及第三方程序员提供的组件来创建自己的程序,从而实现应用程序的组件化。使用这种技术可以使应用程序具有良好的可扩展性。

Access 是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS,即

Relational Database Management System),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。

Access能够存取 Access/Jet、Microsoft SQL Server、Oracle(甲骨文软件公司),或者任何 ODBC 兼容数据库内的资料。熟练的软件设计师和资料分析师利用它来开发应用软件,而一些不熟练的程序员和非程序员的\"进阶用户\"则能使用它来开发简单的应

用软件。

第3章 系统简介

4

系 统 管理

客房信息管理 定房信息管理 结算信息管理 客房管理系统

修改 密码

对其中的每一个模块功能: 1:系统管理

退出系统 设置客房标设置客房信息 查询余房信息 添加定房信息 查询定房信息 添加结算信息 修改结算信息 查询结算信息 启动系统后,管理员必须通过密码登陆。 2:客房信息管理

客房信息管理包括客房标准设置和客房信息设置。客房标准设置可以对客房标准进行添加,修改和删除。客房信息设置则可以对客房信息进行查询、添加、修改、删除。 3:定房信息管理

员工可以对剩余客房进行信息查询,队客人的定房信息进行查询,或自己添加客人的定房信息。 4:结算信息管理

客人结算走后,员工可以对结算信息进行添加、修改,并进行查询。

第4章 数据库设计

数据库是数据库应用程序的核心。数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构设计会减少数据库的存储量,数据的完整性避免在设计中浪费不必要的人力和物力。[9]

5

它是在既定(本系统使用Microsoft Office Access 2003)的数据库管理系统基础之上建立数据库的过程。其过程是将现实存在的数据及其应用处理关系进行抽象,从而形成数据库结构。具体实现时,首先明确用户对数据的需求,在此基础上,建立数据库的概念模型,概念模型主要是用来反映用户的现实环境和需求,它独立于具体的数据库管理系统,并且与数据库怎样实现无关。在建立数据库概念模型之后,要真正实现与数据库管理系统的结合,即能够由既定的数据库管理系统所支持,还必须进行逻辑结构的设计,在逻辑结构设计阶段,主要完成建立数据库的逻辑模型,并解决数据的完整性、一致性、安全性和有效性等问题;最后一个阶段是数据库的物理结构设计,其任务是为系统逻辑结构模型确定合理的存储结构、存取方法、以及数据表示和数据存储空间分配等内容,从而得到具体的数据库物理结构。[10]

数据库最终是要存储在物理设备上的,数据库在物理设备上的存储结构和存取方法称为数据库的物理结构,它依赖于给定的计算机系统。

用户的需求具体体现在各种信息的提供、保存、更新和查询等方面,这就要求数据库结构能充分满足各种信息的输入和翰出。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为数据库的具体设计打下基础。在仔细分析调查有关宾馆管理信息需求的基础上,得到如图1-1所示的这个系统所处理的数据流程。

6

客房信息管理 顾客登记 客房登记 订房信息输入 客房信息返回 订房信息管理 结算信息输入 结算信息管理

图1-1 宾馆管理信息系统数据流程图

针对一般宾馆管理信息系统的需求,通过对宾馆管理工作过程的内容和数据流程分析,设计如下所示的数据项和数据结构:

·客房信息:客房编号、客房种类、客房可容纳人数、客房单价、备注

·订房信息,订房编号、客房编号、客房种类、顾客姓名、顾客身份证号码、入住时间、预住天数、备注等。

·结算信息:订房编号、客房编号、客房种类、客房位置、客房备注信息、顾客姓名、顾客身份证号码、入住时间、折扣、结算时间、备注等。

有了上面的数据流程、数据结构和数据项,就能进行下面的数据库设计。

4.1数据库概念结构设计

得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以得出它们之间的关系,为后面的逻辑结构设计打下基础.

这个实例根据上面的设计规划出的实体有;客房标准信息实体、息实体、结算信息实体。各个实体具体的实体图如下面的图所示:

7

客房标准信息实体 标准编号 标准名称 床位数量 客房单价

图4-1 客房标准信息实体图

客房信息实体 客房编号 客房标准 客房单价

4-2客房信息实体图

订房信息实体 客房信息 入住时间 顾客信息

4-3订房信息实体图

8

结算信息实体 客房信息 顾客信息 结算时间 结算金额 4-4结算信息实体图

客房标准实体 客房登记 客房信息管理 订 房 结算信息管理 订房信息管理 客房结算

4-5实体之间关系图

4.2 数据库逻辑结构设计

现在需要将上面的数据库概念结构转化为Access数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。宾馆管理信息系统数据库中各个表格的设计结果如下面表格所示。每个表格表示在数据库中的一个表。表3-l为客房标准信息表。

3-1 roomtype客房标准信息表

列 名 typeid typename bednum price

数据类型 Varchar Vaichat float float 可否为空 notnull notnull null null 说 明 标准编号 标准名称 床位数量 单价 9

表3-2为客房信息表 列 名 roomNO Roomtpye Roomposltion Roomprice Putup Roommenu

表3-3订房信息表

列 名 Bookno Customname Customid Rommno Indate Inmemo Checkdate Amount

数据类型 Vasrchar Vasrchar Vasrchar Vasrchar Datetime Text Datetime Float 可否为空 Notnull Notnull Notnull Notnull Notnull Null Null Null 说 明 定房编号 顾客姓名 身份证号码 客房编号 入住时间 备注 结算时间 金额 数据类型 varchar Varchat Varchat Float Varchat Text 可否为空 Notnull Notnull Null Null Notnull Null 说 明 客房编号 客房种类 客房位置 单 价 可否被预定 备注信息 4.3 数据库结构的实现

经过前面的需求分析和概念结构设计以后,得到数据库的逻辑结构。现在就可以在Access数据库系统中实现这个逻辑结构。

第5章 宾馆客房管理系统分析

系统分析是采用系统的思想和方法,把复杂的对象分解成简单的组成部分,找出这些部分的基本属性和彼此之间的联系。针对现行宾馆客房计算机管理系统中存在的问题,为了提高信息采集的迅速性和准确性,利用计算机所具有的特殊功能处理宾馆客房管理系统中大量复杂的数据,及时输出各种管理信息和业务信息,为各级人员有效的管理和决策提供有力的依据,提高工作效率和经济效益,在全面调查的基础上提出了系统的总体逻辑描述。 §5.1 系统的初步调查

在信息高度发达的今天,宾馆服务业涉及的各个工作环节已经不再仅仅是传统的住宿、结算,而是更广、更全面的服务性行业代表。宾馆作为一个服务性行

10

业,从客房的营销即客人的预订开始,到入住登记直至最后退房结账,整个过程应该能够体现以宾客为中心,提供快捷、方便的服务,给宾客一种顾客至上的享受,提高宾馆的管理水平,简化各种复杂操作,在最合理最短时间内完成宾馆业务规范操作,这样才能令顾客舒适难忘,增加顾客回头率。面对宾馆业激烈的竞争形势,各宾馆均在努力拓展其服务领域的广度和深度。信息系统具有广泛的实际应用性。[3]虽然计算机并不是宾馆走向成功的关键因素,但它可以帮助那些真正影响成败的因素发挥更大的效用。因此,采用全新的计算机管理系统,将成为提高宾馆的管理效率,改善服务水准的重要手段之一。

据我国宾馆业的统计分析表明:

在现代的宾馆服务行业中,由于客户流量增长,传统的管理方法使得办公人员每天要处理的事务繁多,重复性的工作使其效率较低;各类客户信息收集不齐全;分类、归档不合理,以至于造成查找困难;保存方式不科学,使得资料、文件受损,影响使用效果和时间。

针对这种情况,各宾馆管理人员已意识到使用计算机管理信息系统的重要性,因此他们迫切需要开发一个“宾馆客房管理信息系统”来进行管理工作。 §5.2 系统的可行性分析

从宾馆的具体情况出发,经过多方面调研、讨论,本宾馆客房管理信息系统,从技术上,经济上,管理上均已具备实施的基本条件: §5.2.1技术可行性

Win2000/NT/XP操作系统的稳定性,安全性可满足用户的要求。在数据库应用系统开发中 ,数据库的高效存取是开发人员不变的追求目标 ,而 SQL是实现此目标的捷径。后台的数据库使用Access,开发工具选Microsoft公司的Microsoft Visual C++ 6.0, 具有良好的升级潜力和可维护性。这些软件在大型MIS开发中已被大量应用,技术上都比较成熟,可根据用户需要,十分方便的增减模块,直观的图形用户界面,简洁的操作流程,无须专业电脑知识即可迅速上手。[4]因此技术上是可行的。

11

§5.2.2 经济可行性

费用:本系统要求的计算机配置并不高(400M Hz以上处理器。64M内存及以上,硬盘空间100M以上),设备的安装调试工作简单,PB软件的价格不高,操作简单,对用户进行少量的培训工作就可以熟练的使用本系统,因而培训费用较低。

收益:宾馆前台使用本系统后,提高了核对效能,相对的差错也大大减少;即工作人员的工作效率大大提高了,工作时间大大节省了,从而间接为宾馆创造了可观的经济效益,减少管理费用的支出,避免了不必要的人工错误;还提高了工作人员的素质,有利于管理方式与体制的合理改革,保证宾馆客房管理的可持续发展。因而在经济上是可行的。 §5.2.3 管理可行性

建立管理信息系统是行业发展的必然要求,宾馆领导对科技的管理非常重视。使管理和业务流程信息化,是管理信息现代化的第一步。而员工对此更是表现出极大的热情和期望。因为该系统的实施将很大程度上降低他们的手工作业量,还会减少他们在工作上的失误,提高工作效率。因此,本系统在管理上是可行的。

§5.3业务流程分析

业务流程分析是对业务功能分析的进一步细化,业务流程分析的结果是给出业务流程图。业务流程图反映了实际的业务活动。它不仅是系统分析人员进行更深入系统分析的依据,而且也是系统分析人员,管理人员,业务操作人员,系统设计人员进行沟通的工具。[5]可以直接在业务流程图上拟出能够由计算机实现的部分,明确系统的边界,使计算机处理与人工业务处理的接口清晰,分析组织的业务流程是否合理,删除重复的,不合理的环节,明确整个业务流程,为以后的分析与设计打下良好的基础。

因此,为了能够反映宾馆内部各部门之间的联系程度,其主要业务和他们在业务过程中所承担的工作。宾馆的业务流程图如图2.2所示:

12

报表 房态查询查询 追加 续住 报表 历史 单据 现结 选房 押金 宿费提醒 手牌 结点单客前台登记 入住 账 确定手牌 消费 退 牌 离人 店 建立账户 预订客房 预订房费 当前客户账 图2.2业务流程图

通过现行业务流程图对现行系统进行分析,客人流量多,需要的服务多,致使管理的过程不好控制,效率不高。可以通过计算机来实现前台操作员的一些业务,让电脑来代为运作,可以提高效率,减轻人的工作量。

本系统的工作就是把传统的管理模式换为人机交互操作,从上图分析可以明确系统的边界,把不必要的人工操作从系统中删除。首先可以在电脑上实现房态的查询,了解房间的占用情况,这样可为工作人员减少查询的时间,提高管理的效率。另外客人可以预订房间,这样就为客人避免了来到本地临时找住处的麻烦,为客人节省了时间,提高了工作效率,同时也为宾馆带来了一定的经济效益。如果客人为散客,到前台进行登记,即可入住。如果客人押金不足,宾馆工作人员可提醒他补交押金,如果他有一些临时消费,可结账也可离店退房时一同结账。提高了宾馆的管理效率,使得宾馆的组织结构向着扁平化方向发展,用最少的人力物力作尽可能多的工作。

13

§5.4 数据流程分析

数据流程分析是数据和数据流程分析工作的最后一步,该工作是对系统中的数据进行输入输出、存储、传递、转换等分析。[6]数据流程分析的结果是给出数据流程图。数据流程图是描述系统逻辑模型的主要工具,作者采取结构化分析的方法绘制数据流程图。

针对现在宾馆业的发展需求,在业务流程图的基础上,可以得到数据流程图:

图 2.3 数据流程图

§5.4.1 数据字典

系统数据字典(DD-Date Dictionary)是描述数据流程图中所有数据流、数据存储、处理功能等卡片的集合。数据字典提供一个可定义的不依赖于应用程序 的存储区域,用于创建扩展的属性集和描述数据的内容与外观。[7]其内容包括四种条目:数据流,数据元素、数据存储和数据加工。建立完善的数据字典是对所整理数据的一种分析归档方式,为下一步建立数据库和处理数据做准备。

14

在系统分析阶段,数据字典有着重要的作用,它包含着系统的详细信息。一般来说,系统分析人员应把不便于在数据流程图上注明而系统分析应该获得,对整个系统开发以至将来系统运行与维护时必需的信息尽可能放入数据字典。

数据字典:“数据流”条目

数据流是穿梭于数据加工与外界环境实体间的信息,即流动与数据处理间的数据。因此,数据流词条不仅要说明数据流的名称,组成等本身的特性,而且应指明它的来源、去向和流通量等。

数据流 系统名: 宾馆客房管理 编号:1 条目名: 客房信息 别名: 来源:客房基本信息管理 去处:客房基本信息存储 数据流结构: 客房信息=房间号+房间类型+房态+价格+营业日期+使用配置+设置+备注 简要说明:房间的基本信息 修改记录: 编写 审核 李志华 许福明 日期 日期 2012年6月 表 5-1 客房管理数据流

数据流 系统名: 宾馆客房管理 编号:2 条目名: 预订信息 别名: 来源:预订管理 去处:预订信息存储 数据流结构: 预订信息=姓名+证件+证件号+联系电话+详细地址+工作单位+客房类型+……+操作员 简要说明:预订房间所需要的信息 修改记录: 编写 审核 李志华 许福明 日期 日期 2012年6月 表 5-2 预订信息数据流

15

数据流 系统名: 宾馆客房管理 编号:3 条目名: 住宿信息 别名: 来源:住宿管理 去处:住宿信息存储 数据流结构: 住宿信息=住宿编号+证件+证件号+预住天数+房间号+房间类型+……+操作员 简要说明:住宿时需要登记记录的各种信息 修改记录: 编写 审核 李志华 许福明 日期 日期 2012年6月 表 5-3 住宿信息数据流 数据字典:“数据元素”条目

数据元素是数据流组成的最小单位,是无法再细分的数据流。它直接反应事物的某一特征。其描述需要以下信息:数据元素名、类型、长度、取值范围、相关的数据元素及数据结构。

数据元素 系统名: 宾馆客房管理 编号: 条目名: 房间号 别名: 属于数据流: 客房信息、住宿信息 存储处: 客房基本信息存储、住宿信息存储 数据元素结构: 代码类型 取值范围 字符 0000000000----9999999999 (由数字组成的字符串) 简要说明:房间都有唯一的编号。 修改记录: 编写 审核 李志华 许福明 日期 日期 2012年6月 表 5-4 房间号数据元素

数据字典:“数据存储”条目

数据存储是数据结构保存的地方。一个数据存储词条应有以

16

下几项内容:数据存储名、简述、输入数据、输出数据、数据存储组织、记录数、记录组成。

数据存储 系统名: 宾馆客房管理 编号:D1 条目名: 客房信息 别名: 存储组织 每个房间一条记录 记录数: 主关键字:房间号 记录组成: 项名: 房间号 房间类型 房态 价格 可容纳人数 ······· 长度 10 16 10 20 10 ······· 简要说明: 使用设置和配置为房间内的软硬件设施,用于检查是否有损坏或使用。 修改记录: 编写 审核 李志华 许福明 日期 日期 2006年5月 表 5-5 客房信息数据存储

数据存储 系统名: 宾馆客房管理 编号:D2 条目名: 住宿信息 别名: 存储组织 每位客人一条记录 记录数: 主关键字:住宿编号 记录组成: 项名: 住宿编号 姓名 证件 证件号 性别 …… 费用 长度 10 10 10 20 5 10 简要说明: 客户有特殊要求在备注中说明。 修改记录: 编写 审核 李志华 许福明 日期 日期 2012年6月 表 5-6 住宿信息数据存储

17

数据字典:“加工”条目

加工逻辑是对数据流程图中各个基本处理的精确描述。

加工 系统名: 宾馆客房管理 编号:1 条目名: 住宿管理 别名: 输入数据: 客房信息、住宿登记信息 输出数据: 住宿信息 加工逻辑: 1 选择已入住或处于维修状态的房间会有警告提示 2 入住日期自动读取系统时间 简要说明: 修改记录: 编写 审核 李志华 许福明 日期 日期 2012年6月 表 5-7 住宿管理加工

加工 系统名: 宾馆客房管理 编号:2 条目名: 结账管理 别名: 输入数据: 住宿信息 加工逻辑: 1 根据住宿信息以及其他费用结账 2 其他费用在此处添加 3 客人可选择结账方式 简要说明: 结账可以选择多种方式。 修改记录: 编写 审核 李志华 许福明 日期 日期 2012年6月 输出数据: 消费清单、挂账信息、客房信息 表 5-8 结帐管理加工

第6章 宾馆客房管理系统详细设计

§6.1 系统运行环境 运行环境:

18

a.CPU: 最低400MHZ b.内存: 64M

c.输入输出设备:键盘,鼠标 d.100M以上硬盘空间

e.操作系统:Microsoft Windows 2000 §6.2 系统详细说明

§6.2.1 系统登录

图 6.1 系统登录程序流程图

运行程序后首先进入程序的主体界面,如下图

19

单击系统登录按钮,进入系统登录窗口。用户进入系统前,必须通过密码验证方可进入主窗口界面。

系统登录界面

窗口中主要放置了两个单行编辑框m_accout,m_pass,以及两个命令按钮。用户首先在管理员编辑框中输入管理员用户名,然后输入密码。点击“确定”按钮后,系统自动提取对应操作员的登录密码,与保存在局部变量中的用户所输入密码进行比对。如果密码不正确,则提示“密码有误!” ;如果密码正确则进入系统主窗口main_win。登录代码如下:

void CLogDialog::OnOK() {

// TODO: Add extra validation here

UpdateData(true); int i=0;

UpdateData(true);

if(m_accout==\"2012\"&&m_pass==\"2012\")

20

{CDialog::OnOK(); CSysDialog sdlg; sdlg.DoModal(); }

else {

i++;

AfxMessageBox(\"帐户名或密码错误\\n请重新输入!\"); GetDlgItem(IDC_ACCOUT)->SetFocus(); if(i==3) {

AfxMessageBox(\"输入错误次数太多!\"); CDialog::OnOK(); } } }

登录成功后显示宾馆客房管理信息系统操作界面如下图,窗口由四个按钮和一个下拉菜单组成,主窗口为main_win,操作界面上所链接菜单为menu_menu。

主操作界面

6.2.2.宾客入住

点击操作界面的宾客入登记,进入宾客入住登记窗口,主要实现客人个人资料录入及住房信息录入等功能

21

宾客入住登记窗口

本窗口主要由多个单行编辑框、两个单选框、三个按钮、两个下拉单选框组成,其中入住时间可自动提取系统时间。点击“空房查询”按钮,可房态,输入客户个人资料和住宿信息点确定按钮提示登记成功,并返回主操作窗口。此操作的代码如下: void CInroomDialog::OnOK() { // TODO: Add extra validation here CDatabase m_database; if(!m_database.Open(_T(\"Room\"))) AfxMessageBox(\"数据库打开出错\"); m_set.Open(); CFangSet m_fset; m_fset.Open(); CString msg,tmsg; char string[10]; int tag=0; int sel; CTime m_current; UpdateData(true); if(m_lname.IsEmpty()) {AfxMessageBox(\"请输入用户名\");} else if(m_lpersonid.IsEmpty()) {AfxMessageBox(\"请输入身份证\");} else if(m_lroomid==0) { MessageBox(\"房间号不对\客人登记失败\ARNING);

22

GetDlgItem(IDC_ROOM)->SetFocus(); }

else if(m_ldays==0) { MessageBox(\"住宿天数不对\客人登记失败\ GetDlgItem(IDC_DAYS)->SetFocus(); }

else { while(!m_fset.IsEOF())

{ if(m_fset.m_roomID==m_lroomid) { if(m_fset.m_state==\"空\") tag=1; else tag=0; break; }

else {m_fset.MoveNext();} } } /* if(tmp[0]>306||tmp[0]<100)

{AfxMessageBox(\"请先查询\"); }*/ /* else{ for(int i=1;i<=K;i++) {if(tmp[i-1]==m_lroomid) {tag=0;break;} }*/ if(tag==0) { AfxMessageBox(\"此房有人住客人登记失败\ GetDlgItem(IDC_ROOM)->SetFocus(); } if(tag==1) { //2 try{//3 m_set.AddNew(); UpdateData(true); sel=m_num.GetCurSel(); m_set.m_people=sel+1; if(sel+1m_set.m_personID=m_lpersonid; m_set.m_information=m_inf; if(m_lsex==0)

23

m_set.m_sex=\"男\"; else

m_set.m_sex=\"女\";

m_set.m_day=m_ldays;

m_set.m_logtime=m_current.GetCurrentTime(); msg+=\"\\r\\n\\n\";msg+=\"客人登记成功\"; // m_bLogin=TRUE; UpdateData(true); // if(m_lclass==0) { m_set.m_class=\"一级\"; msg+=\"\\r\\n\"; msg+=\"费用为:\"; _gcvt(m_ldays*100,10,string); msg+=string;

m_set.m_cost=m_ldays*100; }

else if(m_lclass==1) { m_set.m_class=\"二级\"; msg+=\"\\r\\n\"; msg+=\"费用为:\";

_gcvt(m_ldays*70,10,string); msg+=string; m_set.m_cost=m_ldays*70; } else { m_set.m_class=\"三级\"; msg+=\"\\r\\n\"; msg+=\"费用为:\"; _gcvt(m_ldays*40,10,string); msg+=string;

m_set.m_cost=m_ldays*40; } m_set.Update();

AfxMessageBox(msg); CDialog::OnOK();}

else { AfxMessageBox(\"人数太多!\");}

24

}//3 catch(CDBException*pe) {AfxMessageBox(pe->m_strError); pe->Delete(); } }//2 m_set.Close(); }//1

点击登记窗口中的空房查询代码可以查询房间的基本信息

双击房间号,可以查询该房间的房间状态(是否有人住)、房价及可容纳人数,实现此操作的代码如下:

BOOL CFangDialog::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here CString mmsg; mmsg+=\"请双击一个房间号!!\"; m_list.AddString(\"101\"); m_list.AddString(\"102\"); m_list.AddString(\"103\"); m_list.AddString(\"104\");

25

m_list.AddString(\"105\"); m_list.AddString(\"106\"); m_list.AddString(\"201\"); m_list.AddString(\"202\"); m_list.AddString(\"203\"); m_list.AddString(\"204\"); m_list.AddString(\"205\"); m_list.AddString(\"206\"); m_list.AddString(\"301\"); m_list.AddString(\"302\"); m_list.AddString(\"303\"); m_list.AddString(\"304\"); m_list.AddString(\"305\"); m_list.AddString(\"306\"); m_edit1=mmsg; UpdateData(false); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }

void CFangDialog::OnDblclkList1() { // TODO: Add your control notification handler code here // UpdateData(true); CString str; CDatabase m_data; if(!m_data.Open(_T(\"Room\"))) AfxMessageBox(\"数据库打开出错\"); m_fset.Open(); m_fset.MoveFirst();

m_list.GetText(m_list.GetCurSel(),str); m_croom=(long)atof((LPCTSTR)str); //UpdateData(false);

//AfxMessageBox(\"0000000000000\"); while(!m_fset.IsEOF()) { if(m_fset.m_roomID==m_croom) {//AfxMessageBox(\"11111111111\"); m_cstatue=m_fset.m_state; m_cprice=m_fset.m_daycost; m_cpeople=m_fset.m_max; break; }

26

else m_fset.MoveNext(); }

UpdateData(false); m_fset.Close(); m_data.Close(); }

6.2.2.查询

点击退出返回客人登记界面,点击确定或取消按钮返回主操作界面。点击查询按钮,进入到查询界面,如下图:

查询界面功能比较简单,只有四个按钮组成,可以查询住宿信息,收入及客户意见。 A. 查询住宿信息

选择查询住宿信息,进入查询住宿情况界面,如下图:

上图即为查询结果界面,显示房间号,客人姓名及身份证号,入住时间,住宿天数,费用等

27

信息。实现此操作代码如下:

void CAskstateDialog::OnColumnclickList1(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; // TODO: Add your control notification handler code here int k=pNMListView->iSubItem; Sort(!m_bIsAsc,k); m_ListCtrl.DeleteAllItems();

m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); m_ListCtrl.InsertColumn(0,_T(\"房间号\"),LVCFMT_IMAGE|LVCFMT_LEFT); m_ListCtrl.InsertColumn(1,_T(\"姓名\")); m_ListCtrl.InsertColumn(2,_T(\"身份证号\")); m_ListCtrl.InsertColumn(3,_T(\"性别\")); m_ListCtrl.InsertColumn(4,_T(\"入住时间\")); m_ListCtrl.InsertColumn(5,_T(\"住宿天数\")); m_ListCtrl.InsertColumn(6,_T(\"费用\")); m_ListCtrl.InsertColumn(7,_T(\"房间级别\")); m_ListCtrl.InsertColumn(8,_T(\"备注\")); m_ListCtrl.InsertColumn(9,_T(\"总人数\")); int j;

for(j=0;j<10;j++) { m_ListCtrl.SetColumnWidth(j ,90); }

//显示所有记录 int i=0; m_pSet.MoveFirst(); do { CString s;

s.Format(\"%d\ m_ListCtrl.InsertItem(i,s,0); m_ListCtrl.SetItemText(i,1,m_pSet.m_name); m_ListCtrl.SetItemText(i,2,m_pSet.m_personID);

m_ListCtrl.SetItemText(i,3,m_pSet.m_sex);

s=m_pSet.m_logtime.Format(\"%Y-%B-%d\"); m_ListCtrl.SetItemText(i,4,s);

28

s.Format(\"%d\ m_ListCtrl.SetItemText(i,5,s); s.Format(\"%d\ m_ListCtrl.SetItemText(i,6,s);

m_ListCtrl.SetItemText(i,7,m_pSet.m_class);

m_ListCtrl.SetItemText(i,8,m_pSet.m_information); s.Format(\"%d\m_ListCtrl.SetItemText(i,9,s); i++;

m_pSet.MoveNext(); } while(!m_pSet.IsEOF());

m_pSet.Close(); *pResult = 0; }

void CAskstateDialog::Sort(BOOL isAsc, int secol) { m_pSet.Open(); CODBCFieldInfo fieldInfo; m_pSet.GetODBCFieldInfo(secol,fieldInfo); if(isAsc) { m_pSet.m_strSort=fieldInfo.m_strName+\" ASC\"; m_bIsAsc=TRUE; } else { m_pSet.m_strSort=fieldInfo.m_strName+\" DESC\"; m_bIsAsc=FALSE; } m_pSet.Requery(); }

B.查询收入情况

29

点击查询收入按钮,即可查询当前的收入情况

实现此功能代码如下:

void CFindDialog::OnAskmoney() { // TODO: Add your control notification handler code here long money=0; char mtmp[10]; CString msg; m_pset.Requery(); m_pset.MoveFirst(); while(!m_pset.IsEOF()) { money=money+m_pset.m_cost; m_pset.MoveNext(); }

_gcvt(money,10,mtmp); msg+=\"\\r\\n\\n\";

msg+=\"目前总收入为: \"; msg+=mtmp; msg+=\"元\";

MessageBox(msg,\"总收入\ m_pset.Close(); }

void CFindDialog::OnAskguest() { // TODO: Add your control notification handler code here CAskstateDialog adlg; adlg.DoModal(); }

30

第7章 系统测试

7.1测试的目的

测试的目标是要发现软件中的错误,并加以纠正。方法主要分单元测试和集成测试。

单元测试:对模块中的几个小单元进行单独测试,若均完成预计的功能,便可进行下一步的集成测试。

集成测试:集成测试是组装软件的系统技术,主要有两种方法。一种是先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,成为非渐增式测试方法:另一种是把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合近来测试,称为渐增式测试。我们所用到的是第一种方法,将所有模块结合到一起进行测试。

但在其开始时采用单元测试,将设计的每个模块单独检测,主要评价模块的五个特征:

1.模块接口 2.部数据结构 3.重要的执行通路 4.出错处理通路

5.影响上述各方面特征的边界条件

在此检测中能查出30%-70%的逻辑设计错误和编码错误,所以这是一项非常有效的程序验证技术。但如果软件模块的内聚高可以简化单云测试过程。如果每个模块只实现一个功能,则需要的测试方案明显减少,模块中的错误也容易预测和发现。对于单元测试中存在的错误要的及时处理将对以后的集成测试带来很大的方便。

接下来是集成测试,采用非渐增式方法。因为我们的系统相对来说不是很大,集合到一起试的功能一目了然,不必要渐渐增加模块来增加测试的复杂性。

测试中,我们将数据库中的数据进行录入,当录入为零时,系统给出提示“无记录”;当录入几条信息是,对系统进行测试,不论是查询,删除或是更新的速度都很合乎要求。但在录入上百条记录时,就明显感觉出速度的减缓。

我所设计的部分,信息更新,也就是数据的更改的弊端是它只对输入格式错误的信息进行更改,比如实验室设备的书写错误,编码超出范围,出厂日期不符等等,对于一些填写信息均合理,但有实质性错误的信息将无法自动查找和更改,这也是次系统的其中的一个弊端。另外,在时实方面也不可避免的会出现问题,如在多机上运行时,可能会发生访问数据库的冲突等问题,所以如

31

果今后有充裕的时间我们还应继续对系统进行优化。

7.2 测试步骤

在整个系统测试过程中,按以下4个步骤进行,即模块测试、联合测试、确认测试和系统测试。

1、模块测试。主要是针对程序模块进行正确性检验的测试。单元测试的内容有:模块接口测试即对通过被测模块的数据流进行测试;局部数据结构测试,即设计测试用例检查数据类型说明、初始化、缺省值等方面的问题,还要查清全程数据对模块的影响;路径测试,即选择适当的测试用例,对模块中重要的执行路径进行测试,对基本执行路径和循环进行测试可以发现大量的路径错误;错误处理测试即检查模块的错误处理功能是否包含有错误或缺陷;边界测试,即要特别注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。这部分的测试可以发现详细设计和编程时犯下的错误,如某个变量未赋值、数组的上下界不对等。

2、联合测试。在模块测试的基础上,需要将所有模块按照设计要求组装成为系统,然后按业务流程对集成的系统进行测试。可先一个模块一个模块的增加测试,直到集成为一个系统。这个测试过程可以发现概要设计时犯的错误。 3、确认测试。又称为有效性测试,它的任务是验证软件的有效性,即验证软件的功能、性能及其它特性是否与用户的要求一致。这个测试过程最好由用户参与测试。

4、系统测试。将通过确认测试的软件,在用户的实际环境(硬件环境、软件环境、数据、人员等)进行联合测试和确认测试。

7.3 测试方法

测试软件产品有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常运行。前一个方法称为黑盒测试,后一个方法称为白盒测试法。 1、黑盒测试法

也称为外部测试,其原则是对一些把程序(一个模块或一组相关的模块)当作黑盒子(即看不见其内部结构)时看到的外部规格进行测试。常用的有:等价分类法,边界值测试法、因果图法。

等价分类法,将输入数据的可能值分为若干个“等价类”,每一类的一个代表性值在测试中的作用等价于这一类中的其他值,每个等价类的数据可以发现某种类的错误,从而减少所需测试用例的数目。

边界值测试法,程序往往在处理边界值是犯错误,所以考察边界条件的测试

32

用例比别的测试用例收到更大的效果。

因果图法,等价分类法和边界值测试法的缺点是没有检查各种输入条件的组合,因果图法能清晰地表现程序的逻辑条件(因)和对应的作用(果)的关系,其产生用例的步骤为:从用自然语言书写的功能说明中找出因(输入条件)和果(输出或程序状态的修改),通过画因果图将功能说明转换成一张判定表,然后为判定表的每一列设计测试用例。

以上三种常用方法应当互相补充、互相配合地使用,才能收到更好的效果。 2、白盒测试法

它以程序的内部逻辑为基本设计测试用例,所以又称为逻辑覆盖法,它主要考虑的是测试用例对程序内部逻辑覆盖的程度,尽可能将程序每一路径都要通过一次。

语句覆盖,程序的某次运行一般并不能执行到其中的每一个语句,因此,如果某个语句中含有一个错误,而它在测试中没有执行,这个错误就不可能被发现,所以应选择足够的测试用例,使得程序中每个语句至少都能执行一次。 判定覆盖,执行足够的测试用例,使得程序中每个判定条件至少获得一次“真”值和“假”值,也就是使得程序中的每一个分支至少都通过一次。

条件覆盖,一个判定中往往包含了若干个条件,执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。

判定/条件覆盖,执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。

条件组合覆盖,执行足够的测试用例,使得每个判定条件的可能组合都至少出现一次。

7.4 小结

测试是一项复杂的、极具创造性的工作,也是在软件开发中容易被忽视其重要性的工作。在实际的测试中,可以将测试过程和方法反复进行,各种方法也需要组合使用,灵活应,才能为生产高质量的软件产品打下基础。

第8章 开发设计总结

8.1 工作小结

至此,整个酒店客房管理系统开发完毕,在开发过程中有以下心得: 第一,各种MIS的开发技术是相通的,通过对酒店客房管理系统的开发总结出的理论和实践经验可以为其他的MIS系统开发起到很大的帮助。

第二,软件复用。因为各种MIS的技术非常相似,所以很多的设计方法、流程、甚至源代码可以利用,例如报表打印控制程序,可以用于以后其他的MIS系统中。

33

第三,前期的需求分析和软件设计工作非常重要,不要怕在这个阶段占用系统开发的时间过长,只有做好需求分析和软件设计才能保证软件的成功率,否则在软件开发后才来修改存在的问题会浪费更多的人力和物力,而且修改会带入新的问题。

第四,在系统设计时,应当考虑到系统应用环境可能发生的变化,应当使系统具有良好的环境适应性,例如,本系统在不同的酒店应用时,能让用户在系统提供的代码维护功能中快速建立适合本酒店的环境,而不需要改变程序的源代码。

第五,在系统设计中,即可能多的使用存储过程完成对数据库的操作,可以减少网络流量,提高系统的响应速度,另外还有利于增加系统的安全性。 第六,在系统测试时,采用黑盒法与白盒法综合测试的方法,而且每写一段代码就进行一次测试,将测试与代码编写结合起来,虽然比较费时,但出错率降低不少,对用黑盒法测试出现错误比较多的模块,采用了判定/条件覆盖的测试方法进行多次测试。

在开发过程中也发现了一些问题:

第一,文档是软件开发各阶段成果的标志,受时间限制,本文并没有关于文档的具体描述。

第二,在与用户打交道的过程中,需求分析做的不是很成功,没有将用户的想法以模型的方式反馈给用户,以至在开发的后期有几次修改,增加了一些不必要的开发工作。如:开始设想将所有的收银操作都交给前台收银模块来处理,但在实际中发现客人在前台登记完,还需在收银台交纳预付金,比较费时,所以后来在前台接待中增加了“代收帐务”功能。

第三,测试不可轻视,由于时间因素,详细的测试过程有待进一步完善,在系统中还存在一定的问题。

8.2 系统展望

受开发时间的限制,本系统的开发主要是完成酒店客房的预订、入住、查询、退房的管理,这只是整个酒店管理系统的一部分内容,所以系统还存在较大的继续开发空间,这在做系统设计时已经考虑到了的,主要有以下几个方面: 第一,进一步完善系统功能,增加商务中心管理模块、餐饮管理模块、茶秀管理模块、电话计费模块,使得客人可以凭借房卡在酒店实现“一卡式”消费。 第二,随着互联网上电子商务的发展,没有开展电子商务的酒店将没有生机,将失去竞争力。尤其是随着国内游泳业的发展,酒店竞争和发展迫在眉睫,它要求酒店经营者不断寻找新的经济增长点、采取新的营销模式。由于Internet具有传播面广、费用低、效率高的特点,有效地通过Internet进行电子商务模式的市场营销活动,将成为酒店在于激烈市场竞争中成功的关键之一,如网上宣传、网上订房系统,而电子商务系统也必将成为酒店MIS的延伸和拓展。

34

第三,客户的消费是酒店所有经济收入的源泉,因此在酒店管理系统中应当增加客户关系的管理,例如对于经常消费的客户应当设置一定的折扣,还应当记住他的一些嗜好(如喜欢散装茶)等,这些都会让客户有宾至如归的感觉,提高客户的满意度,从而增加客户的忠诚度。

8.3结束语

经过几个星期的努力,一个完整的宾馆客房信息管理系统就创建完毕了,在此详细介绍了该管理系统的系统设计部分,包括功能模块设计,数据库结构设计等,系统创建了一些典型的管理模块,基本实现了所预期的功能,但是由于毕业设计时间较短,所以该系统中还有许多不尽如人意的地方,比如用户界面不够美观,出错处理不够等多方面问题,这些都有待进一步改善,在此系统的开发过程中,遇到一些难以解决的问题,例如在VC中如何与数据库连接,如何对数据库进行修改等等,在曲秀敏老师的帮助下最终都得以实现,我在此次设计中积累了一些宝贵的经验,软件水平有了很大的提高。

这次的毕业设计对作者来说是非常难得的一次锻炼机会。毕业设计使作者对几年来所学的专业课有了更为深刻的认识,提高了对管理信息系统开发理论,方法和步骤的认识,使知识得到了融会贯通,得到了比以往学习任何一门课都大的提高和进步。对于作者来讲这不仅仅是一次毕业设计,不仅仅学会了一门数据库开发工具,更重要的是在学习的过程中,遇到了很多的困难,在解决这些困难的过程中提高了作者学习的能力、解决问题的能力和实际工作能力,学到了许多书本以外的知识。

总之,理论+实践=知识。程序设计过程中,作者以理论为指导,以实践为主体,将理论与实践紧密结合起来,亲身体会到只有将理论与实践有效的结合起来,才能使理论指导实践,又反过来丰富理论,二者相得益彰,使学习效率大大提高。

参考文献

[1]刘彦保,李军利,郝继升.用PowerBuilder和SQL Server开发酒店管理信息系统[J].延安大学学报,2003,Vol.04

[2]亓协民.龙铁宾馆网络系统分析[J].哈尔滨铁道科技,1999,Vol.01

[3]So-Yeon LEE,Jai-Sang Koh.WWW-Based Reliability Information System [J].Computers ind. Engng,1998,Vol.35:599-602

[4]吴锋.PowerBuilder在企业MIS开发中的应用与思考[J].计算机工程与应用,1999,Vol.01

35

[5]张鸿,熊文龙.基于C/S模式的SQL数据库应用技术[J].武汉理工大学学报,2003,Vol.06

[6]陈建平.Sybase SQL Server与管理信息系统设计[J].长春邮电学院学报,1996,Vol.02

[7]叶蓓.Microsoft Office Access 2003专业级认证教程[J].现代电子技术,2003,Vol.23

[8]刘凯,苗放,王艳.PowerBuilder与Sybase在客户/服务器模式下的连接及应用[J].物探化探计算技术,2001,Vol.04

[9]樊银亭,曾春先.SQL Server数据库系统中的数据完整性研究[J].金陵科技学院学报,2005,Vol.02

[10]钱学忠.SQL在数据库应用系统中的运用[J].电子器件,2000,Vol.03 [11]Timo Manterea,Jarmo T. Alanderb.Evolutionary software engineering,

a review[J].Applied Soft Computing,2005,Vol.05:315-331

36

因篇幅问题不能全部显示,请点此查看更多更全内容