网上书店管理系统

目录

一、系统需求分析

二、数据库概念结构设计

四、数据库物理实现

五、数据库功能调试


一、系统需求分析

  • 需求概述

1.系统背景

       当今互联网的迅速发展,使得人们获取信息变得极其便利。在从前,人们以线下书店购买书籍的方式获取知识,常常因时间或空间的限制受到不同程度的信息闭塞。如今电子书越来越流行,网上书店更能打开信息交流的窗口,为读者节省时间,因此,一个网上书店管理系统十分必要。

2.需求分析

本系统旨在管理书店书籍信息,并为管理员和用户提供设计。

根据书店的需求:书店对于书籍有进货、销售两种操作。图书应包含:编号、书名、作者、出版社、版本、定价、库存等信息便于用户和管理员查找、操作。

本系统的使用者有以下两类:1.用户2.管理员,其中用户查看前台,管理员管理后台。二者需求如下:

(1)用户

注册后填写详细信息:

用户名(Bname)、性别(Bsex)、地址(Bsaddress)、ID(Bno)、密码(Bpw)。

用户操作:

查看图书详细信息、购买图书、管理个人信息;

(2)管理员

非初始管理员由初始管理员添加:

工号(Sno)、密码(Spw)、姓名(Sname)、性别(Ssex)。

       管理员操作:

增加图书信息、删除图书信息、查找图书、查看图书详细信息、更新图书信息(数量、书名、增加图书属性等),更改管理员。

3.系统功能图

图1 网上书店管理系统功能图

  • 业务流分析

网上书店管理系统的业务主要有注册登录、用户购买图书、管理员操作图书三个业务构成,用户进入系统后点击操作,系统响应返还信息,如图2。

图2 业务流程图

以下为业务流详细分析:

  1. 注册登录

注册登录流程:当用户或管理员使用本系统时,首先将在页面上选择登录身份(用户或管理员身份)之后登录,系统搜索用户信息库,产出用户信息单,若登录输入信息与表单相符,则进入系统;若表单为空则说明没有该用户,需要用户注册,注册时输入完整用户信息,之后便可进入系统。

图3 用户登录流程图

  1. 用户购买图书

用户购买图书流程:用户通过对图书的查询后可创建订单进行图书的购买,此时管理员将查询该图书查看库存量是否足以售卖该书,若库存足够,则产生出库单,管理员依照出库单从书库中出库,并将订单确认单返还给用户,用户下单成功。

图4 用户购买图书流程图

  1. 管理员操作图书

管理员操作图书流程:管理员登录后进入管理员详细页面,其中有更新管理员操作和图书操作两种,进入图书操作后产生图书表单,管理员在表单中选择需要修改的图书或增加新书。

图5 管理员操作流程图

  • 数据流分析

数据流图表达了数据和处理过程的关系,对网上书店管理系统使用自顶向下的结构化分析可得图6、图7、图8,它们表示当用户下单后管理员调整图书内容和产生订单的数据流向。

图6 第0层数据流图

图7 第1层数据流图

图8 第2层数据流图

  • 数据字典

数据字典是各类数据描述的集合,在此主要对数据项、数据结构和处理过程进行描述,反应基础数据单位、数据间联系与处理其的方式。

1.数据项

数据项:图书编号(Bookno)

含义说明:唯一标识每本书

类型:字符型

长度:4

取值范围:0000~9999

取值含义:标识本书店进的第几种书

与其他数据项的逻辑关系:无

数据项:书名(Bookname)

含义说明:图书的名字,UNIQUE不可重复

类型:字符型

长度:40

取值含义:每种书的名字

与其他数据项的逻辑关系:无

2.数据结构

数据结构:图书

含义说明:是网上书店管理系统的主体数据结构,定义了一本图书的所有信息

组成:编号、书名、类型、价格、库存、出版社

数据结构:管理员

含义说明:是网上书店管理系统的主体数据结构,定义了一个管理员的所有信息

组成:工号、姓名、性别、密码

3.处理过程

处理过程:更新图书

说明:更新图书信息

输入:本书编号、书名、类型、价格、出版社、增加的数量

输出:图书信息

处理:在进货中有新书时,为新书登记入库,或者更改图书的价格等信息。

处理过程:修改订单

说明:书被卖出

输入:本书编号,出货数量,书名,目的地址

输出:出货信息

处理:在用户购买图书后,产生出货订单,用户可以自行更改订单信息。

二、数据库概念结构设计

(一)实体分析

本系统的实体有四个,分别为两个使用者和两个被操作者:

1.管理员2.用户3.图书4.订单。

其中管理员负责后台管理图书数据,用户在平台上购买图书,图书作为该平台的交易实体,订单由用户选定购买图书后下单产生,记录购买信息。

  • 属性分析

综合实体与数据字典分析对四个实体的属性分别进行分析,并画出实体与属性的关系图如下:

1.管理员的属性

管理员有四个属性:工号(Sno)、密码(Spw)、姓名(Sname)、性别(Ssex)。工号作为主码,确定是哪一位管理员,工号和密码用于管理员登录操作,姓名、性别为管理员基本信息。

图9 管理员实体和属性

2.用户的属性

用户实体有五个属性:账号(Bno)、用户名(Bname)、性别(Bsex)、地址(Bsaddress)、密码(Bpw)。账号作为主码,不可重复,用于确定用户,账号与密码用于该用户的登录操作、地址用于确定其购买的书籍发往何处,用户名、性别为用户基本信息,也可以不填性别(保密)。

图10 用户实体和属性

3.图书的属性

图书有六个属性:编号(Bookno)、书名(Bookname)、类型(Booktype)、出版社(Press)、价格(BPrice)、库存(Binventory)。编号作为主码,书名、类型、出版社方便用户查找自己需要的书、库存:当用户买走书时库存减少,当库存为0,用户不能购买该书,需要管理员进货,价格为书本的基本信息。

图11 图书实体和属性

4.订单的属性

订单有五个属性:用户名/购买者姓名(Bname),书名(Bookname),目的地址(Bsaddress),数量(Quantity),订单号(Ono)。其中订单号为主码,用户名和书名来自购买者提供的信息,目的地址和数量有用户(购买者)按需修改。

图12 订单实体和属性

  • 联系分析

根据需求分析,各个实体之间有以下联系:

1.管理员与图书

一个管理员可以更新多本图书,一本图书的信息可以被多个管理员修改,多对多。

2.管理员与其他管理员

一个旧的管理员可以增加多个新管理员、更改多个管理员的信息,多对多。

3.用户与图书

一个用户可以购买多种图书,一种图书可以由多个用户购买,购买时需要选择购买数量,多对多。

4.用户与订单

一个用户可以修改自己的多个订单,一个订单只能由创建它的一个用户修改,一对多。

5.图书、用户和订单

一个用户和他购买的多本图书可以产生多个订单,一个订单可以由多个图书和一个用户产生。

E-R图

根据前面的实体属性图和联系分析画出整个系统的E-R图,具体的E-R图如图13。各实体的属性分别如下:

图书:{编号,书名,类型,出版社,价格,库存}

管理员:{工号,姓名,性别,密码}

用户:{账号,用户名,性别,地址,密码}

订单:{目的地址,书名,订单号,数量,用户名}

图13 网上书店管理系统E-R图

关系模型

将E-R图中9个实体和联系转换为以下关系模型,该关系模型由5个关系模式组成:

图书:(编号,书名,类型,出版社,价格,库存)

管理员:(工号,姓名,性别,密码)

用户:(账号,用户名,性别,地址,密码)

订单:(订单号,目的地址,书名,编号,数量,账号

购买:(账号编号,数量)

  • 概念模型分析(.CDM图)

根据E-R图画出cdm图:

图14 网上书店管理系统.cdm图

  • 数据库逻辑结构设计
  • 概念模型转化为逻辑模型

在PowerDesogner菜单栏-工具中选择创建pdm和ldm图。

一对多关系的转化:

       一个用户修改多个订单,一个订单只能由一个用户修改;

多对多关系的转化:

       一个用户可以购买多种图书,一种图书可以被多个用户购买;

       一个管理员更新多种图书,一种图书由多个管理员管理;

       一个管理员管理其他多个管理员,一个管理员可以被多个管理员管理;

    一个用户和一本书可以产生多个订单,一个订单可以由一个用户和多本图书产生。

(二) 逻辑模型设计(.LDM图)

图15 网上书店管理系统.pdm图

图16 网上书店管理系统.ldm图

四、数据库物理实现

(一)表设计

图书表

列名

数据类型

允许Null值

说明

Bookno

char(100)

Unchecked

书籍编号

Bookname

char(20)

Unchecked

书名

Booktype

char(30)

Unchecked

类型

Binventory

smallint

Unchecked

库存

BPrice

float

Unchecked

价格

Press

varchar(10)

Unchecked

出版社

订单表

列名

数据类型

允许Null值

说明

Bname

Char(20)

Unchecked

用户名

Bookname

Char(20)

Unchecked

书名

Bsaddress

Char(30)

Unchecked

地址

Quantity

bigint

Unchecked

数量

Ono

Char(20)

Unchecked

订单号

Bno

Char(20)

Unchecked

用户账号

管理员表

列名

数据类型

允许Null值

说明

Sno

Char(20)

Unchecked

管理员工号

Spw

Char(20)

Unchecked

管理员密码

Sname

Char(20)

Unchecked

管理员名字

Ssex

Char(2)

checked

管理员性别

用户表

列名

数据类型

允许Null值

说明

Bno

Char(20)

Unchecked

用户账号

Bpw

Char(30)

Unchecked

用户密码

Bname

Char(20)

Unchecked

用户名字

Bsex

Char(2)

checked

用户性别

Bsaddress

Char(30)

Unchecked

用户地址

(二)创建表和完整性约束代码设计

创建图书表:

/*==============================================================*//* Table: Book                                                  *//*==============================================================*/create table Book (Bookno               char(100)            not null,Bookname             char(20)             not null,Booktype             char(30)             not null,Binventory           smallint             not null,BPrice               float                not null,Press                varchar(10)          not null,constraint PK_BOOK primary key nonclustered (Bookno))go

创建订单表:

/*==============================================================*//* Table: BookOrder                                             *//*==============================================================*/create table BookOrder (Bname                char(20)             not null,Bookname             char(20)             not null,Bsaddress            char(30)             not null,Quantity             bigint               not null,Ono                  char(20)             not null,Bno                  char(20)             not null,constraint PK_BOOKORDER primary key nonclustered (Ono))go

创建管理员表:

/*==============================================================*//* Table: Su                                                    *//*==============================================================*/create table Su (Sno                  char(20)             not null,Spw                  char(20)             not null,Sname                char(20)             not null,Ssex                 char(2)              null,constraint PK_SU primary key nonclustered (Sno))go

创建用户表:

/*==============================================================*//* Table: Buyers                                                *//*==============================================================*/create table Buyers (Bno                  char(20)             not null,Bpw                  char(10)             not null,Bname                char(20)             not null,Bsex                 char(2)              null,Bsaddress            char(30)             not null,constraint PK_BUYERS primary key nonclustered (Bno))go

添加外键:

alter table BookOrderadd constraint FK_BOOKORDE_修改_BUYERS foreign key (Bno)references Buyers (Bno)goalter table 产生add constraint FK_产生_产生_BOOK foreign key (Bookno)references Book (Bookno)goalter table 产生add constraint FK_产生_产生2_BOOKORDE foreign key (Ono)references BookOrder (Ono)goalter table 产生add constraint FK_产生_产生3_BUYERS foreign key (Bno)references Buyers (Bno)goalter table 更新add constraint FK_更新_更新_SU foreign key (Sno)references Su (Sno)goalter table 更新add constraint FK_更新_更新2_BOOK foreign key (Bookno)references Book (Bookno)goalter table 管理add constraint FK_管理_管理_SU foreign key (Sno)references Su (Sno)goalter table 管理add constraint FK_管理_管理2_SU foreign key (Su_Sno)references Su (Sno)goalter table 购买add constraint FK_购买_购买_BOOK foreign key (Bookno)references Book (Bookno)goalter table 购买add constraint FK_购买_购买2_BUYERS foreign key (Bno)references Buyers (Bno)go

五、数据库功能调试

(一)页面设计展示

管理员首页设计:

    管理员首页有图书管理和管理员管理功能,分别用于图书的增删查改和管理员的增删查改。

用户首页设计

    用户首页包括图书、订单管理、个人管理三个功能选项,其中图书用于用户查看所有图书,订单功能包括用户订单的增删查改,个人管理用于修改用户自身的信息,如姓名、密码、地址等。

登录页面设计

    登录界面有用户和管理员两个选项,其中工号(账号)作为主键区分管理员(用户)、输入密码时可以隐藏。

增加测试

    原表:

增加一行:

(二)系统运行的软件环境

在电脑硬件环境的支持下,系统运行的时候还需要软件的支持,由于本系统是基于Windows平台开发,所以运行的硬件环境需要还需要安装有Windows的操作系统,其中运用SQL Server数据库存放数据,主界面使用Dreamweaver设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WEB:Confusion1

背景知识 SSTI漏洞 题目 根据网站图片和题目描述的提示,大象是php,蟒蛇是python,说明了这个网站是用python写的 在python中,比较常规的漏洞就是SSTI模板注入 没有思路,先点login和register页面看看 查看源代码 之前…

读论文---On Distillation of Guided Diffusion Models

该论文解决的问题 1 简要描述 2 在之前的工作中存在下述问题 计算过程需要计算: 1 unconditional的unet 2 conditional(w text)的unet 下图展示了计算过程 对应的代码 pipelines-> stable_diffusion-> pipline_stable_diffusion.py-> StableDiffusionPipeling-> 7…

C#在工业自动化领域的应用前景如何?

在2021年,C#与工业自动化已经开始结合,并且这种趋势有望在未来继续发展。C#是一种功能强大的编程语言,其面向对象的特性、跨平台支持以及丰富的类库和工具,使其成为在工业自动化领域应用的有力工具。 我这里刚好有嵌入式、单片机…

微服务系列文章 之 nginx日志格式分析以及修改

如何自定义日志格式,就需要修改nginx日志打印格式 一. 打开终端,登录服务器并输入服务器密码 //ssh 用户名服务器ip ssh root192.168.0.132二. 切换到nginx目录 cd /var/log/nginx/ 三. 查看nginx日志 tail -f access.log 日志说明: //…

Servlet的监听器

Servlet常用的监听器 ServletContextAttributeListener 用来感知ServlerContext对象属性变化,比如添加或删除属性变化 ServletContextListener 用来感知ServlerContext对象的创建和销毁的 ServletRequestListener 可以用来监听感知ServletRequest对象的创建和销毁的…

OLED拼接屏采购指南:如何选择最佳方案?

OLED拼接屏作为一种创新的大屏幕显示设备,正在成为各行各业信息展示和传播的重要工具。 然而,面对市场上众多的品牌和型号,如何选择最佳的OLED拼接屏方案成为一项关键任务。 本文将为您提供一份全面且实用的OLED拼接屏采购指南,…

.NET Native AOT的静态库与动态库

.NET不仅可以使用 C静态库与动态库,也可以将.NET实现的函数导出为C静态库与动态库。在没有Native Aot之前,.NET只能通过P/Invoke享受C/C生态,而在Native Aot之后,不仅可以享受这些生态,还可以开发SDK供其他语言调用。 …

WAIC2023会后记

听了3天WAIC的会, 大开眼界,算是上了堂大课。 本次参会的目的是听听AI企业信息化的想法、理论和实践。以进一步探索可能的业务场景。三天的会结束后,留下深刻印象的有如下几点。 大模型当道 2023这次大会的主题成了大模型,谈的…

基于单片机电子密码锁射频卡识别指纹门禁密码锁系统的设计与实现

功能介绍 通过指纹进行开锁或者是按键输入当前的密码,修改密码,对IC卡可以进行注册,删除。当有RFID卡进入到读卡器的读卡范围内时,则会自动读取卡序列号,单片机根据卡的序列号对卡进行判断。若该卡是有效卡&#xff0c…

RabbitMQ安装

这里写目录标题 简介下载ELANG安装ELang配置环境变量安装RabbitMQ 简介 RabbitMQ 是一个开源的遵循 AMQP 协议实现的基于 Erlang语言编写,**即需要先安装部署Erlang环境再安装RabbitMQ环境。**需加注意的是,读者若不想跟着我的版本号下载安装&#xff0…

MacBook Java开发环境搭建记录

一、Homebrew的镜像设置 对于Java JDK的安装,我们更推荐使用Homebrew来进行安装管理。但Homebrew的curl国外源的下载速度实在是一言难尽,时常还会发生无法访问的情况。 那么我们此时的解决方法就有两种了,第一种便是使用全局的VPN代理进行下载…

让你不再疑惑加水印用什么软件

每个人都有自己的独特创意和作品,而在现今互联网时代,分享和传播作品已成为一种普遍现象。然而,随着互联网的发展,越来越多的作品被人恶意盗用和复制,使得原创作者的权益受到了侵害。为了保护自己的作品,加…

【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用

从零开始封装自己的starter并且引入到其他项目中使用 简介 本文将介绍如何从零开始封装自己的starter并且引入到其他项目中使用 为什么要自己封装starter? 这样可以对spring以及其他第三方提供的starter做二次封装或者封装一些自己需要的内容提供给其他项目使用&…

MySQL五种约束类型(普通 /自增主键,外键等) + 进阶查询(聚合查询,内 /外连接查询,自连接查询,子查询,合并查询)

文章目录 前言一、五种约束NOT NULL 约束UNIQUE 约束DEFAULT 约束PRIMARY KEY 主键约束(重点)普通主键自增主键 FOREIGN KEY 外键约束(重点) 二、进阶查询聚合查询聚合函数GROUP BY子句HAVING 联合查询笛卡尔积内连接外连接自连接子查询单行子查询:返回一行记录的子…

乔云监控tf卡格式化后数据恢复方法

您有没有使用过乔云牌监控设备呢?它通常里面会放置一个TF卡以存储录像,而TF卡长期高温高速运行,容易产生碎片,因此很多商家会建议大家一个月进行一次格式化。但是格式化后您有没有后悔过呢?在这个篇文章中,…

【Python】类型注解 ③ ( 使用 # type: 类型 注释方式设置类型注解 | 类型注解是提示性而非强制性 )

文章目录 一、使用 注释语法 设置 类型注解1、使用 注释语法 设置 类型注解语法介绍2、为 基础类型变量 设置 " 类型注解 "3、为 类 的 对象类型 设置 " 类型注解 "4、为 基础容器类型变量 设置 简易 " 类型注解 "5、为 基础容器类型变量 设置 详…

基于深度学习的高精度工人安全帽检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度工人安全帽检测识别系统可用于日常生活中或野外来检测与定位工人安全帽目标,利用深度学习算法可实现图片、视频、摄像头等方式的工人安全帽目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用…

Windows与Linux取证分析

目录 一、电子数据取证基本概念 1.电子取证学 2.常规取证 3.洛卡德物质交换原理 4.电子数据范围 5.电子数据取证的概念和目的 6.电子数据取证过程 二、Linux系统取证 1.基本信息获取 (1)获取系统基础信息 (2)用户/用户…

共筑开源新长城 龙蜥社区走进开放原子校源行-清华大学站

6 月 28 日,以“聚缘于校,开源共行”为主题的 2023 年开放原子校源行活动在清华大学成功举行。本次活动由开放原子开源基金会和清华大学共同主办,来自各行业的 22 位大咖共聚校园共话开源。龙蜥社区技术专家边子政受邀进行技术分享&#xff0…

UWB天线设计之一种优化扁平超宽带单极的新方法

文章亮点 一种新颖的方法提出了扁平超宽带单极天线。 通过应用收缩,可以设计具有相同性能的更小的天线作为平面单极天线。 优化结果表明该方法能够设计非常小的天线。 在这项研究中,提出了一种优化扁平超宽带单极天线的新方法。在该方法中,一般性地描述了天线的形状。这种一…