目录
摘要
随着互联网技术不断地发展,网络与大数据成为了人们生活的一部分,而新闻推荐系统作为网上应用的一个全新的体现,由于其特有的便捷性,已经被人们所接受。目前主流的新闻推荐系统服务不仅不明确并且管理盈利较低,针对用户定制的新闻推荐系统更能够体现出其服务特色。
本项目以新闻推荐系统为研究背景,采用的框架为 Django、Hadoop技术和python开发了新闻推荐系统。本文通过分析新闻推荐系统的需求,建立起了相关的开发模型,构建出相关的系统需要的开发环境。通过调研,明确了新闻推荐系统的需求,最后开发实现了系统并进行了测试。
关键词:新闻推荐系统; Django框架;python语言
Abstract
With the continuous development of Internet technology, network and big data have become a part of people's life, and news recommendation system, as a new embodiment of online application, has been accepted by people because of its unique convenience. At present, the mainstream news recommendation system service is not only unclear and low management profit, but also the customized news recommendation system can better reflect its service characteristics.
Based on the research background of news recommendation system, this project developed a news recommendation system based on Django, Hadoop technology and python. By analyzing the demand of news recommendation system, this paper establishes the relevant development model and builds the development environment required by the relevant system. Through investigation, the demand of news recommendation system is clarified, and finally the system is developed and tested.
Keywords:News recommendation system; Django framework; python language
第一章 绪论
1.1 研究背景
在二十一世纪,互联网已经成为了人们的必需品,与此同时,大数据技术也在不断地发展之中。随着大数据的技术应用于Internet中,新闻推荐系统实现了用户能够在虚拟的环境中使用系统的功能[1]。
随着互联网时代的普及,有非常多的产业可以借助于网络使用其方便的优势飞速发展,新闻推荐系统也在快速发展之中。随着时间越来越可贵的今天,对于用户来说,新闻推荐系统的吸引之处在于它的方便,同时新闻推荐系统具有多样化的选择,用户可以通过网络的方式使用系统的功能。有了新闻推荐系统的话[2],管理员可以提高工作效率和用户可以提升体验感。
1.2 研究意义
随着互联网技术的不断和快速发展,网络与大数据很早就成为了人们生活中的一部分,新闻推荐系统由于其特有的便捷性,用户能够更加容易地接受。互联网有了这种便捷公告消息、新闻信息等分析形式,也是一种新型的全新应用形式[3]。从侧面来看,新闻推荐系统还能够推进网上用户查看爬取下的大数据新闻信息的普及。
同传统的人工统计数据模式相比,新闻推荐系统具有较多的优势。建立规范化的流程通常可以解决用户查询新闻信息分析问题,而目前如果需要管理网站爬取下的大数据,管理员依然以人工的方式进行管理的话太过于落后。新闻推荐系统处理数据越来越趋于信息化,这种模式需要依赖于智能化手段管理。随着科技发展的进步与大数据的普及,信息技术能够改善我们的生活,现在许多生活场景都需要信息化技术帮助改善我们的生活。
1.3 研究内容
(1)本次针对开发设计系统并设置了相关的实施方案,利用完整的软件开发流程进行分析,完成了设置不同用户的操作权限和相关功能模块的开发,最后对系统进行测试。
(2)框架可以帮助程序开发者快速构建软件的整体层次,本次开发所使用的框架为python和 Django,具有较强的开发环境部署的优势,程序开发者可以快速构建出相关的软件基本框架,通过多种框架的开发可以帮助程序开发者减少代码量,提升系统的安全和稳定性,能够帮助新闻推荐系统功能模块的处理[4]。
(3)数据的操作需要开源框架规范用户的操作,不仅能满足最基本的标准,还能利用数据库的约束关系约束数据库记录,这样就可以使得系统实体和数据库表字段相映射,通过他们之间的关系模型设置系统实体间的关系。
2.1 Python语言
Python是由荷兰数学和计算机研究学会的吉多·范罗苏姆于20世纪90年代设计的一款高级语言。Python优雅的语法和动态类型,以及解释型语言的本质,使它成为许多领域脚本编写和快速开发应用的首选语言。Python相比与其他高级语言,开发代码量较小,代码风格简洁优雅,拥有丰富的第三方库。Python的代码风格导致其可读性好,便于维护人员阅读维护,程序更加健壮。Python能够轻松地调用其他语言编写的模块,因此也被成为“胶水语言”。
Python的应用场合非常广泛,在科研领域中,可以用Python训练人工智能模型,也可以对实验数据进行数据分析。在生活中,Python提供了很多优秀的、开源的Web开发框架,例如 Django、Flask、Pyramid、Tornado等。知乎、豆瓣网、Youtube等知名应用都是由Python为基础进行开发的。相比于其他框架, Django有着更加丰富的插件,作为企业级框架也很好上手,适合本次开发。此次新闻推荐系统是开发一个Web应用,采用 Django框架,将在下一节进行具体介绍。本次开发选用的是Python3.6.4版本。
2.2 hive简介
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表。
2.3 Django框架简介
Django被官方称之为“完美主义者框架”,只需要很少的代码就能更快的完成一个优秀的Web应用。Django采用了MTV框架模式,此模式根据MVC进行改进形成了更适于Django的设计模式。M为模型(Model)、T为模板(Template)、V为视图(View)。
2.4 hadoop技术
1. Hadoop Common:Hadoop体系最底层的模块(基础模块),为Hadoop各子项目提供系统配置工具Configuration、远程过程调用RPC、序列化机制和日志操作等。
2. HDFS:Hadoop Distributed File System是具有高度容错性的文件系统,适合部署在廉价机器上。HDFS提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
3. YARN:Yet Another Resource Negotiator是统一资源管理和调度平台,解决了上一代Hadoop资源利用率低和不兼容异构计算框架等多种问题,提供资源隔离方案和双调度器的实现。
4. MapReduce:一种编程模型,利用函数式编程思想,将数据集处理过程分为Map和Reduce两个阶段,非常适合进行分布式计算。支持Java、C++、Python、PHP等多种语言。
第三章 需求分析
3.1 可行性分析
3.1.1 经济可行性研究
新闻推荐系统能够给用户带来不少的方便,如果用户能够拥有新闻推荐系统,则可以对系统进行简单管理,用户可以节省不少资金。新闻推荐系统的实现能够解决传统管理模式不必要的经济支出,尤其是其中的人力资源成本,传统的新闻推荐系统需要大量的人力资源支持,并且往往需要管理者手动记载数据。
3.1.2 技术可行性研究
根据前期分析了系统的需求和背景,最终确定了可使用的软件体系和技术完成新闻推荐系统的开发。系统架构和使用的开发技术都是较为好用的开发模型,综合现有的新闻推荐系统,本次开发选用的技术是可行的。
3.1.3社会可行性
社会可行性,广义而讲可涉及到道德方面、法律方面、社会方面,每个方面都会影响系统的形成。本系统的是独立且没有任何传播性质的信息,更涉及不到道德层面,法律层面;本系统也没有触发法律,没有赌博、黄色等类型信息,同时也是遵从国家法律,不会显示任何触发法律层面的信息;社会方面,该系统是为方便用户提供更好的服务,是轻量级的新闻推荐系统,会为人们带来快速并有效查询的功能,也是具有贡献意义的。总体而言,该系统也是具有社会可行性的。
3.1.4法律可行性分析
新闻推荐系统是自己独立设计的,该系统是本人开发出来做毕业设计之用,并不会侵犯他人、集体和国家的利益。该系统使用正版软件开发,所有参考资料都是正规网站查询分析得出,开发的技术完全是开源免费的工具,百分百遵守国家法律法规。不会出现任何违反国家的政策和法律的。
3.2 功能需求
3.2.1 用例概述
图3.1 普通用户用例图
图3.2 管理员用例图
用例的简要描述如表3.3所示。
1.普通用户信息管理
普通用户信息管理用例描述能够描述系统中的用户信息管理功能,用户信息管理用例描述如表3.3所示。
表3.3 普通用户信息管理用例描述
用例标识 | 3.3 |
用例名称 | 编辑普通用户的相关信息 |
参与者 | 管理员 |
前置条件 | 管理员需要输入正确的用户名和密码登录系统 |
后置条件 | 修改用户信息 |
用例概述 | 管理员修改用户信息 |
基本事件流 | 1.管理员输入正确的用户名和密码登录到系统当中 2.管理员在用户信息管理界面点击修改按钮提交修改的用户信息 3.用户信息修改成功 |
备选事件流 | 4输入的信息需要合法才能够成功修改 |
备注 |
2.登录
登录用例描述能够描述系统中的登录功能,登录用例描述如表3.4所示。
表3.4 登录用例描述
用例标识 | 3.4 |
用例名称 | 登陆 |
参与者 | 普通用户、管理员 |
前置条件 | 普通普通用户和管理员需要输入正确的用户名和密码 |
后置条件 | 登录 |
用例概述 | 普通普通用户和管理员登录 |
基本事件流 | 1.普通普通用户和管理员进入到登录页面当中 2.管理员和用户输入用户名和密码登录到系统当中 |
备选事件流 | 3.输入的信息需要和数据库信息相匹配才能够登录 |
备注 |
3.角色信息管理
角色信息管理用例描述能够描述角色中的角色信息管理功能,角色信息管理用例描述如表3.5所示。
表3.5 角色用例描述
用例标识 | 3.5 |
用例名称 | 编辑角色的相关信息 |
参与者 | 管理员与普通用户 |
前置条件 | 管理员需要输入正确的用户名和密码登录角色 |
后置条件 | 修改角色信息 |
用例概述 | 管理员修改角色信息 |
基本事件流 | 1.管理员输入正确的用户名和密码登录到角色当中 2.管理员在角色信息管理界面点击添加按钮提交新添加的角色信息 3.角色信息添加成功 |
备选事件流 | 4.输入的信息需要合法才能够成功添加 |
3.3 非功能需求
(1)可用性。该新闻推荐系统需要简单易操作,用户能够快速方便地上手。
(2)可扩展性。该系统设计的时候采用的是模块化的方式,当能够充分了解系统的业务需求的时候,可以通过分解业务流程,分为不同的模块进行开发,
(3)可维护性[5]。如果代码的可理解性越强的话,这能够确保系统设计风格更加统一,使用有意义和结构化的程序设计方法,这样可以保证后续修改新闻推荐系统的时候要较为方便,使得维护系统要变得更加简单[6]。
(4)流畅性。系统运行速度需要不慢,并且多个用户使用系统的时候,用户在操作的时候能够顺畅。
第四章 概要设计
4.1 设计目标
经过需求分析之后,下一步要做的是定下能够满足基本要求的系统,进而设计出对应的系统。系统设计内容应该需要包括明确新闻推荐系统的设计方法,将系统功能分成若干个模块,确立各个模块需要什么功能以及与其它模块的关系,
对划分的功能模块采取技术设计和评价[7]。
本新闻推荐系统除了需要提供用户所需的基本功能之外,还不能有繁杂的操作方式,这能够给用户带来良好的体验。用户界面不仅需要简单友好关键在布局上需要能够适应大多数用户的使用习惯,能够保证用户在使用软件的流畅度[8]。
4.2功能模块设计
该章节的功能模块设计,只是大概描述了系统的所有功能模块,将功能按权限来讲解。系统总体结构图如图4-1所示。
图4.1 系统总体结构图
4.3 功能流程
用户想要使用系统的功能之前首先需要登录,在登录页面中输入用户名和密码之后点击登录按钮,如果通过了验证则能够进入到主页当中[9]。
图4.2 登录流程图
管理员登录系统之后可以在后台管理中搜索系统的信息,如果输入的系统信息在数据库记录中找不到则不能显示查询信息。
图4.3 查询流程图
管理员登录系统后可以修改用户信息[10]。
图4.4 普通用户流程图
4.4 数据库设计
4.4.1 概念性数据模型
新闻推荐系统需要数据库存储系统中的信息,MySQL数据库能够处理系统的信息,当新闻推荐系统需要数据的时候,MySQL数据库能够取得数据交给服务端处理。MySQL数据库能够使用可视化软件操作,管理员可以在可视化软件对数据库的信息机芯管理。
系统数据层设计包括了E-R设计,系统数据实体的设计依赖于E-R的分析和设计,通过E-R能够得到数据库表的设计,E-R能够描述系统所涉及到的实体,还能够描述系统中不同实体的联系和关系[11]。
(1)需要能够充分地反映现实世界,包括现实事物之间的联系,这样有利于满足不同程序开发者对数据处理的需要。
(2)需要能够容易理解,从而可以使得即使不熟悉计算机的用户也可以快速使用系统,如果一个数据库设计得较为成功的话用户也可以选择参与。
(3)需要能够易于变更。当系统应用环境发生改变的时候,概念模型往往需要改变,因此数据库需要设计得以后容易修改概念模型。
轮播图E-R如图4.5所示。
图4.5 轮播图E-R图
公告E-R如图4.6所示。
图4.6公告E-R图
普通用户信息E-R如图4.7所示。
图4.7普通用户信息E-R图
新闻信息E-R如图4.8所示。
图4.8新闻信息E-R图
新闻推荐系统总体E-R如图4.9所示。
图4.9新闻推荐系统总体E-R图
4.4.2 数据库表设计
表4.1:access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
表4.2:auth (用户权限管理)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表4.3:collect (收藏)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表4.4:comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表4.5:hits (用户点击)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表4.6:news_classification (新闻分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | news_classification_id | int | 10 | 0 | N | Y | 新闻分类ID | |
2 | news_classification | varchar | 64 | 0 | Y | N | 新闻分类 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表4.7:news_data (新闻数据)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | news_data_id | int | 10 | 0 | N | Y | 新闻数据ID | |
2 | news_main_tag | varchar | 64 | 0 | Y | N | 新闻主标签 | |
3 | news_tags | varchar | 64 | 0 | Y | N | 新闻标签 | |
4 | news_topic | varchar | 64 | 0 | Y | N | 新闻题目 | |
5 | release_time | varchar | 64 | 0 | Y | N | 发布时间 | |
6 | details_link | varchar | 255 | 0 | Y | N | 详情链接 | |
7 | news_author | varchar | 64 | 0 | Y | N | 新闻作者 | |
8 | publishing_address | varchar | 64 | 0 | Y | N | 发布地址 | |
9 | article_content | text | 65535 | 0 | Y | N | 文章内容 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表4.8:news_information (新闻信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | news_information_id | int | 10 | 0 | N | Y | 新闻信息ID | |
2 | news_main_tag | varchar | 64 | 0 | Y | N | 新闻主标签 | |
3 | news_tags | varchar | 64 | 0 | Y | N | 新闻标签 | |
4 | news_topic | varchar | 64 | 0 | Y | N | 新闻题目 | |
5 | release_time | varchar | 64 | 0 | Y | N | 发布时间 | |
6 | details_link | varchar | 255 | 0 | Y | N | 详情链接 | |
7 | news_author | varchar | 64 | 0 | Y | N | 新闻作者 | |
8 | publishing_address | varchar | 64 | 0 | Y | N | 发布地址 | |
9 | article_content | text | 65535 | 0 | Y | N | 文章内容 | |
10 | news_classification | varchar | 64 | 0 | Y | N | 新闻分类 | |
11 | cover_photo | varchar | 255 | 0 | Y | N | 封面图片 | |
12 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
13 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
14 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表4.9:notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表4.10:praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表4.11:regular_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | user_age | varchar | 64 | 0 | Y | N | 用户年龄 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表4.12:slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表43.:upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
表4.14:user (用户账户:用于保存用户登录信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
表4.15:user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
- 系统实现
5.1前台普通用户功能的实现
当游客打开系统的网址后,首先看到的就是首页界面。在这里,游客能够看到新闻推荐系统的导航条显示首页、公告消息、新闻信息、我的帐户、个人中心等,系统首页界面如图5.1所示:
图5.1 系统首页界面
在注册流程中,普通用户在Vue前端填写必要信息(如帐号、密码等)并提交。前端将这些信息通过HTTP请求发送到Python后端。后端处理这些信息,检查用户名是否唯一,并将新用户数据存入MySQL数据库。完成后,后端向前端发送注册成功的确认,前端随后通知普通用户完成注册。这个过程实现了新用户的数据收集、验证和存储,如图5.2所示:
图5.2 普通用户注册
在登录流程中,普通用户首先在Vue前端界面输入用户名和密码。这些信息通过HTTP请求发送到Python后端。后端接收请求,通过与MySQL数据库交互验证用户凭证。如果认证成功,后端会返回给前端,允许普通用户访问系统。这个过程涵盖了从普通用户输入到系统验证和响应的全过程,如图5.3所示:
图5.3普通登录界面
普通用户点击新闻信息:在新闻信息页面的搜索栏输入新闻主标签、新闻标签、新闻分类,进行查询,可以查看新闻主标签、新闻标签、新闻题目、发布时间、详情链接、新闻作者、发布地址、新闻分类、点赞数、文章内容等内容,也可以点击点赞、收藏或评论等操作,如图5.4所示:
图5.4新闻信息页面
普通用户点击个人中心,在个人中心页面可以查看个人首页、收藏内容,如图5.5所示:
图5.5个人中心页面
5.2 后台管理员功能的实现
在登录流程中,管理员首先在Vue前端界面输入用户名和密码。这些信息通过HTTP请求发送到Python后端。后端接收请求,通过与MySQL数据库交互验证用户凭证。如果认证成功,后端会返回给前端,允许管理员访问系统。这个过程涵盖了从管理员输入到系统验证和响应的全过程,如图5.6所示。
图5.6管理员登录界面
管理员登录进入新闻推荐系统可以查看后台首页、系统用户、新闻分类管理、新闻数据管理、新闻信息管理、系统管理、公告信息管理等功能,进行详细操作,如图5.7所示。
图5.7管理员功能界面图
管理员点击普通用户;在普通用户页面输入用户账号、用户姓名,进行搜索,然后查看昵称、用户姓名、用户性别、用户年龄、创建时间、更新时间还可以点击添加或删除等操作;如图5.8所示。
图5.8普通用户界面图
管理员点击新闻分类管理;在新闻分类管理页面输入新闻分类,进行搜索,然后查看新闻分类,还可以点击新闻分类添加或删除等操作;如图5.9所示。
图5.9新闻分类管理界面图
管理员点击新闻数据管理;在新闻数据页面输入新闻主标签、新闻标签,进行搜索,然后查看新闻主标签、新闻标签、新闻题目、发布时间、详情链接、新闻作者、发布地址等内容,还可以点击下载导入文档、导入、显示新闻等操作;如图5.10所示。
图5.10新闻数据息管理界面图
管理员点击新闻信息管理;在新闻信息查看测试新闻、新闻标签、新闻题目、发布时间、发布地址、新闻作者、发布地址等内容,还可以点击查看评论等操作;如图5.11所示。
图5.11新闻信息管理界面图
管理员点击系统管理;在系统管理页面对轮播图管理,进行查询、添加、修改详情或删除等操作;如图5.12所示。
图5.12系统管理界面图
管理员点击公告信息管理;在公告信息页面对标题、创建时间、更新时间,进行查询、添加、修改详情或删除等操作;如图5.13所示。
图5.13公告信息管理界面图
第六章 系统测试
系统测试的目的是为了能够尽可能地找出系统中现有的系统缺陷,对发现的缺陷进行修复。一般来说,如果发现了功能模块有缺陷,那么该功能模块往往还包含有许多缺陷。如果在软件测试中能够发现软件缺陷,那么可以提前修复从而降低软件开发成本[12]。
6.1 测试目的
系统测试能够全面测试新闻推荐系统,包括不同功能模块的测试。新闻推荐系统是较为复杂的应用,需要软件开发者充分地运用,这样能够保证系统的稳定运行和数据库中的数据较为安全可靠。有效地测试给系统带来了许多的益处。在系统测试阶段不仅需要玩测试用例的设计还需要完成执行。用例的侧重点在于最终实现的软件是否能够满足需求规格说明书。软件开发者测试该新闻推荐系统的目的为达到用户需求的基础之上,同时需要保证系统的可用性。
6.2 测试方法
单元测试能够对系统的环境进行测试,因为新闻推荐系统的开发环境较为复杂,所以一旦软件开发完成之后,需要在开发环境测试软件,在开发环境中使用debug的功能测试软件,观察数据库的数据是否能够正常更新,这样有利于及时更新系统存在的错误。
系统测试能够发现软件的缺陷,通过软件的用途实现,软件开发者不用去了解新闻推荐系统的内部结构,从用户的角度对软件进行测试。测试软件需要结合软件的内部结构,检测软件是否能够正确地反馈。在使用白盒测试的时候,软件开发者需要注重程序的内部逻辑,对其测试并得出相关的测试数据[13]。
6.3 测试用例设计
本系统在完成之后对代码根据功能模块划分成不同的代码块,对相应的代码块测试,用以验证系统功能的正确性。最后对系统进行完整测试,对集成的模块进行测试。本系统通过登录不同的角色从而对系统进行测试。在测试的过程当中,本文设计了测试用例,对测试过程详细记录下来,部分主要测试用例如下所示[14]。
表6.1 注册用例
序号 | 关注点 | 测试点 | 测试方法 | 期待结果 |
1 | 普通用户注册 | 普通用户是否能够成功注册 | 在注册界面中普通用户输入不完整的注册信息 | 注册失败,系统提示用户需要输入完整的普通用户信息 |
2 | 普通用户注册 | 普通用户是否能够成功注册 | 在注册界面中普通用户输入系统已经存在的普通用户信息 | 注册失败,系统提示普通用户信息已经存在 |
表6.2 登录用例
序号 | 关注点 | 测试点 | 测试方法 | 期待结果 |
1 | 普通用户登录 | 普通用户是否能够成功登录 | 在登录界面中普通用户在输入框中不输入用户名 | 登录失败,系统提示用户需要输入用户名 |
2 | 普通用户登录 | 普通用户是否能够成功登录 | 在登录界面中普通用户在输入框中不输入密码 | 登录失败,系统提示用户需要输入密码 |
3 | 普通用户登录 | 普通用户是否能够成功登录 | 在登录界面中普通用户输入的信息跟数据库记录 匹配不上 | 登录失败,系统提示用户需要重新输入用户名和密码 |
表6.3 普通用户用例
序号 | 关注点 | 测试点 | 测试方法 | 期待结果 |
1 | 普通用户 | 管理员是否能够正常管理用户的信息 | 管理员进入到普通用户功能界面当中的时候,点击添加按钮添加用户信息 | 如果输入的信息合法则能够添加成功 |
2 | 普通用户 | 管理员是否能够正常管理用户的信息 | 管理员进入到普通用户功能界面当中的时候,点击修改按钮修改用户信息 | 如果修改的时候输入的信息合法则能够正常地修改 |
3 | 普通用户 | 管理员是否能够正常管理用户的信息 | 管理员进入到普通用户功能界面当中的时候,点击搜索按钮搜索用户信息 | 如果输入的用户名称和数据库记录相符合则能够成功地查出信息 |
4 | 普通用户 | 管理员是否能够正常管理用户的信息 | 管理员进入到普通用户功能界面当中的时候,点击删除按钮删除用户信息 | 如果需要删除的用户信息和其它表还有关联则不能删除 |
结 论
经过这几个月的努力,在老师和同学的帮助与指导下,对系统顺利完成。对于该系统的研究和开发虽然没有耗费大量的时间,但为了成功完成该新闻推荐系统,消耗了大量的经历和汗水去了解学习这方面涉及到的专业知识以及开发环境的应用。
该系统的设计与实现,是经过了很长时间的分析、观察、调研和研究分析并整理资料实施的。新闻推荐系统采用 python开发语言、 Django框架以及MySQL数据库等技术开发与设计。该系统主要分为普通用户和管理员两个角色。该新闻推荐系统分为前台和后台两大部分。前台的主要功能为用户展示公告消息、新闻信息等,并对一些数据进行记录。后台的主要任务是对数据的一些准备处理的工作,对于管理员的数据属性的添加、维护和修改。每个功能在完成各自任务的同时也相互合作,一起来处理各个任务以及进程。
尽管该系统对用户可以满足一些基本的新闻推荐系统的需求,但该系统还存在许多问题和有待完善的地方。主要分为以下两点:
(1)该新闻推荐系统的适用面比较局限。页面的设置还是过于繁琐,不够简洁。加上社会方面的飞速发展,用户的条件也在发生新的变化。该系统还存在大数据下的并发和并行操作的不稳定性,当一个时间段内或者同一时刻时,过量的用户访问该网站会让网站的服务器出现崩溃的现象,一些操作无法正常的运行。种种原因使得该系统存在一些局限性。
(2)需要人工来处理的数据模块太多,需要减少大量的人工操作。在对新闻推荐系统信息处理的程序中,难免会出现各种各样的错误数据或者是异常数据,一旦这些数据大量积累存在过多时,系统自我调节修复能力有限就不得不需要人工的干预了。但是人工如果经常去进行操作的话,就会造成该系统的运行速度变慢,对其余正确的数据产生干扰,而且有可能对正确数据的损害以及泄露,从而将会减少该系统的稳定性。对于人力和财力都造成了不必要的浪费。
从上述可以看出该新闻推荐系统还有很多不足之处,在日后要结合具体项目问题进行修改和研究。
参考文献
[1] 随机游走与BIRCH融合的聚类统计方法. 夏小娜.统计与决策,2021
[2] 最小一乘导数估计的统计方法与优化. 支席年;夏小娜.统计与决策,2021
[3] 智慧教学管理的决策架构方案——基于“数据管理——业务设计——平台架构”的决策维度分析. 夏小娜;戚万学.现代教育技术,2021
[4] 大数据驱动的学习分析技术研究进展. 胡金蓉;邹茂扬;文武;周子龙.现代电子技术,2020
[5] 决策分类器在空气质量数据分析中的实证对比. 付悦;夏小娜.计算机技术与发展,2020
[6] 基于兴趣相似度传递的增强LSH统计预测算法. 夏小娜;邹麒.计算机应用与软件,2020
[7] 一种联系数表达的位置不确定数据流聚类算法. 史玲娟;黄德才.小型微型计算机系统,2020
[8] Consideration of the Local Correlation of Learning Behaviors to Predict Dropouts from MOOCs. Yimin Wen;Ye Tian;Boxi Wen;Qing Zhou;Guoyong Cai;Shaozhong Liu.Tsinghua Science and Technology,2020
[9] 语义增强的在线学习行为预测研究. 叶俊民;罗达雄;陈曙;廖志鑫.小型微型计算机系统,2020
[10] 以教学行为为关键线索的智慧校园探究. 夏小娜;戚万学.现代教育技术,2020
[11] Uncovering university students’ device usage patterns in a Korean online learning context using learning analytics. Ko Myong Hee.Computer Assisted Language Learning,2022
[12] The impacts of constructivist learning design and learning analytics on students’ engagement and self-regulation. Banihashem Seyyed Kazem;Farrokhnia Mohammadreza;Badali Mehdi;Noroozi Omid.Innovations in Education and Teaching International,2022
致谢
大学的时光慢慢接近了尾声,论文即将将要完成,我要感谢我的指导老师,系统开发设计实现是在我的指导老师指导下完成的。指导老师不仅有严肃的科学态度且有着严谨的治学精神,这些都深深地影响着我。指导老师在学业上给了我细心的指导,在思想和生活上也影响了我许多,在此向老师表达敬意。指导老师的专业素养给我的职业生涯起到了不小的作用。在此,我向指导老师表达感谢。
其次,还要感谢学校能够提供了一个良好的学习生活环境,让我学习了很多的计算机知识,而且还有许多参考资料可以查阅,在查阅资料的时候学到了不少的知识,这都要感谢我的母校。同时还要感谢在宿舍一起生活的同学们,虽然舍友们来自不同的地方,并且有着不同的生活经历,但是在多年的学习生活中,同学们不仅互相帮助而且还共同努力学习知识,和同学们在一起,这给了我许多精神上的支持。我们一起面对并且解决多种困难,这一切让我感受到温暖。
最后,我还非常感谢我的家人,感谢我的家人们提供了学习环境供我学习,在生活中给了我无微不至的关怀,正是他们给了我很多的帮助,才使得我学习能够顺利完成。