0
点赞
收藏
分享

微信扫一扫

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现


本文主要内容:


  • ​​1. 需求分析​​

  • ​​1.1 用例图​​
  • ​​1.2 开发技术与运行环境​​

  • ​​2. 数据库设计​​

  • ​​2.1 E-R图​​
  • ​​2.2 数据库实现​​


  • ​​3. 系统设计与实现​​

  • ​​3.1 系统架构设计​​
  • ​​3.2 系统界面设计​​

  • ​​4. 开发与部署​​



下文摘录自课程报告和汇报PPT。


1. 需求分析

1.1 用例图

本系统的使用者,主要是平台用户和管理员用户。

用户功能用例图:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_数据

用户用例图:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_数据_02

模块划分:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_数据_03

1.2 开发技术与运行环境

技术与环境

说明与描述

开发工具:

Intellij IDEA

后端开发工具,Java集成开发环境

PHPstorm

前端开发工具

MySQL

关系型数据库

Navicat for MySQL

数据库辅助工具

Maven

项目管理和综合工具

Postman

API接口测试工具

Nginx

前端运行环境

Gitlab

团队协作工具

Gitlab-Runner

后端代码持续集成与持续部署工具

Docker

后端代码部署工具

Windows 10 Pro

团队协作开发的统一系统

Ubuntu 18.04

项目部署环境

后端技术:

Spring Boot

新一代 JavaEE 开发标准

Tk.MyBatis

基于 MyBatis 二次开发的轻量级框架,用于简化 MyBatis 操作

MyBatisGenerator

Maven 插件,用于 MyBatis 相关代码生成

PageHelper

MyBatis 分页插件

前端技术:

HTML+CSS+JS

前端基本技术

JQuery

快速、简洁的JavaScript框架

Bootstrap

CSS/HTML框架,前端开发的开源工具包


其中本项目是团队协作开发,故采用Gitlab私服来管理团队协作的代码,使用Gitlab-Runner将团队成员的代码进行持续集成和持续交付,并结合Docker等技术,进行项目的持续部署,极大提高了团队协作开发的效率。


2. 数据库设计

2.1 E-R图

本爱问社区平台采用MySQL数据库来进行后台数据的存储。在需求分析的基础上,可以得出系统中的实体主要有:用户、用户数据、问题、回答、文章、评论、分类、收藏。系统实体之间的E-R图如图所示。

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_spring_04

2.2 数据库实现

最终本项目共有20个表:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_spring_05

除去一些收藏、点赞、举报、日志、操作记录等表外,读写最高的6个表,以及这6个表之间的关系如下所示:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_数据_06

3. 系统设计与实现

3.1 系统架构设计

首先是前端的设计。前端即客户端,是用户直接进行操作、沟通的页面。良好的前端设计能够降低用户使用的难度,提高用户体验。前端代码框架设计如图:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_spring boot_07

然后是服务端的设计。服务端设计的优良直接影响整个系统的开发效率、维护难易程度和运营的稳定性。首先根据业务逻辑,将后台划分为控制层、业务逻辑层等共7个模块,同时还有一个数据库访问的公共模块,如图:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_spring_08

明确了后台的基本框架后,使用Spring Boot的开发技术,完成了后台的搭建,最终的完整后台逻辑框架,以及各个模块之间的依赖、继承关系,如图:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_软件工程_09


  • 通用的响应结果,是控制层的所有方法的返回结果的具体实现,之所以创建该类,是保证所有数据返回的结构是一致的,从而提高前后端分离开发的规范性和效率。
  • 通用的控制器,是用来关联通用的响应结果,保证返回结果一致。
  • 通用的领域模型,为通用的响应结果返回数据,提供实体规范。
  • 接下来是实际的的数据访问流程。Dao层是后台和数据库直接交互的数据库访问层,Service业务逻辑层需要通过Dao层,才能将控制层的数据,保存到数据库,或者从数据库读取数据交给业务逻辑层,进而交给控制层处理。
  • 业务逻辑层,有一个通用的CRUD业务接口,该接口主要实现的是通用的增删改查服务。如根据某个键,从某个表中读取一条数据,或者根据某个、某几个条件,进行查询、修改,在各个业务逻辑层接口中均需要用到。故将其提取出来,采用泛型的形式,进行实现,极大提高了代码的利用率。
  • Domain领域模块层,或称为实体层,其主要实现实体的定义,即定义和数据库表一一对应的实体,其他的各个层,可以直接调用该实体,进行数据的各种处理。
  • 基本工具箱和基本配置文件,主要是各种通用的小工具的实现,以及跨域等系统配置问题的解决。

3.2 系统界面设计

主页:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_spring_10

问题列表页:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_spring boot_11

问题详情页:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_spring boot_12

文章列表页:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_spring_13

个人主页:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_数据_14

举报处理页面:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_软件工程_15

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_数据_16

注册页面:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_数据_17

登录页面:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_软件工程_18

问题发布页面:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_软件工程_19

含有违规内容提示:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_spring boot_20

文章发布页面:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_数据_21


前端页面UI参考自:tipask。


4. 开发与部署

项目开发过程中的代码托管平台采用私服搭建的GitLab平台托管,进行协作开发。项目托管平台的页面如图:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_数据_22

团队成员通过Git拉取代码到本机后,实现相应具体的每个人的某个功能后,即可进行提交。

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_spring boot_23

团队成功将代码提交到GitLab服务器,GitLab服务器即可实现代码的持续集成与持续交付,即自动对代码进行编译,如果编辑成功,则显示“已通过”的提示,如图:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_数据_24

然后GitLab-Runner自动将编译完成的jar包部署到Docker容器中。如果成功,最终提示绿色字体的“Job succeeded”。前端开发成员可以直接使用已经开发好的功能,无需再将代码拉取到前端开发成员的环境中编译运行,极大提高了开发效率。如图:

【课程·研】软件工程 | 项目开发:基于Spring Boot的问答博客系统的设计与实现_spring boot_25

以上。



举报

相关推荐

0 条评论