# ByteHotelControlSystem **Repository Path**: zhang-ruidong0319/byte-hotel-control-system ## Basic Information - **Project Name**: ByteHotelControlSystem - **Description**: 酒店信息后台管理平台 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-10-27 - **Last Updated**: 2022-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: MVC, Maven, jsp ## README # Byte酒店后台管理平台 ## 组内分工及功能实现流程 ## 房间管理 ### 新增房间 Develop By杨令 首先点击添加房间信息,提交一个get请求到RoomAddController,然后在doGet方法中请求转发到RoomAdd.jsp,添加完信息后点击提交,发送一个post请求到RoomAddController,中间经历一个过滤器,一个判断添加信息是否合法(房间号不能为空,房间号符合规则,价格符合规则),判断房间类型是否合法(房间类型是否存在)。不合法则封装错误信息,请求转发到RoomAdd.jsp,合法则放到RoomAddController,调用RoomService和CategoryService。调用RoomService,调用RoomDao,查询房间号(ID)是否已经占用,如果被占用则封装错误信息,显示在表单(失去焦点)。调用CategoryService,调用CategoryDao,显示下拉框,选择已存在的房间类型。点击添加,调用RoomService的addByAdd(Room room)方法将数据存入数据库中,然后控制器里跳转到添加成功页面。 ### 根据状态信息查询房间信息 Develop By黄金 \1. 分页查询房间信息 页面发出GET请求到Controller,控制器接收数据后,调用Service方法,由Service调用Dao方法进行房间信息分页查询,Dao返回分页查询的结果,在Service方法中封装到Page对象中,最后将查询到的结果封装到请求中,跳转页面。 \2. 分页查询房间状态 页面发出GET请求到控制器,接收参数后判断要查询的房间状态(0为空房,1为已入住),然后控制器调用Service方法,由Service方法调用Dao方法对房间状态为空房的所有房间进行分页查询,返回Dao方法查询到的结果,将结果封装到Page对象中,返回结果封装到请求中,roomList.jsp。 ### 根据房间号查询房间信息 Develop By黄金 页面发出GET请求,控制器接收请求后接收参数,根据参数调用Service中的方法,由Service方法调用Dao方法进行查询,将查询到的结果返回到控制器中,封装结果到请求中,跳转到roomList.jsp。 ### 删除房间信息 Develop By杨令 提交一个get请求到RoomDeleteController,然后在调用RoomService的RoomDeleteById,调用RoomDao的RoomDeleteById(Integer id)方法根据ID逻辑删除房间信息,在返回信息到RoomDeleteController,发送post请求到RoomListController。 ### 修改房间信息 Develop By杨令 提交一个get请求到RoomListController,然后到RoomList.jsp,调用RoomUpdateController,在调用RoomService中的findListByRoom()方法,地调用RoomDao,到数据库中查找。在返回信息到RoomUpdateController,在到发送Update.jsp,发送post请求到RoomUpdateController,在调用RoomService中的updateListByRoom()方法,地调用RoomDao,到数据库中查找。返回信息到RoomUpdateController,判断是否修改成功,如果成功则跳到RoomList.jsp,否则再重新跳到update.jsp进行修改。 ## 管理员管理 ### 管理员登录 Develop By覃毅 login.jsp发出请求后经过过滤器,判断是否为”post”请求,是”post”请求则判断输入的用户名、密码和验证码是否合法,合法把请求发送到AdminController控制器,不合法跳回login.jsp页面重新输入。如果是”get”请求,则过滤器允许直接把请求发送到AdminController控制器,控制器再判断请求类型。 到AdminController控制器的如果是”get”请求则跳回login.jsp页面。如果是”post”请求,则调用service方法,service方法调用dao方法,dao方法调用DBHelper去获取数据库中管理员的信息,把得到的管理员信息和提交的管理员信息对比。如果数据库中没有提交的管理员信息,则跳回login.jsp页面,如果有管理员信息则调到主页面。 ### 修改管理员密码 Develop By覃毅 发送”get”请求到AdminFindController控制器,调用service方法,service方法调用dao方法,dao方法调用DBHelper获取数据库中要修改管理员的信息,把得到的数据和请求发送到AdminUpdateController控制器。 AdminUpdateController控制器判断修改的新密码是否与旧密码相同,相同则重新填写,不相同则调用service方法把新密码持久化到数据库中,并跳转回首页。 ### 新增管理员 Develop By覃毅 页面使用Ajax发出请求,请求到达AdminCheckNameController控制器,控制器根据提交的数据,调用service方法对比数据库中是否存在刚提交的管理员数据,如果没有则请求AdminAddController控制器,如果有管理员存在则跳回AdminAdd.jsp页面。 AdminAddController控制器调用service方法,把提交的数据通过dao方法调用DBHelper保存到数据库,实现新管理员的持久化。 ## 会员管理 ### 新增会员 Develop By张睿东 从页面获得get请求后,访问到添加会员信息控制器AddVipController,doGet方法中使用请求转发到静态页面addVip.jsp中,表单post提交到AddVipController,先通过过滤器判断数据是否合法,若不合法则给出错误提示,若合法则到控制器的doPost方法中获取表单提交参数,设置成实体类对象的相应属性,并的调用AddService中的XXX方法,该方法继续调用AddDao中的XXX方法,利用sql语句使用DBHelper对实体类对象的各个属性装换为相应字段值存储到数据库Vip表 ### 查看所有会员 Develop By张睿东 获得get请求,从请求页面跳转到查找会员信息控制器,请求经过VipService和VipDao对数据库内的数据库进行查询,再将查询到的结果反向返还给控制器,反馈显示在请求页面上。 ### 删除会员 Develop By张欣雨 通过vipList.jsp上的删除按钮,向DeleteVipController发送一个get请求,doGet方法调用doPost方法,doPost中利用DeleteVipService类的对象调用deleteVipById方法,该方法内是使用DeleteVipDao类的对象调用其deleteVipById方法,deleteVipById方法内调用了DBHelper工具类的executeUpdate方法,并向其传入写好的sql语句,以及VipId两个参数,DBHelper执行完sql语句,将数据库中该条数据物理删除后,DeleteVipController再进行重定向访问vipListController发送get请求。 ### 修改会员信息 Develop By张睿东 通过vipList.jsp页面点击会员记录上的修改按钮,向VipFindController发送get请求,doGet请求中调用doPost方法,在该方法中获取到id并将id作为参数使用VipService中的findVipById方法,继续调用VipDao的findVipById方法,通过DBHelper访问数据库中该条记录,并将信息封装进实体类Vip的对象中,传递返回给控制器,控制器使用请求转发跳转至vipUpdate.jsp页面,该页面显示出实体类对象中的相关信息,用户可以进行修改,当表单提交时,发送了一个post请求至VipUpdateController,再此之前会先通过过滤器检查数据提交是否合法,若不合法则给出提示信息,若合法则发送至控制器doPost方法,其调用VipService中的update方法,继续调用VipDao的update方法,通过DBHelper修改数据库中该条记录。 ## 住户管理 ### 添加住户 Develop By兰昊 首先点击添加入住信息,提交一个get请求到AddUserMessageController,然后在doGet方法中请求转发到addUserMessage.jsp ,添加完信息后点击提交,发送一个post请求到AddUserMessageController , 中间经过一个过滤器 判断添加信息是否合法(信息不为空,身份证号符合规则,手机号符合规则,)不符合则封装错误信息,请求转发到addUserMessage.jsp , 合法则放行到AddUserMessageController,调用,VipService 和RoomService,VipService 调用VipDao,查询用户是否为vip ,RoomService调用RoomDao,获取房间价格,查询房间是否存在且是否已入住(防止前台小姐姐输入房间号错误。ajax)如果为vip,页面上显示该用户为vip并打八折,如果房间不存在,封装错误信息,显示在表单(失去焦点),然后点击添加,调用UserMessageService的addUserMessage(User user)方法,调用User MessageDao 的同名方法,将数据存入数据库中。然后在控制器里跳转到入住成功页面。 ### 查询住户(正在住宿) Develop By张欣雨 Index.jsp点击查看入住用户信息时,向UserMessageListController发送一个get请求,doGet方法调用doPost方法,doPost中利用UserMessageService类的对象调用findbyPage方法,该方法内是封装了页码条数等数据,并使用UserMessageDao类的对象调用其findbyPage方法,findbyPage方法内调用了DBHelper工具类的executeQuery方法,通过向其传入写好的sql语句,类对象、数组(当前页码的第一条记录所在条数、以及每页显示的总条数、房间状态为已入住)三个参数,DBHelper执行sql语句对数据查询完毕后,将数据库中符合条件的数据列表返回,在UserMessageService类中把数据封装成Page对象,返回给UserMessageListController再进行请求转发至UserMessageList.jsp将数据分页显示出来。 ### 住户退房 Develop By张欣雨 通过userMessageList.jsp上的退房按钮,向UpdateUserMessageController发送一个get请求,doGet方法调用doPost方法,doPost中利用UpdateUserMessageService类的对象调用update方法,该方法内是使用UpdateUserMessageDao类的对象调用其update方法,update方法内调用了DBHelper工具类的executeUpdate方法,并向其传入写好的sql语句,以及orderId两个参数,DBHelper执行完sql语句,将数据库中该条用户数据的状态由未退房改为已退房并将所住房间的状态信息从已入住改为空房后,UpdateUserMessageController再进行重定向访问UserMessageListController发送get请求。 ### 查询所有住户信息(所有住过的人)Develop By兰昊 点击查询所有订单信息,发送一个get请求到UserMessageAllListController 调用UserMessageService中UserMessageDao对象中的findAllUserMessageByPage方法查询所有订单信息返回给UserMessageService一个list 集合,在UserMessage 中通过得到的page信息将list封装进page对象返回给UserMessageAllListController,通过UserMessageAllListController请求转发到userMessageAllList.jsp。 ## 房间分类管理 ### 添加房间类型 Develop By黄金 页面发出get请求到控制器,doGet方法跳转到addRoomCategory.jsp;表单提交数据发出POST请求,在请求到达控制器之前,经过RoomCategoryFilter,如果请求中的分类名为null的话,就跳转到addRoomCategory.jsp,如果分类名不为null的话让请求通过,到达控制器,Controller调用Service中的方法,判断分类是否已经存在,如果存在的话,跳转到addCategory.jsp,提示该分类已存在,如果不存在的话再次调用service方法,由service调用Dao方法,返回结果到控制器,封装结果,跳转到roomCategory.jsp。 ### 删除房间类型 Develop By张睿东 页面发出GET请求到控制器,控制器接收到请求后,接收参数,调用RoomCategoryService方法,由该方法调用RoomCategoryDao方法根据id对分类信息进行删除,删除后,跳转到roomCategoryList.jsp页面。 ### 修改房间类型 Develop By黄金 页面发出GET请求到控制器,控制器中doGet方法处理get请求,请求转发到updateRoomCategory.jsp,表单提交数据发出POST请求,请求结果RoomCategoryFilter,如果请求中的分类名为null的话,就跳转到updateRoomCategory.jsp,如果分类名不为null的话让请求通过,到达控制器,Controller调用Service中的方法,判断分类是否已经存在,如果存在的话,跳转到updateRoomCategory.jsp,提示该分类已存在,如果不存在的话再次调用service方法,由service调用Dao方法,返回结果到控制器,封装结果,跳转到roomCategory.jsp。 ### 查看房间类型 Develop By兰昊 页面发出GET请求到控制器,控制器调用RoomCategoryService方法,由RoomCategoryService方法调用RoomCategoryDao方法,查找出所有的房间类型,返回查询结果到控制器中,跳转到roomCategoryList.jsp