基于协同过滤算法的旅游推荐系统

博主主页猫头鹰源码

博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战

主要内容 :毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询

文末联系获取

项目介绍:

该系统基于springboot技术,数据层为MyBatis,mysql数据库,具有完整的业务逻辑,适合选题:推荐算法、协同过滤、旅游推荐、推荐系统、算法、Java项目、javaweb等。

项目功能:

系统构架是指在确定了系统的要求之后,对系统的调用关系,层次结构,操作模式等进行定义。与该系统相结合,需要对后台进行频繁的维护和升级。采用B/S模式作为网站后台架构,其属于浏览器模式,可在服务器上运行系统功能,提升系统的开发效率,便于维护、开发与使用系统[15]。

根据系统需求分析,整个项目分为前台用户界面和后台管理员用户界面。前台用户界面分为:首页展示,热门景点预览,旅游推荐预览,注册和登录,留言反馈交流和用户菜单。后台管理员界面分为:管理账号管理,用户管理,热门城市管理,热门景点管理,留言反馈管理,旅游主题管理和旅游推荐咨询管理。

系统包含技术:

后端:springboot、mybatis

前端:xadmin、js、css等

开发工具:idea

数据库:mysql 5.7

JDK版本:jdk1.8

语言:Java语言

是否Maven:是

页面类型:jsp

部分截图说明:

下面是首页

旅游推荐页面

查看旅游详情

热门景点查看

留言交流

用户登陆

算法推荐

用户列表

热门景点列表

留言交流列表

部分代码:

复制代码
// 留言交流
    @RequestMapping("bbs.action")
    public String bbs(HttpServletRequest request, Map<String, Object> map) {
        this.front();
        Map<String, Object> parameter = new HashMap<String, Object>();


        String keyword = request.getParameter("keyword");//搜索关键词
        if (keyword != null && keyword != "") parameter.put("keyword", keyword);//搜索参数


        String bbstypeid = request.getParameter("bbstypeid");//搜索关键词
        if (bbstypeid != null && bbstypeid != "") parameter.put("bbstypeid", bbstypeid);//搜索参数


        int rowCountTotal = bbsService.getRowSize(parameter);//获取总数
        int pageSize = 10;// 分页大小
        int pageNumber = 1; //设定页面参数,传递给JSP页面

        if (request.getParameter("pageNumber") != null && request.getParameter("pageNumber") != "") {
            pageNumber = Integer.parseInt(request.getParameter("pageNumber"));//当前页
        }
        parameter.put("limit", pageSize);//搜索参数
        parameter.put("start", (pageNumber - 1) * pageSize);//搜索参数
        List<Bbs> bbsList = bbsService.getAll(parameter);


        //设定页面参数,传递给JSP页面
        Map<String, Object> pager = new HashMap<String, Object>();
        int pageCount = 1;// 总页数
        // 计算总页数
        if (rowCountTotal % pageSize == 0) {
            pageCount = rowCountTotal / pageSize;
        } else {
            pageCount = rowCountTotal / pageSize + 1;
        }
        pager.put("pageNumber", pageNumber);//当前页
        pager.put("pageCount", pageCount);//总页数
        pager.put("rowCountTotal", rowCountTotal);//记录总条数

        map.put("keyword", keyword);
        map.put("pager", pager);


        map.put("bbsList", bbsList);
        return "bbs";//跳转到WebContent目录下对应的JSP页面
    }

    // 发布留言
    @RequestMapping("addbbs.action")
    public String addbbs(Map<String, Object> map) {
        this.front();
        if (getRequest().getSession().getAttribute("usersid") == null) {
            return "redirect:/web/preLogin.action";//跳转到action
        }
        String usersid = (String) getRequest().getSession().getAttribute("usersid");
        Bbs bbs = new Bbs();
        bbs.setAddtime(new Date());
        bbs.setContents(getRequest().getParameter("contents"));
        bbs.setHits("0");
        bbs.setRepnum("0");
        bbs.setTitle(getRequest().getParameter("title"));
        bbs.setUsersid(usersid);

        bbs.setBbstypeid(getRequest().getParameter("bbstypeid"));

        bbsService.insert(bbs);
        return "redirect:/web/bbs.action";//跳转到action
    }

    // 查看回复
    @RequestMapping("bbsDetail.action")
    public String bbsDetail(HttpServletRequest request, Map<String, Object> map) {
        this.front();
        Bbs bbs = bbsService.getById(getRequest().getParameter("id"));
        bbs.setHits("" + (Integer.parseInt(bbs.getHits()) + 1));//增加主贴的浏览量
        bbsService.update(bbs);
        map.put("bbs", bbs);


        //-------------------------------------------获取回帖
        Map<String, Object> parameter = new HashMap<String, Object>();


        String keyword = request.getParameter("keyword");//搜索关键词
        if (keyword != null && keyword != "") parameter.put("keyword", keyword);//搜索参数


        parameter.put("bbsid", bbs.getBbsid());//搜索参数


        int rowCountTotal = rebbsService.getRowSize(parameter);//获取总数
        int pageSize = 10;// 分页大小
        int pageNumber = 1; //设定页面参数,传递给JSP页面

        if (request.getParameter("pageNumber") != null && request.getParameter("pageNumber") != "") {
            pageNumber = Integer.parseInt(request.getParameter("pageNumber"));//当前页
        }
        parameter.put("limit", pageSize);//搜索参数
        parameter.put("start", (pageNumber - 1) * pageSize);//搜索参数
        List<Rebbs> rebbsList = rebbsService.getAll(parameter);


        //设定页面参数,传递给JSP页面
        Map<String, Object> pager = new HashMap<String, Object>();
        int pageCount = 1;// 总页数
        // 计算总页数
        if (rowCountTotal % pageSize == 0) {
            pageCount = rowCountTotal / pageSize;
        } else {
            pageCount = rowCountTotal / pageSize + 1;
        }
        pager.put("pageNumber", pageNumber);//当前页
        pager.put("pageCount", pageCount);//总页数
        pager.put("rowCountTotal", rowCountTotal);//记录总条数

        map.put("keyword", keyword);
        map.put("pager", pager);

        map.put("rebbsList", rebbsList);
        return "bbsDetail";//跳转到WebContent目录下对应的JSP页面
    }

    // 回复留言
    @RequestMapping("rebbs.action")
    public String rebbs(Map<String, Object> map) {
        this.front();
        if (getRequest().getSession().getAttribute("usersid") == null) {
            return "redirect:/web/preLogin.action";//跳转到action
        }
        String usersid = (String) getRequest().getSession().getAttribute("usersid");
        Rebbs rebbs = new Rebbs();
        rebbs.setAddtime(new Date());
        rebbs.setContents(getRequest().getParameter("contents"));
        rebbs.setBbsid(getRequest().getParameter("bbsid"));
        rebbs.setUsersid(usersid);
        rebbsService.insert(rebbs);
        Bbs bbs = bbsService.getById(rebbs.getBbsid());
        bbs.setRepnum("" + (Integer.parseInt(bbs.getRepnum()) + 1));//增加主贴的回复数
        bbsService.update(bbs);
        String path = "redirect:/web/bbsDetail.action?id=" + bbs.getBbsid();
        return path;//跳转到ACTION
    }

以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。

好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~

相关推荐
序安InToo15 分钟前
第6课|注释与代码风格
后端·操作系统·嵌入式
xyy12315 分钟前
C#: Newtonsoft.Json 到 System.Text.Json 迁移避坑指南
后端
洋洋技术笔记18 分钟前
Spring Boot Web MVC配置详解
spring boot·后端
JxWang0518 分钟前
VS Code 配置 Markdown 环境
后端
qianpeng89720 分钟前
水声匹配场定位原理及实验
算法
navms21 分钟前
搞懂线程池,先把 Worker 机制啃明白
后端
JxWang0522 分钟前
离线数仓的优化及重构
后端
Nyarlathotep011323 分钟前
gin01:初探gin的启动
后端·go
JxWang0523 分钟前
安卓手机配置通用多屏协同及自动化脚本
后端
JxWang0524 分钟前
Windows Terminal 配置 oh-my-posh
后端