300
社区成员
这个作业属于哪个课程 | 软件工程实践-2023学年-W班 |
---|---|
这个作业要求在哪里 | 团队作业 概要设计和数据库设计 |
这个作业的目标 | 设计好系统和数据库、制定好计划和分工 |
其他参考文献 | 构建之法(第三版) |
gitcode仓库 | 系统设计说明书 | 数据库设计说明书 | 答辩PPT |
---|
1.系统架构
系统采用典型的前后端分离架构,前端使用React框架实现,提供用户友好的交互界面;后端使用Node.js和Express.js框架实现,处理业务逻辑和数据交互;数据库采用MySQL存储用户信息、文章内容等数据。
2.主要功能
系统主要功能包括:
3.总体原则
系统设计遵循以下总体原则:
1.接口设计
系统对外提供了一系列接口,包括用户注册、登录、发布文章、评论等功能。这些接口通过SQL语句实现对数据库的操作,保证数据的一致性和完整性。
2.数据模型设计
数据库采用关系型数据库MySQL,通过实体-关系模型设计数据库表结构,包括用户表、文章表、评论表、点赞表和好友表等,保证数据之间的关联性和有效性。
在设计这些表时,需要注意以下几点:
1.所有的外键都应该有对应的索引以优化查询性能。
2.对于可能经常进行查询的字段,比如用户名、文章标题等,也应该添加索引。
3.考虑到数据的一致性和完整性,应该在相关的字段上设置适当的约束,例如非空约束、唯一约束和外键约束。
4.为了保护用户隐私,密码应该经过加密处理后再存储。
5.考虑到系统的可扩展性和维护性,在设计之初就应该预留一定的空间以适应未来可能的需求变化。
这样的设计可以有效地组织和管理用户、文章、评论以及好友关系等信息,并支持对这些数据的增删改查操作,同时保持数据的一致性和完整性。
系统的安全设计主要包括用户认证、数据传输和数据存储方面的安全措施:
1.用户认证
2.数据传输
3.数据存储
答:确实,像知乎这样的平台提供了多级评论功能,允许用户对已有评论进行回复,从而形成了一个树状的讨论结构。这种设计有其优点,比如能够更清晰地展示讨论的脉络,让用户之间的对话更加有序。然而,正如您所提到的,这种功能也可能带来一些挑战和问题。
首先,多级评论可能会导致评论区的混乱。随着讨论的深入,评论层级可能会变得非常复杂,使得用户难以追踪和理解整个讨论的流程。特别是对于新用户或不经常参与讨论的用户来说,他们可能很难找到自己想要的信息或参与到讨论中。
其次,多级评论可能导致信息的堆积。在热门话题下,可能会有大量的评论和回复,这不仅会占用大量的存储空间,还可能导致服务器负载过重,影响网站的性能和用户体验。此外,过多的信息也可能使用户感到压力,导致他们不愿意花时间阅读所有的评论和回复。
所以我们暂时没有考虑做这个功能。
答:在项目的实施过程中,我们遇到了几个主要的难点和挑战。首先是各个功能之间的联动问题。我们的平台包含多个模块和功能,如发帖、评论、点赞等,这些功能之间需要进行有效的协同工作,以确保用户的体验流畅且一致。例如,当一个用户发布了一篇新帖子后,我们需要确保该帖子能够被正确地显示在首页和其他相关页面上,同时触发通知机制,告知关注该用户的其他用户。这需要我们在后端实现复杂的逻辑和数据处理,同时也需要在前端进行精细的界面设计和交互优化。
第二个难点是帖子的审核机制。为了确保平台的内容质量和安全,我们需要对用户发布的帖子进行实时的审核。这不仅涉及到文本内容的过滤和分析,还需要考虑到图片、视频等媒体的审查。我们采用了先进的算法和技术,如自然语言处理和图像识别,来自动检测和处理违规内容。然而,由于语言的多样性和复杂性,以及不断变化的网络环境,这一过程仍然充满挑战。
第三个难点是用户管理。作为一个社交平台,我们需要处理大量的用户数据和隐私信息。如何安全地存储和管理这些信息,防止数据泄露和滥用,是我们面临的一个重要问题。此外,我们还需要对用户的行为进行监控和管理,以防止恶意行为和滥用行为的发生。这需要我们建立一套完善的用户管理机制,包括注册验证、权限控制、举报处理等。
答:大众审评功能是一种创新的社区互动方式,它让社区成员直接参与到内容审核的过程中,通过投票的方式来决定某个帖子是否符合社区的主调和大众的审美。这种方式不仅能够提高社区成员的参与感和归属感,还能够有效地筛选出高质量的内容,提升整个社区的品味和价值。
在大众审评界面,用户不仅可以投票,还可以针对待审的帖子发表自己的看法和建议。这种开放式的评论机制鼓励了用户之间的交流和讨论,有助于形成共识和多元化的观点。用户可以在评论中分享自己的见解,提出改进建议,或者与其他用户就某个问题进行深入的探讨。这种互动不仅丰富了社区的文化氛围,也促进了用户之间的理解和尊重。
总的来说,大众审评功能为社区提供了一个民主化、透明化的内容审核机制,让每个用户都有机会参与到社区的建设和发展中来。通过这种方式,我们可以更好地了解用户的需求和期望,不断优化和改进我们的服务,为用户提供更加优质和个性化的体验。
答:在我们的平台上,首页的布局和内容是根据用户的兴趣和行为动态生成的。为了保持页面的一致性和美观性,我们引入了占位符的概念。占位符是一个虚拟的元素,它在页面上占据一定的位置,但并不直接显示任何实际的内容。当有新的帖子或分类满足特定的条件时,相应的占位符就会被激活,显示出实际的标题和摘要,并提供一个链接供用户点击跳转到详细页面。如果当前没有符合条件的帖子或分类,那么对应的占位符就会保持隐藏状态,不会干扰到页面的整体布局和视觉效果。
这种设计既保证了页面的整洁和一致性,又提高了用户的浏览效率。用户可以快速地看到哪些区域有更新的内容,而无需逐个检查每个部分。同时,这也减轻了服务器的负担,因为只有在有实际内容时才需要加载和渲染相关的数据。
答:类图绘制时的粒度确实不好把控,这一点是我们需要学习改进的。具体来说,前端由于和功能点结合紧密,在类图中比较容易有具体、详细的实现;而在api文档定义完成之前,后端只能对数据库和接口有一个宏观的的、不具体的定义(不否认同时受制于项目经验),在类图上往往只能体现出少量几个类(如orm、数据库、api)。
总之我们在原有的类图上,已经补上了更多后端功能。
答:我们的平台致力于为用户提供一个丰富多样的社交体验,因此在接下来的开发阶段,我们将重点推出以下几个核心功能:
1.发帖及互动功能:用户可以创建并发布自己的帖子,分享他们的想法、经历或作品。同时,其他用户可以对帖子进行点赞和评论,与作者或其他读者进行互动交流。这将促进社区内的信息共享和知识传播,增强用户之间的联系和共鸣。
2.大众审评功能:这是一个创新的社区参与机制,允许用户对帖子进行投票和评论,共同决定其质量和价值。这不仅提升了社区的民主性和透明度,也让用户有机会直接影响到社区的内容生态。
3.个人中心设置:用户可以在个人中心对自己的账户进行管理,包括修改个人信息、设置隐私选项、查看历史活动等。这将帮助用户更好地掌控自己的在线身份和数据,保障他们的权益和隐私。
4.社区基本设置:作为管理员或版主,您可以对社区进行基本的设置和管理,包括定义规则、调整版面布局、管理用户权限等。这将帮助您打造一个有序、活跃且符合社区特色的交流平台。
5.举报和投诉功能:为了保障社区的安全和公正,我们提供了举报和投诉功能。用户可以对违反社区规则或侵犯他人权益的行为进行举报,我们会及时处理并采取相应的措施。
学号姓名 | 分工 | 贡献度(%) |
---|---|---|
222100233董阳 | 工作分配协调、部分文档撰写、技术指导 | 20 |
222100227帕力万 | ppt、博客 | 15 |
222100234曾翔宇 | 用例图及其描述、新功能原型设计 | 12 |
222100106方锦琦 | api文档 | 14 |
222100107田丰宇 | 前端基本程序架构 | 7 |
222100328夏鑫洋 | 后端架构、数据库和系统架构文档、api文档 | 20 |
222100336潘岩 | 数据库和系统架构文档、类图修正 | 12 |
时间段 | 宏观任务目标 | 前端具体任务 | 后端具体任务 | 产品经理/组长 |
---|---|---|---|---|
4.18-4.24 | 1.后端设计,前端设计和技术学习 | 1.css样式、可复用组件、json获取,以及页面主体 | :考虑分析相关的依赖关系,进行数据库建表,并绘制er图2 | 技术方面进行指导,并审核相关的文档质量 |
4.24-5.8 | 1.前端绘制软件基本框架 2.后端实现基本功能接口 | 1.主页(推荐页) 2.用户个人信息 3.除评审功能外的普通帖子 4.评论、普通用户登陆界面 5.后端json获取 | 1.实现项目基本结构搭建(orm) 2.实现html协议下,前端需要的通信相关接口,具体参考api文档 3.服务器部署(时间足够的话) | 1.文档、博客方式跟进程序开发进度 2.衔接前后端工作 3.必要时进行技术讨论和指导 |
5.8-5.22 | 前端后端协同开发进阶功能 | 1.管理员界面、审核功能 2.评审功能 3.好友列表 4.用户个人帖子管理 | 同上一安排 | 1.考虑是否新增新的功能 2.准备测试数据并组织初步测试 3.博客和相关文档记录跟进 |
5.22-5.29 | 测试、优化和验收 | 1.UI美化 2.上一安排中可扩展的特色功能和安全机制的实现 3.打包部署web(和移动端) 3.各功能测试 | 1.代码优化和重构 2.测试相关功能 3.服务器维护 | 组织协调相关工作和文档博客记录 |
系统架构不明确,只有文字能以清晰地传递系统体系结构整体概貌;
评审功能模块中有“举报”模块,后台是否需要对应的“处理举报“?
数据表结构设计不能简单截图,设计文档要告诉其他开发者每个字段的涵义、类型、长度、约束等,需要另作表格定义;
App包括帖子社区功能,但是在数据库表设计中并不包括社区表
从数据模块和功能模块来看,本系统的应用场景并不明显