古诗词系统设计与实现
引言
编写目的
为了保证项目团队按时保质地完成项目目标,便于项目团队成员更好地了解项目情况,使项目工作开展的各个过程合理有序,有必要以文件化的形式,把对于在项目生命周期内的工作任务范围、各项工作的任务分解、项目团队组织结构、各团队成员的工作责任、团队内外沟通协作方式、开发进度、经费预算、项目内外环境条件、风险对策等内容以书面的方式描述出来,作为项目团队成员以及项目干系人之间的共识与约定,项目生命周期内的所有项目活动的行动基础,项目团队开展和检查项目工作的依据。
本项目开发计划用于从总体上指导古诗词系统项目顺利进行并最终得到通过评审的项目产品。本项目开发计划面向项目组全体成员。
背景
古诗词是我国传统文化的精粹。对于中国人来说古诗词的学习更是贯穿其整个的教育历程。传统的教育模式下使得古诗的学习比较枯燥和乏味,随着计算机技术的高速发展,计算机辅助教学逐渐进入人们的视野,基于 Web 的古诗学习系统改变了传统教学模式,它通过清晰明了的显示使古诗的学习变得更加直观、有趣,更好地加深了对古诗词的理解和记忆。该系统使用 IDEA(SpringBoot)、VsCode(react)、MySQL 开发而成,可实现古诗词学习、收藏、评论等功能。项目周期为三个半月,项目背景如表所示。
表 1.1 项目背景
项目名称 | 项目委托单位 | 任务提出者 | 项目承担单位 |
---|---|---|---|
古诗词管理系统 | 江西财经大学 | 曹重华 | 软件实训第一组 |
需求分析
用户需求:
古诗词系统,浏览古诗、诗人、用户分享的资源等,具体如下:
- ① 浏览不同类别的诗词,例如思闺、战争、悼亡、思乡、怀古、禅、离别等;
- ② 浏览不同朝代的诗词,例如唐朝、宋朝、元朝等;
- ③ 浏览推荐页面(此页面的诗词是根据各个诗词的收藏数排序)
- ④ 用户可以在诗词展示页中点击特定的诗词,进入详情页中查看诗词全文、诗词注释以及诗词翻译
- ⑤ 在线收藏功能:登录用户在浏览诗词的时候,如果是看到自己的喜欢的诗词内容,可以通过在线收藏的方式,把内容产品收藏到自己的收藏夹中,可以下次直接在收藏的内容中查找到自己喜欢的诗词内容,很方便。另外,可以对自己收藏的诗词内容进行搜索以及删除;
- ⑥ 评论功能:登录用户可以查看诗词详情页中的评论,并且有发表评论的权限,也可以对自己的评论进行搜索以及删除;
- ⑦ 分享功能:用户可以在"分享页面"浏览 ji 其他用户分享的诗词。也可以自己登录后上传想要分享的内容,其中,分享内容框体可自己手动输入文字,也可通过图片识别文字。
- ⑧ 修改功能:用户可以修改自己的个人信息
- ⑨ 查看管理员发布的所有通知
- ⑩ 在头部搜索栏输入关键字,搜索对应信息的诗词列表集
- 登录
- 注册
- 找回密码
管理员需求:
- ① 个人信息管理:对自己的个人信息进行修改,并且可以对用户信息进行增删改查;
- ② 收藏、评论管理:对用户收藏的诗词以及发表的评论进行增删改查;
- ③ 诗词管理:对数据库中存在的诗词、诗人、朝代信息、诗词类别信息等进行增删改查;
- ④ 发布通知,并且对通知进行增删改查
- ⑤ 对用户上传的资源进行审核,也可以增删查改
安全需求
① 直接将密码写入数据库中是极不安全的,因为任何可以打开数据库的人,都将可以直接看到这些密码,所以我们系统使用 SHA-1 将密码加密后再存储进数据库。
参考资料
文档格式要求按照我国 GB/85674988 国家标准和 lEEE/ANSl830-993 标准规范要求进行。 包括以下文件:
- 软件工程项目开发文档范例
- 软件工程国家标准文档
- 软件需求说明书编写规范
书籍包括:
《软件项目管理》 朱少民,韩莹 编辑,人民邮电出版社。
《软件项目管理》 RajeevTShandina 编辑 科学出版社。
项目概述
基于 Web 服务,做一个互联网阅读或者是互联网教育学习的网站,在现在的互联网时代中都是很常见的。古诗词的阅读学习也是现在人们喜欢的一个内容,网站为你提供一个线上的诗词学习平台,学习诗词内容和注解译文,在一些诗词学习内容上变得更加丰富,更加便捷。
版本号 | 版本号 | 负责人 | 功能 |
---|---|---|---|
1 | 1.1 | 实现登录功能(前台正则判断邮箱格式) | |
1 | 1.1 | 实现注册功能(后台密码加密、前台正则判断邮箱格式) | |
1 | 1.1 | 实现忘记密码后找回密码(发邮件)功能 | |
1 | 1.2 | 实现 ① 头部搜索框、② 推荐页面(调用存储过程,按收藏数倒序排列展示)、③ 诗词页面 ④ 详情页(点击不同诗词进入相应的详情页)的前后端交互、路由跳转以及页面渲染、⑤ 登出功能 | |
1 | 1.3 | ① 用户可以对喜欢的诗词进行收藏操作;(收藏表设置前置触发器,避免同一个用户重复收藏);② 管理个人信息(增删查改);③ 管理自己的收藏(增删查改) | |
1 | 1.3 | ① 分享页面的数据交互及显示(已审核的资源);② 用户可以上传资源(后台将图片识别为文字);③ 管理员对用户上传的资源进行管理 | |
2 | 2.1 | ① 诗人页面及其详情页的前后端交互、路由跳转以及页面渲染;;② 用户进入诗词详情页后发表评论(增),并且可以管理自己的评论(删查改);③ 用户可以查看所有通知 | |
2 | 2.2 | ① 管理员对通知进行增(发布)删查改;;② 管理员对用户的信息进行增删查改 | |
2 | 2.3 | ① 管理员对诗人的信息进行增删查改;② 管理员对诗词及其类别进行增删查改;③ 管理员对朝代进行增删查改 | |
3 | 3 | 将项目部署在 Linux 虚拟机中 |
用户分析
参与者为:游客、普通用户、管理员
用例分析
主用例分析
参与者 | 主用例 |
---|---|
游客 | 浏览基本页面(诗词、诗人、推荐、分享页面及其详情页)、查看诗词评论、(根据关键字)搜索诗文 |
用户 | 注册、登录、评论诗词、收藏诗词、查看管理员发布的所有通知、修改个人信息、管理自己的评论、管理自己的收藏、管理个人上传、上传资源 |
管理员 | 除了游客和用户的用例外,还有管理用户的信息、管理用户评论、管理诗词信息、管理诗人信息、管理朝代信息、管理诗词类别信息、审核上传资源、管理上传资源、管理通知 |
游客用例分析:
用例名称:浏览诗词 |
---|
用例标识号:01 |
参与者:游客、登录用户、管理员 |
简要说明:;游客查看网站首页提供的古诗词 |
前置条件:;游客已经打开该古诗词网页 |
基本事件流:;1. 用户点击古诗词,用例开始;2. 用例终止 |
其他事件流: ;A1:加载失败; (1)系统提示错误信息; (2)返回基本事件流第 1 步 |
异常事件流:无 |
后置条件:加载成功后,网页显示相关资源 |
用例名称:查看诗词评论 |
---|
描述:用户打开本系统网页,点击不同诗词进入相应详情页,可以看到诗词的详细信息及其评论 |
标识符:02 |
角色: 游客、登录用户、管理员 |
前置条件:打开网页 |
主事件流:;1.用户打开网页;2.点击一个诗词名,进入详情页;3.下滑网页,可以看到评论 |
其他事件流:;1a:当前诗词无评论; |
后置条件:登录后能获取评论权限 |
用例名称:搜索诗文 |
---|
描述:用户在搜索框输入关键字,点击搜索图标后,可以看到搜索结果 |
标识符:03 |
角色: 游客、登录用户、管理员 |
前置条件:打开网页 |
主事件流:;1. 用户打开网页;2. 在导航栏的搜索框中输入关键字;3. 点击搜索图标;4. 浏览页面出现的搜索结果; |
其他事件流:;1a:搜索无结果 |
后置条件:无 |
用例名称:注册 |
---|
描述:游客想要获得更多的功能可以在该网站进行注册 |
标识符:04 |
角色: 游客 |
前置条件:未注册 |
主事件流:;1.用户点击"登录",再点击"注册"进入注册页面;2. 输入注册信息(用户名、邮箱、密码),点击"注册",页面提示"注册成功,请登录",并跳转到登录页面 |
其他事件流:;1a:若邮箱已注册,则提示"该邮箱已注册账号,请勿重复注册" |
后置条件:数据库用户表数据更新 |
登录用户用例分析:
用例名称:登录系统 |
---|
描述:用户通过登录本系统以获取相应功能权限 |
标识符:01 |
角色: 登录用户、管理员 |
前置条件:登录者的账号密码信息已录入数据库(已注册) |
主事件流:;1.用户进入系统的登录界面;2.输入登录邮箱;3.输入密码,点击登录;4.成功登录系统,显示登录成功 |
其他事件流:;1a:用户登录名显示不存在,返回第 2 步;2a:输入密码错误,显示密码错误信息,返回第 3 步;3a:忘记密码的情况下,可选择修改密码功能,进入标识符 02 用例 |
后置条件:登录后能获取相应功能权限 |
用例名称:修改密码 |
---|
描述:用户忘记密码,通过发送邮件来修改密码 |
标识符:02 |
角色: 登录用户、管理员 |
前置条件:登录者的账号密码信息已录入数据库(已注册) |
主事件流:;1.用户在登录页面点击"忘记密码";2.输入自己的用户名和邮箱,点击"发送邮件";3.邮件发送成功,在对应邮箱打开邮件;4.点击邮件中的地址,进行密码的修改;5. 输入要修改的密码和邮件中发送的验证码,点击"保存";5.显示成功修改密码的提示信息 |
其他事件流:;3a:验证信息不通过,系统提示身份验证失败,返回第 2 步;4a:两次密码输入不一致,系统显示两次密码不一致的提示信息,返回第 5 步 |
后置条件:原密码失效,只能用修改后的密码登录系统 |
用例名称:评论诗词 |
---|
描述:用户进入相应诗词的详情页并且发表评论 |
标识符:03 |
角色: 登录用户、管理员 |
前置条件:已注册并登录 |
主事件流:;1.用户进入诗词页面;2.点击想要评论的诗词进入详情页;3. 在评论框中输入自己的评论,点击"发表";4. 发表成功,刷新页面;5. 页面渲染最新评论 |
其他事件流:;1a:未登录,无法评论,返回标识符 01 |
后置条件:数据库评论数据更新 |
用例名称:收藏诗词 |
---|
描述:用户进入诗词显示页面 |
标识符:04 |
角色: 登录用户、管理员 |
前置条件:已注册并登录 |
主事件流:;1.用户进入诗词页面;2.点击想要收藏的诗歌模块的收藏按钮;3. 页面提示收藏成功;4. 进入"我的收藏"页面;5. 浏览自己的收藏 |
其他事件流:;1a:未登录,无法收藏,返回标识符 01 |
后置条件:数据库收藏数据更新 |
用例名称:管理个人信息 |
---|
描述:在"个人信息"页面对自己的信息进行修改 |
标识符:05 |
角色: 登录用户、管理员 |
前置条件:已注册并登录 |
主事件流:;1.用户进入"个人信息"页面;2. 输入自己要修改的信息(邮箱、用户实名、密码、性别);3. 点击"保存";4. 页面提示信息修改成功 |
其他事件流:;1a:未登录,没有个人信息,返回标识符 01 |
后置条件:数据库用户表数据更新 |
用例名称:管理我的收藏 |
---|
描述:用户对自己的收藏进行搜索或者删除 |
标识符:06 |
角色: 登录用户、管理员 |
前置条件:已注册并登录 |
主事件流:;1.用户进入"收藏管理"页面;2.1 点击想要操作的对应数据中的"删除"按钮,进行删除;2.2 在搜索框中输入想要搜索的数据;3. 页面出现搜索的数据;4. 刷新页面,浏览最新收藏页面(删除后) |
其他事件流:;1a:未登录,没有收藏,无法管理,返回标识符 01;2a: 从未进行收藏诗词的操作,"收藏管理"页面中无数据显示 |
后置条件:数据库收藏表数据更新 |
用例名称:管理我的评论 |
---|
描述:用户对自己的评论进行搜索或者删除 |
标识符:07 |
角色: 登录用户、管理员 |
前置条件:已注册并登录 |
主事件流:;1.用户进入"评论管理"页面;2.1 点击想要操作的对应数据中的"删除"按钮,进行删除;2.2 在搜索框中输入想要搜索的数据;3. 页面出现搜索的数据;4. 刷新页面,浏览最新评论信息页面(删除后) |
其他事件流:;1a:未登录,没有评论,无法管理,返回标识符 01;2a: 从未进行评论诗词的操作,"评论管理"页面中无数据显示 |
后置条件:数据库评论表数据更新 |
用例名称:查看通知 |
---|
描述:用户可以查看所有通知 |
标识符:08 |
角色: 登录用户 |
前置条件:已注册并登录 |
主事件流:;1.用户进入"通知"页面;2. 页面显示所有通知内容 |
其他事件流:无 |
后置条件:无 |
用例名称:上传资源 |
---|
描述:用户上传资源 |
标识符:09 |
角色: 登录用户 |
前置条件:已注册并登录 |
主事件流:;用户进入"分享"页面;点击"上传资源";输入要上传的资源的必填信息;用户确认上传;页面弹出操作结果信息 |
其他事件流:;1a:未登录,没有收藏/评论,无法管理,返回标识符 01 |
后置条件:upload 表插入一条数据 |
管理员用例分析
用例名称:管理通知 |
---|
用例标识号:01 |
参与者:管理员 |
简要说明:;管理员查看当前通知,也可以发布通知 |
前置条件:;管理员已登录 |
基本事件流:;1. 管理员点击"信息管理"按钮,进入后台管理界面;2. 点击"后台管理"->"通知管理",浏览当前通知;3. 选择想要操作的通知,点击"删除"可以进行删除;4. 在搜索框中输入关键字,可以进行检索;5. 点击"发布通知",输入想要发布的内容;6. 点击"提交";7. 页面提示"提交成功";8. 用例终止 |
其他事件流: ;A1: 当前登录用户不是管理员,则无法进入"信息管理"界面 |
后置条件:数据库中的通知表数据改变 |
用例名称:管理用户个人信息 |
---|
用例标识号:02 |
参与者:管理员 |
简要说明:;管理员查看当前所有用户的信息,并且可以增删改查 |
前置条件:;管理员已登录 |
基本事件流:;1.管理员点击"信息管理"按钮,进入后台管理界面;2.点击"用户信息管理"->"用户信息",浏览当前所有用户信息; ① 添加用户; a. 点击"添加",输入想要添加的用户的信息(邮箱、用户实名等),点击"提交"; b. 页面提示"添加成功",刷新页面可看到新添加的用户信息; ② 搜索用户; a. 在搜索框中输入关键字,点击"搜索";b. 页面显示搜索的结果; ③ 删除用户; a. 在想要删除的用户信息中点击"删除"; b. 刷新页面; ④ 编辑用户;a. 点击想要修改用户信息的"编辑";b. 输入要修改的信息,点击"提交"; c. 页面提示"编辑成功",刷新页面可看到编辑后的用户信息; 3. 用例结束 |
其他事件流: ;A1: 当前登录用户不是管理员,则无法进入"信息管理"界面 |
后置条件:数据库中的数据改变 |
用例名称:管理用户评论 |
---|
用例标识号:03 |
参与者:管理员 |
简要说明:;管理员查看当前所有用户评论的信息,可以搜索或删除用户的评论 |
前置条件:;管理员已登录 |
基本事件流:;1.管理员点击"信息管理"按钮,进入后台管理界面;2.点击"用户信息管理"->"用户评论",浏览当前所有用户评论信息; ① 搜索用户评论信息; a. 在搜索框中输入关键字,点击"搜索";b. 页面显示搜索的结果; ② 删除用户评论; a. 在想要删除的用户评论中点击"删除"; b. 刷新页面;3. 用例结束 |
其他事件流: ;A1: 当前登录用户不是管理员,则无法进入"信息管理"界面 |
后置条件:数据库中的数据改变 |
用例名称:管理诗词 |
---|
用例标识号:04 |
参与者:管理员 |
简要说明:;管理员查看诗词信息,并且对其进行增删改查 |
前置条件:;管理员已登录 |
基本事件流:;1.管理员点击"信息管理"按钮,进入后台管理界面;2.点击"古诗词管理"->"诗词"; ① 添加诗词; a. 点击"添加",输入想要添加的诗词的信息(诗名、诗人等),点击"提交"; b. 页面提示"添加成功",刷新页面可看到新添加的诗词信息; ② 搜索诗词; a. 在搜索框中输入关键字,点击"搜索";b. 页面显示搜索的结果; ③ 删除诗词; a. 在想要删除的诗词信息中点击"删除"; b. 刷新页面; ④ 编辑诗词; a. 在想要修改的诗词信息中点击"编辑"; b. 输入想要修改的诗词的信息,点击"提交"; c. 页面提示"编辑成功",刷新页面可看到修改后的诗词信息; 3. 用例结束 |
其他事件流: ;A1: 当前登录用户不是管理员,则无法进入"信息管理"界面;A2: 当添加或编辑时,输入的诗人名、朝代名、诗词类型名在原先的数据库中不存在时,则将所输入的诗人名、朝代名、诗词类型名添加到对应的数据库表中; |
后置条件:数据库中的诗词表数据改变 |
用例名称:管理朝代 |
---|
用例标识号:05 |
参与者:管理员 |
简要说明:;管理员查看朝代信息,并且对其进行增删改查 |
前置条件:;管理员已登录 |
基本事件流:;1.管理员点击"信息管理"按钮,进入后台管理界面;2.点击"古诗词管理"->"朝代管理"; ① 添加朝代; a. 点击"添加",输入想要添加的朝代的信息(朝代名、开始、结束时间等),点击"提交"; b. 页面提示"添加成功",刷新页面可看到新添加的朝代信息; ② 搜索朝代; a. 在搜索框中输入关键字,点击"搜索";b. 页面显示搜索的结果; ③ 删除朝代; a. 在想要删除的朝代信息中点击"删除"; b. 刷新页面; ④ 编辑朝代信息; a. 在想要修改的朝代信息中点击"编辑"; b. 输入想要修改的朝代的信息,点击"提交"; c. 页面提示"编辑成功",刷新页面可看到修改后的朝代信息; 3. 用例结束 |
其他事件流: ;A1: 当前登录用户不是管理员,则无法进入"信息管理"界面 |
后置条件:数据库中的朝代表数据改变 |
用例名称:管理诗词类别 |
---|
用例标识号:06 |
参与者:管理员 |
简要说明:;管理员查看古诗类型信息,并且对其进行增删改查 |
前置条件:;管理员已登录 |
基本事件流:;1.管理员点击"信息管理"按钮,进入后台管理界面;2.点击"古诗词管理"->"古诗类型"; ① 添加古诗类型; a. 点击"添加",输入想要添加的古诗类型的信息,点击"提交"; b. 页面提示"添加成功",刷新页面可看到新添加的古诗类型信息; ② 搜索古诗类型; a. 在搜索框中输入关键字,点击"搜索";b. 页面显示搜索的结果; ③ 删除古诗类型; a. 在想要删除的古诗类型信息中点击"删除"; b. 刷新页面; ④ 编辑古诗类型信息; a. 在想要修改的古诗类型信息中点击"编辑"; b. 输入想要修改的古诗类型的信息,点击"提交"; c. 页面提示"编辑成功",刷新页面可看到修改后的古诗类型信息; 3. 用例结束 |
其他事件流: ;A1: 当前登录用户不是管理员,则无法进入"信息管理"界面 |
后置条件:数据库中的古诗类型表数据改变 |
用例名称:管理诗人 |
---|
用例标识号:07 |
参与者:管理员 |
简要说明:;管理员查看诗人信息(诗人名、字号、朝代、主要作品等信息),并且对其进行增删改查 |
前置条件:;管理员已登录 |
基本事件流:;1.管理员点击"信息管理"按钮,进入后台管理界面;2.点击"古诗词管理"->"诗人";① 添加诗人; a. 点击"添加",输入想要添加的诗人的信息(诗人名、字号、朝代、主要作品等信息),点击"提交"; b. 页面提示"添加成功",刷新页面可看到新添加的诗人信息; ② 搜索诗人; a. 在搜索框中输入关键字,点击"搜索";b. 页面显示搜索的结果; ③ 删除诗人; a. 在想要删除的诗人信息中点击"删除"; b. 刷新页面; ④ 编辑诗词; a. 在想要修改的诗人信息中点击"编辑"; b. 输入想要修改的诗人的信息,点击"提交"; c. 页面提示"编辑成功",刷新页面可看到修改后的诗人信息; 3. 用例结束 |
其他事件流: ;A1: 当前登录用户不是管理员,则无法进入"信息管理"界面;A2: 当添加或编辑时,输入的朝代名在原先的数据库的朝代表中不存在时,则将所输入的朝代名添加到对应的数据库表中 |
后置条件:数据库中的诗人表数据改变 |
用例名称:审核上传资源 |
---|
用例标识号:08 |
参与者:管理员 |
简要说明:管理员在管理用户上传界面审核资源,审核完成后,系统用户可在分享界面浏览该资源 |
前置条件:;管理员已登录 |
基本事件流:;管理员进入"管理用户上传资源"界面;选择一条未审核的记录进行审核;选择是否审核通过;系统提示操作结果,并刷新当前界面; |
其他事件流: ;A1: 无; |
活动分析
游客活动分析
登录活动图:
注册活动图:
个人信息管理活动图:
3.3.2 用户活动分析
浏览推荐内容活动图:
浏览作者活动图:
上传资源活动图:
3.3.3 管理员活动分析
添加用户信息活动图:
修改用户信息活动图:
删除用户信息活动图:
修改诗词信息活动图:
管理员审核诗词资源活动图:
修改诗人信息活动图:
删除诗人信息活动图:
添加诗人信息活动图:
系统设计
系统架构设计
系统逻辑结构
七、系统实现
主页
登录页面
① 登录时密码账号匹配成功
② 登陆时密码账号匹配不成功
注册页面
① 注册成功
② 注册失败(邮箱已绑定)
诗文页
诗人页
诗文详情页(可在推荐页面、诗文页点击诗词名进入对应详情页),诗词详情页还可以查看当前诗词的评论
查看通知页面
分享页面
① 浏览分享页面(只能看到已审核通过的分享资源)
② 上传资源:内容框可自己输入文字,也可通过下方图片识别按钮由系统自动识别图片中数据并填充进内容框。
找回密码
设置新密码
管理员的个人信息管理
- 我的信息
- 我的收藏(点击查看会跳转到对应诗词页面)
用户信息管理
- 用户信息
- 用户评论(点击查看可进入评论的诗词页面)
古诗词管理(增、删、改、查)
- 诗词(其中的编辑和添加功能在朝代管理、古诗类型、诗人管理中也有实现,只展示诗词管理)
- 添加(都必填,若无信息则填"无")
- 编辑(需要更改哪一项,就在哪一项填入数据)
- 朝代管理
- 古诗类型
- 诗人
通知管理
- 查看通知
- 发布通知
上传资源管理(可选择"审核"和"取消审核")
编辑
普通用户登录后
① 个人信息页面(需要修改的话,只需要输入密码和其他任何一项需要修改的内容)
② 收藏管理页面、评论管理页面
收藏功能(通过点击诗文框左下方的小星星实现收藏诗文功能)
① 收藏失败(重复收藏同一个诗文)
② 收藏成功
评论功能(登录用户才可评论)
① 评论成功
② 未登录