基于springboot的网络阅读与写作平台【论文、源码、开题报告】

2023-12-19

博主介绍 :????全网个人号和企业号 粉丝40W+ ,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战????
⭐️ 热门专栏 推荐订阅 ⭐️ 订阅收藏起来,防止下次找不到

???? 千套JAVA实战项目持续更新中~

???? 上百套小程序实战项目持续更新中~

???? 上百套Python实战项目持续更新中
有需求的各位可以 先收藏起来 ,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要 开题模板 的可以私信留言告诉我

❤️ 文末获取源码联系 ❤️ ⚠️ 一定要先收藏 ⚠️

第四章 系统设计

4.1 总体功能

网络阅读与写作平台是根据需求定制开发,开发软件选用IDEA平台配合MySQL数据库进行开发环境的搭建操作,网站采用WEB应用程序中最流行的小程序结构进行开发,用户访问系统数据仅仅需要在客户端安装谷歌浏览器或者是当下常用浏览器就可以访问网站内容。

4.2 系统模块设计

网络阅读与写作平台系统在进行系统中功能模块的划分时,采用层次图来进行表示。层次图具有树形结构,它能使用矩形框来描绘数据信息。顶层代表的数据结构很完整,顶层下面的矩形框表示的数据就是子集数据,当然处于最下面的矩形框就是不能再进行细分的数据元素了,使用层次方框图描述系统功能能让用户一目了然,能够明白系统的功能,以及对应功能板块下面的子功能都可以清楚领会。网络阅读与写作平台分为管理员和用户两部分操作角色,下面将对他们的功能进行阐述。

管理员可以管理用户的基本信息,可以管理等功能。管理员功能结构图如下:

图4.1 管理员功能结构图

4.3 数据库设计

4.3.1 数据库设计

数据库设计它是建立在数据库还有它对应的应用系统的一门技术,只要是信息系统开发还有系统建设,都会用到数据库设计,但是这个数据库设计并不是很简单就可以完成的,设计期间会遇到很多麻烦事,在设计期间需要考虑再考虑,逐步完善。主要内容也就是把数据库里面的对象还有对象之间的联系进行系统规划操作,还有把他们结构化的过程。

4.3.2 数据库E-R 图

E-R 图分成三部分内容,分别是实体,实体的属性以及实体之间的关系这三个部分的内容,通常长方形表示的就是实体,椭圆形表示的就是属性,菱形表示的就是关系了。在E-R 图里面,实体就是对象,比如学生,人,音乐等都能代表实体,实体都具备自己的成员,比如张三就是学生实体里面的成员。一个学生会具有自己的姓名,年龄,出生日期等信息,这些信息就是学生这个实体的属性,因此E-R 图属性代表的就是数据对象具备的属性,E-R 图的关系就是实体跟实体之间的关系了,比如学生跟课程会存在一定的关系,这种关系使用菱形进行表示。

(1)下图是论坛实体和其具备的属性。

论坛实体属性图

(2)下图是用户实体和其具备的属性。

用户实体属性图

(3)下图是文章收藏实体和其具备的属性。

文章收藏实体属性图

(4)下图是文章留言实体和其具备的属性。

文章留言实体属性图

(5)下图是公告实体和其具备的属性。

公告实体属性图

(6)下图是文章实体和其具备的属性。

文章实体属性图

(7)下图是章节收藏实体和其具备的属性。

章节收藏实体属性图

(8)下图是章节留言实体和其具备的属性。

章节留言实体属性图

(9)下图是章节实体和其具备的属性。

章节实体属性图

4.3.3 数据库表设计

数据库里面的数据表存放的就是各种数据记录,我们在进行系统增删改查操作时,其实也是在对应数据表里面进行的增删改查操作,一个好的数据库能够缩短信息处理时间,所以说数据库的设计工作不容小觑,数据库里面设置哪些表,表里面的字段设计以及字段类型和字段长度等信息都要考虑周到才行,比如时间这个字段,它的数据类型就不能是int型,不然在系统操作中就会弹出输入数据格式不符合要求的报错提示。下面简单介绍网络阅读与写作平台的一些数据表。

表4.1字典表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

dic_code

String

字段

3

dic_name

String

字段名

4

code_index

Integer

编码

5

index_name

String

编码名字

6

super_id

Integer

父字段id

7

beizhu

String

备注

8

create_time

Date

创建时间

表4.2论坛表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

forum_name

String

帖子标题

3

yonghu_id

Integer

用户

4

users_id

Integer

管理员

5

forum_content

String

发布内容

6

super_ids

Integer

父id

7

forum_types

Integer

帖子类型

8

forum_state_types

Integer

帖子状态

9

insert_time

Date

发帖时间

10

update_time

Date

修改时间

11

create_time

Date

创建时间

表4.3公告表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

gonggao_name

String

公告名称

3

gonggao_photo

String

公告图片

4

gonggao_types

Integer

公告类型

5

insert_time

Date

公告发布时间

6

gonggao_content

String

公告详情

7

create_time

Date

创建时间

表4.4文章表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_id

Integer

用户

3

wenzhang_name

String

文章名称

4

wenzhang_uuid_number

String

文章编号

5

wenzhang_file

String

文章下载

6

wenzhang_photo

String

文章照片

7

wenzhang_types

Integer

文章类型

8

wenzhang_clicknum

Integer

文章热度

9

wenzhang_content

String

文章介绍

10

wenzhang_delete

Integer

逻辑删除

11

insert_time

Date

录入时间

12

create_time

Date

创建时间

表4.5文章收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

wenzhang_id

Integer

文章

3

yonghu_id

Integer

用户

4

wenzhang_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.6文章留言表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

wenzhang_id

Integer

文章

3

yonghu_id

Integer

用户

4

wenzhang_liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.7用户表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

yonghu_name

String

用户姓名

3

yonghu_phone

String

用户手机号

4

yonghu_id_number

String

用户身份证号

5

yonghu_photo

String

用户头像

6

yonghu_email

String

用户邮箱

7

create_time

Date

创建时间

表4.8章节表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

wenzhang_id

Integer

文章

3

zhangjie_name

String

章节名称

4

zhangjie_uuid_number

String

章节编号

5

zhangjie_file

String

章节下载

6

zhangjie_clicknum

Integer

章节热度

7

zhangjie_content

String

章节内容

8

zhangjie_delete

Integer

逻辑删除

9

insert_time

Date

录入时间

10

create_time

Date

创建时间

表4.9章节收藏表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

zhangjie_id

Integer

章节

3

yonghu_id

Integer

用户

4

zhangjie_collection_types

Integer

类型

5

insert_time

Date

收藏时间

6

create_time

Date

创建时间

表4.10章节留言表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

zhangjie_id

Integer

章节

3

yonghu_id

Integer

用户

4

zhangjie_liuyan_text

String

留言内容

5

insert_time

Date

留言时间

6

reply_text

String

回复内容

7

update_time

Date

回复时间

8

create_time

Date

创建时间

表4.11管理员表

序号

列名

数据类型

说明

允许空

1

Id

Int

id

2

username

String

学生名

3

password

String

密码

4

role

String

角色

5

addtime

Date

新增时间


第五章 系统实现

5.1 管理员功能模块的实现

5.1.1 文章列表

如图5.1显示的就是文章列表页面,此页面提供给管理员的功能有:查看文章、新增文章、修改文章、删除文章等。

图5.1 文章列表页面

代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家 点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏 推荐订阅

???? 千套JAVA实战项目持续更新中~

???? 上百套小程序实战项目持续更新中~

???? 上百套Python实战项目持续更新中

???? 下方有我的微信名片 ????

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于springboot的网络阅读与写作平台【论文、源码、开题报告】 的相关文章

随机推荐

  • C 中类型转换时的运算符优先级

    下面的代码给出了正确的乘法结果 int var0 245895 int var1 478565 long long val 0 val long long var0 var1 但这篇文章给出了错误的结果 int var0 245895 in
  • MatTable 上的多个过滤器

    我一直在尝试应用多列过滤 即列标题中的文本输入将仅过滤列的内容 到目前为止 我已经能够通过覆盖来使其工作filterPredicate of MatTableDataSource但是一旦我覆盖跨列的默认过滤就不再起作用 export cla
  • firefox flex 不会随着滚动条而增长

    我遇到了特定于 Firefox 的问题 据我所知 在 Chrome 中 如果你有 flex 0 0 auto overflow auto 当 y 方向溢出时 它会占用滚动条的额外宽度 一切都很好 但在 Firefox 中 它不会考虑额外的宽
  • 在 Promise 中断言函数调用

    我正在为异步 Node js 函数编写一些测试 该函数使用 Mocha Chai 和 Sinon 库返回承诺 假设这是我的功能 function foo params return mkdir params then dir gt writ
  • JBoss数据库连接池

    我是 jboss 的新手 我被要求将 jboss 连接池机制与现有的 Web 应用程序合并 考虑到 Web 应用程序数据库层已正确编写 即所有结果集 语句和连接在不需要时正确关闭 在正确配置 jboss 数据源后 我必须在 Web 应用程序
  • Android 中的静电安全吗?

    我在代码中使用一个静态类来定义一个静态字段 我在 Activity onStop onStart 调用之间重用该静态字段 这是一个场景 用户点击 授权 按钮 静态数据初始化 活动停止并调用 Web 浏览器 浏览器执行回调 Activity恢
  • 从客户端检索 Kafka 代理属性

    我想知道是否有一种方法可以使用 shell 命令检索 kafka 代理的所有配置属性 例如 类似的东西 kafka configs sh zookeeper broker ip 2181 entity type brokers descri
  • 无法将工件从中央 IntelliJ 传输到中央 IntelliJ

    我的 Spring boot 项目使用 Maven 当我使用 IntelliJ Community 构建它时 出现错误 无法将工件 com jolira hickory pom 1 0 0 从 转移到中央 https repo maven
  • scanf("%[^\n]",name); 的区别和 scanf(" %[^\n]",名称);

    这不是一个错字 对于那些没有注意到的人来说 第二个上有一个空格 第一个上没有空格 当我做作业时 我会遇到这样的情况 include
  • JSplitPane + MiGLayout:如何启用自动调整大小

    我在这里做错了 我想在 JFrame 中的 JPanel 中的 JSplitPane 中有两个 JButton 其中按钮填充 JSplitPane 这是调整 JFrame 大小时得到的结果 按钮保持正常大小 并且 JSplitPane 不允
  • 无法在 Windows 7 上注册 Sybase 15 ASE OLE DB 驱动程序

    我正在尝试在我的 Windows 7 计算机上设置 Sybase 15 ASE OLE DB 驱动程序 我的 32 位 ODBC 数据源管理器 C Windows SysWOW64 odbcad32 exe 的 驱动程序 选项卡中已列出了
  • 使用 Eclipselink Moxy 如何将 xml 内容映射到与值不同的名称?

    在我的 Xml 中我有
  • 【华为数据之道学习笔记】5-9图模型设计

    图模型作为当前流行的信息处理加工技术 自提出以来 迅速在 学术界和工业界得到了普及 在智能推荐 决策分析等方面有着广泛的应用 图模型由节点和边组成 节点表示实体或概念 边则由属性或关 系构成 实体指的是具有可区别性且独立存在的某种事物 如某
  • 压缩炸弹,Java怎么防止

    压缩炸弹 Java怎么防止 什么是压缩炸弹 会有什么危害 什么是压缩炸弹 压缩炸弹 ZIP 一个压缩包只有几十KB 但是解压缩后有几十GB 甚至可以去到几百TB 直接撑爆硬盘 或者是在解压过程中CPU飙到100 造成服务器宕机 虽然系统功能
  • Redis设计与实现之Lua 脚本

    目录 一 Lua 脚本 1 初始化 Lua 环境 2 脚本的安全性 3 脚本的执行 4 EVAL 命令的实现 定义 Lua 函数 执行 Lua 函数 5 EVALSHA 命令的实现 二 小结 一 Lua 脚本 Lua 脚本功能是 Reids
  • 鸿蒙崛起,高校加入培养大军

    前言 近日 华为消费者业务CEO余承东宣布 明年华为将推出鸿蒙原生应用与原生体验的产品 标志着鸿蒙生态正式迈入发展的快车道 与此同时 国内主流的App已经开始着手研发纯鸿蒙系统版本 高校也积极参与 加入鸿蒙的培养大军 鸿蒙 作为华为推动的自
  • Flutter完整开发实战详解(一、Dart语言和Flutter基础)

    前言 在如今的 Fultter 大潮下 本系列是让你看完会安心的文章 本系列将完整讲述 如何快速从0开发一个完整的 Flutter APP 配套高完成度 Flutter 开源项目 GSYGithubAppFlutter 同时也会提供一些Fl
  • 机器学习笔记 - 用于时间序列分析的深度学习技术

    一 简述 过去 时间序列分析采用自回归综合移动平均线等传统统计方法 然而 随着深度学习的出现 研究人员探索了各种神经网络架构来建模和预测时间序列数据 深度学习技术 例如 LSTM 长短期记忆 卷积神经网络和自动编码器 已经在时间序列预测 异
  • 鸿蒙开发入门:deviceConfig内部结构

    deviceConfig内部结构 deviceConfig包含设备上的应用配置信息 可以包含default tv car wearable等属性 default标签内的配置适用于所有通用设备 其他设备类型如果有特殊的需求 则需要在该设备类型
  • 基于springboot的网络阅读与写作平台【论文、源码、开题报告】

    博主介绍 全网个人号和企业号 粉丝40W 每年辅导几千名大学生较好的完成毕业设计 专注计算机软件领域的项目研发 不断的进行新技术的项目实战 热门专栏 推荐订阅 订阅收藏起来 防止下次找不到 千套JAVA实战项目持续更新中 上百套小程序实战项