这个作业属于哪个课程 | 软件工程实践-2023学年-W班 |
---|---|
这个作业要求在哪里 | 团队作业 概要设计和数据库设计 |
这个作业的目标 | <完成可遇可球项目的系统设计和数据库设计> |
其他参考文献 | 《构建之法:现代软件工程》 |
文章目录
团队仓库链接&文档GitCode链接
GitCode团队仓库链接
可遇可球_系统设计说明书.pdf
可遇可球_数据库设计说明书.pdf
可遇可球_系统设计和数据库设计答辩PPT.pdf
一、系统和数据库设计
给出体系结构设计+功能模块层次图、ER分析+表结构设计,并描述设计思路;
1.1 体系结构设计图

系统结构描述 系统采⽤ MVC 模式进⾏设计,前后端分离。当后端团队与前端团队共同设计协调好接⼝后,可实现前后端并⾏开发,提⾼开发效率。由于视图层与业务层分离,耦合性低,业务层的各层次职责单⼀,所以更易于后期维护。 |
各层次关系职责说明 (1) Controller 层: 负责接收前端的 Http 请求,根据请求路径匹配相应控制器进⾏处理,并调⽤ Service 层获取所需数据,将数据返回给前端展示。 (2) Service 层: 由 Controller 调⽤,调⽤ DAO 层获取所需的基本数据,主要进⾏数据的处理 和封装,并将处理完成的数据交给 Controller 返回给前端。 (3) DAO 层: 由 Service 层调⽤,定义⼀系列操作数据库的⽅法来与数据库进⾏交互,根据 Service 层的需求访问数据库,获取数据,并封装为模型对象或对象集合交予 Service 层进⾏进⼀步加⼯处理。 |
1.2 功能模块层次图

划分依据与原因 本项⽬前台主要分成 6 个模块(登录注册、主页、赛事、论坛、约球、个人中心)。后台主要分为4个模块(论坛管理、台球厅管理、用户管理、请求管理),划分的主要依据是按照实际的功能划分,每个模块的功能单⼀,操作对象也尽可能单⼀,其⽬的是为了使得各个模块之间尽可能相互独⽴,在开发分⼯中可以并⾏开发不同的模块,避免因耦合度太⾼⽽带来合作难度的提⾼。 |
模块介绍 前台模块: 1. 登陆注册模块 ①使用手机验证码登录(注册):用户输入手机号后,系统将发送验证码短信至用户的手机,用户输入相同的验证码后登录(注册)。 ②使用QQ或者微信授权登录(注册):用户可在系统提供的跳转页面登录QQ或者微信后跳转回来即登录(注册)成功。 2. 主页模块 主页可以查看赛事资讯、附近约球、论坛话题三个版块。赛事资讯展示最近的台球新闻热点并可以跳转到对应的新闻页面,附近约球可以查看到距离最近的有约球请求的三个台球厅及约球人数,论坛话题显示近期论坛中的话题热点。 3. 赛事模块 赛事模块中,用户可以查看三大赛的赛程,以及赛事的基础信息,点击对应赛事之后,能够查看本场赛事的选手排名,并且可以查看赛事录像。 4. 论坛模块 论坛模块中,用户可以查看来自所有用户发布的帖子,并且可以搜索指定帖子,对帖子进行评论、点赞、收藏、举报等等。用户还可以发布帖子。 5. 约球模块 约球模块中,用户可以查看附近的所有台球厅,并且按名搜索台球厅。点击台球厅,可以查看台球厅详情,以及该台球厅中所有的约球请求。 点击发起约球,台球厅列表会切换为多选模式,用户可以选择自己能够接受的多个台球厅发起约球请求。点击确定后,用户可进行细化配置,其中包含约球时间预计用户所期望的各种相关信息。 点击快速筛选,台球厅列表会切换为多选模式,用户可以选择自己能够接受的多个台球厅进行筛选请求。点击确定后,页面会跳转至请求列表页面,在该页面中,用户可根据自己的偏好对请求进行筛选。 6. 个人中心模块 个人中心可以查看并修改用户的个人标签、个人资料等信息,并且能修改帖子的评论权限以及个人资料的隐私设置。用户还可以查看自己的约球进度、约球历史、已发布的帖子、各种的系统通知提示、我的收藏等多种信息。 后台模块: 1. 论坛管理模块 ①查看帖子信息:查看所有帖子的数量、一个帖子的具体信息(如标题、发起用户、内容、发布时间、审核状态等)。 ②审核帖子:查看所有正在等待审核的帖子的信息、通过或撤销一个帖子(审核成功则系统自动发送消息至用户提示帖子通过审核,审核失败则管理员输入失败原因提示用户)。 ③隐藏或彻底删除帖子:暂时隐藏一个帖子使其在前台不可见(或仅帖子发起者可见)、彻底删除一个帖子且无法恢复(数据库不再记录)。 2. 台球厅管理模块 ①查看台球厅:查看所有台球厅的所有信息(名称、地址、介绍等)。 ②新增台球厅:输入台球厅的必要信息(名称、地址等)后增加一个新的台球厅至台球厅集合中。 ③删除台球厅:删除某个台球厅。 ④修改台球厅:修改某个台球厅的信息。 3. 用户管理模块 ①查看用户信息:查看所有用户的所有信息(用户id、昵称、发帖等)。 ②封禁用户:选择不同封禁时间封禁某个用户。 ③删除用户:彻底删除某个用户。 4. 请求管理模块 ①查看请求的信息:请求的发起者和接受者、发起时间、待选台球厅等。 ②删除请求:删除某次请求。 |
1.3 ER图
概念结构设计![]() |
1.4 表结构设计
逻辑结构设计 总体架构 ![]() 登录与权限模块 ![]() 论坛模块 ![]() 约球模块 ![]() |
物理结构设计 数据库名称:pool_pal 存储位置:默认位置 设计思路:首先通过分析ER图得出数据库中表的概念模型与逻辑模型。接着利用数据库设计工具如 Navicat 来创建基本的表结构。根据ER图展示的实体之间的联系,为各个表设置适当的外键关系,以此来构建完整的物理模型。 |
数据字典设计 |
二、类图、系统安全和权限设计
2.1 类图
约球模块 ![]() 论坛模块 ![]() RBAC权限模型类 ![]() |
2.2 系统安全
2.3 权限设计
1、角色权限设计: 可遇可球项目中将采用RBAC模型进行权限的限制。一个理想的RBAC模型应该包含组织,职位,客户表等,如下: ![]() ![]() |
2、角色权限说明: 可遇可球项目中角色分为用户,管理员,超级管理员。 用户可通过前台页面访问个人中心,约球,赛事,论坛等块。 管理员可通过后台页面对网站信息进行维护。 超级管理员可对管理员账号进行管理,包括新增与删除。 |
3、鉴权方式实现说明: 可遇可球项目将采用SpringSecurity框架结合JWT和数据库表进行鉴权。通过SpringSecurity的@PreAuthorize等方式对网站接口进行权限限制,只有通过数据库查询后拥有该权限的登录用户可访问对应接口。并添加JWT拦截器对所有的请求进行检验。关键代码如下:: ![]() ![]() |
三、改进分析
(20’)改进分析【覆盖课程目标5】
回答上次需求分析作业中老师助教和其他队伍在评审中给项目提出的问题;给出针对上次需求分析作业的改进部分和改进过程(详细描述);
Q1:你们有用况图吗? 之前只做了类图和活动图,听取了老师和助教的建议后,为了更加直观的展示系统功能,画了模块功能层次图: ![]() 因为作业要求分成两个ppt,原型的界面放到原型设计ppt里面了。下次会避免纯文字和纯图片的情况。 Q3:约球邀请在哪里记录?两个人约球成功了,约球申请的列表存放在哪里? 本来是打算存放在User类historyInvites属性中,并且该属性类型是Invite类的动态数组,考虑到助教的建议,为了更方便理解各类之间的功能和关系,已经把约球申请列表单独封装成一个类了 ![]() |
四、团队绩效
描述为完成这次作业的工作流程、组员分工、组员贡献度比例;(将用于小组分数到个人分数的映射,请一起讨论、妥善安排比重)
五、开发计划安排
(10’)团队项目的预期开发计划时间安排(表格形式:具体到每周),要有明确的里程碑,要有相应的产出;(5月上旬-6月中下旬计划为项目冲刺阶段,开发计划安排至少攘括这段时间);
(10’)团队项目的预期开发计划分工安排(表格形式:具体到每一个人的角色,负责的详细开发部分);
Q:你们这个约球挺新颖的,能展开说说约球的流程吗? A:约球模块是我们项目的核心模块,流程如下: 1. 发起方用户选择任意多的台球厅,选择接受的联系方式(如qq,微信,电话)时间段,期望对手水准,抽不抽烟等标准后,系统在选定的多个台球厅中添加约球邀请; 2. 其他用户点进某个台球厅查看约球邀请或者在快速加入模块中搜索自己心仪的约球,发起加入请求; 3. 发起方用户后台列表中收到加入请求,查看对方信息后选择心仪请求同意,此时服务器将发起方指定联系方式单向发送给加入方,交由两人线下联系; |