简单版类图
@startuml
class _User {
+ objectId: String
+ username: String
+ realname: String
+ password: String
+ gender: String
+ age: Number
+ email: String
+ avatar: String
+ teacherId: String
+ studentId: String
+ identity: String
+ school: String
+ department: String
}
class ChatPartner {
+ objectId: String
+ name: String
+ expertise: String
+ avatar: String
+ bio: String
}
class ChatCompanion {
+ objectId: String
+ name: String
+ avatar: String
+ bio: String
}
class ChatRecord {
+ objectId: String
+ title:String
+ content:Array
+ user: Pointer<User>
+ chatpartner: Pointer<ChatPartner>
}
class ChatEvaluate{
+ objectId:String
+ avater:String
+ content:String
+ rating:Number
+ user: Pointer<User>
}
class Survey {
+ objectId: String
+ link: String
+ title: String
+ audience: String
+ publisher:String
+ publishtime: String
+ category: String
}
class DriftBottle {
+ bottleID: String
+ content: String
+ username: String
+ throwtime: String
+ catcher: String
+ catchtime: String
+ status: String
}
Survey "1" -- "0..*" _User
_User "1" -- "0..*" DriftBottle
_User "*" --> "*" ChatEvaluate
_User "1" --> "*" ChatRecord
ChatPartner "1" --> "*" ChatRecord
ChatCompanion "1" --> "*" ChatRecord
@enduml
时序图
@startuml
actor 用户
participant "专业陪聊师" as 专业陪聊师
participant "普通陪聊师" as 普通陪聊师
participant "聊天记录" as 聊天记录
participant "报告" as 报告
用户 -> 用户: 选择陪聊师()
alt 选择专业陪聊师
用户 -> 专业陪聊师: 提供聊天()
else 选择普通陪聊师
用户 -> 普通陪聊师: 提供聊天()
end
用户 -> 用户: 开始聊天()
用户 -> 聊天记录: 总结聊天记录()
聊天记录 -> 聊天记录: 获取聊天记录()
聊天记录 -> 报告: 生成报告()
报告 -> 用户: 返回分析报告
@enduml
状态图
@startuml
[*] --> 选择陪聊师
选择陪聊师 --> 聊天中: 开始聊天
聊天中 --> 继续聊天 : 选择继续聊天
聊天中 --> 退出聊天 : 选择退出聊天
退出聊天 --> 总结中 : 总结聊天记录
总结中 --> 生成报告 : 生成分析报告
生成报告 --> 生成失败 : 报告生成失败
生成报告 --> 生成成功 : 报告生成成功
生成成功 --> [*] : 聊天结束
生成失败 --> 生成报告 : 重新生成
@enduml
活动图
@startuml
|用户|
start
:发送消息;
|专业陪聊机器人|
:回复消息;
|用户|
repeat
if (继续聊天?) then (是)
|用户|
:发送消息;
|专业陪聊机器人|
:回复消息;
else (否)
|管理员|
:记录消息;
stop
endif
repeat while (回复消息)
@enduml
//社区部分
用例图
@startuml
actor 用户
rectangle "心理社区" {
用户 -- (使用心理普查)
用户 -- (使用漂流瓶)
}
rectangle "使用心理普查"{
用户 -- (填写问卷)
用户 -- (发布问卷)
}
rectangle "使用漂流瓶"{
用户 -- (扔漂流瓶)
用户 -- (捞漂流瓶)
}
@enduml
时序图
sequenceDiagram
participant User
participant System
User->>System: 访问系统
alt 用户未登录
System->>User: 显示登录注册界面
User->>System: 输入用户名和密码
alt 登录成功
System->>User: 跳转到已登录页面
User->>System: 查看问卷通知
System->>User: 显示问卷通知
User->>System: 发布问卷
alt 用户是老师
System->>User: 提示“问卷已成功发布”
else 用户不是老师
System->>User: 提示“权限不够”
end
else 登录失败
System->>User: 显示错误信息
end
else 用户已登录
System->>User: 跳转到已登录页面
User->>System: 查看问卷通知
System->>User: 显示问卷通知
User->>System: 发布问卷
alt 用户是老师
System->>User: 提示“问卷已成功发布”
else 用户不是老师
System->>User: 提示“权限不够”
end
end
sequenceDiagram
participant User
participant System
User->>System: 访问系统
alt 用户未登录
System->>User: 显示登录注册界面
User->>System: 输入用户名和密码
alt 登录成功
System->>User: 跳转到已登录页面
User->>System: 扔漂流瓶
System->>User: 提示“请输入漂流瓶内容”
User->>System: 编写漂流瓶内容
System->>User: 抛出漂流瓶
User->>System: 捞漂流瓶
alt 条件满足
System->>User: 成功捞上漂流瓶
else 条件不满足
System->>User: 打捞失败
end
User->>System: 查看我的漂流瓶
System->>User: 显示扔出的漂流瓶
System->>User: 显示捞上的漂流瓶
User->>System: 扔回捞上的漂流瓶
System->>User: 扔回成功
else 登录失败
System->>User: 显示错误信息
end
else 用户已登录
System->>User: 跳转到已登录页面
User->>System: 扔漂流瓶
System->>User: 提示“请输入漂流瓶内容”
User->>System: 编写漂流瓶内容
System->>User: 抛出漂流瓶
User->>System: 捞漂流瓶
alt 条件满足
System->>User: 成功捞上漂流瓶
else 条件不满足
System->>User: 打捞失败
end
User->>System: 查看我的漂流瓶
System->>User: 显示扔出的漂流瓶
System->>User: 显示捞上的漂流瓶
User->>System: 扔回捞上的漂流瓶
System->>User: 扔回成功
end
活动图
graph TD;
A[开始] --> B{用户已登录?};
B -- 否 --> C[显示登录注册界面];
C --> D[输入用户名和密码];
D --> E{登录成功?};
E -- 是 --> N[跳转到已登录页面];
E -- 否 --> G[显示错误信息];
B -- 是 --> N[跳转到已登录页面];
N --> O[查看问卷通知];
O --> P[显示问卷通知];
P --> Q[发布问卷];
Q --> R{用户是老师?};
R -- 是 --> S[提示“问卷已成功发布”];
R -- 否 --> T[提示“权限不够”];
graph TD;
A[开始] --> B{用户已登录?};
B -- 否 --> C[显示登录注册界面];
C --> D[输入用户名和密码];
D --> E{登录成功?};
E -- 是 --> F[跳转到已登录页面];
E -- 否 --> G[显示错误信息];
F --> H[扔漂流瓶];
H --> I[提示“请输入漂流瓶内容”];
I --> J[编写漂流瓶内容];
J --> K[抛出漂流瓶];
K --> L[结束];
F --> M[捞漂流瓶];
M --> N{条件满足?};
N -- 是 --> O[成功捞上漂流瓶];
N -- 否 --> P[打捞失败];
O --> Q[结束];
P --> Q;
F --> R[查看我的漂流瓶];
R --> S[显示扔出的漂流瓶];
S --> T[显示捞上的漂流瓶];
T --> U{扔回捞上的漂流瓶?};
U -- 是 --> V[扔回成功];
U -- 否 --> W[结束];
V --> W;
状态图
stateDiagram-v2
[*] --> 未登录
未登录 --> 登录 : 用户尝试访问系统
登录 --> 已登录 : 用户成功登录
已登录 --> 查看问卷通知 : 用户选择查看问卷通知
已登录 --> 发布问卷 : 用户选择发布问卷
发布问卷 --> 权限不够 : 用户不是老师
发布问卷 --> 问卷已成功发布 : 用户是老师
stateDiagram-v2
[*] --> 未登录
未登录 --> 登录 : 用户尝试访问系统
登录 --> 已登录 : 用户成功登录
已登录 --> 扔漂流瓶 : 用户选择扔漂流瓶
已登录 --> 捞漂流瓶 : 用户选择捞漂流瓶
已登录 --> 查看我的漂流瓶 : 用户选择查看我的漂流瓶
扔漂流瓶 --> 编写内容 : 用户开始编写漂流瓶内容
编写内容 --> 抛出漂流瓶 : 用户完成编写
捞漂流瓶 --> 成功捞上 : 条件满足
捞漂流瓶 --> 打捞失败 : 条件不满足
查看我的漂流瓶 --> 查看扔出的漂流瓶 : 用户查看自己扔出的漂流瓶
查看我的漂流瓶 --> 查看捞上的漂流瓶 : 用户查看捞上的漂流瓶
查看捞上的漂流瓶 --> 扔回漂流瓶 : 用户选择扔回捞上的漂流瓶
登录业务
@startuml
left to right direction
[*] --> 输入用户名和密码
输入用户名和密码 --> 检查是否为空
检查是否为空 --> 执行登录 : 不为空
检查是否为空 --> 输入用户名和密码 : 为空
执行登录 --> 返回当前页面: 登录成功
执行登录 --> 输入用户名和密码 :登录失败
返回当前页面 --> [*]
@enduml
注册业务
@startuml
left to right direction
[*] --> 输入基本信息
输入基本信息 --> 检查是否为空
检查是否为空 --> 输入基本信息 : 为空
检查是否为空 --> 检查两次密码一致性 : 不为空
检查两次密码一致性 --> 执行注册 : 一致
检查两次密码一致性 --> 输入基本信息 : 不一致
执行注册 --> 返回登录页面 : 注册成功
执行注册 --> 输入基本信息 : 注册失败
返回登录页面 --> [*]
@enduml
用户编辑信息业务
@startuml
left to right direction
[*] --> 获取用户信息
获取用户信息 --> 弹出表单
弹出表单 --> 检查用户输入
检查用户输入 --> 执行修改
执行修改 --> 返回当前页面: 修改成功
执行修改 --> 弹出表单 : 修改失败
返回当前页面 --> [*]
@enduml
智能陪聊业务
@startuml
left to right direction
[*] --> 检查用户是否登录注册
检查用户是否登录注册 --> 登录注册 : 未登录
检查用户是否登录注册 --> 选择陪聊师 : 已登录
登录注册 --> 选择陪聊师 : 登录/注册成功
登录注册 --> [*] : 登录/注册失败
选择陪聊师 --> 开始陪聊
开始陪聊 --> [*] : 结束陪聊
@enduml
普通聊天业务
@startuml
left to right direction
[*] --> 检查用户是否登录注册
检查用户是否登录注册 --> 登录注册 : 未登录
检查用户是否登录注册 --> 开始陪聊 : 已登录
登录注册 --> 开始陪聊 : 登录/注册成功
登录注册 --> [*] : 登录/注册失败
开始陪聊 --> [*] : 结束陪聊
@enduml
用户评价业务
@startuml
left to right direction
[*] --> 检查用户是否登录注册
检查用户是否登录注册 --> 登录注册 : 未登录
检查用户是否登录注册 --> 进入评价 : 已登录
登录注册 --> 进入评价 : 登录/注册成功
登录注册 --> [*] : 登录/注册失败
进入评价 --> 输入评价内容
输入评价内容 --> 保存退出
保存退出 --> 返回当前页面 : 保存成功
返回当前页面 --> [*]
@enduml
查看报告业务
@startuml
left to right direction
[*] --> 获取用户信息
获取用户信息 --> 点击我的报告
点击我的报告 --> 展示用户相关报告
展示用户相关报告 --> [*]
@enduml
发布问卷业务
@startuml
left to right direction
[*] -->检查登录状态
检查登录状态 --> 显示登录注册界面 : 用户未登录
显示登录注册界面 --> 输入用户名和密码
输入用户名和密码 --> 检查是否为空
检查是否为空 --> 执行登录 : 不为空
检查是否为空 --> 显示登录注册界面 : 为空
执行登录 --> 跳转到已登录页面 : 登录成功
执行登录 --> 显示登录注册界面 : 登录失败
跳转到已登录页面 --> 查看问卷通知
查看问卷通知 --> 显示问卷通知
显示问卷通知 --> 发布问卷
发布问卷 --> 检查用户身份
检查用户身份 --> 提示权限不够 : 用户不是老师
检查用户身份 --> 提示问卷已成功发布 : 用户是老师
提示权限不够 --> [*]
提示问卷已成功发布 --> [*]
@enduml
使用漂流瓶业务
@startuml
left to right direction
[*] -->检查登录状态
检查登录状态 --> 显示登录注册界面 : 用户未登录
显示登录注册界面 --> 输入用户名和密码
输入用户名和密码 --> 检查是否为空
检查是否为空 --> 执行登录 : 不为空
检查是否为空 --> 显示登录注册界面 : 为空
执行登录 --> 跳转到已登录页面 : 登录成功
执行登录 --> 显示登录注册界面 : 登录失败
跳转到已登录页面 --> 选择操作
选择操作 --> 扔漂流瓶 : 用户选择扔漂流瓶
扔漂流瓶 --> 提示输入内容
提示输入内容 --> 编写漂流瓶内容
编写漂流瓶内容 --> 抛出漂流瓶
抛出漂流瓶 --> 返回已登录页面
跳转到已登录页面 --> 捞漂流瓶 : 用户选择捞漂流瓶
捞漂流瓶 --> 检查条件
检查条件 --> 成功捞上 : 条件满足
检查条件 --> 打捞失败 : 条件不满足
成功捞上 --> 返回已登录页面
打捞失败 --> 返回已登录页面
跳转到已登录页面 --> 查看我的漂流瓶 : 用户选择查看我的漂流瓶
查看我的漂流瓶 --> 显示扔出的漂流瓶
显示扔出的漂流瓶 --> 显示捞上的漂流瓶
显示捞上的漂流瓶 --> 选择操作
选择操作 --> 扔回捞上的漂流瓶 : 用户选择扔回捞上的漂流瓶
扔回捞上的漂流瓶 --> 返回已登录页面
@enduml