美文网首页
Django图书荐购云平台开发与实践 -1需求分析、数据库设计和

Django图书荐购云平台开发与实践 -1需求分析、数据库设计和

作者: libdream | 来源:发表于2021-08-22 14:11 被阅读0次

    1 需求分析


    整个网站分为五大模块,分别是用户信息模块、图书信息模块、图书荐购模块、评论模块和图书馆模块。

    用户信息模块

    用户信息模块包括用户注册、用户登录、显示用户信息、用户密码修改。

    1. 注册时要输入用户名、密码。注册信息要求用户名必须唯一。
    2. 用户登录时,如果用户名和密码输入有误,必须提示相应的错误信息。
    3. 用户登录后,能够查看自己的用户信息和图书荐购信息,还能够修改部分用户信息和用户头像。能够修改的用户信息包括姓名、学号/工号、手机号、微信号、QQ号码、邮箱及所属院校。
    4. 允许用户修改密码,修改密码可以有两种方式:一种是提供旧密码来修改密码;另一种是忘记密码,采用邮箱验证来修改密码。

    图书信息模块

    图书信息模块包括图书信息的维护,图书概要信息的分页显示,图书信息的模糊查询和某个图书的详细信息。

    1. 图书信息的维护,包括对图书的增加、修改和删除操作,利用Django的后台完成。
    2. 图书概要信息的分页显示,包括图书信息的封面、书名、作者、出版社、查看详情以及荐购操作。
    3. 图书信息的模糊查询,查询的信息包括书名、作者和出版社,查询结果同概要信息,也要实现分页功能。
    4. 某个图书的详细信息,要显示书名、作者、出版社、ISBN、图书分类(一级分类和二级分类)、出版日期、图书包装、图书版次、图书页数、荐购次数、图书开本、图书京东价、图书原价以及图书的摘要信息。

    图书荐购模块

    图书荐购模块包括荐购图书、已荐购图书的展示、取消荐购、荐购反馈。

    1. 荐购图书,读者在概要信息页面和详情页面都要能荐购图书,荐购图书可选荐购理由,有荐购理由的图书馆可以优先处理。
    2. 已荐购图书的展示,在图书的详细页面展示该书已被荐购的次数,在读者个人信息页面展示该读者已荐购的图书列表。
    3. 读者能够取消已荐购的图书,取消荐购后该书的荐购次数相应减少。
    4. 荐购反馈,图书馆可以对被荐购图书进行处理,包括已接受荐购、正在购买中、图书已到馆、图书已上架和未采纳荐购,并给出未采纳的理由。

    评论模块

    评论模块包括图书的评论、修改、删除和回复评论、评论点赞和取消、管理员回评、屏蔽或删除评论信息。

    1. 读者对图书的评论按评论时间排序或按热度排序,读者可以修改或删除自己的评论。
    2. 读者可以对评论点赞或取消,评论的热度排序按点赞数量来排列,点赞数多的排前列。
    3. 系统管理员可以对评论进行回复,屏蔽或删除某条评论或者某个人的所有评论。

    图书馆模块

    图书馆模块包括图书馆的资料信息、图书馆审核读者、图书馆对荐购图书的反馈以及图书馆对评论的回应。

    1. 图书馆的资料信息应包括图书馆的名称、地址、联系人和联系方式。
    2. 图书馆需要审核读者的身份信息,是否是该馆读者,审核通过的才能向该馆荐购图书。
    3. 图书馆可以对被荐购图书进行处理,包括已接受荐购、正在购买中、图书已到馆、图书已上架和未采纳荐购,并给出未采纳的理由。
    4. 图书馆管理员可以对评论进行回复,屏蔽或删除某条评论或者某个人的所有评论。

    2 数据库设计


    图书信息表book_info

    图书信息表是网站的核心数据,设置网站的数据结构时,应以图书信息为核心数据,逐步向外扩展相关联的数据信息。将图书信息的数据表命名为book_info,图书信息表book_info的数据结构如下表所示:

    表字段 字段类型 含义
    book_id Int类型 主键
    book_sku_id Int类型 商品的sku
    book_name Varchar类型,长度为150 图书名称
    book_author Varchar类型,长度为100 图书著者
    book_pic Varchar类型,长度为150 图书封面的文件路径
    book_size Varchar类型,长度为5 图书开本
    book_isbn Varchar类型,长度为20 图书ISBN号
    book_press Varchar类型,长度为50 出版社
    book_pub_date Varchar类型,长度为20 图书出版日期
    book_pack Varchar类型,长度为2 图书包装
    book_edition Int类型 图书版次
    book_page Int类型 图书页数
    book_price Float类型,长度为8 图书定价
    book_substract Text类型 图书摘要(简介)
    cata_id Int类型 外键,连接图书分类表
    图书类别表catagory

    图书信息中还有一个图书分类的信息,需要单独放在图书类别表catagory中。图书信息和图书分类的关系是:一本图书对应一个类别,一个类别可以对应多本图书。因此,图书信息表和图书分类表是一对多的关系,需要在图书信息表中建立指向图书分类的外键。

    表字段 字段类型 含义
    cata_id Int类型 主键
    cata_name Varchar类型,长度50 类别的名称
    parent_cata Int类型 外键,连接当前表,类别的上一级分类的id

    图书类别表中的parent_cata字段关联该分类的上一级分类的cata_id,例如“小说-言情小说|科幻小说”这样的分类在数据库中应该是这样表示的:

    cata_id cata_name parent_cata
    1 小说 None
    2 言情小说 1
    3 科幻小说 1
    4 文学 None
    5 纪实文学 4

    上表中parent_cata为None的代表是顶级分类,比如小说、文学,言情小说和科幻小说的父类id是1,因此上一级分类是小说,而纪实文学的父类id是4,因此上一级分类是文学。这样我们在保存图书信息的分类时,只需要保存最底层的类别cata_id,然后寻级遍历上去就能获取该图书所在的所有类别。

    用户信息表user_info

    用户信息表user_info提供用户信息,用户信息表由Django内置模型User扩展而成,表结构如下:

    表字段 字段类型 含义
    user_id Int类型 主键
    password Varchar类型,长度为128 用户密码
    is_superuser Int类型,长度为1 超级用户
    username Varchar类型,长度为150 用户名
    first_name Varchar类型,长度为30 用户的姓
    last_name Varchar类型,长度为150 用户的名
    email Varchar类型,长度为150 邮箱地址
    identity_number Int类型 身份号(工号或学号)
    is_staff Int类型,长度为1 登录Admin权限
    is_active Int类型,长度为1 用户的激活状态
    qq Varchar类型,长度为20 用户的QQ号码
    mobile Varchar类型,长度为11 用户的手机号码
    lib_id Varchar类型,长度为50 外键,关联图书馆信息表
    荐购信息表rec_info

    在网站需求中,还涉及到读者荐购和荐购反馈,因此需要荐购信息表rec_info。

    表字段 字段类型 含义
    rec_id Int类型 主键
    rec_reason Varcharl型,长度为150 荐购原因,可选
    rec_feedback Varchar类型,长度为150 荐购反馈,默认为待处理,随着处理进程,更改反馈的信息,包括已接受荐购、正在购买中、图书已到馆、图书已上架和未采纳荐购,并给出未采纳的理由等。
    user_id Int型 外键,关联用户信息表user_info
    book_id Int型 外键,关联图书信息表book_info
    图书评论表comment

    读者可以对图书发起点评,同时其他读者也可以对点评进行点赞或回复,图书点评表comment结构如下:

    表字段 字段类型 含义
    comment_id Int类型 主键
    comment_type Int类型,长度为1 区分该条评论是直接评论还是回复评论
    comment_text Varchar类型,长度为500 点评内容
    comment_date Varchar类型,长度为50 点评日期
    from_user_id Int类型 外键,关联用户信息表,表示评论人的id
    to_user_id Int类型 外键,关联用户信息表,表示回复目标的id
    book_id Int类型 外键,关联图书信息表
    图书馆信息表lib_info

    此外,还需要图书馆的信息表lib_info。

    表字段 字段类型 含义
    lib_id Int类型 主键
    lib_name Varchar类型,长度50 图书馆的名称
    lib_address Varchar类型,长度150 图书馆的地址
    lib_contact Varchar类型,长度20 图书馆的联系人
    lib_phone Varchar类型,长度20 图书馆的联系电话
    lib_email Varchar类型,长度150 图书馆的电子邮箱

    3 项目创建与配置


    首先打开cmd命令行,cd到放置项目的所在文件夹,使用如下命令创建项目JiangXiongGo。

    django-admin startproject JiangXiongGo

    然后创建在项目目录下分别创建book、user、recommend、library和comment应用:

    E:\MyProject\JiangXiongGo>python manage.py startapp book
    E:\MyProject\JiangXiongGo>python manage.py startapp user
    E:\MyProject\JiangXiongGo>python manage.py startapp recommend
    E:\MyProject\JiangXiongGo>python manage.py startapp library
    E:\MyProject\JiangXiongGo>python manage.py startapp comment

    创建好项目和应用后,我们在项目根目录和每个应用的目录下分别创建文件夹templates和 static,两者分别存放模板文件和静态资源文件。在每个应用下创建一个空白的urls.py文件。搭建好的项目目录如下:

    项目目录结构

    项目目录结构搭建好之后,就是对项目进行相关的配置,配置主要在配置文件settings.py中完成。

    #添加新增的应用项目book、user、recommend、library和comment
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'book',
        'user',
        'recommend',
        'library',
        'comment',
    ]
    
    #添加中间件LocaleMiddleware
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        #使用中文
        'django.middleware.locale.LocaleMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    #设置模板路径
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR,'templates'),
                     os.path.join(BASE_DIR,'book/templates'),
                     os.path.join(BASE_DIR,'user/templates'),
                     os.path.join(BASE_DIR,'recommend/templates'),
                     os.path.join(BASE_DIR,'library/templates'),
                     os.path.join(BASE_DIR,'comment/templates'),
                    ],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    #设置数据库连接信息,使用mysql数据库,项目使用的数据库为jiangxiongGo_db,需要提前在数据库中创建好。
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'jiangxiongGo_db',
            'USER':'root',
            'PASSWORD':'123456',
            'HOST':'127.0.0.1',
            'PORT':'3306',
           
        }
    }
    

    以上是项目的常规配置。配置好项目以后,我们可以在终端输入命令python manage.py runserver,然后在浏览器中输入http://127.0.0.1:8000,查看项目是否正常运行。

    image.png

    相关文章

      网友评论

          本文标题:Django图书荐购云平台开发与实践 -1需求分析、数据库设计和

          本文链接:https://www.haomeiwen.com/subject/ajqwyqtx.html