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

2023-09-13 15:51:53

博主主页猫头鹰源码

博主简介: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
    }

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

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

更多推荐

Vue路由与nodejs环境搭建

一、Vue路由1.1SPA简介在实现路由之前我们先了解SPA是什么?SPA:单页Web应用(singlepageapplication,SPA),就是只有一个Web页面的应用。是加载单个HTML页面,并在用户与应用程序交互时动态更新该页面的Web应用程序单页面应用程序:只有第一次会加载页面,以后的每次请求,仅仅是获取必

VS Code时间轴插件:MarkWhen

文章目录简介时间格式事件格式简介MarkWhen是一款文本转时间轴的工具,非常好用,也十分炫酷。可在VSCode中搜索插件MarkWhen,点击安装,然后新建一个.mw后缀的文件,就可以使用了,下面举一个简单的例子#Holiday:blue2023-09-10:周日#Holiday9/17/2023:周日#Holida

day21算法

常见的七种查找算法:​数据结构是数据存储的方式,算法是数据计算的方式。所以在开发中,算法和数据结构息息相关。今天的讲义中会涉及部分数据结构的专业名词,如果各位铁粉有疑惑,可以先看一下哥们后面录制的数据结构,再回头看算法。1.基本查找​也叫做顺序查找​说明:顺序查找适合于存储结构为数组或者链表。基本思想:顺序查找也称为线

计算机证书java

利润importjava.util.Scanner;publicclassTest{publicstaticvoidmain(String[]args){//profit代表输入的利润,bonus代表奖金额doubleprofit=0,bonus=0;System.out.print("请输入本年利润(万):");Sc

Git 的基本概念和使用方式

Git是一种分布式版本控制系统,它可以帮助开发者管理代码,跟踪代码的变化并协作开发。以下是Git的一些基本概念和使用方式:1.仓库(repository):存放代码的地方,包括本地仓库和远程仓库。2.分支(branch):用来指代不同代码的开发路径,可以独立开发、测试和合并。3.提交(commit):每次修改代码时,需

selenium自动化测试-登录网站用户

昨天学习了selenium自动化测试工具的入门,知道了Selenium是用于自动化控制浏览器做各种操作,打开网页,点击按钮,输入表单等等。今天学习通过selenium自动化测试工具自动登录某网站用户操作。第一步:确定目标网址比如:天天基金网站登录页面"https://login.1234567.com.cn/login

SpringBoot中pom.xml配置详解

🔔简介pom.xml是Maven项目的核心配置文件,用于管理项目的依赖、插件、构建配置等。在SpringBoot项目中,pom.xml文件也扮演着重要的角色。在pom.xml文件中,可以配置项目的资源文件。在SpringBoot的pom.xml文件中,通常会有一个标签文件,用于指定资源文件的路径和名称。🔔基本配置�

关于时空数据的培训 GAN:实用指南(第 01/3 部分)

第1部分:深入了解GAN训练中最臭名昭著的不稳定性。一、说明GAN是迄今为止最受欢迎的深度生成模型,主要是因为它们最近在图像生成任务上产生了令人难以置信的结果。然而,GAN并不容易训练,因为它们的基本设计引入了无数的不稳定性。如果你尝试过用MNIST以外的任何东西训练GAN,你很快就会意识到,所有关于训练他们的痛苦(以

【开发环境】安装 Hadoop 运行环境 ( 下载 Hadoop | 解压 Hadoop | 设置 Hadoop 环境变量 | 配置 Hadoop 环境脚本 | 安装 winutils )

文章目录一、下载Hadoop二、解压Hadoop三、设置Hadoop环境变量四、配置Hadoop环境脚本五、安装winutils六、重启电脑七、验证Hadoop安装效果一、下载HadoopHadoop发布版本在https://hadoop.apache.org/releases.html页面可下载;当前最新版本是3.3

Flutter插件之阿里百川

上一篇:Flutter插件的制作和发布,我们已经了解了如何制作一个通用的双端插件,本篇就带领大家将阿里百川双端sdk制作成一个flutter插件供项目调用!目录登录并打开控制台,创建应用:填写应用相关信息开通百川电商SDK申请安全图片下载SDK创建插件项目将ios端sdk下的framework和bundle文件夹复制到

WEB漏洞原理之---【XML&XXE利用检测绕过】

文章目录1、概述1.1、XML概念1.2、XML与HTML的主要差异1.3、XML代码示例2、靶场演示2.1、Pikachu靶场--XML数据传输测试玩法-1-读取文件玩法-2-内网探针或攻击内网应用(触发漏洞地址)玩法-3-RCE引入外部实体DTD无回显-读取文件开启phpstudy--apache日志3、XXE绕过

热文推荐