版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于QT的酒店管理系统设计与实现摘要:近年来,伴随着经济和计算机技术的进步和发展,酒店服务行业发展快速,酒店的管理和客户服务满意情况会对酒店的运营有一定影响,所以对于酒店管理这方面需要加强,因此设计了这个酒店管理系统。本系统实现的是相对简单的酒店管理功能,在保证酒店的正常运转下,也提高酒店入住的效率,一定程度上节省更多人力资源。网络具有强大的数据信息存储功能,并且数据有很高的准确度,这为酒店今后的发展规划提供强力的数据支持,为酒店今后发展提供更多的参考。本套酒店管理系统运用C++语言,采用Winform窗体技术和QT框架,酒店管理系统的高效性、安全性以及稳定性在一定程度上得到保证。该系统涵盖了酒店入住管理,酒店房间查询,酒店退房管理,酒店收入查询,系统基础信息管理等一系列酒店日常管理所需要的功能。关键词:酒店管理系统;QT;MySQL目录12623绪论 3285901.课题背景 327812.课题目的和意义 3189023.国内外研究现状 3248444.论文研究的主要内容 4199641相关技术介绍 588681.1C++语言 5309011.2WinForm窗口 5181921.3QT简介 5174782系统分析 7179202.1系统需求分析 7323042.1.1功能需求 7248872.1.2性能需求 726342.2可行性分析 8311802.2.1经济可行性 819212.2.2技术可行性 8134102.2.3安全可行性 8111853系统设计 931033.1系统功能模块设计 959443.2主要功能模块设计 10129113.2.1用户注册流程图 1097793.2.2用户登录流程图 10189053.2.3酒店客房管理流程 11134423.3数据库设计 12154653.3.1数据库概念设计 13130583.3.2数据库逻辑设计 13129244酒店管理系统的实现 1681064.1用户登录 1653714.2订单列表 20162304.3信息维护 2377424.4房间管理 25122564.5订单管理 28223154.6酒店房间审核管理 31226925系统测试 3426525.1测试的目的与目标 34159305.2测试方法 34177335.3测试用例 343877结论 3632688参考文献 37绪论1.课题背景随着世界经济逐渐走向全球化,中国经济也开始进入高速增长,进而人们在日常生活中的物质和文化水平还有更多的质量在不断地得到改善。而外出旅游和工作出差的需求使酒店服务行业发展前景变得巨大。根据调查,中国的文化和旅游业近年来一直在发展迅速,中国将会发展成为目前的世界第四大文化和旅游国家。日益增长的需求使酒店业在之后的未来将面临空前绝有的机会和竞争。在酒店行业中,一个好的酒店管理系统对于酒店的运转是非常的重要,有一个好的系统对酒店进行管理,能更好的提升酒店的服务水准,还可以通过网络的大数据为酒店之后的发展计划进行更加精准的规划,决定了未来酒店的发展,以便提高酒店的经济效益。据相关数据表明,酒店管理系统在酒店的发展中起着数一数二的作用,是酒店持续发展所必需的。因此,越来越多的酒店开始引进并加入到酒店管理系统的这个大家庭当中。2.课题目的和意义随着科技时代的发展和网络的普及,计算机的使用已经成为我们生活以及工作中的一部分。通过对计算机的使用,我们的生活、工作以及娱乐等活动都得到了极大地便利和舒适。同时在互联网环境下,酒店管理实现酒店管理系统信息化,对酒店管理进行全面整合,实现模块化管理模式,能够减少管理过程中的出错率,保持数据信息的正确性,为酒店管理提供针对性信息数据[1]。经济发展促进了酒店业的快速发展。对于整个酒店来说,酒店的服务管理水平对酒店的经营状况起重大作用。酒店管理的智能化,信息化成为了酒店的主要竞争方向。虽然计算机系统管理并不能一定帮助酒店管理走向成功,但是它能最大程度提供准确、高效、快捷等作用,从而大大提高酒店管理水平。帮助酒店提高业务管理能力,最大程度的发挥其价值。3.国内外研究现状在目前的市场大环境背景下,信息化已经成为了现代化社会的趋势,不仅改变我们的生活,更进一步推动着经济的发展。站在普通群众的角度上看,大多数都基于互联网平台去了解外界信息和活动;而站在商人的角度上看,通过信息化的方式来提升自己的知名度是最直接有效的方式。在当今现代化的市场中,酒店这样的经营主体除了有别于过去的特性,经营范围的扩大和模式的多样性,都说明了酒店管理不能像以前一样用传统的方式去管理酒店。为了在目前竞争激烈的市场占据有利的情况,酒店管理首先应该进行的就是管理模式的改变,利用先进的网络技术提升管理的效率和准确性。这样的管理系统可以细化酒店内部的各种设施和服务的情况,管理内容多样,信息存储和调取具有条理,有利于管理工作的效率提升。与此同时,酒店开的越来越多,人们对酒店的要求就越来越高,加剧了酒店之间的竞争。那么作为酒店行业的竞争主要采取提高员工的满意率、争取稳定的客源,做出一套完整的营销的方案等[2]。像酒店这样的个体要想长久的运行下去,那么经济利益就是它最主要的。如果酒店经营的预期盈利与当初酒店建立所预想的收入不符,那么酒店在下一次投入对酒店建设的成本就有可能出现很大的调整,而资金的调整可能会导致酒店的服务质量产生新一次的变动。酒店最后可能会退出这个市场环境。一些先进的理念和技术方式不断的被应用到酒店的管理系统中,在提升酒店系统的设计质量上发挥着重要的作用,不断的推动者我国酒店行业向着更加理想的方向发展。所以,合理的设计酒店的管理系统是有关工作人员必须要高度重视起来的工作内容,以满足社会发展的需要[3]。4.论文研究的主要内容这个系统是借助QTcreator这个软件平台进行开发,使用C++语言来编辑,对于Windows操作系统具有很好的兼容性,以WinForm形式实现。通过编写代码传到SQL语言,实现入住、预定、用户管理、房间查询、房间状态、客户结算等功能。1相关技术介绍1.1C++语言C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。在C++开发过程中,除去了C语言中的不足和问题,并且增加了许多新功能。C++的出现就是更好的支持面向对象的程序开发,因此,在进行C++研发的过程中,引入了类的机制,C++最初被命名为“带类的C语言”,后来被改名为C++。C++是从C的基础之上发展而来,同时是支持面对对象的程序设计,所以它的特点如下:第一,它支持C的,所以C++继承了C语言简洁、紧凑、灵活、可移植性好等特点,同时也保留了C语言中的一些汇编语言指令的特点。C++提供了更好的类检测、编译分析,能够检测出类中存在的错误,在安全性上也有了一定的提高。第二,在编译器上更加严格,引入引用的概念。第三,同时支持面向过程和面向对象的方法,因此它也具有数据封装和隐藏、继承和多态等面向对象的特征[4]。由于C++很大程度上与C兼容,借此提供一个平滑的过渡,对于使用C语言的程序员,在后续使用C++开发程序时,很容易接受。其次,使用C++编写的程序,其可读性好,代码结构更为合理。C++对于程序开发人员来说,更容易理解和维护,它并不需要过于复杂的程序设计环境。C++提供对代码库的重用的支持,更有利于程序的开发。C++可以让我们对内存的操作更具体一些。1.2WinForm窗口WinForm是.net开发平台基于窗体模式的开发方式。.net为开发WinForm的程序提供了丰富的类库。比如可以设计一个窗体可视化程序以及拥有各种可视化的空间,进而可以创建Windows程序,通过继承和扩展这些类才让我们的程序有多样的用户界面。在数据库连接方面主要是提供了OLEDB和ODBC来进行数据库的连接,主要的数据库包含了、MicrosoftSQLServer、MicrosoftAccess、Jet、DB2和Oracle。1.3QT简介Qt是诺基亚旗下一个面向对象的跨平台的C++图形用户界面应用程序框架。它对于GUI程式和非GUI程式都可以进行开发。使用特殊代码生成扩展以及一些宏。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。Qtcreator是用于开发Qt的一个轻量级跨平台集成开发环境,它带来的两大好处是提供首个专门支持跨平台开发而设计的集成开发环境确保了初次接触人员的上手和操作。其次是它包含一套用于创建和测试基于Qt应用程序的高效工具。选择使用Qt开发是因为具有下列优点[6]:1.优良的跨平台特性:Qt支持很多操作系统,例如MicrosoftWindows95/98,MicrosoftWindowsNT,Linux,Solaris,SunOS,HP-UX,BSD/OS,SCO,AIX,OS390,QNX等等。2.面向对象:Qt良好软件封装和程序运行机制不仅让Qt的软件模块化设计水平很高,可用的重用性也比较好,对于应用程序设计开发而言也可说是非常方便的。3.丰富的API:Qt中提供的C++类多达250个以上,还提供基于模板的collections,serialization,file,I/Odevice,directorymanagement,date/time类。甚至还包括正则表达式的处理功能。4.大量的开发文档。5.XML支持。6.Webkit引擎的集成,能够很好地实现本土化用户接口和web内容之间的无缝整合。7.用户自定义控件:在Qt中,能够创建控件,具有绝对的优越性,生成自定义的控件是很简单的,并且在修改上也是很简单的。8.方便性:由于Qt是一种跨平台的GUI工具包,它对编程者隐藏了在处理不同窗口系统时的潜在问题。9.高性能的工具:对于库来讲,它的有效性远超过应用性。为了提高Qt库的有效性、快捷性,对其进行了优化。Qt是基于Xlib,而不依赖Motif工具包。10.优越的绘画功能。11.绘制2D/3D图形功能:Qt提供了QGLWidget类,使用该类能够绘制2D/3D图形。用就像用一个Qt组件一样方便。2系统分析酒店管理系统它需要向用户展示酒店的基本信息,同时对于酒店的工作人员来说,它需要具备管理功能,酒店员工需要对酒店的相关信息进行操作。而对于平台人员来说,它需要对酒店人员所上传的酒店信息等进行审核。下面将从需求分析和可行性分析这两个角度来简单的说一下系统。2.1系统需求分析2.1.1功能需求近年来,酒店管理工作属于其中比较常见的问题。目前,酒店管理仍处于从人工管理到计算机管理的过渡阶段。由于房间和客人人数众多,许多工作无法充分利用计算机带来的便利,因此纸张管理工作非常困难。基于这种情况,通过实际研究,设计开发出了酒店管理系统。酒店管理是酒店管理人员在系统设计和开发过程中的主要管理功能,严格按照软件工程的规范,使用C++语言编辑器,与Windows操作系统有着良好的兼容性,通过SQL语言的代码实现了酒店管理、预订管理、结算管理、房间管理系统管理等功能。力求保证系统的安全性、简单性、稳定性。酒店管理员管理功能需求如下:(1)酒店工作人员的登录功能;(2)房间管理功能,包括房间情况的编辑、选择与添加;(3)入住管理功能,包括直接入住和退房的功能;(4)预定管理功能,包括对用户预定信息的查询和操作等;2.1.2性能需求在系统设计之初,设计出具有简单的用户界面和直观的操作界面的系统。毕竟该系统是面向公众用户的,我们需要考虑系统操作的难度。此外,系统将在每一步都设有提示,帮助用户更快速的熟悉操作系统。简单方便不仅体现在前端界面上,也体现在后端数据上。系统应提供简单的维护手段。系统在运行过程不会出现任何非操作性错误这是表明系统完成的基础。在开发系统的过程中,要考虑系统使用时所要承受数据突发的各种情况,必要时需要对程序进行改进。现阶段网络技术发展快速,软件或者系统需要不断更新和补丁来完善自己的功能。因此,系统的可扩展性就显得尤为重要,在设计的时候就需要为后续的发展做好基础。2.2可行性分析2.2.1经济可行性本系统要求实现一个酒店管理系统的基本功能,比较容易实现。其中所使用的编辑语言C++语言简单易学、上手快,从开发所需时间上讲并不需要太长,大大的减少了成本的投入。系统包括入住管理、预订管理、房间管理、结算管理、系统管理等模块,这些模块能够在一定程度上改善酒店的服务和人员的工作质量,帮助管理者更加科学的管理酒店,大大的减少酒店资源的浪费。通过系统反馈的业务数据统计和调查,帮助酒店管理者及时了解业务信息,从而有效地提高酒店的经济收入。2.2.2技术可行性本套酒店管理系统采用Qt这一图形设计软件,制作的软件界面更加直观和人性化。用C++作为开发语言,在编译上更加稳定。操作界面是Windows用户界面,相对熟悉方便。程序的运行界面则是WinForm窗口,也是方便用户操作。数据库上采用MySQL数据库,占用资源低,但是保证了数据的安全性、稳定性。极大程度上减少了数据的缺失。2.2.3安全可行性第一:系统的安全性。系统的安全主要在于无关人员不能很轻易地对系统进行操作。而本系统在登录过程中,设置了账号密码登录,有效的控制了登录,从而避免了一些外来人员随意更改系统设置和对酒店信息的破坏。第二:数据库的安全性。MySQL数据库用一定的机制来检查数据是否满足我们所设立的条件,从而保证了数据的正确和完整。数据的正确和完整也就说明了数据库的安全性是得到保证的。3系统设计3.1系统功能模块设计根据将系统结构化的设计方法,首先,整个系统划分为多个相对独立的模块,通过实现单独的每个模块的设计和模块之间的关系从而进一步实现整个系统。然后通过绘图软件绘制系统设计,以便我们在系统设计过程中参考。该系统的功能结构图如图3.1所示:图3.1系统功能模块结构图整体上来讲,整个系统的功能流程大致是下面所描绘的样子,如图3.2所示:图3.2系统功能整体流程结构图3.2主要功能模块设计3.2.1用户注册流程图该模块实现了用户的注册功能,在新用户进行注册时,在点击注册按钮时,程序将用户注册时输入的名称与数据库表单Customer中的用户名进行排查,如果发现用户名是已经被注册过的,则注册界面提示用户输入的名称已经存在。如果用户名没有被注册过,则判断两次输入的密码是否一致,如果不一致,返回重新输入,如果一致,则将本次填写的信息保存到数据库中,并在注册界面提示用户注册成功。如图3.3所示:图3.3用户注册流程图3.2.2用户登录流程图用户来到登录主界面,根据登录界面的提示在对应位置输入注册时的用户名以及密码。点击登录按钮后,程序将输入的用户名称和密码通过数据库语句传送到数据库,与用户数据表Customer中的用户数据进行对比,如果数据库中含有这个用户名且密码一致,则提示用户登陆成功,用户将进入酒店界面。如果数据库中没有该用户名或者密码错误,则提示用户输入信息错误,信息提示框清空,提示用户重新输入。如图3.4所示:图3.4用户登陆流程图3.2.3酒店客房管理流程酒店房间管理流程大致可以分为查看酒店房间是否有用户进行预定,添加、修改和删除酒店的房间信息,信息包含房间类型、房间的数量、房间的大致图像等等信息。以及用户入住酒店后确认入住。如图3.5所示:图3.5客房管理流程图3.3数据库设计数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术。系统搜索数据的速度影响着用户对系统的体验。在整个系统当中,数据库的存在是不可或缺的,它就像一个巨大的柜子将数据有序的放在柜子的抽屉里面。通过构建一个好的数据库,系统能够有效的完善对数据存储数据,保证数据的完整和一致。通过对建立数据库的必要性和可行性的分析,设计出一个数据库的概念模式。数据库将数据存储在二维表格的单元中,整个数据库由多个二维表格组成。每个关系都是一个表。用户可以清楚地看到表,用户可以在不使用复杂查询语句的情况下操作数据库。这使得用户不需要了解更多的东西,简化了用户的操作。数据库分析完成后,便开始对数据库进行设计。本次数据库的设计主要包括建立数据库以及创建系统每个模块上所需要的表单和存储过程。在数据库的设计中,要特别注意数据库数据的安全性,更重要的是防止非法程序入侵和重要信息泄露。酒店管理数据库设计完成之后,将其导入到MySQL中,通过可视化工具将数据库完整的展示出来,数据库的名称为HotelManagement。数据库设计的目的是将项目中的对象与数据库中的表对应,反映它们之间关系。数据库的设计作为项目开发中的重要一环,它的完善会影响程序的开发,也影响着后期运营的情况。3.3.1数据库概念设计E-R图也称实体-联系图(EntityRelationshipDiagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界关系概念模型的有效方法。大部分数据库设计产品使用实体-联系模型(ER模型)帮助用户进行数据库设计。ER数据库设计工具提供了一个“方框与箭头”的绘图工具,帮助用户建立ER图来描绘数据。根据上述概念设计和数据流程分析,绘制了酒店预定管理系统的全局E-R模型如图3.6所示。图3.6系统全局E-R图3.3.2数据库逻辑设计该系统的实现其实就是三类人员的使用,因此在进行数据库设计的时候也要对这三个类型使用者的需求进行考虑:普通用户:普通用户登录后只能浏览、订阅酒店以及对自己的信息进行操作,没有其他权限。酒店管理员:任务是更新系统上的酒店信息,对于酒店内部的设置拥有相应的增、删、改、查操作。但是操作完成后需要平台管理员确认后,才会发布上架。平台管理员:该类用户在系统中权限应该是最高的,对各个酒店所发布信息的增、删、改、查操作进行审核确定。下面是建立数据库时所创的表单,一共有6个table,分别是Customer、Hotel、Hotelmanager、Order、PlatformAdmin、Room,详细表单如下所示:表3.1Customer序号列名数据类型长度小数位标识主键外键允许空默认值说明0Accountvarchar2147483647是1Passwordvarchar2147483647是2Phonevarchar2147483647是3Totalamountint40是表3.2Hotel序号列名数据类型长度小数位标识主键外键允许空默认值说明0Hotelnamevarchar2147483647是1Addressvarchar2147483647是2Districtvarchar2147483647是3Consolephonevarchar2147483647是4Approvedboolean1表3.3HotelManager序号列名数据类型长度小数位标识主键外键允许空默认值说明0Accountvarchar2147483647是1Passwordvarchar2147483647是2Phonevarchar2147483647是3Lisencevarchar2147483647是4Hotelnamevarchar2147483647表3.4Order序号列名数据类型长度小数位标识主键外键允许空默认值说明0Datevarchar2147483647是1Daysint40是2Typesint40是3RefundApprovedboolean1是4CustomerNamevarchar21474836475RoomIdvarchar2147483647表3.5PlatformAdmin序号列名数据类型长度小数位标识主键外键允许空默认值说明0Accountvarchar2147483647是1Passwordvarchar2147483647是2Phonevarchar2147483647是表3.6Room序号列名数据类型长度小数位标识主键外键允许空默认值说明0Hotelnamevarchar2147483647是1Approvedboolean1是2Priceint40是3Numberint40是4Typeint40是5Discountfloat8是6Imagesvarchar2147483647是7Discriptionvarchar2147483647是8Starint40是4酒店管理系统的实现本章主要介绍该系统实现后的效果,包括用户登录、预订订单、信息维护、房间管理、订单管理以及房间审核等模块的实现过程,下面通过系统运行截图的方式来展示每个模块并进行讲解。4.1用户登录主要是验证管理员身份的过程,作为酒店管理员登录后,可以查看或修改自己酒店的各种信息。而平台管理员则是对每个酒店所发出的信息进行审核。所以只有输入正确的用户名和密码才能登录对应的界面进行操作,并且只有管理员才有权限对系统进行添加、修改、删除和查找的操作。首先我们会看到的是登录界面,登录界面作为整个系统运行的纽带,是所有操作人员必须经过的界面。如下图4.1用户登录界面图4.1用户登录界面部分代码:voidloginwindow1::Login(){//获取账号密码信息QStringaccount=ui->lineAccount->text();QStringpassword=ui->linePassword->text();//总体的容错判断if(password.isEmpty())//密码不能为空{QMessageBoxmsgBox;msgBox.setText("请输入密码");msgBox.setWindowTitle("Error");msgBox.exec();return;}//账号不能为空if(account.isEmpty()){QMessageBox::information(this,"Error","请输入用户名",QMessageBox::Ok);return;}//判断用户名密码是否正确//登录用户界面if(ui->btnCustomer->isChecked()){ui->lineAccount->clear();ui->linePassword->clear();boolflag=0;//判断登陆信息for(inti=0;i<g_Customerlist.size();i++){if((account==g_Customerlist[i].GetAccount())&&(password==g_Customerlist[i].GetPassword())){flag=1;QMessageBox::information(this,"SUCCESS","登录成功",QMessageBox::Ok);this->close();pMainwindow=newMainWindow(this,&g_Customerlist[i]);pMainwindow->show();}}if(flag==0){QMessageBox::information(this,"FAILED","用户名或密码错误",QMessageBox::Ok);ui->linePassword->clear();}}系统通过调用Login()函数来判定用户名和密码,需要和数据库中的用户名和密码比对,结果一致才可以登录成功。其次,当用户进入到酒店系统当中,便可以进行酒店信息的查询。输入酒店所在的城市以及地区,选择入住日期以及天数就可以进行酒店的查询。酒店显示在列表框后可以通过对酒店进行点击,再按下旁边的查看详细信息就可以查看所选的酒店的更加详细的信息。至于酒店出现在用户的列表顺序则由用户根据价格或者评价等选择后展示在下面的列表框中。如图4.2所示图4.2系统主界面部分代码:MainWindow::~MainWindow(){deleteui;}//输入检查函数,包括是否为空的检测和输入规范的检测boolMainWindow::EnteringCheckP1(){QStringKeyCity=ui->lineSearchCity->text();QStringKeyDistrict=ui->lineSearchDis->text();QStringstr_Days=ui->lineDays->text();floatDays=0;//判断输入是否为空if(KeyCity.isEmpty()){QMessageBox::information(this,"ERROR","输入关键字不能为空",QMessageBox::Ok);returnfalse;}if(str_Days.isEmpty()){QMessageBox::information(this,"ERROR","输入日期不能为空",QMessageBox::Ok);returnfalse;}else{Days=str_Days.toFloat();}if((Days-(int)Days)!=0){QMessageBox::information(this,"ERROR","输入日期只能为整数",QMessageBox::Ok);returnfalse;}//最多订房时长以及最少订房时长if(Days<=0||Days>30){QMessageBox::information(this,"ERROR","输入日期不合规范,只能在1~30之间",QMessageBox::Ok);returnfalse;}returntrue;}4.2订单列表用户在选择酒店完成之后,通过订购就会生成一个新的订单。点击订单列表,进入订单查询模块,可以查看预定订单信息,之后可以进行订单付款,当用户情况有变可以申请退款以及用户退房后对本次订单进行一个评价。其中订单评价这个功能是针对已完成的订单才可以进行评价。如图4.3所示图4.3订单列表界面部分代码:voidMainWindow::ShowOrder(){//显示订单列表的表头temp_pOrderlist.clear();ui->table2->clear();ui->table2->setColumnCount(6);ui->table2->setRowCount(0);ui->table2->setHorizontalHeaderItem(0,newQTableWidgetItem(QStringLiteral("酒店名称")));ui->table2->setHorizontalHeaderItem(1,newQTableWidgetItem(QStringLiteral("房间种类")));ui->table2->setHorizontalHeaderItem(2,newQTableWidgetItem(QStringLiteral("订单状态")));ui->table2->setHorizontalHeaderItem(3,newQTableWidgetItem(QStringLiteral("开始日期")));ui->table2->setHorizontalHeaderItem(4,newQTableWidgetItem(QStringLiteral("订购天数")));ui->table2->setHorizontalHeaderItem(5,newQTableWidgetItem(QStringLiteral("退款是否成功")));//行选择ui->table2->setSelectionBehavior(QAbstractItemView::SelectRows);ui->table2->setSelectionMode(QAbstractItemView::SingleSelection);//在全局变量中筛选出本用户的订单for(inti=0;i<g_Orderlist.size();i++){if(g_Orderlist[i].GetpCustomer()->GetAccount()==pCustomer->GetAccount()){temp_pOrderlist.push_back(&g_Orderlist[i]);}}//转换类型QStringstr_type[5]={"钟点房","大床房","双人房","奢华房","总统套房"};QStringstr_OrderType[6]={"已预订","已交款","退款","入住","待评论","已评论"};//进行显示for(inti=0;i<temp_pOrderlist.size();i++){ui->table2->setRowCount(i+1);ui->table2->setItem(i,0,newQTableWidgetItem(temp_pOrderlist[i]->GetpRoom()->GetHotelName()));ui->table2->setItem(i,1,newQTableWidgetItem(str_type[temp_pOrderlist[i]->GetpRoom()->GetType()]));ui->table2->setItem(i,2,newQTableWidgetItem(str_OrderType[temp_pOrderlist[i]->GetType()]));ui->table2->setItem(i,3,newQTableWidgetItem(temp_pOrderlist[i]->GetDate().toString()));ui->table2->setItem(i,4,newQTableWidgetItem(QString::number(temp_pOrderlist[i]->GetDays())));QStringtemp;if(temp_pOrderlist[i]->GetRefundApproved())temp="是";elsetemp="否";ui->table2->setItem(i,5,newQTableWidgetItem(temp));}}将用户订单信息存入数据中,并且从数据库读取订单信息。4.3信息维护用户进入信息维护模块,在该模块中用户通过对手机号的验证来更改自己的登录密码,如图4.4所示图4.4信息维护界面部分代码:voidMainWindow::ChangePassword(){//手机验证码程序是之后可开发的项目//判断旧密码输入是否正确QStringOldPassword=ui->lineOldPassword->text();if(OldPassword.isEmpty()){QMessageBox::information(this,"ERROR","未输入旧密码",QMessageBox::Ok);}if(OldPassword==pCustomer->GetPassword()){//判断新密码输入是否符合规定QStringnewPassword=ui->lineNewPasss->text();if(newPassword.isEmpty()){QMessageBox::information(this,"ERROR","未输入新密码",QMessageBox::Ok);}else{//新密码设置成功,保存信息重新登录pCustomer->SetPassword(newPassword);QMessageBox::information(this,"SUCCESS","新密码设置成功,请重新登录!",QMessageBox::Ok);myDatabaseDatabase;Database.Memory();this->close();parent->show();}}else{QMessageBox::information(this,"ERROR","旧密码错误",QMessageBox::Ok);}}用户可以更改密码,并且通过手机号码进行验证。4.4房间管理酒店管理员登录之后,可以对酒店房间信息进行操作,包括新建、更改酒店信息等操作,但房间更改后需平台检测通过后才会刷新。如图4.5所示图4.5新建房间界面部分代码:NewRoom::NewRoom(whotel*newparent,Hotel*newHotel):parent(newparent),pHotel(newHotel),ui(newUi::NewRoom){ui->setupUi(this);pRoom=newRoom(pHotel->GetHotelName(),500,3,-1);//装饰this->setFixedSize(this->width(),this->height());this->setWindowTitle("CreateANewRoom");//slotsconnect(ui->btnCancel,SIGNAL(clicked(bool)),this,SLOT(Cancel()));connect(ui->btnEnter,SIGNAL(clicked(bool)),this,SLOT(Save()));connect(ui->btnOpen,SIGNAL(clicked(bool)),this,SLOT(OpenImag()));connect(ui->btnSaveImage,SIGNAL(clicked(bool)),this,SLOT(SaveImag()));}NewRoom::~NewRoom(){deleteui;}//取消返回voidNewRoom::Cancel(){this->close();parent->show();}//打开酒店房间需要张贴的图片voidNewRoom::OpenImag(){//获取文件exe路径runPath=QCoreApplication::applicationDirPath();//新文件姓名hglpName="photo";//文件存储路径hglpPath=QString("%1/%2").arg(runPath).arg(hglpName);QStringfilename=QFileDialog::getOpenFileName(this,tr("选择图像"),"",tr("Images(*.png*.bmp*.jpg)"));//是否打开成功if(filename.isEmpty())return;else{QImageimg;if(!(img.load(filename)))//加载图像{QMessageBox::information(this,tr("打开图像失败"),tr("打开图像失败!"));return;}ui->lableImage->setPixmap(QPixmap::fromImage(img.scaled(ui->lableImage->size())));}}//保存图片voidNewRoom::SaveImag(){QScreen*screen=QGuiApplication::primaryScreen();QStringName=ui->lineName->text();screen->grabWindow(ui->lableImage->winId()).save(QString("%1/%2.jpg").arg(hglpPath).arg(Name));pRoom->SetImages(QString("./photo/%1.jpg").arg(Name));QMessageBox::information(this,"SAVED","图片已保存在.exe文件路径的Photo文件夹中。",QMessageBox::Ok);}4.5订单管理酒店管理员可以查看用户预定自己酒店的信息,当用户来后可以进行确认入住或者用户有事进行退房的操作。如图4.6所示图4.6订单管理界面部分代码://显示订单表voidwhotel::ShowOrderInfo(){InitialOrder();temppOrderlist.clear();//开始显示//选择酒店对应的订单并放入暂时的订单列表中for(inti=0;i<g_Orderlist.size();i++){if(g_Orderlist[i].GetpRoom()->GetHotelName()==pHotel->GetHotelName()){temppOrderlist.push_back(&g_Orderlist[i]);}}//显示for(inti=0;i<temppOrderlist.size();i++){ui->table2->setRowCount(i+1);//显示用户账号和手机号ui->table2->setItem(i,0,newQTableWidgetItem(temppOrderlist[i]->GetpCustomer()->GetAccount()));ui->table2->setItem(i,1,newQTableWidgetItem(temppOrderlist[i]->GetpCustomer()->GetPhone()));//转换类型QStringstr_RoomType[5]={"钟点房","大床房","双人房","奢华房","总统套房"};//显示房间型号ui->table2->setItem(i,2,newQTableWidgetItem(str_RoomType[temppOrderlist[i]->GetpRoom()->GetType()]));//转换类型//显示订单状态QStringstr_OrderType[6]={"已预订","已交款","退款","已入住","已退房","已评论"};ui->table2->setItem(i,3,newQTableWidgetItem(str_OrderType[temppOrderlist[i]->GetType()]));//显示订单的起始日期ui->table2->setItem(i,4,newQTableWidgetItem(temppOrderlist[i]->GetDate().toString("dd.MM.yyyy")));//先对应天数ui->table2->setItem(i,5,newQTableWidgetItem(QString::number(temppOrderlist[i]->GetDays())));}}4.6酒店房间审核管理平台管理员登录成功之后,点击房间列表,可以查看酒店添加的房间信息,并对房间进行审核,审核通过之后,刷新列表即可上架房间。当然如果酒店需要进行一个较大的改动,平台管理员则会按下停业整改,这样酒店就不会在这段整改时间接到任何的订单,保证了用户和酒店之间的操作。如图4.7所示图4.7房间审核界面部分代码://显示酒店列表voidPlatform::ShowHotel(){//显示酒店列表表头ui->table1->clear();ui->table1->setColumnCount(5);ui->table1->setHorizontalHeaderItem(0,newQTableWidgetItem(QStringLiteral("酒店名称")));ui->table1->setHorizontalHeaderItem(1,newQTableWidgetItem(QStringLiteral("酒店城市")));ui->table1->setHorizontalHeaderItem(2,newQTableWidgetItem(QStringLiteral("酒店地址")));ui->table1->setHorizontalHeaderItem(3,newQTableWidgetItem(QStringLiteral("酒店联系电话")));ui->table1->setHorizontalHeaderItem(4,newQTableWidgetItem(QStringLiteral("是否通过审查")));ui->table1->setSelectionBehavior(QAbstractItemView::SelectRows);ui->table1->setSelectionMode(QAbstractItemView::SingleSelection);//显示未审核信息个数intnum=0;//显示酒店列表内容for(inti=0;i<g_Hotellist.size();i++){ui->table1->setRowCount(i+1);ui->table1->setItem(i,0,newQTableWidgetItem(g_Hotellist[i].GetHotelName()));ui->table1->setItem(i,1,newQTableWidgetItem(g_Hotellist[i].GetAddress()));ui->table1->setItem(i,2,newQTableWidgetItem(g_Hotellist[i].GetDistrict()));ui->table1->setItem(i,3,newQTableWidgetItem(g_Hotellist[i].GetConsolePhone()));QStringtemp;if(g_Hotellist[i].IsApproved())temp="是";else{temp="否";num++;}ui->table1->setItem(i,4,newQTableWidgetItem(temp));}ui->labelHotelNum->setText(QString::number(num)+"待审核");}5系统测试本管理系统的开发主要针对酒店的业务。本系统采用的是QT进行开发,能够单独的在计算机上运行,不需要联网等配置。通过对环境的搭建,功能的测试以及数据库的测试,针对数据进行增删查改的测试,进行一系列反复的测试,最后达到预期要求。下面是对测试的目的、方法和用例进行描述。5.1测试的目的与目标测试的目的是通过与需求分析相比较,判断系统与最初的需求是否存在差异,从而在之后的更改中完善整个系统。在初步完成系统设计后就进行系统测试,其中最主要的就是查找系统Bug并且及时整改,总结经验。在我们完成整个程序的设计开发后,需要通过测试功能查看是否符合设计初期所预想的目标。在测试中关键是看运行的过程当中是否会出现Bug或是数据异常。在发现异常后,我们就需要查看问题的根源是什么,并将其解决。我们通过先检查已完成的模块,来观察整个程序在逻辑上是否正常。之后结合使用的开发技术,对该系统所使用的测试方法进行阐述,通过测试结果判断程序的每个方面是否按照之前的需求分析完成开发的。最后通过不断地调试、修改,使系统逐渐满足我们设计的要求,确认系统能够完成预定的功能以及数据库有较好的安全性和容错率。5.2测试方法目前通用的系统测试方法分为以下两种:白盒法和黑盒法。白盒测试关注的是内部的设计与实现,要跟踪代码的运行;而黑盒测试又叫功能测试或数据驱动测试,更看重功能上的测试。本次系统我们先按照正常的流程,将每个功能都进行测试。通过对用户和管理员的登录,对所有的功能模块都进行了操作,达到了各种情况下的测试。接着我们对单一模块进行功能性的测试,就是对某个单一的功能进行多次的操作实现例如多次实现用户的注册,成功后再对不同用户登录成功后的重复进行预定酒店的操作。最后我们对数据进行测试,通过大量添加数据,并对这些数据进行修改删除等操作来测试系统的容错能力,以及会不会发生其他的问题。5.3测试用例系统实现功能模块多,所以我们需要进行的测试也就变得很多,我们在这简单介绍其中一个模块的测试用例。这里选择的是用户登录,用户登录用例测试如下:用户账号不存在、用户面错误、用户账号和密码是否正确和预期结果是否正正常,如表5.1所示。表5.1用户登录测试用例序号测试描述预期结果是否一致1用户的账号不存在提示账号不存在,登录失败正常2用户的密码错误提示密码错误,登录失败正常3用户的输入的验证码错误提示验证码错误,登录失败正常4用户的账号和密码都正确显示登录成功正常通过上述测试用例的测试,该系统在用户登录页面测试结果显示满足系统的设计需求,从测试的结果来看与期望结果完全相同,系统能够正常启动运行和操作。结论在刚开始进行设计开发时,因为没有太多的经验,在起初没有任何规划行的进行开发,后面通过同学和老师的讲解根据之前完成的需求分析、系统设计、数据库建立等逐步开发系统。而在开发过程中我对很多新的诸如数据库、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学前儿童营养饮食卫生
- 甲状腺功能减退综合征症状分析及护理技能培训
- 骨牵引病人健康宣教
- 高考单招计算机基础综合试题(附详细答案)
- 2026 儿童适应能力生态变化适应课件
- 早期营养对成年疾病的影响
- 痔疮病变特征及护理指南
- 三高的营养治疗
- 健身基础知识科普
- 2026 儿童适应能力人脉资源积累课件
- 安徽省专升本英语词汇表词汇表
- 2025年危险品水路运输从业资格考试复习题库(共500题)
- 股票市值管理协议书
- 多轴加工项目化教程课件 项目三 任务3-2 三叉右阀体的多轴加工
- 2024年甘肃省兰州市城七里河区小升初数学试卷
- MOOC 职场英语-西南交通大学 中国大学慕课答案
- 三年级寒假阅读与写作专项提高资料汇编
- 高考地理一轮复习课件运用水循环环节及其影响因素分析相关现象++
- 人像摄影的造型技巧课件
- 广东工商职业技术大学辅导员考试真题2022
- 国家开放大学《应用概率统计》综合作业1-4参考答案
评论
0/150
提交评论