目录
摘要
本文介绍了一个基于Django框架和Python语言的新闻推荐系统的设计与实现。该系统主要关注于系统的整体架构、功能模块以及前后端交互的设计,而不涉及具体的推荐算法实现。首先,系统采用Django框架作为后端基础,利用其强大的MVC架构和ORM(对象关系映射)机制,实现了新闻数据的存储、查询和展示。其次,系统通过设计合理的数据库模型,实现了新闻的分类、标签管理以及用户行为数据的记录。同时,前端界面采用HTML、CSS和JavaScript等技术,为用户提供友好的新闻浏览和交互体验。此外,系统还实现了用户注册、登录、个性化设置等功能,以满足用户的个性化需求。最终,通过Django的URL路由和模板渲染机制,实现了前后端的紧密结合,为用户提供了高效、稳定的新闻推荐服务。本文的研究为基于Python的新闻推荐系统的开发提供了有益的参考和借鉴。
关键词:Django;Python;新闻推荐系统;前后端交互;数据库设计
Abstract
Keywords: Django; Python; News recommendation system; Front and rear end interaction; Database design
1 绪论
1.1 选题背景与意义
在当今信息时代,新闻资讯的获取与传播变得愈发重要。随着网络技术的快速发展,新闻网站、社交媒体等平台成为人们获取新闻的主要途径。然而,面对海量的新闻信息,用户往往难以快速找到符合自己兴趣和需求的新闻内容。因此,开发一个能够为用户提供个性化、精准新闻推荐的系统显得尤为重要。
基于Django和Python语言的新闻推荐系统选题背景源于当前新闻推荐领域的实际需求和技术发展趋势。Django作为一款成熟、稳定且易于扩展的Web框架,为开发者提供了丰富的功能和灵活的开发方式。而Python语言则以其简洁、易读和强大的库支持在数据处理、Web开发等领域得到广泛应用。结合Django和Python,可以高效实现新闻推荐系统的后端逻辑处理和前端交互展示。
该选题的意义在于,首先,它能够满足用户对个性化新闻的需求,提高用户体验和满意度。通过收集用户行为数据、分析用户兴趣偏好,系统能够为用户推荐更加符合其需求的新闻内容,从而节省用户筛选信息的时间和精力。其次,该系统的实现有助于推动新闻推荐技术的发展和应用。通过不断优化推荐算法和改进系统功能,可以提高推荐准确性和效率,为新闻推荐领域的发展做出贡献。最后,该选题还具有一定的商业价值和社会意义。新闻推荐系统可以为新闻媒体机构提供个性化内容推荐服务,增加用户粘性和活跃度,从而带动新闻媒体的商业发展。同时,通过为用户提供精准的新闻推荐,也可以促进信息的有效传播和社会舆论的健康发展。
综上所述,基于Django和Python语言的新闻推荐系统的设计与实现选题背景源于当前新闻推荐领域的实际需求和技术发展趋势,其意义在于满足用户对个性化新闻的需求、推动新闻推荐技术的发展和应用,并具有一定的商业价值和社会意义。
1.2国内外研究现状
在国内,基于Django和Python语言的新闻推荐系统研究与应用已经得到了广泛的关注。众多互联网企业纷纷采用Django框架结合Python语言来构建自己的新闻推荐系统,旨在提供更加精准、个性化的新闻服务。这主要得益于Python在数据处理和机器学习领域的广泛应用,以及Django框架的稳定性和扩展性。
同时,国内的高校和研究机构也在该领域进行了深入的研究。他们不仅关注推荐算法的创新,还注重研究如何结合用户的社交网络、行为习惯等多维度信息来提升推荐准确性。此外,随着大数据和人工智能技术的快速发展,国内的研究者还在探索如何将这些先进技术应用于新闻推荐系统中,以进一步提高推荐效果和用户满意度。
国外研究现状:
在国外,基于Django和Python的新闻推荐系统研究与实践同样取得了显著的成果。由于Python在数据科学和机器学习领域的广泛应用,国外的研究者和企业也倾向于选择Python作为构建新闻推荐系统的主要语言。Django框架的稳定性和扩展性也使得它成为构建新闻推荐系统Web应用的首选。
在推荐算法方面,国外的研究者已经进行了大量的创新研究,提出了许多先进的算法和模型。此外,他们还注重研究如何在保证推荐准确性的同时,保护用户的隐私和数据的可解释性。这些研究不仅推动了新闻推荐技术的发展,也为其他领域的应用提供了有益的参考。
综上所述,基于Django和Python语言的新闻推荐系统在国内外都受到了广泛的关注和研究。通过不断地探索和创新,相信未来的新闻推荐系统将会更加智能化、个性化,为用户提供更加优质的新闻阅读体验。
1.3论文结构与章节安排
论文将分层次经行编排,除去论文摘要致谢文献参考部分,正文部分还会对系统需求做出分析,以及阐述大体的设计和实现的功能,最后罗列部分调测记录,论文主要架构如下:
第一章:引言。第一章主要介绍了课题研究的背景和意义,系统开发的国内外研究现状和本文的研究内容与主要工作。
第二章:系统需求分析。主要从系统的用户、功能等方面进行需求分析。
第三章:系统设计。主要对系统框架、系统功能模块、数据库进行功能设计。
第四章:系统实现。主要介绍了系统框架搭建、系统界面的实现。
第五章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试
2 系统分析
系统分析是开发一个项目的先决条件,通过系统分析可以很好的了解系统的主体用户的基本需求情况,同时这也是项目的开发的原因。进而对系统开发进行可行性分析,通常包括技术可行性、经济可行性等,可行性分析同时也是从项目整体角度进行的分析。然后就是对项目的具体需求进行分析,分析的手段一般都是通过用户的用例图来实现。接下来会进行详细的介绍。
2.1 可行性分析
(1)技术可行性
Django是一个高级Python Web框架,可以快速开发安全和可维护的网站。它遵循MVC设计模式,并内置了对象关系映射(ORM)系统,使得数据库操作变得简单高效。Python语言本身具有丰富的库支持,从数据处理到机器学习,都能找到成熟、稳定的解决方案。结合这两者,我们可以高效地构建新闻推荐系统的后端逻辑,实现数据的存储、查询和处理,以及为用户推荐新闻的功能。
(2)经济可行性
新闻推荐系统可以显著提高用户体验,增加用户粘性和活跃度,从而带来更高的广告收入和付费阅读收益。此外,系统可以为新闻机构提供精准的用户行为分析,帮助他们优化内容生产和营销策略。从长远来看,这样的系统可以为新闻机构带来显著的经济效益。
(3)社会可行性
在信息爆炸的时代,用户往往难以从海量的新闻中筛选出真正感兴趣的内容。新闻推荐系统可以帮助用户快速找到他们感兴趣的新闻,提高新闻阅读的效率和质量。同时,通过个性化推荐,系统可以促进新闻内容的多样性和包容性,满足不同用户的需求和兴趣。这对于提高新闻媒体的传播效果和社会影响力具有重要意义。
(4)法律可行性
在设计和实现新闻推荐系统时,必须严格遵守相关法律法规和隐私政策。例如,系统需要保护用户数据的隐私和安全,不得泄露或滥用用户信息。此外,系统还需要确保推荐的新闻内容不侵犯版权和知识产权。只要我们在设计和实现过程中严格遵守这些法律法规,新闻推荐系统的法律可行性是可以保障的。
综上所述,基于Django和Python语言的新闻推荐系统设计与实现从技术、经济、社会和法律四个方面来看都是可行的。这样的系统不仅可以提高新闻传播的效率和质量,还可以为新闻机构带来显著的经济效益和社会效益。
2.2 系统流程分析
2.2.1系统开发流程
基于python语言的新闻推荐系统开发时,首先进行需求分析,进而对系统进行总体的设计规划,设计系统功能模块,数据库的选择等,本系统的开发流程如图2-1所示。
图2-1系统开发流程图
2.2.2 用户登录流程
为了保证系统的安全性,要使用本系统对系统信息进行管理,必须先登陆到系统中。如图2-2所示。
图2-2 登录流程图
2.2.3 系统操作流程
用户打开并进入系统后,会先显示登录界面,输入正确的用户名和密码,系统自动检测信息,若信息无误,则用户会进入系统功能界面,进行操作,否则会提示错误无法登录,操作流程如图2-3所示。
图2-3 系统操作流程图
2.2.4 添加信息流程
管理员可以对网站公告、新闻资讯等进行信息的添加,用户可以对自己权限内的信息进行添加,输入信息后,系统会自行验证输入的信息和数据,若信息正确,会将其添加到数据库内,若信息有误,则会提示重新输入信息,添加信息流程如图2-4所示。
图2-4 添加信息流程图
2.2.5 修改信息流程
管理员可以对网站公告、新闻资讯等进行的修改,用户可以对自己权限内的信息进行修改,首先进入修改信息界面,输入修改信息数据,系统进行数据的判断验证,修改信息合法则修改成功,信息更新至数据库,信息不合法则修改失败,重新输入。修改信息流程图如图2-5所示。
图2-5 修改信息流程图
2.2.6 删除信息流程
管理员可以对网站公告、新闻资讯等进行信息的删除,对要删除的信息进行选中后,点击删除按钮,系统会询问是否确定,若点击确定,则系统会删除掉选中的信息,并在数据库内对信息进行删除,删除信息流程图如图2-6所示。
图2-6 删除信息流程图
2.3 系统功能分析
2.3.1 功能性分析
按照基于python语言的新闻推荐系统的角色,系统划分为了普通用户模块和管理员模块这两大部分。
登录注册: 提供普通用户注册新账号或登录已有账号的功能,确保用户可以访问系统的个性化内容。
首页: 展示最新的网站公告、新闻资讯和热门新闻,引导用户进入相关功能模块。
网站公告: 显示系统发布的重要网站公告信息,如系统更新、服务变更等。
新闻资讯: 提供多样化的新闻资讯内容,覆盖各个领域的新闻报道。
热门新闻: 显示当前热门的新闻文章,让用户了解最受关注的话题。
热门新闻推荐: 根据当前用户点击多次某条数据的类型,推荐相同类型的数据,提高用户体验。
智能机器人: 用户可以与智能机器人进行交互,获取新闻推荐、提问等服务。
我的账户: 用户可以管理个人账户信息,包括密码修改、个人设置等。
个人中心:
个人首页: 用户的个人主页,显示个人信息和相关操作入口。
收藏: 用户可以收藏感兴趣的内容,如新闻文章等。
2.管理员功能:
后台首页: 管理员登录后的管理主页,显示系统的重要信息和功能入口。
系统用户: 管理系统用户的账号信息,包括添加、编辑和删除用户。
新闻类型管理: 管理新闻的分类信息,方便用户浏览和查找。
热门新闻管理: 管理热门新闻的展示和排序,确保热门新闻的及时更新。
轮播图管理: 管理系统首页轮播图信息,包括添加、编辑和删除图片等。
网站公告管理: 管理系统发布的网站公告信息,包括添加、编辑和删除等操作。
新闻资讯: 管理系统中的新闻资讯信息,包括添加、编辑和删除新闻文章。
资讯分类: 管理新闻资讯的分类信息,确保新闻的整体管理和整理。
以上功能需求分析有助于设计和实现一个能够提供个性化、多样化新闻内容的系统,同时让管理员能够管理系统中的各类信息和用户。
2.3.2 非功能性分析
基于python语言的新闻推荐系统的非功能性需求比如系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2-1表格中:
表2-1基于python语言的新闻推荐系统非功能需求表
安全性 | 主要指基于python语言的新闻推荐系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指基于python语言的新闻推荐系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响基于python语言的新闻推荐系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着基于python语言的新闻推荐系统的页面展示内容进行操作,就可以了。 |
可维护性 | 基于python语言的新闻推荐系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.4 系统用例分析
通过2.3功能的分析,得出了系统的用例图:
普通用户角色用例如图2-7所示。
图2-7普通用户角色用例图
管理员是维护整个基于python语言的新闻推荐系统中所有数据信息的。管理员角色用例如图2-8所示。
2.5本章小结
本章主要通过对基于python语言的新闻推荐系统的可行性分析、流程分析、功能需求分析、系统用例分析,确定整个系统要实现的功能。同时也为系统的代码实现和测试提供了标准。
3 系统总体设计
本章主要讨论的内容包括系统的功能模块设计、数据库系统设计。
3.1 系统架构设计
本系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1系统架构设计图
表现层(UI):又称UI层,主要完成本系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本系统时的舒适度。UI的界面设计也要适应不同版本的新闻推荐系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本系统的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本系统的数据存储和管理功能。
3.2 系统功能模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本系统中的用例。那么接下来就要开始对本系统的架构、主要功能和数据库开始进行设计。基于python语言的新闻推荐系统根据前面章节的需求分析得出,其总体设计模块图如图3-2所示。
图3-2系统功能模块图
3.3 数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.3.1 数据库概念结构设计
下面是整个基于python语言的新闻推荐系统中主要的数据库表总E-R实体关系图。
图3-3 基于python语言的新闻推荐系统总E-R关系图
3.3.2 数据库逻辑结构设计
通过上一小节中基于python语言的新闻推荐系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hot_news_id | int | 10 | 0 | N | Y | 热门新闻ID | |
2 | news_id | varchar | 64 | 0 | Y | N | 新闻编号 | |
3 | news_channel | varchar | 64 | 0 | Y | N | 新闻频道 | |
4 | news_headlines | varchar | 64 | 0 | Y | N | 新闻标题 | |
5 | news_type | varchar | 64 | 0 | Y | N | 新闻类型 | |
6 | news_cover | varchar | 255 | 0 | Y | N | 新闻封面 | |
7 | news_content | longtext | 2147483647 | 0 | Y | N | 新闻内容 | |
8 | release_time | datetime | 19 | 0 | Y | N | 发布时间 | |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | news_type_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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
3.4本章小结
整个基于python语言的新闻推荐系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
4 系统关键模块设计与实现
基于python语言的新闻推荐系统的详细设计与实现主要是根据前面的需求分析和总体设计来设计页面并实现业务逻辑。主要从界面实现、业务逻辑实现这两部分进行介绍。
4.1前台用户功能模块
4.1.1 首页界面
当进入基于python语言的新闻推荐系统的时候,首先映入眼帘的是系统的导航栏,其主界面展示如下图4-1所示。
图4-1 首页界面图
4.1.2 用户登录界面
基于python语言的新闻推荐系统中的注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到基于python语言的新闻推荐系统的首页中;否则将会提示相应错误信息,用户登录界面如下图4-2所示。
图4-2用户登录界面图
4.1.3 新闻资讯界面
当用户点击导航栏上的“新闻资讯”后将会进入到该“新闻资讯”列表的界面,支持关键词搜索和下拉搜索,用户可以查看新闻资讯详情信息,可以进行点赞、收藏、评论等操作,界面如下图4-3所示。
图4-3新闻资讯详情界面图
4.1.4 热门新闻界面
点击“热门新闻”,用户可以查看系统发布的所有热门新闻,点击可查看详情,用户可点赞、收藏、评论等。页面如图4-4所示。
图4-4 热门新闻列表界面图
4.1.5 热门新闻推荐界面
用户可浏览首页“热门新闻推荐”,系统根据当前用户点击多次某条数据的类型,推荐相同类型的数据,当该类型不足12条时,系统会自动把其他类型点击率靠前的补足12条首页推荐数据,提高用户体验。界面如下图所示。
图4-5热门新闻推荐界面图
4.2后台管理员功能模块
4.2.1 系统用户管理界面
基于python语言的新闻推荐系统中的管理人员是可以对注册的普通用户进行管理的,也可以对管理员进行管控。界面如下图4-6所示。
图4-6用户管理界面图
4.2.2 系统管理界面
管理员点击“系统管理”这一菜单会显示轮播图这一个子菜单,管理员可以对前台展示的轮播图进行设置,界面如下图4-7所示。
图4-7系统管理界面图
4.2.3 新闻分类管理界面
管理员点击“新闻分类管理”菜单,可以添加、查看、管理新闻分类。界面如下图所示。
图4-8新闻分类管理界面图
4.2.4 资源管理界面
当管理员点击“资源管理”这一菜单的时候,会出现新闻资讯+资讯分类这两个子菜单,可以对这两个模块进行增删改查操作。资源管理界面如下图所示。
图4-9资源管理界面图
4.2.5 网站公告管理界面
管理员点击“网站公告管理”这一菜单会显示网站公告这一个子菜单,管理员可以对前台展示的网站公告消息进行设置,界面如下图4-10所示。
图4-10网站公告管理界面图
5 系统测试
5.1系统测试的目的
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
5.2 系统测试用例
系统测试包括:用户登录功能测试、热门新闻展示功能测试、热门新闻添加、热门新闻搜索、密码修改功能测试,如表5-1、5-2、5-3、5-4、5-5所示:
表5-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
热门新闻查看功能测试:
表5-2热门新闻查看功能测试表
用例名称 | 热门新闻查看 |
目的 | 测试热门新闻查看功能 |
前提 | 用户登录 |
测试流程 | 点击热门新闻列表 |
预期结果 | 可以查看到所有热门新闻 |
实际结果 | 实际结果与预期结果一致 |
管理员添加热门新闻界面测试:
表5-3 管理员添加热门新闻界面测试表
用例名称 | 热门新闻添加测试用例 |
目的 | 测试热门新闻添加功能 |
前提 | 管理员正常登录情况下 |
测试流程 | 1)管理员点击热门新闻管理,然后点击热门新闻添加,点击添加后并填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的热门新闻 |
实际结果 | 实际结果与预期结果一致 |
新闻资讯搜索功能测试:
表5-4新闻资讯搜索功能测试表
用例名称 | 新闻资讯搜索测试 |
目的 | 测试新闻资讯搜索功能 |
前提 | 无 |
测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
预期结果 | 页面显示包含有搜索关键字的新闻资讯 |
实际结果 | 实际结果与预期结果一致 |
密码修改功能测试:
表5-5 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
5.3 系统测试结果
通过编写基于python语言的新闻推荐系统的测试用例,已经检测完毕用户登录模块、热门新闻查看模块、热门新闻添加模块、新闻资讯搜索模块、密码修改功能测试,通过这5大模块为基于python语言的新闻推荐系统的后期推广运营提供了强力的技术支撑。
结论
至此,基于python语言的新闻推荐系统已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如python、django、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
参考文献
[1]陈志浩,赖钿钿,古万荣,等.融合知识图谱和用户长短期兴趣的新闻推荐[J/OL].软件导刊,1-11[2024-04-09].http://kns.cnki.net/kcms/detail/42.1671.TP.20240325.1723.002.html.
[2]张扬,彭明坤,蔡莉,等.基于协同过滤算法的新闻推荐系统的设计与实现[J].电脑知识与技术,2024,20(03):60-61+64.DOI:10.14004/j.cnki.ckt.2024.0133.
[3]Pan Y .Design and research of news recommendation system based on perceptron model in big data era[J].Applied Mathematics and Nonlinear Sciences,2024,9(1):
[4]Muhammad M T ,Ullah H K ,Saqib I , et al.Deep learning in news recommender systems: A comprehensive survey, challenges and future trends[J].Neurocomputing,2023,562
[5]谭小辉.基于会话兴趣度和位置时间感知的多样化会话推荐[D].南京邮电大学,2023.DOI:10.27251/d.cnki.gnjdc.2023.000174.
[6]安丽达,王娟.推荐系统在新闻领域的研究综述[J].互联网周刊,2023,(18):80-81.
[7]Reham A ,Halah A ,Amaal A .Context-Aware News Recommendation System: Incorporating Contextual Information and Collaborative Filtering Techniques[J].International Journal of Computational Intelligence Systems,2023,16(1):
[8]孟祥福,霍红锦,张霄雁,等.个性化新闻推荐方法研究综述[J].计算机科学与探索,2023,17(12):2840-2860.
[9]刘佳茵.基于知识图谱的个性化新闻推荐模型研究[D].西安理工大学,2023.DOI:10.27398/d.cnki.gxalu.2023.000515.
[10]陈涛.基于主题的个性化新闻推荐系统的设计与实现[D].浙江大学,2023.DOI:10.27461/d.cnki.gzjdx.2023.001660.
[11]张译丹.基于混合新闻推荐的微服务工具应用研究[D].中国传媒大学,2023.DOI:10.27483/d.cnki.gbjgc.2023.000069.
[12]王思琪.面向用户偏好的网络热点新闻推荐方法研究与实现[D].沈阳工业大学,2023.DOI:10.27322/d.cnki.gsgyu.2023.000675.
[13]张帅帅.基于内容特征和时序行为的新闻推荐系统的设计与实现[D].北京邮电大学,2023.DOI:10.26969/d.cnki.gbydu.2023.000500.
[14]张思淇.基于Hadoop的新闻推荐算法研究[D].沈阳工业大学,2023.DOI:10.27322/d.cnki.gsgyu.2023.000717.
[15]田柳叶.基于用户体验的个性化推荐机制在新闻APP中的应用研究[D].武汉纺织大学,2023.DOI:10.27698/d.cnki.gwhxj.2023.000231.
[16]张文韬.基于用户兴趣挖掘的新闻推荐系统的设计与实现[D].北京邮电大学,2023.DOI:10.26969/d.cnki.gbydu.2023.002899.
[17]范琳娟.基于知识图谱的新闻推荐系统研究[D].西安工业大学,2023.DOI:10.27391/d.cnki.gxagu.2023.000901.
[18]刘启航.基于深度学习的个性化新闻推荐算法研究与应用[D].阜阳师范大学,2023.DOI:10.27846/d.cnki.gfysf.2023.000202.
[19]张曼玉.基于用户交互行为的新闻推荐算法的研究[D].北京交通大学,2023.DOI:10.26944/d.cnki.gbfju.2023.001157.
[20]高程峰.基于特征学习和偏好学习的新闻推荐系统的研究与实现[D].辽宁大学,2023.DOI:10.27209/d.cnki.glniu.2023.001391.
致 谢
转眼间,大学生用户活便已经接近尾声,人面对着离别与结束,总是充满着不舍与茫然,我亦如此,仍记得那年秋天,我迫不及待的提前一天到了学校,面对学校巍峨的大门,我心里充满了期待:这里,就是我新生活的起点吗?那天,阳光明媚,学校的欢迎仪式很热烈,我面对着一个个对着我微笑的同学,仿佛一缕缕阳光透过胸口照进了我心里,同时,在那天我认识可爱的室友,我们携手共同度过了这难忘的两年。如今,我望着这篇论文的致谢,不禁又要问自己:现在,我们就要说再见了吗?
感慨莫名,不知所言。遥想当初刚来学校的时候,心里总是想着工科学校会过于板正,会缺乏一些柔情,当时心里甚至有一点点排斥,但是随着我对学校的慢慢认识与了解,我才认识到了她的美丽,她的柔情,并且慢慢的喜欢上了这个校园,但是时间太快了,快到我还没有好好体会她的美丽便要离开了,但是她带给我的回忆,永远不会离开我,也许真正离开那天我的眼里会满含泪水,我不是因为难过,我只是想将她的样子映在我的泪水里,刻在我的心里。最后,感谢我的老师们,是你们教授了我们知识与做人的道理;感谢我的室友们,是你们陪伴了我如此之久;感谢每位关心与支持我的人。
少年,追风赶月莫停留,平荒尽处是春山。