目录
一、系统需求分析
1.系统背景
当今互联网的迅速发展,使得人们获取信息变得极其便利。在从前,人们以线下书店购买书籍的方式获取知识,常常因时间或空间的限制受到不同程度的信息闭塞。如今电子书越来越流行,网上书店更能打开信息交流的窗口,为读者节省时间,因此,一个网上书店管理系统十分必要。
2.需求分析
本系统旨在管理书店书籍信息,并为管理员和用户提供设计。
根据书店的需求:书店对于书籍有进货、销售两种操作。图书应包含:编号、书名、作者、出版社、版本、定价、库存等信息便于用户和管理员查找、操作。
本系统的使用者有以下两类:1.用户2.管理员,其中用户查看前台,管理员管理后台。二者需求如下:
(1)用户
注册后填写详细信息:
用户名(Bname)、性别(Bsex)、地址(Bsaddress)、ID(Bno)、密码(Bpw)。
用户操作:
查看图书详细信息、购买图书、管理个人信息;
(2)管理员
非初始管理员由初始管理员添加:
工号(Sno)、密码(Spw)、姓名(Sname)、性别(Ssex)。
管理员操作:
增加图书信息、删除图书信息、查找图书、查看图书详细信息、更新图书信息(数量、书名、增加图书属性等),更改管理员。
3.系统功能图
图1 网上书店管理系统功能图
网上书店管理系统的业务主要有注册登录、用户购买图书、管理员操作图书三个业务构成,用户进入系统后点击操作,系统响应返还信息,如图2。
图2 业务流程图
以下为业务流详细分析:
注册登录流程:当用户或管理员使用本系统时,首先将在页面上选择登录身份(用户或管理员身份)之后登录,系统搜索用户信息库,产出用户信息单,若登录输入信息与表单相符,则进入系统;若表单为空则说明没有该用户,需要用户注册,注册时输入完整用户信息,之后便可进入系统。
图3 用户登录流程图
用户购买图书流程:用户通过对图书的查询后可创建订单进行图书的购买,此时管理员将查询该图书查看库存量是否足以售卖该书,若库存足够,则产生出库单,管理员依照出库单从书库中出库,并将订单确认单返还给用户,用户下单成功。
图4 用户购买图书流程图
- 管理员操作图书
管理员操作图书流程:管理员登录后进入管理员详细页面,其中有更新管理员操作和图书操作两种,进入图书操作后产生图书表单,管理员在表单中选择需要修改的图书或增加新书。
图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个关系模式组成:
图书:(编号,书名,类型,出版社,价格,库存)
管理员:(工号,姓名,性别,密码)
用户:(账号,用户名,性别,地址,密码)
订单:(订单号,目的地址,书名,编号,数量,账号)
购买:(账号,编号,数量)
根据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 BookOrder
add constraint FK_BOOKORDE_修改_BUYERS foreign key (Bno)
references Buyers (Bno)
go
alter table 产生
add constraint FK_产生_产生_BOOK foreign key (Bookno)
references Book (Bookno)
go
alter table 产生
add constraint FK_产生_产生2_BOOKORDE foreign key (Ono)
references BookOrder (Ono)
go
alter table 产生
add constraint FK_产生_产生3_BUYERS foreign key (Bno)
references Buyers (Bno)
go
alter table 更新
add constraint FK_更新_更新_SU foreign key (Sno)
references Su (Sno)
go
alter table 更新
add constraint FK_更新_更新2_BOOK foreign key (Bookno)
references Book (Bookno)
go
alter table 管理
add constraint FK_管理_管理_SU foreign key (Sno)
references Su (Sno)
go
alter table 管理
add constraint FK_管理_管理2_SU foreign key (Su_Sno)
references Su (Sno)
go
alter table 购买
add constraint FK_购买_购买_BOOK foreign key (Bookno)
references Book (Bookno)
go
alter table 购买
add constraint FK_购买_购买2_BUYERS foreign key (Bno)
references Buyers (Bno)
go
五、数据库功能调试
管理员首页设计:
管理员首页有图书管理和管理员管理功能,分别用于图书的增删查改和管理员的增删查改。
用户首页设计
用户首页包括图书、订单管理、个人管理三个功能选项,其中图书用于用户查看所有图书,订单功能包括用户订单的增删查改,个人管理用于修改用户自身的信息,如姓名、密码、地址等。
登录页面设计
登录界面有用户和管理员两个选项,其中工号(账号)作为主键区分管理员(用户)、输入密码时可以隐藏。
增加测试
原表:
增加一行:
在电脑硬件环境的支持下,系统运行的时候还需要软件的支持,由于本系统是基于Windows平台开发,所以运行的硬件环境需要还需要安装有Windows的操作系统,其中运用SQL Server数据库存放数据,主界面使用Dreamweaver设计。