文末获取资源,收藏关注不迷路
一、项目介绍
这些年,随着国内经济的发展,各项文娱活动在人们生活中占据了重要地位。电影作为放松心灵、陶冶情操的手段,受到人们的青睐。目前各行业发展迅速、竞争激烈。通过大数据进行数据分析,找到电影下一部发展方向,是各电影公司的目标。客户通过观看电影,产生大量特征信息。利用大数据可以统计出用户偏好,购买习惯。为电影企业的发展策略提供了方向。因此,基于Python的个性化电影推荐系统在这种情况下应运而生。
论文先介绍当前基于Python的个性化电影推荐系统的现状,然后调研开发这一系统的主流技术,最终选择通过Python的Django框架开发,选择轻量级的关系型MySQL数据库存储数据。接着进行系统的需求分析、功能设计、数据库设计,最后进行编码实现。基于Python的个性化电影推荐系统主要包括了电影数据爬取、数据采集、数据存储、数据清洗、数据分析、数据可视化和后台信息管理。
选题背景
随着计算机信息技术的发展,越来越多的企事业单位使用管理系统来进行业务管理。在我国,随着互联网+概念的提出,加快了计算机技术的融合,在电影事业中也逐渐发展为以网络管理为主要形式的经营方向,对电影的发展具有巨大的帮助。
当前,虽然国内电影发展速度迅速,电影的内容和质量得到了明显的提升,但是在经营管理方面还存在一些问题。一些中小型电影公司还只能通过人工方式进行推广,浪费了很多的人力物力,并和目前信息化发展不符。当然,也存在一些专业电影网站,通过新歌发布形式参与推广,但是这种管理模式比较单一,信息更新缓慢,投资也大。在此情况下,电影公司需要开发一个针对自身发展的管理系统,提高管理效率,并进行电影的宣传,提高播放量。开发本基于Python的个性化电影推荐系统的目的正是利用计算机信息技术的先进理念,将科学化管理用在电影推广中,提升后台管理人员的效率,推动电影公司的发展。
在当前电子商务快速发展的时期,各种销售模式逐渐转移到网络中来。基于Python的个性化电影推荐系统正是电子商务的一种形式,通过网络的方式完成电影的推广,提供数据采集、数据存储、数据清洗、数据分析等操作。
选题意义
在当前各行业内卷严重的经济环境下,电影公司之间的竞争异常激烈,如果不依靠先进理念进行管理,势必会被社会淘汰。开发本基于Python的个性化电影推荐系统,正是在信息化发展的背景下,帮助电影公司提高推广效率,同时为用户提供自主的推荐方式,并通过个人中心查询收藏和评论情况。结合电影公司的具体实际,梳理电影公司的工作流程,开发出适合电影公司发展的基于Python的个性化电影推荐系统,减少电影公司的人工投入,并通过系统的宣传信息,发展更多的会员来进行试听电影,有利于电影可持续发展。
基于Python的个性化电影推荐系统可以帮助会员进行评分,首页提供最新热播的电影信息,用户通过推荐的电影,查看电影详情,激发用户的收听热情,同时系统可以根据用户的收听历史和浏览情况为用户进行个性化推荐。在交流环节中,用户也可以查看其他用户的听电影感受来选择是否进行收听。所以基于Python的个性化电影推荐系统为会员提供了人性化的服务,便于电影的推广。
二、主要使用技术
环境需要
1.运行环境:python3.7/python3.8。
2.IDE环境:pycharm+mysql5.7;
3.数据库工具:Navicat11
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
技术栈
后端:python+django
前端:vue+CSS+JavaScript+jQuery+elementui
使用说明
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
使用PyCharm 导入项目,修改配置,运行项目;
将项目中config.ini配置文件中的数据库配置改为自己的配置,然后运行;
运行成功后,在浏览器中输入:http://localhost:8080/项目名
三、研究内容
通过对电影公司的调研,了解到基于Python的个性化电影推荐系统需要为电影公司提供基本的电影推荐服务,并为会员提供在线评价业务。所以从功能上划分了两种用户,分别是会员和管理员。
管理员指的是电影公司管理人员或者操作员,通过基于Python的个性化电影推荐系统来完成日常的电影信息管理,包括发布一些基本的电影类型,通过电影类型来爬取电影信息,通过豆瓣电影网进行数据分析,爬取。
前台会员可以查询所有的电影信息列表,观看新片的介绍,在电影详情页面中提供评分的功能。用户评分前需要先进行登录,在会员的个人中心,可以查询所有的历史评分。基于Python的个性化电影推荐系统还需要提供电影推荐功能,为用户推荐最新的电影和受欢迎的电影,会员还可以通过系统查看电影公司的电影资讯,了解当前的电影介绍等等。
在前台主要包括首页、查看电影资讯、电影信息,电影评论。
基于Python的个性化电影推荐系统的首页包括了logo信息、导航信息、电影信息推荐和底部信息。在首页中通过导航栏可以跳转到对应的功能页面,在电影信息推荐中,通过后台的推荐信息查看对应的电影。
前台用户可以查看电影资讯,在电影资讯模块中包括电影资讯,图片资讯内容和标题。
后台管理员通过管理权进行登录,然后进行电影管理、评分管理、资讯管理、会员信息管理、电影排名榜管理、系统管理。
在电影管理中,选择电影的分类信息后,填写电影基本内容,通过语句生成数据库记录。在电影信息列表中,也可以对电影的信息进行修改或者删除。
电影资讯管理员发布相关热播电影的拍摄信息、宣传片、主演的情况等等。
会员信息管理,管理员可以查看前台注册的会员记录,注册日期等。
可视化大屏分析,通过对电影数据分析,得出可视化大屏信息,包括电影类型统计、地区分布统计、语言分类统计、电影总数统计、每日上映数量统计、电影时长统计。
管理员具有基于Python的个性化电影推荐系统的所有权限,主要通过后台来进行信息的管理,包括电影类型的管理、电影的爬取、会员的管理和会员的评论管理以及电影资讯信息的管理。
游客访问基于Python的个性化电影推荐系统后,点击注册,完成信息的填写,得到登录的用户名和密码,完成登录后才可以进行。会员在个人中心中可以查看评分情况,还可以对个人的信息进行修改。
四、核心代码
# coding:utf-8
__author__ = "ila"
from django.http import JsonResponse
from .users_model import users
from util.codes import *
from util.auth import Auth
import util.message as mes
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)
def users_info(request, id_):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
data = users.getbyid(users, users, int(id_))
if len(data) > 0:
msg['data'] = data[0]
# 浏览点击次数
try:
__browseClick__ = users.__browseClick__
except:
__browseClick__ = None
if __browseClick__ and "clicknum" in users.getallcolumn(users, users):
click_dict = {"id": int(id_), "clicknum": str(int(data[0].get("clicknum", 0)) + 1)}
ret = users.updatebyparams(users, users, click_dict)
if ret != None:
msg['code'] = crud_error_code
msg['msg'] = ret
return JsonResponse(msg)
def users_save(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get("req_dict")
req_dict['role'] = '管理员'
error = users.createbyreq(users, users, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def users_update(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get("req_dict")
if req_dict.get("mima") and req_dict.get("password"):
if "mima" not in users.getallcolumn(users,users):
del req_dict["mima"]
if "password" not in users.getallcolumn(users,users):
del req_dict["password"]
try:
del req_dict["clicknum"]
except:
pass
error = users.updatebyparams(users, users, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def users_delete(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get("req_dict")
error = users.deletes(users,
users,
req_dict.get("ids")
)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
五、文章目录
1系统概述 1
1.1 研究背景 1
1.2研究目的 1
1.3系统设计思想 1
2相关技术 3
2.1 MYSQL数据库 3
2.2 B/S结构 3
2.3 Djangot框架简介 4
2.4 VUE框架 4
3系统分析 5
3.1可行性分析 5
3.1.1技术可行性 5
3.1.2经济可行性 5
3.1.3操作可行性 5
3.2系统性能分析 6
3.2.1 系统安全性 6
3.2.2 数据完整性 6
3.3系统界面分析 6
3.4系统流程和逻辑 8
4系统概要设计 9
4.1概述 9
4.2系统结构 10
4.3.数据库设计 11
4.3.1数据库实体 11
4.3.2数据库设计表 13
5系统详细实现 17
5.1 管理员模块的实现 17
5.2用户模块的实现 19
6系统测试 21
6.1概念和意义 21
6.2特性 22
6.3重要性 22
6.4测试方法 23
6.5 功能测试 23
6.6可用性测试 24
6.7性能测试 24
6.8测试分析 24
6.9测试结果分析 25
结论 25
致谢语 26
参考文献 26