基于springboot的图书个性化推荐系统


文章目录

  • 基于springboot的图书个性化推荐系统
  • 引言
  • 功能演示视频
  • 开发环境
  • 系统功能介绍
  • 功能对照表
  • 功能截图
  • 编程框架
  • Spring Boot 框架
  • SSM 框架
  • vue 框架
  • 示例代码
  • 数据库操作示例
  • 源码获取


功能演示视频

请联系我获取详细的演示视频

开发环境

  • JDK版本:1.8及以上
  • IDE工具:IntelliJ IDEA
  • 数据库:MySQL 5.7
  • 服务器:Tomcat 8.0及以上
  • 编程语言:Java
  • Java框架:Spring Boot
  • 前端:Layui、Vue
  • 前端技术:HTML、CSS、JS、jQuery
  • 构建工具:Maven 3.6.1

系统功能介绍

功能对照表

功能对照表的目的是帮助开发团队了解软件的功能状况,及时修复功能缺陷和错误,并提高软件的质量和稳定性。

功能编号

功能名称

功能描述

功能状态

备注

1

用户登录

用户可以通过提供用户名和密码登录系统

正常

用户名和密码的验证机制安全性

2

用户注册

用户可以通过提供用户名、密码和电子邮件地址注册新的账户

正常


3

密码修改

用户可以通过提供原密码和新密码修改已有账户的密码

正常

用户密码的修改操作是否需要提供安全认证

4

用户信息查看

用户可以查看自己的个人信息,如用户名、电子邮件地址、角色等

正常


5

数据查询

用户可以通过提供查询条件查询系统中的数据

正常


6

数据导入

用户可以通过提供导入文件来导入数据到系统中

正常


7

数据导出

用户可以通过提供导出条件导出系统中的数据

正常


8

数据删除

用户可以通过提供删除条件删除系统中的数据

正常


9

数据更新

用户可以通过提供更新条件更新系统中的数据

正常


10

数据新增

用户可以通过提供新增条件在系统中新增数据

正常


11

权限管理

用户可以通过提供权限条件来管理系统中的权限

正常


12

数据格式验证

用户输入数据后,系统应该对数据格式进行验证

正常


13

数据输入输出

用户输入数据后,系统可以输出相应的数据

正常


14

用户注销

用户可以注销登录系统

正常


15

忘记密码

用户忘记密码时,系统可以提供重置密码的功能

正常


功能截图

springboot基于推荐算法的大学生线路推荐系统 springboot推荐书_后端


springboot基于推荐算法的大学生线路推荐系统 springboot推荐书_Vue_02


springboot基于推荐算法的大学生线路推荐系统 springboot推荐书_后端_03


springboot基于推荐算法的大学生线路推荐系统 springboot推荐书_spring boot_04


springboot基于推荐算法的大学生线路推荐系统 springboot推荐书_Vue_05

编程框架

Spring Boot 框架

Spring Boot 是一款开源的 Java 框架,它基于 Spring 框架,简化了 Spring 应用的初始化和开发过程,大大提高了开发效率。Spring Boot 基于约定优于配置的原则,自动化了很多配置,只需很少的代码,就能够快速地创建一个独立的、生产级别的应用程序。Spring Boot 提供了很多功能,如自动配置、快速开发、跨平台、容器化、监控、安全性等。

Spring Boot 框架优点:

  1. 自动配置:Spring Boot 通过约定大于配置的原则,自动配置应用程序,减少了大量的配置代码。
  2. 快速开发:Spring Boot 可以帮助开发者快速搭建项目,提高开发效率。
  3. 跨平台:Spring Boot 可以运行在各种平台上,如 Windows、Linux、Mac 等。
  4. 容器化:Spring Boot 支持容器化部署,可以轻松部署到 Docker 容器中。
  5. 监控:Spring Boot 提供了丰富的监控功能,可以方便地监控应用程序的运行状态。
  6. 安全性:Spring Boot 通过 Spring Security 提供了强大的安全性支持。

SSM 框架

SSM 框架是 Spring + Spring MVC + MyBatis 的整合,它是一套JavaWeb的开发框架。Spring 负责控制反转 (IoC) 和依赖注入 (DI),Spring MVC 负责请求的分发和响应,MyBatis 负责数据库的操作。SSM 框架适合中小型项目,使用起来简单、快速、灵活,易于维护和升级,而且它有很好的社区支持和文档。

SSM 框架优点:

  1. 简单易用:SSM 框架使用简单、容易上手。
  2. 高效性能:SSM 框架运行速度快,性能高。
  3. 易于维护:SSM 框架的代码结构清晰,易于维护和升级。
  4. 社区支持:SSM 框架有很好的社区支持和文档。

vue 框架

Vue 是一款渐进式 JavaScript 框架,用于构建用户界面。它与其他框架库的主要区别在于它是一款渐进式框架,也就是说,你可以在已有项目中逐渐使用 Vue,而无需对现有代码进行大规模的更改。Vue 有着很好的文档、社区和生态系统,它提供了一种基于组件的开发模式,易于理解、使用和维护。

Vue 框架优点:

  1. 渐进式:Vue 框架是一款渐进式框架,易于逐步应用于现有项目中。
  2. 组件化:Vue 框架采用组件化开发模式,易于理解和使用。
  3. 响应式:Vue 框架使用响应式的数据绑定机制,可以自动更新视图。
  4. 社区和生态:Vue 框架有着活跃的社区和丰富的生态,提供了很多插件和工具。

示例代码

@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        // 根据用户数据库验证用户名和密码
        if (isValidUser(username, password)) {
            //登陆成功
            request.getSession().setAttribute("username", username);
            response.sendRedirect("dashboard.jsp"); // Redirect to the dashboard or another secure page
        } else {
            // 登录失败
            response.sendRedirect("login.jsp?error=true");
        }
    }

    private boolean isValidUser(String username, String password) {
        // 实现逻辑来验证用户(例如,检查数据库)
        // 如果用户有效则返回true,否则返回false
        //这是一个基本示例
        return "demo".equals(username) && "password123".equals(password);
    }
}
@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 使会话失效以注销用户
        request.getSession().invalidate();
        response.sendRedirect("login.jsp");
    }
}
@WebServlet("/dashboard")
public class DashboardServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 检查用户是否通过认证
        if (request.getSession().getAttribute("username") == null) {
            response.sendRedirect("login.jsp");
            return;
        }

        // 显示仪表板
        // 您的安全页面逻辑在这里
        response.getWriter().println("Welcome to the dashboard, " + request.getSession().getAttribute("username"));
    }
}
@WebServlet("/dashboard")
public class DashboardServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 检查用户是否通过认证
        if (request.getSession().getAttribute("username") == null) {
            response.sendRedirect("login.jsp");
            return;
        }

        // 显示仪表板
        // 安全页面逻辑在这里
        response.getWriter().println("Welcome to the dashboard, " + request.getSession().getAttribute("username"));
    }
}

数据库操作示例

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for children
-- ----------------------------
DROP TABLE IF EXISTS `children`;
CREATE TABLE `children`  (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '学生名',
  `sex` int(1) DEFAULT NULL COMMENT '性别:1男,0女',
  `birthday` date DEFAULT NULL COMMENT '出生年月日',
  `class_id` int(10) DEFAULT NULL COMMENT '班级id',
  `hobby` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '性趣爱好',
  `food` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '不爱吃的食物',
  `entrance` datetime DEFAULT NULL COMMENT '入学时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of children
-- ----------------------------
INSERT INTO `children` VALUES (1, '小明', 1, '2023-04-05', 2, '唱歌333', '西红柿过敏', '2023-04-20 00:00:00');
INSERT INTO `children` VALUES (2, '小红', 0, '2023-04-05', 1, '画画', '洋葱过敏', '2023-04-20 00:00:00');

-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES (2, '数学', '黎明', '2023-04-19 12:32:08', '2023-04-19 12:32:09', 4, 0, '2023-04-19 12:32:15', 3);

-- ----------------------------
-- Records of page
-- ----------------------------
INSERT INTO `page` VALUES (1, 0, '系统设置', NULL, 0, 10, 0, 'manager');
INSERT INTO `page` VALUES (2, 1, '用户管理', '/sa/userPage', 1, 22, 0, 'manager');
INSERT INTO `page` VALUES (3, 1, '页面管理', '/sa/page', 1, 23, 0, 'manager');
INSERT INTO `page` VALUES (4, 1, '角色管理', '/sa/role', 1, 24, 0, 'manager');
INSERT INTO `page` VALUES (38, 0, '校园管理', '', 0, 1, 0, 'left_menu_shop');
INSERT INTO `page` VALUES (39, 38, '老师管理', 'sa/teaMG', 1, 1, 0, NULL);
INSERT INTO `page` VALUES (40, 38, '工资管理', 'sa/payMG', 1, 2, 0, '');
INSERT INTO `page` VALUES (41, 38, '物资管理', 'sa/materialMG', 1, 3, 0, '');
INSERT INTO `page` VALUES (42, 38, '菜谱管理', 'sa/footMG', 1, 4, 0, '');
INSERT INTO `page` VALUES (43, 0, '班级管理', '', 0, 2, 0, 'user');
INSERT INTO `page` VALUES (45, 43, '学生管理', 'ls/stu', 1, 2, 0, NULL);
INSERT INTO `page` VALUES (46, 43, '公告管理', 'ls/gg', 1, 3, 0, NULL);
INSERT INTO `page` VALUES (47, 0, '考勤管理', '', 0, 3, 0, 'left_menu_data');
INSERT INTO `page` VALUES (48, 47, '老师考勤', 'ls/lskq', 1, 1, 0, NULL);
INSERT INTO `page` VALUES (49, 47, '学生考勤', 'ls/xskq', 1, 2, 0, NULL);
INSERT INTO `page` VALUES (51, 47, '老师考勤统计', 'ls/kqtj', 1, 4, 0, '');
INSERT INTO `page` VALUES (52, 38, '班级管理', 'sa/classesPage', 1, 5, 0, '');
INSERT INTO `page` VALUES (53, 47, '学生考勤统计', 'ls/tongJiXueSheng', 1, 5, 0, '');
INSERT INTO `page` VALUES (54, 47, '签到签退', 'ls/qianDaoTui', 1, 6, 0, NULL);
INSERT INTO `page` VALUES (55, 43, '课程管理', '/ls/course', 1, 4, 0, NULL);

-- ----------------------------
-- Table structure for pay
-- ----------------------------
DROP TABLE IF EXISTS `pay`;
CREATE TABLE `pay`  (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '教师id',
  `base` double(10, 2) DEFAULT NULL COMMENT '基本工资',
  `overtime` double(10, 2) DEFAULT NULL COMMENT '加班工资',
  `traffic` double(10, 2) DEFAULT NULL COMMENT '交通补',
  `meal` double(10, 2) DEFAULT NULL COMMENT '餐补',
  `vacation` double(10, 2) DEFAULT NULL COMMENT '节假日补贴',
  `bonus` double(10, 2) DEFAULT NULL COMMENT '绩效',
  `other` double(10, 2) DEFAULT NULL COMMENT '其他',
  `payment_time` datetime DEFAULT NULL COMMENT '发放时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of pay
-- ----------------------------
INSERT INTO `pay` VALUES (1, 'laoshi', 1000.00, 200.00, 23.00, 22.00, 22.00, 33.00, 12.00, '2023-04-19 11:08:03');
INSERT INTO `pay` VALUES (2, 'zhoutianyuan', 3400.00, 23.00, 32.00, 33.00, 12.00, 21.00, 32.00, '2023-04-19 11:08:42');

-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role`  (
  `role_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '类型名称',
  `desc` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '描述',
  PRIMARY KEY (`role_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of role
-- ----------------------------
INSERT INTO `role` VALUES (1, '超级管理员', '超级管理员');
INSERT INTO `role` VALUES (2, '教师', '老师');
INSERT INTO `role` VALUES (3, '家长', '家长');

-- ----------------------------
-- Table structure for role_page
-- ----------------------------
DROP TABLE IF EXISTS `role_page`;
CREATE TABLE `role_page`  (
  `rp_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增',
  `role_id` int(11) DEFAULT NULL COMMENT '角色id',
  `page_id` int(11) DEFAULT NULL COMMENT '页面id',
  PRIMARY KEY (`rp_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 512 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of role_page
-- ----------------------------
INSERT INTO `role_page` VALUES (1, 1, 1);
INSERT INTO `role_page` VALUES (2, 1, 2);
INSERT INTO `role_page` VALUES (3, 1, 3);
INSERT INTO `role_page` VALUES (4, 1, 4);
INSERT INTO `role_page` VALUES (486, 2, 43);
INSERT INTO `role_page` VALUES (487, 2, 45);
INSERT INTO `role_page` VALUES (488, 2, 46);
INSERT INTO `role_page` VALUES (489, 2, 55);
INSERT INTO `role_page` VALUES (490, 2, 47);
INSERT INTO `role_page` VALUES (491, 2, 48);
INSERT INTO `role_page` VALUES (492, 2, 49);
INSERT INTO `role_page` VALUES (493, 2, 51);
INSERT INTO `role_page` VALUES (494, 2, 53);
INSERT INTO `role_page` VALUES (495, 2, 54);
INSERT INTO `role_page` VALUES (496, 1, 38);
INSERT INTO `role_page` VALUES (497, 1, 39);
INSERT INTO `role_page` VALUES (498, 1, 40);
INSERT INTO `role_page` VALUES (499, 1, 41);
INSERT INTO `role_page` VALUES (500, 1, 42);
INSERT INTO `role_page` VALUES (501, 1, 52);
INSERT INTO `role_page` VALUES (502, 1, 43);
INSERT INTO `role_page` VALUES (503, 1, 45);
INSERT INTO `role_page` VALUES (504, 1, 46);
INSERT INTO `role_page` VALUES (505, 1, 55);
INSERT INTO `role_page` VALUES (506, 1, 47);
INSERT INTO `role_page` VALUES (507, 1, 48);
INSERT INTO `role_page` VALUES (508, 1, 49);
INSERT INTO `role_page` VALUES (509, 1, 51);
INSERT INTO `role_page` VALUES (510, 1, 53);
INSERT INTO `role_page` VALUES (511, 1, 54);