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


    博主主页猫头鹰源码

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

    部分截图说明:

    下面是首页

    旅游推荐页面

    查看旅游详情

    热门景点查看

    留言交流

    用户登陆

    算法推荐

    用户列表

    热门景点列表

    留言交流列表

    部分代码:

    1. // 留言交流
    2. @RequestMapping("bbs.action")
    3. public String bbs(HttpServletRequest request, Map<String, Object> map) {
    4. this.front();
    5. Map<String, Object> parameter = new HashMap<String, Object>();
    6. String keyword = request.getParameter("keyword");//搜索关键词
    7. if (keyword != null && keyword != "") parameter.put("keyword", keyword);//搜索参数
    8. String bbstypeid = request.getParameter("bbstypeid");//搜索关键词
    9. if (bbstypeid != null && bbstypeid != "") parameter.put("bbstypeid", bbstypeid);//搜索参数
    10. int rowCountTotal = bbsService.getRowSize(parameter);//获取总数
    11. int pageSize = 10;// 分页大小
    12. int pageNumber = 1; //设定页面参数,传递给JSP页面
    13. if (request.getParameter("pageNumber") != null && request.getParameter("pageNumber") != "") {
    14. pageNumber = Integer.parseInt(request.getParameter("pageNumber"));//当前页
    15. }
    16. parameter.put("limit", pageSize);//搜索参数
    17. parameter.put("start", (pageNumber - 1) * pageSize);//搜索参数
    18. List<Bbs> bbsList = bbsService.getAll(parameter);
    19. //设定页面参数,传递给JSP页面
    20. Map<String, Object> pager = new HashMap<String, Object>();
    21. int pageCount = 1;// 总页数
    22. // 计算总页数
    23. if (rowCountTotal % pageSize == 0) {
    24. pageCount = rowCountTotal / pageSize;
    25. } else {
    26. pageCount = rowCountTotal / pageSize + 1;
    27. }
    28. pager.put("pageNumber", pageNumber);//当前页
    29. pager.put("pageCount", pageCount);//总页数
    30. pager.put("rowCountTotal", rowCountTotal);//记录总条数
    31. map.put("keyword", keyword);
    32. map.put("pager", pager);
    33. map.put("bbsList", bbsList);
    34. return "bbs";//跳转到WebContent目录下对应的JSP页面
    35. }
    36. // 发布留言
    37. @RequestMapping("addbbs.action")
    38. public String addbbs(Map<String, Object> map) {
    39. this.front();
    40. if (getRequest().getSession().getAttribute("usersid") == null) {
    41. return "redirect:/web/preLogin.action";//跳转到action
    42. }
    43. String usersid = (String) getRequest().getSession().getAttribute("usersid");
    44. Bbs bbs = new Bbs();
    45. bbs.setAddtime(new Date());
    46. bbs.setContents(getRequest().getParameter("contents"));
    47. bbs.setHits("0");
    48. bbs.setRepnum("0");
    49. bbs.setTitle(getRequest().getParameter("title"));
    50. bbs.setUsersid(usersid);
    51. bbs.setBbstypeid(getRequest().getParameter("bbstypeid"));
    52. bbsService.insert(bbs);
    53. return "redirect:/web/bbs.action";//跳转到action
    54. }
    55. // 查看回复
    56. @RequestMapping("bbsDetail.action")
    57. public String bbsDetail(HttpServletRequest request, Map<String, Object> map) {
    58. this.front();
    59. Bbs bbs = bbsService.getById(getRequest().getParameter("id"));
    60. bbs.setHits("" + (Integer.parseInt(bbs.getHits()) + 1));//增加主贴的浏览量
    61. bbsService.update(bbs);
    62. map.put("bbs", bbs);
    63. //-------------------------------------------获取回帖
    64. Map<String, Object> parameter = new HashMap<String, Object>();
    65. String keyword = request.getParameter("keyword");//搜索关键词
    66. if (keyword != null && keyword != "") parameter.put("keyword", keyword);//搜索参数
    67. parameter.put("bbsid", bbs.getBbsid());//搜索参数
    68. int rowCountTotal = rebbsService.getRowSize(parameter);//获取总数
    69. int pageSize = 10;// 分页大小
    70. int pageNumber = 1; //设定页面参数,传递给JSP页面
    71. if (request.getParameter("pageNumber") != null && request.getParameter("pageNumber") != "") {
    72. pageNumber = Integer.parseInt(request.getParameter("pageNumber"));//当前页
    73. }
    74. parameter.put("limit", pageSize);//搜索参数
    75. parameter.put("start", (pageNumber - 1) * pageSize);//搜索参数
    76. List<Rebbs> rebbsList = rebbsService.getAll(parameter);
    77. //设定页面参数,传递给JSP页面
    78. Map<String, Object> pager = new HashMap<String, Object>();
    79. int pageCount = 1;// 总页数
    80. // 计算总页数
    81. if (rowCountTotal % pageSize == 0) {
    82. pageCount = rowCountTotal / pageSize;
    83. } else {
    84. pageCount = rowCountTotal / pageSize + 1;
    85. }
    86. pager.put("pageNumber", pageNumber);//当前页
    87. pager.put("pageCount", pageCount);//总页数
    88. pager.put("rowCountTotal", rowCountTotal);//记录总条数
    89. map.put("keyword", keyword);
    90. map.put("pager", pager);
    91. map.put("rebbsList", rebbsList);
    92. return "bbsDetail";//跳转到WebContent目录下对应的JSP页面
    93. }
    94. // 回复留言
    95. @RequestMapping("rebbs.action")
    96. public String rebbs(Map<String, Object> map) {
    97. this.front();
    98. if (getRequest().getSession().getAttribute("usersid") == null) {
    99. return "redirect:/web/preLogin.action";//跳转到action
    100. }
    101. String usersid = (String) getRequest().getSession().getAttribute("usersid");
    102. Rebbs rebbs = new Rebbs();
    103. rebbs.setAddtime(new Date());
    104. rebbs.setContents(getRequest().getParameter("contents"));
    105. rebbs.setBbsid(getRequest().getParameter("bbsid"));
    106. rebbs.setUsersid(usersid);
    107. rebbsService.insert(rebbs);
    108. Bbs bbs = bbsService.getById(rebbs.getBbsid());
    109. bbs.setRepnum("" + (Integer.parseInt(bbs.getRepnum()) + 1));//增加主贴的回复数
    110. bbsService.update(bbs);
    111. String path = "redirect:/web/bbsDetail.action?id=" + bbs.getBbsid();
    112. return path;//跳转到ACTION
    113. }

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

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

  • 相关阅读:
    ABB机器人的MoveL和MoveJ运动指令基本功能介绍
    django 项目基本配置
    Shardingsphere-Proxy 5.5.0数据迁移
    Kafka 核心源码解读【三】--Controller模块
    骚操作!居然能修改已运行的 Docker 容器端口映射?
    MySQL篇—执行计划介绍(第二篇,总共三篇)
    计算机网络 | 传输层
    Redis基础篇:初识Redis(认识NoSQL,单机安装Redis,配置Redis自启动,Redis客户端的基本使用)
    论算法是如何优化的:四数之和
    FreeSWITCH添加自定义endpoint之媒体交互
  • 原文地址:https://blog.csdn.net/mtyedu/article/details/132855875