第一章 绪论
1.1 选题背景和意义
互联网视听资源呈爆发式增长态势,各类音视频平台每天新产生的内容数量数以万计。用户面对众多的信息时很难从中挑选出自己想要的内容,从而出现信息过载的情况越来越严重。传统的资源检索方式依靠用户主动输入关键词,这种模式要求用户知道自己想要什么,但是不能帮助用户发现新的感兴趣的内容。个性化推荐技术随之出现,它利用用户的行为数据来预测用户的偏好,把最有可能吸引用户的内容主动地呈现在用户面前1。辛欣认为大数据技术给内容分发模式带来根本性的改变,由原来的"人找信息"变成现在的"信息找人"。纪少丹认为新媒体技术使得内容传播途径变得多样化起来,用户行为数据成了改善分发效率的关键资源2。王宗昌认为网络技术和媒体内容的融合,给智能推荐系统创建提供良好的技术支持。在此时,创建起基于协同过滤算法的基础视听资源推荐系统,能够有效地解决用户面对大量资源的时候,出现选择困难的情况,进而提升资源的利用率和用户的满意度3。
本文所设计的视听资源推荐系统具有较好的应用前景。就用户体验来说,系统通过对用户的浏览、收藏、点赞等行为进行分析,得到用户的个性化兴趣画像,然后根据用户的兴趣画像来推荐符合用户兴趣的视听资源,大大减少用户查找感兴趣的内容的时间成本。从管理效率的角度来说,系统给管理员赋予了可视化的资源管理界面,可以对用户信息,资源类型以及音视频内容展开统一的维护工作,把分散的管理操作转变成集中化的管理流程。就数据价值挖掘来说,系统把用户的行动数据变成推荐决定的支撑,让沉睡的数据资产产生实际的效益。该系统不但可以满足单一平台内容分发的需求,而且其设计思想和技术方案对于其他类型资源推荐系统的设计和实现也有一定的借鉴意义,有利于个性化推荐技术在更多领域内的推广和应用。
1.2 国内外研究现状
近几年来,国内视听资源推荐领域的研究取得了很大的进步。早期推荐系统大多用到基于内容的过滤法,依靠对资源特征进行显式的标注来实现,这种方法在面对大量非结构化视听内容的时候存在特征提取困难的问题。随着机器学习技术的发展,协同过滤方法也成为了研究的热点,它主要依靠用户群体行为的一致性来进行推荐,不需要对资源内容做深入的分析。国内学者对推荐算法的改进以及应用进行了大量的研究,从不同的角度出发,寻找提高推荐质量的方法。
王常林、卢中华4认为大数据算力提升和企业资源优化相联系,论述了数据驱动决策机制对于资源配置的重要意义,他们的研究思路给推荐系统里用户行为数据价值挖掘赋予了理论参照。陈康5论述了数字媒体技术给传统内容分发方式带来的冲击,认为现代用户对于个性化体验的要求已经超出了简单的内容聚合,这就需要推荐系统具有很强的理解用户意图的能力。代娜6把AI技术运用到音乐教学环境当中,创建起个性化的学习模式,其研究里有关用户特征建模的方法,可以给推荐系统里的用户画像塑造提供参照。王思烨7就疗愈类音乐的情感适配问题开展研究,探寻了依照用户情绪状况来达成资源匹配的方法,把用户状态加入到推荐考虑范畴当中,这便冲破了传统推荐系统只看重历史行为这一限制。段艺、涂伟忠在Django开发实践当中对推荐系统后端架构的实现做了详细的论述,给系统技术选型提供一定的借鉴。
国外对于推荐算法的研究开始的比较早,理论体系也更加完善。林Q等8提出一种将LDA主题模型和用户行为结合起来的个性化教育资源推荐的方法,用语义关联挖掘来提高推荐的准确性。Kulkarni S等9设计出一种分层膨胀鹦鹉因果卷积网络来提高人力资源推荐场景下匹配的速度,其网络结构的设计对于序列化用户行为数据的处理有借鉴意义。张雪等人10就多域融合网络在资源推荐方面的应用进行了研究,利用各个领域所具有的不同的特征来提高模型的泛化性能。Su Z11提出了一个以用户影响力为依据的协同过滤模型,在电子协作环境里实现了自适应的教育资源推荐,突出的是用户社会关系对于推荐结果的影响。Gao S12把物联网位置上下文信息加入到英文教学资源推荐当中,证明场景感知对于提高推荐相关性有积极的作用。这些研究从不同的技术途径出发,对推荐系统的改进方向做了探索,给本文的系统设计赋予了诸多的理论储备和技术参照。
1.3 研究内容
本文的主要工作就是设计并实现一个基于协同过滤算法的视听资源推荐系统。研究工作从需求分析开始,对平台用户和管理端两个角色的功能要求进行梳理,确定系统需要提供哪些主要的服务范围。系统设计阶段使用前后端分离架构,后端用Spring Boot搭建RESTful API服务层,前端用Vue.js做交互界面开发,数据库用MySQL做数据持久化管理。系统实现部分分为两个模块,一个是用户端的资源浏览、检索、收藏、点赞、历史记录查看等面向普通用户的功能,另一个是管理端的平台用户管理、资源类型设置、视频和音频内容管理、通知公告和新闻资讯发布、问卷调查管理等面向管理人员的功能。协同过滤算法是系统的主要推荐引擎,它通过用户的动作数据来计算用户之间或者资源之间的相似度,从而给出个性化的推荐结果。系统测试阶段使用黑盒测试的方法来检验各项功能是否可以正常工作。本文主要研究推荐系统完整的实现过程,并且不涉及对算法底层数学原理的推导,主要目的是把算法和业务场景结合起来,形成可以运行的软件系统。
第二章 相关技术介绍
2.1 Spring Boot框架
Spring Boot框架属于基于Spring生态的快速应用开发框架,它的主要价值就是降低传统Spring应用的配置复杂度。该框架使用约定优于配置的思想,用自动配置的方式减少开发人员对于XML配置文件手工编写的工作量。框架内包含有Tomcat、Jetty等Servlet容器,将应用打包之后可以直接运行,不需要单独部署WAR文件。Spring Boot提供了很多Starter依赖包,把常用的技术栈的依赖整合成一个模块,大大降低了依赖管理的复杂度。本系统后端服务使用Spring Boot来创建,利用其提供的RESTful API开发支持,把业务逻辑封装成独立的服务接口。框架具备自动配置的能力,使得开发人员可以将精力集中到业务代码的编写上,而不会去费心地处理底层基础设施的搭建。周德伟13在数据库开发实践中对Spring Boot和持久层框架的集成方式进行了详细的论述,给系统数据访问层的实现提供技术参考。Spring Boot起步依赖机制把项目所需要的各个库统一管理,避免了版本冲突的问题,提高了开发效率和系统的稳定性。
2.2 Vue.js框架
Vue.js是基于JavaScript的一种渐进式的用户界面构建工具,它的主要库只关注视图层,使用声明式渲染和组件化开发的方式。框架依靠响应式数据绑定机制,使得模型数据和DOM视图保持同步,开发者只需要关注数据状态的变化,界面就会自动完成更新。Vue.js的组件系统把页面分割成一个个独立的、可重复使用的模块,每一个组件都封装了自己的数据、逻辑和样式,这样的模块化结构使代码更加易于维护和复用。框架还提供了丰富的生态系统,包含路由管理Vue Router和状态管理Vuex,可以用来创建复杂的单页应用。本系统前端界面使用Vue.js开发,用组件化的方式把导航栏、资源列表、搜索表单等界面元素封装成独立的组件。响应式数据绑定机制使得界面的状态和用户的操作是实时同步的,给用户带来良好的交互体验。季甜甜、刘冬冬14对Vue前端性能进行系统的探究,给本系统前端响应速度提升给予实践指引。
2.3 MySQL数据库
MySQL是目前使用最广的开源关系型数据库管理系统,成熟稳定、性能优异的特点使它成为中小型应用系统的数据存储方案。数据库使用标准的SQL语句,包含事务处理、索引优化、视图存储等全部的数据库功能。MySQL使用客户端/服务器架构,可以同时对多个用户进行数据访问,用连接池来管理数据库的连接。InnoDB存储引擎是MySQL的默认存储引擎,行级锁定、外键约束可以保证数据的一致性,但是会降低并发性能。本系统使用MySQL做数据持久化存储,按照业务需求设计了用户表、资源表、行为记录表等主要的数据表。数据库的事务特性可以保证用户的行动数据一致性,索引的优化可以加快资源的检索速度。马艳艳、吴晓光15对计算机软件和数据库的设计策略进行分析,其提出的数据组织原则在本系统数据库表结构设计中得到了应用。胡劲对数据库信息管理系统逻辑结构设计进行研究,给本系统数据访问层实现提供借鉴。
2.4 协同过滤算法
协同过滤算法是推荐系统中使用最广的技术之一,它的主要思想就是用群体智慧来实现个性化推荐。算法假定用户过去的行为偏好具有一致性,并且相似的用户会对同样的资源产生类似的兴趣。根据这个假设,协同过滤就是分析用户的过去的行为数据,计算用户之间或者资源之间的相似度,从而给目标用户推荐可能感兴趣的但是还没有接触过的资源。协同过滤分为基于用户协同过滤和基于物品的协同过滤两种16。前者寻找和目标用户兴趣相似的其它用户,把它们喜欢的资源推荐给目标用户;后者根据用户的过去偏好资源,推荐与之相似的其它资源。两种方法都是用用户-资源交互矩阵来计算相似度,常用的相似度度量有余弦相似度和皮尔逊相关系数。本系统把协同过滤算法当作推荐引擎的主要部分,依靠收集用户的收藏、点赞、浏览这些隐式反馈来创建用户兴趣模型。当用户行为数据积累到一定程度的时候,系统离线计算出用户相似度矩阵,在线推荐阶段按照相似用户群体的偏好程度来生成个性化的推荐列表。Su Z提出的基于用户影响力的协同过滤模型,用用户社会关系权重来优化相似度计算,它的改进思路可以给本系统推荐结果的精准度提高提供一定的参考。协同过滤算法的加入使系统由原来的被动响应用户检索变成现在的主动推送符合用户喜好内容的模式,从而完成了资源分发方式的大转变。
第三章 系统分析
3.1 可行性分析
3.1.1 技术可行性
本系统使用前后端分离架构,后端用Spring Boot框架实现,Spring Boot框架具有完整的Web服务开发能力,可以提供路由映射、参数绑定、异常处理等基础功能。前端采用Vue.js框架,响应式数据绑定、组件化开发模式可以快速搭建出动态交互的界面。数据持久化使用MySQL数据库,MySQL数据库支持事务处理和复杂的查询,可以满足系统对于数据的一致性和检索性能的要求。开发工具方面,IntelliJ IDEA与Visual Studio Code均提供了完善的开发调试环境。上述技术栈在大量的实际项目中都得到了验证,技术成熟度高、社区活跃度高,在开发过程中遇到的技术问题可以得到充足的支援。因此系统开发具有技术上的可行性。
3.1.2 经济可行性
系统所用到的软件工具都是开源或者免费的,Spring Boot、Vue.js、MySQL等核心技术和无需支付授权费用。开发环境的搭建只用个人计算机,不需要购置专门的服务器。系统部署阶段可以使用云服务提供商的基础实例,前期成本低。系统运行以后,维护工作主要是由管理员在后台界面进行的,不需要专门的技术人员来操作。相比购买商业推荐系统解决方案来说,自行开发可以根据实际情况对系统进行功能上的调整,防止出现因为功能重复而造成资源浪费的情况。考虑开发成本、运行成本、维护成本三者后可知该系统具有经济性。
3.1.3 操作可行性
平台用户端界面设计以简洁直观为原则,资源列表用卡片式布局展示封面和标题,搜索框、筛选条件在页面顶部,用户可以使用关键词检索或者分类筛选找到想要的资源。收藏、点赞的操作都是单次点击,操作路径短,学习成本低。管理端界面是常用的后台管理系统左右结构,左侧导航栏集中显示功能入口,右侧内容区为操作面板。管理员可以使用表单录入、列表展示、弹窗编辑等方式来完成数据管理的工作。两类角色不需要接受专门的培训就可以熟练使用系统,操作的可行性较高。
3.2 功能需求分析
3.2.1 平台用户角色功能需求
平台用户在系统中可浏览视听资源、查看通知公告与新闻资讯、参与问卷调查、管理个人行为记录。用户通过关键词检索资源,筛选资源类型,对感兴趣的内容进行收藏与点赞。浏览历史自动记录,用户可随时查看过往访问内容。
图3-1平台用户用例图
3.2.2 管理员角色功能需求
管理员负责系统基础数据维护与业务内容管理。可对平台用户信息进行增删改查,配置资源类型分类,管理视频与音频资源的基本信息,发布通知公告与新闻资讯,设置调查问卷题目与开放状态。
图3-2管理员用例图
第四章 系统设计
4.1 系统架构设计
平台用户端界面设计以简洁直观为原则,资源列表用卡片式布局展示封面和标题,搜索框、筛选条件在页面顶部,用户可以使用关键词检索或者分类筛选找到想要的资源。收藏、点赞的操作都是单次点击,操作路径短,学习成本低。管理端界面是常用的后台管理系统左右结构,左侧导航栏集中显示功能入口,右侧内容区为操作面板。管理员可以使用表单录入、列表展示、弹窗编辑等方式来完成数据管理的工作。两类角色不需要接受专门的培训就可以熟练使用系统,操作的可行性较高。该系统的系统架构如图4-1所示。
图4-1系统架构图
4.2 功能结构设计
系统功能是围绕平台的用户和管理员这两类人来设计的。平台用户端有视听资源查看、通知公告查看、新闻资讯查看、问卷调查参与、个人记录管理这五个功能模块。视听资源模块可以检索、筛选、查看用户所收藏的视频和音频资源,也可以查看用户的个人记录(收藏记录、点赞记录、浏览记录)。管理端有平台用户管理、资源类型管理、视频资源管理、音频资源管理、通知公告管理、新闻资讯管理、问卷调查管理这七个功能模块。平台用户管理模块对用户的账号密码、个人信息等进行管理,并且进行审核,资源类型管理模块用来设置不同的资源种类和类别,音视频资源管理模块保存着资源的基本信息和推荐参数,内容发布模块可以添加公告或者新闻,还可以进行修改删除和查询操作,问卷调查模块对问卷内容以及发布状态进行管理。该系统的功能结构如图4-2所示。
图4-2系统功能结构图
4.3 业务流程设计
4.3.1 视听资源检索流程
用户通过关键词输入与资源类型筛选组合查询条件,系统根据条件从资源库中匹配相关内容,按排序规则返回结果列表供用户浏览。该流程的核心在于检索条件组合与结果排序逻辑。视听资源检索流程图如图4-3所示。
图4-3视听资源检索流程图
4.3.2 问卷调查答题流程
用户从问卷列表中选择启用状态的问卷进入答题页面,系统逐题呈现题目与选项,用户完成全部题目后提交答案。系统记录答题内容与提交时间,关闭答题页面。问卷调查答题流程图如图4-4所示。
图4-4问卷调查答题流程图
4.3.3 收藏记录管理流程
用户在资源详情页执行收藏操作,系统检查该资源是否已被当前用户收藏。若已收藏则提示用户取消操作或直接移除收藏;若未收藏则新增收藏记录,更新收藏状态提示。收藏记录管理流程图如图4-5所示。
图4-5收藏记录管理流程图
4.3.4 新闻资讯发布流程
管理员在后台填写新闻标题、正文内容、分类标签等基本信息,系统校验必填字段完整性后保存至数据库,前台页面同步显示最新发布的新闻。新闻资讯发布流程图如图4-6所示。
图4-6新闻资讯发布流程图
4.3.5 视频资源管理流程
管理员对视频资源执行新增、修改、删除或推荐设置操作。删除操作前系统检查资源关联数据,若存在用户收藏或点赞记录则提示确认。新增或修改的资源信息提交后同步更新资源列表展示。视频资源管理流程图如图4-7所示。
图4-7视频资源管理流程图
4.4 数据库设计
4.4.1 概念模型设计
系统功能是围绕平台的用户和管理员这两类人来设计的。平台用户端有视听资源查看、通知公告查看、新闻资讯查看、问卷调查参与、个人记录管理这五个功能模块17。视听资源模块可以检索、筛选、查看用户所收藏的视频和音频资源,也可以查看用户的个人记录(收藏记录、点赞记录、浏览记录)。管理端有平台用户管理、资源类型管理、视频资源管理、音频资源管理、通知公告管理、新闻资讯管理、问卷调查管理这七个功能模块。平台用户管理模块对用户的账号密码、个人信息等进行管理,并且进行审核,资源类型管理模块用来设置不同的资源种类和类别,音视频资源管理模块保存着资源的基本信息和推荐参数,内容发布模块可以添加公告或者新闻,还可以进行修改删除和查询操作,问卷调查模块对问卷内容以及发布状态进行管理。该系统的功能结构如图4-2所示。
图4-8全局ER图
根据系统分析,系统的主要实体有:平台用户、视频资源、音频资源、收藏记录、点赞记录、浏览记录、调查问卷、问卷题目、用户答题、文章,各个实体具体的属性如下图所示。
图4-9平台用户实体属性图
图4-10视频资源实体属性图
图4-11音频资源实体属性图
图4-12收藏记录实体属性图
图4-13点赞记录实体属性图
图4-14浏览记录实体属性图
图4-15调查问卷实体属性图
图4-16问卷题目实体属性图
图4-17用户答题实体属性图
图4-18文章实体属性图
4.4.2 数据库逻辑设计
数据库逻辑设计阶段把概念模型转为MySQL数据库支持的关系表结构。根据实体间联系类型来确定主外键约束,一对多联系用在多侧实体表中添加外键字段来实现。对收藏、点赞、浏览等行为记录表设计复合主键或者自增主键来保证记录的唯一性。为了提高查询效率,在用户id、来源id等经常被用作检索条件的字段上创建普通索引。数据表名用小写字母加下划线组成,字段名也遵照统一命名规则。沈聪、全树强18在Django开发实践过程中就数据库建模方法做了详细的论述,在本系统的表结构实现中也得到了贯彻。
平台用户表主要用来存储平台注册用户的基本信息与兴趣偏好。主要包括用户姓名、用户电话、心仪资源等字段。如表4-1所示。
表4-1平台用户表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 平台用户id | int | 11 | 主键 |
| 2 | 用户id | int | 11 | 关联账户 |
| 3 | 用户姓名 | varchar | 50 | 真实姓名 |
| 4 | 用户电话 | varchar | 20 | 联系电话 |
| 5 | 心仪资源 | varchar | 50 | 偏好类型 |
| 6 | 审核状态 | varchar | 16 | 状态标识 |
| 7 | 创建时间 | datetime | - | 记录生成时间 |
| 8 | 更新时间 | timestamp | - | 最后修改时间 |
视频资源表主要用来存储平台发布的视频类内容基本信息。主要包括资源标题、资源类型、资源来源等字段。如表4-2所示。
表4-2视频资源表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 视频资源id | int | 11 | 主键 |
| 2 | 资源标题 | varchar | 50 | 视频名称 |
| 3 | 资源类型 | varchar | 50 | 分类标签 |
| 4 | 资源来源 | varchar | 50 | 提供方 |
| 5 | 资源介绍 | text | 255 | 内容描述 |
| 6 | 发布日期 | date | - | 上线时间 |
| 7 | 点击数 | int | 11 | 浏览次数 |
| 8 | 创建时间 | datetime | - | 记录生成时间 |
音频资源表主要用来存储平台发布的音频类内容基本信息。主要包括资源名称、资源作者、资源类型等字段。如表4-3所示。
表4-3音频资源表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 音频资源id | int | 11 | 主键 |
| 2 | 资源名称 | varchar | 50 | 音频标题 |
| 3 | 资源作者 | varchar | 50 | 创作者 |
| 4 | 资源类型 | varchar | 50 | 分类标签 |
| 5 | 资源简介 | text | 255 | 内容描述 |
| 6 | 发布日期 | date | - | 上线时间 |
| 7 | 封面图片 | varchar | 255 | 展示图 |
| 8 | 创建时间 | datetime | - | 记录生成时间 |
收藏记录表主要用来存储用户对资源的收藏行为数据。主要包括用户id、来源表、来源id等字段。如表4-4所示。
表4-4收藏记录表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 收藏id | int | 11 | 主键 |
| 2 | 用户id | int | 11 | 收藏者 |
| 3 | 来源表 | varchar | 255 | 资源类型 |
| 4 | 来源id | int | 11 | 资源标识 |
| 5 | 标题 | varchar | 255 | 资源名称 |
| 6 | 创建时间 | timestamp | - | 收藏时间 |
点赞记录表主要用来存储用户对资源的点赞行为数据。主要包括用户id、来源表、来源id、状态等字段。如表4-5所示。
表4-5点赞记录表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 点赞id | int | 11 | 主键 |
| 2 | 用户id | int | 11 | 点赞者 |
| 3 | 来源表 | varchar | 255 | 资源类型 |
| 4 | 来源id | int | 11 | 资源标识 |
| 5 | 状态 | tinyint | 4 | 点赞状态 |
| 6 | 创建时间 | timestamp | - | 点赞时间 |
浏览记录表主要用来存储用户访问资源的痕迹数据。主要包括用户id、来源表、来源id、标题等字段。如表4-6所示。
表4-6浏览记录表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 浏览历史id | int | 11 | 主键 |
| 2 | 用户id | int | 11 | 浏览者 |
| 3 | 来源表 | varchar | 255 | 资源类型 |
| 4 | 来源id | int | 11 | 资源标识 |
| 5 | 标题 | varchar | 255 | 资源名称 |
| 6 | 创建时间 | timestamp | - | 访问时间 |
调查问卷表主要用来存储问卷的基本属性与配置信息。主要包括问卷名称、开放时间范围、状态等字段。如表4-7所示。
表4-7调查问卷表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 问卷id | int | 11 | 主键 |
| 2 | 问卷名称 | varchar | 32 | 问卷标题 |
| 3 | 开放开始时间 | datetime | - | 起始时间 |
| 4 | 开放结束时间 | datetime | - | 截止时间 |
| 5 | 状态 | varchar | 10 | 启用禁用 |
| 6 | 创建时间 | timestamp | - | 生成时间 |
问卷题目表主要用来存储问卷包含的具体题目内容。主要包括所属问卷、题目、类型、选项等字段。如表4-8所示。
表4-8问卷题目表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 题目id | int | 11 | 主键 |
| 2 | 所属问卷 | int | 11 | 关联问卷 |
| 3 | 题目 | varchar | 255 | 问题内容 |
| 4 | 类型 | varchar | 20 | 题型分类 |
| 5 | 选项 | varchar | 500 | 可选答案 |
| 6 | 排序 | int | 11 | 显示顺序 |
用户答题表主要用来存储用户提交的问卷答案数据。主要包括用户id、考试id、答案、分数等字段。如表4-9所示。
表4-9用户答题表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 用户答题id | int | 11 | 主键 |
| 2 | 用户id | int | 11 | 答题人 |
| 3 | 考试id | int | 11 | 关联问卷 |
| 4 | 答案 | text | 255 | 答题内容 |
| 5 | 分数 | double | - | 测评得分 |
| 6 | 创建时间 | timestamp | - | 提交时间 |
文章表主要用来存储新闻资讯与公告通知的内容数据。主要包括标题、正文、文章分类、标签等字段。如表4-10所示。
表4-10文章表
| 序号 | 字段名 | 数据类型 | 长度 | 备注 |
|---|---|---|---|---|
| 1 | 文章id | int | 11 | 主键 |
| 2 | 标题 | varchar | 125 | 文章标题 |
| 3 | 正文 | longtext | - | 详细内容 |
| 4 | 文章分类 | varchar | 50 | 类型标识 |
| 5 | 标签 | varchar | 255 | 关键词 |
| 6 | 创建时间 | timestamp | - | 发布时间 |
第五章 系统实现
5.1 平台用户角色功能实现
5.1.1 视听资源查看
视听资源查看功能主要为用户提供视频内容的浏览与检索服务。用户进入视频资源模块后,系统以卡片列表形式展示视频资源,每条记录包含封面图片、资源标题、资源来源与发布日期。页面顶部设置资源标题搜索框与资源类型筛选下拉框,用户输入关键词或选择类型后,系统实时过滤资源列表。排序方式支持按发布时间、阅读数、点赞数三种维度切换。用户点击任意资源卡片进入详情页,可查看完整的资源介绍信息,并对资源执行收藏与点赞操作。视听资源查看界面如图5-1所示。
图5-1视听资源查看界面
5.1.2 音频资源查看
音频资源查看功能为用户提供音频内容的浏览与在线播放服务。资源列表采用列表布局展示资源名称、资源作者与资源类型,每项记录右侧提供播放按钮。用户可通过资源名称搜索框与资源类型筛选框组合检索目标音频。点击播放按钮后页面底部弹出播放器,支持播放、暂停、音量调节等基础控制功能。音频详情页展示资源简介与完整播放列表,用户可在详情页完成收藏与点赞操作。音频资源查看界面如图5-2所示。
图5-2音频资源查看界面
5.1.3 调查问卷参与
调查问卷参与功能使用户能够在线完成各类测评问卷。问卷列表展示所有启用状态的问卷,包含问卷名称、开放时间范围与预计答题时长。用户点击"答题"按钮进入答题页面,系统按题目顺序逐题呈现题干与选项。单选题采用单选按钮组,多选题使用复选框组,用户完成当前题目后自动保存答案。所有题目作答完毕后提交按钮变为可用状态,提交后系统将答题记录写入数据库并关闭答题页面。调查问卷参与界面如图5-3所示。
图5-3调查问卷参与界面
5.1.4 通知公告查看
通知公告查看功能用于向用户传递平台重要信息。公告列表按发布时间倒序排列,每条公告展示标题与发布时间,最新发布的公告在列表顶部标注"Top"标识。用户点击标题进入详情页阅读完整公告内容,详情页展示正文信息与发布时间。系统公告由管理员在后台统一发布,用户端仅支持浏览查看,不提供交互操作。通知公告查看界面如图5-4所示。
图5-4通知公告查看界面
5.1.5 新闻资讯查看
新闻资讯查看功能为用户提供行业动态与平台活动信息。资讯列表区分热门新闻与最新新闻两个板块,热门新闻根据阅读数与点赞数综合排序。每条资讯展示标题、发布时间、阅读数、点赞数与收藏数,用户点击标题进入详情页。详情页展示完整正文内容,底部提供点赞与收藏操作按钮,用户可对感兴趣的资讯进行标记。新闻资讯查看界面如图5-5所示。
图5-5新闻资讯查看界面
5.1.6 收藏记录查看
收藏记录查看功能集中展示用户标记过的所有视听资源与新闻资讯。收藏列表按收藏时间倒序排列,每条记录包含资源封面、标题与收藏时间。用户可对收藏记录执行取消收藏操作,取消后记录从列表中移除。列表顶部提供检索输入框,用户可按标题关键词筛选收藏内容。收藏记录查看界面如图5-6所示。
图5-6收藏记录查看界面
5.1.7 点赞记录查看
点赞记录查看功能集中展示用户点赞过的所有内容。点赞列表按点赞时间倒序排列,每条记录包含资源标题、类型标识与点赞时间。用户可对点赞记录执行取消点赞操作,取消后记录从列表中移除,对应资源的点赞数同步减少。点赞记录与收藏记录相互独立,用户可根据个人偏好管理两类行为数据。点赞记录查看界面如图5-7所示。
图5-7点赞记录查看界面
5.1.8 浏览记录查看
浏览记录查看功能记录用户访问过的所有资源页面。用户每次进入资源详情页或新闻详情页,系统自动将访问信息写入浏览记录表。浏览列表按访问时间倒序排列,展示资源封面、标题与最近访问时间。用户可通过清空按钮删除全部浏览记录,或点击单条记录后的删除图标移除特定资源。该功能为用户提供访问轨迹回溯能力。浏览记录查看界面如图5-8所示。
图5-8浏览记录查看界面
5.2 管理员角色功能实现
5.2.1 平台用户管理
平台用户管理功能支持管理员对注册用户信息进行维护。用户列表以表格形式展示用户id、用户名、昵称、真实姓名、联系电话、心仪资源、创建时间与更新时间。管理员可通过用户名或用户姓名进行模糊查询,查询结果支持分页显示。新增用户时填写基本信息后保存至平台用户表,编辑功能支持对已有用户信息的修改。删除操作前系统弹出确认提示,防止误操作导致数据丢失。平台用户管理界面如图5-9所示。
图5-9平台用户管理界面
5.2.2 资源类型管理
资源类型管理功能用于维护视听资源的分类体系。管理员可新增资源类型,设置类型名称与描述信息。类型列表展示所有已配置的分类,支持按类型名称查询与按创建时间排序。每条记录提供详情查看与编辑操作,详情页展示类型创建时间与更新时间。对于不再使用的资源类型,管理员可执行删除操作,系统在删除前检查该类型下是否关联资源,若存在关联则提示无法删除。资源类型管理界面如图5-10所示。
图5-10资源类型管理界面
5.2.3 视频资源管理
视频资源管理功能用于维护平台发布的视频内容信息。管理员通过表单填写资源标题、选择资源类型、填写资源来源与资源介绍,上传封面图片并设置发布日期。资源列表支持按标题与类型组合查询,每条记录提供详情查看、评论管理与视频设置操作。视频设置功能包括推荐开关与显示顺序调整,推荐标识将用于协同过滤算法中的初始权重计算。视频资源管理界面如图5-11所示。
图5-11视频资源管理界面
5.2.4 音频资源管理
音频资源管理功能用于维护平台发布的音频内容信息。管理员填写资源名称、作者、类型、简介等信息,上传音频文件与封面图片。资源列表展示资源名称、作者、类型与发布日期,支持按资源名称与资源类型进行检索。每条音频记录提供详情查看与评论管理功能,管理员可查看用户对音频资源的评价内容,并对不当评论进行删除处理。音频资源管理界面如图5-12所示。
图5-12音频资源管理界面
5.2.5 通知公告管理
通知公告管理功能支持管理员发布与维护平台公告信息。公告列表按创建时间倒序排列,展示标题与创建时间。管理员填写标题与正文内容后发布公告,发布后前台通知公告列表同步更新。对于已发布的公告,管理员可执行编辑或删除操作。删除操作前系统确认用户意图,避免误删重要公告内容。通知公告管理界面如图5-13所示。
图5-13通知公告管理界面
5.2.6 新闻资讯管理
新闻资讯管理功能用于维护平台新闻内容。管理员填写标题、正文内容、文章分类与标签信息后发布新闻。新闻列表支持按标题与分类组合查询,每条记录提供详情查看与评论管理功能。资讯分类选项包括短视频、纪录片、行业动态等类型,分类标签用于前台筛选展示。管理员可对已发布的新闻进行修改或删除,修改后前台资讯列表实时更新。新闻资讯管理界面如图5-14所示。
图5-14新闻资讯管理界面
5.2.7 问卷调查管理
问卷调查管理功能用于创建与配置测评问卷。管理员设置问卷名称、开放时间范围与状态,完成基本信息配置后进入题库管理界面添加题目。每道题目包含题干、题型与选项设置,题型支持单选与多选两种类型。题目可设置排序序号,调整顺序后问卷展示顺序同步更新。管理员可在统计页面查看用户答题结果,包括各题选项分布与用户得分情况。问卷调查管理界面如图5-15所示。
图5-15问卷调查管理界面
第六章 系统测试
6.1 测试目的
数据库逻辑设计阶段把概念模型转为MySQL数据库支持的关系表结构。根据实体间联系类型来确定主外键约束,一对多联系用在多侧实体表中添加外键字段来实现。对收藏、点赞、浏览等行为记录表设计复合主键或者自增主键来保证记录的唯一性。为了提高查询效率,在用户id、来源id等经常被用作检索条件的字段上创建普通索引。数据表名用小写字母加下划线组成,字段名也遵照统一命名规则。沈聪、全树强19在Django开发实践过程中就数据库建模方法做了详细的论述,在本系统的表结构实现中也得到了贯彻。
6.2 测试方法
本系统使用的是黑盒测试法,主要考察系统输入和输出的关系,不关心系统的内部代码逻辑结构。根据功能需求文档来设计测试用例,对所有的功能进行正常的流程和异常分支的测试。功能测试是对用户端和管理端每一个功能点进行验证,即页面加载、数据提交、状态更新等操作是否正确。兼容性测试用不同的浏览器、分辨率进行接口展示和交互反应的检验20。性能测试是用模拟的多用户并发访问来观察系统的响应时间和资源占用情况。测试时记录实际结果和预期结果之间的差别,对出现的问题做缺陷追踪并加以回归验证,直到所有的测试用例都通过为止。
6.3 测试用例
视听资源检索功能测试
视听资源检索功能验证输入关键词与筛选条件后系统返回结果的准确性与完整性。如表6-1所示。
表6-1视听资源检索功能测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 关键词检索 | 输入资源标题关键词进行检索 | 返回标题包含关键词的资源列表 | 符合预期 |
| 类型筛选 | 选择资源类型后执行检索 | 返回指定类型的资源列表 | 符合预期 |
| 组合查询 | 同时输入关键词与选择类型 | 返回同时满足两个条件的资源 | 符合预期 |
| 无匹配结果 | 输入不存在的关键词进行检索 | 返回空列表并提示无数据 | 符合预期 |
资源收藏与点赞功能测试
资源收藏与点赞功能验证用户对资源执行收藏与点赞操作时前端状态与后端数据的一致性。如表6-2所示。
表6-2资源收藏与点赞功能测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 新增收藏 | 在资源详情页点击收藏图标 | 图标状态变为已收藏,记录写入数据库 | 符合预期 |
| 取消收藏 | 点击已收藏资源的收藏图标 | 图标状态恢复未收藏,数据库记录删除 | 符合预期 |
| 新增点赞 | 在资源详情页点击点赞图标 | 点赞数增加1,记录写入数据库 | 符合预期 |
| 取消点赞 | 点击已点赞资源的点赞图标 | 点赞数减少1,数据库记录状态变更 | 符合预期 |
问卷调查参与功能测试
问卷调查参与功能验证用户完成问卷答题并提交后数据存储的正确性。如表6-3所示。
表6-3问卷调查参与功能测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 进入答题 | 点击启用状态的问卷进入答题页 | 正常加载问卷题目与选项 | 符合预期 |
| 答题提交 | 完成所有题目后点击提交按钮 | 答题记录保存至数据库 | 符合预期 |
| 未完成提交 | 存在未答题目时点击提交 | 提示补充未答题目 | 符合预期 |
| 禁用问卷 | 点击禁用状态的问卷 | 提示问卷不可用 | 符合预期 |
视频资源管理功能测试
视频资源管理功能验证管理员对视频资源执行增删改查操作时数据的准确更新。如表6-4所示。
表6-4视频资源管理功能测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 新增资源 | 填写完整资源信息后保存 | 资源列表显示新增记录 | 符合预期 |
| 编辑资源 | 修改已有资源信息并保存 | 资源列表显示更新后的内容 | 符合预期 |
| 删除资源 | 选择资源执行删除操作 | 资源从列表中移除 | 符合预期 |
| 资源检索 | 输入资源标题进行查询 | 返回匹配的资源记录 | 符合预期 |
平台用户管理功能测试
平台用户管理功能验证管理员对用户信息维护操作的正确性与权限控制的有效性。如表6-5所示。
表6-5平台用户管理功能测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|
| 用户查询 | 输入用户名进行检索 | 返回匹配的用户记录 | 符合预期 |
| 用户信息编辑 | 修改用户联系电话后保存 | 列表显示更新后的信息 | 符合预期 |
| 新增用户 | 填写用户基本信息后保存 | 列表新增对应记录 | 符合预期 |
| 用户删除 | 选择用户执行删除操作 | 用户记录从列表中移除 | 符合预期 |