毕业论文(设计)题 目:基于C#的酒店管理系统学 号:姓 名:杨教平学 院:数计学院专业班级:计算机科学与技术指导教师:贺道德完成时间: 2012 年 4月15日 毕节学院教务处制摘 要此酒店管理系统主要是针对酒店的维护以及更好的管理,此系统是一个针对性的信息管理系统(MIS)开发项目对于此系统的管理,稳定性,可扩展性,安全性,健壮性,以C#作为开发语言,数据库以SQL SEVER作为后台数据库,使此系统更实用,更便捷,操作更简易,让管理人员更能高效益的提高酒店的收益关键词:客人档案,酒店,C#目录目录 3第1章 前言 51.1 开发背景 51.2 宾馆组织结构 51.3 系统开发方法 5第2章 系统分析 62.1 可行性分析 62.2 需求分析 62.2.1 业务流程分析 62.2.2 数据流程分析 82.2.3 系统功能分析 92.2.4 系统权限分析 9第3章 系统设计 103.1 系统功能模块设计 103.2 数据库设计 10第4章 系统实现 164.1 系统主界面 164.2 来宾登记模块 164.2.1宾客开单 164.2.2 更换房间 184.2.3 修改登记 194.2.4 房间状态 194.2.5 预定管理 204.2.6 退出系统 214.3 收银结账 214.3.1宾客结账 214.3.2合并结账 224.3.3拆分结账 234.4 业务查询 244.4.1结账单查询 244.4.2全部宾客信息查询 254.4.3在店宾客消费查询 254.4.4离店宾客消费查询 274.5 客户管理 284.5.1基本信息管理 284.5.2来宾信息管理 294.6 系统维护 304.6.1房间项目设置 304.6.2 客户类型设置 314.6.3 操作员设置 324.6.4 计费设置 33第5章 系统测试 35第6章 结论 36参考文献 37致 谢 38附 录 39第1章 前言1.1 开发背景特别在如今经济发展较快的时期,酒店电脑管理系统已经变成了酒店中不可缺少的一部分。
它将提升酒店服务档次,提高酒店管理的效率、强化酒店经营,使其处于关键优势随着如今酒店的发展趋势,随着酒店打入市场的深度,伴随着经营的各种手段,收益增长点的扩散,怎样对待酒店日益增长的数据,怎样更好的去取得好的收益、提高管理水平、提升整体服务,加强成本控制选择一套好的酒店管理系统,将是解决酒店的管理问题的最好的手段1.2 宾馆组织结构 根据酒店的房间结构形式,从而对其作出一些相对简易的组图,对每一个部门都要计算到,确保可以更好的管理酒店确保做到住房管理化,部门分工化,更成熟的运用软件对酒店进行各种事物管理图1-1 酒店组织结构图1.3 系统开发方法对于系统所需要的各种功能,通过简单的系统分析、系统设计,快速实现一个原型系统,然后通过验证修改来实现管理信息系统第2章 系统分析2.1 可行性分析1、管理可行性在旅游业的大力发展发展下,酒店、餐饮娱乐行业越趋火热,酒店智能化亦然必不可少同时,酒店引入电脑服务和管理也取得了良好的收益故而,国家作出明确规定:星级酒店在项目报批时,需有电脑管理系统,否则不予立项由此可见,酒店管理电脑化亦然必不可少先进的电脑系统技术与现代酒店服务管理完美地结合起来,将实现新的酒店理念。
历史经验的积累使宾馆行业现有的管理制度和管理方法比较科学,规章制度比较齐全,原始数据比较正确这些为系统的建设提供了有效的制度保障2、技术可行性本管理信息系统以C#作为前台开发工具后台数据库采用SQL Server数据库,灵活性、安全性和易用性将使编程有个良好的条件因此,软件开发平台已成熟对于硬件,科技的飞速发展使硬件的更新速度越来越快,容量更大,可靠性更高,价格更低,完全能满足此系统的需要3、经济可行性操作人员易于操作维护和管理都较简单,除了必要的设备投资外,只需少量资金就可运转因此对于酒店在经济上是完全能够接受的此系统的使用能大大提高工作效率,加速资金周转、降低成本及改善服务质量,完全能够取得良好的经济收益综上所述,此系统在管理上、技术上和经济上都是完全可行的,而且投入少、见效快故而系统的开发是完全可行的2.2 需求分析2.2.1 业务流程分析酒店的各项基本流程主要包括:客房预定客人通过或者其他途径向酒店进行客房预定,接待人员查询客房状态表后确定有空房则接受预定,预定成功后发给客人预定凭证,并对客房状态表做出相应的变化客房登记分为预定入住和散客登记,如果客人已经预定房间,则根据预定凭证进行预定入住操作,发给客人房卡,客房状态由“预定”变为“入住”。
如果客人没有预定房间,接待人员查询客房状态表后,有空房则进行客房登记操作,发给客人房卡,客房状态由“空房”变为“入住”客人换房如果客人对入住的客房条件不满意,则可进行客人换房操作接待人员将客人的房间进行更换,并更换客人房卡,客房状态也进行相应的调整客房消费客人入住期间在酒店进行了消费,如:购买商品,就餐,打就要进行消费入帐操作包括:消费入账,餐费入账,话费入账补交押金如果客人的押金太少,则要补交押金客人交纳押金,接待人员开具押金凭证夜审管理宾馆的管理人员要对宾馆的基本信息进行了解则可以进行夜审管理,包括:客房状态报表的查看,客人入住信息的查看,历史客人报表查看客人退房客人退房时,接待人员根据客人的房卡,进行退房登记计算客人入住期间的房费,餐费,话费,各种消费和押金总额对客人收取费用或者退回押金客人信息转存到历史客人表中客房状态由“入住”转为“空房”图2-1 业务流程分析图2.2.2 数据流程分析此系统的后台数据库作为整个宾馆的数据流通中心,将各个部门的数据信息连通起来,具体流程如下图所示:图2-2 数据流程分析图2.2.3 系统功能分析散客开单完成散客的开单,可一次最多开5间相同类型的房间团体开单完成团体的开单,开放数量没有限制,可同时开不同类型的房间。
宾客结账自动统计每个登记客人在店时所发生的消费额和应付款额,并完成结帐收银操作客房预订完成增加预订、修改预订、删除预订,预订情况的查询等功能营业查询完成结帐单、全部宾客消费、在店宾客消费、离店宾客消费的查询客户管理完成会员基本信息的维护和来宾一览系统设置完成房间项目、客户类型、操作员、计费设置2.2.4 系统权限分析用户分为:普通用户和管理员管理员:具有操作全部功能的权限普通用户:部分功能不允许使用第3章 系统设计3.1 系统功能模块设计图3-1 系统功能模块图从上图中可看出,此系统总共分为7个模块,散客开单模块主要完成散客的开单,开单后房间进入计费状态,根据系统设置,自动计费;团体开单模块主要完成团体的开单,开放数量没有限制,可同时开不同类型的房间;宾客结账模块主要完成自动统计每个登记客人在店时所发生的消费额和应付款额,并完成结帐收银操作;客房预订模块主要完成增加预订、修改预订、删除预订,预订情况的查询等功能营业查询模块主要完成结帐单、全部宾客消费、在店宾客消费、离店宾客消费的查询;客户管理模块主要完成会员基本信息的维护和来宾一览;系统设置模块主要完成房间项目、客户类型、操作员、计费设置。
3.2 数据库设计此软件的数据库名称为:sunhotel,包含12个数据表,分别是:客户类型表、房间类型表、房间信息表、预定信息表、入住信息表、结算表、日志表、操作员信息表、会员信息表、散客开单中间表、团体开单中间表和预订信息中间表具体表结构如下:表3-1 房间类型表 [roomtype]字段名类型允许为空说明默认值PkDecimal×主键IdVarchar×房间类型编号r_typeVarchar×房间类型bedInt×床位数PriceFloat×单价foregiftFloat×押金cl_roomVarchar×是否钟点房Ncl_priceFloat×钟点房价RemarkVarchar√备注sysmarkInt×系统级标志0DelmarkInt×删除标记0other1Varchar√保留1other2Varchar√保留2表3-2 房间信息表 [roominfo]字段名类型允许为空说明默认值pkdecimal×主键idvarchar×房间号r_type_idvarchar×房间类型编号statevarchar×房间状态locationvarchar×所处位置r_telvarchar×房间remarkvarchar√备注statetimeint×状态计时0delmarkint×删除标记0other1varchar√保留1other2varchar√保留2表3-3 客户类型表 [customertype]字段名类型允许为空说明默认值pkdecimal×主键idvarchar×客户类型编号c_typevarchar×客户类型dis_attrvarchar×折扣属性 discountint×折扣比例pricefloat×原价dis_pricevarchar×折扣价remarkvarchar√备注delmarkint×删除标记0other1varchar√保留1other2varchar√保留2表3-4 入住信息表[livein]字段名类型允许为空说明默认值pkdecimal×主键In_novarchar×入住单号r_novarchar×房间号r_type_idvarchar×房间类型编号Main_roomvarchar×主房间号Main_pkdecimal×主PKc_type_idvarchar×客户类型编号m_idvarchar×客户编号*c_namevarchar×客户名称c_jpvarchar√客户名称简拼sexvarchar×性别zj_typevarchar×证件类型Zj_novarchar×证件编号addressvarchar×地址*renshuint×人数in_timevarchar×入住时间daysint×预注天数accountfloat×消费数量foregiftfloat×押金Chk_novarchar×结算单号*chk_timevarchar×结算时间*remarkvarchar√备注useridvarchar×操作员cluemarkint×提醒标志0statemarkvarchar×状态标志0delmarkint×删除标记0other1]varchar√保留1other2varchar√保留2表3-5 预定信息表[engage]字段名类型允许为空说明默认值Pkdecimal×主键c_namevarchar×客户名称c_jpvarchar×客户名称简拼c_telvarchar×客户r_type_idvarchar×房间类型编号r_novarchar×房间号pa_timevarchar×预抵时间keep_timeint×保留时间eng_timevarchar×预定时间remarkvarchar√备注engagemarkint×预定状态标志0cluemarkint×提醒标志0delmarkint×删除标记0other1varchar√保留1other2varchar√保留2表3-6 结算表[checkout]字段名类型允许为空说明默认值pkdecimal×主键Chk_novarchar×结帐单号In_novarchar×入住单号daysint×实住天数moneyfloat×金额chk_timevarchar×结算时间remarkvarchar√备注delmarkint×删除标记0other1varchar√保留1other2varchar√保留2表3-7 日志表[record]字段名类型允许为空说明默认值pkdecimal×主键timedatetime×操作时间operatorvarchar×操作员briefvarchar×内容摘要contentvarchar×内容delmarkint×删除标记0other1varchar√保留1表3-8 操作员信息表[pwd]字段名类型允许为空说明默认值pkdecimal×主键useridvarchar×用户登录IDpwdvarchar×登录密码puisint×用户权限delmarkint×删除标记0other1varchar√保留1other2varchar√保留2表3-9 会员信息表[member]字段名类型允许为空说明默认值pkdecimal×主键m_idvarchar×会员编号m_namevarchar×会员名称sexvarchar×性别Zj_novarchar×证件编号addressvarchar×详细地址m_telvarchar×联系remarkvarchar×备注delmarkint×删除标记0other1vrchar√保留1other2varchar√保留2表3-10 散客开单中间表[roomnum]字段名类型允许为空说明默认值roomidvarchar√房间编号表3-11 团体开单中间表[roomnums]字段名类型允许为空说明默认值rr_typevarchar√房间类型roomidvarchar√房间编号pricefloat√单价表3-12 预订信息中间表字段名类型允许为空说明默认值Pkdecimal√主键c_namevarchar√客户名称c_jpvarchar√客户名称简拼c_telvarchar√客户r_type_idvarchar√房间类型编号r_novarchar√房间号pa_timevarchar√预抵时间keep_timeint√保留时间eng_timevarchar√预定时间remarkvarchar√备注engagemarkint√预定状态标志0cluemarkint√提醒标志0delmarkint√删除标记0other1varchar√保留1other2varchar√保留2第4章 系统实现4.1 系统主界面图图4-1 系统主界面4.2 来宾登记模块4.2.1宾客开单1、功能概况建立宾客消费帐,本模块是为每位来酒店的宾客指定一个房间,此为宾客消费的开始。
2、界面图4-2 散客开单图4-3 团体开单3、操作指南团体开单(1)在选择定位某一处于“预订”或“可供” 状态的宾客房间后,以点击菜单 “散客登记(团体登记)→开单” (或直接单击主窗口中的 “顾客开单” 快捷按钮)菜单进入宾客开单界面2)进入 “顾客开单” 界面后(如图4-2、4-3),就可看到有关选定开单房间的一些基本费用和基本信息3)填写来宾人数(必须填写)、押金金额(根椐本店情况而定),酒店系统将自动计算相应的费用4)填完之后,点击 “确定” 按钮将完成开单任务,单击 “取消” 按钮将取消此次开单操作4.2.2 更换房间1、功能如因为店内原因或客人要求,造成客人现占有的房间必须终止提供,但客人的消费并未结束,则可以通过更换房间来将消费信息及客人资料在不进行结帐操作的情况下转到另一新的项目下如:换(房间)2、界面图4-4 更换房间3、操作指导更换房间1、在选择定位好需要更换的房间后, 通过单击菜单的 “来宾登记→换房间”进入更换房间界面(如图4-4)2、进入 “更换房间” 界面后可以看到现前待调换的客房号(即:原客房),在“调整为”后的文本框中输入要调整到的目标客房3、填完之后,单击 “确定” 按钮将完成更换房间任务,单击 “取消” 按钮将取消此次更换房间操作。
注:若目标房间与待更换的房间在同一房间类型中,可以拖放的方式进行调换)4.2.3 修改登记功 能若在顾客开单时填写有误,或者用于修改来宾姓名、押金金额等可通过此项操作完成操作指南1、在选定需要修改登记的房间后, 通过点击菜单 “来宾登记→登记”进入修改登记界面2、进入修改登记界面后,相应的文框将显示出顾客登记时的数据,更改需要修改的项目如:来宾人数、押金金额3、填写完之后,点击 “确定” 按钮将完成修改任务,点击 “取消” 按钮将取消此次修改操作4.2.4 房间状态功能此项操作可手动修改处于非占用状态的房间状态为”可供”、“预订”、“停用”、“脏房”等状态4.2.5 预定管理1、功能此项功能可以完成添加预订、修改预订、删除预订,预订情况的查询、打印、导出等功能2、界面图4-5 客户预订3、操作指南预定管理通过点击菜单“来宾登记→预订管理”菜单(或直接点击主窗口中的“预订管理”快捷按钮)进入预订管理界面增加预订点击预订管理窗口中的 “增加” 按钮进入预订登记窗口,在预订登记窗口中填写预订人信息并指定其预订的房间类型及房间、确认宾客预计到达的时间和最后保留时间,还可选择“到达保留时间是否自动取消预订”。
填写完之后点击“确定”按钮将完成此次预订,点击“取消”按钮将取消此次预订操作注:最后保留时间是指若宾客在预订到达的时间没有到达,最多还能廷长到的时间此时间做为自动取消预订的条件)修改预订若要修改某条预订信息可在预订管理窗口中选择一条要修改的预订信息,然后点击预订管理窗口中的 “修改” 按钮进入修改预订登记窗口,修改相应内容(操作方法类似于增加预订)后点击“确定”将保存修改后的信息,若点击“取消”按钮将取消此次修改预订登记操作保持原有的数据不变删除预订在预订管理窗口中选择一条要删除的预订信息,然后点击预订管理窗口中的“删除”按钮,系统将给出提示“删除后将不能恢复,确定删除吗?”,点击“确定”将永久删除所选中的预订信息,点击“取消”将不做任何操作并返加预订管理窗口查询预订在预订管理窗口中“房间号/姓名”后的文本框中输入被预订的房间号或预订人的姓名后点击“查询”,数据表中将显示出符合查询条件的预订信息,当然可以点击“过滤”按钮选择过滤条件从而指定查询范围点击“刷新”按钮数据表中将显示所有预订信息4.2.6 退出系统1、功能此操作可中断本系统的运行且退回到操作系统2、操作指南单击菜单“来宾登记→退出系统”,系统将提示“真的要退出系统吗?”,点击“是”将中断当前所的操作且退出本系统,单击“否”将返回到本系统。
注:退出系统前需确认对尚未保存的操作进行保存,否则系统将取消未保存的操作)4.3 收银结账4.3.1宾客结账1、功能此模块将自动统计每个登记客人在店时所发生的所有消应付款额及费额,进而完成结帐收银操作2、界面图4-6 收银结账3、操作指南结账操作在主窗口中选要结账宾客的房间后,点击菜单“收银结账→宾客结账”(或点击主窗口中的“宾客结账”快捷按钮)进入宾客结账界面此窗口主要包括:结账房间信息区、付款情况区注:结账房间信息区:用来显示当前结账房间的账单号、宾客姓名,房间编号、付款情况区:中分别有消费金额、优惠金额、应收金额、已收押金、实收金额、宾客支付、找零等,其中:“已收押金”是指已经收取的“预付款”等金额的合计额;“结算金额” 是指经系统计算应收的结账金额,即:“消费金额-已收押金=结算金额”;“宾客支付”是指客人结账时交付给收银员的金额,如果大于结算金额,则在其后显示找零金额;“优惠金额”是指系统根设置的打折比率自动计算出的让利于宾客的金额及抹零金额等的统称最后的“入账金额=消费金额-优惠金额”由系统自动计算消费消单区:用来显示选中房间的消费清单点击“结账”按钮后就完成了结账操作,也就意味着终止了此宾客此次在本店的消费行为,并自动关闭本窗口。
点击“取消”按钮将取消此次结账操作并自动关闭本窗口4.3.2合并结账1、功能合并两个或两个以上的帐单为一个帐单,合并后的账单可同时结账2、界面图4-7 合并账单3、操作指南合并账单操作1、通过点击主窗口中的菜单“收银结账→合并账单”进入合并账单界面(如图4-7)2、在“在店宾客”列表框内移动光标或直接用鼠标指定客人,也可在“指定房间后”的文本框内输入宾客房间编号迅速查找定位相关宾客3、在“在店宾客”列表框内按回车键或双击鼠标或按带有向右方向箭头的按钮,将当前光标所指的宾客记录移动到“合并区”列表框;可添加多个房间到合并区,方法同上带有向左方向箭头的按钮与带有向右方向箭头的按钮的作用相反4、在“合并区”内移动光标,可选择确定合并后以哪个房间作为合并后的主单5、按“确定”按钮完成合并操作,反之按“取消”按钮则取消合并操作4.3.3拆分结账1、功能将合并后的账单拆分成单个的账单2、界面图4-8 拆分账单3、操作指南拆分账单操作1、通过点击主窗口中的菜单“收银结账→分账单”进入拆分账单界面(如图4-8)2、在“可供分拆的帐单”列表框内移动光标或直接用鼠标选中某一宾客,也可在“指定房间”后的文本框内输入宾客的房间编号迅速查找定位相关宾客。
3、在“可供分拆的帐单”列表框中选择需要分拆的子账单,按回车键或双击鼠标或按带有向右箭头的按钮,可将当前光标所指的子帐单移到“拆分区”,按“确定”按钮完成拆分账单操作,反之按“取消”按钮取消拆分账单操作4.4 业务查询4.4.1结账单查询1、功能根据宾客姓名、结账时间、房间号、账单号来查询已经的结账的账单2、界面图4-9 营业查询3、操作指南结账单查询1、 点击菜单“营业查询→结帐单查询”进入“结帐单查询”界面2、选择账单时间后,填写起始时间和终止时间后点击查询按钮,在结账状态信息里会显示这一段时间的结账单内容3、选择姓名/房间号/账单号后,填写内容后点击查询按钮,在结账状态信息里会显示某个宾客、某房间、某个账单号的结账单内容4.4.2全部宾客信息查询1、功能根据输入的证件编号、宾客姓名、房间号查询来宾的信息内容2、界面图4-10 全部宾客信息查询2、操作指南信息查询(1)点击菜单“营业查询→全部宾客信息查询”进入“全部宾客信息查询”界面2)输入宾客姓名、证件编号、房间号后,点击查询按钮,在所有来宾信息里会显示宾客的信息内容3)点击近日来客按钮可以查询今天到店的宾客内容4.4.3在店宾客消费查询1、功能查询在店的宾客在一定时间内的消费情况。
2、界面图4-11 在店宾客消费查询3、操作指南在店消费查询1、点击菜单“营业查询→在店宾客消费查询”进入“在店宾客消费查询”界面2、 选择入住时间,填写起始时间和终止时间,点击查询按钮在店宾客消费里会显示所选时间里的在店宾客消费明细3、选择房间号,填写后点击查询按钮在店宾客消费里会显示所选房间号的在店宾客消费明细4.4.4离店宾客消费查询1、功能根据账单号、结账时间、房间号来查询已经离店的宾客消费内容2、界面图4-12 离店宾客消费查询3、操作指南离店消费查询1、点击菜单“营业查询→离店宾客消费查询”进入“离店宾客消费查询”界面2、选择账单时间后,填写起始时间和终止时间后点击查询按钮,在离店宾客里会显示这一段时间的离店宾客消费内容3、选择姓名/房间号/账单号后,填写内容后点击查询按钮,在结账状态信息里会显示某房间、某个账单号的离店宾客消费内容4.5 客户管理4.5.1基本信息管理1、功能此模块用于修改客户信息、增加客户、客户信息的查询、删除客户、导出和打印等功能2、界面图4-13 客人信息管理3、操作指南客人基本信息管理1、点击菜单“客户管理→基本信息管理”(或点击主窗口中的快捷按钮“客户管理”)进入客户“基本信息管理”界面(如图4-13)。
2、增加客户:点击本窗口中点击“增加”按钮即弹出增加客户窗口,在此窗口中输入客户的基本信息后点击“确定”按钮后完成一次增加任务并返回“基本信息管理”窗口,(注:增加客户窗口中的客户等级只能随着客户积分的改变而改变,客户的初始积分可在“系统设置中”设置3、修改客户信息:在本窗口的数据表中选择要修改的客户信息(可通过查询的方式找到要修改的客户信息)后点击“修改”按钮即弹出修改客户信息窗口,操作方法同增加客户4、删除客户:在本窗口的数据表中选择要删除的客户(可通过查询的方式找到要修改的客户信息)后点击“删除”按钮,弹出一提示窗口,“删除后将不能恢复,确定要删除吗?”,点击“是”执行删除,点击“否”则不做删除操作4.5.2来宾信息管理1、功能用以查询来宾的信息内容2、界面图4-14 宾客信息管理一览表3、操作指南宾客信息管理1、点击菜单“客户管理→客户消费信息”进入“客户消费信息”界面(如图4-14)2、进入来宾信息一览表窗口中可指定客户的编号或姓名来查询符合条件客户的所有信息4.6 系统维护4.6.1房间项目设置1、功能设置房间状态、添加房间数量、添加房间类型、删除房间、删除房间类型等2、界面图4-15 系统设置3、操作指南系统设置1、点击菜单“系统维护→系统设置→房间项目设置”进入“房间项目设置”界面。
2、点击添加类型则会显示填写内容后点击保存按钮则会添加房间类型3、选中房间类型点击修改类型则会显示填写内容后点击保存按钮则会修改房间类型4、选中房间类型点击删除类型则会删除被选择的房间类型5、选中房间类型点击房费打折则会显示填写内容后点击保存按钮则会修改房间打折6、点击单个添加则会显示填写内容后点击保存按钮则会添加单个房间7、点击批量添加则会显示填写内容后点击保存按钮则会批量添加房间8、选中房间号点击删除类型则会删除被选择的房间9、选中房间类型点击修改房间则会显示填写内容后点击保存按钮则会修改此房间4.6.2 客户类型设置1、功能修改、添加、删除客户类型等2、界面图4-16 客户类型设置3、操作指南客户类型设置1、点击菜单“系统维护→系统设置→客户类型设置”进入“客户类型设置”界面2、点击添加类型,填写内容后点击确定则会添加客户类型3、点击修改类,填写内容后点击确定则会修改客户类型4、选中客户类型点击删除类型则会删除被选择的客户类型4.6.3 操作员设置1、功能对操作员进行修改、删除添加等2、界面图4-17 操作员设置3、操作指南操作员设置1、点击菜单“系统维护→系统设置→操作员设置”进入“操作员设置”界面。
2、选择操作范围新用户登记,填写:用户名密码等点击登记则会加入系统中3、选择操作范围修改密码,填写内容完毕点击修改则系统会修改信息4、选中被删除的操作员,选择操作范围删除用户,点击删除则系统会删除选中的操作员4.6.4 计费设置1、功能设置房间的计费内容等2、界面图4-18 计费设置3、操作指南计费设置1、点击菜单“系统维护→系统设置→计费设置”进入“计费设置”界面2、填写内容后点击保存按键,系统会应用设置第5章 系统测试系统测试的目的是发现软件中的错误,根据错误的发生现象,来改正错误,达到完整,完善的地步软件系统的测试包括5个步骤:子系统测试、模块测试、系统测试、验收测试和平行运行软件系统测试在软件生命周期中过度两个阶段在编写出模块之后就对它作必要的软件测试,模块的测试者编写者是同一人,结束之后,对系统还要进行各种综合性测试,这是软件生命周期中的一个独立的阶段,一般以专门的测试人员做这项工作在系统的测试过程中我主要是以上述的步骤测试方法,绝大部分采是用“白盒测试”因为程序的编写由我一个人完成,程序的流程很清晰,编写过程中也出现过很多错误,以致根本无法运行下去,采用程序中的设置断点,进而进行断点测试,逐步缩小范围并最后找到问题的解决办法。
在编写的过程中一边编写一边进行测试,找到错误就改正以适应用户在测试过程中,我以用户的角度来考虑问题,若我是用户如何能方便地运用,若我在某一时刻进行某种操作会造成怎样的结果,大量地进行假设并邀请同学帮忙作为用户试用系统且要求他们提出建议在所有的模块功能完成后,首先测试了一个模块的功能,能实现后,进而对其它模块进行编写、测试,在这个过程中,往往又会返回到之前的模块,再而改进如此反反复复,当所有模块测试完成后,便对子系统分别进行测试,输入尽量多的数据并尽可能多的假设“不正常情况”以测试系统的健壮性待这些测试都通过后就对整个系统进行测试所采用的测试方式是属于集成测试中的渐增式测试,这种方法实际上同时完成单元测试和集成测试,其优点有:1、开销很小,是因为它利用已测试过的模块作为测试软件2、可以更早地发现模块间的接口错误3、在测试期间,如发现错误一般是和最近加进来的那个模块有关4、已经测试过的模块可以在新的条件下再次检验,使测试更彻底经过系统测试并修改之后,系统基本上完成了所要求的功能第6章 结论在经过三个多月的设计和开发,酒店的客人档案管理系统基本开发完毕其功能基本能满足用户的需求,能完善日程管理功能,对于数据的一致性的问题也通过程序得以解决。
但因时间问题,所以此系统还存在许多不尽人意的地方,比如联机文档过少,用户界面不美观等这些都有待改善参考文献[1] Simon Robinson, K.Scott Allen等.C#高级编程. 北京:清华大学出版社, 2002.[2] Tom Archer. C#技术内幕.北京:清华大学出版社, 2002.[3] 沉舟.Microsoft.NET编程语言C#.北京:希望电子出版社, 2001.[4] 电脑编程技巧与维护杂志社.C#编程技巧典型案例解析. 北京:中国电力出版社,2005.[5] 云颠工作室. Visual C#中文版全面剖析. 北京:中国水利水电出版社, 2003.[6] 陈圣国编著. 信息系统分析与设计. 西安:西安电子科技大学出版社,2001.[7] 张海潘著. 软件工程导论. 北京:清华大学出版社, 2003 .[8] 王晟著. Visual C#.NET数据库开发经典案例解析. 清华大学出版社, 北京:2005.[9] 汪星明,周山芙著. 管理系统中计算机应用. 武汉大学出版社, 武汉:2004.[10] 郑阿奇,刘启芬,顾韵华著. SQL Server实用教程. 电子工业出版社,北京:2002.[11] 张哲峰译. Windows应用高级编程-C#编程篇. 清华大学出版社,北京:2003.致 谢论文的完成特别要感谢的是我的指导老师——贺道德老师,贺老师认真负责的工作态度、使我们在设计期间不失信心,虽然漏洞百出,但贺老师都会认真的给我们讲解,不厌其烦地指导我们,从而使我们有了更强烈的信心,一定得做好,做完美,在反复的编程以及修改下,今日终于做成了,最想感谢的就是我们的何老师!附 录using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace Hotel{ public partial class MemberManageForm : Form { private DataSet dataset = new DataSet(); private SqlDataAdapter dataAdapter; public MemberManageForm() { InitializeComponent(); this.skinEngine.SkinFile = @"C#皮肤\皮肤\Wave\WaveColor1.ssk"; } private void MemberManageForm_Load(object sender, EventArgs e) { Members(); } private void Members() { string sql = "select CusID,ID,Name,CardID,Sex,Address,Tel from Member"; dataAdapter = new SqlDataAdapter(sql, DBHelper.connection); dataAdapter.Fill(dataset, "Member"); dgvMember.DataSource = dataset.Tables["Member"]; } private void btnDemand_Click(object sender, EventArgs e) { dataset = new DataSet(); string sql = string.Format("select ID,Name,CardID,Sex,Address,Tel from Member where Name like '{0}%'", txtDemand.Text); dataAdapter = new SqlDataAdapter(sql, DBHelper.connection); dataAdapter.Fill(dataset, "Member"); dgvMember.DataSource = dataset.Tables["Member"]; } private void btnRefurbish_Click(object sender, EventArgs e) { dataset = new DataSet(); Members(); } private void btnSave_Click(object sender, EventArgs e) { DialogResult result = MessageBox.Show("确定要修改吗","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question); if(result==DialogResult.OK) { SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter); dataAdapter.Update(dataset,"Member"); } } private void btnClose_Click(object sender, EventArgs e) { this.Close(); } }}using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace Hotel{ public partial class ClientManageFoom : Form { private DataSet dataset = new DataSet();//创建DataSet对象 private SqlDataAdapter dataAdapter;//声明一个SqlDataAdapter对象 public ClientManageFoom() { InitializeComponent(); this.skinEngine.SkinFile = @"C#皮肤\皮肤\Wave\WaveColor1.ssk";//插入皮肤 } private void ClientManageFoom_Load(object sender, EventArgs e) { Guest();//向dgvGuest插入数据 } //向dgvGuest插入数据 private void Guest() { string sql = @"select L.InNo,L.Name,L.Sex,L.ZjNo,L.Address,C.CusType from Livein as L inner join CustomerType As C on C.CusID=L.CusID";//SQL查询语句 dataAdapter = new SqlDataAdapter(sql, DBHelper.connection);//创建SqlDataAdapter对象 dataAdapter.Fill(dataset, "Livein"); //使用SqlDataAdapter对象的填充方法 dgvGuest.DataSource = dataset.Tables["Livein"]; //将DATASET里的表插入dgvGuest的数据源 } private void btnSearch_Click(object sender, EventArgs e) { dataset = new DataSet();//重新创建DataSet对象 string sql = string.Format(@"select L.InNo,L.Name,L.Sex,L.ZjNo,L.Address,C.CusType from Livein as L inner join CustomerType As C on C.CusID=L.CusID where L.Name like '{0}%'", txtGuestName.Text);//SQL查询语句 dataAdapter = new SqlDataAdapter(sql, DBHelper.connection);//创建SqlDataAdapter对象 dataAdapter.Fill(dataset, "Livein");//使用SqlDataAdapter对象的填充方法 dgvGuest.DataSource = dataset.Tables["Livein"];//将DATASET里的表插入dgvGuest的数据源 } private void btnRef_Click(object sender, EventArgs e) { dataset = new DataSet();//重新创建DataSet对象 Guest();//重新向dgvGuest插入数据 } }}。