版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
另外,在退房结账模块内,还存在如下费用计算方法:应收金额=住宿费用+消费金额;实收金额=应收金额-预收押金。4.4.4更换房间规则由于客人的住宿习惯不一样,有些客人会在住宿过程中要求更换客房,例如客人要求换一间光线较好的客房或者空调房等等,这就要求本系统应该具备换房功能。换房时应该注意的问题是:为减少住宿费用计算的麻烦,顾客只能更换同类房间,且房价不变。换房之后,应该对原客房、目标客房的状态进行调整。4.4.5单据编号设定规则在本系统中,入住单号、预订单号及结账单号的生成方法如下:单据编号=“单据名称首字母组合”+“当天日期”+“当天入住顾客人数+1”例如:在2007第五章系统总体设计5.1系统功能结构通过系统需求分析可知,本系统可以分为以下若干个功能模块:登记入住、客房预订、更换房间、退房结账、信息查询、消费记账、营业情况统计、商品信息设置、客房信息设置、用户管理、数据库维护和系统日志。如图5-1所示。小型酒店管理系统图5-1系统功能模块结构图小型酒店管理系统5.1.1客房预订模块客房预订模块可使顾客在抵店之前就登记好房间,待到达之后即可办理入住手续。该模块需要完成的功能主要有:(1)输入预订信息。主要包括预订单号、顾客姓名、顾客类型、顾客来源、公司名称、联系电话、预订房数、预订日期等;(2)取消预订。取消预订单,删除数据库中相应的记录;(3)预订入住。为已预订客房的顾客办理登记入住,同时删除相关的预订信息。(4)更新客房状态。将顾客所预订客房的状态由“空闲”改为“预订”。5.1.2登记入住模块登记入住模块实现顾客登记入住功能。可快速完成顾客信息输入、选择房间(一次可选择多个房间)、收取押金等顾客入住手续。该模块的功能主要有:(1)登记入住。输入顾客开单信息,主要包括入住单号、主客姓名、证件类型、证件号码、性别、公司名称、联系电话、预收押金等;(2)更新客房状态。将顾客所入住客房的状态由“空闲”改为“入住”。5.1.3更换房间模块用户可根据顾客的要求更换房间,但只能更换同类房间,且房价不变。5.1.4信息查询模块在该模块中按设定条件查询店内相关信息,包括入住客人信息、历史客人信息、预订单信息以及顾客账单信息等,主要功能有:(1)查询客人信息。包括入住客人信息、预订单信息和入住历史信息;(2)查询结账单信息。包括所有已结账顾客的账单信息。5.1.5消费记账模块该模块记录顾客在店内的消费信息,包括餐饮、娱乐及零售商品的消费情况。该模块需要完成的功能主要有:(1)添加顾客消费记录。主要包括:入住单号、商品名称、商品类型、购买价格、数量和消费金额;(2)消费转单。将消费记录由一个账单转到另一个账单上;(3)消费退单。即删除消费记录,取消商品交易。5.1.6退房结账模块该模块实现顾客离店时的费用结算功能。可以对顾客在店期间的住宿费用及商品消费一次性结账。主要包含以下功能:(1)收银结账。输入结账单信息,主要包括结账单号、入住单号、主客房间、顾客姓名、公司名称、住宿费用等。同时将入住单相关记录转入入住历史中;(2)可对特殊顾客进行免单操作,“免费”账单所有费用清零,结算状态标记为“免费”;(3)更新客房状态。将顾客结账客房的状态由“入住”改为“空闲”。5.1.7营业状况统计模块该模块可查询指定时间段内的营业情况,包括客房收入、各种商品销售数量、总销售金额等,可为酒店管理人员的经营决策提供参考依据。5.1.8客房信息设置模块该模块实现对酒店客房信息进行管理,设置客房名称、类型、数量等信息。系统需要完成的功能主要有:(1)客房类型的输入、更新和删除,包括类型名称、客房价格和备注;(2)客房信息的输入、更新和删除,包括客房编号、类型名称、客房位置、室内电话、客房状态、客房描述、单据编号、备注信息。5.1.9商品信息设置模块该模块实现对商品信息的管理,设置商品类别和库存信息。该模块的功能主要有:(1)商品类型的输入、更新和删除,包括类型编号、商品类型和是否需要服务生服务;(2)商品信息的输入、更新和删除,包括商品编号、商品名称、商品类别、商品价格和商品库存数量。5.1.10房态管理模块一般系统可自动管理客房状态,而在该模块中可查询或手动修改客房状态。系统需要完成的功能主要有:(1)查看客房状态。一般的客房状态包括:空闲、预订、入住、自用、维修等;(2)客房状态修改。可手动将客房状态从一个状态转变为另一个状态。5.1.11用户管理模块该模块实现用户信息管理,系统将用户分为超级用户和普通用户两级权限。只有超级用户才能使用该模块,普通用户无此权限。该模块主要完成添加、修改和删除用户信息的功能,包括用户名称、密码、用户权限和当前状态。5.1.12数据库维护模块数据库的维护对于本系统至关重要,通过对于数据库的清理、备份和还原,既可使系统的维护工作更加简单易用,又可使系统能够更加安全可靠的运行。其主要功能如下:(1)清除指定时间段内或所有营业数据,包括单据信息、消费记录和入住历史信息等;(2)清空所有数据库表,即删除所有数据,包括客房信息;(3)备份和还原数据库,将数据库备份到用户指定的路径或从指定的路径还原数据库。5.1.13系统日志模块系统日志记录用户对于系统数据的添加、修改和删除操作,如客房信息设置、商品信息设置和房态设置等,而不记录用户一般性的营业操作,如登记入住、客房预订等。5.2系统流程图通过对系统功能的分析,可得到用户操作的一般流程,如图5-2所示。用户登录系统时,系统将根据用户权限对其进行相应的功能限制。一般普通用户可拥有前台登记、收银结账以及对商品和客房信息进行查询和设置的权限;而超级用户除拥有普通用户的所有权限外,还可进行系统用户设置、数据库维护和查看系统日志。图5-2系统流程图第六章数据库设计6.1数据库需求分析酒店管理系统需要提供信息的查询、添加、修改以及删除等功能。这就要求数据库能充分满足各种信息的输出和输入。通过对上述系统功能的分析,根据酒店管理系统的需求,总结出如下的需求信息:1.每个客房都有唯一的客房编号;2.每个客房只属于一种已存在的客房类型,否则为空;3.每种客房类型下可有多个房间;4.如果一个客房类型下存在客房,则该类型不可删除;5.每条入住单下可以有多个客房;6.每条入住单下可以有多条消费记录;7.每条消费记录只属于一条入住单;8.每条入住单只生成一条结账单;9.每条入住单只生成一条入住历史记录;10.每个商品只属于一种已存在的商品类别,否则为空;11.每种商品类别下可有多个商品;12.如果一个商品类别下存在商品,则该类别不可删除;13.一个商品可产生多条消费记录;14.一条消费记录只对应一个商品。经过对上述系统功能的分析和需求总结,设计如下数据项:1.客房信息:客房编号、类型名称、客房位置、室内电话、客房状态、客房描述、据编号、备注信息。2.客房类型:类型名称、客房价格、备注。3.商品信息:商品编号、商品名称、商品类别、商品价格、库存数量、进货标记。4.商品类别:类别编号、商品类别、是否需要服务生服务。5.消费记录:记录编号、入住单号、商品名称、商品类别、购买价格、购买数量、消费金额、购买日期。6.入住单:入住单号、顾客姓名、顾客类型、顾客来源、证件类型、证件号码、性别、公司名称、联系电话、顾客人数、主房编号、类型名称、客房价格、入住价格、折扣比例、预收金额、抵店时间、预住天数、备注。7.预订单:预订单号、顾客姓名、顾客类型、顾客来源、公司名称、联系电话、预订房数、预订日期、预抵时间、保留时间、备注。8.结账单:结账单号、入住单号、顾客姓名、公司名称、客房编号、抵店时间、离店时间、住宿费用、消费金额、应收金额、预收金额、实收金额、结算状态、是否开票、备注信息。9.入住历史:入住单号、顾客姓名、性别、顾客类型、顾客来源、顾客人数、证件类型、证件号码、公司名称、联系电话、主房编号、类型名称、客房价格、入住价格、折扣比例、预收金额、抵店时间、备注信息、离店时间。6.2概念结构设计概念设计用于信息世界的建模,是现实世界到信息世界的第一层抽象。一般采用实体-联系方法,即E-R图。根据数据库需求分析规划出的实体有:客房类型实体、客房信息实体、商品信息类别实体、商品实体、消费记录实体、入住单实体、预订单实体、结账单实体和入住历史实体等。各个实体具体的实体属性图如下:客房类型客房价格客房类型客房价格类型名称备注图6-1客房类型实体属性图客房信息客房信息类型名称客房编号客房位置室内电话客房描述单据编号备注信息客房状态图6-2客房信息实体属性图商品类别商品类别商品类别商品类别是否需要服务生服务类别编号图6-3商品类别实体属性图商品信息商品信息进货标记商品名称商品价格商品类别商品编号库存数量图6-4商品信息实体属性图消费记录记录编号消费记录记录编号顾客姓名商品类别商品名称入住单号购买价格购买数量消费金额图6-5消费记录实体属性图入住单入住单证件类型顾客姓名入住价格抵店时间预住天数入住单号…………图6-6入住单实体属性图在入住单实体中主要包括以下属性:入住单号、顾客姓名、顾客类型、顾客来源、证件类型、证件号码、性别、公司名称、联系电话、顾客人数、主房编号、类型名称、客房价格、入住价格、折扣比例、预收金额、抵店时间、预住天数、备注等。预订单顾客类型预订单顾客类型顾客姓名预抵时间保留时间预订日期预订单号……图6-7预订单实体属性图在预订单实体中主要包括以下属性:预订单号、顾客姓名、顾客类型、顾客来源、公司名称、联系电话、预订房数、预订日期、预抵时间、保留时间、备注等。结账单号结账单号结账单顾客姓名结账单顾客姓名入住单号消费金额离店时间结算状态……图6-8结账单实体属性图在结账单实体中主要包括以下属性:结账单号、入住单号、顾客姓名、公司名称、客房编号、抵店时间、离店时间、住宿费用、消费金额、应收金额、预收金额、实收金额、结算状态、是否开票、备注信息等。入住历史顾客姓名入住单号号入住历史顾客姓名入住单号号入住价格离店时间折扣比例……记录编号图6-9入住历史实体属性图在入住历史实体中主要包括以下属性:记录编号、入住单号、顾客姓名、顾客类型、顾客来源、证件类型、证件号码、性别、公司名称、联系电话、顾客人数、主房编号、类型名称、客房价格、入住价格、折扣比例、预收金额、抵店时间、离店时间、备注信息等。通过对各个实体及其属性的描述,我们进一步得到各实体之间的E-R图,如图6-10所示。NNNM结账单入住历史1客房信息11属于商品类别1客房类型属于结账1更新P1生成商品信息111离店111M预订单入住消费记录记账入住单NNNM结账单入住历史1客房信息11属于商品类别1客房类型属于结账1更新P1生成商品信息111离店111M预订单入住消费记录记账入住单图6-10实体E-R图6.3逻辑结构设计根据数据库概念结构设计,将数据库概念结构转化为SQLServer2000所支持的实际数据模型,即数据库的逻辑结构。其各个数据库表的设计结果如下:表6-1客房类型表列名数据类型可否为空是否主键说明类型名称Varchar(20)NOTNULL是客房类型名称客房价格Money(8)NULL不同类型客房单价备注Varchar(80)NULL不同类型客房单价表6-2客房信息表列名数据类型可否为空是否主键说明客房编号Varchar(12)NOTNULL是客房编号类型名称Varchar(20)NOTNULL客房类型名称客房位置Varchar(20)NULL客房所在位置室内电话Numeric(9)NULL客房电话客房状态Varchar(10)NULL客房状态客房描述Varchar(100)NULL客房环境描述单据编号Varchar(20)NULL单据标记备注信息Varchar(120)NULL客房备注信息表6-3入住单表列名数据类型可否为空是否主键说明入住单号Varchar(20)NOTNULL是入住单编号主客姓名Varchar(30)NULL顾客姓名顾客类型Varchar(10)NULL顾客类型顾客来源Varchar(20)NULL区分顾客性质证件类型Varchar(10)NULL证件类型证件号码Varchar(30)NULL身份证件编号性别Varchar(4)NULL顾客性别公司名称Varchar(50)NULL顾客所在公司名称联系电话Numeric(9)NULL顾客联系电话顾客人数Int(4)NULL顾客入住人数主房编号Varchar(12)NULL主客的房间编号类型名称Varchar(20)NULL主客房间的类型客房价格Money(8)NULL客房预定价格入住价格Money(8)NULL顾客实际入住价格折扣比例Decimal(4,2)NULL客房预定价格的折扣预收金额Money(8)NULL押金抵店时间Datetime(8)NULL顾客到达时间预住天数Int(4)NULL顾客预定入住天数备注Varchar(80)NULL备注信息表6-4预订单表列名数据类型可否为空是否主键说明预订单号Varchar(20)NOTNULL是预订单编号顾客姓名Varchar(30)NULL顾客姓名顾客类型Varchar(10)NULL顾客类型顾客来源Varchar(20)NULL区分顾客性质公司名称Varchar(50)NULL顾客所在公司名称联系电话Numeric(9)NULL顾客联系电话预订房数Int(4)NULL预订房间数量预订日期Datetime(8)NULL预订客房的日期预抵时间Datetime(8)NULL预定抵达时间保留时间Datetime(8)NULL客房保留的最后时间备注Varchar(80)NULL备注信息表6-5结账单表列名数据类型可否为空是否主键说明结账单号Varchar(20)NOTNULL是结帐单编号入住单号Varchar(20)NOTNULL入住单编号顾客姓名Varchar(30)NULL顾客姓名公司名称Varchar(50)NULL顾客所在公司名称客房编号Varchar(12)NULL主客的房间编号抵店时间Datetime(8)NULL顾客到达时间离店时间Datetime(8)NULL顾客退房离店时间住宿费用Money(8)NULL住宿费用消费金额Money(8)NULL顾客在店内的消费金额应收金额Money(8)NULL应收金额预收金额Money(8)NULL已收押金实收金额Money(8)NULL实收金额结算状态Varchar(10)NULL结算状态是否开票Bit(8)NULL是否打印单据备注信息Varchar(100)NULL备注信息表6-6商品信息表列名数据类型可否为空是否主键说明商品编号Varchar(10)NOTNULL是商品编号商品名称Varchar(30)NOTNULL商品名称商品类别Varchar(20)NULL商品类别商品价格Money(8)NULL商品预设价格库存数量Int(4)NULL商品库存数量表6-7入住历史列名数据类型可否为空是否主键说明记录编号Int(4)NOTNULL是入住历史记录编号入住单号Varchar(20)NOTNULL入住单编号顾客姓名Varchar(30)NULL顾客姓名顾客类型Varchar(10)NULL顾客类型顾客来源Varchar(20)NULL顾客来源证件类型Varchar(10)NULL证件类型证件号码Varchar(30)NULL身份证件编号性别Varchar(4)NULL顾客性别公司名称Varchar(50)NULL顾客所在公司名称联系电话Numeric(9)NULL顾客联系电话顾客人数Int(4)NULL顾客入住人数主房编号Varchar(12)NULL主客的房间编号类型名称Varchar(20)NULL主客房间的类型客房价格Money(8)NULL客房预定价格入住价格Money(8)NULL顾客实际入住价格折扣比例Decimal(4,2)NULL客房预定价格的折扣预收金额Money(8)NULL押金抵店时间Datetime(8)NULL顾客到达时间离店时间Datetime(8)NULL顾客退房离店时间备注Varchar(80)NULL备注信息表6-8商品类别表列名数据类型可否为空是否主键说明类别编号Varchar(20)NOTNULL商品类别编号商品类别Varchar(20)NOTNULL是商品类别名称是否需要服务生Varchar(10)NULL是否需要服务生服务表6-9消费记录表列名数据类型可否为空是否主键说明记录编号Int(4)NOTNULL是消费记录编号入住单号Varchar(20)NOTNULL入住单编号商品名称Varchar(30)NULL商品名称商品类别Varchar(20)NULL商品类别购买价格Money(8)NULL商品购买价格购买数量Int(4)NULL商品购买数量消费金额Money(8)NULL消费金额购买日期Datetime(8)NULL顾客消费时间表6-10用户信息表列名数据类型可否为空是否主键说明用户名称Varchar(30)NOTNULL是系统用户名称用户密码Varchar(20)NULL系统用户密码用户权限Varchar(10)NOTNULL用户权限级别当前状态Varchar(10)NOTNULL用户状态表6-11系统日志列名数据类型可否为空是否主键说明操作时间Datetime(8)NOTNULL是系统用户操作时间用户名称Varchar(30)NULL系统用户名称内容摘要Varchar(20)NULL操作内容摘要操作内容Varchar(80)NULL系统用户操作情况6.4创建触发器本系统在入住单表中使用了一个触发器,实现的功能是进行入住单表记录删除操作的同时,将要删除的信息添加到入住历史中去。创建触发器如下:CREATEtriggerRZD_RZLSon入住单表fordeleteasbegininsertinto入住历史(入住单号,顾客姓名,性别,顾客类型,顾客来源,顾客人数,证件类型,证件号码,公司名称,联系电话,主房编号,类型名称,客房价格,入住价格,折扣比例,预收金额,抵店时间,备注信息,离店时间)select入住单号,顾客姓名,性别,顾客类型,顾客来源,顾客人数,证件类型,证件号码,公司名称,联系电话,主房编号,类型名称,客房价格,入住价格,折扣比例,预收金额,抵店时间,备注,离店时间=getdate()fromdeletedend第七章系统详细设计与实现7.1公共数据模块设计用公共模块来存放整个系统中公用的函数、全局变量等,使系统中的任何窗体模块都可以调用其中的函数、变量,可极大地提高系统开发的效率和代码重复利用率。在本系统中就创建了几个这样的模块。例如模块DataUpdate.vb,它可实现对数据库的连接,并可对数据库表中的数据进行更新操作。其具体代码如下:ImportsSystem.Data.SqlClient'命名空间,声明包含对SqlServer数据库的连接ModuleDataUpdatePublicUserNameAsString'用户名DimcomstrAsStringDimsqlconAsSqlConnection=NewSqlConnection("server=localhost;database=HMIS;uid=sa;pwd=;")'建立连接命令PublicFunctionXTRZ(ByValNRZYAsString,ByValCZNRAsString)AsIntegersqlcon.Open()'打开连接comstr="insertinto系统日志(操作时间,用户名称,内容摘要,操作内容)VALUES('"&Now&"','"&DataUpdate.UserName&"','"&NRZY&"','"&CZNR&"')"DimsqlcomAsNewSqlCommand(comstr,sqlcon)sqlcom.ExecuteNonQuery()'执行sql语句sqlcon.Close()'关闭连接EndFunctionPublicFunctionDelData(ByValstr1AsString,ByValstr2AsString)AsIntegersqlcon.Open()Ifstr2=""Thencomstr="deletefrom"&str1&""Elsecomstr="deletefrom"&str1&"where"&str2&""EndIfDimsqlcomAsNewSqlCommand(comstr,sqlcon)sqlcom.ExecuteNonQuery()sqlcon.Close()EndFunctionPublicFunctionUpdateData(ByValstr1AsString,ByValstr2AsString,ByValstr3AsString)AsIntegersqlcon.Open()Ifstr3=""Thencomstr="update"&str1&"set"&str2&""Elsecomstr="update"&str1&"set"&str2&"where"&str3&""EndIfDimsqlcomAsNewSqlCommand(comstr,sqlcon)sqlcom.ExecuteNonQuery()sqlcon.Close()EndFunctionEndModule7.2系统窗体构架图7-1系统窗体总构架图图7-2客房信息设置窗体构架图图7-3商品信息设置窗体构架图7.3系统界面设计7.3.1登录窗体设计(1)窗体功能描述本窗体是系统的启动窗体,实现对于用户身份的多重验证功能。具体描述如下:=1\*GB3①用户合法性验证。首先判断用户输入的用户名和密码是否正确,若正确,就进入用户状态判定,若错误;系统便发出警告信息。系统限定用户只有三次输入机会,三次之后本窗体自动关闭。=2\*GB3②用户当前状态判定。系统将用户的状态分为“可用”和“停用”。当用户的合法性得到验证时,则对用户的当前状态进行判定。若为“可用”,便进行用户权限判定;若为“停用”,系统发出警告信息,禁止用户登录。=3\*GB3③用户权限判定。即对于拥有登录权限的合法用户进行权限判定。如果是超级用户,将拥有系统的全部功能权限;如果是普通用户,则“用户设置”,“数据库维护”和“系统日志”三个窗体将被禁用,其相应的菜单栏标题也将变为灰色。(2)窗体设计创建一个名为“LoginForm.vb”的窗体,将Text属性改为“登录窗体”。并按图7-4进行界面设计。图7-4系统登录窗体登录窗体上所用的控件包括:窗体(Form),图像(PictureBox),组合框(ComboBox),文本框(TextBox),标签(Label)和按钮(Button)控件。各控件的属性设置从图7-4中即可看出,这里不做陈述。(3)代码设计=1\*GB3①登录窗体载入时,利用SqlDataAdapter控件连接数据库,取出用户信息到数据集中。并将所有的用户名称添加到Comobox控件中。代码如下:PrivateSubLoginForm_Load(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMe.LoadSqlDataAdapter1.Fill(DataSetUserInf1)DimiAsIntegerFori=0ToDataSetUserInf1.用户信息表.Rows.Count-1cbxUserName.Items.Add(DataSetUserInf1.用户信息表.Rows(i).Item("用户名称"))NextEndSub=2\*GB3②输入用户名和密码,点击确定按钮即可实现对用户身份的多重验证,代码如下:DimTimesAsInteger=3PrivateSubOK_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesOK.ClickDimiAsIntegerFori=0ToDataSetUserInf1.用户信息表.Rows.Count-1IfcbxUserName.Text=DataSetUserInf1.用户信息表.Rows(i).Item("用户名称")AndtxtPassword.Text=DataSetUserInf1.用户信息表.Rows(i).Item("用户密码")ThenIfDataSetUserInf1.用户信息表.Rows(i).Item("当前状态")="不可用"ThenMsgBox("该用户已被停用,请与管理员联系!",,"系统警告")ExitSubEndIfIfDataSetUserInf1.用户信息表.Rows(i).Item("用户权限")="普通用户"ThenMainForm.用户设置UToolStripMenuItem.Enabled=FalseMainForm.数据库维护WToolStripMenuItem.Enabled=FalseMainForm.系统日志ToolStripMenuItem.Enabled=FalseEndIfDataUpdate.UserName=DataSetUserInf1.用户信息表.Rows(i).Item("用户名称")DataUpdate.XTRZ("登录系统","")MainForm.Show()Me.Close()ExitSubEndIfNextTimes=Times-1IfTimes<1ThenMsgBox("登陆失败,请重新启动程序!",,"操作失败")Me.Close()ElseMsgBox("密码错误,你还有"&Times.ToString&"次输入机会!",,"操作失败")EndIfEndSub7.3.2系统主界面设计(1)窗体功能描述本系统主界面设计美观实用,采用图形化按钮和特定风格的数据表格,酒店中客房经营情况一目了然,使用户能够及时、准确的掌握客房营销情况,为顾客提供咨询服务。(2)窗体设计新建一个窗体并命名为“MainForm.vb”,并把Text属性改为“小型酒店管理系统”。打开窗体的界面设计,在工具箱分别选择相应的控件把窗体设计成如图7-5所示。图7-5系统主界面主界面主要包括以下控件:标签(Label),文本框(TextBox),按钮(Button),菜单栏(MenuStrip),工具栏(ToolBar),图象列表(ImageList),SqldataAdapter控件和DataGrid控件组成。其中菜单栏控件设计成如图7-6所示。图7-6系统菜单栏(3)代码设计=1\*GB3①主界面载入时,将数据库中的客房信息显示到DataGrid表格中,并显示酒店客房营业的总体情况。代码如下:PrivateSubMainForm_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.LoadSqlDataAdapter1.Fill(DataSetRoom1)'向数据集中添加记录SqlDataAdapter2.Fill(DataSetYDD1)SqlDataAdapter3.Fill(DataSetRZD1)DimDQRZ,DQYD,DQKG,DQZY,JRDD,JRLDAsIntegerDimZRZLAsDoublelblZFJS.Text=DataSetRoom1.客房信息表.Rows.Count.ToString&""&"间"DimiAsIntegerFori=0ToDataSetRoom1.客房信息表.Rows.Count-1SelectCaseDataSetRoom1.客房信息表.Rows(i).Item(4)Case"入住"DQRZ=DQRZ+1Case"预订"DQYD=DQYD+1Case"空闲"DQKG+=1Case"维修"DQZY+=1Case"自用"DQZY+=1EndSelectNextlblDQRZ.Text=DQRZ.ToString&""&"间"lblDQYD.Text=DQYD.ToString&""&"间"lblDQKG.Text=DQKG.ToString&""&"间"lblDQZY.Text=DQZY.ToString&""&"间"ZRZL=DQRZ/DataSetRoom1.客房信息表.Rows.CountlblZRZL.Text=(ZRZL*100).ToString(".##")&"%"Fori=0ToDataSetYDD1.预订单表.Rows.Count-1IfMicrosoft.VisualBasic.DateDiff(DateInterval.Day,DataSetYDD1.预订单表.Rows(i).Item("预抵时间"),Now())=0ThenJRDD+=1EndIfNextlblJRDD.Text=JRDD.ToString&""&"位"…………………lblJRLD.Text=JRLD.ToString&""&"位"EndSub=2\*GB3②单击菜单中某个选项时,就弹出相应的窗体,代码如下:PrivateSub登记入住IToolStripMenuItem_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)Handles登记入住IToolStripMenuItem.ClickRentRoomForm.Show()EndSubPrivateSub客房预订BToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles客房预订BToolStripMenuItem.ClickBookRoomForm.Show()EndSub………………PrivateSub用户设置UToolStripMenuItem_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles用户设置UToolStripMenuItem.ClickUserInfSetForm.Show()EndSub=3\*GB3③当点击ToolBar控件上的图象按钮时,将激活相应的功能窗体。代码如下:PrivateSubToolBar1_ButtonClick(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.ToolBarButtonClickEventArgs)HandlesToolBar1.ButtonClickSelectCaseToolBar1.Buttons.IndexOf(e.Button)Case0RentRoomForm.Show()Case1BookRoomForm.Show()………………Case7EndEndSelectEndSub7.3.3登记入住窗体设计(1)窗体功能描述顾客进入酒店后,需先到前台办理入住手续。操作员输入客人的相关信息,并根据顾客的要求选择相应的客房,操作员可手动设定折扣比例,系统会自动计算客房价格,收取一定的入住押金,最后点击确定按钮即完成入住手续的办理。当顾客因故中途取消办理入住时,为方便操作,节省时间,可点击重置按钮,则所有输入框中的信息自动清空。最后点击取消按钮即可退出登记入住窗体。(2)窗体设计新建一个名“RentRoomForm.vb”的窗体。并利用相关控件设计成如图7-7所示。图7-7登记入住窗体登记入住窗体包括以下控件:窗体(Form),标签(Label),组合框(Combobox),文本框(TextBox),按钮(Button),框架(Panel),GroupBox控件,DataGirdview控件和SqlDataAdapter控件等。(3)代码设计=1\*GB3①由于存在费用计算的问题,需要设定几个全局变量,在各事件过程中进行相关的运算操作。DimYSJG,SJJGAsDecimal'预设价格和实际价格=2\*GB3②窗体载入时,先将客房信息填充入数据集DataSetEmptyRoom1,并将全部记录添加到客房信息表中。PrivateSubRentRoomForm_Load(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMe.LoadSqlDataAdapter1.Fill(DataSetEmptyRoom1)'显示空净房信息DimiAsIntegerFori=0ToDataSetEmptyRoom1.客房信息表.Rows.Count-1DataGridView1.Rows.Insert(0,DataSetEmptyRoom1.Tables("客房信息表").Rows(i).Item(0),DataSetEmptyRoom1.Tables("客房信息表").Rows(i).Item(1),DataSetEmptyRoom1.Tables("客房信息表").Rows(i).Item(2))NextMe.BindingContext(DataSetRZD1,"入住单表").AddNew()'为入住单表添加新行lblInNum.Text="RZ"&DJBH.RZD()'显示入住单号EndSub=3\*GB3③输入开单信息之后,点击确定即添加入住单信息。代码如下:PrivateSubbtnRentRoomConfirm_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesbtnRentRoomConfirm.ClicklblReachDate.Text=Now'抵店时间Me.BindingContext(DataSetRZD1,"入住单表").EndCurrentEdit()'将数据返回数据集SqlDataAdapter2.Update(DataSetRZD1,"入住单表")'更新数据并返回数据源DimiAsIntegerFori=0ToDataGridView2.Rows.Count-1DataUpdate.UpdateData("客房信息表","客房状态='入住',单据编号='"&lblInNum.Text&"'","客房编号='"&DataGridView2.Rows(i).Cells(0).Value&"'")NextMe.Close()EndSub=4\*GB3④下面的代码实现要选择的空闲房间添加到DataGridview2中。PrivateSubbtnAddRoom_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnAddRoom.ClickDataGridView2.Rows.Insert(0,DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells(0).Value,DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells(1).Value,DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells(2).Value)DataGridView1.Rows.RemoveAt(DataGridView1.CurrentRow.Index)'删除选中行的记录EndSub7.3.4退房结账模块设计(1)窗体功能描述当顾客要办理退房结账时,操作员进入退房结账窗体。系统自动生成结账单号。在入住宾客信息表选中要离店顾客的入住单记录,顾客在店内的消费记录便出现在消费记录表之中,且系统会自动计算住宿费用和消费金额,显示出应收金额和实收金额。填入顾客支付金额后,系统会自动计算出需要找还的金额数。最后点击结账按钮便完成了退房结账手续。如果要免除某个顾客的所有费用,只要选中“免费”选项框,则实收金额清零,且结账单中的“结算状态”标记为“免费”。(2)界面设计新建窗体并命名为QuitRoomForm,将此窗体设计成如图7-8所示。图7-8退房结账窗体退房结账窗体包括以下控件:窗体(Form),标签(Label),组合框(ComboBox),文本框(TextBox),按钮(Button),框架(Panel),选项框(CheckBox),DataGird控件和SqlDataAdapter控件等。(3)代码设计=1\*GB3①添加全局数据公共模块和全局变量,方便事件过程间的费用计算。代码如下:DimZSFY,XFJE,YSJE,YSYJ,SSJE,GKZF,ZLAsDecimalPrivateFunctionTimeJudge(ByValjAsDecimal)'时间判断函数Ifj<1ThenIfNow.Hour<18Thenj=0.5Elsej=1EndIfElseIfNow.Hour<12Thenj+=0.5Elsej+=1EndIfEndIfReturnjEndFunctionPrivateSubAccount()'计算住宿费用DataSetRoomInf1.客房信息表.Clear()SqlDataAdapter5.SelectCommand.CommandText="SELECT客房信息表.客房编号,客房类型表.类型名称,客房类型表.客房价格,客房信息表.单据编号FROM客房信息表INNERJOIN客房类型表ON客房信息表.类型名称=客房类型表.类型名称where单据编号='"&DataGrid1.Item(DataGrid1.CurrentRowIndex,0)&"'"SqlDataAdapter5.Fill(DataSetRoomInf1)DimiAsIntegerDimfeeAsDecimal=0DimintervalAsDecimal=0Fori=0ToDataSetRoomInf1.客房信息表.Rows.Count-1IfDataSetRoomInf1.客房信息表.Rows(i).Item(1)="钟点房"Theninterval=Microsoft.VisualBasic.DateDiff(DateInterval.Hour,DataSetRZD11.入住单表.Rows(DataGrid1.CurrentRowIndex).Item("抵店时间"),Now())interval=TimeJudge(interval)fee+=interval*DataSetRoomInf1.客房信息表.Rows(i).Item("客房价格")Elseinterval=Microsoft.VisualBasic.DateDiff(DateInterval.Day,DataSetRZD11.入住单表.Rows(DataGrid1.CurrentRowIndex).Item("抵店时间"),Now())interval=TimeJudge(interval)fee+=interval*DataSetRoomInf1.客房信息表.Rows(i).Item("客房价格")EndIfNextZSFY=DataSetRZD11.Tables("入住单表").Rows(DataGrid1.CurrentRowIndex).Item("折扣比例")*feeEndSub=2\*GB3②根据选择的入住单计算住宿费用和消费金额。代码如下:PrivateSubDataGrid1_MouseClick(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlesDataGrid1.MouseClickZSFY=0'住宿费用XFJE=0'消费金额YSJE=0'应收金额YSYJ=0'已收押金SSJE=0'实收金额ZL=0'找零lblRZDH.Text=DataSetRZD11.入住单表.Rows(DataGrid1.CurrentRowIndex).Item(0)……………………txtRemarkInf.Text=DataSetRZD11.入住单表.Rows(DataGrid1.CurrentRowIndex).Item(9)Account()'调用计算金额过程DataSetXFJL1.消费记录表.Clear()SqlDataAdapter2.SelectCommand.CommandText="select*from消费记录表where入住单号='"&lblRZDH.Text&"'"SqlDataAdapter2.Fill(DataSetXFJL1)DimiAsIntegerFori=0ToDataGrid2.VisibleRowCount-1'累计宾客的消费总额XFJE+=DataSetXFJL1.Tables("消费记录表").Rows(i).Item(6)NextYSJE=ZSFY+XFJE'应收金额=住宿费用+消费金额SSJE=YSJE-YSYJ'实收金额=应收金额-已收押金ZL=GKZF-SSJE'找零=顾客支付-实收金额lblZL.Text=ZL.ToString("c")EndSub=3\*GB3③点击结帐按钮,添加结账单信息,删除入住单信息。代码如下:PrivateSubbtnJZ_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnJZ.ClickMe.BindingContext(DataSetJZD1,"结帐单表").EndCurrentEdit()SqlDataAdapter3.Update(DataSetJZD1,"结帐单表")DataUpdate.UpdateData("客房信息表","客房状态='空闲',单据编号=''","单据编号='"&DataSetRZD11.入住单表.Rows(DataGrid1.CurrentRowIndex).Item(0)&"'")DataUpdate.DelData("消费记录表","入住单号='"&DataSetRZD11.入住单表.Rows(DataGrid1.CurrentRowIndex).Item(0)&"'")DataUpdate.DelData("入住单表","入住单号='"&DataSetRZD11.入住单表.Rows(DataGrid1.CurrentRowIndex).Item(0)&"'")DataSetRZD11.入住单表.Rows(DataGrid1.CurrentRowIndex).Delete()SqlDataAdapter2.Update(DataSetXFJL1,"消费记录表")MsgBox("结帐成功",,"操作成功")Me.Close()EndSub7.3.5数据库维护窗体设计(1)窗体功能描述本窗体的功能是实现对于系统数据库的维护功能,可以有效的提高系统内数据的安全性和可靠性,是本系统中最重要的功能模块之一。用户(这里指超级用户)可以进行如下操作:=1\*GB3①删除营业数据。可删除指定时间内或所有的营业记录,包括入住单信息、预订单信息、入住历史、结帐单信息和消费记录等。=2\*GB3②清空商品信息。删除商品信息表中的所有商品信息。=3\*GB3③清空所有数据库表。即对系统数据库进行全面初始化操作,删除数据库内的所有数据。=4\*GB3④手动备份和还原数据库的功能。在进行备份操作时,用户可自由指定数据库备份文件的路径和名称,点击备份按钮即可在指定路径生成一个数据库备份文件。而还原操作时,用户也可根据需要选择某个数据库备份文件进行还原,表现出了较强的灵活性。(2)界面设计创建一个名为DataBaseForm.vb的窗体,并将此窗体设计成如图7-9所示。图7-9数据库维护窗体该窗体所用到的控件主要包括:窗体(Form),标签(Label),文本框(TextBox),按钮(Button),框架(Panel),选项框(CheckBox)和GroupBox控件等。(3)代码设计=1\*GB3①点击确定按钮,按用户选定的条件对数据库进行清理,代码如下:PrivateSubbtnConfirm_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnConfirm.ClickIfchkZDYYSJ.Checked=TrueThenDataUpdate.UpdateData("客房信息表","客房状态='空闲',单据编号=''","单据编号in(select预订单号from预订单表where预订日期between'"+dtpStartTime.Value+"'and'"+dtpEndTime.Value+"')")DataUpdate.DelData("预订单表","预订日期between'"+dtpStartTime.Value+"'and'"+dtpEndTime.Value+"'")…………………IfchkAllYYSJ.Checked=TrueThenDataUpdate.UpdateData("客房信息表","客房状态='空闲',单据编号=''","单据编号in(select预订单号from预订单表)")DataUpdate.UpdateData("客房信息表","客房状态='空闲',单据编号=''","单据编号in(select入住单号from入住单表)")DataUpdate.DelData("消费记录表","")DataUpdate.DelData("预订单表","")…………………EndIfIfchkAllData.Checked=TrueThenDataUpdate.DelData("客房信息表","")DataUpdate.DelData("客房类型表","")…………………EndIfMsgBox("数据清理完毕!",,"操作成功")EndSub=2\*GB3②点击备份按钮,对数据库进行备份,代码如下:DimstrsqlAsString'声明公共变量DimconAsSqlConnectionDimcomAsSqlCommandcon=NewSqlConnection("server=localhost;database=HMIS;uid=sa;pwd=;")PrivateSubbtnBackup_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnBackup.Clickstrsql="backupdatabaseHMIStodisk='"&txtBackupPath.Text&"'"com=NewSqlCommand(strsql,con)con.Open()com.ExecuteNonQuery()con.Close()MsgBox("数据库备份成功!",,"操作成功")EndSub=3\*GB3③点击还原按钮,系统进行数据库的还原操作。代码如下:PrivateSubbtnRestore_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnRestore.Clickstrsql="restoredatabaseHMISfromdisk='"&txtRestorePath.Tex&"'"com=NewSqlCommand(strsql,con)con.Open()SqlConnection.ClearAllPools()'清空连接池com.ExecuteNonQuery()con.Close()MsgBox("数据库还原成功!",,"操作成功")EndSub第八章系统测试与使用说明8.1系统测试与运行为了能对系统进行全面的测试和性能分析,应按照系统中各个模块性能和功能要求的不同,采用不同的测试用例,从而尽可能多地发现本软件中的错误,提高软件的可靠性和安全性。下面对系统中几个比较重要的功能模块进行一些针对性的测试。8.1.1对于登记入住模块的测试本模块要输入的信息有入住单号、主客姓名、证件类型、证件号码、顾客来源、顾客类型、性别、公司名称等。要求其中的某些关键信息必须要完整、准确的输入,如顾客姓名,联系电话等,以防止因数据遗漏而给系统的使用造成障碍。为了检验本模块是否可达到这一要求,在本模块中当输入的信息中,故意漏掉“联系电话”这一字段,系统便发出警告信息,提示“联系电话不能为空”,如图8-1所示。而当填入“联系电话”后,点击确定按钮,系统提示“登记成功”,如图8-2所示。由此可知,本模块能够实现信息完整、准确的输入。图8-1登记入住模块测试结果1图8-2登记入住模块测试结果28.1.2对于消费记账模块的测试该模块实现记录顾客在店期间的消费记录的功能。不仅要求能够清晰、准确的记录和计算顾客的消费金额,而且必须保证商品销售和库存之间保持正确的关系,不会出现商品库存不足时,却仍然可以销售此商品的情况。进行如表8-1所示的分组测试,其测试结果分别如图8-3、图8-4所示。由此可知,本模块满足上述要求,测试成功。表8-1消费记账模块测试分组测试分组商品编号消费房间消费数量第一组002BD207100第二组003BD20710图8-3消费记账模块的测试结果1图8-4消费记账模块的测试结果28.1.3对于客房信息设置模块的测试在该模块中,要求客房信息按照编号和类型严格区分,严禁系统中出现两个编号相同的房间或两种类型名称相同的客房,否则会导致数据二义性,破坏系统的稳定性和安全性。进行如图8-5所示的测试,当试图添加一个数据库表中已存在的客房时,系统发出操作错误的提示信息。由此可见,本模块满足了这一要求。图8-5客房信息设置模块测试结果8.2系统运行平台1.硬件要求
CPU奔腾=4\*ROMANIV1.3GHz以上,内存256Mb以上,硬盘10G以上。2.软件要求
操作系统:Windows2000/XP/2003;数据库管理系统:SQLServer2000或后续版本;环境配置:Microsoft.NetFramework2.0。8.3系统使用说明由于本系统是基于.NET平台开发的,需要安装Microsoft.NetFramework2.0才能使用。系统默认的超级用户名为“admin”,默认密码为“321”。另外,系统在运行之前必须要先运行SQLSever2000。如果是首次运行系统,还必须向服务器中附加数据库文件(HMIS_Data.MDF)和数据库日志文件(HMIS_Log.LDF),否则系统将无法启动。执行附加数据库操作的一般步骤是:打开“企业管理器”,在控制台根目录中选择本地服务器下的“数据库”目录,点击鼠标右键,在弹出的菜单中选择“所有任务”,在弹出的二级菜单中单击“附加数据库”命令。最后按系统提示操作即可完成本系统数据库的附加操作。结束语通过设计开发本系统,学习到了如何运用VisualBasic.NET和MicrosoftSQLServer2000开发出具有实用价值的管理信息系统。在开发的过程中,通过参考一些管理信息系统开发的相关书籍,并研究了一些开发实例,从中借鉴了很多开发思路和技巧,使自己进一步培养了系统开发的设计思维,对于系统操作流程、数据结构的分析和改造有了进一步的认识和体会。虽然系统实现了设计之初的大部分功能,基本实现了酒店经营管理所必须的各种功能,在实际工作中减少了人力、物力的耗费。但由于一开始欠缺系统开发经验,没有较好的从总体把握好系统结构的设计,导致在开发过程中走了一些弯路,部分工作需要返工。此外,还有几个重要的功能未能实现,如电话计费、员工管理、财务管理等。其它一些辅助性、完善性的功能也未能在毕业设计所限定的时间内实现。因为系统还在不断地加入新功能以及修改现有问题,所以在系统的测试部分并没有详尽的测试报告,而本文中的内容也并未能完全表达整个系统的功能发展状态。本次毕业设计,从系统的分析、设计、编码、测试,自己都动脑、动手去解决。从而对软件开发过程有一个更深的认识,同时也熟悉了基础知识的运用,受益良多。同时也出现一些问题,需要通过以后的进一步实践和学习去解决。致谢在本次毕业设计中,曾遇到过不少问题,如果单靠我个人的努力,很难按时完成毕业设计,在此,我感谢老师的指导和帮助。因为有了老师们细心的指导和帮助,才使我的论理水平和动手能力都得到了很大提高,积累了更多的软件开发方面的经验。同时,我还要感谢CSDN技术社区()的编程高手们在编程技巧和方法方面对于我的帮助,在论坛里我的每一个疑问总能得到满意的答复,为本系统的开发和完善提供了极大的支持。参考文献[1]邓良松,刘海岩等.软件工程[M].西安:西安电子科技大学出版社,2006.[2]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2005.[3]王改梅,闫宏伟等.VB.NET可视化程序设计[M].北京:机械工业出版社,2006.[4]廖望,钟永生等.VB.NET程序设计案例教程[M].北京:高等教育出版社,2004.[5]李存斌.数据库应用技术SQLServer2000简明教程[M].北京:中国水利水电出版社,2001.[6]朱如龙,刘焰.SQLServer数据库应用系统开发实验指导[M].北京:机械工业出版社,2004.[7](美)威利斯(Willis,T.),闫英等.VB.NET数据库入门经典[M].北京:清华大学出版社,2006.11.[8](美)F.ScottBarker,邱仲潘等.VB.NET与ADO.NET数据库编程[M].北京:机械工业出版社,2003.4.[9]彭伟民,唐平,易珺.基于需求的酒店管理系统的建模与实现[J].微机发展,2005,15(6):75-77.[10]易珺,路璐等.构建基于CRM理念的中小型酒店管理信息系统[J].计算机与数字工程,2005,33(6):19-22.[11]张艳华.中小型酒店管理信息系统设计[J].微机发展,2005,15(6):152-154.[12]美萍公司.美萍酒店管理系统./download.htm#mphotel,2007.3.SmallHotelManagementInformationSystemAbstract:Thisgraduationdesignisamanagementinformationsystemthatisdevelopedwithaimingatthecharacteristicsofmediumsmallscaledcabaretbusinessmanagement,allcallasmallscaledcabaretamanagementsystem.Thedesigntargetofsystemistocarryoutcabaretmanagementtomanageofinformation-basedwithautomationresolveasmallscaledcabaretguestgointoliveregister,guestroomtoreserve,guestconsume,backnighttoregisteretc.keyproblemwithinthedailybusinessoftheguesthousecabaret.Thistextsynopsisintroduceditembackgroundandmeaningandemphasizedtoelaboratethesystemdevelopmentcarriesoutprocessandallcarriedonadetailedanalysisanddescriptionfromtheneedanalysis,functionstructureanddatabasedesignetc.KeyWords:SmallHotelManagementInformationSystem;VB.NET;SQLServer2000;ADO.NET基于C8051F单片机直流电动机反馈控制系统的设计与研究HYPERLINK"/detail.htm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术评审合同模板2
- 甘肃省2024年度离岗创业项目市场营销合同2篇
- 货车运输合同范本范本
- 如何制作教学课件
- 设计合作协议书
- 石油化学:第3章石油及油品的物理性质
- 2024版技术咨询合同:新能源技术咨询服务2篇
- 人教版九年级化学第十一单元酸、碱、盐专题复习(四)酸、碱、盐化学性质的应用图像分析分层作业课件
- 活动合作协议合同范本完整版
- 人教版九年级化学第十一单元2化学肥料实验活动8粗盐中难溶性杂质的去除分层作业课件
- 小学2024年秋季学生1530安全教育记录表(全学期)
- 道 法+在劳动中创造人生价值 课件-2024-2025学年统编版道德与法治七年级上册
- 实验室安全教育课件
- 大学生职业生涯规划小学英语教育
- 《树立正确的“三观”》班会课件
- 《中国溃疡性结肠炎诊治指南(2023年)》解读
- RB/T 089-2022绿色供应链管理体系要求及使用指南
- 叉车日常维护保养检查记录表
- 第二节菠菜PPT课件
- 艺人授权书范本
- 医学英语常用前后缀
评论
0/150
提交评论