网上购物订单数据库系统.docx
《网上购物订单数据库系统.docx》由会员分享,可在线阅读,更多相关《网上购物订单数据库系统.docx(22页珍藏版)》请在冰豆网上搜索。
网上购物订单数据库系统
网上购物订单数据库系统
班级:
xxxxx
姓名:
xxxxx
一、概述........................................................................................................................2
1.1开发背景.........................................................................................................2
二、需求分析................................................................................................................3
2.1框架分析.........................................................................................................3
2.2功能需求.........................................................................................................3
2.3系统功能清单.................................................................................................4
2.4数据流图.........................................................................................................4
2.5数据字典.........................................................................................................5
2.5.1数据流的描述......................................................................................5
2.5.2处理逻辑的描述..................................................................................5
三、概念模型设计......................................................................................................5
3.1系统模块划分.................................................................................................5
3.2系统功能模块结构图.....................................................................................6
3.3
3.4
会员实体图...................................................................................................7
商品实体图...................................................................................................7
3.5系统E-R图.....................................................................................................8
3.6
管理员后台处理流程图.............................................................................10
四、逻辑模型设计......................................................................................................10
4.1E-R图向关系模型转化……………………………………………………10
4.2
4.3
数据库表设计……………………………………………………………10
关系模式优化……………………………………………………………12
五、物理设
计……………………………………………………………………………………12
6、数据库实施……………………………………………………………………14
7、不足与体会……………………………………………………………………23
1
一、概述
1.1开发背景
随着网络技术的日益成熟,网络购物已经成为引领潮流的购物方式,尤其是在一些出门购物并不是十分便利的地区,网上购物的优势更是体现的淋漓尽致。
与此同时,网上购物也给商家带来了巨大的利润,因为免除了一些不必要的费用,在收益的获得上也显得更为直接,例如在今年的“光棍节”期间,淘宝的成交额将近200亿,可见,网上购物已成为主流。
因而一个好的订单数据库管理系统成为了必要,在管理好用户数据的同时,也提高了订单处理的效率。
网上购物系统的主要内容是,一方面让销售商把商品发布于网络,一方面让消费者通过网络来完成商品的交易。
系统总体分成前台和后台两大模块,前台是用户模块,后台是管理员模块。
实现的功能,首先系统向用户列出网站的商品信息。
其次当顾客登录网上购物系统后,为每个用户分配一个购物车,用户选择商品后,商品会被放入购物车。
再次,用户确认购物车信息,点击提交生成订单。
最后,管理员对订单进行处理,即完成一次商品交易。
网上购物是一种具有交互功能的商业信息系统。
它向用户提供静态和动态两类信息资源。
所谓静态信息是指那些经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。
网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。
这种全新的交易防护四实现了公司将文档与资金的无纸化交换。
2
二、需求分析
2.1需求框架分析
在我们的订单数据库系统中,采用了三层架构设计模式。
三层架构是基于模块化程序设计的思想,为实现分解应用程序的需求,而逐渐形成的一种标准模式的模块划分方法。
此模型将应用程序划分为:
用户界面层、业务逻辑层、数据访问层三个层次。
1、用户界面层:
负责处理用户的输入和向用户输出,但并不负责解释其含义。
有时候出于对效率的考虑,这一层可能会在向上传输用户输入之前进行合法性验证。
2、业务逻辑层:
这一层是用户界面层与数据访问层的纽带,它根据用户界面层传来的数据进行相应的业务逻辑操作并把结果返回给前端界面显示。
3、数据访问层:
负责实际的数据存储和检索,它建立实际的数据库连接,根据用户的请求执行检索或更新数据库操作。
2.2功能需求
订单数据库系统共有5个页面,基本流程为:
1、会员通过“会员登录页面”登录成功后进入“购物列表界面”。
2、会员在此可以选购;
3、选购完毕后进入“购物车清单页面”,查看购物信息。
此处可修改信息。
4、确认购物车信息后进入“订单信息页面”,会员填写详细信息并提交订单。
5、订单成功提交后进入“订单详情页面”,至此购物流程结束。
3
2.3系统功能清单
前台模块功能
后台模块功能
商品信息展示会员注册
会员登陆
会员信息修改购物车管理
订单管理
商品管理
会员管理
系统管理
表2-1系统功能清单
2.4数据流图
图2-1
数据流图
4
2.5数据字典
2.5.1数据流的描述
(1)会员编号数据项定义
表2-2会员编号数据项定义
数据项编号:
201101
有关编码的说明:
数据项名称:
会员编号XXXXX
简
类
实
介:
本商城会员编号型:
电器
例:
A0001
会员类别编号
2.5.2处理逻辑的描述
(1)判断是否已结算
表2-4判断是否已结算
处理逻辑编号:
P003
处理逻辑名称:
判断是否已结算
简
述:
判断是否已结算
输入的数据流:
会员名、商品条形码、总额
处理描述:
根据会员名和商品条形码、总额,将对应的书籍交易状态更改为已付款等待发货
输出的数据流:
D003
处理频率:
100次/天
三、概念模型设计
5
3.1系统模块划分
1、连接数据库模块:
使用JDBC访问ORACLE数据库,实现对数据库的操作2、购物车及后台处理模块:
会员将购买的商品加入购物车后,将数据插入数据
库保存,以便后台管理员确定信息和发货以及会员查看记录
3、验证登陆模块:
根据输入的用户名和密码验证是否正确
4、商品展示模块:
通过访问数据库展示商品信息
5、商品详细信息模块:
显示商品的详细信息
3.1.2后台模块详细功能描述:
(1)管理员信息管理:
登录;添加新管理员、删除管理员:
修改密码;管理员日志(记录管理员的每个操作,由超级管理员进行查询)。
(2)商品信息管理:
添加、删除商品类别;添加、修改、删除商品信息。
(3)用户信息管理:
查询用户信息、修改账户金额。
(4)订单管理:
管理订单是否确认,是否发货,是否付款,是否归档。
并且对相应信息进行查询(支持多参数查询)。
3.2系统功能模块结构图
6
图3-2系统功能模块结构图
3.3
会员实体图
会员ID
会员名
会员密码
会员注册
时间
注册时间
联系方式
图3-3
会员实体图
3.4
商品实体图
7
单价
条形码
商品名
数量
厂商
上传时间
物品类型
图片地址
图3-4
商品实体图
3.5系统E-R图3.5.1分E-R图
8
9
3.5.2总E-R图
图3-5系统E-R图
10
3.6
管理员后台处理流程图
判断是否为管理员
是
否
图3-6管理员后台处理流程图
四、逻辑模型设计
4.1E-R图向关系模型转化
管理员(管理员编号、用户名、密码)
会
员(ID、昵称、密码、姓名、地址、E-mail、QQ、联系方式)
购物车(编号、用户名、商品名、数量、总价格、创建时间)
订
商
单(订单号、创建时间、用户名、姓名、地址、联系方式、商品名、商品编号、数量、总价、单价)
品(商品编号、商品名、单价、厂商、生产日期、商品介绍)
4.2各个数据库表设计如下:
表1
用户信息表
数据项编号
数据项名
称
别名
简述
字段名
类型
取值范
围
I1
用户编号
用户ID
用户代号
User
Char
4-20
I2
注册日期
日期
注册时间
Rtime
Date
I3
用户名
用户昵称
用户昵称
Uname
Char
4-20
11
I4
用户密码
密码
用户登陆密码
passwd
Char
6-18
I5
用户地址
地址
用户地址
address
Char
I6
用户姓名
真实姓名
用户姓名
Rname
Char
4-10
I7
用户QQ
QQ
联系方式
QQ
Char
5-15
I8
E-mail
邮箱
联系方式
mail
Char
表2
商品信息表
数据项编号
数据项名称
别名
简述
字段名
类型
取值范
围
I1
商品编号
条形码
Isbn
Isbn
Char
I2
上传时间
日期
上架时间
Upload_
time
Date
I3
商品名
品名
名称
Shopnam
e
Char
I4
厂商
厂商
厂商
From
Char
I5
单价
价格
商品单价
Price
Int
I6
库存数量
库存
库存量
Storeco
unt
Int
I7
商品简介
简介
简介
Content
Char
表3
购物车信息表
数据项编号
数据项名
称
别名
简述
字段名
类型
取值
范围
I1
订单编号
订单号
订单代号
OrderId
Char
I2
订单日期
日期
下订单时间
Stime
Date
I3
用户编号
用户编
码
购买者代号
UserId
Char
I4
用户名
昵称
购买者用户名
Uname
Char
I5
用户地址
地址
送货地址
address
Char
I6
用户姓名
真实姓
名
收货人姓名
Rname
Char
I7
商品编号
商品编
码
商品代码
Isbn
Char
I8
商品名称
商品名
商品名称
Shopnam
Char
12
e
I9
商品数量
商品数
购买数量
count
Int
0-
9999
I10
商品价格
价格
购买商品价格
price
Int
0-
9999
I11
交易状态
状态
商品交易状态
Conditi
on
Int
其中交易状态中设定:
0-------等待付款
1-------已付款等待发货
2-------已发货等待签收
3-------交易完成
4-------交易关闭
4.3关系模式的优化
对关系模式进行规范化处理,对关系模式进行评价与修正。
五、物理设计
5.1聚簇设计
该订单管理系统可建立以下聚簇:
OderId(订单编号)
Isbn(商品编号)
User(用户编号)
Uname(用户名)
这几个聚簇设计是因为这几张表都是实体表,且聚簇中的属性都是主键或是外键,被访问的概率很高,而其他表或者这些表上的其他属性被访问的概率就相对较低。
5.2索引设计
索引就是表中数据和相应存储位置的列表,使用索引可以大大减少数据的查询时间。
对于一个确定的关系,通常在下列情况下可以考虑建立索引。
13
(1)在主键属性列和外键属性列上通常都可以分别建立索引,不仅有助于唯一性检查和完整性检查,而且可以加快连接查询的速度。
(2)以查询为主的关系可建立尽可能多的索引。
(3)对等值连接,但满足条件的元组较少的查询可以考虑建立索引。
(4)如果查询可以从索引直接得到结果而不必访问关系,则对此种查询可以建立索引。
该数据库管理系统可建立以下索引:
OderId(订单编号)
Isbn(商品编号)
User(用户编号)
Uname(用户名)
Shopname(商品名)
Rname(用户姓名)
5.3分区设计与否
涉及到数据库文件和日志文件的分区问题。
磁盘分区设计的一般原则:
(1)减少访问冲突,提高I/O并发性。
多个事物并发访问同一磁盘时,会产生磁盘访问冲突而导致效率低下,如果事务访问数据均能分布于不同磁盘上,则I/O可并发执行,从而提高数据库访问速度。
(2)分散热点数据,均衡I/O负担。
在数据库中数据访问的频率是不均匀的,那些经常被访问的数据成为热点数据,此类数据宜分散存在于不同的磁盘上,以均衡各个磁盘的负荷,充分发挥多磁盘的并行操作的优势。
(3)保证关键数据快速访问,缓解系统瓶颈。
在数据库中有些数据如数据字典等的访问频率很高,为保证对它的访问不直接影响整个系统的效率,可以将其存放在某一固定磁盘上,以保证其快速访问。
由以上原则可知,只有在管理程序较大且有大量用户同时访问时才需要进行分区设计,因此,本管理系统不需要进行分区设计。
14
六、数据库实施6.1基本表的建立1、用户信息表
createtableyh
(
UserIDchar(20),Rtimedate,
Unamechar(20),Rnamechar(10),passwdchar(18),addresschar(50),QQchar(15),emailchar(50),PRIMARYkey(UserID)
);
2、商品信息表Createtablesp
(
Isbnchar(50),Uploadtimedate,Shopnamechar(30),Fromechar(50),Priceint,
Storecountint,Contentchar(50),Primarykey(Isbn));
15
3、订单信息表
Createtablegw
(
OrderIdChar(50),
Stimedate,
UserIDChar(20),
UnameChar(20),
addressChar(50),
RnameChar(10),
IsbnChar(50),
ShopnameChar(30),
Countint,
Priceint,
Conditionint,
Primarykey(OrderId),
Foreignkey(UserID)referencesyh(UserID),Foreignkey(Isbn)referencessp(Isbn)
);
6.2建立视图
Createviewgw_用户
As
Select
gw.UserID,gw.Uname,gw.Rname,yh.email,gw.address,sp.Isbn,sp.Shopname,sp.Price
Fromgw,yh,sp
16
Wheregw.UserID=yh.UserIDandgw.Uname=yh.Unameandgw.Rname=yh.Rname
andgw.address=yh.addressandgw.Isbn=sp.Isbnandgw.Shopname=sp.Shopname
andgw.price=sp.price;
6.3建立索引
Createuniqueindexyonghuonyh(UserID);Createuniqueindexshangponsp(Isbn);
Createuniqueindexgouwu
ongw(OrderId);
6.4建立触发器
当删除sp中的某一商品时,gw中的相应商品也应删除createtriggerdel_商品
ONgw
fordelete
as
deleteIsbn
wheresp.Isbn=(selectIsbnfromdeleted)6.5建立java程序与数据库的关联
Java源码:
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjava.sql.*;
classLoading
17
{
privateJFrameLoading_Frame;
privateJButtonLoading_Button;
privateJTextFieldLoading_Name;
privateJButtonLoading_Cancel;
privateJPasswordFieldLoading_Key;
privateJLabelLoading_lb1;
privateJLabelLoading_lb2;
//privateJDialogLoading_dia;
/*publicstaticResultdosqlserch(Strings)
{
/*rs.next();//指向第一个数据
//可以操作,,rs.getString(字段名)来获得属性;
先关闭rs.close();
依次是st.close();
最后是conn.close();*/
/*publicstaticvoidcloseConnection()//看来不能这样风装啊;;;;;
18
{
rr.close();
ss.close();
con.close;
}*/
Loading()
{
inttextWidth=16;
intlength;
Loading_Frame=newJFrame("Loading~~~!
!
!
!
!
!
");
Loading_Frame.setResizable(false);
Loading_Button=newJButton("sure");
Loading_Button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
intflag=0;
Stringname=Loading_Name.getText();
Stringkey1=Loading_Key.getText();
//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//打开jdbc驱动
Stringurl=
"jdbc:
sqlserver:
//localhost:
1433;databaseName=dd;";
Stringuser="la";
Stringkey="123";
19
Connectioncon;
Statementst;
ResultSetrs;
Booleanflag1;
Booleanflag2;
try{
con=DriverManager.getConnection(url,user,key);//获取连接对象
st=con.createStatement();//
rs=st.executeQuery("select*fromyh");//rs即sql查询后得到的结果;rs此时游标指向为空,
System.out.println("在账户输入框中您输入的是:
"+name);//输出TextField中输入的数