基于Python的个性化电影推荐系统的设计与实现

收藏关注不迷路


前言

基于Python的个性化电影推荐系统的现状,然后调研开发这一系统的主流技术,最终选择通过Python的Django框架开发,选择轻量级的关系型MySQL数据库存储数据。接着进行系统的需求分析、功能设计、数据库设计,最后进行编码实现。基于Python的个性化电影推荐系统主要包括了电影数据爬取、数据采集、数据存储、数据清洗、数据分析、数据可视化和后台信息管理。

关键词:Django;电影推荐;python;用户偏好;

一、项目介绍

本基于Python的个性化电影推荐系统使用面向对象的设计思想进行设计,完成需求分析、系统设计、系统实现和测试。
技术上,后台使用django框架, Python语言、MYSQL数据库等技术进行开发。首先,分析系统的需求分析,通过用理图进行用户功能描述。然后对基于Python的个性化电影推荐系统进行整合,梳理业务流程,建立模块组织,实现系统功能。同时设计系统架构和网络拓扑结构,根据基于Python的个性化电影推荐系统的功能搭建数据库模型,由此设计数据库架构。根据功能设计,数据库设计架构设计,使用Python技术进行实现

二、开发环境

开发语言:Python
python框架:django
软件版本:python3.7/python3.8
数据库:mysql 5.7或更高版本
数据库工具:Navicat11
开发软件:PyCharm/vs code
前端框架:vue.js
————————————————

三、功能介绍

通过对电影公司的调研,了解到基于Python的个性化电影推荐系统需要为电影公司提供基本的电影推荐服务,并为会员提供在线评价业务。所以从功能上划分了两种用户,分别是会员和管理员。
管理员指的是电影公司管理人员或者操作员,通过基于Python的个性化电影推荐系统来完成日常的电影信息管理,包括发布一些基本的电影类型,通过电影类型来爬取电影信息,通过豆瓣电影网进行数据分析,爬取。
前台会员可以查询所有的电影信息列表,观看新片的介绍,在电影详情页面中提供评分的功能。用户评分前需要先进行登录,在会员的个人中心,可以查询所有的历史评分。基于Python的个性化电影推荐系统还需要提供电影推荐功能,为用户推荐最新的电影和受欢迎的电影,会员还可以通过系统查看电影公司的电影资讯,了解当前的电影介绍等等。

3.3 系统用例

3.3.1 会员功能需求

游客访问基于Python的个性化电影推荐系统后,点击注册,完成信息的填写,得到登录的用户名和密码,完成登录后才可以进行。会员在个人中心中可以查看评分情况,还可以对个人的信息进行修改。
会员的用例图如3.1所示:
在这里插入图片描述

图3-1 会员用例图

3.3.2 管理员功能需求

管理员具有基于Python的个性化电影推荐系统的所有权限,主要通过后台来进行信息的管理,包括电影类型的管理、电影的爬取、会员的管理和会员的评论管理以及电影资讯信息的管理。
管理员的用例图如3.2所示
在这里插入图片描述

图3-2 管理员用例图

4.1系统详细设计

4.1.1功能设计

基于Python的个性化电影推荐系统包括前后台两个方面,而功能上主要包括用户管理、电影资讯管理、评论管理、电影推荐、电影爬取、系统管理、可视化大屏分析。
其中系统功能结构图如4.1所示:
在这里插入图片描述

图4.1 系统功能结构图
在前台主要包括首页、查看电影资讯、电影信息,电影评论。
基于Python的个性化电影推荐系统的首页包括了logo信息、导航信息、电影信息推荐和底部信息。在首页中通过导航栏可以跳转到对应的功能页面,在电影信息推荐中,通过后台的推荐信息查看对应的电影。
前台用户可以查看电影资讯,在电影资讯模块中包括电影资讯,图片资讯内容和标题。
后台管理员通过管理权进行登录,然后进行电影管理、评分管理、资讯管理、会员信息管理、电影排名榜管理、系统管理。
在电影管理中,选择电影的分类信息后,填写电影基本内容,通过语句生成数据库记录。在电影信息列表中,也可以对电影的信息进行修改或者删除。
电影资讯管理员发布相关热播电影的拍摄信息、宣传片、主演的情况等等。
会员信息管理,管理员可以查看前台注册的会员记录,注册日期等。
可视化大屏分析,通过对电影数据分析,得出可视化大屏信息,包括电影类型统计、地区分布统计、语言分类统计、电影总数统计、每日上映数量统计、电影时长统计。

四、核心代码

部分代码:


def users_login(request):
    if request.method in ["POST", "GET"]:
        msg = {'code': normal_code, "msg": mes.normal_code}
        req_dict = request.session.get("req_dict")
        if req_dict.get('role')!=None:
            del req_dict['role']
        datas = users.getbyparams(users, users, req_dict)
        if not datas:
            msg['code'] = password_error_code
            msg['msg'] = mes.password_error_code
            return JsonResponse(msg)

        req_dict['id'] = datas[0].get('id')
        return Auth.authenticate(Auth, users, req_dict)


def users_register(request):
    if request.method in ["POST", "GET"]:
        msg = {'code': normal_code, "msg": mes.normal_code}
        req_dict = request.session.get("req_dict")

        error = users.createbyreq(users, users, req_dict)
        if error != None:
            msg['code'] = crud_error_code
            msg['msg'] = error
        return JsonResponse(msg)


def users_session(request):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code,"msg":mes.normal_code, "data": {}}

        req_dict = {"id": request.session.get('params').get("id")}
        msg['data'] = users.getbyparams(users, users, req_dict)[0]

        return JsonResponse(msg)


def users_logout(request):
    if request.method in ["POST", "GET"]:
        msg = {
            "msg": "退出成功",
            "code": 0
        }

        return JsonResponse(msg)


def users_page(request):
    '''
    '''
    if request.method in ["POST", "GET"]:
        msg = {"code": normal_code, "msg": mes.normal_code,
               "data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}
        req_dict = request.session.get("req_dict")
        tablename = request.session.get("tablename")
        try:
            __hasMessage__ = users.__hasMessage__
        except:
            __hasMessage__ = None
        if __hasMessage__ and __hasMessage__ != "否":

            if tablename != "users":
                req_dict["userid"] = request.session.get("params").get("id")
        if tablename == "users":
            msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
            msg['data']['pageSize'] = users.page(users, users, req_dict)
        else:
            msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
            msg['data']['pageSize'] = [],1,0,0,10

        return JsonResponse(msg)


五、效果图

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

六、文章目录

目 录
摘 要 I
Abstract II
第一章 绪论 1
1.1 选题背景 1
1.2 选题意义 1
1.3 研究内容 2
1.4 本章小节 2
第二章 相关技术介绍 3
2.1 Python语言 3
2.2 Django框架 3
2.3 Mysql数据库 4
2.4 协同过滤推荐算法 4
2.5本章小节 5
第三章 系统分析 6
3.1可行性分析 6
3.1.1 法律可行性 6
3.1.2 经济可行性 6
3.1.3 技术可行性 6
3.2 需求分析 6
3.2.1非功能性需求 6
3.2.2功能需求 7
3.3 系统用例 7
3.3.1 会员功能需求 7
3.3.2 管理员功能需求 8
3.4本章小节 9
第四章 系统设计 10
4.1系统详细设计 10
4.1.1功能设计 10
4.2.2电影推荐设计 11
4.2 数据库设计 12
4.2.1逻辑结构设计 12
4.2.2物理结构设计 13
4.3本章小节 18
第五章 系统实现 19
5.1 运行环境 19
5.2 后台管理功能实现 19
5.2.1管理员登录 19
5.2.2管理主界面 20
5.2.3电影类型管理 20
5.2.3电影管理 21
5.2.4用户管理 22
5.2.5可视化大屏实现 22
5.3 前台用户功能实现 23
5.3.1会员注册 23
5.3.2会员登录 23
5.3.3电影查看 24
5.3.4用户评论 25
5.4本章小节 26
第六章 系统测试 27
6.1 测试目的 27
6.2 功能测试 27
6.3 测试总结 29
6.4本章小节 29
总结 30
参考文献 31
谢 辞 32

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值