当前位置: 首页 > news >正文

计算机毕业设计-基于协同过滤算法的旅游管理系统-基于SSM的旅游定制系统(源码+讲解+文档)

计算机毕业设计-基于协同过滤算法的旅游管理系统-基于SSM的旅游定制系统(源码+讲解+文档)

1 开发环境及工具下载

  • 开发语言:Java
  • 后台:SSM(Spring+SpringMVC+Mybatis)
  • 数据库:MySQL
  • 工具:Idea、Eclipse、MyEclipse (选其一)
  • 其他:jdk1.8、maven、Tomcat

eclipse 下载
mysql 5.7 下载
jdk 1.8 下载
tomcat 8.0 下载
maven 3.5 下载
idea 下载

2 功能介绍

2.1 管理员用例图

管理员角色主要包含的功能有商品信息、登录、登出、房间信息、主题信息、订单信息、用户管理、定制信息等功能,管理员用例图如下图所示。
在这里插入图片描述

普通用户进入到协同过滤旅游系统拥有的功能有旅游产品、服务制定、咨询、个人中心、订购的功能权限,具体内容如下图所示。
在这里插入图片描述

2.3 系统功能结构图

在这里插入图片描述

3 部分运行界面

3.1 用户部分运行界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 管理员部分运行界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 更多推荐

ssm在线点餐系统(沙箱支付)
基于SpingBoot的高校就业生就业服务平台
基于springboot的社区志愿者管理系统

5 首页获取推荐功能代码

/**
 * <p>
 *  后端主页控制器
 * </p>
 *

 */
@Controller
public class IndexController {

    @Autowired
    private IProductService productService;
    @Autowired
    private IThemeService themeService;
    @Autowired
    private IUserActionService userActionService;


    @RequestMapping("/register")
    public String register(){
        return "index/register";
    }

    @RequestMapping("/customized")
    public String customized(){
        return "index/customized";
    }

    @RequestMapping("/navigation")
    public String navigation(){
        return "index/navigation";
    }

    @RequestMapping("/productlistView")
    public String plView(Model model){
        List<Theme> themes=themeService.selectList(null);
        model.addAttribute("themes",themes);
        return "index/product_list";
    }

    @RequestMapping("/indexView")
    public String indexView(HttpSession session,Model model) throws Exception {
        List<Product> productList=productService.getIndexproduct(6);
        List<Product> hotPList=productService.hotProduct(6);
        User loginUser = (User)session.getAttribute(Const.CURRENT_USER);
        List<Product> recommendProductList = new ArrayList<>();
        //获取推荐的商品
        if (loginUser!=null) {
            RecommendUtil recommendUtil = new RecommendUtil();
            List<Long> recommendList = recommendUtil.getRecommend(loginUser.getId());
            for (int i=0;i<recommendList.size();i++){
                Product product = productService.selectById(recommendList.get(i));
                recommendProductList.add(product);
            }
            Integer flag = 6-recommendList.size();
            if (flag>0){
                //推荐数量不够,使用用户冷启动
                EntityWrapper<UserAction> userActionEntityWrapper = new EntityWrapper<>();
                //先查询用户感兴趣的商品,并降序排列
                userActionEntityWrapper.eq("userid",loginUser.getId());
                userActionEntityWrapper.orderBy("score",false);
                List<UserAction> userActionList = userActionService.selectList(userActionEntityWrapper);
                //遍历用户感兴趣的商品
                for (int i =0;i<userActionList.size();i++){
                    //获取感兴趣的商品id
                    String pid=userActionList.get(i).getProductid();
                    Boolean isExist=false;
                    //遍历推荐的商品
                    for (int j  =0;j<recommendProductList.size();j++){
                        //当推荐的商品已存在感兴趣的商品,则不存入
                        if (pid.equals(recommendProductList.get(j).getPid())){
                            isExist=true;
                        }
                    }
                    if (!isExist){
                        Product product = productService.selectById(pid);
                        recommendProductList.add(product);
                    }
                    if (recommendProductList.size()==6){
                        break;
                    }
                }

            }
        }
        model.addAttribute("recommendProductList",recommendProductList);
        model.addAttribute("hotPList",hotPList);
        model.addAttribute("productList",productList);
        return "index/index";
    }

    @RequestMapping("/userinfoView")
    public String userinfoView(){
        return "index/user_info";
    }

    @RequestMapping("/myorder")
    public String myorder(){
        return "index/my_order";
    }
    @RequestMapping("/plistView")
    public String plistView(){

        return "index/plist";
    }

    @RequestMapping("/adminLoginView")
    public String adloginView(){
        return "backend/admin_login";
    }
}

注意:该项目只展示部分功能,如需了解,评论区咨询即可。
希望和大家多多交流!!
源码项目、定制开发、代码讲解、答辩辅导

相关文章:

  • 蓝凌OA漏洞分析与处置方案
  • JAVA基础(四十五)——集合之Map接口
  • Python+审计实务与案例分析库 毕业设计-附源码211526
  • ES6--》对象扩展方法
  • 安卓在任意位置打开drawerLayout
  • 对一个即将上线的网站,如何做一个较完整的Web应用/网站测试?
  • 新授粉方式的花授粉算法-附代码
  • 毕业设计之基于springboot+uniapp的租房小程序
  • 一种改进的混合阿奎拉鹰和哈里斯鹰优化算法
  • ubuntu16 虚拟机单盘扩容
  • 几个简单的JavaScript面试题
  • 和月薪3W的聊过后,才知道自己一直在打杂...
  • Elasticsearch 8.X 路径检索的企业级玩法
  • 为什么不试试神奇的3407呢?
  • 达梦数据库中序列(SEQUENCE)的用法
  • Iterator 和 for...of 循环
  • jquery ajax学习笔记
  • Lucene解析 - 基本概念
  • MySQL-事务管理(基础)
  • React中的“虫洞”——Context
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 反思总结然后整装待发
  • 记录一下第一次使用npm
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端攻城师
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 学习ES6 变量的解构赋值
  • scrapy中间件源码分析及常用中间件大全
  • ​520就是要宠粉,你的心头书我买单
  • # 安徽锐锋科技IDMS系统简介
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (vue)页面文件上传获取:action地址
  • (规划)24届春招和25届暑假实习路线准备规划
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十六)Flask之蓝图
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • ******之网络***——物理***
  • ***检测工具之RKHunter AIDE
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET基础篇——反射的奥妙
  • .NET应用架构设计:原则、模式与实践 目录预览
  • /dev下添加设备节点的方法步骤(通过device_create)
  • [ANT] 项目中应用ANT
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [Java性能剖析]Sun JDK基本性能剖析工具介绍
  • [JS]JavaScript 简介
  • [Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目
  • [Oracle][Metadata]如何查找与某一个功能相关的数据字典名
  • [Paper]Cardiologist-Level Arrhythmia Detection with Convolutional Neural Networks
  • [POJ2446] Chessboard(二分图最大匹配-匈牙利算法)