Springboot开发的大学生宿舍共享厨房系统宿舍自习室宿舍洗衣房系统寝室系统技术文档论文功能部分
分类: Java springboot 专栏: java springboot 标签: 技术文档
2024-01-13 21:38:41 416浏览
第三章
本系统采用Java语言开发,后端使用springboot框架开发,使用MySQL数据库存储数据,前端使用jsp页面,前端框架使用响应式框架bootatrap布局。本章将简单介绍所使用的技术及其理论依据。
3.1springboot介绍
SpringBoot 是一个javaweb的开发框架,简化开发,几行代码开发一个http接口。为了让大家更容易的使用 Spring 、更容易的集成各种常用的中间件、开源软件 。SpringBoot的主要优点: 为所有Spring开发者更快的入门; 开箱即用,提供各种默认配置来简化项目配置; 内嵌式容器简化Web项目; 没有冗余代码生成和XML配置的要求。
3.2mysql的使用
MySQL是⼀个关系型数据库管理系统,MySQL的特点: 使⽤C和C++编写,并使⽤了多种编译器进⾏测试,保证源代码的可移植性,⽀持多种操作系等;多种编程语⾔提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等;⽀持多线程,充分利⽤CPU资源;)优化的SQL查询算法,有效地提⾼查询速度;提供多语⾔⽀持,常⻅的编码如GB2312、BIG5、UTF8;提供TCP/IP、ODBC和JDBC等多种数据库连接途,提供⽤于管理、检查、优化数据库操作的管理⼯具,⼤型的数据库。可以处理拥有上千万条记录的⼤型数据库,⽀持多种存储引擎, MySQL 软件采⽤了双授权政策,它分为社区版和商业版,由于其体积⼩、速度快、总体拥有成本低,尤其是开放源码这⼀特点,⼀般中⼩型⽹站的开发都选择MySQL作为⽹站数据库,MySQL使⽤标准的SQL数据语⾔形式,Mysql是可以定制的,采⽤了GPL协议,你可以修改源码来开发⾃⼰的Mysql系统,在线DDL更改功能,开源 免费 不要钱 使⽤范围⼴,跨平台⽀持性好,提供了多种语⾔的调⽤API。
3.2bootatrap的使用
Bootstrap 是全球最受欢迎的前端开源工具库,它支持 Sass 变量和 mixin、响应式栅格系统、自带大量组件和众多强大的 JavaScript 插件。基于 Bootstrap 提供的强大功能,能够让你快速设计并定制网站。
第四章
本系统主要是针对学生宿舍内的共享厨房、自习室打卡、洗衣房的电器设备使用的大学生宿舍管理公寓。又管理员管理用户、学院、专业、学生、宿舍这些基本信息。给学生分配宿舍、给公寓建立共享厨房、自习室和洗衣房等。学生登录本系统后,可查看该宿舍楼栋里的厨房自习室、洗衣房等信息,并进行使用评价维修报备等。
主要功能分为两反面,学生和管理员:
学生功能如下:
登录注册;
预约支付共享厨房以及评价;
自习室打卡以及评价;
洗衣房里的洗衣机电吹风电器的投币使用以及评价保修。
个人中心。
管理员功能如下:
(1)登录;
(2)用户管理;
(3)学生学院专业班级基本信息管理;
(4)公寓管寝室管理;
(5)电器设变管理以及维修。
4.2数据库er图
4.3数据库字典
sr_user用户表
id | 主键,int | ||
realname | 姓名 | ||
sex | 性别 | ||
borth | 出生生日 | ||
role | 角色 | admin超级管理员 apartment 宿管
| |
position | 职位 | ||
uno | 工号,用于登录 | ||
upass | 密码 | ||
cts | 创建时间 | ||
status | 状态1启用0禁用 | ||
msg | 禁用理由 | ||
status_ts | 禁用启用时间 | ||
college_id | 外键,int | 学院id | |
udesc | Longtext | 简介 | |
Phone | 电话 | ||
Tel | 宿舍电话 | ||
photo | 电子照片 |
sr_college学院
Id | Int,主键 | |||
College | 学院名称 | |||
cts | 创建时间 |
sr_major专业
Id | Int,主键 | ||
major | 专业名称 | ||
cts | 创建时间 | ||
college_id | Int外键 | 学院id |
班级表sr_class
Id | Int,主键 | ||
Cname | 班级名称 | ||
Cts | 创建时间 | ||
Maror_id | Int,外键 | 专业id |
学生表sr_student
Id | 主键id,int | ||
Sno | 学号,用于登录 | ||
Upass | 密码 | ||
Sex | 性别 | ||
Borth | 出生生日 | ||
Realname | 姓名 | ||
Cts | 创建时间 | ||
Major_id | 外键,int | 专业id | |
photo | 电子照 | ||
class_id | 外键,int | 班级id | |
room | 宿舍房间号 | ||
room_id | 外键,int | 房间id | |
Phone | 手机号 | ||
wx | 微信号 |
公寓sr_department
Id | 主键id,int | ||
dname | 公寓名称 | ||
cts | 创建时间 | ||
user_id | 管理员id | ||
ddesc | 描述,男寝,女寝 | ||
num | 每个房间入住人数 |
公寓房间sr_room
id | 主键id,int | ||
room | 房间号 | ||
department_id | 外键id ,int | 公寓id | |
cts | 创建时间 | ||
num | 已入住人数 | ||
students_id | 已入住学生id,用[]分割 | ||
students_info | 已入住学生姓名和学号描述,逗号分割 | ||
Loader_id | 寝室长id | ||
Loader_info | 寝室长信息 | ||
note | 备注 | ||
Type | 房间类型 | Ss宿舍,xyj洗衣房,cf厨房,zxs自习室 |
厨房预约sr_room_app
Id | 主键id,int | ||
sid | 外键id ,int | 学生id | |
adate | 预约日期 | ||
Start_ts | 开始时间 | ||
End_ts | 结束时间 | ||
cts | 创建时间 | ||
money | 总价 | ||
Room_info | 厨房地址 | ||
price | 单价 | ||
hours | 时长 | ||
Is_show | 删除状态 | 1显示0删除 | |
Room_id | 外键id ,int | 房间id | |
Is_pj | 评价状态 | 0待评价1已评价 | |
Pj_ts | 评价时间 | ||
pj | 评价内容 |
自习室打卡记录sr_room_clock
Id | 主键id,int | ||
sid | 外键id,int | 学生id | |
Room_info | 自习室地址 | ||
Start_ts | 打卡时间 | ||
End_ts | 离开时间 | ||
cdate | 打卡日期 | ||
cts | 创建时间 | ||
Room_id | 外键id,int | 房间id | |
pj | 评价状态 | 0待评价1已评价 | |
pj_ts | 评价时间 | ||
Is_pj | 评价内容 |
电器设备sr_equipment
Id | 主键id,int | ||
Dep_id | 外键id,int | 公寓id | |
etype | 电器类型 | Xyj洗衣机cfj电吹风 | |
cts | 创建时间 | ||
Start_ts | 使用开始时间 | ||
End_ts | 使用结束时间 | ||
state | 状态 | 0正常1使用中-1维修中 | |
eno | 编号 | ||
Room_id | 外键id,int | 房间id | |
Use_date | 使用日期 |
电器使用记录sr_equipment_fee
id | 主键id,int | ||
Sid | 外键id,int | 学生id | |
Room_id | 外键id,int | 房间id | |
Room_info | 房间地址 | ||
cts | 创建时间 | ||
money | 总价 | ||
etype | 电器分类 | Xyj洗衣机cfj电吹风 | |
pj | 评价内容 | ||
eid | 外键id,int | 电器id | |
Is_pj | 评价状态 | 0待评价1已评价 | |
eno | 电器编号 | ||
Pj_ts | 评价时间 |
第五章
注册功能的设计与实现
学生可以输入自己的学号选择寝室进行注册。页面请求实现原理:用户点击导航注册链接,通过a标签, 页面会自动跳转/web/student/toreg控制器, 通过WebSrStudentController.toreg(),最终跳到webapp/web/reg.jsp页面 ,如图所示
当用户按表单输入完成后,点击“注册”按钮,表单提交到/web/student/reg控制器,查询学号唯一性,调用studentService.insert()进行数据添加操作,最终注册成功,并返回前端。代码如下:
登录功能的设计与实现
学生可以输入自己的学号和密码进行登录。页面请求实现原理:用户点击导航登录链接,通过a标签, 页面会自动跳转/web/student/tologin控制器, 通过WebSrStudentController.tologin(),最终跳到webapp/web/login.jsp页面 ,如图所示
当用户按表单输入完成后,点击“立刻登录”按钮,表单提交到/web/student/login控制器,调用studentService.list()方法,根据学号和密码进行数据库查询,根据返回结果是否为空判断登录与否,若存在登录成功后将该登录用户信息存入session中。代码如下:
厨房预约设计与实现
学生点击导航厨房预约链接,通过a标签, 页面会自动跳转/web/room/cfpage控制器, 通过WebSrRoomController.cfpage(),最终跳到webapp/web/cf_room_page.jsp页面 ,如图所示
WebSrRoomController.cfpage()根据session获取当前登录学生的宿舍楼栋信息,使用roomService.list()根据楼栋id查询该寝室楼所开设的厨房数据,并利用pageHelper插件进行分页。代码如下:
学生可点击预约按钮进行预约,页面如下:
学生可选择预约日期,做饭时间和时长,此时会利用ajax查询该时间段内类是否冲突预约,并将结果返回页面,提示用户,代码如下:
给表单添加change事件监听用户输入值,请求/web/roomapp/canapp控制器进行数据库查询,使用roomappService查询出该日期内所有的预约数据,然后根据做饭的开始时间和结束时间判断,若存在时间交集则时间冲突,预约失败,否则该时间段内可预约。代码如下:
用户点击确定支付按钮,系统会将整个弹出框里的表单进行提交至/web/roomapp/save控制器,根据sesion获取当前学生id,调用roomappService.insert()进行数据添加操作,并直接跳转”我的厨房预约”页面,代码如下:
厨房评价查看
学生也可以查看某厨房的评价信息,页面请求路径/web/roomapp/pjpage?room_id=厨房id,页面如下:
该页面请求实现原理,点击进入对应的WebSrRoomappController.pjpage()控制器,查询已经评价并且未删除的评价数据。is_pj表示评价状态:0待评价1已评价。调用roomappService.lsit()查询,使用pagehelper插件分页。调用roomSrtvice.getById()查询厨房信息并展示到页面:代码如下:
自习室的设计与实现
学生点击”自习室打卡“链接,请求路径/web/room/zxspage,进入自习室页面,效果图如下:
学生可以根据房间号查询,分页,点击“进入打卡”按钮。该模块实现过程如下:进入对应的WebSrRoomappController.zxspage()控制器,根据session获取该学生所在宿舍楼栋信息,根据roomService.list()查询该楼栋的所有自习室,并使用pagehelper进行分页,代码如下:
查询数据后使用for遍历,查询该学生是否存在“进入打卡”的记录,若存在则在页面显示“离开打卡”的按钮,否则只显示“进入打卡”按钮。
自习室进入和离开打卡的设计与实现
学生点击“进入打卡”按钮,请求路径web/roomclock/save?room_id=自习室id,进入WebSrRoomclockController.save()方法进行插入操作,从而实现打卡成功。点击“离开打卡”按钮,请求web/roomclock/save?id=打卡id,进入WebSrRoomclockController.save()方法进行更新操作,从而实现离开打卡成功。 代码如下:
根据是否传入roomclock的id来判断,学生是进入打卡还是离开打卡,若id等于null,则表示进入打卡,调用roomclockService.insert()进行插入操作,否者调用update()方法更新离开打卡的时间。
自习室评价查看
学生也可以查看某自习室的评价信息,页面请求路径/web/roomclock/pjpage?room_id=自习室id,页面如下:
该页面请求实现原理,点击进入对应的WebSrRoomclockController.pjpage()控制器,查询已经评价的数据。is_pj表示评价状态:0待评价1已评价。调用roomclockService.lsit()查询,使用pagehelper插件分页。调用roomSrtvice.getById()查询自习室信息并展示到页面:代码如下:
洗衣房功能的设计与实现
宿舍楼每层有1-2个洗衣房,洗衣房内设有几台洗衣机和几个电吹风,学生支付后次啊可使用,洗衣机40分钟3元,电吹风半小时1元。学生也可以进行维修报备。请求路径/web/room/xyfpage,页面如下:
进入WebRoomController.xyfpage(),根据session查询出当前学生的宿舍楼栋id,调用roomService.list()查询对应楼栋的洗衣房数据,然后遍历查询该洗衣房包含的洗衣机数据和电吹风数据,并传给前台。代码如下:
洗衣机和电吹风均属于电器设备,使用etype字段标识,xyj表示洗衣机,cfj表示电吹风。电器设备存在损坏维修等情况,所以设计了一个state状态的字段:0表示正常,1表示使用中,-1表示损坏待维修。正常状态学生可投币使用或者点击维修报备,-1则不能使用。
投币使用的设计与实现
学生点击投币使用,则请求/web/equipmentFee/save?eid=电器设备id,调用WebSrEquipmentFee.save()实现。调用EquipmentFeeService.insert()进行添加。然后将该设备的状态改成使用中,并将该设备使用的开始时间和结束时间存入数据库。该字段方便调用EquipmentStateUntils.Change()方法根据使用日期和时间自动更改设备的状态,到点自动将设备的状态由使用中改为正常可使用状态,方便其他学生投币使用。代码如下:
设备评价查看
学生也可以查看某设备使用的评价信息,页面请求路径/web/equipmentFee/pjpage?eid=设备id,页面如下:
该页面请求实现原理,点击进入对应的WebSrEquipmentFeeController.pjpage()控制器,查询已经评价并且未删除的评价数据。is_pj表示评价状态:0待评价1已评价。调用EquipmentFeeService.lsit()查询,使用pagehelper插件分页。调用EquipmentSrtvice.getById()查询设备信息并展示到页面:代码如下:
个人中心的设计与实现
学生个人中心主要功能有:我的预约厨房、自习室打卡记录、设备使用记录、修改登录密码、我的个人信息、修改密码、退出登录。
1.1我的预约厨房
学生可以看到自己支付成功的厨房预约信息,使用完厨房后可以进行评价或者删除。页面如下:
请求路径/web/roomapp/page,调用WebSrRoomappController.page(),根据session获取当前登录学生的id,调用roomappService.list()获取该学生的预约厨房的记录,使用pagehelper插件分页,由于预约具有时效性,只有使用过厨房后的学生才可以评价,所以遍历数据,根据使用结束时间判断该学生是否已结束预约,如果预约结束,则前台出现评价按钮。代码如下:
当学生点击评价按钮,这出现评价建议弹框,如下图:
当学生输入评价建议后点击学的按钮,请求/web/roomapp/update?id=预约厨房记录id&pj=评价建议内容&is_pj=1,调用WebSrRoomappContrller.update()实现记录的更新,更改is_pj为1,代码如下:
学生也可以删除该记录,本功能设计的是假删除,使用is_show表示是否删除,is_show等于1表示正常展示,0表示已删除,点击删除按钮,请求/web/roomapp/del?id=预约厨房记录id,调用WebSrRoomappContrller.del()更新is_show等于0,即为删除。代码如下:
1.2自习室打卡记录的设计及与实现
学生可以查看自己的自习室打卡记录,并且可以点击离开打卡,使用完自习室后可以进行评价或者删除。页面如下:
请求路径/web/roomclock/page,调用WebSrRoomclockController.page(),根据session获取当前登录学生的id,调用roomclockService.list()获取该学生的自习室打卡的记录,使用pagehelper插件分页。代码如下:
当学生点击评价按钮,这出现评价建议弹框,如下图:
当学生输入评价建议后点击学的按钮,请求/web/roomclock/update?id=自习室打卡记录id&pj=评价建议内容&is_pj=1,调用WebSrRoomclockContrller.update()实现记录的更新,更改is_pj为1,代码如下:
学生也可以删除该记录,请求/web/roomclock/del?id=自习室打卡记录id,调用WebSrRoomappContrller.del()根据id删除。代码如下:
学生也可以点击“离开打卡”,记录自己的离开时间,请求web/roomclock/save?id=自习室打卡记录id,根据id不为空,设置离开时间并更新数据库,代码如下:
1.3我的设备使用记录的设计及与实现
学生可以查看自己的设备使用记录,使用完自习室后可以进行评价或者删除。页面如下:
请求路径/web/equipmentFee/page,调用WebSreEquipmentFeeController.page(),根据session获取当前登录学生的id,调用equipmentFeeService.list()获取该学生的设备使用的记录,使用pagehelper插件分页。代码如下:
当学生点击评价按钮,这出现评价建议弹框,如下图:
当学生输入评价建议后点击学的按钮,请求/web/equipmentFee/update?id=设备使用记录id&pj=评价建议内容&is_pj=1,调用WebSrEquipmentFeeContrller.update()实现记录的更新,更改is_pj为1,代码如下:
学生也可以删除该记录,请求/webequipmentFee/del?id=设备使用记录id,调用WebSrEquipmentFeeContrller.del()根据id删除。代码如下:
1.4修改登录密码
学生也可以修改自己的登录密码,输入原密码,新密码,确认密码,点击“确定修改”密码即可修改成功,页面如下:
学生点击提交,表单请求路径/web/student/savepwd,进入WebSrStudentController.savepwd()方法,根据session获取当前登陆的学生id,获取他的原密码对比输入是否正确。然后判断新密码是否一直,调用studentService.update()更新学生密码。代码如下:
1.5我的个人信息
学生也可以查看自己的基本信息,修改自己的基本信息,上传头像,页面如下:
学生点击头像可直接选择图片上传,页面使用隐藏的form表单提交二进制文件,表单请求路径/web/student/upphoto,进入WebSrStudent.upphoto()方法,根据session获取当前登陆的学生id,调用UploadFile.upimg( MultipartFile file,HttpServletRequest request,String package1)上传图片至服务器,并将图片路径返回,代码如下:
学生也可以点击修改按钮单个修改自己的微信电话等。请求路径/student/upinfo?n字段属性=s值,进入WebSrStudent.upinfo()方法,根据session获取当前登陆的学生id,调用studentService.update()更新对应的字段 ,代码如下:
1.6退出登录
学生点击退出登录按钮,页面将跳入登录页面,请求路径/web/student/logout,进入WebSrStudentController.logout()方法,移除session里的学生实体,代码如下:
管理员
管理员功能包括:登录、用户管理、学院管理、专业管理、班级管理、学生管理、公寓管理、设备管理、个人基本信息、修改密码、退出登录。
1.1管理员登录
请求路径/jsp/user/tologin,页面如下:
输入管理员账号和密码,进入SrUsersController.login(),调用usersService.list()查询工号和密码,根据结果是否为空来判断是否能登录,并把成功登录的user数据存入session,代码如下:
1.2用户管理
管理员可对用户进行添加、查询、编辑、禁用、启用账号、初始化密码。页面如下:
调用usersController.page()使用userService.list()进行查询,使用pageHelper插件分页,代码如下:
添加编辑用户信息页面如下:
由于工号是登录使用,必须保持其唯一性,当表单提交请求/jsp/user/save,根基id是否为null,判断当前是添加还是编辑操作。Id为空表示添加,不为空表示更新,代码如下:
为了方便管理员管理用户,可对账号进行禁用启用操作。禁用的账号将不可以登录该系统。使用status标识,1表示账号正常,0表示已禁用。代码如下:
为了防止由用户忘记密码,设计了初始化密码的功能,管理员点击后会将该用户的密码初始化为123456,代码如下:
1.3学院管理
管理员可以对学院进行添加、编辑、删除和搜索,页面如下:
调用collegeController.page()使用collegeService.list()进行查询,使用pageHelper插件分页,代码如下:
添加编辑学院信息页面如下:
当表单提交请求/jsp/college/save,根基id是否为null,判断当前是添加还是编辑操作。Id为空表示添加,不为空表示更新,代码如下:
删除学院代码如下:
1.4专业管理
管理员可以对专业进行添加、编辑、删除和根据学院和选专业名称搜索,页面如下:
调用majorController.page()使用majorService.list()进行查询,使用pageHelper插件分页,由于页面上课根据学院查询,所以提前把所有的学院数据也查询出来。代码如下:
添加编辑专业信息页面如下:
当表单提交请求/jsp/major/save,根基id是否为null,判断当前是添加还是编辑操作。Id为空表示添加,不为空表示更新,代码如下:
删除专业代码如下:
1.5班级管理
管理员可以对班级进行添加、编辑、删除和根据学院和专业、班级名称搜索,页面如下:
调用classController.page()使用classService.list()进行查询,使用pageHelper插件分页,由于页面上课根据学院查询,所以提前把所有的学院数据也查询出来。代码如下:
添加编辑班级信息页面如下:
当表单提交请求/jsp/class/save,根基id是否为null,判断当前是添加还是编辑操作。Id为空表示添加,不为空表示更新,代码如下:
删除班级代码如下:
1.6学生管理
管理员可以对学生进行添加、编辑、删除和根据学院和专业、班级姓名等搜索,页面如下:
调用studentController.page()使用studentService.list()进行查询,使用pageHelper插件分页,由于页面根据学院查询,所以提前把所有的学院数据也查询出来。代码如下:
添加编辑学生信息页面如下:
当表单提交请求/jsp/student/save,根基id是否为null,判断当前是添加还是编辑操作。Id为空表示添加,不为空表示更新,同时还要判断学号唯一性,代码如下:
删除学生代码如下:
1.7公寓管理
管理员可以对公寓进行添加、编辑、删除、搜索,同时也可以进行寝室房间管理和学生住寝分配。页面如下:
调用departmentController.page()使用departmentService.list()进行查询,使用pageHelper插件分页 。代码如下:
添加编辑公寓信息页面如下:
当表单提交请求/jsp/department/save,根基id是否为null,判断当前是添加还是编辑操作。Id为空表示添加,不为空表示更新,同时还要判断学号唯一性,代码如下:
删除公寓代码如下:
寝室房间管理,页面如下:
管理员可以快速生成房间,可以添加洗衣房,自习室,厨房,普通宿舍,一级给宿舍分配学生,页面如下:
1.8设备管理
管理可以对电器设备能够进行添加、编辑、删除、维修搜索等操作,页面如下:
调用equipmentController.page()使用equipmentService.list()进行查询,使用pageHelper插件分页 .代码如下:
添加编辑设备信息页面如下:
当表单提交请求/jsp/equipment/save,根基id是否为null,判断当前是添加还是编辑操作。Id为空表示添加,不为空表示更新,同时还要判断学号唯一性,代码如下:
删除设备代码如下:
1.8个人基本信息
请求路径/jsp/user/info,可查看当前用户的个人基本信息,页面如下:
请求usersController.info()根据session获取用户id,调用usersService.getById()获取改用防护基本信息,返回前台。代码如下:
1.9修改密码
管理员也可以修改自己的登录密码,输入原密码,新密码,确认密码,点击“确定修改”密码即可修改成功,页面如下:
用户点击提交,表单请求路径/web/users/updateUpass,进入usersController.updateUpass()方法,根据session获取当前登陆的用户id,获取他的原密码对比输入是否正确。然后判断新密码是否一直,调用usersService.update()更新登录密码。代码如下:
2.0退出登录
管理员点击退出登录按钮,页面将跳入登录页面,请求路径/web/users/logout,进入usersController.logout()方法,移除session里的user实体,代码如下:
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论