




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉科技大学本科毕业设计客房管理Visual C+界面设计及编程实现毕业论文目 录1 绪论11.1 系统开发背景11.2 本系统的作用11.3 系统开发工具11.3.1 Microsoft Visual C+ 6.0简介21.3.2 SQL Server2000简介22 系统需求分析42.1 需求分析42.2 功能需求42.3 系统流程图43 系统数据库设计53.1 局部E-R图53.2 整体E-R图73.3 数据库表设计83.3.1 各表设计83.3.2 关系图103.3.3 视图设计104 系统界面设计及代码124.1 关于MFC124.2 VC+ 6.0访问SQL Server数据库的原理124.2.1 CDatabase类124.2.2 CRecordSet类134.2.3 记录查询134.2.4 记录添加154.2.6 记录修改154.2.7 直接执行 SQL语句164.3 登陆窗口界面及代码174.4 客房信息查询184.4.1 按房间号查询184.4.2 查询剩余房间信息194.5 顾客信息录入214.6 入住登记界面224.7 结算界面235 系统测试275.1 测试目的275.2 测试记录与运行结果275.2.1 登陆测试275.2.2 查询房间测试285.2.3 剩余客房信息查询测试295.2.4 客户信息录入测试305.2.5 入住登记测试315.2.6 退房测试326 结束语35参考文献36致 谢37附录A 数据库各表数据值38341 绪论本系统针对宾馆住宿的一般管理模式,采用基于计算机网络技术的宾馆管理解决方案,按照宾馆的现代化管理要求设计,实现对宾馆住宿的接待,客房,登记,收支情况,空调等服务设施的全面全方位计算机管理。目标在于提高宾馆营业体系的作业效率,提高服务的客户满意度,加强宾馆的市场竞争力,树立良好的企业形象.通过计算机管理,一方面提供给客户快捷准确可靠的服务,另一方面提高宾馆自身的管理水平,及时准确获取营业信息,辅助对市场需求变化的决策1.1.1 系统开发背景随着我国经济的迅速发展,人们的生活水平有了显著的提高,假日经济和旅游经济已成为人们消费的热点。各地也把旅游业当作本地经济发展的重要经济支柱之一,从而促进了宾馆住宿业的快速发展。同时,随着宾馆越来越多,人们的要求越来越高,宾馆住宿业的竞争也愈来愈激烈2。如何利用现代社会赋予人们的新观念、新手段向管理要效益,为宾馆管理注入新的活力,从而在激烈的市场竞争中站稳脚跟,是摆在每个宾馆管理人士面前的重要课题。先进的宾馆住宿管理系统应是将中国多年来宾馆管理积累的成功经验与现代化信息处理技术结合起来,相互呼应,通过完美的功能设置,建立一个自动化管理信息系统,以提高宾馆管理的效率和质量3。宾馆管理系统面对强大的信息量可以轻松的管理,减少了在管理上面物力和人力,有利于宾馆提高工作效率和宾馆效益。面对庞大的信息量,宾馆在正常运营中需要对客房资源、顾客信息、结算信息进行管理,利用宾馆管理信息系统及时了解保个环节中信息的变更,有利于提高管理的效率。通过这样的系统,可以做到信息的规范管理、需要统计和快速的查询,从而减少在管理方面的工作量4。1.2 本系统的作用本系统实现了一个简单的酒店客房管理。在本系统里,主要是对来宾接待,客房的信息,经营情况以及收银结账的管理。为管理者提供迅速,高效的服务,减免手工处理的繁琐与误差,及时,准确地反映酒店的工作情况,经营情况。本系统以提供操作简单方便、快捷,易懂易用为开发目标,用户界面设计友好,操作使用方便,同时能保证用户数据的稳定5。1.3 系统开发工具开发数据库管理信息系统需要选择两种工具,即前台开发语言和后台数据库。本系统运用了Microsoft Visual C+ 6.0作为开发工具,SQL Server2000作为后台数据库。1.3.1 Microsoft Visual C+ 6.0简介Visual C+ 6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。Visual C+6.0不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。由于C+是由C语言发展起来的,也支持C语言的编译。6.0版本是使用最多的版本,很经典。最大的缺点是对于模版的支持比较差。现在最新补丁为SP6,推荐安装,否则易出现编译时假死状态和有些功能不可用的情况。同时,6.0版本对windows7的兼容性较差6。1.3.2 SQL Server2000简介SQL Server 是一个关系数据库管理系统,它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了。Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本;Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。在本书中介绍的是Microsoft SQL Server 以后简称为SQL Server或MS SQL Server。SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的一个版本。该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用7。 SQL Server 2000 的特性包括: (1)Internet 集成。SQL Server 2000 数据库引擎提供完整的XML 支持。它还具有构成最大的Web 站点的数据存储组件所需的可伸缩性、可用性和安全功能。SQL Server 2000 程序设计模型与 Windows DNA 构架集成,用以开发 Web 应用程序,并且SQL Server 2000 支持 English Query 和 Microsoft 搜索服务等功能,在Web 应用程序中包含了用户友好的查询和强大的搜索功能8。 (2)可伸缩性和可用性。同一个数据库引擎可以在不同的平台上使用,从运行 Microsoft Windows 98 的便携式电脑,到运行 Microsoft Windows 2000 数据中心版的大型多处理器服务器。SQL Server 2000 企业版支持联合服务器、索引视图和大型内存支持等功能,使其得以升级到最大 Web 站点所需的性能级别9。 (3)企业级数据库功能。SQL Server 2000 关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。SQL Server 2000 分布式查询使您得以引用来自不同数据源的数据,就好象这些数据是 SQL Server 2000 数据库的一部分,同时分布式事务支持充分保护任何分布式数据更新的完整性。复制同样使您得以维护多个数据复本,同时确保单独的数据复本保持同步。可将一组数据复制到多个移动的脱接用户,使这些用户自主地工作,然后将他们所做的修改合并回发布服务器10。 (4)易于安装、部署和使用。 SQL Server 2000 中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用 SQL Server 的过程。SQL Server 2000 还支持基于标准的、与 Windows DNA 集成的程序设计模型,使 SQL Server 数据库和数据仓库的使用成为生成强大的可伸缩系统的无缝部分。这些功能使您得以快速交付 SQL Server 应用程序,使客户只需最少的安装和管理开销即可实现这些应用程序11。 2 系统需求分析本章主要讲述了该系统的需求分析和本系统的基本流程。2.1 需求分析随着星级酒店规模的不断扩大,酒店客房间数的急剧增加,客人流动量也在不断成倍增长。面对庞大的信息量,就需要有酒店管理系统来提高客房管理工作的效率。通过这样的系统,我们可以做到信息的规范管理,从而减少了管理方面的工作量。 传统手工的客房管理,管理过程繁琐而复杂,执行效率低,并且易于出错。通过这样的系统,我们可以做到信息的规范管理,实现了客房管理的系统化、规范化,这样不仅减少了管理工作量,还提高了管理效率,降低了管理成本12。2.2 功能需求酒店管理系统主要有以下功能:管理员登陆,客房查询,客人登记,退房结账等,具体为(1):管理员登陆 :验证管理员的账号密码,修改密码。(2):客房查询:查询房间号,房间状态,房间价格和房间类型和设备等。(3):客人登记:登记客人账号,证件号,联系电话等。(4):退房结账:退房,结账。2.3 系统流程图系统流程图如图2.1所示。图2.1系统流程图3 系统数据库设计该系统用SQL Server 2000做后台数据库,本章详细介绍了系统的基本框架。3.1 局部E-R图(1)服务员属性图如图3.1所示。图3.1服务员属性图(2)客房属性图如图3.2所示。图3.2客房属性图(3)客房类型属性图如图3.3所示。图3.3客房类型属性图(4)顾客属性图如图3.4所示。图3.4顾客属性图(5)预订记录属性图如图3.5所示。图3.5顾客属性图(6)住宿记录属性图如图3.6所示。图3.6住宿记录属性图3.2 整体E-R图整体E-R图如图3.7所示。图3.7整体E-R图3.3 数据库表设计本节主要讲述了该系统的各个表格及联系。3.3.1 各表设计该系统采用了SQL Server2000数据库,数据库名称为宾馆住宿系统.数据库包含以下几个表:住宿记录表、客房表、客房类型表、服务员表、顾客表、预订记录表。如下各图所示。图3.8服务员表图3.9客房表图3.10客房类型表图3.11顾客表图3.12预订记录表图3.13住宿记录表3.3.2 关系图对应关系图如图3.14所示13。图3.14关系图3.3.3 视图设计本设计中用客房表,客房类型表,住宿记录表和顾客表设计了一个的视图14,用于客户结算,如图3.15所示。图3.15为客户结算设计的视图本设计还用客房表,客房类型表设计了一个视图用与房间信息的查询如图3.16所示。图3.16为房间信息查询设计的视图4 系统界面设计及代码本系统采用VC+高级语言的MFC类开发前台界面。4.1 关于MFCMFC,微软基础类(Microsoft Foundation Classes),同VCL类似,是一种Application Framework,随微软Visual C+ 开发工具发布。目前最新版本为10.0(截止2011年3月),并且发布了中文版。该类库提供一组通用的可重用的类库供开发人员使用。大部分类均从CObject 直接或间接派生,只有少部分类例外15。 MFC 应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程序对象)组成。MFC 提供了MFC AppWizard 自动生成框架。 Windows 应用程序中,MFC 的主包含文件为Afxwin.h。 此外MFC的部分类为MFC/ATL 通用,可以在Win32 应用程序中单独包含并使用这些类。 由于它的易用性,初学者常误认为VC+开发必须使用MFC。这种想法是错误的。作为Application Framework,MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32 程序设计9。4.2 VC+ 6.0访问SQL Server数据库的原理MFC是 Microsoft Foundation Class(微软基础类库)的缩写,它的设计目标是简化开发人员的工作。MFC 使开发人员创建基于 Windows 的应用程序,而不必掌握下层的Windows体系结构。由于数据库应用程序是管理数据的重要方面,Microsoft开发了 ODBC API的封装程序,为 ODBC编程提供了一个面向对象的方法。MFC对 ODBC的封装主要是开发了 CDatabase类和 CRecordSet类16。4.2.1 CDatabase类 CDatabase类用于应用程序建立同数据源的连接。 CDatabase类包含一个 m_hdbc变量,它代表了数据源的连接句柄。如果要建立 CDatabase类的实例,应先调用该类的构造函数,再调用 Open 函数,通过调用,初始化环境变量,并执行与数据源的连接。关闭数据源连接的函数是 Close。CDatabase类提供了对数据库进行操作的函数,为了执行事务操作,CDatabase类提供了BeginTrans 函数,当全部数据都处理完成后,可以通过调用 CommitTrans 函数提交事务,或者在特殊情况下通过调用 Rollback函数将处理回退。CDatabase 类提供的函数可以用于返回数据源的特定信息,例如通过 GetConnect 函数返回在使用函数 Open 连接数据源时的连接字符串,通过调用 IsOpen 函数返回当前的CDatabase实例是否已经连接到数据源上,通过调用 CanUpdate函数返回当前的 CDatabase实例是否是可更新的,通过调用 CanTransact 函数返回当前的 CDatabase实例是否支持事务操作等等11。总之,CDatabase类为C+数据库开发人员提供了 ODBC的面向对象的编程接口。4.2.2 CRecordSet类要实现对结果集的数据操作,就要用到 CRecordSet类。CRecordSet 类定义了从数据库接收或者发送数据到数据库的成员变量,CRecordSet 类定义的记录集可以是表的所有列,也可以是其中的一列,这是由 SQL语句决定的。CRecordSet 类的成员变量 m_hstmt 代表了定义该记录集的 SQL 语句句柄,m_nFields成员变量保存了记录集中字段的个数,m_nParams 成员变量保存了记录集所使用的参数个数。CRecordSet的记录集通过 CDatabase实例的指针实现同数据源的连接,即 CRecordSet的成员变量 m_pDatabase。如果记录集使用了 WHERE 子句,m_strFilter 成员变量将保存记录集的 WHERE 子句的内容,如果记录集使用了 ORDER BY 子句,m_strSort 成员变量将保存记录集的ORDER BY 子句的内容。由多种方法可以打开记录集,最常用的方法是使用 Open 函数执行一个 SQL SELECT语句。有如下四种类型的记录集:(1)CRecordset:dynaset: 动态记录集,支持双向游标,并保持同所连接的数据源同步,对数据的更新操作可以通过一个 fetch操作获取。 (2)CRecordset:snapshot: 静态快照,一旦形成记录集,此后数据源的所有改变都不能体现在记录集里,应用程序必须重新进行查询,才能获取对数据的更新。该类型记录集也支持双向游标。(3)CRecordset:dynamic: 同 CRecordset:dynaset 记录集相比,CRecordset:dynamic 记录还能在 fetch 操作里同步其它用户对数据的重新排序。(4)CRecordset:forwardOnly:除了不支持逆向游标外,其它特征同 CRecordset:snapshot 相同17。4.2.3 记录查询使用 CRecordSet 的 Open()和 Requery()成员函数可以实现记录查询。需要注意的是,在使用 CRecordSet 的类对象之前,必须使用 CRecordSet 的成员函数 Open()来获得有效的记录集。一旦使用过Open()函数,再次查询时使用 Requery()函数就可以了。在调用 Open()函数时,如果已经将一个打开的 CDatabase 对象指针传递给 CRecordSet 类对象的m_pDatabase成员变量,那么,CRecordSet类对象将使用该数据库对象建立 ODBC连接;否则,如果 m_pDatabase 为空指针,对象就需要就新建一个 CDatabase 类对象并使其与缺省的数据源相连,然后进行 CRecordSet类对象的初始化。缺省数据源由GetDefaultConnect()函数获得。也可以通过特定的 SQL 语句为 CRecordSet 类对象指定数据源,并以它来调用CRecordSet类的Open()函数,例如: myRS.Open(AFX_DATABASE_USE_DEFAULT,strSQL); 如果没有指定参数,程序则使用缺省的 SQL 语句,即对在 GetDefaultSQL()函数中指定的SQL语句进行操作,代码如下: CString CMyRS:GetDefaultSQL() return _T(Name,Age); 对于 GetDefaultSQL()函数返回的表名,对应的缺省操作是 SELECT语句,例如: SELECT * FROM BasicData,MainSize 在查询过程中,也可以利用 CRecordSet 类的成员变量 m_strFilter 和 m_strSort 来执行条件查询和结果排序。 m_strFilter 用于指定过滤字符串,存放着 SQL语句中关键字WHERE后的条件语句;m_strSort 用于指定用于排序的字符串,存放着 SQL语句中关键字 ORDER BY 后的字符串。例如: myRS.m_strFilter=Name=刘鹏; myRS.m_strSort=Age; myRS.Requery(); 数据库查询中对应的 SQL语句为: SELECT * FROM BasicData,MainSize WHERE Name=刘鹏 ORDER BY Age除了直接赋值给成员变量 m_strFilter 以外,还可以通过参数化实现条件查询。利用参化可以更直观、更方便地完成条件查询任务。参数化方法的步骤如下:(1) 声明参变量,代码如下: CString strName; int nAge; (2) 在构造函数中初始化参变量如下: strName =_T(); nAge =0; m_nParams=2; (3) 将参变量与对应列绑定,代码如下: pFX-SetFieldType(CFieldExchange:param) RFX_Text(pFX,_T(Name), strName); RFX_Single(pFX,_T(Age), nAge);完成以上步骤之后就可以利用参变量进行条件查询了,代码如下: m_pmyRS-m_strFilter=Name=? AND age=?; m_ pmyRS - strName =刘鹏; m_ pmyRS -nAge=26; m_ pmyRS -Requery(); 参变量的值按绑定的顺序替换查询字串中的“?”通配符。如果查询的结果是多条记录,可以利用CRecordSet类的成员函数Move(), MoveNext(), MovePrev(),MoveFirst()和 MoveLast()来移动记录光标。4.2.4 记录添加使用 AddNew()成员函数能够实现记录添加,需要注意的是,在记录添加之前必须保证数据库是以允许添加的方式打开的,代码如下: m_ pmyRS -AddNew(); / 在表的末尾添加新记录 m_ pmyRS -SetFieldNull(&(m_pSet-m_type), FALSE); m_ pmyRS -m_strName=刘鹏; / 输入新的字段值 m_ pmyRS -m_nAge=26; / 输入新的字段值 m_ pmyRS - Update(); / 将新记录存入数据库 m_ pmyRS -Requery(); / 重新建立记录集 4.2.5 记录删除调用 Delete()成员函数能够实现记录删除,在调用 Delete()函数后不需调用 Update()函数,代码如下: m_ pmyRS -Delete(); if (!m_ pmyRS -IsEOF() m_ pmyRS -MoveNext(); else m_ pmyRS -MoveLast();4.2.6 记录修改调用 Edit()成员函数可以实现记录修改,在修改完成后需要调用 Update()将修改结果存入数据库,代码如下: m_ pmyRS -Edit(); / 修改当前记录 m_ pmyRS -m_strName=刘波; / 修改当前记录字段值 . m_ pmyRS -Update(); / 将修改结果存入数据库 m_ pmyRS -Requery();撤销数据库更新操作:如果用户增加或者修改记录后希望放弃当前操作,可以在调用 Update()函数之前调 用Move()函数,就可以使数据库更新撤销了,代码如下: CRecordSet:Move(AFX_MOVE_REFRESH); 该函数用于撤消增加或修改模式,并恢复在增加或修改模式之前的当前记录。其中参数AFX_MOVE_REFRESH 的值为零。4.2.7 直接执行 SQL语句虽然通过 CRecordSet 类我们可以完成大多数的数据库查询操作,而且在 CRecordSet类的Open()成员函数中也可以提供 SQL语句,但有的时候我们还想进行一些其他操作, 例如建立新表、删除表、建立新的字段等等,这时就需要用到 CDatabase 类的直接执行 SQL语句的机制。通过调用 CDatabase 类的 ExecuteSQL()成员函数就能够完成 QL 语句的直接执行,代码如下: BOOL CMyDB:ExecuteSQLWithReport (const CString& strSQL) TRY m_pMyDB-ExecuteSQL(strSQL); / 直接执行SQL语句 CATCH (CDBException,e) CString strMsg; strMsg.LoadString(IDS_EXECUTE_SQL_FAILED); strMsg+=strSQL; return FALSE; END_CATCH return TRUE; 需要注意的是,由于不同 DBMS 提供的数据操作语句不尽相同,直接执行 SQL 语句可能会破坏软件的DBMS无关性,因此在应用中应当慎用此类操作。 MFC ODBC 的数据库操作过程:同 ODBC API编程类似,MFC的ODBC编程也要先建立同 ODBC数据源的连接,这个过程由一个 CDatabase 对象的 Open 函数实现。然后 CDatabase 对象的指针将被传递到CRecordSet 对象的构造函数里,使 CRecordSet 对象与当前建立起来的数据源连接结合起来。 完成数据源连接之后,大量的数据库编程操作将集中在记录集的操作上。CRecordSet类的丰富的成员函数可以让开发人员轻松地完成基本的数据库应用程序开发任务。当然,完成了所有的操作之后,在应用程序退出运行状态的时候,需要将所有的记录集关闭,并关闭所有同数据源的连接。4.3 登陆窗口界面及代码登录界面如图4.1所示,登录时,需要输入用户名以及,并单击“确定”按钮,完成登录过程。图4.1 登陆界面登陆代码如下:CDL_Dialog dlg;if(IDOK=dlg.DoModal()CString str;str.Format(SELECT * FROM 服务员 WHERE 登录用户名=%s,dlg.m_user);CUserInfo m_Set;m_Set.Open(CRecordset:dynaset, str);if(m_Set.IsEOF()=TRUE)MessageBox(NULL,输入的用户名不存在!,用户名错误,MB_ICONINFORMATION);return FALSE;else if(m_Set.m_column3 = dlg.m_passwd)return TRUE;else MessageBox(NULL,输入的密码不正确!,密码错误,MB_ICONINFORMATION);return FALSE;else return FALSE;4.4 客房信息查询用于客房状态的查询,客房查询对话框如图4.2所示。图4.2 客房查询对话框4.4.1 按房间号查询查询界面如图4.3所示。图4.3客房查询对话框对应代码如下:void CKFCX1:OnButtonCX() UpdateData(TRUE);CString str;str.Format(select * from VIEW_KFCX where 客房编号=%d,m_num);CKFCXVIEW1 room;room.Open(CRecordset:dynaset, str);if(room.IsEOF()!=TRUE)m_zhuangtai=int(room.m_column3);m_weizhi=room.m_column4;m_mianji=float(room.m_column5);m_chuangwei=int(room.m_column6);m_jiage=float(room.m_column7);m_kongtiao=int(room.m_column8);m_dainshi=int(room.m_column9);UpdateData(FALSE);elseMessageBox(输入的房间号不存在!,操作异常,MB_ICONINFORMATION);4.4.2 查询剩余房间信息剩余房间信息查询对话框如图4.4所示。图4.4 查询剩余房间对话框对应代码如下:void CKFSYCX_Dialog:OnButton1() CString str;str.Format(select * from VIEW_KFCX where 客房状态=1);CKFCXVIEW1 room;room.Open(CRecordset:dynaset, str);room.MoveNext();if(room.IsEOF()!=TRUE)m_num=int(room.m_column1);m_zhuangtai=int(room.m_column3);m_weizhi=room.m_column4;m_mianji=float(room.m_column5);m_chuangwei=int(room.m_column6);m_jiage=float(room.m_column7);m_kongtiao=int(room.m_column8);m_dianshi=int(room.m_column9);UpdateData(FALSE);elseMessageBox(已是最后一条记录,另外无剩余房间!,操作异常,MB_ICONINFORMATION);4.5 顾客信息录入用于登记顾客的基本信息方便入住和退房,录入界面如图4.5所示。图4.5客户信息录入界面对应代码如下:void CKHxinxi:OnOK() UpdateData(TRUE);CDatabase cnn1;CString str;cnn1.OpenEx(DSN=lianxi,0);str.Format(insert into 顾客(姓名,性别,工作单位,客户身份证号,联系电话,详细地址) values (%s,%d,%s,%s,%s,%s), m_name,m_sex, m_danwei,m_id,m_tel, m_dizhi);cnn1.ExecuteSQL(str);CDialog:OnOK();4.6 入住登记界面入住登记界面如图4.6所示。图4.6登记界面此界面用于登记客户信息与选择的房间,登记后查询房间状态后才能入住。登记代码如下:CDJ_Dialog dlg_dj1;void CMainFrame:OnDJruzhu() dlg_dj1.DoModal();UpdateData(TRUE);CString str;str.Format(select * from 客房 where 客房编号=%d,dlg_dj1.m_KFnumber );CKF room;room.Open(CRecordset:dynaset, str);if(room.m_column3=1)CDatabase cnn1;cnn1.OpenEx(DSN=lianxi,0);str.Format(insert into 住宿记录(客房编号,客户身份证号,押金,入住时间) values (%d,%s,%d,%Y-%m-%d %H:%M:%S),dlg_dj1.m_KFnumber,dlg_dj1.m_KHid,dlg_dj1.m_money,dlg_dj1.m_RZshijian);cnn1.ExecuteSQL(str);CDatabase cnn2;cnn2.OpenEx(DSN=lianxi,0);str.Format(update 客房 set 客房状态=2);cnn2.ExecuteSQL(str);else MessageBox(NULL,无法登记入住,操作异常!,MB_ICONINFORMATION);4.7 退房结算界面退房结算界面如图4.7所示。图4.7退房结算界面用于客户的结账,代码如下:void CJS_Dialog:OnChangeEdit1() CString str;UpdateData(TRUE);str.Format(select * from VIEW_JS where 客房编号= %d,m_KFnumber);CView_js m_Set;m_Set.Open(CRecordset:dynaset, str);if(m_Set.IsEOF()!=TRUE)m_KFleixing=m_Set.m_column2;m_KFdanjia=float(m_Set.m_column3);m_KFyajin=float(m_Set.m_column8);m_GKname=m_Set.m_column5;time_t tt=m_Set.m_column6.GetTime();COleDateTime cOleTime(tt);m_RZshijian=cOleTime;m_GKid=m_Set.m_column4; SYSTEMTIME systime;VariantTimeToSystemTime(m_RZshijian, &systime);CTime cTime(systime);CTimeSpan span=m_JSshijian-cTime; int iDay=span.GetDays(); /获取入住和结算这两段时间间隔共有多少天m_KFzongjia=m_KFdanjia*iDay;UpdateData(FALSE);elseMessageBox(输入的房间号不存在!,房间号不存在,MB_ICONINFORMATION);void CMainFrame:OnJieSuan() CJS_Dialog dlg_dj2;dlg_dj2.DoModal();UpdateData(TRUE);CDatabase cnn1;CString str;cnn1.OpenEx(DSN=lianxi,0);str.Format(update 住宿记录 set 结算时间=%Y-%m-%d where 客房编号=%d,dlg_dj2.m_JSshijian,dlg_dj2.m_KFnumber);cnn1.ExecuteSQL(str);CDatabase cnn2;cnn2.OpenEx(DSN=lianxi,0);str.Format(update 客房 set 客房状态=1 where 客房编号=%d,dlg_dj2.m_KFnumber);cnn2.ExecuteSQL(str);5 系统测试本章主要讲述了系统测试的目的,过程和结果。5.1 测试目的在系统开发过程中存在许多复杂的问题,为了保证系统在投入运行中,保证软件的质量和运行的安全行,测试过程是必不可少的,同时也是关键的18。测试是为了发现软件在运行过程中所出现的问题,并在出现问题时能够及时的做出相应的修改19。测试的目标是保证系统在投入运行中的安全性和稳定性20。5.2 测试记录与运行结果接下来详细介绍测试过程和结果。5.2.1 登陆测试在登记界面输入错误的账号密码(测试时输入错误账号为11,错误密码为11)如图5.1所示。图5.1输入错误账号密码当登陆账号密码错误时,结果如图5.2所示。图5.2登陆错误时只有在输入正确的账号密码之后才能进入主程序界面。主程序界面如图5.3所示。图5.3主程序界面5.2.2 查询房间测试在主程序界面下选择:订房信息管理查询剩余房间信息即弹出客房查询对话框,选择按房间号查询,输入客房编号(如101)即可,再按查询即可,如图5.4所示。图5.4客房信息查询5.2.3 剩余客房信息查询测试若在客房查询对话框中选择查询剩余客房信息,即可弹出查询剩余房间对话框如图5.5所示。图5.5剩余房间查询对话框按下一天记录就可以查询剩余的空余房间信息,若为最后一间空房,再按下一条记录回弹出图5.6的提示框。图5.6空房记录读完的提示框5.2.4 客户信息录入测试在主程序界面中选择:订房信息管理添加客户信息,即可弹出客户信息对话框,输入基本资料如图5.7所示。图5.7客户信息录入输入后点击确定即可记录在数据库中的顾客表中。5.2.5 入住登记测试在主程序界面中选择订房信息管理入住登记,即可弹出登记界面。输入登记信息如图5.8所示图5.8登记信息当向系统把信息输入完成后,点击“确定入住”的按钮,系统先访问数据库,确定所要登记入住的客房状态为空,然后在向住宿记录关系表中插入一条住宿信息的同时,将刚才所登记的客房状态改为已有人入住。当登记消息不对时会出现如图5.9所示的提示框图5.9登记出错时的提示框5.2.6 退房测试在主程序界面下选择结算信息管理添加结算信息即可弹出退房界面。退房时要求输入房间编号,当输入的编号不纯在时会弹出如图5.10所示的提示框图5.10 房间编号出错时的提示框当输入正确的退房房间编号时则显示正确的房间信息与顾客信息,如图5.11所示图5.11结算信息表当选择完入住时间后会自动结算所要缴纳的金额。点击确定后修改房价状态为空房。结算时间的下拉菜单入图5.12所示图5.12结算时间下拉菜单经过测试,对于拥有正确管理员帐号和密码的管理员可以进入宾馆住宿管理系统主菜单进行权限所允许的各项功能操作,并能正确实现已完成的各种功能。对不拥有正确帐号和密码的用户则拒绝其进入系统,以保护系统的秘密数据和保证其运行安全,防止恶意破坏。6 结束语曾经住宿在宾馆时总是惊讶于各个宾馆住宿系统带来的快捷便利,感叹设计者的智慧与创意,如今没想到自己的毕业设计题目为宾馆住宿管理系统这让我既兴奋又倍感压力:我兴奋自己终于可以尝试这个倍感兴趣的课题,又怕自己不能做好而倍感压力。在2个多月的实习期内,我对宾馆住宿管理系统的开发从纸上谈兵到最终设计完成。回顾整个开发过程,虽然遇到了很多困难,在自己的不懈努力和老师同学的帮助下最终都一一解决,其中比较深刻的几点总结如下:第一,对宾馆住宿管理系统的具体业务流程不太熟悉让我一开始不知如何下手,通过在图书馆和网上知识的查阅,完成了宾馆住宿系统的分析和设计结构,确定的整体的框架。第二,软件开发工具的不熟练让我举步维艰,在老师的指导,图书馆的书籍学习以及自己的不断练习中,终于慢慢熟练掌握了SQL SERVER 2000和VC+6.0,最终完成了设计。第三,遇到困难时一定要不耻下问,要有团队合作的精神。在设计过程中总能碰到一个又一个困难,我把这些问题都罗列在小本子上,碰到老师和同学是就能准确地提出来免得遗忘。比如我在测试代码时免不了运行错误,有时运行错误之后夹带着类文件同时消失,刚开始我只能重新再次编写,既浪费时间又浪费精力。后来经过老师的指导,发现只要删除扩展名分别为ops,clw,plg,ncb和opt的这5个文件之后再重新进入程序就解决了。在把自己的一个又一个问题都解决完之后,程序也就完成了。第四,只有不断的实践才能不断的完善程序。在软件开发的过程中,开始单独编写菜单、窗口、表时,进展还是比较顺利,但当要将这些字段、表、窗口关联在一起的时候,我被搞得晕头转向。最后不得不重新整理表,修改字段名称,到 SQL Server 2000中去修改数据库,才将系统的结构最终确定下来。对于源代码的编写,也是经过反复的修改测试,才使系统的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版床上用品原材料供应合同
- 绿色生态餐厅全面承包合作协议
- 关于幼儿园大班个人方案
- 银行信贷管理课件
- 学前教育宣传月的活动方案
- 铃儿响叮当说课课件
- 新建年产30万吨改性磷石膏综合利用项目可行性建设分析报告参考范文
- 2025年中国梅花鹿养殖行业市场调查研究及投资战略咨询报告
- 小区用电移交申请报告
- 美术教研组工作总结
- 公安辅警面试试题及答案
- 2025年中国林业行业市场深度分析及投资战略研究报告
- 2025年资阳市税务系统遴选面试真题带详解含答案
- 安徽合肥市第三十八中学2024-2025学年七年级下学期期末质量检测英语试卷(含答案无听力原文及音频)
- 儿童创意山水画课件
- 呼叫中心培训管理办法
- 陕西省西安市高新一中2024-2025学年高一下学期期中语文试题(含答案)
- 2025纪检监察综合业务知识考试题库及答案
- 四年级上册美术课件-16会说话的手(一) |苏少版 (共17张PPT)
- 文学院学生素质测评及奖学金评比办法
- 太阳能光热发电基础知识学习课件
评论
0/150
提交评论