xxx租房系统

使用技术

前端:

  1. HTML
  2. CSS
  3. JavaScript(Ajax,Jquery)
  4. Bootstrap

后端:

  1. SpringMVC
  2. Sping
  3. MyBatis
  4. JSP

项目已上传码云仓库:
https://gitee.com/lkfi/xinyuan-rental-system


各功能实现

登陆功能
1,提交方式:使用基本的表单提交方式,使用name属性与Model数据进行匹配

2,登陆验证逻辑:根据用户提交的数据对数据库进行查找操作,如果有匹配的数据则表示账号密码正确,返回用户信息并存入session域对象,方便后续数据复用

3,登陆拦截器:没有登陆的情况下不允许访问租房主页,拦截器逻辑是判断session域内是否存在用户信息对象,存在则允许访问,不存在则跳转到登录页

注册功能
1,提交方式:使用基本的表单提交方式,使用name属性与Model数据进行匹配

2,注册验证逻辑:根据用户提供的表单对数据库进行增加操作,增加之前会在后端判断输入的账号是否已经在数据库中存在,如果已存在则不允许注册成功

租房主页
1,用户访问时:会从数据库获取所有可租借(包括已被预约的)的房间存入sesion域对象,之后使用EL表达式+JSTL标签库的for循环将其全部显示在页面

2,根据房间类型显示房间:与主页面(shop.jsp)并不是同一个页面,访问该页面时会先触发后端业务:根据指定的房间类型查找数据库相应的房间,并存储在新的session下,最终返回到新页面后利用EL表达式+JSTL标签库的for循环将其全部显示在页面

3,查看自己预约的房间与已经入住的房间:依然分别是独立的jsp文件,根据在登陆功能中提到的存储在session域对象的信息来查询预约的房间和已经入住的房间

预约与入住/退房
1,预约功能
使用Ajax进行提交,提交信息是指定的房间的编号(number),后端首先会查看该房间的状态是否为0(未出租),再通过该房间的编号信息获取其预约者的信息(获取预约者的rank(等级)信息),之后再获取当前用户的数据信息(获得该用户的rank(等级)信息),判断当状态等于0或者该用户等级高于预约者,则预约成功,否则预约失败,提示该房间已经被预定

逻辑或||,我使用的是短路或,并将判断该房间状态的逻辑放在了前面,否则当状态为0继续比较用户等级可能会引起报错,因为获取到的预约者对象是空的

如果是通过抢房的方式,则会给被抢者的表数据变成1,当该用户登陆时,会进行一次判断,如果那个字段为1,则提示用户被抢房,并将数据变成0

原本这个逻辑可以也可以是让信息提示直接存入到数据表中,并且总体上更能让人理解

预约成功后会将用户的账号和名称信息写入该房间的表字段,以此来连接房间与租房人的关系,同时也会改变房间的状态(除非是抢来的)

2,入住与退房功能
入住与退房的前提要求是预约,因此该程序前端入口只在预约页面显示,入住的逻辑并不多,只是将房间的状态改成2而言,相对的退房则是将房间的状态改成0并将该用户的表字段数据清空即可,但是入住时,其实还需要记录此次交易记录,因此入住时还需要写支付记录的业务逻辑:入住时,将交易人,交易时间,交易金额,交易人的id(当时考虑的不成熟,应该记录交易人的账号的)和房间的编号记录到数据库

后台管理员功能
1,登陆与页面显示:
1,没有注册程序,因为登陆使用的统一密码,不需要账号,反正我直接在后台设置的10086(小声bb),显示方面的逻辑与租房主页的业务逻辑差不多,管理员可以看到所有用户和房间以及交易记录,首先显示的是所有房间,然后我没有写分页功能(卑微.jpg)
2,关于显示,比如我在表数据中存储的房间的状态是数字,但我不希望他显示数字,而是显示为未出租或者洽谈中之类的,那么则只需要使用JSTL表达式中的if判断,状态分别是1,2,3时,应该显示的不同的信息即可

,2,切换查看的信息类型(房间,用户,交易记录):
页面都是互相独立的,并不是同一个页面,业务逻辑的实现与租房首页下的根据房间类型显示房间类似,只不过房间,用户,交易记录所使用的数据表并不是同一张,所以业务逻辑会更简单

3,添加新房间:
管理员可以添加新房间,业务逻辑就是类似于用户的注册的表添加功能,同时新房间的编号不允许已经存在,添加之前会使用提交的编号去数据表上匹配,没有匹配的编号才允许注册

4,修改与删除用户/房间:

1,通过表单提交的数据进行修改,虽然提交表单时没有提交该用户或房间的编号,但在单击修改时,会记录该用户/房间的编号到sesion域对象,因此才能精确指定
2,无法对已经出租的房间进行修改或删除,因此在执行对房间的修改或删除时,会首先判断该房间是否小于2
3,交易记录信息只读,不允许修改

5,查询功能:
只编写了用户与房间的查询功能,用户的查询使用的是账号查询,房间查询使用的是编号查询,业务逻辑是根据用户输入在表单上的值对数据库进行查询

其他
1,修改数据库后页面刷新
预约,入住,退房以及管理员的对数据库进行更新的一系列的操作,都无法立即返回到页面上,JSP没有那么乖,因此如果需要得到立即的页面反馈,则需要在这类操作后重新从数据库get数据,并刷新页面
2,用户的退出功能
用户退出后会删除sesion域内数据并进入登陆页面,此刻需要重新登陆,否则无法访问租房页面


总结

实现了基本的功能,但基本上没有功能扩展,项目文件的内部结构有点混乱,代码和实现有点臃肿,有很大的优化空间,功能实现可能存在BUG(大家就当无事发生 )。前端页面写的跟十几年前的似的(看到其他人写的前端页面,我直接就卑微了)…
反正,前端页面是真的做的没眼看

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值