300
社区成员
发帖
与我相关
我的任务
分享
这个作业属于哪个课程 | 软件工程实践-2023学年-W班 |
---|---|
这个作业要求在哪里 | 团队作业 概要设计和数据库设计 |
这个作业的目标 | <完成可遇可球项目的系统设计和数据库设计> |
其他参考文献 | 《构建之法:现代软件工程》 |
GitCode团队仓库链接
可遇可球_系统设计说明书.pdf
可遇可球_数据库设计说明书.pdf
可遇可球_系统设计和数据库设计答辩PPT.pdf
系统结构描述 系统采⽤ MVC 模式进⾏设计,前后端分离。当后端团队与前端团队共同设计协调好接⼝后,可实现前后端并⾏开发,提⾼开发效率。由于视图层与业务层分离,耦合性低,业务层的各层次职责单⼀,所以更易于后期维护。 |
各层次关系职责说明 (1) Controller 层: 负责接收前端的 Http 请求,根据请求路径匹配相应控制器进⾏处理,并调⽤ Service 层获取所需数据,将数据返回给前端展示。 (2) Service 层: 由 Controller 调⽤,调⽤ DAO 层获取所需的基本数据,主要进⾏数据的处理 和封装,并将处理完成的数据交给 Controller 返回给前端。 (3) DAO 层: 由 Service 层调⽤,定义⼀系列操作数据库的⽅法来与数据库进⾏交互,根据 Service 层的需求访问数据库,获取数据,并封装为模型对象或对象集合交予 Service 层进⾏进⼀步加⼯处理。 |
划分依据与原因 本项⽬前台主要分成 6 个模块(登录注册、主页、赛事、论坛、约球、个人中心)。后台主要分为4个模块(论坛管理、台球厅管理、用户管理、请求管理),划分的主要依据是按照实际的功能划分,每个模块的功能单⼀,操作对象也尽可能单⼀,其⽬的是为了使得各个模块之间尽可能相互独⽴,在开发分⼯中可以并⾏开发不同的模块,避免因耦合度太⾼⽽带来合作难度的提⾼。 |
各功能模块介绍 前台模块: 1. 登陆注册模块 ①使用手机验证码登录(注册):用户输入手机号后,系统将发送验证码短信至用户的手机,用户输入相同的验证码后登录(注册)。 ②使用QQ或者微信授权登录(注册):用户可在系统提供的跳转页面登录QQ或者微信后跳转回来即登录(注册)成功。 2. 主页模块 主页可以查看赛事资讯、附近约球、论坛话题三个版块。赛事资讯展示最近的台球新闻热点并可以跳转到对应的新闻页面,附近约球可以查看到距离最近的有约球请求的三个台球厅及约球人数,论坛话题显示近期论坛中的话题热点。 3. 赛事模块 赛事模块中,用户可以查看三大赛的赛程,以及赛事的基础信息,点击对应赛事之后,能够查看本场赛事的选手排名,并且可以查看赛事录像。 4. 论坛模块 论坛模块中,用户可以查看来自所有用户发布的帖子,并且可以搜索指定帖子,对帖子进行评论、点赞、收藏、举报等等。用户还可以发布帖子。 5. 约球模块 约球模块中,用户可以查看附近的所有台球厅,并且按名搜索台球厅。点击台球厅,可以查看台球厅详情,以及该台球厅中所有的约球请求。 点击发起约球,台球厅列表会切换为多选模式,用户可以选择自己能够接受的多个台球厅发起约球请求。点击确定后,用户可进行细化配置,其中包含约球时间预计用户所期望的各种相关信息。 点击快速筛选,台球厅列表会切换为多选模式,用户可以选择自己能够接受的多个台球厅进行筛选请求。点击确定后,页面会跳转至请求列表页面,在该页面中,用户可根据自己的偏好对请求进行筛选。 6. 个人中心模块 个人中心可以查看并修改用户的个人标签、个人资料等信息,并且能修改帖子的评论权限以及个人资料的隐私设置。用户还可以查看自己的约球进度、约球历史、已发布的帖子、各种的系统通知提示、我的收藏等多种信息。 后台模块: 1. 论坛管理模块 ①查看帖子信息:查看所有帖子的数量、一个帖子的具体信息(如标题、发起用户、内容、发布时间、审核状态等)。 ②审核帖子:查看所有正在等待审核的帖子的信息、通过或撤销一个帖子(审核成功则系统自动发送消息至用户提示帖子通过审核,审核失败则管理员输入失败原因提示用户)。 ③隐藏或彻底删除帖子:暂时隐藏一个帖子使其在前台不可见(或仅帖子发起者可见)、彻底删除一个帖子且无法恢复(数据库不再记录)。 2. 台球厅管理模块 ①查看台球厅:查看所有台球厅的所有信息(名称、地址、介绍等)。 ②新增台球厅:输入台球厅的必要信息(名称、地址等)后增加一个新的台球厅至台球厅集合中。 ③删除台球厅:删除某个台球厅。 ④修改台球厅:修改某个台球厅的信息。 3. 用户管理模块 ①查看用户信息:查看所有用户的所有信息(用户id、昵称、发帖等)。 ②封禁用户:选择不同封禁时间封禁某个用户。 ③删除用户:彻底删除某个用户。 4. 请求管理模块 ①查看请求的信息:请求的发起者和接受者、发起时间、待选台球厅等。 ②删除请求:删除某次请求。 |
概念结构设计 |
逻辑结构设计 总体架构 登录与权限模块 论坛模块 约球模块 |
物理结构设计 数据库名称:pool_pal 存储位置:默认位置 设计思路:首先通过分析ER图得出数据库中表的概念模型与逻辑模型。接着利用数据库设计工具如 Navicat 来创建基本的表结构。根据ER图展示的实体之间的联系,为各个表设置适当的外键关系,以此来构建完整的物理模型。 |
数据字典设计 |
安全保密设计 1.数据加密:在系统中,用户密码等敏感数据将使用MD5加密算法进行加密处理,以确保这些信息在存储和传输过程中的安全性和保密性。 2.预防 SQL 注入攻击:SQL注入是一种常见的数据库攻击方式,系统后端将对所有执行的SQL语句进行预编译处理,避免恶意SQL代码的插入和执行,确保数据库操作的安全性。 3.数据校验:前端将对各种数据类型进行初步验证,后端将严格验证前端传递的数据,以确保只有有效数据被存储到数据库中,从而防止恶意数据的注入和处理。 4.SQL 事务:系统后端设计将应用全局事务概念,使用@Transactional保证一组相关SQL操作要么全部成功提交、要么全部失败回滚,以维护数据库操作的一致性和完整性,降低数据风险。 5.操作日志:系统将记录用户的操作日志并持久化存储,用以追踪和审计用户的操作活动,增强系统的安全性和可追溯性。 |
约球模块 论坛模块 RBAC权限模型类 |
角色权限设计 可遇可球项目中将采用RBAC模型进行权限的限制。一个理想的RBAC模型应该包含组织,职位,客户表等,如下: 但是,可遇可球项目并不是由企业开发的,而是由八人的学生小组开发,并不存在运营后台,经理等复杂的角色与权限,因此可遇可球项目中仅采用标准RBAC模型表设计。如下: 数据库建表详见数据库设计说明书 |
角色权限说明 可遇可球项目中角色分为用户,管理员,超级管理员。 用户可通过前台页面访问个人中心,约球,赛事,论坛等块。 管理员可通过后台页面对网站信息进行维护。 超级管理员可对管理员账号进行管理,包括新增与删除。 |
鉴权方式实现说明 可遇可球项目将采用SpringSecurity框架结合JWT和数据库表进行鉴权。通过SpringSecurity的@PreAuthorize等方式对网站接口进行权限限制,只有通过数据库查询后拥有该权限的登录用户可访问对应接口。并添加JWT拦截器对所有的请求进行检验。关键代码如下:: |
Q1:你们有用况图吗? 之前只做了类图和活动图,听取了老师和助教的建议后,为了更加直观的展示系统功能,画了模块功能层次图: |
Q2:为什么功能与验收部分只有文字? 因为作业要求分成两个ppt,原型的界面放到原型设计ppt里面了。下次会避免纯文字和纯图片的情况。 |
Q3:约球邀请在哪里记录?两个人约球成功了,约球申请的列表存放在哪里? 本来是打算存放在User类historyInvites属性中,并且该属性类型是Invite类的动态数组,考虑到助教的建议,为了更方便理解各类之间的功能和关系,已经把约球申请列表单独封装成一个类了 |
工作流程 1.仔细阅读博客,根据作业要求梳理工作任务,并进行分工 2.拟定《系统设计说明书》和《数据库设计说明书》的大纲 3.针对上周评审中老师、助教和其他队伍对项目的需求分析阶段提出的问题,对项目的类图及其他现有内容进行优化 4.按分工进行《系统设计说明书》和《数据库设计说明书》的撰写 5.制作答辩PPT 6.撰写博客 |
学号 | 工作内容 | 贡献度 |
---|---|---|
222100213 | 数据库约球模块,类图,ER图,接口设计图,系统架构图,系统设计说明书(4) | 20% |
222100108 | 类图赛事模块,系统设计说明书(1、2、3.1、3.3、3.4) | 17% |
222100223 | 数据库论坛模块,数据库设计说明书(全) | 18% |
222100217 | 负责论坛、赛事、约球模块介绍,答辩ppt制作 | 9% |
222100216 | 负责后台、登录注册模块介绍 | 8% |
222100211 | 负责个人中心、主页模块介绍 | 8% |
222100203 | 博客撰写(一、四、五) | 9% |
222100204 | 博客撰写(二、三) | 9% |
RABC权限控制的思路很好!那么用户有哪些权限差异呢?不同权限的用户对于帖子的操作是否有不同呢?对于论坛模块类是否过于简单了?
在用户哪些属性体现对手对他水平的评价?