数据库课程设计 论坛系统—— 系统详细设计说明书

马马虎虎记录下2021Fall 的数据库课程设计——论坛系统
基于django开发,源码上传到github啦:) 🔗 B612Forum
不能翻墙的戳这里:) csdn资源下载

1. 文档介绍

1.1. 编写目的

  1. 对系统进行整体的设计,方便后续的开发过程
  2. 作为数据库设计,软件架构的总依据

1.2. 文档范围

包括数据库设计,软件设计等有关内容

1.3. 读者对象

编写系统设计规格说明的人员及程序开发人员,以及《数据库系统原理》课程老师和同学。

2. 数据库概念结构设计

2.1 系统 ER 图

在这里插入图片描述

2.2 系统用例图

在这里插入图片描述

2.3 业务泳道图

场景 1: 用户登录,注册,修改个人信息,注销
在这里插入图片描述
场景 2:发布帖子,发表评论,添加好友,发送私信
在这里插入图片描述

2.4 数据流图

在这里插入图片描述
A: 帖子内容信息
B. 评论内容信息
C. 好友申请信息
D. 好友私信信息
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.5 模式类图

在这里插入图片描述
上述的模式,每一个关系表的的每一列数据都和主键直接相关,而不能间接相关,属性不能依赖于其他非主
属性,均满足 3NF 设计,设计合理。

3. 服务功能和界面设计

3.1 整体设计方法概述

⚫ 设计模式: MVC
本论坛系统是基于 MVC 的设计模式的。
MVC 即 Model-View-Controller(模型-视图-控制器) 模式。
◼ Model (模型) 简而言之即数据模型。模型不是数据本身(比如数据库里的数据),而是抽象的描
述数据的构成和逻辑关系。通常模型包括了数据表的各个字段(比如人的年龄和出生日期)和相
互关系(单对单,单对多关系等)。数据库里的表会根据模型的定义来生成创建。
◼ View (视图) 主要用于显示数据,用来展示用户可以看到的内容或提供用户可以输入或操作的界
面。
◼ Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制
用户输入,并向模型发送数据(比如增加或更新数据表)。
Django 网站开发的四大模块,Django Model(模型)对应的是 MVC 模式中的模型;Django URL + View(视图)
对应 MVC 模式中的 Controller;Django Template(模板): 这个与经典 MVC 模式下的 View 一致。Django 模板
用来呈现 Django view 传来的数据,也决定了用户界面的外观。Template 里面也包含了表单,可以用来搜
集用户的输入
⚫ 开发框架:ORM
该论坛系统在开发的过程中采用的是 ORM 框架,即 Object-Relational Mapping(对象关系映射),它
的作用是在关系型数据库和业务实体对象之间作一个映射,关系表现为 Django 中的一个数据模型(Model)
映射一个数据库表。其基本情况是:类(django.db.models.Model)映射到数据库表,类的属性映射为数据
库表字段,类的实例对象则映射为数据行。
不同程序员写 SQL 语句的水平参差不齐,写出的 SQL 语句执行效率不一致,导致系统运行速度快慢不一,运行状态时好时坏。Django ORM 通过统一格式的业务逻辑代码操作数据库,把 SQL 语句统一转换成
较为固定的 Django 语法结构。Django ORM 能避免一些重复、简单的劳动,在 ORM 模式下开发人员不用写
SQL 语句,更不需要在 SQL 语句优化上下功夫,可以只专注于业务逻辑的处理,从而提高开发效率。
设计流程主要包括如下 5 步

  1. 在项目使用的数据库管理系统中建立数据库。
  2. 在项目的配置文件 settings.py 中设置数据库的连接字符。
  3. 在应用程序的 models.py 文件中编写继承于 models.Model 的数据模型。
  4. 运行 python manage.pymakemigrations、python manage.py migrate 两个命令生成数据库表。
  5. 使用 Django ORM 操作数据库表。

⚫ AJAX 编程方法
AJAX(Asynchronous Java Script And XML)的意思是异步的 Java Script 和 XML,也就是使用 Java Script
语言与服务器进行异步交互,传输的数据为 XML,实际上现在传输的数据大多是 JSON 格式的。AJAX 最大
的优点是在不重新加载整个页面的情况下,可以与后端服务器交换数据并更新部分网页内容。在本论坛系
统中采用 AJAX 编程实现嵌套评论,并在网页上实时显示
⚫ Bootstrap 前端框架
本论坛系统采用的是 bootstrap 的前端框架,使得 web 开发更迅速、简单。通过使用 bootstrap 提供的 css
设置,组件,javascript 插件来美化网页。

3.2 后端服务功能设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3.前端界面设计

3.3.1 主界面设计

在这里插入图片描述

3.3.2 注册界面

在这里插入图片描述

3.3.3 登录界面

在这里插入图片描述

3.3.4 详细界面

在这里插入图片描述
在这里插入图片描述

3.3.4 发帖界面

在这里插入图片描述

3.3.5 内容管理界面

在这里插入图片描述

3.3.6 消息提示界面

在这里插入图片描述

3.3.7 好友申请界面

在这里插入图片描述

3.3.8 个人资料界面

在这里插入图片描述

3.3.9 编辑资料界面

在这里插入图片描述

3.3.10 修改密码界面

在这里插入图片描述

3.3.11 后台管理界面

在这里插入图片描述

4. 系统安全体系设计

为了保证系统平稳运行,设计了系统的安全体系,一个目的在于处理系统故障,介质故障,以及计算机病
毒。另一个目的在于限制数据库用户的权限,避免用户无意或恶意造成数据的泄露或损坏。
⚫ 对于系统故障和介质故障,应当开启数据库的日志功能,定期对数据库全库备份;对于计算机病毒,
应当为系统安装杀毒软件,并且运维时进了避免使用操作系统的管理员账户登陆系统,减小病毒可能
造成的危害。
➢ 手动数据库备份:直接在宝塔面板中的数据库管理界面点击进行备份,或者手动复制云服务器项
目目录下的 db.sqlite3 文件。
在这里插入图片描述
➢ 手动站点备份:直接对整个站点进行备份
在这里插入图片描述
➢ 添加任务计划,自动备份
在这里插入图片描述
➢ 开启日志:响应日志和错误日志

在这里插入图片描述
➢ 网站的恢复
可以根据自动备份的冗余数据库和日志文件对网站进行恢复或者在服务器上设置磁盘镜像同步
网站的内容。
⚫ 数据库针对应用场景,创建了不同的角色
➢ 游客: 游客可以浏览该网站的所有内容,可以注册称为该网站的用户,但是不能进行发帖或者
发表评论
➢ 注册用户:注册用户不仅可以浏览该网站的所有内容,还可以发帖,发表评论,添加好友,发送
私信。
➢ 管理员:管理员拥有上述的所有功能,除此之外还可以添加版块,修改板块,删除板块,删除文
章或者评论。
⚫ 并发控制和流量控制
在宝塔面板对该站点添加并发限制,单 IP 限制,流量限制

在这里插入图片描述

5. 系统运行环境设计与部署结构

5.1 环境设计

在这里插入图片描述

5.2 项目部署

一、 下载 python3 到/usr/local 目录
1.1. 切换到 /usr/local 目录
1.2. 获取 python3.6 的压缩文件 wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
1.3 解压 python3.6 tar -zxvf Python-3.6.6.tgz
1.4 编译安装 python3 到指定路径
1.4.1 执行命令 ./configure --prefix=/usr/local/python3
1.4.2 安装 python3 make make install
1.4.3 安装完成之后,建立软链接,添加变量,方便在终端中直接使用 python3
a)python3 的软连接
执行命令: ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
b)pip3 的软连接
执行命令: ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
二、 安装软件管理包和可能使用的依赖
2.1. 执行命令: yum -y groupinstall "Development tools"
2.2. 执行命令: yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
三、 安装 virtualenv
3.1.执行命令: pip3 install virtualenv
3.2.建立软连接 执行命令: ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
3.3.在根目录下建立文件夹,用于存放 env mkdir -p /data/env
四、 切换到/data/env/下,创建指定版本的虚拟环境
4.1.执行命令 : cd /data/env 切换目录
4.2.执行命令: virtualenv --python=/usr/bin/python3 pyweb
4.3.进入/data/env/pyweb/bin,启动虚拟环境
A.执行命令: cd /data/env/pyweb/bin
B.执行命令: ``source activate
五、虚拟环境中配置网站所需依赖
5.1 在你网站根目录执行下列命令导出配置信息: pip freeze > requirements.txt
5.2 安装 uwsgi 执行命令: pip3 install uwsgi
5.3 给 uwsgi 建立软链接 执行命令: ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
5.4 将网站源码上传
5.4.1 修改 setting.py 文件
ALLOWED_HOSTS = ['*'] # 设置为所有的主机都可以访问 STATIC_ROOT = os.path.join(BASE_DIR,"static") # 设置静态文件的路径
5.4.2 在主目录下生成 static 和 media 文件
python manage.py collectstatic
5.4.2 通过宝塔面板上传到云服务器上 /www/wwwroot 目录下
在这里插入图片描述
5.4.3 下载 pyhton 项目管理器,添加项目,并映射到 ECS 的公网 IP 地址
在这里插入图片描述
5.4.4 修改项目配置文件
在这里插入图片描述
5.5.5 在站点管理中找到映射的站点,并修改其配置文件
在这里插入图片描述
六、 开启站点,运行该项目文件
1.首先进入到项目文件夹下,然后激活虚拟环境
2.执行 uwsgi 命令,指定端口号,静态文件的配置路径,以及进程数和线程数。
在这里插入图片描述

3.然后在任意主机上的浏览器中键入”公网 IP:端口号” 就可以浏览该网页
在这里插入图片描述
在这里插入图片描述

6. 源代码列表及说明

在这里插入图片描述

  • 60
    点赞
  • 300
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,数据库课程设计中的图书管理系统是一个非常实用的应用程序。它可以帮助图书馆或者书店管理他们的图书信息,包括书名、作者、出版社、价格、库存等等。同时,它还可以实现借阅、归还、续借等功能,方便读者的使用。在设计这个系统时,需要考虑到数据的安全性、查询效率、用户友好性等方面,以便更好地服务于用户。 ### 回答2: 数据库课程设计是计算机科学与技术专业中非常重要的一门课程。而我所要设计数据库就是一个图书管理系统。 首先,我们需要确定这个图书管理系统需要承担哪些任务。我认为,一个图书管理系统应该包括以下三个方面: 1. 书籍的管理:这一方面的任务包括对于图书的增删改查,借阅和还书等操作。在设计的时候,需要考虑到书籍的属性,例如书名、作者、出版社、书籍编号、存放位置、借阅状态等等。 2. 读者信息的管理:这一方面主要涉及到读者的注册、登录、查询借阅情况、修改个人资料等操作。在设计的时候,需要考虑到读者的属性,包括姓名、学号、班级、电话号码、邮箱等等。 3. 系统管理:这一方面主要包括管理员登录、权限管理,以及对于系统数据的维护和备份等操作。 其次,我们需要确定设计这个图书管理系统所需要用到的工具和技术。我认为,使用Mysql数据库可以比较好地支持这个系统的功能开发。同时,我们还需要考虑到系统的用户界面的设计,可以使用HTML、CSS和JavaScript等技术来设计。 最后,我们需要设计系统的结构和流程。在设计系统的结构方面,需要确定系统的各个模块之间的关系和信息交互方式。在设计系统的流程方面,则需要考虑各个功能模块的具体实现过程。 综上所述,设计一个图书管理系统数据库需要考虑到书籍的管理、读者信息的管理以及系统管理三个方面;需要使用Mysql数据库以及HTML、CSS和JavaScript等技术来设计;同时还需要考虑到系统的结构和流程的设计。 ### 回答3: 一、需求分析 首先,我们需要明确图书管理系统的功能需求。在图书管理系统中,我们需要分类管理图书,包括图书的名称、作者、出版社、出版日期、价格等信息。同时,我们还需要管理读者的信息,包括姓名、性别、年龄、联系方式等。此外,还需要实现借阅、归还、续借等基本操作,并且要记录每一次的借阅信息。最后,图书管理员需要有权限管理系统中的数据,包括添加、删除、修改图书及读者信息,以及查询借阅信息等。 二、数据库设计 在进行数据库设计时,要明确系统的数据结构。根据需求分析结果,我们可以设计以下实体和关系: 1. 实体 - 图书:包括图书编号、图书名称、作者、出版社、出版日期、价格等信息; - 读者:包括读者编号、姓名、性别、年龄、联系方式等信息; - 借阅记录:包括借阅编号、借阅日期、归还日期、读者编号、图书编号等信息。 2. 关系 - 图书和读者之间的关系:每本图书可以被多个读者借阅,反之亦然; - 图书和借阅记录之间的关系:每本图书被借阅多次,因此需要建立一对多关系; - 读者和借阅记录之间的关系:每个读者可以借阅多本书,因此需要建立一对多关系。 基于以上实体和关系,我们可以设计一个关系型数据库,用于存储、管理和检索图书管理系统的数据。 三、系统架构设计系统架构设计时,我们需要考虑系统的整体结构和模块划分。以下是一个可能的系统架构设计: 1. 系统整体结构 - 硬件:服务器、客户端(PC、移动设备等); - 软件:操作系统数据库管理系统、应用程序。 2. 应用程序模块 - 图书管理模块:用于添加、删除、修改图书的信息; - 读者管理模块:用于添加、删除、修改读者的信息; - 借阅管理模块:用于借阅、归还、续借图书,以及查询借阅信息; - 用户权限管理模块:用于管理图书管理员的权限,包括登录系统、修改密码等。 四、总结 图书管理系统是一个典型的关系型数据库应用程序,其本质是将数据存储在数据库中,并通过应用程序进行数据的管理和处理。在设计图书管理系统时,我们需要考虑清楚需求分析、数据库设计以及系统架构设计,才能够实现一个稳定、高效、易用的系统。同时,我们还需关注系统的安全性和可靠性,包括数据备份和故障恢复等方面,以确保系统的稳健性和可持续性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zyw2002

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值