知乎问答系统软件系统设计⽅案
⼀、项⽬简介
本⽂基于我们的⼯程实践项⽬--设计⼀个类似知乎问答系统。该问答系统⽀持提问、回答等基本操作;发布后能够修改和删除回答;回答⽀持按热度和时间线排序;能够对回答点赞和反对;能够对问答发表评论;展现当前热门问题列表等功能。
⼆、项⽬架构
本项⽬采⽤B/S模式架构风格,B/S模式的架构风格是指游览器通过请求和应答的⽅式访问或者调⽤服务代码。这⾥的请求和应答可以是函数调⽤和返回值,也可以是TCP Socket中的send和recv,还可以是HTTP协议中的GET请求和响应。
分层设计是⼀种最为常见的架构设计⽅案,能有效地使系统结构清晰、设计简化。MVC模式是当今最为流⾏的多层设计模式。该模式把⼀个应⽤的输⼊、处理、输出流程进⾏分离并抽象为控制器(Controller)、模型(Model)、视图(View)三个模块,实现了业务逻辑层、数据库访问层和⽤户界⾯层之间在彼此分离的同时仍保持松散的耦合关系,增加了灵活性和可扩展性。
navigator翻译MVC中M、V和C所代表的含义如下:
mysql面试题 知乎Model(模型)代表⼀个存取数据的对象及其数据模型。
View(视图)代表模型包含的数据的表达⽅式,⼀般表达为可视化的界⾯接⼝。
Controller(控制器)作⽤于模型和视图上,控制数据流向模型对象,并在数据变化时更新视图。控制器可以使视图与模型分离开解耦合。
基于MVC模式的特点,本项⽬采⽤MVC架构进⾏软件开发,采⽤MVC架构可以使得项⽬前后端分离,前端只需要进⾏数据展⽰,⽽业务逻辑处理则由后端负责,这样减少了项⽬实现的复杂度。
三、接⼝API
API是指应⽤程序编程接⼝,我们通过API接⼝可以实现特定的功能,⽽不需要了解其内部实现细节。可以把API接⼝理解为是特定服务的⼀种封装,将服务封装起来提供给他⼈调⽤,这样⼀来很多功能不需要从新开发。
接⼝名称接⼝地址请求⽅式请求参数响应信息
注册/register POST⽤户名、邮箱、密码注册成功/失败的信息
登录/login POST邮箱、密码登陆成功/失败的信息
个⼈信息/profile/{userId}GET⽤户ID⽤户信息
提问/ask POST问题问题ID
查看问题/question/{questionId}GET问题ID问题相关信息
回答/answer POST回答回答ID
回答获赞数/likeAnswer GET回答ID回答获赞数
添加⾄收藏夹/addCollection POST收藏夹添加成功/添加失败
收藏夹内容/collection/{collectionId}GET收藏夹ID收藏夹内容
四、软件系统概念原型视图
4.1 分解视图
分解视图也是描述软件架构模型的关键视图,⼀般分解视图呈现为较为明晰的分解结构特点。分解视图⽤软件模块勾划出系统结构,往往会通过不同抽象层级的软件模块形成层次化的结构。
4.2 依赖视图
依赖视图展现了软件模块之间的依赖关系。⽐如⼀个软件模块A调⽤了另⼀个软件模块B,那么我们说软件模块A直接依赖软件模块B。如果⼀个软件模块依赖另⼀个软件模块产⽣的数据,那么这两个软件模块也具有⼀定的依赖关系。
4.3 泛化视图
泛化视图展现了软件模块之间的⼀般化或具体化的关系,典型的例⼦就是⾯向对象分析和设计⽅法中类之间的继承关系。泛化视图有助于描述软件的抽象层次,从⽽便于软件的扩展和维护。⽐如通过对象组合或继承很容易形成新的软件模块与原有的软件架构兼容。
4.4 执⾏视图
执⾏视图展⽰了系统运⾏时的时序结构特点,⽐如流程图、时序图等。执⾏视图中的每⼀个执⾏实体,⼀般称为组件(Component),都是不同于其他组件的执⾏实体。如果有相同或相似的执⾏实体那么就把它们合并成⼀个。
4.5 部署视图
部署视图是将执⾏实体和计算机资源建⽴映射关系。这⾥的执⾏实体的粒度要与所部署的计算机资源相匹配,⽐如以进程作为执⾏实体那么对应的计算机资源就是主机,这时应该描述进程对应主机所组成的⽹络拓扑结构,这样可以清晰地呈现进程间的⽹络通信和部署环境的⽹络结构特点。
五、数据库设计
⽤户表
字段类型说明
user_id int(11)⽤户id
email varchar(50)邮箱
width是什么意思啊password varchar(50)密码
username varchar(50)⽤户名
gender int(11)性别
simple_desc varchar(50)⼀句话介绍
position varchar(100)居住地
industry varchar(100)所在⾏业
career varchar(100)职业经历
education varchar(100)教育经历
问题评论表
字段说明字符串长度规则
comment_id评论id
commentContent评论内容
at_user_id回复谁
liked_count被点赞次数
create_time评论时间
answer_id评论在哪个问题下
user_id评论⽤户
回答表
字段说明
answer_id评论id
content回答内容
liked_count点赞数
create_time回答时间
question_id回答的问题id
css中tableuser_id回答⽤户id
收藏夹表
字段说明height and build翻译
collection_id收藏夹id
collection_name收藏夹名称
create_time创建时间
update_time更新时间
user_id收藏夹⽤户id
六、软件系统运⾏环境和技术选型
开发语⾔:JAVA
Web框架:SpringBoot
缓存:Redis
数据库:MySQL
七、系统概念原型的核⼼⼯作机制
概念是⼈对能代表某种事物或发展过程的特点及意义所形成的思维结论。
概念原型是⼀种虚拟的、理想化的软件产品形式。
概念原型 = ⽤例 + 数据模型
概念原型的⼯作流程:
⽤户在登陆页⾯登录系统后,可以进⾏提问,也可以对问题进⾏评论和回答。
回答页⾯可以对回答内容进⾏编辑,编辑完后将回答进⾏发表,发表后也可以删除已发表的内容。⽤户可以对⾃⼰喜欢的问题和回答点赞,也可以收藏对⾃⼰有⽤的回答。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论