2024秋软工实践 旺仔水饺队 原型设计和UML设计

news/2025/1/10 23:14:24/文章来源:https://www.cnblogs.com/pear-09/p/18520633
作业所属课程 https://edu.cnblogs.com/campus/fzu/SE2024
作业要求 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13297
作业的目标 实现项目的原型设计与概要设计
团队名称 旺仔水饺
102201140 黎曼 102201138 黄俊瑶
102201127 罗永辉 102201130 郑哲浩
102202144 傅钰 102202147 赖越
172209028 伊晓 052101418 陈宇杰
102202154 王梓联 102201125 林智烽

0.Markdown编辑器

1.原型设计

1.1 原型设计链接

前端应用原型设计

https://modao.cc/proto/bJDdabD1sm0ktwwawZgACL/sharing?view_mode=read_only #EZnote-分享

后端管理平台设计

https://modao.cc/proto/PEu2uDxusm82xjIewE3hh3/sharing?view_mode=read_only #EZnote 后端管理平台-分享

1.2 前端应用原型设计介绍

首页展示平台相关内容:

笔记页面:打开笔记,进行适当批注与AI辅助学习

写作助手页面:AI可以帮助生成写作建议和润色等

日程管理页面:

注册以及消息页面:

1.3 后端管理平台原型设计介绍

管理员可以查看用户总数以及发送通知给对应用户:

2.概要设计

2.1系统架构

2.1.1 系统架构简要分析

(1)服务器端

  • 本项目的服务器端开发基于PythonDjango 框架。

  • 大语言模型选择调用ChatGPT模型,以提供智能化学习系统的支撑功能。

(2)客户端

  • 客户端使用 Vue.js 框架进行开发。

  • 客户端通过 API与服务器进行数据交互,实现了动态数据的实时获取与渲染。

(3)数据库平台

  • 数据库平台选择 MySQL。MySQL高效、可靠且广泛使用,适用于处理大规模数据。同时,MySQL 的社区版具备开源特性,使平台能够灵活应对学习过程中的多样化需求,提升整体的交互和数据处理能力。

(4)操作系统

  • 该系统的操作系统选用 Windows 系统。Windows 作为全球用户群体广泛的操作系统,能够适配多样化的软硬件环境,满足大多数用户的使用需求。平台能够更好地适应不同用户的操作习惯。

(5)开发工具介绍

  • 前端开发工具选择了 Vue CLIVisual Studio Code

  • 后端开发工具使用 Python Django 框架和Pycharm软件。它集成了许多后台管理功能,帮助后端开发者快速实现数据管理和逻辑处理。

  • 数据库管理工具采用 MySQL Workbench
    作为一个可视化的数据库管理工具,它能够帮助开发者方便地进行数据库设计、查询和管理,极大地简化了数据库的维护工作。

  • 接口管理工具选用 Apifox
    通过它设计、测试和管理 API,记录接口文件,确保客户端与服务器端的数据传输准确无误,从而优化了系统的整体交互流程。

2.1.2 系统架构图

通过展示层、通讯层、业务逻辑层、数据访问层以及存储层分层协作,构建规范合理的系统架构。

2.2 UML设计

由于部分UML图内容较多,为了让图片清晰,我们将图进行裁剪分别上传,所以会导致部分图片中间存在一些白色间隙。

2.2.1 用例图

2.2.2 活动图

2.2.3 类图



2.2.4 时序图


2.2.5 协作图

2.3 数据库设计

2.3.1 ER图

chen方法ER图:

graph LR%% 定义样式classDef entity fill:#FFD700,stroke:#333,stroke-width:2px, shape:rect, fontWeight:bold;classDef relationship fill:#87CEFA,stroke:#333,stroke-width:2px, shape:diamond, fontWeight:bold;classDef attribute fill:#FFFFFF,stroke:#333,stroke-width:1px, shape:ellipse, fontSize:12px;%% 实体定义(矩形框)USER[USER]:::entityUSER_SETTINGS[USER_SETTINGS]:::entityFOLDER[FOLDER]:::entityNOTE[NOTE]:::entityIMAGE[IMAGE]:::entityTASK[TASK]:::entityNOTIFICATION[NOTIFICATION]:::entityTAG[TAG]:::entity%% 关系定义(四边形菱形框)has_user_settings{has}:::relationshipowns_folder{owns}:::relationshipowns_note{owns}:::relationshipowns_task{owns}:::relationshipreceives_notification{receives}:::relationshipcontains_note{contains}:::relationshiphas_image{has}:::relationshiptagged_with{tagged with}:::relationshipincludes{includes}:::relationship%% 属性定义(椭圆形框)%% USER 属性id_USER((__id__)):::attributeusername((username)):::attributepassword((password)):::attributecreated_at_USER((created_at)):::attributeupdated_at_USER((updated_at)):::attributedeleted_at_USER((deleted_at)):::attribute%% USER_SETTINGS 属性id_US((__id__)):::attributecreated_at_US((created_at)):::attributeupdated_at_US((updated_at)):::attributedeleted_at_US((deleted_at)):::attribute%% FOLDER 属性id_FOLDER((__id__)):::attributeuser_id_FOLDER((user_id)):::attributename_FOLDER((name)):::attributetype_FOLDER((type)):::attributeparent_folder_id((parent_folder_id)):::attributecreated_at_FOLDER((created_at)):::attributeupdated_at_FOLDER((updated_at)):::attributedeleted_at_FOLDER((deleted_at)):::attribute%% NOTE 属性id_NOTE((__id__)):::attributeuser_id_NOTE((user_id)):::attributetype_NOTE((type)):::attributetitle_NOTE((title)):::attributecontent_NOTE((content)):::attributefolder_id_NOTE((folder_id)):::attributecreated_at_NOTE((created_at)):::attributeupdated_at_NOTE((updated_at)):::attributedeleted_at_NOTE((deleted_at)):::attribute%% IMAGE 属性id_IMAGE((__id__)):::attributenote_id_IMAGE((note_id)):::attributeurl_IMAGE((url)):::attributedescription_IMAGE((description)):::attributecreated_at_IMAGE((created_at)):::attributeupdated_at_IMAGE((updated_at)):::attributedeleted_at_IMAGE((deleted_at)):::attribute%% TASK 属性id_TASK((__id__)):::attributeuser_id_TASK((user_id)):::attributetitle_TASK((title)):::attributedescription_TASK((description)):::attributestart_time((start_time)):::attributeend_time((end_time)):::attributepriority((priority)):::attributestatus_TASK((status)):::attributecreated_at_TASK((created_at)):::attributeupdated_at_TASK((updated_at)):::attributedeleted_at_TASK((deleted_at)):::attribute%% NOTIFICATION 属性id_NOTIFICATION((__id__)):::attributeuser_id_NOTIFICATION((user_id)):::attributetitle_NOTIFICATION((title)):::attributecontent_NOTIFICATION((content)):::attributetype_NOTIFICATION((type)):::attributestatus_NOTIFICATION((status)):::attributecreated_at_NOTIFICATION((created_at)):::attributeupdated_at_NOTIFICATION((updated_at)):::attributedeleted_at_NOTIFICATION((deleted_at)):::attribute%% TAG 属性id_TAG((__id__)):::attributename_TAG((name)):::attributecreated_at_TAG((created_at)):::attributeupdated_at_TAG((updated_at)):::attributedeleted_at_TAG((deleted_at)):::attribute%% 连接实体与属性(环绕排列)%% USERUSER --- id_USERUSER --- usernameUSER --- passwordUSER --- created_at_USERUSER --- updated_at_USERUSER --- deleted_at_USER%% USER_SETTINGSUSER_SETTINGS --- id_USUSER_SETTINGS --- created_at_USUSER_SETTINGS --- updated_at_USUSER_SETTINGS --- deleted_at_US%% FOLDERFOLDER --- id_FOLDERFOLDER --- user_id_FOLDERFOLDER --- name_FOLDERFOLDER --- type_FOLDERFOLDER --- parent_folder_idFOLDER --- created_at_FOLDERFOLDER --- updated_at_FOLDERFOLDER --- deleted_at_FOLDER%% NOTENOTE --- id_NOTENOTE --- user_id_NOTENOTE --- type_NOTENOTE --- title_NOTENOTE --- content_NOTENOTE --- folder_id_NOTENOTE --- created_at_NOTENOTE --- updated_at_NOTENOTE --- deleted_at_NOTE%% IMAGEIMAGE --- id_IMAGEIMAGE --- note_id_IMAGEIMAGE --- url_IMAGEIMAGE --- description_IMAGEIMAGE --- created_at_IMAGEIMAGE --- updated_at_IMAGEIMAGE --- deleted_at_IMAGE%% TASKTASK --- id_TASKTASK --- user_id_TASKTASK --- title_TASKTASK --- description_TASKTASK --- start_timeTASK --- end_timeTASK --- priorityTASK --- status_TASKTASK --- created_at_TASKTASK --- updated_at_TASKTASK --- deleted_at_TASK%% NOTIFICATIONNOTIFICATION --- id_NOTIFICATIONNOTIFICATION --- user_id_NOTIFICATIONNOTIFICATION --- title_NOTIFICATIONNOTIFICATION --- content_NOTIFICATIONNOTIFICATION --- type_NOTIFICATIONNOTIFICATION --- status_NOTIFICATIONNOTIFICATION --- created_at_NOTIFICATIONNOTIFICATION --- updated_at_NOTIFICATIONNOTIFICATION --- deleted_at_NOTIFICATION%% TAGTAG --- id_TAGTAG --- name_TAGTAG --- created_at_TAGTAG --- updated_at_TAGTAG --- deleted_at_TAG%% 关系连接与基数标注%% USER 与 USER_SETTINGS (1:1)USER ---|"1"| has_user_settingshas_user_settings ---|"1"| USER_SETTINGS%% USER 与 FOLDER (1:N)USER ---|"1"| owns_folderowns_folder ---|"N"| FOLDER%% USER 与 NOTE (1:N)USER ---|"1"| owns_noteowns_note ---|"N"| NOTE%% USER 与 TASK (1:N)USER ---|"1"| owns_taskowns_task ---|"N"| TASK%% USER 与 NOTIFICATION (1:N)USER ---|"1"| receives_notificationreceives_notification ---|"N"| NOTIFICATION%% FOLDER 与 NOTE (1:N)FOLDER ---|"1"| contains_notecontains_note ---|"N"| NOTE%% NOTE 与 IMAGE (1:N)NOTE ---|"1"| has_imagehas_image ---|"N"| IMAGE%% NOTE 与 TAG (M:N)NOTE ---|"M"| tagged_withtagged_with ---|"N"| TAG%% TASK 与 NOTE (M:N)TASK ---|"M"| includesincludes ---|"N"| NOTE%% 连线样式优化linkStyle default stroke:#333, stroke-width:1px, straight:true

crow's foot方法ER图:

erDiagramUSER {bigint id PK "用户ID(主键)"varchar username "用户名"varchar password "用户密码(密文存储)"timestamp created_at "创建时间"timestamp updated_at "更新时间"timestamp deleted_at "删除时间(软删除)"}USER_SETTINGS {bigint id PK "用户ID(主键)"timestamp created_at "创建时间"timestamp updated_at "更新时间"timestamp deleted_at "删除时间(软删除)"}FOLDER {int id PK "文件夹ID(主键)"int user_id FK "用户ID"varchar name "文件夹名称"varchar type "文件夹类型"int parent_folder_id FK "父文件夹ID"timestamp created_at "创建时间"timestamp updated_at "更新时间"timestamp deleted_at "删除时间(软删除)"}NOTE {int id PK "笔记ID(主键)"int user_id FK "用户ID"varchar type "笔记类型"varchar title "笔记标题"text content "笔记内容"int folder_id FK "文件夹ID"timestamp created_at "创建时间"timestamp updated_at "更新时间"timestamp deleted_at "删除时间(软删除)"}IMAGE {int id PK "图片ID(主键)"int note_id FK "所属笔记ID"varchar url "图片URL"varchar description "图片描述"timestamp created_at "图片创建时间"timestamp updated_at "更新时间"timestamp deleted_at "删除时间(软删除)"}TASK {int id PK "任务ID(主键)"int user_id FK "用户ID"varchar title "任务标题"text description "任务描述"timestamp start_time "任务开始时间"timestamp end_time "任务结束时间"int priority "优先级"varchar status "任务状态"timestamp created_at "创建时间"timestamp updated_at "更新时间"timestamp deleted_at "删除时间(软删除)"}NOTIFICATION {int id PK "通知ID(主键)"int user_id FK "用户ID"varchar title "通知标题"text content "通知内容"varchar type "通知类型"varchar status "通知状态"timestamp created_at "创建时间"timestamp updated_at "更新时间"timestamp deleted_at "删除时间(软删除)"}TAG {bigint id PK "标签ID(主键)"varchar name "标签名称"timestamp created_at "创建时间"timestamp updated_at "更新时间"timestamp deleted_at "删除时间(软删除)"}NOTE_TAG {int note_id FK "笔记ID"int tag_id FK "标签ID"timestamp created_at "创建时间"timestamp updated_at "更新时间"timestamp deleted_at "删除时间(软删除)"}TASK_NOTE {int task_id FK "任务ID"int note_id FK "笔记ID"timestamp created_at "创建时间"timestamp updated_at "更新时间"timestamp deleted_at "删除时间(软删除)"}%% RelationshipsUSER ||--o{ USER_SETTINGS : "has"USER ||--o{ FOLDER : "owns"USER ||--o{ NOTE : "owns"USER ||--o{ TASK : "owns"USER ||--o{ NOTIFICATION : "receives"FOLDER ||--o{ NOTE : "contains"NOTE ||--o{ IMAGE : "has"NOTE ||--o{ NOTE_TAG : "tagged with"TAG ||--o{ NOTE_TAG : "associated with"TASK ||--o{ TASK_NOTE : "includes"NOTE ||--o{ TASK_NOTE : "part of"

2.3.2 关系数据模型

由于数据建表较多,因此在博客中仅展示关系数据的汇总表,其余详细表格式见《数据库设计说明书》

表名 描述 主键 外键
user 用户信息表 id
user_settings 用户设置表 id id -> user.id (级联删除)
folder 文件夹信息表 id user_id -> user.id (级联删除), parent_folder_id -> folder.id (级联删除)
note 笔记信息表 id user_id -> user.id (级联删除), folder_id -> folder.id (置空)
image 图片信息表 id note_id -> note.id (级联删除)
task 任务信息表 id user_id -> user.id (级联删除)
notification 通知信息表 id user_id -> user.id (级联删除)
tag 标签信息表 id
note_tag 笔记标签关系表 (note_id, tag_id) note_id -> note.id (级联删除), tag_id -> tag.id (级联删除)
task_note 任务笔记关系表 (task_id, note_id) task_id -> task.id (级联删除), note_id -> note.id (级联删除)

2.3.3 对象关系映射

以下是部分建表语句,通过约束展示部分对象关系映射:

create table `ez-note`.`user`(`id` bigint not null auto_increment comment 'ID',`username` varchar(50) not null comment '用户名',`password` varchar(100) not null comment '用户密码(密文存储)',`created_at` timestamp              NOT NULL           DEFAULT current_timestamp ,`updated_at` timestamp              NOT NULL           DEFAULT current_timestamp ON UPDATE current_timestamp,`deleted_at` timestamp              NULL               DEFAULT NULL,primary key (`id`)
) engine=InnoDB default charset=utf8mb4;create table `ez-note`.`user_settings`(`id` bigint not null comment '用户ID',primary key (`id`),`created_at` timestamp              NOT NULL           DEFAULT current_timestamp ,`updated_at` timestamp              NOT NULL           DEFAULT current_timestamp ON UPDATE current_timestamp,`deleted_at` timestamp              NULL               DEFAULT NULL,constraint `user_id` foreign key (`id`) references `user` (`id`) on delete cascade
) engine=InnoDB default charset=utf8mb4;create table `ez-note`.`folder`(`id` int not null auto_increment comment '文件夹ID',`user_id` int not null comment '用户ID',`name` varchar(100) comment '文件夹名称',`type` varchar(50) comment '文件夹类型',`parent_folder_id` int comment '父文件夹ID',`created_at` timestamp              NOT NULL           DEFAULT current_timestamp ,`updated_at` timestamp              NOT NULL           DEFAULT current_timestamp ON UPDATE current_timestamp,`deleted_at` timestamp              NULL               DEFAULT NULL,primary key (`id`),constraint `folder_user` foreign key (`user_id`) references `user` (`id`) on delete cascade,constraint `parent_folder` foreign key (`parent_folder_id`) references `folder` (`id`) on delete cascade
) engine=InnoDB default charset=utf8mb4;create table `ez-note`.`note`(`id` int not null auto_increment comment '笔记ID',`user_id` int not null comment '用户ID',`type` varchar(50) comment '笔记类型',`title` varchar(100) comment '笔记标题',`content` text comment '笔记内容',`folder_id` int comment '文件夹ID',`created_at` timestamp              NOT NULL           DEFAULT current_timestamp ,`updated_at` timestamp              NOT NULL           DEFAULT current_timestamp ON UPDATE current_timestamp,`deleted_at` timestamp              NULL               DEFAULT NULL,primary key (`id`),constraint `note_user_id` foreign key (`user_id`) references `user` (`id`) on delete cascade,constraint `note_folder_id` foreign key (`folder_id`) references `folder` (`id`) on delete set null
) engine=InnoDB default charset=utf8mb4;

3.团队协作

3.1 团队的预期开发计划

我们团队利用飞书文档作为项目任务分配和管理平台,关于开发计划,我们在平台绘制了项目开发的里程碑图,并且绘制甘特图更加具体的细化任务分配和任务时间。

项目开发计划里程碑图:

项目开发计划甘特图:



3.2 团队预期分工安排

黎曼:任务划分,博客撰写,仓库管理以及哪里需要哪里搬!

前端项目具体分工

姓名 分工 任务
黄俊瑶 前端组长 首页及导航栏组件;笔记整理模块;
罗永辉 前端 写作助手模块;
傅钰 前端 日程管理模块
赖越 前端 注册登录模块;

后端项目具体分工

姓名 分工 任务
郑哲浩 后端组长 笔记相关API + AI接口处理
林智烽 后端 用户相关API + 通知相关API + 密码加密
陈宇杰 后端 笔记相关API + 图片处理
伊晓 后端 笔记文件管理 + 数据查询删除 + 文件夹API
王梓联 后端 任务API + 标签API

3.3 团队项目管理平台

代码管理平台

使用github仓库管理代码,组员对团队仓库进行fork,修改之后使用pr进行合并。并且由组长查看、合并分支,解决代码冲突:

接口管理平台

使用Apifox管理接口,前端后端通过平台可以清楚看到接口信息,便于协作和管理。促进代码的规范化和结构化。

项目任务管理平台

使用飞书文档创建任务,并且可以设置任务时间,邀请队友协作并提供任务提醒功能。再也不用担心我们会忘记ddl啦!

3.4 本次作业协作过程

首先针对本次作业,我们先进行了会议讨论,确定作业内容:

其次,我们确定了系统设计说明书和数据库设计说明书的内容体系,并且进行了分工:


分为前端后端小组,分组进行作业讨论以及具体协作:

后端小组:

前端小组:

总群:

最后附上github协作记录:


4.仓库与文档链接

github团队仓库链接

github网站:https://github.com/pear-09/Wangzai-Dumplings

百度网盘链接

系统设计说明书、数据库设计说明书、原型设计和概要设计PPT见百度网盘,提取码为1234

通过百度网盘分享的文件:软件工程 原型设计概要设计文件
链接:https://pan.baidu.com/s/1BfWyn9chsGeDVUhVrydzoA
提取码:1234

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/825853.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5.树上问题

在宇宙的尽头,时空掌控着时间与空间的无尽流转。过去、现在与未来的区别只是一种固执己见的幻觉,所有的时空都在他的眼中交织成永恒的现在。树上问题 开题顺序: \(ACH\) \(A\) CF600E Lomsat gelral题解\(B\) CF708C Centroids \(C\) CF1706E Qpwoeirut and Vertices题解\(D…

2024-2025-1 20241425《计算机基础与程序设计》第6周学习总结

2024-2025-1 20241425《计算机基础与程序设计》第6周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276这个作业的目标 计算机科学概论(第七版)第7章 《C语…

three.js+vue智慧社区web3d数字孪生三维地图

案例效果截图如下:具体案例场景和功能,详见b站视频: https://www.bilibili.com/video/BV1Bb421E7WL/?vd_source=7d4ec9c9275b9c7d16afe9b4625f636c案例场景逻辑代码:<template><div id="whole"><!-- threejs容器 --><div id="three&q…

网易云课堂视频课件课程下载工具,如何在电脑端下载网易云课堂视频课程课件资料到本地?

一. 安装网易云课堂课程下载器 1.获取学无止下载器 https://www.xuewuzhi.cn/study163_downloader 2.下载安装后,然后点击桌面快捷方式运行即可。 注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。 二. 使用说明 1.学…

html结合js设计一个可拍照可录制可下载的摄像头页面

功能如下html文件用户设置样式,代码如下<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Came…

ENSP之AR路由器一直#####的极端情况判断

系统版本,CPU 如下: 故障原因:AR设备一直###### 分析判断:由于是新安装的系统,没有安全软件限制,防火墙也都放行了,其他一切正常。ENSP凡是要通过virtual box调用的设备都出现了###。判断有两种情况,系统版本或者CPU问题。 通过和客户沟通得知,他对CPU进行了超频。…

如何使用Ida Pro和Core Dump文件定位崩溃位置(Linux下无调试符号的进程专享)

我们在嵌入式Linux开发过程中经常会遇到一个问题,就是程序崩溃后不知道具体位置。因为我们发布到生产环境的一般是没有调试符号的(使用strip或编译时加-s参数,CMake生成的编译指令中的-O3也会造成调试符号丢失),毕竟嵌入式的存储都比较有限,肯定是需要剥离调试符号的。另…

统计学习方法笔记

统计学习方法 1.3 统计学习方法的三要素 1.3.1 模型 好,为什么要从1.3开始呢,因为看前面的课,我还没有用到这个软件。 方法=模型+策略+算法 模型有好多个,试试 策略:按照什么样的准则去选取模型 比如说看预测值和真实值有多大,或者损失函数最小等 算法 即怎样去实现去寻找…

zookeeper的安装与搭建

1、下载zookeeper,并上传到Linux并解压tar -xvf zookeeper-3.5.7.tar.gz -C ../2、修改文件名配置环境变量mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7 vim /etc/profile source /etc/profile3、修改配置文件创建data目录mkdir data创建myid文件touch myid vim myidserver…

Windows Server2022服务器部署RuoYi若依前后端分离

部署准备 虚拟机Windows Server2022 若依前后端分离v3.8.8打包好 jdk1.8 redis5 mysql8.4 iis服务 路由插件 重写插件 1.安装jdk1.8 https://www.azul.com/downloads/#downloads-table-zulu 略 2.安装启动redis5 https://github.com/tporadowski/redis/releases 下载安装默认配…

20222407 2024-2025-1 《网络与系统攻防技术》实验四实验报告

(一)实践目标 恶意代码文件类型标识、脱壳与字符串提取 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下: o使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具; o使用超级巡…