摘   

在社会快速发展的影响下,新闻业继续发展,大大增加了新闻的数量、多样性、质量等等的要求,使网站的管理和运营比过去十年更加困难。依照这一现实为基础,设计一个快捷而又方便的新闻阅读系统是一项十分重要并且有价值的事情。对于传统的网站控制模型来说,新闻阅读系统具有许多不可比拟的优势,首先是快速更新网站的信息,其次是大量信息的管理,最后是高度安全,以及使用简单等特性,这使得新闻阅读系统的管理和运营非常方便。进入21世纪,因为科技和经济的迅速发展,人民群众对非物质层面的精神需求正变得越来越多元化。本系统是为了实现这些目标而提出来的。

本论文描绘了整个新闻阅读系统的设计与实现,主要实现的功能有以下几点:首页、站点管理(轮播图、公告栏)用户管理(管理员、注册用户)内容管理(交流论坛、论坛分类、热点新闻、分类列表)更多管理(新闻分类、原创新闻)等功能,其具有简单的接口,方便的应用,强大的互动,完全基于互联网的特点。

现代社会的网络和信息技术不断提高,人们的生活水平达到一个新的水平。新闻成为一种人们习以为常的文娱方式,但由于工作和生活越来越忙,一个充分利用碎片化时间,简化过程的程序,正是我们所需要的。这篇文章研究了基于springboot的网络管理系统的开发和实现,从需求分析、总体设计到具体实现,最终完成了整个在线新闻阅读系统,从而方便了用户和提高了网站的管理水平。

关键词:新闻类管理,互联网模式,springboot,数据库

Spring boot news reading system

Abstract

Under the influence of rapid social development, the news industry continues to develop, greatly increasing the number, diversity, quality and other requirements of news, making the management and operation of websites more difficult than in the past decade. According to this reality, it is very important and valuable to design a fast and convenient news reading system. For the traditional website control model, the news reading system has many incomparable advantages. First, it updates the information of the website quickly, secondly, it manages a large amount of information, and finally, it is highly secure and easy to use, which makes the management and operation of the news reading system very convenient. In the 21st century, with the rapid development of science, technology and economy, the people's spiritual needs on the non-material level are becoming increasingly diversified. This system is put forward to achieve these goals.

This paper describes the design and implementation of the whole news reading system. The main functions are as follows: home page, site management (carousel map, bulletin board), user management (administrator, registered user), content management (exchange forum, forum classification, hot news, classified list), more management (news classification, original news), etc. It has simple interfaces, convenient applications, strong interaction, It is completely based on the characteristics of the Internet.

With the continuous improvement of network and information technology in modern society, people's living standards have reached a new level. News has become a way of entertainment that people are accustomed to, but as work and life are getting busier and busier, a program that makes full use of fragmented time and simplifies the process is exactly what we need. This paper studies the development and implementation of the network management system based on spring boot. from demand analysis, overall design to specific implementation, the entire online news reading system is finally completed, which facilitates users and improves the management level of the website.

Keywords: news management, internet mode, spring boot, database

目录

1 绪   论

1.1研究背景

1.2开发现状

1.3研究方法

2 相关技术介绍

2.2 Eclipse

2.3 Tomcat

2.4 java技术

2.5  MySQL

2.6  springboot框架

3系统分析

3.1 可行性分析

3.1.1技术可行性

3.1.2经济可行性

3.1.3社会可行性

3.2总体设计原则

3.3 系统需求分析

3.4 业务流程分析

3.4.1登录流程

3.4.2注册流程

3.4.3添加信息流程

3.4.4删除信息流程

4系统设计

4.1 系统概要设计

4.2系统结构设计

4.3 数据库设计

4.3.1概念结构设计

4.3.2数据库表设计

5系统实现

5.1用户登录的实现

5.2系统前台主要功能实现

5.2.1首页的实现

5.3用户注册的实现

5.4热点新闻展示的实现

5.5新闻搜索的实现

5.6系统后台主要功能实现

5.6.1用户管理的实现

5.7原创新闻管理的实现

6软件测试

6.1系统测试的意义

6.2测试实例的研究与选择

6.3测试环境与测试条件

6.4系统运行情况

6.5系统评价

6.5.1系统功能评价

6.5.2系统技术评价

6.5.3系统经济评价

总结

参考文献:

致   谢

1 绪   论

1.1研究背景

ENIAC的诞生使得信息不再被单调地记录在纸质传统媒介上;ARPANET的出现让人类看到了计算机间信息共享的希望;而Web技术的发展,让人们可以方便快捷地在桌面上完成信息交互。近年来,计算机参与到了人类衣食住行的各个方面,也改善了人们的生活品质。在获取外界信息方面,传统的报纸杂志等渠道已经远远不够,尤其是生活节奏越来越快、信息量越来越大、新闻内容形形色色,传统的新闻发布和管理工作日趋繁重复杂。因此基于springboot技术的新闻发布系统应运而生。

1.2开发现状

西方发达国家步入互联网时代的时间较早,国外的新媒体已经由功能单一向初具规模发展,其掌握的相关技术也比较成熟。中国在这方面发展较晚,经历了不断的摸索和实践,目前国内的网络硬件设施基本上已经覆盖了大部分地区,国内的发展重点在于学习先进的互联网技术,使新媒体更好地为人们服务。

在国外,新媒体技术经历了十几年甚至更多年的发展,他们的核心功能基本上已经能够适应社会的飞速发展和人们更高的要求。另外,他们会把客户的实际需求作为最基本的考虑因素,尽量实现易操作高集成化的系统,从新闻的采集工作开始,新闻的提交,审核,修改,发布等各个环节都实现无缝对接。网络新闻会涉及到多领域的实时动态,也可以完成和用户的交互,还可以将传统媒体的文字转化为声音、图像、视频,使用户一目了然。美国的BuzzFeed通过网络从大量新闻博客中搜集新闻,为用户提供最新热门事件;美国有线电视新闻网Cable News Network全天候无休息直播新闻报道,CNN的用户还可以通过评论或电子邮件进行投稿,经编辑审核通过的稿件可在新闻网呈现;英国最大的新闻广播公司BBC的新闻服务BBC News会在各新闻版块显示出最受欢迎领域的最新消息;澳大利亚ABC新闻阅读网站也会特别注重为公众提供最新的实时新闻资讯。

以往的系统,一部分采用静态页面,需要管理人员必须手动制作新的网页,上传新的网页之后还需要修改链接;对于用户来说,管理人员发布新的网页时,用户无法访问系统。随着中国经济实力和科技实力的增强,新闻阅读网站的技术也在不断进步,现在的技术已经可以解决静态网页的问题了。

1.3研究方法

首先,通过引擎搜索或者查阅相关文献资料,了解了本系统开发的背景以及设计系统的意义所在,收集用户需求信息。其次,在开发工具上,最终确定选用springboot平台来设计开发本系统,Mysql作为设计数据库的工具。即利用java语言实现用户界面,并同数据库连接起来实现完整的通信功能。之后,设计出系统大致的功能模块。主要从方便系统用户和系统管理员的角度进行分析,明确该系统应该具有的功能。最终是测试系统,通过用例测试发现存在的问题并找到解决的方案。利用现有的开发平台,结合自己所学的知识,在老师的指导帮助下来完成该设计,确保系统的可用性、实用性。

相关技术介绍

2.1.开发技术说明:

本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的springboot框架进行开发。

前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。

后端部分:采用springboot作为开发框架,同时集成MyBatis、Redis等相关技术。

2.2 Eclipse

本系统使用的是Eclipse,Eclipse是一个集成开发环境,可以用于Java或者移动应用等方面的程序开发。它有许多强大功能如:编译、调试、test和发布等。同时支持一些其他语言如:HTML脚本,SQL,SSM,CSS样式,Spring,Hibernate,Javascript等。

2.3 Tomcat

本文使用的是Tomcat7 ,其具有较轻量级的优点,同时支持最新的Servlet2.4和SSM2.0规范。可以为广大学生开发者提供一个免费的、性能稳定的服务。

2.4 java技术

Java语言是在二十世纪末由Sun公司发布的,而且公开源代码,这一优点吸引了许多世界各地优秀的编程爱好者,也使得他们开发出当时一款又一款经典好玩的小游戏。Java语言是纯面向对象语言之一,从发布初期到现今,可以说有将近20多年的历史,已发展成为人类计算机编程语言发展史上的一个深远影响。

Java语言具有非常多种的特性:(1)跨平台的无关性;(2)面向对象; (3)安全性得以保障;(4)支持多个任务;(5)多种编写方式,代码编写简单。对比其他的低级语言、高级语言,Java语言具有明显的显著优势以及未来开阔的前景,可以广泛的应用在个人笔记本电脑、大数据、大型游戏等等。

首先,Java语言具有面向对象的特性,并且易于理解。关于对象,其实可以理解成每一种事物都是一种对象,包括我们人类自身都是一种对象。利用面向对象语言的基本特征来解决软件开发中的实际问题,为有效软件开发提供了技术支持。

其次,Java 语言具有很好的跨平台无关性。所编写出来的应用程序是Java语言编写的,那么就无需再使用编译器来修改程序代码,可以直接在任何计算机系统中运行,Windows系统可以运行,在Linux系统中也可以,也就是经过一次编译,可以到处运行,所以Java语言具有卓越的可移植性,可以很好的跨平台实现。

2.5  MySQL

Mysql是一个多用户、多线程的服务器,采用SQL的数据库,数据库管理系统是基于SQL的客户以及服务器模式的关系,它的优点有强大的功能、操作简单、管理方便、可靠安全、运行较快、多线程、跨平台性、完全网络化、稳定性等,非常适合Web站点或者其他应用软件,在数据库后端的开发。此外,利用许多语言,会员可以编写和访问Mysql数据库的程序。Mysql数据库也是开放源代码的,开发者越来越喜欢使用Mysql关系数据库,应用范围也被推而广之。这是由于速度快和易用性, Web站点或应用软件的数据库后端的开发也都在使用它。

mysql 数据库它有很多的优点,例如它在操作上能够让人通俗易懂、功能强大、信息储存量高等优点。所以被人们广泛应用,对于mysql数据库来说它一般主要是对数据进行编码和查询,而且在很多的设计当中都应用到了该数据库,在此过程当中我们可以对常规的数据进行查询和组合,所以我们在进行使用mysql数据库的时候只要对编写一小段的数据就能实现相应的功能。数据库,就是数据存储的储藏室,只不过数据是存储在计算机上的,而不是现实中的储藏室,数据的存放是按固定格式,而不是无序的,则定义就是 :长期有固定格式,可以共享的存储在计算机存储器上。数据库管理主要包括数据表的建立,数据存储、修改和增加数据,为了使数据库系统能够正常运行,相关人员进行的管理工作。数据表的建立,可以对数据表中的数据进行调整,数据的重新组合及重新构造,保证数据的安全性。

2.6  springboot框架

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。

3系统分析

3.1 可行性分析

可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面,分别是技术、经济和社会三方面的可行性。我会从这三个方面对新闻阅读系统进行详细的分析。

3.1.1技术可行性

该系统主要使用JAVA、Eclipse和MySQL数据库进行开发,Java易于学习和使用灵活。在校期间也接触过Eclipes和MySQL数据库的课程,对此有一定的开发经验,因此开发难度不高,所以从技术上来说是可行的。

3.1.2经济可行性

本系统设计所选择的开发工具和服务器都是免费的开源软件,又或者是适合学生使用的免费版本,并不需要支付费用,而且由作者本人单独完成,也不存在团队费用,几乎没有经济成本,具备经济可行性。

3.1.3社会可行性

社会可行性主要包括法律和用户两个方面,下面将从这两方面进行分析。

(1)法律因素

本系统是学习开发所制作的程序,并不用作商业用途,是在根据实际调研的结果结合现有的新闻阅读系统后得出的,而且系统制作的全部过程都是在个人的工作电脑中完成的,使用的都是开源和免费的开发环境、分析软件和数据库,不存在侵权问题。

(2)用户可行性

操作人员或者客户只需要具备一定的windows电脑操作常识,不需要精通计算机技能。此外系统管理人员,只需要在windows常识之上再熟悉下使用Tomcat服务器的操作流程,只要掌握一定的计算机知识即可,在正式上线运营之前,仅需要对操作人员进行简单的熟悉流程培训即可。所以从用户可行性上也是可行的。

3.2总体设计原则

一个系统要在开发和维护的过程中方便使用,必须采取一定的设计原则,其主要设计原则有:

简单性:系统功能简单易懂,只需要掌握基本的计算机操作能力即可使用。

针对性:针对特定的网站用户,没有多余的其他功能,使用户可以专心使用。

实用性:能够满足用户查看新闻信息等方面的需求。

一致性:设计风格、命名规范一致,整个系统的各个功能模块色彩、摆放位置、功能等都是一致的。

先进性:本系统的代码采用读取数据的方式,方便后续开发、拓展。

3.3 系统需求分析

新闻阅读系统需要满足的需求有以下几个:

1.信息获取方便,用户可在网页上快速浏览到新的信息

2.查看新闻详情,单独查看某一个新闻的详细信息,获取好评等。

3.注册登录,网站需要吸引客户,即通过注册来提高用户的存留率。

4.修改用户信息,可以修改用户密码或者用户名等一些个性化操作。

5.管理员功能,管理员可以对用户或者新闻进行管理。

6.系统安全,操作简便,不过于复杂。

7.系统可以稳定运行,不存在卡顿等问题造成用户反感。

3.4 业务流程分析

3.4.1登录流程

登录模块主要满足管理员以及用户的权限登录,用户登录流程图如图2-1所示。

图2-1 登录流程图

3.4.2注册流程

未有账号的用户可进入注册界面进行注册操作,用户注册流程图如图2-2所示。

图2-2 注册流程图

3.4.3添加信息流程

用户在添加信息时,信息编号自动生成,系统会对添加的信息进行验证,验证通过则添加至数据库,添加信息成功,反之添加失败。添加信息流程如图2-3所示。

图2-3 添加信息流程图

3.4.4删除信息流程

用户可选择要删除的信息进行信息删除操作,在删除信息时系统提示是否确定删除信息,是则删除信息成功,系统数据库将信息进行删除。删除信息流程图如图2-4所示。

图2-4删除信息流程图

4系统设计

4.1 系统概要设计

本新闻阅读系统选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图3-1所示:

图3-1 系统工作原理图

4.2系统结构设计

整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。

本新闻阅读系统结构图如图3-2所示。

图3-2 新闻阅读系统结构图

4.3 数据库设计

数据库可以说是所有软件的根本,如果数据库存在缺陷,那么会导致系统开发的不顺利、维护困难、用户使用不顺畅等一系列问题,严重时将会直接损害企业的利益,同时在开发完成后,数据库缺陷也更加难以解决。所以必须要对数据库设计重点把握,做到认真细致。因此,数据库设计是这个在线新闻阅读系统的重点要素。

4.3.1概念结构设计

(1)管理员实体属性图如下图3-3所示

图3-3管理员实体属性图

(2) 新闻分类管理实体属性如下图3-4所示

图3-4新闻分类管理实体属性图

(3) 新闻信息管理实体属性如下图3-5所示

图3-5新闻信息管理实体属性图

4.3.2数据库表设计

将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。

chart

字段名称

类型

长度

不是null

主键

字段说明

chart_id

int

10

主键

聊天ID

user_id

int

11

用户ID

title

varchar

64

标题

content

longtext

0

内容

nickname

varchar

32

昵称

avatar

varchar

255

头像

create_time

timestamp

0

创建时间

update_time

timestamp

0

更新时间

reply_id

int

11

回复ID

news_classification

news_classification_id

int

11

主键

新闻分类ID

news_category

varchar

64

新闻类别

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

notice

字段名称

类型

长度

不是null

主键

字段说明

notice_id

mediumint

8

主键

公告id

title

varchar

125

标题

content

longtext

0

正文

create_time

timestamp

0

创建时间

update_time

timestamp

0

更新时间

original_news

字段名称

类型

长度

不是null

主键

字段说明

original_news_id

int

11

主键

原创新闻ID

title

varchar

64

标题

news_category

varchar

64

新闻类别

cover

varchar

255

封面

user_no

int

11

用户编号

full_name

varchar

64

姓名

brief_introduction

text

0

简介

details

longtext

0

详情

hits

int

11

点击数

praise_len

int

11

点赞数

examine_state

varchar

16

审核状态

examine_reply

varchar

16

审核回复

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

praise

字段名称

类型

长度

不是null

主键

字段说明

praise_id

int

10

主键

点赞ID

user_id

int

11

点赞人

create_time

timestamp

0

创建时间

update_time

timestamp

0

更新时间

source_table

varchar

255

来源表

source_field

varchar

255

来源字段

source_id

int

10

来源ID

status

tinyint

1

点赞状态1为点赞,0已取消

registered_user

字段名称

类型

长度

不是null

主键

字段说明

registered_user_id

int

11

主键

注册用户ID

user_no

varchar

64

用户编号

full_name

varchar

64

姓名

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

slides

字段名称

类型

长度

不是null

主键

字段说明

slides_id

int

10

主键

轮播图ID

title

varchar

64

标题

content

varchar

255

内容

url

varchar

255

链接

img

varchar

255

轮播图

hits

int

10

点击量

create_time

timestamp

0

创建时间

update_time

timestamp

0

更新时间

5系统实现

5.1用户登录的实现

用户登录页面,该页面有一个权限区分,主要用于区分系统管理员和普通客户的登录。当登录的账号是系统管理员时,管理员可以进行新闻的后台管理,而普通客户只能进行客户端的操作,普通客户只有在注册登录以后方可在网上购买新闻。如果客户还没有登录的账号和密码,必须先在系统上注册一个。在登录后,可以进入阅读的操作。

已登录的用户可以查看、修改个人信息以及密码修改等操作。用户信息的查看功能在yonghuzhuce_updt.html页面中实现。用户信息,和密码修改功能在系统窗口中实现的。

登录界面如下图所示。

图5-1登录界面

登录系统主要代码如下。

/**

* 登录

* @param data

* @param httpServletRequest

* @return

*/

@PostMapping("login")

public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

log.info("[执行登录接口]");

String username = data.get("username");

String email = data.get("email");

String phone = data.get("phone");

String password = data.get("password");

List resultList = null;

Map<String, String> map = new HashMap<>();

if(username != null && "".equals(username) == false){

map.put("username", username);

resultList = service.select(map, new HashMap<>()).getResultList();

}

else if(email != null && "".equals(email) == false){

map.put("email", email);

resultList = service.select(map, new HashMap<>()).getResultList();

}

else if(phone != null && "".equals(phone) == false){

map.put("phone", phone);

resultList = service.select(map, new HashMap<>()).getResultList();

}else{

return error(30000, "账号或密码不能为空");

}

if (resultList == null || password == null) {

return error(30000, "账号或密码不能为空");

}

//判断是否有这个用户

if (resultList.size()<=0){

return error(30000,"用户不存在");

}

User byUsername = (User) resultList.get(0);

Map<String, String> groupMap = new HashMap<>();

groupMap.put("name",byUsername.getUserGroup());

List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();

if (groupList.size()<1){

return error(30000,"用户组不存在");

}

UserGroup userGroup = (UserGroup) groupList.get(0);

//查询用户审核状态

if (!StringUtils.isEmpty(userGroup.getSourceTable())){

String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

String res = String.valueOf(service.runCountSql(sql).getSingleResult());

if (res==null){

return error(30000,"用户不存在");

}

if (!res.equals("已通过")){

return error(30000,"该用户审核未通过");

}

}

//查询用户状态

if (byUsername.getState()!=1){

return error(30000,"用户非可用状态,不能登录");

}

String md5password = service.encryption(password);

if (byUsername.getPassword().equals(md5password)) {

// 存储Token到数据库

AccessToken accessToken = new AccessToken();

accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

accessToken.setUser_id(byUsername.getUserId());

tokenService.save(accessToken);

// 返回用户信息

JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

user.put("token", accessToken.getToken());

JSONObject ret = new JSONObject();

ret.put("obj",user);

return success(ret);

} else {

return error(30000, "账号或密码不正确");

}

}

5.2系统前台主要功能实现

5.2.1首页的实现

用户界面要尽量简洁大方,使用户能够方便找到需要的功能入口,浏览、新闻信息,且要易于修改和维护,同时还要保证用户合法和系统安全。

首页界面如下图所示。

图5-1首页界面

首页关键代码如下。

@RequestMapping(value = {"/avg_group", "/avg"})

public Map<String, Object> avg(HttpServletRequest request) {

Query count = service.avg(service.readQuery(request), service.readConfig(request));

return success(count.getResultList());

}

5.3用户注册的实现

用户注册页面主要用于客户注册,在这个页面中客户要填写用户名,密码,姓名,地址和Email等信息,并且各项信息都不能为空。客户也可以点击修改个人资料和密码。系统管理员对已注册客户的信息可进行确认,可将用户列为正式用户,也可以将其删除。一般注册了的用户默认都是正是用户,前提是管理员没有删除该账号。客户在注册成功以后,才可登录系统。模块的功能是在yonghuzhuce.html页面中实现的。

用户注册界面如下所示。

图5-1用户注册界面

用户注册代码如下:

/**

* 注册

* @param user

* @return

*/

@PostMapping("register")

public Map<String, Object> signUp(@RequestBody User user) {

// 查询用户

Map<String, String> query = new HashMap<>();

query.put("username",user.getUsername());

List list = service.select(query, new HashMap<>()).getResultList();

if (list.size()>0){

return error(30000, "用户已存在");

}

user.setUserId(null);

user.setPassword(service.encryption(user.getPassword()));

service.save(user);

return success(1);

}

/**

* 用户ID:[0,8388607]用户获取其他与用户相关的数据

*/

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Column(name = "user_id")

private Integer userId;

/**

* 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

*/

@Basic

@Column(name = "state")

private Integer state;

/**

* 所在用户组:[0,32767]决定用户身份和权限

*/

@Basic

@Column(name = "user_group")

private String userGroup;

/**

* 上次登录时间:

*/

@Basic

@Column(name = "login_time")

private Timestamp loginTime;

/**

* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

*/

@Basic

@Column(name = "phone")

private String phone;

/**

* 手机认证:[0,1](0未认证|1审核中|2已认证)

*/

@Basic

@Column(name = "phone_state")

private Integer phoneState;

/**

* 用户名:[0,16]用户登录时所用的账户名称

*/

@Basic

@Column(name = "username")

private String username;

/**

* 昵称:[0,16]

*/

@Basic

@Column(name = "nickname")

private String nickname;

/**

* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

*/

@Basic

@Column(name = "password")

private String password;

/**

* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

*/

@Basic

@Column(name = "email")

private String email;

/**

* 邮箱认证:[0,1](0未认证|1审核中|2已认证)

*/

@Basic

@Column(name = "email_state")

private Integer emailState;

/**

* 头像地址:[0,255]

*/

@Basic

@Column(name = "avatar")

private String avatar;

/**

* 创建时间:

*/

@Basic

@Column(name = "create_time")

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

private Timestamp createTime;

@Basic

@Transient

private String code;

}

5.4热点新闻展示的实现

热点新闻展示页是展示系统新闻的页面,可查看新闻标题、图书、内容、点赞数、浏览数等信息,如下图所示。

图5-1热点新闻展示页面

热点新闻展示主要代码如下。

@PostMapping("/upload")

public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {

log.info("进入方法");

if (file.isEmpty()) {

return error(30000, "没有选择文件");

}

try {

//判断有没路径,没有则创建

String filePath = System.getProperty("user.dir") + "\\target\\classes\\static\\upload\\";

File targetDir = new File(filePath);

if (!targetDir.exists() && !targetDir.isDirectory()) {

if (targetDir.mkdirs()) {

log.info("创建目录成功");

} else {

log.error("创建目录失败");

}

}

String fileName = file.getOriginalFilename();

File dest = new File(filePath + fileName);

log.info("文件路径:{}", dest.getPath());

log.info("文件名:{}", dest.getName());

file.transferTo(dest);

JSONObject jsonObject = new JSONObject();

jsonObject.put("url", "/api/upload/" + fileName);

return success(jsonObject);

} catch (IOException e) {

log.info("上传失败:{}", e.getMessage());

}

return error(30000, "上传失败");

}

5.5新闻搜索的实现

新闻搜索引擎主要是为客户提供一个搜索的功能,便于客户查找自己所需要的信息。在这里,客户可以通过选择下拉列表框中的选项,输入关键词,发布人等,再在文本框中输入相应的信息后点击确定,就可以搜索到对应的新闻信息。

新闻搜索界面如下图所示。

图5-1新闻搜索界面

5.6系统后台主要功能实现

5.6.1用户管理的实现

管理员对系统用户的管理,在yhzhgl.html实现管理员用户的管理,包括录入、删除、修改,修改密码通过SESSION获取用户名,然后输入新密码,提交到mod.html中,使用sql命令更新密码。

用户管理界面如下图所示。

图5-1用户管理界面

登录密码修改界面如下图所示。

图5-1登录密码修改界面

登录密码修改的逻辑代码如下。

/**

* 修改密码

* @param data

* @param request

* @return

*/

@PostMapping("change_password")

public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){

// 根据Token获取UserId

String token = request.getHeader("x-auth-token");

Integer userId = tokenGetUserId(token);

// 根据UserId和旧密码获取用户

Map<String, String> query = new HashMap<>();

String o_password = data.get("o_password");

query.put("user_id" ,String.valueOf(userId));

query.put("password" ,service.encryption(o_password));

Query ret = service.count(query, service.readConfig(request));

List list = ret.getResultList();

Object s = list.get(0);

int count = Integer.parseInt(list.get(0).toString());

if(count > 0){

// 修改密码

Map<String,Object> form = new HashMap<>();

form.put("password",service.encryption(data.get("password")));

service.update(query,service.readConfig(request),form);

return success(1);

}

return error(10000,"密码修改失败!");

}

5.7原创新闻管理的实现

管理员在首页通过管理员账号登录以后,就可以进入后台管理。查询原创新闻主要可以查看新闻名称、类别、封面、姓名、简介等信息。原创新闻管理界面如下图所示。

图5-1原创新闻管理界面

原创新闻管理主要代码如下。

@RequestMapping("/get_obj")

public Map<String, Object> obj(HttpServletRequest request) {

Query select = service.select(service.readQuery(request), service.readConfig(request));

List resultList = select.getResultList();

if (resultList.size() > 0) {

JSONObject jsonObject = new JSONObject();

jsonObject.put("obj",resultList.get(0));

return success(jsonObject);

} else {

return success(null);

}

}

public Query select(Map<String,String> query,Map<String,String> config){

StringBuffer sql = new StringBuffer("select ");

sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

}

if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

}

if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

}

log.info("[{}] - 查询操作,sql: {}",table,sql);

return runEntitySql(sql.toString());

}

6软件测试

系统开发的最后一个步骤就是系统测试,系统测试也是整个系统十分重要的一个环节,测试的好坏关系到产品的发展。客户对软件的质量、性能和可靠性等需求就要通过测试来实现。测试过程要必须遵循严谨性、完善性、规范性的原则,测试的主要目的就是看看在系统运行中,是否会出现bug,然后对出现的bug进行调试,直到程序完美运行。但是软件的测试只能尽可能的减少bug,理论上来说是无法达到消除bug。但是bug越少,系统出错的几率就越低,用户使用起来也更方便、更安全。

近年来,软件包含测试从现在的检验当中来看,系统接近预期目标可能出现的问题,并对这些错误做出相应的修正,假如我们不进行早期的测试错误就会延续下去,最后所做出的成品就会有很大的困难。

我们要在这个测试的过程当中找出错误。测试成软件开发的主要一部分,自从有了程序的设计那天开始,它就成为了重要的组成部分。经过统计来看,软件测试可以占据这个系统45%的工作量,而在软件开发的成本当中,对于测试成本来说它包含了很多的测试工作。每个程序测试时都会出现和遇到错误。在整个程序的开发过程当中,人为去查找错误是非常复杂和困难的,所以我们一般都会找一些测试的工具来进行测试

6.1系统测试的意义

只有在运行和维护阶段之前经历大量的测试的软件,才能说明它的质量是经得起检验的。最近计算机业界也都一致认为,测试应该存在于软件设计的每个阶段,因为越早发现错误,修复起来就越容易。

实际上,对于一个软件应用,错误是必然存在的,无论使用何种技术或手段,都不可能绝对的排除软件漏洞。测试是随着软件开发一同诞生的,两者是共同发展进步的。实际上,测试可以大幅度的降低维护的成本,如果一个漏洞在开发的早期就被发现,那么修复它的成本远比上线后再修复的成本要低得多。

6.2测试实例的研究与选择

测试有白盒测试和黑盒测试两种方式。

其中,白盒测试是将软件看成一个透明的白盒子,按照程序的内部控制结构和处理技术逻辑来选定测试用例、软件系统测试的逻辑路径及过程需要进行管理测试,又称玻璃盒测试。因此白盒测试需要选择足够多的测试用例,覆盖尽可能多的代码来发现程序中的错误。

黑盒测试,也称为功能测试。它将需软件看作一个黑盒,像一个普通用户一样来模拟软件的使用流程。黑盒测试通过大量的输入边界值或错误数据,来检查是否可产生正确的输出。

本系统测试 主要选择黑盒测试,少量采用白盒测试。通过测试达到以下测试目的:

1.检查各大功能模块的运行,确保其能够正确运行,并检查各页面的完整性,保证页面完整。

2.检查各个接口是否可以正确地输入和输出,保证数据流通稳定可行。

3.检查数据结构,保证其和外部接口没有访问错误,访问顺利。

4.检查原计划的性能需求有没有完成,运行流畅。

本系统的测试用例(部分):

登录部分测试用例

编号

对象

项目

操作

预期结果

结果

1

登录

登录提示

使用正确的账号密码登录

成功登录

预期结果

2

登录提示

使用正确的账号但错误的密码登录

提示密码错误

预期结果

3

登录提示

使用错误的账号登录

提示不存在账户

预期结果

4

登录提示

不输入账号,点击登录

提示输入账号

预期结果

5

登录提示

输入账号但不输入密码点击登录

提示输入密码

预期结果

6

登录入口

已登录账号,查看登录入口

不显示登录入口

预期结果

6.3测试环境与测试条件

处理器:Inter Core I7-4710MQ四核处理器

内存:4GB

硬盘:1T

操作系统:Windows 10

数据库:MySQL

6.4系统运行情况

全部测试用例都已通过(包括但不限于以上测试用例),且不存在漏洞,实现了论文开始时所作要求。本系统运行稳定,使用流畅,可以满足客户需求。

6.5系统评价

6.5.1系统功能评价

试运行后进行系统评估,可以认为该系统达到预定的目标要求,可以满足用户的需求,也满足了系统开发前所作目标。

6.5.2系统技术评价

系统在经过大量重复测试后运行十分稳定,安全实用,功能模块已经达到预定目标所需。

6.5.3系统经济评价

在规定的时间内实现系统的大部分功能,且满足要求,节省开发成本,有助于提高科学管理水平,符合本人经济情况。

总结

本系统通过对java和Mysql数据库的简介,从硬件和软件两反面说明了新闻阅读系统的可行性,本文结论及研究成果如下:实现了java与Mysql相结合构建的新闻阅读系统,网站可以响应式展示。通过本次新闻阅读系统的研究与实现,我感到学海无涯,学习是没有终点的,而且实践出真知,只有多动手才能尽快掌握它,经验对系统的开发非常重要,经验不足,就难免会有许多考虑不周之处。比如要有美观的界面,更完善的功能,才能吸引更多的用户。

由于在此之前对于java知识没有深入了解,所以从一开始就碰到许多困难,例如一开始的页面显示不规范、数据库连接有问题已经无法实现参数的传递等等,不过通过在网上寻找有关资料以及同学的帮助下最后都得到了解决,在此过程中,我不仅学到了很多知识,也提高了自己解决问题的能力,尤其是学会如何从大量的信息中筛选出所需有用的信息,同时我更加深刻的体会到了,虽然书本上的大部分知识都是有价值,正确的,但实际上每个人编程的思路和对数据处理的方法、思想都是不同的,这就要求我们一定要通过实践才能找到解决问题的方案。在此次毕业设计活动中,我不断的提高了自己,也得到了宝贵的经验,我相信这些对我以后的发展都会有很大帮助。

通过这次新闻阅读系统的开发,我参考了很多相关系统的例子,取长补短,吸取了其他系统的长处,逐步对该系统进行了完善,但是该系统还是有很多的不足之处,有待以后进一步学习。

实践证明,新闻阅读系统有着非常好的发展前景,经过测试运行,系统各项功能都十分完善,界面漂亮,使用方便,操作容易,在技术理论上已经成熟。

参考文献:

[1]施展,朱彦.基于Vue与SpringBoot框架的学生成绩分析和弱项辅助系统设计[J].信息技术与信息化,2022(08):127-131.

[2]阳博,温志萍.基于SpringBoot的在线协同办公系统设计与实现[J].电脑知识与技术,2022,18(22):49-51.DOI:10.14004/j.cnki.ckt.2022.1515.

[3]陈小燕,朱映辉,余晓春.基于SpringBoot+Vue的好农物商城的设计与实现[J].电脑知识与技术,2022,18(22):37-39.DOI:10.14004/j.cnki.ckt.2022.1535.

[4]宋旸.使用Java语言开发Web应用软件的知识探讨[J].中国设备工程,2022(14):121-123.

[5]张海越,范曦.浅析Java语言中线程的生命周期及实现方式[J].大众科技,2022,24(07):18-20+28.

[6]李璋,赵鸿皓,黄震,陈逸凡,杨洲.Java在程序设计语言课程中的应用[J].长江信息通信,2022,35(07):108-111.

[7]陶铭,谢仁平.基于SpringBoot的在线教育系统研发及应用实践[J].软件导刊,2022,21(07):170-174.

[8]吴拓.Java编程语言在计算机软件开发中的应用[J].无线互联科技,2022,19(12):35-37.

[9]何俊峰,朱凌晨.基于SpringBoot+Vue实现智慧化工地之动火证审批系统[J].电脑编程技巧与维护,2022(06):127-129.DOI:10.16184/j.cnki.comprg.2022.06.016.

[10]鲁鑫超. 响应式技术在网页设计中的应用[D].天津职业技术师范大学,2022.DOI:10.27711/d.cnki.gtjgc.2022.000197.

[11]朱亚进.基于高效用项集挖掘和词义归纳的新闻推荐系统[J].计算机应用与软件,2021,38(07):182-189+201.

[12]Fuyuan Cheng. Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework[J]. Advances in Educational Technology and Psychology,2021,5(2).

[13]刘申.响应式网页设计中栅格系统的构建方法研究[J].信息与电脑(理论版),2021,33(09):159-161.

[14]孙莉.新闻业背景下新闻阅读的新闻客观性分析研究——基于系统功能语篇分析视角[J].文教资料,2021(02):36-39.

[15]Guanhong Chen,Jiangming Xu. Design and implementation of efficient Learning platform based on SpringBoot Framework[J]. Journal of Electronics and Information Science,2020,6(1).

[16]Jian Chen,Chen Jian,Pan Hailan. Design of Man Hour Management Information System on SpringBoot Framework[J]. Journal of Physics: Conference Series,2020,1646(1).

[17]邱望,邬娜.响应式网页设计中移动设备的适配研究[J].电脑知识与技术,2020,16(16):16-18+23.DOI:10.14004/j.cnki.ckt.2020.1951.

[18]郑雅娟.响应式电子商务网页设计研究[J].信息与电脑(理论版),2020,32(03):10-11.

[19]徐健.响应式网页设计案例实现与分析[J].信息与电脑(理论版),2018(06):13-15.

[20]戴红梅.响应式网页设计之使用者经验研究[J].艺术教育,2017(14):141-142.

致   谢

大学生活在这个时候即将划上一个句号,但是对于我的人生道路来说,这仅仅是一个逗号,我将面对的是又一次征程的开始。

回忆过去,许许多多的事情浮现在脑海:刚上大学时欢乐心情和兴奋的场景还历历在目。一切都是那么新鲜,那么富有吸引力。有快乐也有艰辛,有收获也有失落。衷心感谢信息学院所有支持帮助过我的老师,谢谢你们多年来的关心和爱护。同窗的友情同样难忘,你们与我共同走过了人生中不平凡的道路,给我留下了值得珍藏的美好记忆。

最后,我要特别感谢指导新闻阅读系统论文设计的老师。本论文是在他的悉心指导和热情帮助下完成的,老师认真负责的工作态度,严谨的治学精神和精深的理论水平都使我受益匪浅。老师无论在理论上还是在实践中,都给予我很大的帮助,使我专业技能的应用水平得到很大提高,这对于我以后的工作和学习都有益处。值此论文完成之际,特别向老师表示衷心的感谢和崇高的敬意,谢谢他细心而又耐心地辅导,使得我得以顺利的完成毕业设计开发工作,同时也要感谢其他帮助过我的老师和同学,他们在我成长过程中给予了我很大的帮助,在此一并表示感谢。

由于本人水平有限,加上时间紧促,本文一定有不少缺点和不足,恳请各位老师给予帮助和指正。

免费领取源码,请点赞关注私信博主

springboot新闻阅读系统 计算机毕设源码63315相关推荐

  1. springboot新闻阅读系统 毕业设计-附源码63315

                                                                                摘  要  在社会快速发展的影响下,新闻业继续发 ...

  2. SpringBoot在线法律咨询辅助系统 计算机毕设源码56952

    摘  要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,法律资讯当然也不例外.在线法律咨询辅助系统是以实际运用为开发背景,运用软件工程原理 ...

  3. 基于Springboot的小型超市商品展销系统 计算机毕设源码01635

    摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代. ...

  4. springboot大学生综合素质测评系统 计算机毕设源码51615

    摘  要 为全面提高教育管理水平,建立一个大学生综合素质测评管理系统已经成为目前各高校的共识.本文从实践经验出发,阐述目前高校学生工作管理的信息化现状﹔然后提出大学生综合素质测评管理系统的必要性以及系 ...

  5. Springboot在线考试管理系统 计算机毕设源码62754

    摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针对在线考试管理等问题,对 ...

  6. django动物领养救助系统 计算机毕设源码63583

    摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针对动物领养救助系统等问题 ...

  7. SSM柳州博物馆文创产品网上商城系统 计算机毕设源码14620

    摘  要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,博物馆文创产品网上商城系统当然也不能排除在外.博物馆文创产品网上商城系统是以实际运 ...

  8. springboot医院住院管理系统 计算机毕设源码32182

    目录 1 绪论 1.1系统开发的意义 1.2系统开发的目标 1.3系统开发技术的特色 1.4springboot框架介绍 2医院住院管理系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数 ...

  9. SSM摄影服务线上选购预约系统 计算机毕设源码83784

    摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采用SSM技术建设摄影服务线 ...

最新文章

  1. Python打印json文件,实现输出
  2. 《软件构架实践》阅读笔记三
  3. C# PictureBox加载图片并显示进度条
  4. Windows 7 shortcut icons missing (快捷方式图标丢失)
  5. 《移动应用开发》作业——HTML、CSS
  6. Docker两个问题的讨论
  7. Java SE Technologies at a Glance
  8. 基于麻雀算法的投影寻踪模型 - 附代码
  9. 催眠与大脑的信息处理
  10. mysql的update和case when同步使用
  11. (第3章)Docker核心原理解读
  12. Debian 8 安装BtSync
  13. 联想计算机怎么设置硬盘,bios设置修改硬盘模式|联想笔记本BIOS设置硬盘模式教程...
  14. 有哪些简单好用的国产数据库?
  15. JPA+Hibernate中常用的注解
  16. 扎实走来的2D网游与突飞猛进的3D网游
  17. 51单片机的出租车计价器设计
  18. unity3d 凹凸贴图、法线贴图、置换贴图
  19. Redis的那些最常见面试问题[精校版]
  20. Linux车机平台pulseaudio多alsasink配置

热门文章

  1. Unity NGUI HUD text简单使用
  2. vs调试技巧(详细)
  3. CPU和存储器的分类
  4. 怎样做好周计划日计划?如何用便签制定工作学习计划?
  5. cocos creator 实现双指缩放的两种方式
  6. 在linux桌面上创建一个文本,如何在Ubuntu中创建文档
  7. 骨传导蓝牙耳机什么牌子好、骨传导蓝牙耳机排行榜
  8. 程序员五一如何虚度时光
  9. MPI编程——分块矩阵乘法(cannon算法)
  10. 【leetcode 66题 之 13 机器人的运动范围】