论文全文-酒店管理系统.doc
江苏畜牧兽医职业技术学院毕业论文(设计)酒店管理系统的设计与实现作者XXX 指导教师 XX【摘要】 现代化的酒店组织庞大、服务项目多、信息量大,要想提高劳动生产、降低成本、提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。酒店管理系统正是为此而设计的, 毕业设计中采用C#开发,使用Microsoft SQL Server 2005数据库。该系统具有预订客房,查询,退房等功能,对酒店进行更好的管理。【关键词】 酒店管理;C#;SQLHotel management system design and Implementation【Abstract】 Nowadays, modern hotels have huge organizations, quite a lot of service projects and a large amount of information. In order to enhance the labor productivity, reduce cost, improve service quality and management level for the promotion of economic benefits, they must rely on computer to carry out the modernization of information management. However, hotel management system is designed for this purpose. My graduation design is developed with c # and the use of Microsoft SQL Server 2005 database. The system has bookings, queries, check out features such as better management of the hotel.【Keywords: hotel】 Hotel management;C#;SQL目 录引 言1第一章 概 述11.1 现状与前景11.2 研究内容2第二章 系统分析22.1 系统相关技术介绍22.2 可行性分析22.3 系统的需求分析32.3.1 性能需求32.3.2 功能需求3第三章 系统设计43.1 系统设计43.2 数据库设计5第四章 系统实现74.1 登陆界面74.2 系统主界面84.2.1 客房查询84.2.2 客户预定94.2.3 客户入住104.2.4 客房更改114.2.5 客房结算124.3 数据管理模块124.3.1 房间状态124.3.2 客房类型134.3.3 用户管理14第五章 系统测试155.1 程序调试155.2 程序的测试165.2.1 测试的重要性及目的165.2.2 测试的步骤165.2.3 测试的主要内容16参考文献18附 录19III引 言酒店业是一个前景广阔而又竞争激烈的行业。改革开放以来,我国的酒店业迅速发展,已经成为一个具有相当规模的产业。由于我国的旅游业迅速发展,通过调查,我国在2020年将成为世界上第四大旅游国家;同时我国加入世界贸易组织,酒店业将完全开放,这个时候,我国的酒店业将面临着前所未有的机遇和挑战。但是,现在甚至还有一些酒店还停留在由人工操作和管理阶段,这样已经无法适应当前的发展趋势。因此,要想使酒店的工作质量和效率提高,采用先进的计算机网络 通信技术改变酒店业务模式,实现酒店业务管理的自动化已经成为一种必然。酒店客房管理系统是根据酒店对客房管理的实际情况进行设计的,主要目的是为了方便酒店对客房的实际情况进行集中的查询与管理工作,以提高整个酒店管理的工作效率。酒店客房管理的科学化、系统化、信息化成为各个酒店追求的目标。因此,而要实现这些功能,就要求各个酒店配备一套客房管理系统,以便在酒店内实施良好、完善的管理,最快地速度响应客户的需求,及时为他们提供服务,为他们提供一个高效、便捷的居住环境。客房管理信息系统(MIS)是各个酒店软件建设中一个重要的应用系统,它大大的改善酒店管理的基础环境。对客房管理系统的若干基本问题进行研究,主要包括客房管理系统的功能组成、系统开发条件、步骤及其总体规划等内容。第一章 概 述1.1 现状与前景随着人们的生活水平的提高,假日经济已成为人们消费的热点,使得宾馆酒店业得到快速发展。随着宾馆酒店增多,人们要求提高,宾馆酒店业的竞争也更加激烈。宾馆酒店要在的竞争中谋求生存与发展,就必须要提高其服务管理水平。引入全方位的电脑服务和电脑管理日益流行。酒店引入电脑服务和管理取得了优良的经济效益和社会效益。因此,国家建设部已于最近作出明确规定:凡星级酒店在项目审批时,其设计方案必须包括电脑管理系统,否则不予立项。可见,酒店管理电脑化势在必行。酒店管理系统将先进的电脑技术与现代酒店服务管理完美地结合起来,实现了住宿全新概念的服务和管理方式。传统的酒店管理往往令管理者花大量的时间来处理顾客投诉,例如错误查询、烦琐的登记和结帐手续、旅客费用计算错误、空余客房资料不能及时提供等,从而影响出租率,使管理人员不得不集中精力规划管理运行策略和进行决策。酒店管理系统能提高员工工作效率,加速资金周转、降低各项成本及改善服务质量都有十分积极的作用。1.2 研究内容本系统为管理者提供了完整的管理平台。其提供的主要功能有:客房类型管理,客房状态管理,客房预定管理,客房入住管理,客户换房管理,客房结算管理,退出系统。第二章 系统分析2.1 系统相关技术介绍本管理信息系统将采用技术成熟的C#作为前台开发工具。后台数据库采用微软公司的SQL Server数据库,因为它的灵活性、安全性和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。硬件方面,科技的飞速发展使硬件的更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。系统采用的是原型法的开发方法。本着开发人员对用户需求的理解,通过简单的系统反洗、系统设计,快速实现一个原型系统,然后通过反复修改来实现管理信息系统。2.2 可行性分析1、管理上的可行性酒店管理系统能记录酒店客人的基本信息,提供查询、删除等工作,使工作人员从烦琐的手工操作中解脱出来,同时,能为企业的运作提供提供管理和决策支持。由于酒店电脑系统24小时连续运行,数据量大,可靠性要求高,因此整个电脑系统供电需采用专线方式,加配UPS(不间断供电系统)合理接地,以便保障整套系统的正常运行。2、技术上的可行性技术采用成熟的C#作为前台开发工具。后台数据库采用SQL Server2005数据库,灵活性、安全性和易用性为数据库编程提供了良好的条件。3、经济上的可行性本系统由作者自主开发,界面易操作,操作人员只需简单培训即可上岗。2.3 系统的需求分析2.3.1 性能需求(1)本软件主要用于管理,不是科学计算,要求计算的精度不是很苛刻。所以输入,输出数据精度不是很高,用于计算的数用浮点数就可以了。(2)本软件运行的响应时间不超过12秒,基本实现就可以。(3)该系统只支持在window系统上运行,后台数据库只支持SQL Server2005。2.3.2 功能需求酒店住房业务的基本流程主要包括:客房的预定,顾客通过电话或者其他途径向酒店进行客房预定,接待人员查询客房状态表后确定有空房则接受预定,预定成功后发给顾客预定凭证,并对客房状态表做出相应的变化。客房的入住,如果顾客已经预定房间,则根据预定凭证进行预定入住操作,发给顾客房卡,客房状态由“预定”变为“入住”。 如果顾客没有预定房间,接待人员查询客房状态后,有空房则进行客房登记操作,发给顾客房卡,客房状态由“空房”变为“入住”。顾客换房,如果顾客对入住的客房条件不满意,则可进行顾客换房操作。接待人员将顾客的房间进行更换,并更换顾客房卡,客房状态也进行相应的调整。补交押金,如果顾客换房后押金太少,则要补交押金。顾客交纳押金,接待人员开具押金凭证。顾客退房,顾客退房时,接待人员根据顾客的房卡,进行退房登记。计算顾客入住期间的房费,餐费,话费,各种消费和押金总额。对顾客收取费用或者退回押金。顾客信息转存到历史顾客表中。客房状态由“入住”转为“空房”。图3-1 业务流程分析图第三章 系统设计3.1 系统设计图3-2 系统功能模块图从(图3-2)中可以看出,系统总共分为8个模块。客房类型模块:可以对房型、房价等情况等进行查询、修改等操作。客房查询模块:实现对所有房间的基本情况进行查询。客户预定模块:实现对客户预定情况进行全面管理。 客户入住模块:可以查询所有客户入住情况。客房更改模块:实现客户换房的一些相关操作。客房状态模块:可以对客房空房、预定、入住等情况等进行修改等操作。客户结算模块:实现酒店客房账务结算。注册帐号模块:实现用户注册的功能。3.2 数据库设计本软件的数据库名称为:Hotel-DB,包含6个数据表,分别是:BookIn、CheckIn、CheckOut、Room、RoomType、UserInfo。具体表结构如下:表3-1用户表 UserInfo列名数据类型允许为空说明UserIdint否用户ID(主键)UserNamevarchar(50)否用户姓名Passwordvarchar(50)否密码IsAdminbit否是否管理员表3-2客户入住表 CheckIn列名数据类型允许为空说明CustomerIdint否客户ID(主键)Namevarchar(10)否姓名Sexchar(2)否性别PTypevarchar(50)否证件类型P_IDvarchar(50)否证件号码Telvarchar(50)否电话号码CTypevarchar(50)否客户类型RoomNumint否房间号Indatedatetime否入住时间Daysint否入住天数Dmoneymoney否押金Remarkvarchar(50)是备注表3-3客户结算表 CheckOut列名数据类型允许为空说明Idint否客户结算ID(主键)CustomerIdint否客户IdNamevarchar(10)否姓名列名数据类型允许为空说明Sexchar(2)否性别Telvarchar(50)否电话号码CTypevarchar(50)否客户类型RoomNumint否房间号Indatedatetime否入住时间Daysint否入住天数Discountfloat否折扣Addmoneymoney否额外费用SunMoneymoney否总金额Remvarchar(50)否备注表3-4客房预定表 BookIn列名数据类型允许为空说明BookIdint否预定号(主键)Namevarchar(10)否姓名Sexchar(2)否性别PTypevarchar(50)否证件类型P_IDvarchar(50)否证件号码Telvarchar(50)否电话号码RoomNumint否房间号Indatedatetime否入住时间Daysint否入住天数Dmoneymoney否押金Remarkvarchar(50)是备注表3-5房间状态表 Room列名数据类型允许为空说明RoomIdint否房间号(主键)RoomTypevarchar(10)否房间类型RoomNumint否房间号Bookchar(2)否是否预定列名数据类型允许为空说明Emptychar(2)否是否空Stopchar(2)否是否停用Remarkvarchar(50)是备注表3-6房间类型表 RoomType列名数据类型允许为空说明RoomTypeIdint否房间类型ID(主键)RoomTypevarchar(10)否房间类型Areaint否房间面积Bedint否床位UnitPricemoney否单价Broadbandchar(2)否是否有宽带Remarkvarchar(50)是备注第四章 系统实现4.1 登陆界面1、功能只有本系统的管理员和进行认可的操作员使用自己相应的用户名与密码才能登陆到此系统进行相关权限下的操作。2、界面图4-1 系统登陆界面3、操作指南(1)用户在登录窗口中输入正确的用户名和密码后可以登录系统(如图4-1 ),根据输入的用户名是系统管理员还是操作员给予不同的操作权限。(2)系统管理员可以根据实际情况增加相应的操作员。4.2 系统主界面图4-2 前台操作4.2.1 客房查询1. 功能通过客房号查询房间的基本类型与状态。2. 界面图4-3 客房查询3. 操作指南(1).在文本框中输入客房号,点击查询,可以查询到该房间的一些基本情况。(2).点击空房按钮的时候,会把数据库中所有的空房信息显示出来。(3).点击未预定按钮的时候,会把数据库中所有的未预定的客房信息显示出来。(2).点击未停用按钮的时候,会把数据库中所有的未停用的客房信息显示出来。4.2.2 客户预定1. 功能可以对预定房间的客户信息进行增删改查等操作。2. 界面图4-4 客房预定3. 操作指南(1)在文本框中输入订单号,点击查询,可以查询到预定的一些基本信息。(2)当你想对预定信息进行操作时,点击ListView中的数据,将会把ListView中选中的那行数据各个字段显示在上面的文本框和列表框中。(3)点击修改按钮的时候,将会把修改后的信息添加到数据库中。(4)点击入住按钮的时候,将会把数据添加到入住表中并且把预定表中的该数据删除并且客房状态表中的预定字段变成“否“,是否为空字段变成“是”。(5)点击取消预定的按钮的时候,会把入住表中的该数据删除。4.2.3 客户入住1. 功能可以对客户的入住信息进行查询和添加。2. 界面图 4-5 客房入住3. 操作指南(1)在文本框中输入客户号,点击查询,可以查询到客户入住的信息。(2)当你想对入住信息进行操作时,点击ListView中的数据,将会把ListView中选中的那行数据的内容显示在输入住信息面板中。(3)点击入住按钮的时候,将会把入住客户的信息添加到数据库中并且讲客房状态表中是否为空的字段的值变成“否”。4.2.4 客房更改1. 功能可以实现换房和续住的功能。2. 界面图 4-6 客房更改3. 操作指南(1)在文本框中输入客户号,点击查询,可以查询到入住客户的信息并显示在客户信息面板的控件中。(2)当点击续住的时候,将会把显示客户信息面板中的天数和押金的值传到续住面板中的原有天数和原有押金中,然后可以实行操作,操作完成后点击确定,将会把值重新传回去。(3)当点击调房的时候,将会把显示客户信息面板中的客房号和押金的值传到调房面板中的原客房号和原有押金中,然后可以实行操作,操作完成后点击确定,将会把值重新传回去。(4).点击保存的时候,会把修改后的信息记录到数据库中。4.2.5 客房结算1. 功能退房并结算费用。2. 界面图 4-7 客房结算3. 操作指南(1)在文本框中输入客户号,点击查询,可以查询到入住客户的信息并显示在结算信息面板的文本框中。(2)当点击结算,系统会自动算清住宿费和消费总额还有应付款的金额并且显示在对应的文本框中。(3)点击保存的时候,会把结算的信息记录到数据库中并且把客房状态表中的是否为空字段的值变成“是”。4.3 数据管理模块4.3.1 房间状态1. 功能对客房的状态进行管理。2. 界面图4-8 客房状态3. 操作指南(1)在文本框中输入客房号,点击查询,可以查询到客房的一些基本信息。(2)当选中ListView中的数据时,将会把ListView中选中的数据显示到客房状态信息面板中,以便进行操作。(3)点击新增按钮的时候,将会把客房状态信息面板中的信息添加到数据库中。(4)点击删除按钮的时候,会把选中的数据删除。(5)点击修改按钮的时候,会把修改后的信息传到数据库中。4.3.2 客房类型1. 功能对客房的类型进行管理。2. 界面图4-9 客房类型3. 操作指南(1)当你选中ListView中的数据时,会将选中的数据的内容显示在客房类型信息面板中。以便进行操作。(2)点击新增按钮的时候,将会把客房类型信息面板中的信息添加到数据库中。(3)点击删除按钮的时候,会把选中的数据从数据库的表中删除。(4)点击修改按钮的时候,会把修改后的信息传到数据库中。4.3.3 用户管理1. 功能对用户进行管理。2. 界面图4-10 用户管理3. 操作指南(1)当你选中ListView中的数据时,会将选中的数据的内容显示在显示用户信息面板中。以便进行操作。(2)点击注册按钮的时候,将会把显示用户信息面板中的信息添加到数据库中(只有管理员才能使用该功能)。(3)点击修改权限按钮的时候,可以修改用户的权限(只有管理员才能使用该功能)。(4)点击修改密码的时候,可以修改用户的密码(操作员也可使用此功能)。第五章 系统测试5.1 程序调试1. 测试的基本工作流程在设计系统的过程中,存在一些错误是必然的。对于语句的语法错误,在程序运行时自动提示,并请求立即纠正,因此,这类错误比较容易发现和纠正。但另一类错误是在程序执行时由于不正确的操作或对某些数据的计算公式的逻辑错误导致。这类错误隐蔽性强,有时会出现,有时又不出现,因此,对这一类动态发生的错误的排查是耗时费力的。5.2 程序的测试5.2.1 测试的重要性及目的测试的重要性:软件的测试在软件生命周期中占据重要的地位。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。 测试的目的:1. 软件测试是为了发现错误而执行程序的过程; 2. 测试是为了证明程序有错,而不是证明程序无错误; 3. 一个好的测试用例是在于它能发现至今未发现的错误; 4. 一个成功的测试是发现了至今未发现的错误的测试。 测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。5.2.2 测试的步骤与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤的继续。大型软件系统通常由若干个子系统组成,每个子系统又由若干个模块组成。因此,大型软件系统的测试基本上由下述几个步骤组成:1. 模块测试 在这个测试步骤中所发现的往往是编码和详细设计的错误。2. 系统测试 在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。3. 验收测试 在这个测试步骤中发现的往往是系统需求说明书中的错误。5.2.3 测试的主要内容为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试、确认测试和系统测试。 1单元测试单元测试集中在检查软件设计的最小单位模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。 2. 集成测试 集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。 3. 确认测试 确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。 4. 系统测试 软件开发完成以后,最终还要与系统中其他部分配套运行,进行系统测试。包括恢复测试、安全测试、强度测试和性能测试等。第六章 总结与展望在设计的过程中,我掌握了很多C#的编程知识,并对这种成熟并广泛应用的技术进行了深入的学习。设计的过程也是一个再学习的过程,在遇到问题的时候我尽量自己想办法解决,这在很大程度上激发了我们的自学能力;在没有办法解决的情况下,认真的向老师请教,从老师那里我学到了很多的知识,老师对我的指导起到了画龙点睛的作用。在我的程序设计过程中,我充分的体会到了“实践出真知”这一点,书本上的知识是不够的,只有把理论与实践相结合才能够真正的学到知识。一个管理信息系统的设计,不可能一步到位,还需要不断的完善和补充。编程前的深思熟虑是减少程序调试工作量的重要方法,只有进行充分考虑,才会减少调试过程中的工作量。虽然在开始写程序之前我们做了多的准备工作,但在真正的写程序时仍然发现许多问题,有些问题是分析时的疏漏,有些则是如果不做无论如何也想不到的。参考文献1 周琦.SQL Server 2005 数据库基础及应用技术.北京大学出版社.20102 (美)Michael Halvorson.VisualC#2008从入门到精通.清华大学出版社.20093 王小科.C#项目开发案例全程实录(第2版).清华大学出版社.20114恭德罗依.SQL Server2005从入门到精通.电子工业出版社.20065 陈圣国编著.信息系统分析与设计.西安电子科技大学出版社.20016 王晟著.Visual C#.NET数据库开发经典案例解析.清华大学出版社.20057 C#从入门到精通.人民邮电出版社.20118 郑阿奇,刘启芬,顾韵华著. SQL Server实用教程.电子工业出版社.2002致 谢 在本次毕业设计(论文)过程中,得到了指导老师的指导与支持。在此特别感谢XX老师的大力帮助。指导老师的悉心指导和大力支持,在总体结构、功能的把握上给予了非常大的帮助,同时根我们提供了非常优越的设计环境,并对我在编程、数据库设计等细节工作上给予了耐心的指导,对于我顺利完成这次毕业设计起到了关键性的作用。转眼间,大学生活即将结束,回首过去三年的大学生活,真是有苦也有乐,然而更多的则是收获,感谢母校的各位老师不但无私地传授给我们知识,也教会了我们如何做人。软件技术专业的毕业设计任务繁重,但正是在这几个月紧张而充实的设计中,我感到自己的知识得到了一次升华,我相信:我的毕业设计会给我的三年大学画上一个圆满的句号。附 录/ 登录功能 private void button1_Click(object sender, EventArgs e) if (this.textBox1.Text.Trim() = "") MessageBox.Show("请输入用户名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; if (this.textBox2.Text.Trim() = "") MessageBox.Show("请输入密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; else string userName = textBox1.Text; string password =userInfoManager.GetPasswordByUserName(userName); if (password.Equals(textBox2.Text.ToString() MainForm mainForm = new MainForm(); MainForm.isRunMain = true; mainForm.Show(); this.Close(); else MessageBox.Show("请输入正确的密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); / 读取选中的listview中的数据private void textChangeWithList(int i) if (i > listView1.Items.Count) i = 0; txtRoomId.Text = listView1.Itemsi.SubItems0.Text.ToString(); textR_N.Text = listView1.Itemsi.SubItems1.Text.ToString(); comboRT.Text = listView1.Itemsi.SubItems2.Text.ToString(); if (listView1.Itemsi.SubItems3.Text.ToString() = "是") checkBoxBook.Checked = true; else checkBoxBook.Checked = false; if (listView1.Itemsi.SubItems4.Text.ToString() = "是") checkBoxEmpty.Checked = true; else checkBoxEmpty.Checked = false; if (listView1.Itemsi.SubItems5.Text.ToString() = "是") checkBoxStop.Checked = true; else checkBoxStop.Checked = false; textRem.Text = listView1.Itemsi.SubItems6.Text.ToString(); private void listView1_SelectedIndexChanged(object sender, EventArgs e) foreach (int i in listView1.SelectedIndices) textChangeWithList(i); /根据客户号搜索客户信息private void btnSearchCheckIn_Click(object sender, EventArgs e) listView1.Items.Clear(); if (textC_NS.Text.Trim() != "") Customer cu = checkManager.GetCustomerByCustomerId(Convert.ToInt32(textC_NS.Text.Trim(); ListViewItem li = new ListViewItem(); li.SubItems0.Text = cu.CustomerId.ToString(); li.SubItems.Add(cu.Name.ToString(); li.SubItems.Add(cu.Sex.ToString(); li.SubItems.Add(cu.PType.ToString(); li.SubItems.Add(cu.P_ID.ToString(); li.SubItems.Add(cu.Tel.ToString(); li.SubItems.Add(cu.CType.ToString(); li.SubItems.Add(cu.RoomNum.ToString(); li.SubItems.Add(cu.InDate.ToString(); li.SubItems.Add(cu.Days.ToString(); li.SubItems.Add(cu.Dmoney.ToString(); li.SubItems.Add(cu.Remark.ToString(); listView1.Items.Add(li); /清空控件中的数据 private void btnCancel_Click(object sender, EventArgs e) textClear(); private void textClear() TextB_N.Clear(); textName.Clear(); comboSex.Text = "" comboLT.Text = "" textLID.Clear(); textTel.Clear(); textR_N.Clear(); textInDate.Clear(); textDays.Clear(); textDMoney.Clear(); textRem.Clear(); 顶呱呱网站建设咨询:网站网门户 成都顶呱呱软件开发咨询: 软件网门户 21