风云预报队——项目系统设计与数据库设计
| 这个作业属于哪个课程 | FZU_SE_teacherW_4 |
|---|---|
| 这个作业要求在哪里 | 团队作业 概要设计和数据库设计 |
| 团队名称 | 风云预报队 |
| 这个作业的目标 | 系统设计与数据库设计 |
| 其他参考文献 | 《构建之法》、数据库设计说明书 |
目录
- 华为云项目链接
- 系统与数据库设计
- 体系结构设计
- 功能模块设计
- 功能模块层次图
- 软件功能模块清单
- 数据库ER图设计
- 数据库表结构设计
- 逻辑结构设计
- 物理结构设计
- 数据表设计思路
- 类图、系统安全和权限设计
- 类图设计
- 系统安全与权限设计
- 改进分析
- 团队绩效
- 团队工作流程
- 团队成员分工和贡献比例
- 开发计划安排
- 预期开发计划时间安排表
- 预期开发计划分工安排
华为云项目链接
系统与数据库设计
体系结构设计
系统的架构采用前后端分离模式。前端主要负责用户界面与用户体验,使用Vue.js框架进行开发,提供响应式设计和良好的交互效果。用户可通过前端界面进行资源浏览、课程评价、个人信息管理等操作,所有数据请求通过RESTful API与后端进行交互。
后端使用Spring Boot框架构建,负责处理业务逻辑、数据存储及安全管理。后端系统包含多个模块,包括用户管理、资源管理、课程评价和统计分析。用户管理模块处理注册、登录、权限验证等功能,资源管理模块负责维护学习资源的上传、下载及分类,课程评价模块实现用户对课程的评价功能,统计分析模块则用于生成各类数据报表,帮助管理者获取系统使用情况及用户反馈。
数据库采用MySQL进行数据存储,设计合理的数据表结构以支持高效查询和数据关系的维护。所有业务逻辑层将通过Spring Data JPA进行数据访问,确保数据库操作的简单性与安全性。
系统还集成了用户权限控制功能,确保不同角色(如用户、管理员)具有不同的操作权限,保障系统的安全性与数据的保密性。系统将提供友好的用户界面,使得用户可以方便地使用各项功能,并通过数据分析为用户提供个性化的学习建议。
整个系统将部署在Docker容器中,方便进行版本管理和资源隔离,确保各个模块的独立性与可扩展性。同时,通过CI/CD工具实现持续集成与持续部署,提高开发效率与代码质量。总的来说,系统的设计既满足用户的基本需求,也为未来的扩展与优化奠定了基础。
功能模块设计
功能模块层次图

软件功能模块清单
- 用户管理模块
- 用户注册
- 用户登录
- 用户角色管理
- 用户信息编辑与维护
- 课程评价模块
- 课程列表展示
- 课程评价提交
- 评价内容审核
- 课程评价信息汇总与展示
- 资源共享模块
- 学习资源上传
- 学习资源下载
- 资源分类与搜索功能
- 用户资源分享记录
- 数据统计模块
- 用户行为数据分析
- 课程评价统计报告生成
- 可视化统计信息展示
- 教学改进建议生成
- 系统管理模块
- 系统设置与配置
- 用户权限管理
- 数据备份与恢复
- 系统日志管理
数据库ER图设计
1.用户登录ER图

2.用户ER图

3.课程ER图

4.课程评价ER图

5.资料分类ER图

6.资料文件上传ER图

7.帖子分类ER图

8.帖子ER图

9.学科分类ER图

10.总ER图

数据库表结构设计
逻辑结构设计
- 用户登录信息表(用户账号id、用户名、密码)
- 用户信息表(用户账号id、用户昵称、用户性别、用户年龄、用户大学专业、用户钱包余额)
- 课程信息表(课程id、课程名称、课程所属大学、授课教师姓名、课程简要描述)
- 课程评价信息表(评论id、课程id、评论者昵称、评论内容)
- 资料分类信息表(资料id、资料类别信息)
- 资料文件上传信息表(文件id、用户账号id、资料id、文件名、文件路径、文件大小、上传时间、文件类型、其他描述)
- 帖子分类信息表(帖子类别id、帖子类别信息描述)
- 帖子信息表(帖子id、帖子类别id、标题、内容、作者、阅读统计、点赞统计、评论统计、帖子状态(草稿;已发布))
- 学科分类信息表(学科id、学科名称)
物理结构设计
- user_login_info(用户登录信息表)
| 列名 | 数据类型 | 长度 | 约束 |
|---|---|---|---|
| *id* | INT | 4 | 主键 |
| *username* | VARCHAR | 20 | 非空 |
| *password* | VARCHAR | 20 | 非空 |
- user_info(用户信息表)
| 列名 | 数据类型 | 长度 | 约束 |
|---|---|---|---|
| *id* | INT | 4 | 主键,外键 |
| *nickname* | VARCHAR | 30 | 非空 |
| *gender* | VARCHAR | 5 | 非空 |
| *age* | INT | 4 | 非空 |
| *major* | VARCHAR | 30 | 非空 |
| *wallet_amount* | DECIMAL | 11 | 非空 |
- course_info(课程信息表)
| 列名 | 数据类型 | 长度 | 约束 |
|---|---|---|---|
| *course_id* | INT | 4 | 主键 |
| *course_name* | VARCHAR | 30 | 非空 |
| *university* | VARCHAR | 40 | 非空 |
| *teacher* | VARCHAR | 20 | 非空 |
| *description* | TEXT | 非空 |
- course_review_info(课程评价信息表)
| 列名 | 数据类型 | 长度 | 约束 |
|---|---|---|---|
| *review_id* | INT | 4 | 主键 |
| *course_id* | INT | 4 | 外键,非空 |
| *reviewr* | VARCHAR | 30 | 非空 |
| *review_content* | TEXT | 非空 |
- material_category_info(资料分类信息表)
| 列名 | 数据类型 | 长度 | 约束 |
|---|---|---|---|
| *material_id* | INT | 4 | 主键 |
| *material_info* | VARCHAR | 255 | 非空 |
- file_upload_info(资料文件上传信息表)
| 列名 | 数据类型 | 长度 | 约束 |
|---|---|---|---|
| *file_id* | INT | 4 | 主键 |
| *user_id* | INT | 4 | 外键,非空 |
| *material_id* | INT | 4 | 外键,非空 |
| *file_name* | VARCHAR | 255 | 非空 |
| *file_path* | VARCHAR | 255 | 非空 |
| *file_size* | BIGINT | 8 | 非空 |
| *upload_time* | TIMESTAMP | 非空 | |
| *file_type* | VARCHAR | 255 | 非空 |
| *other_info* | TEXT | 非空 |
- post_category_info(帖子分类信息表)
| 列名 | 数据类型 | 长度 | 约束 |
|---|---|---|---|
| *post_category_id* | INT | 4 | 主键 |
| *post_category_description* | VARCHAR | 255 | 非空 |
- post_info(帖子信息表)
| 列名 | 数据类型 | 长度 | 约束 |
|---|---|---|---|
| *post_id* | INT | 4 | 主键 |
| *post_category_id* | INT | 4 | 外键,非空 |
| *title* | VARCHAR | 100 | 非空 |
| *content* | TEXT | 非空 | |
| *author* | VARCHAR | 30 | 非空 |
| *post_time* | DATETIME | 非空 | |
| *read_count* | INT | 4 | 非空 |
| *like_count* | INT | 4 | 非空 |
| *comment_count* | INT | 4 | 非空 |
| *status* | VARCHAR | 20 | 非空 |
- subject_category_info(学科分类信息表)
| 列名 | 数据类型 | 长度 | 约束 |
|---|---|---|---|
| *subject_id* | INT | 4 | 主键 |
| *subject_name* | VARCHAR | 255 | 非空 |
数据表设计思路
- 先确定项目功能实现的实体有哪些,如用户,评论,帖子,资料等。通过功能确定实体间的关系。
- 为每个实体类设计合理的存储信息和存储结构
- 参照数据库结构设计准则,为表中字段增加约束
- 分析各种表之间一对多,多对多关系,设置外键进行约束
类图、系统安全和权限设计
类图设计

设计思路:
识别主要实体:从系统设计说明书和需求说明书中提取主要实体,如用户、课程、评价、管理员等。
定义属性和方法:为每个实体定义必要的属性(例如,用户的昵称、专业)和方法(例如,添加课程、提交评价)。
确定关系:分析实体之间的关系,如用户与课程之间的关联(多对多),管理员与课程的管理关系(一对多)。
抽象和继承:识别可以抽象化的类。
确保一致性:与需求说明书保持一致,确保所有功能在类图中都有体现。
迭代完善:初步设计后,与团队成员讨论,收集反馈,进一步完善类图。
系统安全与权限设计
系统安全:
- 用户认证: 采用多因素认证(MFA)机制,包括邮箱验证和短信验证码,确保用户身份的安全性。
- 数据加密: 在用户注册、登录和敏感信息传输过程中,使用SSL/TLS协议进行数据加密,保护用户隐私。
- 权限管理: 设定不同用户角色(如管理员、普通用户)的权限,确保用户只能访问其被授权的功能和数据。
- 输入验证: 对所有用户输入进行严格的格式和内容验证,防止SQL注入、XSS等安全攻击。
- 日志记录: 实施系统操作日志记录,包括用户登录、数据修改和系统异常等,便于后期审计和问题追踪。
- 定期安全审计: 定期对系统进行安全漏洞扫描和审计,及时发现并修复潜在的安全隐患。
- 异常处理机制: 设计用户友好的错误信息提示,避免泄露系统内部信息,同时记录异常事件以便分析。
- 备份与恢复: 定期备份用户数据和系统配置,确保在数据丢失或系统故障时能快速恢复。
系统权限:
- 用户角色:
- 注册与登录:用户可以创建账户并通过验证登录系统。
- 课程评价:用户可以查看课程并提交自己的评价。
- 个人资料管理:用户可以修改自己的个人信息和密码。
- 评价查看:用户可查看自己提交的评价记录。
- 管理员角色:
- 用户管理:管理员可以查看、修改或删除用户账户。
- 课程管理:管理员可以添加、修改或删除课程信息。
- 评价管理:管理员可以审核、修改或删除用户的评价。
- 系统设置:管理员可以配置系统参数和权限设置。
- 权限控制:
- 用户与管理员的权限应通过角色管理模块进行控制,确保用户只能访问其被授权的功能。
- 系统应记录用户操作日志,以便追踪权限使用情况。
- 权限验证:
- 系统在用户请求特定操作时进行权限验证,拒绝未授权访问并返回相应错误提示。
改进分析
Q: 用例图之间的联系过于繁杂,有些功能是否应该独立出来?
答:我们一开始犯了将用例的执行进度和功能当作判断用例之间关系的判断标准,导致了用例图之间的联系过于复杂。我们将用例图进行修改,将一些功能独立出来,减少与其他功能之间的联系,优化功能关系。

Q: 在类图中,用户类的功能是否过多?
答:我们只考虑了用户的功能,没详细考虑到很多功能的实现并不是简单的,很可能与其他类还有进行数据交互,没有想到利用其他类来帮助实现对应功能。我们设计更多地类模块作为中间件,帮助实现各种相应的功能,增强类的独立性。
团队绩效
团队工作流程
团队成员主要在qq群中进行任务分配和交流:


团队成员分工和贡献比例
| 学号姓名 | 工作内容 | 贡献度 |
|---|---|---|
| 222200121林一飞 | ||
| 222200124郑为强 | 数据库表设计,E-R图设计 | 16% |
| 222200215汪明昊 | 作业博客撰写,上台答辩汇报 | 17% |
| 222200322罗文强 | 完成系统设计和数据库设计ppt | 17% |
| 222200324郑昱 | 系统设计说明书主体、校对文档 | 17% |
| 222200325郑晓鹏 | 功能模块图,类图绘制 | 16% |
| 222200326郑钰哲 | 编写数据库设计说明书,数据表设计 | 17% |
开发计划安排
预期开发计划时间安排表
| 周次 | 日期范围 | 开发阶段 | 里程碑/产出 |
|---|---|---|---|
| 第1周 | 2024.10.25-2024.10.31 | 项目启动 | 完成项目会议,明确任务分配,学习相关技术 |
| 第2周 | 2024.11.1-2024.11.7 | Alpha冲刺 | 完成系统整体设计,完成核心功能开发(登录、注册等),开始其他功能开发 |
| 第3周 | 2024.11.8-2024.11.12 | Alpha冲刺 | 完成所有功能开发(资料分享、评价等),发布Alpha版本 |
| 第4周 | 2024.11.13-2024.11.19 | Beta冲刺 | 完成系统测试,开始bug修复 |
| 第5周 | 2024.11.20-2024.11.26 | Beta冲刺 | 完成bug修复,完成优化,发布Beta版本 |
| 第6周 | 2024.11.27-2024.12.11 | 项目总结与反馈 | 完成项目总结报告,收集用户反馈 |
预期开发计划分工安排
| 学号姓名 | 角色 | 分工 |
|---|---|---|
| 222200324郑昱 | PM、前端 | 团结项目管理,进度追踪。负责用户界面模块 |
| 222200325郑晓鹏 | 前端 | 负责前端部分开发。负责页面之间的导航,配置前端路由 |
| 222200124郑为强 | 前端 | 负责前端部分开发。参与课程评价界面,管理员界面 |
| 222200322罗文强 | 后端 | 负责后端部分开发。API设计,负责用户管理模块 |
| 222200215汪明昊 | 后端 | 负责后端部分开发。负责课程管理模块,权限控制模块 |
| 222200121林一飞 | 后端 | 负责后端部分开发。负责资料管理模块 |
| 222200326郑钰哲 | 测试 | 对项目模块提交代码进行测试,编写测试文档 |
相关推荐
实时风云二号卫星云图
实时风云二号卫星云图,带动画自动播放,显示当前时间前12小时和24小时的卫星云图!免费资源,方便大家使用!
风云2号卫星云图浏览
这是接收卫星云图的软件 接收的是中国气象台的卫星云图WEB接收方式,但是容易失去响应 请耐心等待20秒即可恢复!改进版
风云4号卫星GEO说明文件
风云4号卫星GEO说明文件。
风云天气(精准的天气预报服务)V17.10.13官方安装版
风云天气是一款免费的天气信息查询软件,全天24小时为您提供精准的天气预报服务,风云天气合理的交互设计、强大的信息查询 、精美的界面体验、稳定高效的运行速度,赢得了用户的青睐。 基本简介 北京风云天气科技于2009年成立,是一家以“极致、责任、创新”为公司理念,以“做卓越的天气服务公司”为目标的新兴移动互联网公司。主要开发和运营的“风云天气”是一款免试用费的天气信息查询软件。 更新日志
风云二号气象卫星云图.zip
风云二号气象卫星云图,实现了每半小时获取卫星图,获取云图列表,可自动播放,有12小时,与24小时两种选择。 注意: 开发环境为Visual Studio 2013



