【毕业设计】基于Springboot学生宿舍信息管理系统
项目介绍
本系统使用了 SpringBoot + SpringMVC + Spring Data JPA 框架构建。使用了easypoi框架作为创新点,可以批量操作excel表格。前端使用了HTML+CSS+Jq+BootStrap
毕业论文
本人毕业设计成绩
中规中矩...
项目骨架
需求分析
业务需求分析
随着科技和经济的高速发展,互联网与现实生活的关系越来越密切,高校年年扩招,高校的宿舍越建越多,宿舍管理愈发重要,为高校宿舍管理,专门开发一个系统,是非常有必要的。不仅方便了学校对于学生的管理,还有利于学生生活诉求,以及对学校建议上的反馈。
业务需求分析
本宿舍信息管理系统在功能上将达到如下要求[10]
(1)系统界面简约,操作简便,用户即用即会
(2)设计的结构清晰,模块具有较强的扩展性,方便日后增添新功能
(3)该系统具有一定的并发能力,支持较多的用户同时访问,有一定的容灾性
(4)系统中各个功能组件响应速度快,要做到快速稳定高效
(5)在设计结构上要清晰,易扩展。
系统概要设计
系统功能设计
1. 学生功能模块
个人信息管理模块:学生可以修改自己的个人信息,包括学号,姓名,性别,年级,学院,专业,宿舍号,电话,还可以修改自己的账户密码。
报修模块:学生可以申请报修,申请报修后,宿舍管理员就可以看到学生申请的保修,并对其进行处理,而该学生可以通过自己的历史报修记录,查看宿舍管理员的处理结果。
假期登记模块:在宿舍管理员,发布入校或者离校事件后,学生可以提交自己入校或者离校的时间。
宿舍评分查看模块:宿舍管理员,对各个宿舍进行评分后,学生就可以查看自己宿舍的得分,以及自己的宿舍管理员所管理的其他宿舍的评分
2. 宿舍管理员功能模块
个人信息管理模块:宿舍管理员,可以修改自己的个人信息,包括姓名,性别,职工号等,可以修改自己的账户密码,可以查询自己所管理宿舍号对应的学生信息
报修单管理模块:学生申请报修后,宿舍管理员可以看到,并对相应的保修申请进行处理
假期登记模块:宿舍管理员发放入校或者离校登记后,学生端才可以发起申请,而宿舍管理员界面就可以看到学生提交的申请日期。
宿舍评分模块:宿舍管理员定期检查宿舍内务,有权利对各个宿舍进行评分,每次检查过后,宿舍管理员可以登录系统并提交对每个宿舍的评分事宜。
来访人员登记模块:宿舍管理员可以在系统中记录非宿舍成员进入宿舍的情况。记录来访者的,姓名,学号,来自哪个宿舍,以及来宿舍找谁。
3. 系统管理员功能模块
宿舍楼信息管理模块:系统管理员可以查看宿舍的楼层信息,宿舍楼号,宿舍楼层号,房间号,可以批量导入。
学生信息管理模块:系统管理员可以查看学生的全部信息,包括学生的学号,姓名,性别,年龄,学院,专业,宿舍号,电话,以及是否毕业。同时具有批量导入,按条件查找,删除等功能。
职工信息给管理模块:系统管理员可以在后台查看所有职工(宿舍管理员)的全部信息,包括职工号,姓名,性别,年龄,管理楼栋。有批量导入职工的功能,按条件查找职工信息功能,添加职工的功能,修改删除职工信息的功能。
业务流程分析
1.报修流程
学生用户可以登录该系统,在报修申请中申请报修,可以选择宿舍中的各种设施,并说明损坏程度报修原油,点击提交。宿舍信息管理员可以在报修管理的选项卡的未处理报修单中,查看学生提交的报修申请,并对其进行处理。处理后,学生用户可以在该系统中看到,宿舍管理员给出的报修建议与回复。宿舍信息管理员也可以查看自己处理过的历史报修单。
2.假期登记流程
宿舍信息管理员要先发布入校或者离校登记事件,学生用户需要登录该系统,就可以提交自己的入校或者离校时间,提交完成后,宿舍信息管理员可以在后台查看学生用户提交的时间。
3.宿舍评分流程
宿舍信息管理员会定期对宿舍的卫生进行检查,并且给出该宿舍的评分事宜,学生用户登录系统就可以查看到自己宿舍的得分情况,并且同时可以看到该宿舍管理员管理所有学生中他们宿舍的情况。
4.来访人员管理流程
宿舍信息管理员,需要记录好,来访宿舍的人员情况。当有人来宿舍时,宿舍信息管理员可以登录该系统,选择添加来访,并记录来访者的基本信息以及被访问人情况。
数据库设计
数据库模型设计
表结构
(1)dorm宿舍楼信息表
(2)external外来人员访问表
(3)inregister入校登记表
(4)outregister离校登记表
(5)registerbatch登记批次表
(6)repair保修单
(7) score宿舍评分表
(8)scoringbatch评分批次表
(9)staffinfo职工信息表
(10)stuinfo学生信息表
(11)user用户信息表
项目部分运行截图
登入界面
系统管理员界面
宿舍老师界面
学生界面
论文总结
经过三个月的努力,我终于完成了宿舍信息管理系统代码和论文的编写,对于该系统,就目前看来,还并没有发现功能上了bug,但是在性能优化上还存在一定的欠缺。
通过编写宿舍信息管理系统,让我明白,我在Java基础知识,还有web前端的基本操作还是不够扎实,还有SpringBoot,SpringMVC,Spring Data JPA框架上的应用还是有一定的欠缺。由于独立搭建开发项目少,对开发项目过程思路不够清楚,所以在最初的项目架构的设计上,出现了一定的问题,项目各个类的命名也不够规范。但是就这次毕业设计,也很大程度的推进了我对这些框架的学习,今年年初,原本的设想是用最简单的Java web即原生servlet去完成整个项目的开发,但后面又了解了spring,于是又推动了我学习了SSM中的三个框架,之后在公司实习中,了解到了spring boot所以最后我的项目是用spring boot进行构建的。我了解了Spring的bean的加载流程,Spring的生命周期。
通过这次毕业设计的实践,不仅让我学会和巩固了java的基础知识,而且让我积累了更丰富的开发经验。同时锻炼了我如何去独立发现问题,思考问题以及解决问题的能力,这是我的编程开发能力得到了大大地提高。
部分代码
DormitoryManagementApplication 启动类
/**
* @author : Harmony
*/
@SpringBootApplication
public class DormitoryManagementApplication {
public static void main(String[] args) {
SpringApplication.run(DormitoryManagementApplication.class, args);
}
}
DormController
@Controller
@RequestMapping("/dorm")
public class DormController {
@Autowired
private DormServiceI dormServiceI;
@GetMapping("/view")
public String getDormView() {
return "dorm/dorm";
}
@GetMapping("/list")
@ResponseBody
public Page<Dorm> getDormInfo(@PageableDefault Pageable pageable) {
return dormServiceI.findDorms(pageable);
}
@GetMapping("/getDorms")
@ResponseBody
public List<Dorm> getDorms(HttpSession session) {
UserExpand user = (UserExpand) session.getAttribute("LOGIN_USER");
return dormServiceI.getDorms(user.getStaffinfo());
}
@PostMapping("/importExcel")
@ResponseBody
public Boolean importExcel(@RequestParam("file") MultipartFile file) {
return dormServiceI.importExcel(file);
}
}
LoginController
@Controller
@RequestMapping("/login")
public class LoginController {
@Autowired
private IndexController indexController;
@Autowired
private LoginServiceI loginServiceI;
@GetMapping("/toLogin")
public String toLogin() {
return "login/login";
}
@PostMapping("")
public String login(User user, HttpSession session, Model model) {
UserExpand info = loginServiceI.getUserLoginInfo(user);
if (null != info) {
session.setAttribute("LOGIN_USER", info);
return "redirect:/index";
}
model.addAttribute("msg", "error");
return "login/login";
}
@GetMapping("/logout")
@ResponseBody
public Boolean logout(HttpSession session) {
session.removeAttribute("LOGIN_USER");
return true;
}
}