武夷山网站推广seo云优化是什么意思
2026/4/18 12:56:56 网站建设 项目流程
武夷山网站推广,seo云优化是什么意思,福州市城乡建设网站张麒蛰,影视小程序搭建教程​​实验一 需求规格说明书1.1 需求描述工作人员凭借用户名和密码登录管理系统#xff0c;帮助用户进行登记#xff0c;可以是个人旅客#xff0c;也可以是团体旅客#xff0c;登记完#xff0c;询问旅客想要的房间类型和时间#xff0c;然后把旅客登记进入相应的房间帮助用户进行登记可以是个人旅客也可以是团体旅客登记完询问旅客想要的房间类型和时间然后把旅客登记进入相应的房间找到空房办理入住不是空房不可以入住。想要预订房间的旅客首先我们先对用户进行登记到达预订界面选择相应的对象点击新增选择相应的预订天数和房间当顾客来的时候进行安排房间选择相应的顾客并发放房卡。当旅客想要买东西或者损坏了物品点击消费添加置相应的费用。清洁人员凭登录管理系统查看待打扫房间信息进入待打扫房间进行清洁工作工作完成后变更房间的入住状态。大堂经理登录管理系统可以查看近期的账单。1.2 系统功能性需求分析本酒店管理系统主要包含以下核心功能模块房间管理维护房间信息如房号、类型、状态等支持房间状态的实时更新空闲、入住、待打扫、维修等。住宿管理处理旅客的入住、退房、续住及预订等操作。旅客管理记录和管理旅客的基本信息、入住历史及消费记录。消费管理记录旅客在店期间产生的各项费用并关联至其账单。1.3用例分析1.3.1 系统参与者系统的主要参与者包括旅客接受酒店服务的对象不直接操作系统但其信息和行为是系统处理的核心。前台工作人员负责旅客登记、房间分配、预订管理及消费录入等日常业务操作。清洁人员负责客房清洁并在系统中更新房间清洁状态。大堂经理负责监督运营情况可查询和审核近期账单及经营数据。1.3.2 系统用例图图1-1 系统总用例图1.3.3 用例描述1.3.3.1 增加酒店商品类别用例描述大堂经理增加酒店商品类别用例描述如表1-1所示。表1-1 大堂经理增加酒店商品类别用例描述用例名大堂经理增加酒店商品类别主要业务参与者大堂经理其他参与者无描述该用例描述了大堂经理增加酒店商品类别时的描述前置条件大堂经理输入用户名、密码正确成功触发条件大堂经理点击“商品设置”时触发基本流程1. 调用数据库获得酒店商品信息2. 界面显示酒店所有商品种类和商品名称3. 大堂经理点击“新增”4. 系统提示输入新增商品的信息5. 大堂经理输入商品名称、商品类别和销售价格6. 大堂经理点击“保存”替代流程登录失败结束退出系统1.3.3.2 查看近期酒店账单用例描述查看近期酒店账单用例描述如表1-2所示。表1-2 查看近期酒店账单用例描述用例名查看酒店近期账单主要业务参与者大堂经理其他参与者无描述该用例描述了大堂经理查看酒店近期账单前置条件大堂经理输入用户名、密码正确成功登录触发条件大堂经理点击“财务统计”按钮时触发基本流程1.调用数据库显示所有账单记录2.大堂经理输入结账区段3.页面显示相应时间区间内的房间号、旅客姓名、结账时间、总费用等信息替代流程1.登录失败2.结账区段内无交易结束退出系统显示登录页面1.3.3.3 修改房间状态用例描述修改房间状态用例描述如表1-3所示。修改房间状态用例描述用例名修改房间状态主要业务参与者清洁员工其他参与者无描述该用例描述了清洁员工房间状态时的描述前置条件清洁员工输入用户名、密码正确成功登录触发条件清洁员工点击“客房设置”时触发基本流程1. 调用数据库显示所有房间信息2. 清洁员工选择房间状态为“待清洁”的房间3. 清洁员工将选中的房间状态修改为“正在清洁”4. 清洁员工将对应房间打扫完成将该房间的房间状态改为“空房”5. 显示修改成功替代流程登录失败结束退出系统显示登录页面1.3.3.4 预定房间用例描述预定房间用例描述如表1-4所示。表1-4 预定房间用例描述用例名预定房间主要业务参与者前台其他参与者旅客描述该用例描述了预定房间前置条件前台输入用户名、密码正确成功登录触发条件前台点击“住宿管理-客房预定”按钮时触发基本流程1. 选择预定的对象进行安排房间2. 调用数据库查看房间的房态3. 页面显示相应的房态和类型供旅客选择替代流程1. 登录失败2.无空房结束退出系统显示登录页面1.3.3.5 房间登记用例描述房间登记用例描述如表1-5所示。表1-5 房间登记用例描述用例名房间登记主要业务参与者前台其他参与者无描述该用例描述了房间登记前置条件前台输入用户名、密码正确成功登录触发条件前台点击“住宿管理-住宿登记”按钮时触发基本流程1. 点击“安排房间”2. 调用数据库查看房间的房态3. 点击“登记”4. 选择旅客进行登记替代流程登录失败结束退出系统显示登录页面1.3.3.6 新增旅客用例描述新增旅客用例描述如表1-6所示。表1-6 新增旅客用例描述用例名新增旅客主要业务参与者前台其他参与者旅客描述该用例描述了新增旅客前置条件前台输入用户名、密码正确成功登录触发条件前台点击“旅客管理-旅客信息”按钮时触发基本流程1. 点击“新增”2. 显示添加信息界面3. 点击“保存”替代流程1. 登录失败3. 旅客已经存在显示“旅客已存在”结束退出系统显示登录页面1.4 用例活动图描述1.4.1大堂经理新增商品用例活动图图1-7 大堂经理新增商品用例活动图1.4.2 查看近期酒店账单用例活动图图1-8 查看近期酒店账单用例活动图1.4.3 修改房间状态活动图图1-9 修改房间状态活动图1.4.4 预定房间活动图图1-10 预定房间状态活动图1.4.5房间登记活动图图1-11 房间登记状态活动图1.4.6新增旅客活动图图1-12 新增旅客状态活动图1.5 系统非功能需求1房间信息准确2保护顾客个人信息3预订流程简洁1.6 本次实验小结通过本次实验我们对酒店管理系统的需求进行了全面梳理与分析明确了系统的主要功能模块、参与者角色及其交互关系。借助用例图和详细的用例描述清晰地刻画了前台工作人员、清洁人员和大堂经理在系统中的操作流程与业务逻辑为后续的系统设计与开发奠定了坚实基础。同时通过对非功能性需求的识别如数据准确性、用户隐私保护和操作便捷性进一步提升了系统的可用性与安全性。本次需求规格说明书的编写不仅加深了我们对软件工程中需求分析阶段的理解也锻炼了将实际业务场景转化为结构化系统需求的能力。实验二 领域模型2.1 新增商品用例领域模型构建2.1.1新增商品用例概念类分析名词大堂经理、用户名、密码、酒店商品、数据库。动词点击、新增、保存。2.1.2 新增商品用例领域模型2.1.2新增商品用例系统顺序图2.2 查看近期账单用例领域模型构建2.2.1查看近期账单用例概念类分析名词大堂经理、用户名、密码、账单、数据库。动词点击、查看、输入。2.2.2 查看近期账单用例领域模型2.2.3 查看近期账单用例系统顺序图2.3 修改房间用例领域模型构建2.3.1 修改房间用例概念类分析名词清洁员工、用户名、密码、房间信息表、系统、数据库。动词点击、输入、修改、保存。2.3.2 修改房间用例领域模型2.3.3 修改房间用例系统顺序图2.4 预定房间用例领域模型构建2.4.1 预定房间用例概念类分析名词前台员工、用户名、密码、房间状态、房间类型、旅客、安排房间、数据库。动词输入、点击。2.4.2 预定房间用例领域模型2.4.3 预定房间用例系统顺序图2.5 房间登记用例领域模型构建2.5.1 房间登记用例概念类分析名词前台员工、用户名、密码、登记、安排房间、旅客信息。动词输入、点击。2.5.2 房间登记用例领域模型2.5.3房间登记用例系统顺序图2.6 新增旅客用例领域模型构建2.6.1新增旅客用例概念类分析名词前台员工、用户名、密码、旅客信息、新增。动词输入、点击。2.6.2 新增旅客用例领域模型2.6.3 新增旅客用例系统顺序图2.7 本次实验小结本次实验围绕酒店管理系统的核心业务用例开展了详细的领域模型构建工作。通过对“新增商品”“查看近期账单”“修改房间状态”“预定房间”“房间登记”和“新增旅客”六个典型用例进行概念类识别与分析提取了关键的名词如大堂经理、清洁员工、前台、旅客、房间、账单、商品等和动词如点击、新增、保存、查看、修改等并据此绘制了对应的领域模型图和系统顺序图。这些模型清晰地反映了各业务场景中参与者、系统边界与核心业务对象之间的交互关系和职责划分为后续的软件架构设计和编码实现提供了坚实的语义基础。通过本实验我们不仅掌握了领域建模的基本方法也进一步理解了如何从需求描述中抽象出系统的核心结构提升了面向对象分析与设计的能力。实验三 详细设计3.1 新增商品用例详细设计3.1.1 新增商品用例顺序图3.1.2 新增商品用例类图3.2查看账单用例详细设计3.2.1 查看账单用例顺序图3.2.2 查看账单用例类图3.3 修改房间状态用例详细设计3.3.1 修改房间信息用例顺序图3.3.2 修改房间状态用例类图3.4 预定房间用例详细设计3.4.1 预定房间用例顺序图3.4.2 预定房间用例类图3.5房间登记用例详细设计3.5.1 房间登记用例顺序图3.5.2 房间登记用例类图3.6新增旅客用例详细设计3.6.1 新增旅客用例顺序图3.6.2 新增旅客用例类图3.7 本次实验小结在本次实验中我们对酒店管理系统的多个关键用例进行了详细的系统设计包括新增商品、查看账单、修改房间状态、预定房间、房间登记以及新增旅客。通过绘制顺序图和类图我们详细地描述了每个用例的动态行为和静态结构明确了各个功能模块之间的交互流程和数据传递方式。这不仅有助于深化对系统运作机制的理解也为后续的实现阶段提供了清晰的设计蓝图。此外本次实验还强化了我们运用UML工具进行软件设计的能力使我们更加熟练地掌握了如何将业务需求转化为具体的系统设计方案。通过这些练习我们不仅提升了技术技能也增强了对复杂系统设计的逻辑思维能力和细节把控能力。这次实践为实际项目开发中的详细设计阶段奠定了坚实的基础。实验四 系统数据库设计4.1 数据库概念结构设计对于数据库的概念设计结构选用ER图进行描述更能清晰表达系统易被读者所接受。4.1.1实体属性设计具体实体属性分别如图4-1、图4-2和图4-3所示。图4-1商品实体图4-2房间实体图4-3旅客实体4.1.2 系统总ER图设计系统总ER图如图4-4所示。图4-4 系统ER图4.2 数据库逻辑结构的设计根据系统需求在实现系统所有功能的基础上为此设计两张数据表依次为1、用户表用于保存登录信息2、房间信息表用于保存房间基本信息其中房间号为唯一标识。3、旅客信息表用于保存客户个人信息其中id为唯一标识。4、账单表用于保存交易账单信息,其中id为唯一标识。5、属性表用于记录酒店需要的所有属性其中id为唯一标识6、属性细节表用于记录属性的细节其中id为唯一标识。7、商品表用于保存酒店所有商品信息其中id为唯一标识。8、商品消费表用于保存商品消费信息其中id为唯一标识。9、押金表用于保存住宿旅客支付押金情况其中id为唯一标识。10、预定表用于保存预定房间信息和相应的旅客信息其中id为唯一标识。11、团队表用于保存团队的信息其中id为唯一标识。12、入住细节表用于入住信息和旅客关系的其中id为唯一标识。用户表的详细描述如表4-1所示。表4-1用户表字段名称字段描述类型长度能否为空是否主键ididint11FALSE否userName用户账号varchar20FALSE是password登录密码varchar20FALSE否旅客信息表的详细描述如表4-2所示。表4-2旅客信息表字段名称字段描述类型长度能否为空是否主键id旅客idint11FALSE是name客户姓名varchar20YES否papersid身份证号int11YES否passengerLevelID旅客级别IDint11YES否genderID客户性别int11YES否nationID民族int11YES否thingReasonID事由int11YES否brithDate出生日期varcher30YES否licenceIssuingAuthorty发证机关varchar50YES否educationDegreeID文化程度IDint11YES否unitsOrAddress单位或住址varchar50YES否papersValidity证件有效期varchar50YES否profession职业varchar20YES否whereAreFrom从何处来varchar100YES否whereToGo到哪里去varchar100YES否contactPhoneNumber联系电话varchar20YES否remarks备注varchar100YES否房间信息表的详细描述如表4-3所示。表4-3房间信息表字段名称字段描述类型长度能否为空是否主键id房间号int11FALSE是guestRoomLevelID客房等级IDint11YES否roomStateID房态IDbigint20YES否roomNumber房间号bigint16YES否roomAmount床位数varchar10YES否standardPriceDay标准房价/天decimal8,2YES否standardPrice标准房价/小时decimal8,2YES否maxDuration时长限制小时varchar10YES否firstDuration首段时长小时varchar10YES否firstPrice首段价格decimal8,2YES否房间信息表的详细描述如表4-4所示。表4-4账单信息表字段名称字段描述类型长度能否为空是否主键id住宿登记idint11FALSE是predetermineID预定ID号int11YES否rentOutTypeID出租方式IDint11YES否roomID房间IDint11YES否payWayID结账方式IDint11YES否billUnitID结账单位IDint11YES否passengerTypeID旅客类别IDint11YES否receiveTargetID接待对象IDint11YES否deputyID副IDint11YES否isBillID结账否int11YES否registerTime登记时间timestampYES否stayNumber住店天数/小时varchar20YES否sumConst总费用decimal8,2YES否ChangingRoomNumber换房次数varchar20YES否changRoomMoney换房费decimal8,2YES否remarks备注varchar200YES否payTime结账时间timestampYES否changRoomTime换房时间timestampYES否remind提醒结账int11YES否属性表的详细描述如表4-5所示。表4-5属性表字段名称字段描述类型长度能否为空是否主键id属性IDint11FALSE是attributeName_id属性名称varchar30FALSE否属性细节表的详细描述如表4-6所示。表4-6属性细节表字段名称字段描述类型长度能否为空是否主键id属性细节IDint11FALSE是attributeID属性IDint11FALSE否attributeDetailsName属性细节名称varchar30FALSE否商品表的详细描述如表4-7所示。表4-7商品表字段名称字段描述类型长度能否为空是否主键id商品IDint11FALSE是commodityTypeID_id商品类别IDvarchar30FALSE否uOMID计量单位IDint11FALSE否commodityName商品名称varchar50FALSE否salePrice销售价格decimal8,2FALSE否商品消费表的详细描述如表4-8所示。表4-8商品消费表字段名称字段描述类型长度能否为空是否主键id消费IDint11FALSE是stayRegisterID住宿登记IDvarchar30YES否commodityID商品IDint11YES否consumptionNumber消费数量varchar10YES否consumptionMoney消费金额decima8,2YES否consumptionTime消费时间timestampYES否押金表的详细描述如表4-9所示。表4-9押金表字段名称字段描述类型长度能否为空是否主键idIDint11FALSE是stayRegisterID _id住宿登记IDint30YES否payWayID支付方式IDint11YES否registerTime登记时间timestampYES否deposit押金decimal8,2YES否预定表的详细描述如表4-10所示。表4-10预定表字段名称字段描述类型长度能否为空是否主键id预定IDint11FALSE是roomID _id房间IDint11YES否predetermineTargetID预定对象IDint11YES否passengerID旅客IDInt11YES否payWayID支付方式 IDint11YES否predetermineStateID预定状态IDint11YES否arriveTime抵达时间timestampYES否deposit押金decimal8,2YES否predetermineDay预定天数varchar10YES否remind到时提示int11YES否入住细节表的详细描述如表4-11所示。表4-11入住细节表字段名称字段描述类型长度能否为空是否主键id住宿登记明细idint11FALSE是stayRegisterID住宿登记idint11YES否passengerID旅客idint11YES否团队表的详细描述如表4-12所示。表4-12团队表字段名称字段描述类型长度能否为空是否主键id接待对象IDint11FALSE是targetTypeID对象类别IDint11YES否principal负责人int11YES否teamName团队名称teamCode团队编号registerTime登记时间timestampYES否4.3 数据库物理结构的设计4.3.1 用户表的建立CREATE TABLE users ( id int(11) NOT NULL AUTO_INCREMENT, userName varchar(20) DEFAULT NULL, password varchar(20) DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT2 DEFAULT CHARSETutf8;4.3.2 房间信息表的建立DROP TABLE IF EXISTS room; CREATE TABLE room ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 房间id, guestRoomLevelID int(11) DEFAULT NULL COMMENT 客房等级ID, roomStateID int(11) DEFAULT NULL COMMENT 房态ID, roomNumber varchar(10) DEFAULT NULL COMMENT 房间号, roomAmount varchar(10) DEFAULT NULL COMMENT 床位数, standardPriceDay decimal(8,2) DEFAULT NULL COMMENT 标准房价/天, standardPrice decimal(8,2) DEFAULT NULL COMMENT 标准房价/小时, maxDuration varchar(10) DEFAULT NULL COMMENT 时长限制小时, firstDuration varchar(10) DEFAULT NULL COMMENT 首段时长小时, firstPrice decimal(8,2) DEFAULT NULL COMMENT 首段价格, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT35 DEFAULT CHARSETutf8;4.3.3 旅客信息表的建立DROP TABLE IF EXISTS passenger; CREATE TABLE passenger ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 旅客ID, papersID int(11) DEFAULT NULL COMMENT 证件ID, educationDegreeID int(11) DEFAULT NULL COMMENT 文化程度ID, genderID int(11) DEFAULT NULL COMMENT 性别ID, passengerLevelID int(11) DEFAULT NULL COMMENT 旅客级别ID, nationID int(11) DEFAULT NULL COMMENT 民族ID, thingReasonID int(11) DEFAULT NULL COMMENT 事由, name varchar(20) DEFAULT NULL COMMENT 姓名, papersNumber varchar(30) DEFAULT NULL COMMENT 证件号码, birthDate varchar(30) DEFAULT NULL COMMENT 出生日期, licenceIssuingAuthorty varchar(50) DEFAULT NULL COMMENT 发证机关, unitsOrAddress varchar(50) DEFAULT NULL COMMENT 单位或住址, papersValidity varchar(50) DEFAULT NULL COMMENT 证件有效期, profession varchar(20) DEFAULT NULL COMMENT 职业, whereAreFrom varchar(100) DEFAULT NULL COMMENT 从何处来, whereToGo varchar(100) DEFAULT NULL COMMENT 到哪里去, contactPhoneNumber varchar(20) DEFAULT NULL COMMENT 联系电话, remarks varchar(100) DEFAULT NULL COMMENT 备注, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT32 DEFAULT CHARSETutf8;4.3.4 账单表的建立DROP TABLE IF EXISTS stayregister; CREATE TABLE stayregister ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 住宿登记ID, predetermineID int(11) DEFAULT NULL COMMENT 预定ID, rentOutTypeID int(11) DEFAULT NULL COMMENT 出租方式ID, roomID int(11) DEFAULT NULL COMMENT 房间ID, payWayID int(11) DEFAULT NULL COMMENT 结账方式ID, billUnitID int(11) DEFAULT NULL COMMENT 结账单位ID, passengerTypeID int(11) DEFAULT NULL COMMENT 旅客类别ID, receiveTargetID int(11) DEFAULT NULL COMMENT 接待对象ID, deputyID int(11) DEFAULT NULL COMMENT 副ID, isBillID int(11) DEFAULT NULL COMMENT 结账否, registerTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 登记时间, stayNumber varchar(20) DEFAULT NULL COMMENT 住店天数/小时, sumConst decimal(8,2) DEFAULT NULL COMMENT 总费用, ChangingRoomNumber varchar(10) DEFAULT NULL COMMENT 换房次数, changRoomMoney decimal(8,2) DEFAULT NULL COMMENT 换房费, remarks varchar(200) DEFAULT NULL COMMENT 备注, payTime timestamp NULL DEFAULT NULL COMMENT 结账时间, changRoomTime timestamp NULL DEFAULT NULL COMMENT 换房时间, remind int(11) DEFAULT 0 COMMENT 提醒结账, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT55 DEFAULT CHARSETutf8;4.3.5 属性表的建立DROP TABLE IF EXISTS attribute; CREATE TABLE attribute ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 属性ID, attributeName varchar(30) DEFAULT NULL COMMENT 属性名称, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT18 DEFAULT CHARSETutf8;4.3.6属性细节表的建立DROP TABLE IF EXISTS attributedetails; CREATE TABLE attributedetails ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 属性明细ID, attributeID int(11) DEFAULT NULL COMMENT 属性ID, attributeDetailsName varchar(30) DEFAULT NULL COMMENT 属性明细名称, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT73 DEFAULT CHARSETutf8;4.3.7商品表的建立DROP TABLE IF EXISTS commodity; CREATE TABLE commodity ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 商品ID, commodityTypeID int(11) DEFAULT NULL COMMENT 商品类别ID, uOMID int(11) DEFAULT NULL COMMENT 计量单位ID, commodityName varchar(50) DEFAULT NULL COMMENT 商品名称, salePrice decimal(8,2) DEFAULT NULL COMMENT 销售价格, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT17 DEFAULT CHARSETutf8;4.3.8 商品消费表的建立DROP TABLE IF EXISTS consumptiondetails; CREATE TABLE consumptiondetails ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 消费明细ID, stayRegisterID int(11) DEFAULT NULL COMMENT 住宿登记ID, commodityID int(11) DEFAULT NULL COMMENT 商品ID, consumptionNumber varchar(10) DEFAULT NULL COMMENT 消费数量, consumptionMoney decimal(8,2) DEFAULT NULL COMMENT 消费金额, consumptionTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 消费时间, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT37 DEFAULT CHARSETutf8;4.3.9 押金表的建立DROP TABLE IF EXISTS depoit; CREATE TABLE depoit ( id int(11) NOT NULL AUTO_INCREMENT, stayRegisterID int(11) DEFAULT NULL COMMENT 住宿登记ID, payWayID int(11) DEFAULT NULL COMMENT 支付方式ID, registerTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 登记时间, deposit decimal(8,2) DEFAULT NULL COMMENT 押金, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT84 DEFAULT CHARSETutf8;4.3.10 预定表的建立DROP TABLE IF EXISTS predetermine; CREATE TABLE predetermine ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 预定ID, roomID int(11) DEFAULT NULL COMMENT 房间ID, predetermineTargetID int(11) DEFAULT NULL COMMENT 预定对象ID, passengerID int(11) DEFAULT NULL COMMENT 旅客ID, payWayID int(11) DEFAULT NULL COMMENT 支付方式 ID, predetermineStateID int(11) DEFAULT NULL COMMENT 预定状态ID, arriveTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 抵达时间, deposit decimal(8,2) DEFAULT NULL COMMENT 押金, predetermineDay varchar(10) DEFAULT NULL COMMENT 预定天数, remind int(11) DEFAULT 0 COMMENT 到时提示, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT36 DEFAULT CHARSETutf8;4.3.11 团队表的建立DROP TABLE IF EXISTS receivetarget; CREATE TABLE receivetarget ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 接待对象ID, targetTypeID int(11) DEFAULT NULL COMMENT 对象类别ID, principal varchar(20) DEFAULT NULL COMMENT 负责人, teamName varchar(30) DEFAULT NULL COMMENT 团队名称, teamCode varchar(30) DEFAULT NULL COMMENT 团队编号, registerTime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 登记时间, contactPhoneNUmber varchar(20) DEFAULT NULL COMMENT 联系电话, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT14 DEFAULT CHARSETutf8;4.3.12 入住细节表的建立DROP TABLE IF EXISTS stayregisterdetails; CREATE TABLE stayregisterdetails ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 住宿登记明细id, stayRegisterID int(11) DEFAULT NULL COMMENT 住宿登记id, passengerID int(11) DEFAULT NULL COMMENT 旅客id, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT56 DEFAULT CHARSETutf8;4.4 本次实验小结通过本次实验我们完成了酒店管理系统的数据库设计工作从概念结构设计ER图到逻辑结构设计数据表定义再到物理结构实现SQL建表语句系统地构建了支撑整个业务流程的数据模型。在设计过程中我们充分考虑了系统功能需求如旅客登记、房间分配、预订管理、消费记录与账单生成等合理划分了12张核心数据表并通过主外键关系实现了各实体间的有效关联。同时在字段类型、长度及约束设置上注重数据完整性与一致性为后续系统开发提供了可靠的数据基础。本次实验不仅加深了我们对数据库设计方法的理解也提升了将实际业务需求转化为规范化数据库结构的能力。实验五 系统实现与测试5.1 房间管理用例实现描述房间管理分为客房设置和商品设置。客房设置分为查询房间、新增房间、修改房间、删除房间四个功能其中查询房间和修改房间为通用功能查询房间通过输入房间号实现可查询相应的客房等级、房间状态、床位数、标准价格等信息酒店前台和清洁人员可以对房间状态进行修改。新增、删除房间为大堂经理的私有功能。可使用商品设置功能对房间内的商品的种类和价格等进行调整。5.1.1 客房设置实现界面1、查询功能实现2、新增功能实现3、修改功能实现4、删除功能实现5.1.2商品设置实现界面1、商品种类查询2、商品设置实现5.1.3 房间管理用例代码1、房间设置package com.gx.web; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.google.gson.Gson; import com.gx.page.Page; import com.gx.po.AttributePo; import com.gx.po.RoomSetPo; import com.gx.service.AttributeService; import com.gx.service.RoomSetService; Controller RequestMapping(/RoomSet) public class RoomSet { Autowired private AttributeService attributeService; Autowired private RoomSetService roomSetService; /* RequestMapping(/tolist) public ModelAndView tolist(){ ModelAndView mvnull; ListRoomSetPo listroomSetService.selectAll(); mvnew ModelAndView(/roomset/roomset); mv.addObject(list,list); return mv; }*/ RequestMapping(/tolist) public ModelAndView list(HttpServletRequest request,Integer currentPage,String txtname){ ModelAndView mvnull; mvnew ModelAndView(/roomset/roomset); PageRoomSetPo vonew PageRoomSetPo(); if (currentPagenull) { currentPage1; }else if (currentPage0) { currentPage1; } if(txtnamenull) { txtname; } vo.setCurrentPage(currentPage); vothis.roomSetService.pageFuzzyselect(txtname, vo); mv.addObject(list,vo); mv.addObject(txtname,txtname); return mv; } RequestMapping(/toadd) public ModelAndView toadd(){ ModelAndView mvnull; ListAttributePo listOneattributeService.selectGuestRoomLevel(); ListAttributePo listTwoattributeService.selectRoomState(); mvnew ModelAndView(/roomset/add); mv.addObject(listOne,listOne); mv.addObject(listTwo,listTwo); return mv; } RequestMapping(/add) public ModelAndView add(RoomSetPo roomSetPo){ ModelAndView mvnull; roomSetService.insertAll(roomSetPo); mvnew ModelAndView(redirect:/RoomSet/tolist.do); return mv; } RequestMapping(/toupdate) public ModelAndView toupdate(int id){ ModelAndView mvnull; ListAttributePo listOneattributeService.selectGuestRoomLevel(); ListAttributePo listTwoattributeService.selectRoomState(); RoomSetPo listPoroomSetService.selectById(id); mvnew ModelAndView(/roomset/update); mv.addObject(listOne,listOne); mv.addObject(listTwo,listTwo); mv.addObject(listPo,listPo); return mv; } RequestMapping(/update) public ModelAndView update(RoomSetPo roomSetPo){ ModelAndView mvnull; roomSetService.updateById(roomSetPo); mvnew ModelAndView(redirect:/RoomSet/tolist.do); return mv; } RequestMapping(/delete) public ModelAndView delete(String id){ ModelAndView mvnull; String[] FenGeid.split(,); for (int i 0; i FenGe.length; i) { roomSetService.deleteById(Integer.parseInt(FenGe[i])); } mvnew ModelAndView(redirect:/RoomSet/tolist.do); return mv; } ResponseBody RequestMapping(value/YZ) public Object YZ(String roomNumber){ int YorNroomSetService.selectYZ(roomNumber); Gson gson new Gson(); return gson.toJson(YorN); } }2、商品设置代码package com.gx.web; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.google.gson.Gson; import com.gx.page.Page; import com.gx.po.AttributePo; import com.gx.po.CommodityPo; import com.gx.po.RoomSetPo; import com.gx.service.AttributeService; import com.gx.service.CommodityService; Controller RequestMapping(/Commodity) public class Commodity { Autowired private CommodityService commodityService; Autowired private AttributeService attributeService; //分页和模糊查询 RequestMapping(/tolist) public ModelAndView list(HttpServletRequest request, Integer currentPage, String txtname,Integer commodityTypeID){ ModelAndView mvnull; ListAttributePo listOneattributeService.selectCommodityType(); mvnew ModelAndView(/commodity/list); PageCommodityPo vonew PageCommodityPo(); if (commodityTypeIDnull) { commodityTypeID16; } if (currentPagenull) { currentPage1; }else if (currentPage0) { currentPage1; } if(txtnamenull) { txtname; } vo.setCurrentPage(currentPage); vothis.commodityService.pageFuzzyselect(txtname,commodityTypeID, vo); mv.addObject(list,vo); mv.addObject(txtname,txtname); mv.addObject(listOne,listOne); mv.addObject(commodityType,commodityTypeID); return mv; } RequestMapping(/toadd) public ModelAndView toadd(){ ModelAndView mvnull; ListAttributePo listOneattributeService.selectUOM(); ListAttributePo listTwoattributeService.selectCommodityType(); mvnew ModelAndView(/commodity/add); mv.addObject(listOne,listOne); mv.addObject(listTwo,listTwo); return mv; } RequestMapping(/add) public ModelAndView add(CommodityPo commodityPo){ ModelAndView mvnull; commodityService.insertAll(commodityPo); mvnew ModelAndView(redirect:/Commodity/tolist.do); return mv; } RequestMapping(/toupdate) public ModelAndView toupdate(int id){ ModelAndView mvnull; ListAttributePo listOneattributeService.selectUOM(); ListAttributePo listTwoattributeService.selectCommodityType(); CommodityPo commodityPocommodityService.selectById(id); mvnew ModelAndView(/commodity/update); mv.addObject(listOne,listOne); mv.addObject(listTwo,listTwo); mv.addObject(listPo,commodityPo); return mv; } RequestMapping(/update) public ModelAndView update(CommodityPo commodityPo){ ModelAndView mvnull; commodityService.updateById(commodityPo); mvnew ModelAndView(redirect:/Commodity/tolist.do); return mv; } RequestMapping(/delete) public ModelAndView delete(String id){ ModelAndView mvnull; String[] FenGeid.split(,); for (int i 0; i FenGe.length; i) { commodityService.deleteById(Integer.parseInt(FenGe[i])); } mvnew ModelAndView(redirect:/Commodity/tolist.do); return mv; } RequestMapping(/openwindow) public ModelAndView openwindow(){ ModelAndView mvnull; mvnew ModelAndView(/commodity/commoditytype); return mv; } RequestMapping(/newadd) public ModelAndView newadd(String txtname){ ModelAndView mvnull; int newid3; attributeService.insertAll(newid,txtname); mvnew ModelAndView(redirect:/Commodity/tolist.do); return mv; } RequestMapping(/newdelete) public ModelAndView newdelete(String id){ ModelAndView mvnull; String[] FenGeid.split(,); for (int i 0; i FenGe.length; i) { attributeService.deleteById(Integer.parseInt(FenGe[i])); } mvnew ModelAndView(redirect:/Commodity/tolist.do); return mv; } ResponseBody RequestMapping(value/YZ) public Object YZ(String commodityName){ int YorNcommodityService.selectYZ(commodityName); Gson gson new Gson(); return gson.toJson(YorN); } }5.2 住宿管理用例实现描述房间管理是对旅客进行客房预订和客房登记的操作所以需要同时对旅客和房间的信息进行更改。客房预定首先要选择相应的旅客再对旅客的要求进行房间选择如果时间超过预定时间的话就会变红。房间登记直接对空房进行登记。5.2.1 住宿管理-客房预订用例实现界面5.2.2 住宿管理-客房预订用例测试用例5.2.3 住宿管理-客房预订用例实现主要代码package com.gx.web; import java.io.UnsupportedEncodingException; import java.sql.Timestamp; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.google.gson.Gson; import com.gx.dao.PredetermineDao; import com.gx.page.Page; import com.gx.po.AttributePo; import com.gx.po.PassengerPo; import com.gx.po.PredeterminePo; import com.gx.po.ReceiveTargetPo; import com.gx.po.RoomSetPo; import com.gx.po.StayRegisterPo; import com.gx.service.AttributeService; import com.gx.service.PassengerService; import com.gx.service.PredetermineService; import com.gx.service.ReceiveTargetService; import com.gx.service.RoomSetService; import com.gx.service.StayRegisterService; Controller RequestMapping(/Predetermine) public class Predetermine { Autowired private PassengerService passengerService; Autowired private ReceiveTargetService receiveTargetService; Autowired private AttributeService attributeService; Autowired private RoomSetService roomSetService; Autowired private PredetermineService predetermineService; Autowired private StayRegisterService stayRegisterService; int idP[]; //预订id int fangJianId[]; RequestMapping(/tolist) public ModelAndView tolist(HttpServletRequest request, Integer currentPage, String txtname,Integer state){ ModelAndView mvnull; Date datenew Date(); DateFormat dformatnew SimpleDateFormat(yyyy-MM-dd HH:mm:ss); //设置日期格式 Timestamp timestampTimestamp.valueOf(dformat.format(date)) ; //将当前时间转为字符串 ListPredeterminePo listthis.predetermineService.selectAll(); long shiJianCha; for (int i 0; i list.size(); i) { Timestamp huoQuShiJianlist.get(i).getArriveTime(); //获取到达时间 shiJianChatimestamp.getTime()-huoQuShiJian.getTime(); //计算时间差 if (shiJianCha0) { Integer huoQuIdlist.get(i).getId(); this.predetermineService.updateRemind(huoQuId); } } if (currentPagenull) { currentPage1; }else if (currentPage0) { currentPage1; } if (statenull) { state66; } if(txtnamenull) { txtname; } ListAttributePo listOneattributeService.selectPredetermineState(); PagePredeterminePo vonew PagePredeterminePo(); vo.setCurrentPage(currentPage); vothis.predetermineService.pageFuzzyselect(txtname, txtname, state, vo); mvnew ModelAndView(/predetermine/list); mv.addObject(listOne,listOne); mv.addObject(txtname,txtname); mv.addObject(state,state); mv.addObject(list,vo); return mv; } //ajax旅客 ResponseBody RequestMapping(value/selectPassenger) public Object selectPassenger(String txtname){ if(txtnamenull){ txtname; } ListPassengerPo listpassengerService.selectAjaxList(txtname); Gson gsonnew Gson(); return gson.toJson(list); } ResponseBody RequestMapping(value/selectTarget) public Object selectTarget(String txtname){ if (txtnamenull) { txtname; } ListReceiveTargetPo listreceiveTargetService.ajaxSelect(txtname); Gson gsonnew Gson(); return gson.toJson(list); } ResponseBody RequestMapping(value/confirmPassenger) public Object confirmPassenger(Integer id){ PassengerPo listpassengerService.selectById(id); Gson gsonnew Gson(); return gson.toJson(list.getContactPhoneNumber()); } //去新增界面 RequestMapping(/toadd) public ModelAndView toadd(Integer id,String name,Integer type) throws UnsupportedEncodingException{ ModelAndView mvnull; ListAttributePo listOneattributeService.selectPayWay(); mvnew ModelAndView(/predetermine/add); mv.addObject(id,id); name new String(name.getBytes(ISO8859-1),utf-8); mv.addObject(name,name); mv.addObject(type,type); mv.addObject(listOne,listOne); return mv; } //新增 RequestMapping(/add) public ModelAndView add(Integer id,Integer type, String roomIdShuZu,PredeterminePo po,Integer pangduan){ ModelAndView mvnull; if(pangduan!null){ for (int i 0; i idP.length; i) { predetermineService.deleteById(idP[i]); } RoomSetPo roomSetPonew RoomSetPo(); roomSetPo.setRoomStateID(1); //将此房态设置为空房 for (int i 0; i fangJianId.length; i) { roomSetPo.setId(fangJianId[i]); roomSetService.updateByIdToRoomState(roomSetPo); //修改此房态 } } String[] FenGeroomIdShuZu.split(,); //分割为数组 int changDuFenGe.length; //获取数组长度 double yaJinpo.getDeposit(); //获取押金 double yaJinFenGeyaJin/changDu; //得到平均押金 po.setDeposit(yaJinFenGe); //设po的押金 po.setPredetermineStateID(66); //设置预订状态为未按排 if(type1){ //如果为团队 po.setPassengerID(0); //设置预订旅客id为0 po.setPredetermineTargetID(id); //设置团队id }else if(type2){ //判断是否为旅客 po.setPassengerID(id); //给预订赋值旅客id po.setPredetermineTargetID(2); //设置团队id } RoomSetPo roomSetPonew RoomSetPo(); roomSetPo.setRoomStateID(4); //设置此房态为预订 for(int i0;ichangDu;i){ po.setRoomID(Integer.parseInt(FenGe[i])); //给预订设置房间id predetermineService.insertAll(po); //新增预订单 roomSetPo.setId(Integer.parseInt(FenGe[i])); //更改房态的 获取房间id roomSetService.updateByIdToRoomState(roomSetPo);//修改房态为预订 } mvnew ModelAndView(redirect:/Predetermine/tolist.do); return mv; } ResponseBody RequestMapping(value/selectRoom) public Object selectRoom(String roomNumber){ if(roomNumbernull){ roomNumber; } ListRoomSetPo listroomSetService.selectInformation(roomNumber); Gson gsonnew Gson(); return gson.toJson(list); } //去修改界面 RequestMapping(/toupdate) public ModelAndView toupdate(Integer id){ idPnull; fangJianIdnull; ModelAndView mvnull; int idid0; PredeterminePo zuwenPopredetermineService.findById(id); //根据预订id来查询预订数据 int lvKeIdzuwenPo.getPassengerID(); //获取预订旅客id int teamIdzuwenPo.getPredetermineTargetID(); //获取预订团队id ListPredeterminePo teamListnull; ListPredeterminePo lvKeListnull; ListAttributePo listOneattributeService.selectPayWay(); double yaJin0; int zhengShu0; String nameString; ListRoomSetPo roomSetPolistnew ArrayListRoomSetPo(); RoomSetPo roomSetPonull; int type0; mvnew ModelAndView(/predetermine/update); if (lvKeId0) { ididteamId; teamListpredetermineService.findTeamId(teamId); idPnew int[teamList.size()]; fangJianIdnew int[teamList.size()]; for (int i 0; i teamList.size(); i) { yaJinteamList.get(i).getDeposit(); roomSetPoroomSetService.selectById(teamList.get(i).getRoomID()); roomSetPolist.add(roomSetPo); idP[i]teamList.get(i).getId(); fangJianId[i]teamList.get(i).getRoomID(); } zhengShu(int)yaJin; mv.addObject(listList,teamList); nameStringteamList.get(0).getReceiveTeamName(); type1; }else { ididlvKeId; lvKeListpredetermineService.findLvKeId(lvKeId); idPnew int[lvKeList.size()]; fangJianIdnew int[lvKeList.size()]; for (int i 0; i lvKeList.size(); i) { yaJinlvKeList.get(i).getDeposit(); roomSetPoroomSetService.selectById(lvKeList.get(i).getRoomID()); roomSetPolist.add(roomSetPo); idP[i]lvKeList.get(i).getId(); fangJianId[i]lvKeList.get(i).getRoomID(); } zhengShu(int)yaJin; mv.addObject(listList,lvKeList); nameStringlvKeList.get(0).getPassengerName(); type2; } mv.addObject(id,idid); mv.addObject(listOne,listOne); mv.addObject(roomSetPolist,roomSetPolist); mv.addObject(zhengShu,zhengShu); mv.addObject(name,nameString); mv.addObject(type,type); mv.addObject(pangduan,1); return mv; } //修改房间移除房间时更改房态 /*RequestMapping(/changRoomState) public ModelAndView changRoomState(){ ModelAndView mvnull; return mv; }*/ //修改房间移除房间时更改房态 RequestMapping(/delete) public ModelAndView delete(String id){ ModelAndView mvnull; String[] FenGeid.split(,); for (int i 0; i FenGe.length; i) { this.predetermineService.deleteById(Integer.parseInt(FenGe[i])); } mvnew ModelAndView(redirect:/Predetermine/tolist.do); return mv; } //修改房间移除房间时更改房态 RequestMapping(/arrangeRoom) public ModelAndView arrangeRoom(String id,Integer tiaoZhuang){ ModelAndView mvnull; Date datenew Date(); DateFormat dformatnew SimpleDateFormat(yyyy-MM-dd HH:mm:ss); //设置日期格式 Timestamp timestampTimestamp.valueOf(dformat.format(date)) ; //将当前时间转为字符串 String[] FenGeid.split(,); //分割到数组 StayRegisterPo stayRegisterPonew StayRegisterPo(); RoomSetPo roomSetPoToRoomStatenew RoomSetPo(); for (int i 0; i FenGe.length; i) { this.predetermineService.updatePredetermineStateID(Integer.parseInt(FenGe[i])); //修改预订状态 PredeterminePo predeterminePothis.predetermineService.findById(Integer.parseInt(FenGe[i])); //查询预订信息 RoomSetPo roomSetPothis.roomSetService.selectById(predeterminePo.getRoomID()); //查询房间信息 stayRegisterPo.setRoomID(predeterminePo.getRoomID()); //设置房间id stayRegisterPo.setRentOutTypeID(26); stayRegisterPo.setPassengerTypeID(29); if (predeterminePo.getPassengerID()0) { //判断是否为团队还是散客 stayRegisterPo.setBillUnitID(28); }else { stayRegisterPo.setBillUnitID(27); } stayRegisterPo.setReceiveTargetID(predeterminePo.getPredetermineTargetID()); stayRegisterPo.setIsBillID(68); stayRegisterPo.setRegisterTime(timestamp); stayRegisterPo.setStayNumber(predeterminePo.getPredetermineDay()); stayRegisterPo.setSumConst(roomSetPo.getStandardPriceDay() *Integer.parseInt(predeterminePo.getPredetermineDay())); //获取房价 乘以 住宿天数 stayRegisterService.insertAll(stayRegisterPo); //新增成功时获取刚新增的id。 Integer stayIdstayRegisterPo.getId(); stayRegisterService.updateStayRegisterPredetermineID(Integer.parseInt(FenGe[i]), stayId); stayRegisterPo.setDepositStayRegisterID(stayId); stayRegisterPo.setDepositRegisterTime(timestamp); stayRegisterPo.setDepositPayWayID(predeterminePo.getPayWayID()); stayRegisterPo.setDeposit(predeterminePo.getDeposit()); stayRegisterService.insertDeposit(stayRegisterPo); roomSetPoToRoomState.setId(predeterminePo.getRoomID()); //给新的 Po 赋房间ID的值 roomSetPoToRoomState.setRoomStateID(65); //给新的 Po 赋房态的值 roomSetService.updateByIdToRoomState(roomSetPoToRoomState); //根据 房间ID 来修改 当前被选中的房间的房态 } if (tiaoZhuang1) { mvnew ModelAndView(redirect:/StayRegister/tolist.do); }else if (tiaoZhuang2){ mvnew ModelAndView(redirect:/Predetermine/tolist.do); } return mv; } }5.2.4 住宿管理-客房登记用例实现用例5.2.5 住宿管理-客房登记用例测试用例5.2.6 住宿管理-客房登记用例主要实现代码package com.gx.web; import java.io.UnsupportedEncodingException; import java.sql.Time; import java.sql.Timestamp; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.omg.PortableServer.POA; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.google.gson.Gson; import com.gx.page.Page; import com.gx.po.AttributePo; import com.gx.po.CommodityPo; import com.gx.po.PassengerPo; import com.gx.po.ReceiveTargetPo; import com.gx.po.RoomSetPo; import com.gx.po.StayRegisterPo; import com.gx.service.AttributeService; import com.gx.service.CommodityService; import com.gx.service.PassengerService; import com.gx.service.ReceiveTargetService; import com.gx.service.RoomSetService; import com.gx.service.StayRegisterService; import com.gx.vo.TeamPayVo; Controller RequestMapping(/StayRegister) public class StayRegister { Autowired private AttributeService attributeService; Autowired private RoomSetService roomSetService; Autowired private StayRegisterService stayRegisterService; Autowired private PassengerService passengerService; Autowired private CommodityService commodityService; Autowired private ReceiveTargetService receiveTargetService; int fangjianId0; String lvkeName; double zhuDianTianShu0; //住店天数 double shengZhuDianTianShu0; //剩住店天数 double zhuDianTianShuOne0; //住店天数 //散客的list查询 RequestMapping(/tolist) public ModelAndView tolist(HttpServletRequest request, Integer currentPage, String txtname,Integer LvKeLeiXingId,Integer isBillID){ ModelAndView mvnull; ListStayRegisterPo listAllstayRegisterService.selectAll(); Date datenew Date(); DateFormat dformatnew SimpleDateFormat(yyyy-MM-dd HH:mm:ss); //设置日期格式 Timestamp timestampTimestamp.valueOf(dformat.format(date)) ; //将当前时间转为字符串 int id0; long xiangChaTianShu; long days; long hours; String zhuSu; for (int i 0; i listAll.size(); i) { idlistAll.get(i).getId(); //获取ID Timestamp registerTimelistAll.get(i).getRegisterTime(); //获取登记时间 zhuSulistAll.get(i).getStayNumber(); //获取登记时间 xiangChaTianShutimestamp.getTime()-registerTime.getTime(); //当前时间-登记时间 daysxiangChaTianShu/(1000 * 60 * 60 * 24); //转化为天 hoursxiangChaTianShu/(1000 * 60 * 60 )-days*24; //转化为小时 if (Long.parseLong(zhuSu)days) { if (hours0) { stayRegisterService.updateRemind(id, 1); } } } ListAttributePo listOneattributeService.selectIsPay(); mvnew ModelAndView(/stayregister/list); if (isBillIDnull) { isBillID68; } if (LvKeLeiXingIdnull) { LvKeLeiXingId55; } if (currentPagenull) { currentPage1; }else if (currentPage0) { currentPage1; } PageStayRegisterPo vonew PageStayRegisterPo(); vo.setCurrentPage(currentPage); if(txtnamenull) { txtname; } vothis.stayRegisterService.pageFuzzyselectOne(LvKeLeiXingId, isBillID, txtname, vo); mv.addObject(list,vo); mv.addObject(listOne,listOne); mv.addObject(LvKeLeiXingId,LvKeLeiXingId); mv.addObject(isBillID,isBillID); mv.addObject(txtname,txtname); return mv; } //团队的list查询 RequestMapping(/toteamlist) public ModelAndView toteamlist(HttpServletRequest request, Integer currentPage, String txtname,Integer LvKeLeiXingId,Integer isBillID,Integer tuanDuiID, String teamNameId, String teamCodeId, String principalId, String contactPhoneNUmberId, String registerTimeId){ ModelAndView mvnull; ListStayRegisterPo listTeamnull; ListStayRegisterPo listAllstayRegisterService.selectAll(); Date datenew Date(); DateFormat dformatnew SimpleDateFormat(yyyy-MM-dd HH:mm:ss); //设置日期格式 Timestamp timestampTimestamp.valueOf(dformat.format(date)) ; //将当前时间转为字符串 int id0; long xiangChaTianShu; long days; long hours; String zhuSu; double teamSumConst0; for (int i 0; i listAll.size(); i) { idlistAll.get(i).getId(); //获取ID Timestamp registerTimelistAll.get(i).getRegisterTime(); //获取登记时间 zhuSulistAll.get(i).getStayNumber(); //获取登记时间 xiangChaTianShutimestamp.getTime()-registerTime.getTime(); //当前时间-登记时间 daysxiangChaTianShu/(1000 * 60 * 60 * 24); //转化为天 hoursxiangChaTianShu/(1000 * 60 * 60 )-days*24; //转化为小时 if (Long.parseLong(zhuSu)days) { if (hours0) { stayRegisterService.updateRemind(id, 1); } } } ListAttributePo listOneattributeService.selectIsPay(); mvnew ModelAndView(/stayregister/list); if (isBillIDnull) { isBillID68; } if (LvKeLeiXingIdnull) { LvKeLeiXingId56; } if (tuanDuiIDnull) { listTeamthis.stayRegisterService.selectFormTeamIdTwo(isBillID); }else { listTeamthis.stayRegisterService.selectFormTeamId(tuanDuiID, isBillID); } if (currentPagenull) { currentPage1; }else if (currentPage0) { currentPage1; } for (int i 0; i listTeam.size(); i) { teamSumConstlistTeam.get(i).getSumConst(); } PageStayRegisterPo vonew PageStayRegisterPo(); vo.setCurrentPage(currentPage); if(txtnamenull) { txtname; } if (tuanDuiIDnull) { vothis.stayRegisterService.pageFuzzyselectThree(isBillID, txtname, vo); }else { vothis.stayRegisterService.pageFuzzyselectTwo(tuanDuiID, isBillID, txtname, vo); } mv.addObject(list,vo); mv.addObject(listOne,listOne); mv.addObject(LvKeLeiXingId,LvKeLeiXingId); mv.addObject(isBillID,isBillID); mv.addObject(txtname,txtname); mv.addObject(tuanDui,tuanDuiID); mv.addObject(teamNameId,teamNameId); mv.addObject(teamCodeId,teamCodeId); mv.addObject(principalId,principalId); mv.addObject(contactPhoneNUmberId,contactPhoneNUmberId); mv.addObject(registerTimeId,registerTimeId); mv.addObject(teamSumConst,teamSumConst); return mv; } ResponseBody RequestMapping(value/ajaxSelectTeamSumcont) public Object ajaxSelectTeamSumcont(Integer tuanDuiID, Integer isBillID){ double teamSumConst0; ListStayRegisterPo listTeamthis.stayRegisterService.selectFormTeamId(tuanDuiID, isBillID); for (int i 0; i listTeam.size(); i) { teamSumConstlistTeam.get(i).getSumConst(); } Gson gsonnew Gson(); return gson.toJson(teamSumConst); } RequestMapping(/toadd) public ModelAndView toadd(){ ModelAndView mvnull; mvnew ModelAndView(/stayregister/add); return mv; } //登记 RequestMapping(/toregister) public ModelAndView toregister(int id,String roomNumber,Integer LvKeLeiXingId){ ModelAndView mvnull; ListAttributePo listGenderattributeService.selectGender(); //性别 ListAttributePo listNationattributeService.selectNation(); //民族 ListAttributePo listPassengerLevelattributeService.selectPassengerLevel(); //旅客级别 ListAttributePo listEducationDegreeattributeService.selectEducationDegree(); //文化程度 ListAttributePo listPapersattributeService.selectPapers(); //证件类型 ListAttributePo listThingReasonattributeService.selectThingReason(); //事由 mvnew ModelAndView(/stayregister/register); mv.addObject(roomNumber,roomNumber); mv.addObject(stayRegisterId,id); mv.addObject(listGender,listGender); mv.addObject(listNation,listNation); mv.addObject(listPassengerLevel,listPassengerLevel); mv.addObject(listEducationDegree,listEducationDegree); mv.addObject(listPapers,listPapers); mv.addObject(listThingReason,listThingReason); mv.addObject(LvKeLeiXingId,LvKeLeiXingId); return mv; } RequestMapping(/register) public ModelAndView register(PassengerPo passengerPo,Integer LvKeLeiXingId){ Integer lvkeidpassengerPo.getLvKeID(); if (lvkeidnull) { passengerService.insertAll(passengerPo); lvkeidpassengerPo.getId(); }else { passengerPo.setId(passengerPo.getStayRegisterID()); passengerService.updateById(passengerPo); } stayRegisterService.insertStayregisterdetails(passengerPo.getStayRegisterID(), lvkeid); ModelAndView mvnull; mvnew ModelAndView(redirect:/StayRegister/tolist.do?LvKeLeiXingIdLvKeLeiXingId); return mv; } ResponseBody RequestMapping(value/selectPassenger) public Object selectPassenger(String txtname){ if(txtnamenull){ txtname; } ListPassengerPo listpassengerService.selectAjaxList(txtname); Gson gsonnew Gson(); return gson.toJson(list); } ResponseBody RequestMapping(value/confirmPassenger) public Object confirmPassenger(Integer id){ PassengerPo listpassengerService.selectById(id); Gson gsonnew Gson(); return gson.toJson(list); } //安排房间 RequestMapping(/toarrangeroom) public ModelAndView toarrangeroom(Integer tuanDuiID,Integer LvKeLeiXingId){ ModelAndView mvnull; ListRoomSetPo listroomSetService.selectAll(); ListAttributePo listPassengerTypeattributeService.selectPassengerType(); //旅客类别 ListAttributePo listBillUnitattributeService.selectBillUnit(); //结账单位 ListAttributePo listPayWayattributeService.selectPayWay(); //结账方式 ListAttributePo listRentOutTypeattributeService.selectRentOutType(); //出租方式 mvnew ModelAndView(/stayregister/arrangeroom); mv.addObject(listPassengerType,listPassengerType); mv.addObject(listBillUnit,listBillUnit); mv.addObject(listPayWay,listPayWay); mv.addObject(listRentOutType,listRentOutType); mv.addObject(list,list); mv.addObject(tuanDuiID,tuanDuiID); mv.addObject(LvKeLeiXingId,LvKeLeiXingId); return mv; } RequestMapping(/arrangeroom) public ModelAndView arrangeroom(StayRegisterPo stayRegisterPo,Integer LvKeLeiXingId){ ModelAndView mvnull; stayRegisterPo.setIsBillID(68); if (stayRegisterPo.getReceiveTargetID()null) { stayRegisterPo.setReceiveTargetID(2); } int fangJianIdstayRegisterPo.getRoomID(); RoomSetPo roomSetPoroomSetService.selectById(fangJianId); //根据 房间ID 查询出唯一的数据 int chuZuFangShiIdstayRegisterPo.getRentOutTypeID(); //获取 出租方式 int tianShuOrZhongDianInteger.parseInt(stayRegisterPo.getStayNumber()); //获取 住店天数/小时 if(chuZuFangShiId26){ double fagnJiaroomSetPo.getStandardPriceDay(); //获取房价/天 double sumConstfagnJia*(tianShuOrZhongDian); //房价乘以天数得总费 stayRegisterPo.setSumConst(sumConst); }else if(chuZuFangShiId25){ double fagnJiaroomSetPo.getStandardPrice(); //获取房价/小时 int zuiDaShiChangInteger.parseInt(roomSetPo.getMaxDuration()); //获取最大时长 int shouDuanShiChangInteger.parseInt(roomSetPo.getFirstDuration()); //获取首段时长 double shouDuanJiGeroomSetPo.getFirstPrice(); //获取首段价格 if (shouDuanShiChang tianShuOrZhongDian) { double sumConstshouDuanJiGe; //首时段时长大于 他输入的钟点数 stayRegisterPo.setSumConst(sumConst); //那么按 首段价格计算 }else if (shouDuanShiChang tianShuOrZhongDian tianShuOrZhongDian zuiDaShiChang) { int xiaoShitianShuOrZhongDian-shouDuanShiChang; //如果输入的钟点数 在 最大时长的范围之内 double sumConst shouDuanJiGexiaoShi*fagnJia; // 且大于等于首段时长 那么 计算出 stayRegisterPo.setSumConst(sumConst); // 首段价格 加上 钟点数乘以 多出的每小时价格 }else if(tianShuOrZhongDianzuiDaShiChang){ stayRegisterPo.setSumConst(roomSetPo.getStandardPriceDay()); //假如 输入的钟点数大于最大时长那么 按一天的价格计算 } } stayRegisterService.insertAll(stayRegisterPo); int idstayRegisterPo.getId(); stayRegisterPo.setDepositStayRegisterID(id); stayRegisterPo.setDepositRegisterTime(stayRegisterPo.getRegisterTime()); stayRegisterService.insertDeposit(stayRegisterPo); RoomSetPo roomSetPoToRoomStatenew RoomSetPo(); roomSetPoToRoomState.setId(fangJianId); //给新的 Po 赋房间ID的值 roomSetPoToRoomState.setRoomStateID(65); //给新的 Po 赋房态的值 roomSetService.updateByIdToRoomState(roomSetPoToRoomState); //根据 房间ID 来修改 当前被选中的房间的房态 mvnew ModelAndView(redirect:/StayRegister/tolist.do?LvKeLeiXingIdLvKeLeiXingId); return mv; } //换房 RequestMapping(/tochangroom) public ModelAndView tochangroom(Integer id,String lvKeName,Integer LvKeLeiXingId){ ModelAndView mvnull; fangjianIdid; lvkeNamelvKeName; Date datenew Date(); DateFormat dformatnew SimpleDateFormat(yyyy-MM-dd HH:mm:ss); //设置日期格式 Timestamp timestampTimestamp.valueOf(dformat.format(date)) ; //将当前时间转为字符串 long xiangChaTianShu; //相差时间毫秒 long days0; //相差天数 long hours0; //相差小时 long daysOne0; long hourOne0; String zhuSu; //住宿天数或小时 Timestamp registerTime; //登记时间 double yaJin0; //押金 double shangPinXiaoFei0; //商品消费 double zhuSuFei0; //住宿费 double fangJia0; //房价 int chuZuFangShi0; //出租方式 String huanFangShiJian; //换房时间 ListStayRegisterPo liststayRegisterService.selectChangRoom(id); ListStayRegisterPo listSourcestayRegisterService.selectMoney(id); registerTimelist.get(0).getRegisterTime(); //获取登记时间 zhuSulist.get(0).getStayNumber(); //获取住宿天数或小时 fangJialist.get(0).getRoomStandardPriceDay(); //获取房价/天 chuZuFangShilist.get(0).getRentOutTypeID(); //获取出租方式 huanFangShiJianString.valueOf(list.get(0).getChangRoomTime()); //获取换房时间 if (huanFangShiJian || huanFangShiJiannull) { xiangChaTianShutimestamp.getTime()-registerTime.getTime(); //当前时间-登记时间 daysxiangChaTianShu/(1000 * 60 * 60 * 24); //转化为天 hoursxiangChaTianShu/(1000 * 60 * 60 )-days*24; //转化为24小时之内 if(chuZuFangShi26){ if(hours6){ zhuSuFeidays*fangJia; zhuDianTianShudays; } if (hours6 hours15) { zhuSuFeidays*fangJia(0.5*fangJia); zhuDianTianShudays0.5; }else if(hours15){ zhuSuFei(days1)*fangJia; zhuDianTianShudays1; } }else if(chuZuFangShi25){ } shengZhuDianTianShuInteger.parseInt(zhuSu)-zhuDianTianShu; }else { xiangChaTianShutimestamp.getTime()-registerTime.getTime(); //当前时间-登记时间 daysxiangChaTianShu/(1000 * 60 * 60 * 24); //转化为天 hoursxiangChaTianShu/(1000 * 60 * 60 )-days*24; //转化为24小时之内 xiangChaTianShutimestamp.getTime()-Timestamp.valueOf(huanFangShiJian).getTime();//当前时间-上一次换房时间 daysOnexiangChaTianShu/(1000 * 60 * 60 * 24); //转化为天 hourOnexiangChaTianShu/(1000 * 60 * 60 )-days*24; //转化为24小时之内 if(chuZuFangShi26){ if(hourOne6){ zhuSuFeidaysOne*fangJia; zhuDianTianShuOnedaysOne; } if (hourOne6 hourOne15) { zhuSuFeidaysOne*fangJia(0.5*fangJia); zhuDianTianShuOnedaysOne0.5; }else if(hourOne15){ zhuSuFei(daysOne1)*fangJia; zhuDianTianShuOnedaysOne1; } if(hours6){ zhuDianTianShudays; } if (hours6 hours15) { zhuDianTianShudays0.5; }else if(hours15){ zhuDianTianShudays1; } }else if(chuZuFangShi25){ } shengZhuDianTianShuInteger.parseInt(zhuSu)-zhuDianTianShuOne-zhuDianTianShu; } for (int i 0; i list.size(); i) { yaJinlist.get(i).getDeposit(); } for (int i 0; i listSource.size(); i) { shangPinXiaoFeilistSource.get(i).getConsumptionMoney(); } mvnew ModelAndView(/stayregister/changroom); mv.addObject(lvKeName,lvKeName); mv.addObject(list,list); mv.addObject(yaJin,yaJin); mv.addObject(shangPinXiaoFei,shangPinXiaoFei); mv.addObject(zhuSuFei,zhuSuFei); mv.addObject(stayId,id); mv.addObject(zhuDianTianShu,zhuDianTianShu); mv.addObject(timestamp,timestamp); mv.addObject(LvKeLeiXingId,LvKeLeiXingId); return mv; } RequestMapping(/confirmChangRoom) public ModelAndView confirmChangRoom(Integer id, Integer roomId, Double changRoomMoney, Timestamp changRoomTime,Integer LvKeLeiXingId){ ModelAndView mvnull; int chuZuFangShi0; //出租方式 String huanFangCiShu; //换房次数 double fangJiaDay0; //房价/天 double fangJiaHour0; //房价/小时 double zongFeiYong0; //总费用 int zhuDianShiJian; //住店时间 int jiuFangJianId0; //旧房间id double JiuHuanFanFei; //旧换房费 double shangPinXiaoFei0; //商品消费 int zuiDaShiChang0; //新最大时长限制 int shouDuanShiChang0; //新首段时长 double shouDuanJiaGe0; //新首段价格 ListStayRegisterPo liststayRegisterService.selectChangRoom(id); RoomSetPo roomSetPoroomSetService.selectById(roomId); ListStayRegisterPo listShangPinstayRegisterService.selectMoney(id); chuZuFangShilist.get(0).getRentOutTypeID(); //获取出租方式 zhuDianShiJianInteger.parseInt(list.get(0).getStayNumber()); //获取住店时间 huanFangCiShulist.get(0).getChangingRoomNumber(); //获取换房次数 jiuFangJianIdlist.get(0).getRoomID(); //获取旧房间id JiuHuanFanFeilist.get(0).getChangRoomMoney(); //获取旧换房费 fangJiaDayroomSetPo.getStandardPriceDay(); //获取新房价/天 fangJiaHourroomSetPo.getStandardPrice(); //获取新房价/小时 zuiDaShiChangInteger.parseInt(roomSetPo.getMaxDuration()); //获取新最大时长 shouDuanShiChangInteger.parseInt(roomSetPo.getFirstDuration()); //获取新首段时长 shouDuanJiaGeroomSetPo.getFirstPrice(); //获取新首段价格 for (int i 0; i listShangPin.size(); i) { shangPinXiaoFeilistShangPin.get(i).getConsumptionMoney(); } if (chuZuFangShi26) { zongFeiYongJiuHuanFanFeichangRoomMoneyshangPinXiaoFeishengZhuDianTianShu*fangJiaDay; }else if(chuZuFangShi25){ if (shouDuanShiChangzhuDianShiJian) { zongFeiYongJiuHuanFanFeichangRoomMoneyshangPinXiaoFeishouDuanJiaGe; }else if(zhuDianShiJianshouDuanShiChang zhuDianShiJianzuiDaShiChang){ double jiSuan(zhuDianShiJian-shouDuanShiChang)*fangJiaHour; zongFeiYongJiuHuanFanFeichangRoomMoneyshangPinXiaoFeishouDuanJiaGejiSuan; }else { zongFeiYongJiuHuanFanFeichangRoomMoneyshangPinXiaoFeifangJiaDay; } } if (huanFangCiShunull || huanFangCiShu) { huanFangCiShu1; }else{ huanFangCiShuString.valueOf(Integer.parseInt(huanFangCiShu)1); } StayRegisterPo stayRegisterPonew StayRegisterPo(); RoomSetPo roomOnenew RoomSetPo(); RoomSetPo roomTwonew RoomSetPo(); stayRegisterPo.setId(id); stayRegisterPo.setRoomID(roomId); stayRegisterPo.setSumConst(zongFeiYong); stayRegisterPo.setChangingRoomNumber(huanFangCiShu); stayRegisterPo.setChangRoomMoney(changRoomMoneyJiuHuanFanFei); stayRegisterPo.setChangRoomTime(changRoomTime); roomOne.setId(jiuFangJianId); roomOne.setRoomStateID(1); roomTwo.setId(roomId); roomTwo.setRoomStateID(65); roomSetService.updateByIdToRoomState(roomOne); roomSetService.updateByIdToRoomState(roomTwo); stayRegisterService.updateChangRoom(stayRegisterPo); mvnew ModelAndView(redirect:/StayRegister/tolist.do?LvKeLeiXingIdLvKeLeiXingId); return mv; } ResponseBody RequestMapping(value/changRoomSelectPassenger) public Object changRoomSelectPassenger(String roomNumber){ if(roomNumbernull){ roomNumber; } ListRoomSetPo listroomSetService.selectInformation(roomNumber); Gson gsonnew Gson(); return gson.toJson(list); } RequestMapping(/todeposit) public ModelAndView todeposit(Integer id,String lvKeName,Integer LvKeLeiXingId){ ModelAndView mvnull; fangjianIdid; lvkeNamelvKeName; ListStayRegisterPo liststayRegisterService.selectDepositById(id); ListAttributePo list2attributeService.selectPayWay(); mvnew ModelAndView(/stayregister/deposit); mv.addObject(list,list); mv.addObject(listTwo,list2); mv.addObject(lvKeName,lvKeName); mv.addObject(stayId,id); mv.addObject(LvKeLeiXingId,LvKeLeiXingId); return mv; } RequestMapping(/deposit) public ModelAndView deposit(StayRegisterPo stayRegisterPo,Integer LvKeLeiXingId){ ModelAndView mvnull; Date datenew Date(); DateFormat dformatnew SimpleDateFormat(yyyy-MM-dd HH:mm:ss); //设置日期格式 Timestamp timestampTimestamp.valueOf(dformat.format(date)) ; //将当前时间转为字符串 stayRegisterPo.setDepositRegisterTime(timestamp); mvnew ModelAndView(redirect:/StayRegister/todeposit.do?idfangjianId); mv.addObject(lvKeName, lvkeName); mv.addObject(LvKeLeiXingId,LvKeLeiXingId); stayRegisterService.insertDeposit(stayRegisterPo); return mv; } RequestMapping(/toconsumption) public ModelAndView toconsumption(Integer id,String lvKeName,Integer currentPage, Integer LvKeLeiXingId,Integer isBillID){ ModelAndView mvnull; fangjianIdid; lvkeNamelvKeName; PageStayRegisterPo vonew PageStayRegisterPo(); if (currentPagenull) { currentPage1; }else if (currentPage0) { currentPage1; } vo.setCurrentPage(currentPage); ListAttributePo listOneattributeService.selectCommodityType(); vothis.stayRegisterService.pageConsumption(id, vo); mvnew ModelAndView(/stayregister/consumption); mv.addObject(listOne,listOne); mv.addObject(stayId,id); mv.addObject(lvKeName,lvKeName); mv.addObject(list,vo); mv.addObject(LvKeLeiXingId,LvKeLeiXingId); mv.addObject(isBillID,isBillID); return mv; } //新增 RequestMapping(/consumption) public ModelAndView consumption(String id,String Number, int consumptionStayRegisterID,Integer LvKeLeiXingId){ ModelAndView mvnull; Date datenew Date(); DateFormat dformatnew SimpleDateFormat(yyyy-MM-dd HH:mm:ss); //设置日期格式 Timestamp timestampTimestamp.valueOf(dformat.format(date)) ; //将当前时间转为字符串 String[] FenGeIdid.split(,); String[] FenGeNumberNumber.split(,); StayRegisterPo stayRegisterPonew StayRegisterPo(); for (int i 0; i FenGeId.length; i) { CommodityPo commodityPocommodityService.selectById(Integer.parseInt(FenGeId[i])); stayRegisterPo.setConsumptionCommodityID(Integer.parseInt(FenGeId[i])); stayRegisterPo.setConsumptionStayRegisterID(consumptionStayRegisterID); stayRegisterPo.setConsumptionNumber(FenGeNumber[i]); stayRegisterPo.setConsumptionTime(timestamp); double moneyInteger.parseInt(FenGeNumber[i])*(Double.parseDouble(commodityPo.getSalePrice())); stayRegisterPo.setConsumptionMoney(money); stayRegisterService.insertConsumptiondetails(stayRegisterPo); } ListStayRegisterPo listSourcestayRegisterService.selectMoney(consumptionStayRegisterID); int chuZuFangShiIdlistSource.get(0).getRentOutTypeID(); //出租方式ID int zhuDianShiChangInteger.parseInt(listSource.get(0).getStayNumber()); //住店时长 double fangJiaTianlistSource.get(0).getRoomStandardPriceDay(); //房价/天 double fangJialistSource.get(0).getRoomStandardPrice(); //房价/小时 int zuiDaShiChangInteger.parseInt(listSource.get(0).getRoomMaxDuration()); //最大时长 int shouDuanShiChangInteger.parseInt(listSource.get(0).getRoomFirstDuration()); //首段时长 double shouDuanJiaGelistSource.get(0).getRoomFirstPrice(); //首段价格 double xiaoFeiJiaGe0; double zhuSuFei0; if(chuZuFangShiId26){ zhuSuFeifangJiaTian*zhuDianShiChang; //房价乘以天数得总费 }else if(chuZuFangShiId25){ if (shouDuanShiChang zhuDianShiChang) { zhuSuFeishouDuanJiaGe; //首时段时长大于 他输入的钟点数 那么按 首段价格计算 }else if (shouDuanShiChang zhuDianShiChang zhuDianShiChang zuiDaShiChang) { int xiaoShizhuDianShiChang-shouDuanShiChang; //如果输入的钟点数 在 最大时长的范围之内 zhuSuFei shouDuanJiaGexiaoShi*fangJia; // 且大于等于首段时长 那么 计算出 }else if(zhuDianShiChangzuiDaShiChang){ zhuSuFeifangJiaTian; //假如 输入的钟点数大于最大时长那么 按一天的价格计算 } } for (int i 0; i listSource.size(); i) { xiaoFeiJiaGelistSource.get(i).getConsumptionMoney(); } double zongFeiYongxiaoFeiJiaGezhuSuFei; stayRegisterService.updateSumConst(consumptionStayRegisterID, zongFeiYong); mvnew ModelAndView(redirect:/StayRegister/toconsumption.do?idfangjianId); mv.addObject(lvKeName,lvkeName); mv.addObject(LvKeLeiXingId,LvKeLeiXingId); return mv; } //删除 RequestMapping(/consumptionDelete) public ModelAndView consumptionDelete(String id,int consumptionStayRegisterID){ ModelAndView mvnull; String[] FenGeIdid.split(,); for (int i 0; i FenGeId.length; i) { stayRegisterService.deleteConsumption(Integer.parseInt(FenGeId[i])); } mvnew ModelAndView(redirect:/StayRegister/toconsumption.do?idfangjianId); mv.addObject(lvKeName,lvkeName); ListStayRegisterPo listSourcestayRegisterService.selectMoney(consumptionStayRegisterID); int chuZuFangShiIdlistSource.get(0).getRentOutTypeID(); //出租方式ID int zhuDianShiChangInteger.parseInt(listSource.get(0).getStayNumber()); //住店时长 double fangJiaTianlistSource.get(0).getRoomStandardPriceDay(); //房价/天 double fangJialistSource.get(0).getRoomStandardPrice(); //房价/小时 int zuiDaShiChangInteger.parseInt(listSource.get(0).getRoomMaxDuration()); //最大时长 int shouDuanShiChangInteger.parseInt(listSource.get(0).getRoomFirstDuration()); //首段时长 double shouDuanJiaGelistSource.get(0).getRoomFirstPrice(); //首段价格 double xiaoFeiJiaGe0; double zhuSuFei0; if(chuZuFangShiId26){ zhuSuFeifangJiaTian*zhuDianShiChang; //房价乘以天数得总费 }else if(chuZuFangShiId25){ if (shouDuanShiChang zhuDianShiChang) { zhuSuFeishouDuanJiaGe; //首时段时长大于 他输入的钟点数 那么按 首段价格计算 }else if (shouDuanShiChang zhuDianShiChang zhuDianShiChang zuiDaShiChang) { int xiaoShizhuDianShiChang-shouDuanShiChang; //如果输入的钟点数 在 最大时长的范围之内 zhuSuFei shouDuanJiaGexiaoShi*fangJia; // 且大于等于首段时长 那么 计算出 }else if(zhuDianShiChangzuiDaShiChang){ zhuSuFeifangJiaTian; //假如 输入的钟点数大于最大时长那么 按一天的价格计算 } } for (int i 0; i listSource.size(); i) { xiaoFeiJiaGelistSource.get(i).getConsumptionMoney(); } double zongFeiYongxiaoFeiJiaGezhuSuFei; stayRegisterService.updateSumConst(consumptionStayRegisterID, zongFeiYong); return mv; } ResponseBody RequestMapping(value/tianJiaShangPin) public Object tianJiaShangPin(String name,int cboid){ if(namenull){ name; } ListCommodityPo listAjaxcommodityService.fuzzySelect(name, cboid); Gson gsonnew Gson(); return gson.toJson(listAjax); } RequestMapping(/topay) public ModelAndView topay(Integer id,String lvKeName) throws UnsupportedEncodingException{ ModelAndView mvnull; fangjianIdid; lvKeNamenew String(lvKeName.getBytes(ISO8859-1),utf-8); Date datenew Date(); DateFormat dformatnew SimpleDateFormat(yyyy-MM-dd HH:mm:ss); //设置日期格式 Timestamp timestampTimestamp.valueOf(dformat.format(date)) ; //将当前时间转为字符串 double shangPinXiaoFei0; double yaJin0; double huanFanFei0; double zongFeiYong0; double zhuSuFei0; double yingBuJinE0; ListStayRegisterPo listDepositstayRegisterService.selectDepositById(id); ListStayRegisterPo listShangPinstayRegisterService.selectMoney(id); ListAttributePo listOneattributeService.selectPayWay(); for (int i 0; i listDeposit.size(); i) { yaJinlistDeposit.get(i).getDeposit(); } for (int i 0; i listShangPin.size(); i) { shangPinXiaoFeilistShangPin.get(i).getConsumptionMoney(); } huanFanFeilistDeposit.get(0).getChangRoomMoney(); zongFeiYonglistDeposit.get(0).getSumConst(); zhuSuFeizongFeiYong-shangPinXiaoFei-huanFanFei; yingBuJinEzongFeiYong-yaJin; mvnew ModelAndView(/stayregister/pay); mv.addObject(stayId,id); mv.addObject(lvKeName,lvKeName); mv.addObject(listDeposit,listDeposit); mv.addObject(listShangPin,listShangPin); mv.addObject(zhuSuFei,zhuSuFei); mv.addObject(yaJin,yaJin); mv.addObject(shangPinXiaoFei,shangPinXiaoFei); mv.addObject(yingBuJinE,yingBuJinE); mv.addObject(timestamp,timestamp); mv.addObject(listOne,listOne); return mv; } //结账 RequestMapping(/pay) public ModelAndView pay(Integer id,String remarks,Timestamp payTime,Integer payWay,Integer roomId){ ModelAndView mvnull; stayRegisterService.pay(id, remarks, payTime, payWay); RoomSetPo roomSetPonew RoomSetPo(); roomSetPo.setId(roomId); roomSetPo.setRoomStateID(1); roomSetService.updateByIdToRoomState(roomSetPo); mvnew ModelAndView(redirect:/StayRegister/tolist.do?); return mv; } //批量安排房间 RequestMapping(/tovolumeroom) public ModelAndView tovolumeroom(Integer tuanDuiID, String teamName){ ModelAndView mvnull; ListAttributePo listPassengerTypeattributeService.selectPassengerType(); //旅客类别 ListAttributePo listBillUnitattributeService.selectBillUnit(); //结账单位 ListAttributePo listPayWayattributeService.selectPayWay(); //结账方式 ListAttributePo listRentOutTypeattributeService.selectRentOutType(); //出租方式 mvnew ModelAndView(/stayregister/volumeroom); mv.addObject(listPassengerType,listPassengerType); mv.addObject(listBillUnit,listBillUnit); mv.addObject(listPayWay,listPayWay); mv.addObject(listRentOutType,listRentOutType); mv.addObject(tuanDuiID,tuanDuiID); mv.addObject(teamName,teamName); return mv; } //批量安排房间 RequestMapping(/volumeroom) public ModelAndView volumeroom(String roomId,StayRegisterPo stayRegisterPo){ ModelAndView mvnull; String[] FenGenroomId.split(,); stayRegisterPo.setIsBillID(68); int chuZuFangShiIdstayRegisterPo.getRentOutTypeID(); //获取 出租方式 int tianShuOrZhongDianInteger.parseInt(stayRegisterPo.getStayNumber()); //获取 住店天数/小时 double yaJinstayRegisterPo.getDeposit()/FenGen.length; stayRegisterPo.setDeposit(yaJin); RoomSetPo roomSetPoToRoomStatenew RoomSetPo(); roomSetPoToRoomState.setRoomStateID(65); //给新的 Po 赋房态的值 for (int i 0; i FenGen.length; i) { RoomSetPo roomSetPoroomSetService.selectById(Integer.parseInt(FenGen[i])); //根据 房间ID 查询出唯一的数据 if(chuZuFangShiId26){ double fagnJiaroomSetPo.getStandardPriceDay(); //获取房价/天 double sumConstfagnJia*(tianShuOrZhongDian); //房价乘以天数得总费 stayRegisterPo.setSumConst(sumConst); }else if(chuZuFangShiId25){ double fagnJiaroomSetPo.getStandardPrice(); //获取房价/小时 int zuiDaShiChangInteger.parseInt(roomSetPo.getMaxDuration()); //获取最大时长 int shouDuanShiChangInteger.parseInt(roomSetPo.getFirstDuration()); //获取首段时长 double shouDuanJiGeroomSetPo.getFirstPrice(); //获取首段价格 if (shouDuanShiChang tianShuOrZhongDian) { double sumConstshouDuanJiGe; //首时段时长大于 他输入的钟点数 stayRegisterPo.setSumConst(sumConst); //那么按 首段价格计算 }else if (shouDuanShiChang tianShuOrZhongDian tianShuOrZhongDian zuiDaShiChang) { int xiaoShitianShuOrZhongDian-shouDuanShiChang; //如果输入的钟点数 在 最大时长的范围之内 double sumConst shouDuanJiGexiaoShi*fagnJia; // 且大于等于首段时长 那么 计算出 stayRegisterPo.setSumConst(sumConst); // 首段价格 加上 钟点数乘以 多出的每小时价格 }else if(tianShuOrZhongDianzuiDaShiChang){ stayRegisterPo.setSumConst(roomSetPo.getStandardPriceDay()); //假如 输入的钟点数大于最大时长那么 按一天的价格计算 } } stayRegisterPo.setRoomID(Integer.parseInt(FenGen[i])); stayRegisterService.insertAll(stayRegisterPo); int idstayRegisterPo.getId(); stayRegisterPo.setDepositStayRegisterID(id); stayRegisterPo.setDepositRegisterTime(stayRegisterPo.getRegisterTime()); stayRegisterService.insertDeposit(stayRegisterPo); roomSetPoToRoomState.setId(Integer.parseInt(FenGen[i])); //给新的 Po 赋房间ID的值 roomSetService.updateByIdToRoomState(roomSetPoToRoomState); //根据 房间ID 来修改 当前被选中的房间的房态 } mvnew ModelAndView(redirect:/StayRegister/tolist.do?LvKeLeiXingId56); return mv; } //ajax查询房间信息 ResponseBody RequestMapping(value/ajaxSelectRoom) public Object ajaxSelectRoom(String id){ ListRoomSetPo listnew ArrayListRoomSetPo(); String[] fenGeid.split(,); for (int i 0; i fenGe.length; i) { RoomSetPo roomSetPoroomSetService.selectById(Integer.parseInt(fenGe[i])); list.add(roomSetPo); } Gson gsonnew Gson(); return gson.toJson(list); } //团队押金 RequestMapping(/toteamdeposit) public ModelAndView toteamdeposit(){ ModelAndView mvnull; mvnew ModelAndView(/stayregister/teamdeposit); return mv; } //团队结账 RequestMapping(/toteampay) public ModelAndView toteampay(Integer tuanDuiID){ ModelAndView mvnull; TeamPayVo teamPayVonew TeamPayVo(); double yaJin0; double xiaoFei0; double huanFangFei0; double zongFeiYong0; double zhuSuFei0; double yingBuJinE0; int fangJianShu0; Date datenew Date(); DateFormat dformatnew SimpleDateFormat(yyyy-MM-dd HH:mm:ss); //设置日期格式 Timestamp timestampTimestamp.valueOf(dformat.format(date)) ; //将当前时间转为字符串 ListAttributePo listPayWayattributeService.selectPayWay(); //结账方式 ListStayRegisterPo listDepositstayRegisterService.selectTeamDeposit(tuanDuiID); ListStayRegisterPo listConsumptionstayRegisterService.selectTeamConsumption(tuanDuiID); ListStayRegisterPo liststayRegisterService.selectFormTeamId(tuanDuiID, 68); for (int i 0; i listDeposit.size(); i) { yaJinlistDeposit.get(i).getDeposit(); } for (int i 0; i list.size(); i) { zongFeiYonglist.get(i).getSumConst(); huanFangFeilist.get(i).getChangRoomMoney(); } for (int i 0; i listConsumption.size(); i) { xiaoFeilistConsumption.get(i).getConsumptionMoney(); } fangJianShulist.size(); zhuSuFeizongFeiYong-huanFangFei-xiaoFei; yingBuJinEzongFeiYong-yaJin; teamPayVo.setStayMoney(zhuSuFei); teamPayVo.setChangRoomMoney(huanFangFei); teamPayVo.setOtherMoney(xiaoFei); teamPayVo.setPayMoney(zongFeiYong); teamPayVo.setDepositMoney(yaJin); teamPayVo.setPayRepairMoney(yingBuJinE); mvnew ModelAndView(/stayregister/teampay); mv.addObject(listPayWay,listPayWay); mv.addObject(listConsumption,listConsumption); mv.addObject(teamPayVo,teamPayVo); mv.addObject(fangJianShu,fangJianShu); mv.addObject(timestamp,timestamp); mv.addObject(list,list); mv.addObject(tuanDuiID,tuanDuiID); return mv; } RequestMapping(teamPay) public ModelAndView teamPay( String id, String remarks, Integer payWay, Timestamp payTime){ ModelAndView mvnull; RoomSetPo roomSetPonew RoomSetPo(); roomSetPo.setRoomStateID(1); String[] FenGeid.split(,); for (int i 0; i FenGe.length; i) { stayRegisterService.pay(Integer.parseInt(FenGe[i]), remarks, payTime, payWay); StayRegisterPo stayRegisterPostayRegisterService.selectById(Integer.parseInt(FenGe[i])); roomSetPo.setId(stayRegisterPo.getRoomID()); roomSetService.updateByIdToRoomState(roomSetPo); } mvnew ModelAndView(redirect:/StayRegister/tolist.do?LvKeLeiXingId56); return mv; } //ajax查询房间信息 ResponseBody RequestMapping(value/ajaxTeamSelectRoom) public Object ajaxTeamSelectRoom(String roomNumber,Integer receiveTargetID){ ListStayRegisterPo listnew ArrayListStayRegisterPo(); liststayRegisterService.ajaxSelectTeamRoom(receiveTargetID, roomNumber); Gson gsonnew Gson(); return gson.toJson(list); } //ajax查询房间信息 ResponseBody RequestMapping(value/timeAjaxSelectRoomOne) public Object timeAjaxSelectRoomOne(Integer receiveTargetID,String datemin,String datemax){ datemindatemin 00:00:00; datemaxdatemax 23:59:59; Timestamp minTimestamp.valueOf(datemin); Timestamp maxTimestamp.valueOf(datemax); ListStayRegisterPo listnew ArrayListStayRegisterPo(); liststayRegisterService.ajaxSelectTeamFormTime(receiveTargetID, min, max); Gson gsonnew Gson(); return gson.toJson(list); } //ajax查询房间信息 ResponseBody RequestMapping(value/timeAjaxSelectRoomTwo) public Object timeAjaxSelectRoomTwo(Integer receiveTargetID,String datemin,String datemax){ TeamPayVo teamPayVonew TeamPayVo(); double yaJin0; double xiaoFei0; double huanFangFei0; double zongFeiYong0; double zhuSuFei0; double yingBuJinE0; int fangJianShu0; datemindatemin 00:00:00; datemaxdatemax 23:59:59; Timestamp minTimestamp.valueOf(datemin); Timestamp maxTimestamp.valueOf(datemax); ListStayRegisterPo listDepositstayRegisterService.ajaxSelectTeamDeposit(receiveTargetID, min, max); ListStayRegisterPo listConsumptionstayRegisterService.ajaxSelectTeamConsumption(receiveTargetID, min, max); ListStayRegisterPo liststayRegisterService.ajaxSelectTeamFormTime(receiveTargetID, min, max); for (int i 0; i listDeposit.size(); i) { yaJinlistDeposit.get(i).getDeposit(); huanFangFeilistDeposit.get(i).getChangRoomMoney(); } for (int i 0; i list.size(); i) { zongFeiYonglist.get(i).getSumConst(); } for (int i 0; i listConsumption.size(); i) { xiaoFeilistConsumption.get(i).getConsumptionMoney(); } fangJianShulistConsumption.size(); zhuSuFeizongFeiYong-huanFangFei-xiaoFei; yingBuJinEzongFeiYong-yaJin; teamPayVo.setStayMoney(zhuSuFei); teamPayVo.setChangRoomMoney(huanFangFei); teamPayVo.setOtherMoney(xiaoFei); teamPayVo.setPayMoney(zongFeiYong); teamPayVo.setDepositMoney(yaJin); teamPayVo.setPayRepairMoney(yingBuJinE); Gson gsonnew Gson(); /*ListMapString, Object listnew ArrayListMapString,Object(); MapString, Object mapnew HashMapString, Object(); map.put(canshu, zhr); map.put(teamPayVo, teamPayVo); list.add(map);*/ return gson.toJson(teamPayVo); } //ajax查询房间信息 ResponseBody RequestMapping(value/timeAjaxSelectRoomThree) public Object timeAjaxSelectRoomThree(String id,Double zhuSuFei,Double huanFangFei, Double qiTaXiaoFei,Double jieZhangJinE,Double yaJin,Double yingBuJinE){ double ByaJin0; double BxiaoFei0; double BhuanFangFei0; double BzongFeiYong0; double BzhuSuFei0; TeamPayVo teamPayVonew TeamPayVo(); String[] FenGeIdid.split(,); for (int i 0; i FenGeId.length; i) { StayRegisterPo xiangQingstayRegisterService.selectSumconst(Integer.parseInt(FenGeId[i])); ListStayRegisterPo yaJinListstayRegisterService.selectDepositJinJianBan(Integer.parseInt(FenGeId[i])); ListStayRegisterPo xiaoFeiListstayRegisterService.selectConsumptionJinJianBan(Integer.parseInt(FenGeId[i])); for (int j 0; j yaJinList.size(); j) { ByaJinyaJinList.get(j).getDeposit(); } for (int j 0; j xiaoFeiList.size(); j) { BxiaoFeixiaoFeiList.get(j).getConsumptionMoney(); } if(i0){ BhuanFangFeixiangQing.getChangRoomMoney(); BzongFeiYongxiangQing.getSumConst(); } } BzhuSuFeiBzongFeiYong-BhuanFangFei-BxiaoFei; double JzhuSuFeizhuSuFei-BzhuSuFei; double JhuanFangFeihuanFangFei-BhuanFangFei; double JqiTaXiaoFeiqiTaXiaoFei-BxiaoFei; double JjieZhangJinEjieZhangJinE-BzongFeiYong; double JyaJinyaJin-ByaJin; double JyingBuJinEyingBuJinE-(BzongFeiYong-ByaJin); teamPayVo.setStayMoney(JzhuSuFei); teamPayVo.setChangRoomMoney(JhuanFangFei); teamPayVo.setOtherMoney(JqiTaXiaoFei); teamPayVo.setPayMoney(JjieZhangJinE); teamPayVo.setDepositMoney(JyaJin); teamPayVo.setPayRepairMoney(JyingBuJinE); Gson gsonnew Gson(); return gson.toJson(teamPayVo); } //转为散客 RequestMapping(/toshiftpersonage) public ModelAndView toshiftpersonage(Integer id,Integer stayregisterdetailsId){ ModelAndView mvnull; double zhuSuFei0; double huanFangFei0; double qiTaXiaoFei0; double yaJin0; double zongFeiYong0; String txtname; ListStayRegisterPo listDepositstayRegisterService.selectDepositJinJianBan(id); ListStayRegisterPo listXiaoFeistayRegisterService.selectConsumptionJinJianBan(id); StayRegisterPo liststayRegisterService.selectInformationXiangQingBan(stayregisterdetailsId); for (int i 0; i listDeposit.size(); i) { yaJinlistDeposit.get(i).getDeposit(); } for (int i 0; i listXiaoFei.size(); i) { qiTaXiaoFeilistXiaoFei.get(i).getConsumptionMoney(); } zongFeiYonglist.getSumConst(); huanFangFeilist.getChangRoomMoney(); zhuSuFeizongFeiYong-huanFangFei-qiTaXiaoFei; mvnew ModelAndView(/stayregister/shiftpersonage); mv.addObject(zhuSuFei,zhuSuFei); mv.addObject(qiTaXiaoFei,qiTaXiaoFei); mv.addObject(yaJin,yaJin); mv.addObject(list,list); mv.addObject(id,id); return mv; } //转入团队 RequestMapping(/toshiftteam) public ModelAndView toshiftteam(Integer id,Integer stayregisterdetailsId){ ModelAndView mvnull; double zhuSuFei0; double huanFangFei0; double qiTaXiaoFei0; double yaJin0; double zongFeiYong0; String txtname; ListStayRegisterPo listDepositstayRegisterService.selectDepositJinJianBan(id); ListStayRegisterPo listXiaoFeistayRegisterService.selectConsumptionJinJianBan(id); StayRegisterPo liststayRegisterService.selectInformationXiangQingBan(stayregisterdetailsId); ListReceiveTargetPo listRTreceiveTargetService.ajaxSelect(txtname); for (int i 0; i listDeposit.size(); i) { yaJinlistDeposit.get(i).getDeposit(); } for (int i 0; i listXiaoFei.size(); i) { qiTaXiaoFeilistXiaoFei.get(i).getConsumptionMoney(); } zongFeiYonglist.getSumConst(); huanFangFeilist.getChangRoomMoney(); zhuSuFeizongFeiYong-huanFangFei-qiTaXiaoFei; mvnew ModelAndView(/stayregister/shiftteam); mv.addObject(zhuSuFei,zhuSuFei); mv.addObject(qiTaXiaoFei,qiTaXiaoFei); mv.addObject(yaJin,yaJin); mv.addObject(list,list); mv.addObject(listRT,listRT); mv.addObject(id,id); return mv; } //转为散客或转入团队 RequestMapping(/changOver) public ModelAndView changOver(Integer id,Integer receiveTargetID,Integer LvKeLeiXingId){ ModelAndView mvnull; if (receiveTargetIDnull) { receiveTargetID2; } stayRegisterService.changOverTeam(id, receiveTargetID); mvnew ModelAndView(redirect:/StayRegister/tolist.do?LvKeLeiXingIdLvKeLeiXingId); return mv; } //ajax 安排房间的房间 ResponseBody RequestMapping(value/guestRoomLevelSelectRoom) public Object guestRoomLevelSelectRoom(Integer guestRoomLevelID){ ListRoomSetPo listnull; if (guestRoomLevelID0) { listroomSetService.selectAll(); }else { listroomSetService.levelSelectInformation(guestRoomLevelID); } Gson gsonnew Gson(); return gson.toJson(list); } }5.3 财务管理用例实现描述5.3.1 财务统计实现界面5.3.2 财务统计主要代码package com.gx.web; import java.sql.Timestamp; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.gx.page.Page; import com.gx.po.ReceiveTargetPo; import com.gx.po.StayRegisterPo; import com.gx.service.StayRegisterService; Controller RequestMapping(/FinancialStatistics) public class FinancialStatistics { Autowired private StayRegisterService stayRegisterService; RequestMapping(/tolist) public ModelAndView tolist(String datemin, String datemax,Integer currentPage){ ModelAndView mvnull; int chuZuFangJianShu0; int zhuSuRenShu0; double xiaoFeiJinE0; double JieZhangJinE0; if (currentPagenull) { currentPage1; }else if (currentPage0) { currentPage1; } mvnew ModelAndView(/financialstatistics/financialstatistics); PageStayRegisterPo vonew PageStayRegisterPo(); vo.setCurrentPage(currentPage); if (datemin || datemax || dateminnull || datemaxnull) { ListStayRegisterPo listJinEthis.stayRegisterService.selectPayJingJianBanNot(); for (int i 0; i listJinE.size(); i) { chuZuFangJianShu; JieZhangJinElistJinE.get(i).getSumConst(); } ListStayRegisterPo listRenShuthis.stayRegisterService.selectPayStayNumberNot(); for (int i 0; i listRenShu.size(); i) { zhuSuRenShu; } ListStayRegisterPo listXiaoFeithis.stayRegisterService.selectPayXiaoFeiNot(); for (int i 0; i listXiaoFei.size(); i) { xiaoFeiJinElistXiaoFei.get(i).getConsumptionMoney(); } vothis.stayRegisterService.pageFuzzyselectFour(vo); }else { String dateminStringdatemin 00:00:00; String datemaxStringdatemax 23:59:59; Timestamp minTimestamp.valueOf(dateminString); Timestamp maxTimestamp.valueOf(datemaxString); ListStayRegisterPo listJinEthis.stayRegisterService.selectPayJingJianBan(min,max); for (int i 0; i listJinE.size(); i) { chuZuFangJianShu; JieZhangJinElistJinE.get(i).getSumConst(); } ListStayRegisterPo listRenShuthis.stayRegisterService.selectPayStayNumber(min,max); for (int i 0; i listRenShu.size(); i) { zhuSuRenShu; } ListStayRegisterPo listXiaoFeithis.stayRegisterService.selectPayXiaoFei(min,max); for (int i 0; i listXiaoFei.size(); i) { xiaoFeiJinElistXiaoFei.get(i).getConsumptionMoney(); } vothis.stayRegisterService.pageFuzzyselectFive(min, max, vo); } mv.addObject(list,vo); mv.addObject(chuZuFangJianShu,chuZuFangJianShu); mv.addObject(zhuSuRenShu,zhuSuRenShu); mv.addObject(xiaoFeiJinE,xiaoFeiJinE); mv.addObject(JieZhangJinE,JieZhangJinE); mv.addObject(min,datemin); mv.addObject(max,datemax); return mv; } RequestMapping(/toinformation) public ModelAndView toinformation(Integer id,Integer stayregisterdetailsId,String min, String max){ ModelAndView mvnull; double zhuSuFei0; double huanFangFei0; double qiTaXiaoFei0; double yaJin0; double zongFeiYong0; ListStayRegisterPo listDepositstayRegisterService.selectDepositById(id); ListStayRegisterPo listXiaoFeistayRegisterService.selectXiaoFeiMingXi(id); ListStayRegisterPo liststayRegisterService.selectAllInformation(stayregisterdetailsId); for (int i 0; i listDeposit.size(); i) { yaJinlistDeposit.get(i).getDeposit(); } for (int i 0; i listXiaoFei.size(); i) { qiTaXiaoFeilistXiaoFei.get(i).getConsumptionMoney(); } zongFeiYonglist.get(0).getSumConst(); huanFangFeilist.get(0).getChangRoomMoney(); zhuSuFeizongFeiYong-huanFangFei-qiTaXiaoFei; mvnew ModelAndView(/financialstatistics/particulars); mv.addObject(zhuSuFei,zhuSuFei); mv.addObject(qiTaXiaoFei,qiTaXiaoFei); mv.addObject(yaJin,yaJin); mv.addObject(list,list); mv.addObject(id,id); mv.addObject(listDeposit,listDeposit); mv.addObject(listXiaoFei,listXiaoFei); mv.addObject(min,min); mv.addObject(max,max); return mv; } }5.4 旅客管理用例实现描述旅客管理分为两部分一部分是散户管理和团队管理因为有的可能是团队进行旅游所以设置两种类型。5.4.1 旅客管理-旅客信息用例实现界面5.4.2 旅客管理-旅客信息用例测试用例5.4.4 旅客管理-接待对象用例实现界面5.4.5 旅客管理-接待对象用例测试用例5.4.6 旅客管理用例实现主要代码package com.gx.web; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.google.gson.Gson; import com.gx.page.Page; import com.gx.po.AttributePo; import com.gx.po.PassengerPo; import com.gx.service.AttributeService; import com.gx.service.PassengerService; Controller RequestMapping(/Passenger) public class Passenger { Autowired private AttributeService attributeService; Autowired private PassengerService passengerService; RequestMapping(/tolist) public ModelAndView tolist(HttpServletRequest request,Integer currentPage,String txtname){ ModelAndView mvnull; mvnew ModelAndView(/passenger/list); PagePassengerPo vonew PagePassengerPo(); if (currentPagenull) { currentPage1; }else if (currentPage0) { currentPage1; } if(txtnamenull) { txtname; } vo.setCurrentPage(currentPage); vothis.passengerService.pageFuzzyselect(txtname, vo); mv.addObject(list,vo); mv.addObject(txtname,txtname); return mv; } RequestMapping(/toadd) public ModelAndView toadd(){ ModelAndView mvnull; ListAttributePo listGenderattributeService.selectGender(); //性别 ListAttributePo listNationattributeService.selectNation(); //民族 ListAttributePo listPassengerLevelattributeService.selectPassengerLevel(); //旅客级别 ListAttributePo listEducationDegreeattributeService.selectEducationDegree(); //文化程度 ListAttributePo listPapersattributeService.selectPapers(); //证件类型 ListAttributePo listThingReasonattributeService.selectThingReason(); //事由 mvnew ModelAndView(/passenger/add); mv.addObject(listGender,listGender); mv.addObject(listNation,listNation); mv.addObject(listPassengerLevel,listPassengerLevel); mv.addObject(listEducationDegree,listEducationDegree); mv.addObject(listPapers,listPapers); mv.addObject(listThingReason,listThingReason); return mv; } RequestMapping(/toupdate) public ModelAndView toupdate(int id){ ModelAndView mvnull; ListAttributePo listGenderattributeService.selectGender(); //性别 ListAttributePo listNationattributeService.selectNation(); //民族 ListAttributePo listPassengerLevelattributeService.selectPassengerLevel(); //旅客级别 ListAttributePo listEducationDegreeattributeService.selectEducationDegree(); //文化程度 ListAttributePo listPapersattributeService.selectPapers(); //证件类型 ListAttributePo listThingReasonattributeService.selectThingReason(); //事由 PassengerPo listpassengerService.selectById(id); mvnew ModelAndView(/passenger/update); mv.addObject(listGender,listGender); mv.addObject(listNation,listNation); mv.addObject(listPassengerLevel,listPassengerLevel); mv.addObject(listEducationDegree,listEducationDegree); mv.addObject(listPapers,listPapers); mv.addObject(listThingReason,listThingReason); mv.addObject(list,list); return mv; } RequestMapping(/add) public ModelAndView add(PassengerPo passengerPo){ ModelAndView mvnull; passengerService.insertAll(passengerPo); mvnew ModelAndView(redirect:/Passenger/tolist.do); return mv; } RequestMapping(/update) public ModelAndView update(PassengerPo passengerPo){ ModelAndView mvnull; passengerService.updateById(passengerPo); mvnew ModelAndView(redirect:/Passenger/tolist.do); return mv; } RequestMapping(/delete) public ModelAndView delete(String id){ ModelAndView mvnull; String[] FenGeid.split(,); for (int i 0; i FenGe.length; i) { passengerService.deleteById(Integer.parseInt(FenGe[i])); } mvnew ModelAndView(redirect:/Passenger/tolist.do); return mv; } ResponseBody RequestMapping(value/YZ) public Object YZ(String papersNumber){ int YorNpassengerService.selectYZ(papersNumber); Gson gson new Gson(); return gson.toJson(YorN); } }5.5 本次实验小结本次实验围绕酒店管理系统的功能实现与测试展开重点完成了房间管理、住宿管理包括客房预订与登记、旅客管理及财务管理等核心模块的编码与界面集成。通过基于Spring MVC框架的分层开发实现了对房间状态、商品信息、旅客数据和账单记录的增删改查操作并结合业务逻辑处理了如预订超时提醒、换房费用计算、团队与散客区分登记等复杂场景。同时系统通过Ajax异步交互提升了用户体验确保了前后端数据的高效同步。测试结果表明各功能模块运行稳定业务流程符合需求规格说明书的要求为系统后续部署与优化奠定了坚实基础。实验总结通过本次《酒店管理系统》系列实验我们系统地完成了从需求分析、领域建模、详细设计、数据库构建到系统实现与测试的完整软件开发流程。这一过程不仅加深了我们对软件工程各阶段任务的理解也有效提升了将实际业务问题转化为可运行软件系统的能力。在实验一需求规格说明中我们通过对酒店业务场景的深入调研明确了系统的主要功能模块和非功能性需求识别出前台员工、清洁人员、大堂经理等关键参与者并借助用例图与用例描述清晰刻画了各类用户与系统的交互逻辑为整个项目奠定了坚实的需求基础。在实验二领域模型中我们聚焦核心业务用例采用面向对象分析方法提取概念类与关键行为构建了反映业务本质的领域模型和系统顺序图。这一阶段帮助我们从纷繁的业务细节中抽象出稳定的业务对象及其关系为后续架构设计提供了语义支撑。实验三详细设计则进一步将领域模型转化为具体的软件结构。通过绘制类图和顺序图我们明确了各模块的职责划分、接口定义及交互时序实现了从“做什么”到“怎么做”的关键跨越为编码工作提供了清晰、可执行的设计蓝图。实验四系统数据库设计围绕数据持久化需求完成了从ER概念模型到逻辑表结构再到物理SQL脚本的全过程设计。12张规范化数据表及其关联关系有效支撑了旅客、房间、账单、商品等核心业务实体的存储与管理确保了数据的一致性与完整性。最后在实验五系统实现与测试中我们基于Spring MVC框架完成了主要功能模块的编码实现涵盖了房间管理、住宿登记、预订处理、旅客信息维护及消费记录等核心业务。通过前后端集成与功能测试验证了系统符合需求规格运行稳定具备良好的用户体验。综上所述本次系列实验不仅锻炼了我们在软件开发生命周期各阶段的专业技能更培养了系统化思维、团队协作与工程实践能力。所构建的酒店管理系统结构清晰、功能完整为未来进一步扩展如移动端支持、智能推荐、报表分析等打下了良好基础。若觉得有帮助欢迎点赞关注一起成长进步~声明​​本文仅供学习交流禁作商用禁篡改、歪曲及有偿传播引用需标明来源。侵权必究。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询