SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统

末获取源码 

开发语言:Java

开发工具:IDEA /Eclipse

数据库:MYSQL5.7

应用服务:Tomcat7/Tomcat8

使用框架ssm+vue

JDK版本:jdk1.8

前言介绍 

“互联网+”的战略实施后,很多行业的信息化水平都有了很大的提升。但是目前很多行业的管理仍是通过人工管理的方式进行,需要在各个岗位投入大量的人力进行很多重复性工作,使得对人力物力造成诸多浪费,工作效率不高等情况;同时为后续的工作带来了隐患。并且现有的电影推荐系统由于用户的体验感较差、系统流程不完善导致系统的使用率较低。此基于协同过滤算法的电影推荐系统的部署与应用,将对首页,个人中心,用户管理,电影分类管理,免费电影管理,付费电影管理,电影订单管理,我的电影管理,电影论坛,系统管理等功能进行管理,这可以简化管理工作程序、降低劳动成本、提高业务效率和工作效率。为了有效推动个性化智能电影推荐资源的合理配置和使用,适应现代个性化智能电影推荐机构的管理办法,迫切需要研发一套更加全面的基于协同过滤算法的电影推荐系统。

本课题在充分研究了ssm框架基础上,采用B/S模式,以Java为开发语言,Eclipse为开发工具,MySQL为数据管理平台,实现的内容主要包括首页,个人中心,用户管理,电影分类管理,免费电影管理,付费电影管理,电影订单管理,我的电影管理,电影论坛,系统管理等功能。

系统实现的功能

本次设计任务是要设计一个基于协同过滤算法的电影推荐系统,通过这个系统能够满足电影推荐的管理功能。系统的主要包括首页,个人中心,用户管理,电影分类管理,免费电影管理,付费电影管理,电影订单管理,我的电影管理,电影论坛,系统管理等功能。

管理员可以根据系统给定的账号进行登录,登录后可以进入电影推荐系统对个性化智能电影推荐所有模块进行管理。包括查看和修改自己的个人信息以及登录密码。

该系统为每一个用户都分配了一个用户账号,用户通过账号的登录可以在系统中查看个性化智能电影推荐信息及对个人信息进行修改等功能。

系统结构功能图

SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统_第1张图片

系统功能模块

电影推荐系统,在系统首页可以查看首页,免费电影,付费电影,电影论坛,电影资讯,个人中心等内容,并进行详细操作;如图

 

用户注册

在用户注册页面通过填写用户名,姓名,密码,确认密码,年龄,手机号等内容进行注册操作,如图 

 SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统_第2张图片

免费电影

在免费电影页面可以查看电影编号,电影分类,评分,开映时间,时长,导演,主演,点击次数等信息,并进行赞一下,踩一下,点我收藏等操作,如图

SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统_第3张图片

个人中心

在个人中心页面通过填写用户名,姓名,密码,性别,年龄,手机号等内容进行更新信息,还可以根据需要对我的发布,我的收藏进行相对应操作,如图 

SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统_第4张图片

付费电影

在付费电影页面可以查看电影名称,电影编号,电影分类,价格,评分,开映时间,时长,主演,导演,点击次数等信息,并进行立即付费,赞一下,踩一下等操作,如图 

SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统_第5张图片

管理员功能模块 

后台登录,管理员进入系统前在登录页面根据要求填写用户名和密码,选择角色等信息,点击登录进行登录操作,如图 

管理员登录系统后,可以对首页,个人中心,用户管理,电影分类管理,免费电影管理,付费电影管理,电影订单管理,我的电影管理,电影论坛,系统管理等功能进行相应的操作,如图

SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统_第6张图片

用户管理

在用户管理页面可以对索引,用户名,姓名,性别,年龄,手机号等内容进行详情,修改和删除操作,如图 

SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统_第7张图片

免费电影管理

在免费电影管理页面可以对索引,电影编号,电影名称,视频,海报,评分,开映时间,时长,主演,导演等内容进行详情,修改,查看评论和删除操作,如图 

SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统_第8张图片

付费电影管理

在付费电影管理页面可以对索引,电影编号,电影名称,预告片,价格,海报,评分,开映时间,时长,主演,导演等内容进行详情,修改,查看评论和删除操作,如图 

SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统_第9张图片

电影订单管理

在电影订单管理页面可以对 索引,订单编号,电影编号,电影名称,价格,用户名,姓名,手机号,购买时间,是否支付等内容进行详情,我的电影,修改和删除等操作;如图 

SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统_第10张图片

我的电影管理

在我的电影管理页面可以对索引,单编号,电影编号,电影名称,价格,用户名,姓名,手机号,电影链接等内容进行详情和删除操作,如图 

SpringMVC+Vue实现前后端的协同过滤算法电影推荐系统_第11张图片

部分核心代码:  

/**
 * 付费电影
 * 后端接口
 * @author 
 * @email 
 * @date 2022-04-06 21:42:07
 */
@RestController
@RequestMapping("/fufeidianying")
public class FufeidianyingController {
    @Autowired
    private FufeidianyingService fufeidianyingService;


    @Autowired
    private StoreupService storeupService;

    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map params,FufeidianyingEntity fufeidianying, 
		HttpServletRequest request){

        EntityWrapper ew = new EntityWrapper();
		PageUtils page = fufeidianyingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fufeidianying), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map params,FufeidianyingEntity fufeidianying, 
		HttpServletRequest request){
        EntityWrapper ew = new EntityWrapper();
		PageUtils page = fufeidianyingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fufeidianying), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( FufeidianyingEntity fufeidianying){
       	EntityWrapper ew = new EntityWrapper();
      	ew.allEq(MPUtil.allEQMapPre( fufeidianying, "fufeidianying")); 
        return R.ok().put("data", fufeidianyingService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(FufeidianyingEntity fufeidianying){
        EntityWrapper< FufeidianyingEntity> ew = new EntityWrapper< FufeidianyingEntity>();
 		ew.allEq(MPUtil.allEQMapPre( fufeidianying, "fufeidianying")); 
		FufeidianyingView fufeidianyingView =  fufeidianyingService.selectView(ew);
		return R.ok("查询付费电影成功").put("data", fufeidianyingView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        FufeidianyingEntity fufeidianying = fufeidianyingService.selectById(id);
		fufeidianying.setClicknum(fufeidianying.getClicknum()+1);
		fufeidianying.setClicktime(new Date());
		fufeidianyingService.updateById(fufeidianying);
        return R.ok().put("data", fufeidianying);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        FufeidianyingEntity fufeidianying = fufeidianyingService.selectById(id);
		fufeidianying.setClicknum(fufeidianying.getClicknum()+1);
		fufeidianying.setClicktime(new Date());
		fufeidianyingService.updateById(fufeidianying);
        return R.ok().put("data", fufeidianying);
    }
    


    /**
     * 赞或踩
     */
    @RequestMapping("/thumbsup/{id}")
    public R thumbsup(@PathVariable("id") String id,String type){
        FufeidianyingEntity fufeidianying = fufeidianyingService.selectById(id);
        if(type.equals("1")) {
        	fufeidianying.setThumbsupnum(fufeidianying.getThumbsupnum()+1);
        } else {
        	fufeidianying.setCrazilynum(fufeidianying.getCrazilynum()+1);
        }
        fufeidianyingService.updateById(fufeidianying);
        return R.ok();
    }

    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody FufeidianyingEntity fufeidianying, HttpServletRequest request){
    	fufeidianying.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(fufeidianying);

        fufeidianyingService.insert(fufeidianying);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody FufeidianyingEntity fufeidianying, HttpServletRequest request){
    	fufeidianying.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(fufeidianying);

        fufeidianyingService.insert(fufeidianying);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody FufeidianyingEntity fufeidianying, HttpServletRequest request){
        //ValidatorUtils.validateEntity(fufeidianying);
        fufeidianyingService.updateById(fufeidianying);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        fufeidianyingService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper wrapper = new EntityWrapper();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = fufeidianyingService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	/**
     * 前端智能排序
     */
	@IgnoreAuth
    @RequestMapping("/autoSort")
    public R autoSort(@RequestParam Map params,FufeidianyingEntity fufeidianying, HttpServletRequest request,String pre){
        EntityWrapper ew = new EntityWrapper();
        Map newMap = new HashMap();
        Map param = new HashMap();
		Iterator> it = param.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry entry = it.next();
			String key = entry.getKey();
			String newKey = entry.getKey();
			if (pre.endsWith(".")) {
				newMap.put(pre + newKey, entry.getValue());
			} else if (StringUtils.isEmpty(pre)) {
				newMap.put(newKey, entry.getValue());
			} else {
				newMap.put(pre + "." + newKey, entry.getValue());
			}
		}
		params.put("sort", "clicknum");
        
        params.put("order", "desc");
		PageUtils page = fufeidianyingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fufeidianying), params), params));
        return R.ok().put("data", page);
    }


    /**
     * 协同算法(按收藏推荐)
     */
    @RequestMapping("/autoSort2")
    public R autoSort2(@RequestParam Map params,FufeidianyingEntity fufeidianying, HttpServletRequest request){
        String userId = request.getSession().getAttribute("userId").toString();
        String inteltypeColumn = "dianyingfenlei";
        List storeups = storeupService.selectList(new EntityWrapper().eq("type", 1).eq("userid", userId).eq("tablename", "fufeidianying").orderBy("addtime", false));
        List inteltypes = new ArrayList();
        Integer limit = params.get("limit")==null?10:Integer.parseInt(params.get("limit").toString());
        List fufeidianyingList = new ArrayList();
        //去重
        if(storeups!=null && storeups.size()>0) {
            for(StoreupEntity s : storeups) {
                fufeidianyingList.addAll(fufeidianyingService.selectList(new EntityWrapper().eq(inteltypeColumn, s.getInteltype())));
            }
        }
        EntityWrapper ew = new EntityWrapper();
        params.put("sort", "id");
        params.put("order", "desc");
        PageUtils page = fufeidianyingService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, fufeidianying), params), params));
        List pageList = (List)page.getList();
        if(fufeidianyingList.size()

你可能感兴趣的:(课程设计,毕业设计,java,前端,后端,vue,spring)