springboot新闻阅读系统 计算机毕设源码63315
摘 要
在社会快速发展的影响下,新闻业继续发展,大大增加了新闻的数量、多样性、质量等等的要求,使网站的管理和运营比过去十年更加困难。依照这一现实为基础,设计一个快捷而又方便的新闻阅读系统是一项十分重要并且有价值的事情。对于传统的网站控制模型来说,新闻阅读系统具有许多不可比拟的优势,首先是快速更新网站的信息,其次是大量信息的管理,最后是高度安全,以及使用简单等特性,这使得新闻阅读系统的管理和运营非常方便。进入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.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系统经济评价
总结
参考文献:
致 谢
2 相关技术介绍
本系统前端部分基于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框架
3系统分析
3.1 可行性分析
可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面,分别是技术、经济和社会三方面的可行性。我会从这三个方面对新闻阅读系统进行详细的分析。
3.1.1技术可行性
3.1.2经济可行性
本系统设计所选择的开发工具和服务器都是免费的开源软件,又或者是适合学生使用的免费版本,并不需要支付费用,而且由作者本人单独完成,也不存在团队费用,几乎没有经济成本,具备经济可行性。
3.1.3社会可行性
社会可行性主要包括法律和用户两个方面,下面将从这两方面进行分析。
3.2总体设计原则
一个系统要在开发和维护的过程中方便使用,必须采取一定的设计原则,其主要设计原则有:
简单性:系统功能简单易懂,只需要掌握基本的计算机操作能力即可使用。
针对性:针对特定的网站用户,没有多余的其他功能,使用户可以专心使用。
一致性:设计风格、命名规范一致,整个系统的各个功能模块色彩、摆放位置、功能等都是一致的。
先进性:本系统的代码采用读取数据的方式,方便后续开发、拓展。
3.3 系统需求分析
2.查看新闻详情,单独查看某一个新闻的详细信息,获取好评等。
3.注册登录,网站需要吸引客户,即通过注册来提高用户的存留率。
4.修改用户信息,可以修改用户密码或者用户名等一些个性化操作。
3.4 业务流程分析
3.4.1登录流程
登录模块主要满足管理员以及用户的权限登录,用户登录流程图如图2-1所示。
3.4.2注册流程
未有账号的用户可进入注册界面进行注册操作,用户注册流程图如图2-2所示。
3.4.3添加信息流程
用户在添加信息时,信息编号自动生成,系统会对添加的信息进行验证,验证通过则添加至数据库,添加信息成功,反之添加失败。添加信息流程如图2-3所示。
3.4.4删除信息流程
用户可选择要删除的信息进行信息删除操作,在删除信息时系统提示是否确定删除信息,是则删除信息成功,系统数据库将信息进行删除。删除信息流程图如图2-4所示。
4系统设计
4.1 系统概要设计
4.2系统结构设计
整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。
4.3 数据库设计
4.3.1概念结构设计
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页面中实现。用户信息,和密码修改功能在系统窗口中实现的。
/**
* 登录
* @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首页的实现
用户界面要尽量简洁大方,使用户能够方便找到需要的功能入口,浏览、新闻信息,且要易于修改和维护,同时还要保证用户合法和系统安全。
@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热点新闻展示的实现
热点新闻展示页是展示系统新闻的页面,可查看新闻标题、图书、内容、点赞数、浏览数等信息,如下图所示。
@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命令更新密码。
/**
* 修改密码
* @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.检查各个接口是否可以正确地输入和输出,保证数据流通稳定可行。
登录部分测试用例 |
|||||
编号 |
对象 |
项目 |
操作 |
预期结果 |
结果 |
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.3系统经济评价
在规定的时间内实现系统的大部分功能,且满足要求,节省开发成本,有助于提高科学管理水平,符合本人经济情况。
总结
通过这次新闻阅读系统的开发,我参考了很多相关系统的例子,取长补短,吸取了其他系统的长处,逐步对该系统进行了完善,但是该系统还是有很多的不足之处,有待以后进一步学习。
实践证明,新闻阅读系统有着非常好的发展前景,经过测试运行,系统各项功能都十分完善,界面漂亮,使用方便,操作容易,在技术理论上已经成熟。
[1]施展,朱彦.基于Vue与SpringBoot框架的学生成绩分析和弱项辅助系统设计[J].信息技术与信息化,2022(08):127-131.
[2]阳博,温志萍.基于SpringBoot的在线协同办公系统设计与实现[J].电脑知识与技术,2022,18(22):49-51.DOI:10.14004/j.cnki.ckt.2022.1515.
[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.
[10]鲁鑫超. 响应式技术在网页设计中的应用[D].天津职业技术师范大学,2022.DOI:10.27711/d.cnki.gtjgc.2022.000197.
[11]朱亚进.基于高效用项集挖掘和词义归纳的新闻推荐系统[J].计算机应用与软件,2021,38(07):182-189+201.
[13]刘申.响应式网页设计中栅格系统的构建方法研究[J].信息与电脑(理论版),2021,33(09):159-161.
[14]孙莉.新闻业背景下新闻阅读的新闻客观性分析研究——基于系统功能语篇分析视角[J].文教资料,2021(02):36-39.
[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相关推荐
- springboot新闻阅读系统 毕业设计-附源码63315
摘 要 在社会快速发展的影响下,新闻业继续发 ...
- SpringBoot在线法律咨询辅助系统 计算机毕设源码56952
摘 要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,法律资讯当然也不例外.在线法律咨询辅助系统是以实际运用为开发背景,运用软件工程原理 ...
- 基于Springboot的小型超市商品展销系统 计算机毕设源码01635
摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代. ...
- springboot大学生综合素质测评系统 计算机毕设源码51615
摘 要 为全面提高教育管理水平,建立一个大学生综合素质测评管理系统已经成为目前各高校的共识.本文从实践经验出发,阐述目前高校学生工作管理的信息化现状﹔然后提出大学生综合素质测评管理系统的必要性以及系 ...
- Springboot在线考试管理系统 计算机毕设源码62754
摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针对在线考试管理等问题,对 ...
- django动物领养救助系统 计算机毕设源码63583
摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针对动物领养救助系统等问题 ...
- SSM柳州博物馆文创产品网上商城系统 计算机毕设源码14620
摘 要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,博物馆文创产品网上商城系统当然也不能排除在外.博物馆文创产品网上商城系统是以实际运 ...
- springboot医院住院管理系统 计算机毕设源码32182
目录 1 绪论 1.1系统开发的意义 1.2系统开发的目标 1.3系统开发技术的特色 1.4springboot框架介绍 2医院住院管理系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数 ...
- SSM摄影服务线上选购预约系统 计算机毕设源码83784
摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采用SSM技术建设摄影服务线 ...
最新文章
- Python打印json文件,实现输出
- 《软件构架实践》阅读笔记三
- C# PictureBox加载图片并显示进度条
- Windows 7 shortcut icons missing (快捷方式图标丢失)
- 《移动应用开发》作业——HTML、CSS
- Docker两个问题的讨论
- Java SE Technologies at a Glance
- 基于麻雀算法的投影寻踪模型 - 附代码
- 催眠与大脑的信息处理
- mysql的update和case when同步使用
- (第3章)Docker核心原理解读
- Debian 8 安装BtSync
- 联想计算机怎么设置硬盘,bios设置修改硬盘模式|联想笔记本BIOS设置硬盘模式教程...
- 有哪些简单好用的国产数据库?
- JPA+Hibernate中常用的注解
- 扎实走来的2D网游与突飞猛进的3D网游
- 51单片机的出租车计价器设计
- unity3d 凹凸贴图、法线贴图、置换贴图
- Redis的那些最常见面试问题[精校版]
- Linux车机平台pulseaudio多alsasink配置