一,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
开发技术:SpringBoot+Vue
二,项目简介
本系统分为用户端和管理端两个大模块,在用户端功能分为:个人中心、创作模块、阅读模块、首页展示模块,在管理端分为个人信息管理模块、账号管理模块、公告管理模块、小说推荐管理模块、小说分类管理模块。
个人中心:用户注册登录、修改个人信息及退出登录
阅读模块:阅读小说、收藏小说、评论小说、搜索小说
创作模块:分为小说管理和小说章节管理,小说管理包括:创建小说、修改信息和删除小说,小说章节管理包含:查看章节、新增章节、修改章节和删除章节。
首页展示模块:编辑推荐轮播图、新品排行榜等
个人信息管理模块:登录和退出管理端页面
账号管理模块:查询用户账号、封禁用户账号和解封用户账号
公告管理模块:新增公告、修改公告和删除公告
小说推荐管理模块:查询小说、推荐小说和取消推荐
小说分类管理模块:查看所有分类及其包含的小说数量、修改分类和删除分类。
表3-1 用户功能描述
功能名称 |
功能描述 |
用户注册 |
用户注册账号,以便实现身份识别保存基本信息 |
用户登录 |
用户登录系统,获得更多操作权限 |
个人信息管理 |
查看个人信息,支持修改个人信息 |
退出登录 |
退出当前账号,缩小用户操作权限 |
收藏小说/书架管理 |
用户收藏的小说在我的书架中显示,用户也能在我的书架中取消收藏 |
搜索小说 |
用户可以按自己感兴趣的分类或按关键字进行小说搜索 |
阅读小说 |
用户可以在不登录的情况下阅读小说章节内容 |
评论小说 |
用户评论任何小说 |
发布小说 |
作者用户创作小说 |
小说管理 |
作者用户创作小说后,对小说进行管理,如:新增章节、修改小说信息、查看章节等。 |
用户管理 |
管理员在后台系统中可以查看所有的账号信息,并根据关键字搜索用户账号,还能对用户账号做封禁/解封操作 |
公告管理 |
管理员对首页公告进行操作 |
小说推荐管理 |
管理员查看所有小说信息,可根据小说名进行模糊查询。根据点击量或收藏量对小说进行推荐/取消推荐操作 |
小说分类管理 |
管理员对小说分类进行管理,分类下包含小说的分类无法进行删除操作 |
2 非功能需求
(1)性能需求:
用户在页面操作后,服务器需要3s内响应相关操作,运行时的资源消耗量主要消耗在图片读取方面,其它文本类数据所占消耗量较小。
- 可靠性需求:
用户操作系统时,系统的失效频率要尽可能控制在0,对于各种可能造成失效的因素进行排查,并划分程度,根据程度的不同提前做异常处理,增强系统的易恢复性。
投入使用前,对系统各功能进行测试,尽可能预测可能发生的故障并解决,减少故障发生概率。
- 易用性需求:
系统页面设计简约、布局合理,各操作提示应简单易懂、一目了然,面向用户的文档需详细介绍各操作功能,培训资料可略简单。
- 安全性需求:
用户登录注册的接口使用Spring Security进行加密,密码加密后才能存入数据库,相关操作请求根据用户权限判断是否放行。
- 运行环境约束:
本系统运行环境无特别要求,只需要以链接的方式通过浏览器发送请求即可访问服务器中的数据。
- 外部接口:
输入的数据格式部分有格式限制,相关限制都在提交数据之前提示,与系统的数据交互频率需尽可能保持为实时。
三,系统展示
注册登录
系统首页
最新发布章节
分类展示:可以按收藏量和点击量排序
分类查看:可以在线阅读以及评论,收藏到自己的书架
在线阅读:可以调换背景
全部分类展示查看
个人中心
如是注册为作者身份:可以在线创作
新建小说
发布章节内容
章节管理
后台管理员管理功能
用户管理
小说管理
推荐管理
四,核心代码展示
package com.cwx.novel.controller; import com.cwx.novel.dto.OneChapterDto; import com.cwx.novel.entity.Chapter; import com.cwx.novel.entity.Novel; import com.cwx.novel.service.impl.ChapterServiceImpl; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * <p> * 前端控制器 * </p> * * @author znz * @since 2022-10-13 */ @RestController @RequestMapping("/public/chapter") public class ChapterController { @Autowired private ChapterServiceImpl chapterService; @ApiOperation("查询该小说已有的某一章节") @RequestMapping("/loadOneChapterByNovelId") public OneChapterDto loadOneChapterByNovelId(Integer chapterNovelId, Integer novelId) { return chapterService.loadOneChapterByNovelId(chapterNovelId, novelId); } @ApiOperation("查询该小说已有的最新章节") @RequestMapping("/loadNewChapterByNovelId") public Chapter loadNewChapterByNovelId(Integer novelId) { return chapterService.loadNewChapterByNovelId(novelId); } @ApiOperation("添加小说章节") @RequestMapping("/addChapter") public void addChapter(Chapter chapter) { chapterService.addChapter(chapter); } @ApiOperation("查询该小说所有章节") @RequestMapping("/loadAllChapterByNovelId") public List<Chapter> loadAllChapterByNovelId(Integer novelId) { return chapterService.loadAllChapterByNovelId(novelId); } @ApiOperation("更新小说章节") @RequestMapping("/updateChapter") public Integer updateChapter(Chapter chapter) { return chapterService.updateChapter(chapter); } @ApiOperation("删除小说章节") @RequestMapping("/deleteChapter") public Integer deleteChapter(Integer chapterId, Integer novelId) { return chapterService.deleteChapter(chapterId, novelId); } @ApiOperation("查询有着最新章节的小说") @RequestMapping("/loadNewNovelByCreateDate") public List<OneChapterDto> loadNewNovelByCreateDate() { return chapterService.loadNewNovelByCreateDate(); } }
package com.cwx.novel.controller; import com.cwx.novel.entity.Notice; import com.cwx.novel.service.NoticeService; import com.cwx.novel.service.impl.NoticeServiceImpl; import com.cwx.novel.service.impl.NovelServiceImpl; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * <p> * 前端控制器 * </p> * * @author znz * @since 2022-10-14 */ @RestController public class NoticeController { @Autowired private NoticeServiceImpl noticeService; @ApiOperation("读取所有公告") @RequestMapping("/public/notice/loadAllNotice") public List<Notice> loadAllNotice() { return noticeService.loadAllNotice(); } @ApiOperation("管理员添加公告") @RequestMapping("/admin/notice/insertNotice") public Integer insertNotice(Notice notice) { return noticeService.insertNotice(notice); } @ApiOperation("管理员修改公告") @RequestMapping("/admin/notice/updateNotice") public Integer updateNotice(Notice notice) { return noticeService.updateNotice(notice); } @ApiOperation("管理员删除公告") @RequestMapping("/admin/notice/deleteNoticeById") public Integer deleteNoticeById(Integer id) { return noticeService.deleteNoticeById(id); } }
package com.cwx.novel.controller; import com.cwx.novel.dto.UserDto; import com.cwx.novel.entity.User; import com.cwx.novel.service.impl.UserServiceImpl; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * <p> * 前端控制器 * </p> * * @author znz * @since 2022-10-11 */ @Api("用户操作") @RestController @RequestMapping("/public/user") public class UserController { @Autowired private UserServiceImpl userService; @PostMapping("/updateUserPwd") public Integer updateUserPwd(String pwd1, Integer id){ return userService.updateUserPwd(pwd1, id); } @PostMapping("/loadUserAllById") public UserDto loadUserAllById(Integer id){ return userService.loadUserAllById(id); } @PostMapping("/updateUser") public Integer updateUser(UserDto user){ return userService.updateUser(user); } @PostMapping("/reloadUser") public Integer reloadUser(Integer id){ return userService.reloadUser(id); } @PostMapping("/loadUserAllByNovelId") public UserDto loadUserAllByNovelId(Integer novelId){ return userService.loadUserAllByNovelId(novelId); } @PostMapping("/followIt") public Integer followIt(Integer uid, Integer fid){ return userService.followIt(uid, fid); } @PostMapping("/unFollowIt") public Integer unFollowIt(Integer uid, Integer fid){ return userService.unFollowIt(uid, fid); } @PostMapping("/IsFollowIt") public Integer IsFollowIt(Integer uid, Integer fid){ return userService.IsFollowIt(uid, fid); } @PostMapping("/loadFollowUserByUid") public List<UserDto> loadFollowUserByUid(Integer uid){ return userService.loadFollowUserByUid(uid); } }
五,相关作品展示
基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目
基于Nodejs、Vue等前端技术开发的前端实战项目
基于微信小程序和安卓APP应用开发的相关作品
基于51单片机等嵌入式物联网开发应用
基于各类算法实现的AI智能应用
基于大数据实现的各类数据管理和推荐系统