网上购物订单数据库系统.docx

上传人:b****6 文档编号:4383763 上传时间:2022-12-01 格式:DOCX 页数:23 大小:310.05KB
下载 相关 举报
网上购物订单数据库系统.docx_第1页
第1页 / 共23页
网上购物订单数据库系统.docx_第2页
第2页 / 共23页
网上购物订单数据库系统.docx_第3页
第3页 / 共23页
网上购物订单数据库系统.docx_第4页
第4页 / 共23页
网上购物订单数据库系统.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

网上购物订单数据库系统.docx

《网上购物订单数据库系统.docx》由会员分享,可在线阅读,更多相关《网上购物订单数据库系统.docx(23页珍藏版)》请在冰豆网上搜索。

网上购物订单数据库系统.docx

网上购物订单数据库系统

 

网上购物订单数据库系统

 

班级:

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会员实体图7

3.4商品实体图7

3.5系统E-R图8

3.6管理员后台处理流程图10

四、逻辑模型设计10

4.1E-R图向关系模型转化……………………………………………………10

4.2数据库表设计……………………………………………………………10

4.3关系模式优化……………………………………………………………12

五、物理设计……………………………………………………………………………………12

六、数据库实施……………………………………………………………………14

七、不足与体会……………………………………………………………………23

一、概述

1.1开发背景

随着网络技术的日益成熟,网络购物已经成为引领潮流的购物方式,尤其是在一些出门购物并不是十分便利的地区,网上购物的优势更是体现的淋漓尽致。

与此同时,网上购物也给商家带来了巨大的利润,因为免除了一些不必要的费用,在收益的获得上也显得更为直接,例如在今年的“光棍节”期间,淘宝的成交额将近200亿,可见,网上购物已成为主流。

因而一个好的订单数据库管理系统成为了必要,在管理好用户数据的同时,也提高了订单处理的效率。

网上购物系统的主要内容是,一方面让销售商把商品发布于网络,一方面让消费者通过网络来完成商品的交易。

系统总体分成前台和后台两大模块,前台是用户模块,后台是管理员模块。

实现的功能,首先系统向用户列出网站的商品信息。

其次当顾客登录网上购物系统后,为每个用户分配一个购物车,用户选择商品后,商品会被放入购物车。

再次,用户确认购物车信息,点击提交生成订单。

最后,管理员对订单进行处理,即完成一次商品交易。

网上购物是一种具有交互功能的商业信息系统。

它向用户提供静态和动态两类信息资源。

所谓静态信息是指那些经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。

网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。

这种全新的交易防护四实现了公司将文档与资金的无纸化交换。

 

二、需求分析

2.1需求框架分析

在我们的订单数据库系统中,采用了三层架构设计模式。

三层架构是基于模块化程序设计的思想,为实现分解应用程序的需求,而逐渐形成的一种标准模式的模块划分方法。

此模型将应用程序划分为:

用户界面层、业务逻辑层、数据访问层三个层次。

1、用户界面层:

负责处理用户的输入和向用户输出,但并不负责解释其含义。

有时候出于对效率的考虑,这一层可能会在向上传输用户输入之前进行合法性验证。

2、业务逻辑层:

这一层是用户界面层与数据访问层的纽带,它根据用户界面层传来的数据进行相应的业务逻辑操作并把结果返回给前端界面显示。

3、数据访问层:

负责实际的数据存储和检索,它建立实际的数据库连接,根据用户的请求执行检索或更新数据库操作。

 

2.2功能需求

订单数据库系统共有5个页面,基本流程为:

1、会员通过“会员登录页面”登录成功后进入“购物列表界面”。

2、会员在此可以选购;

3、选购完毕后进入“购物车清单页面”,查看购物信息。

此处可修改信息。

4、确认购物车信息后进入“订单信息页面”,会员填写详细信息并提交订单。

5、订单成功提交后进入“订单详情页面”,至此购物流程结束。

 

2.3系统功能清单

前台模块功能

后台模块功能

商品信息展示

会员注册

会员登陆

会员信息修改

购物车管理

订单管理

商品管理

会员管理

系统管理

表2-1系统功能清单

 

2.4数据流图

图2-1数据流图

 

2.5数据字典

2.5.1数据流的描述

(1)会员编号数据项定义

表2-2会员编号数据项定义

数据项定义

数据项编号:

201101有关编码的说明:

数据项名称:

会员编号XXXXX

简介:

本商城会员编号会员类别编号

类型:

电器

实例:

A0001

2.5.2处理逻辑的描述

(1)判断是否已结算

表2-4判断是否已结算

判断是否已结算

处理逻辑编号:

P003

处理逻辑名称:

判断是否已结算

简述:

判断是否已结算

输入的数据流:

会员名、商品条形码、总额

处理描述:

根据会员名和商品条形码、总额,将对应的书籍交易状态更改为已付款等待发货

输出的数据流:

D003

处理频率:

100次/天

三、概念模型设计

3.1系统模块划分

1、连接数据库模块:

使用JDBC访问ORACLE数据库,实现对数据库的操作

2、购物车及后台处理模块:

会员将购买的商品加入购物车后,将数据插入数据库保存,以便后台管理员确定信息和发货以及会员查看记录

3、验证登陆模块:

根据输入的用户名和密码验证是否正确

4、商品展示模块:

通过访问数据库展示商品信息

5、商品详细信息模块:

显示商品的详细信息

3.1.2后台模块详细功能描述:

(1)管理员信息管理:

登录;添加新管理员、删除管理员:

修改密码;管理员日志(记录管理员的每个操作,由超级管理员进行查询)。

(2)商品信息管理:

添加、删除商品类别;添加、修改、删除商品信息。

(3)用户信息管理:

查询用户信息、修改账户金额。

(4)订单管理:

管理订单是否确认,是否发货,是否付款,是否归档。

并且对相应信息进行查询(支持多参数查询)。

3.2系统功能模块结构图

 

图3-2系统功能模块结构图

3.3会员实体图

 

 

图3-3会员实体图

 

3.4商品实体图

 

图3-4商品实体图

 

3.5系统E-R图

3.5.1分E-R图

 

3.5.2总E-R图

图3-5系统E-R图

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

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

商品名

品名

名称

Shopname

Char

I4

厂商

厂商

厂商

From

Char

I5

单价

价格

商品单价

Price

Int

I6

库存数量

库存

库存量

Storecount

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

商品名称

商品名

商品名称

Shopname

Char

I9

商品数量

商品数

购买数量

count

Int

0-9999

I10

商品价格

价格

购买商品价格

price

Int

0-9999

I11

交易状态

状态

商品交易状态

Condition

Int

其中交易状态中设定:

0-------等待付款

1-------已付款等待发货

2-------已发货等待签收

3-------交易完成

4-------交易关闭

4.3关系模式的优化

对关系模式进行规范化处理,对关系模式进行评价与修正。

五、物理设计

5.1聚簇设计

该订单管理系统可建立以下聚簇:

OderId(订单编号)

Isbn(商品编号)

User(用户编号)

Uname(用户名)

这几个聚簇设计是因为这几张表都是实体表,且聚簇中的属性都是主键或是外键,被访问的概率很高,而其他表或者这些表上的其他属性被访问的概率就相对较低。

5.2索引设计

索引就是表中数据和相应存储位置的列表,使用索引可以大大减少数据的查询时间。

对于一个确定的关系,通常在下列情况下可以考虑建立索引。

(1)在主键属性列和外键属性列上通常都可以分别建立索引,不仅有助于唯一性检查和完整性检查,而且可以加快连接查询的速度。

(2)以查询为主的关系可建立尽可能多的索引。

(3)对等值连接,但满足条件的元组较少的查询可以考虑建立索引。

(4)如果查询可以从索引直接得到结果而不必访问关系,则对此种查询可以建立索引。

该数据库管理系统可建立以下索引:

OderId(订单编号)

Isbn(商品编号)

User(用户编号)

Uname(用户名)

Shopname(商品名)

Rname(用户姓名)

5.3分区设计与否

涉及到数据库文件和日志文件的分区问题。

磁盘分区设计的一般原则:

(1)减少访问冲突,提高I/O并发性。

多个事物并发访问同一磁盘时,会产生磁盘访问冲突而导致效率低下,如果事务访问数据均能分布于不同磁盘上,则I/O可并发执行,从而提高数据库访问速度。

(2)分散热点数据,均衡I/O负担。

在数据库中数据访问的频率是不均匀的,那些经常被访问的数据成为热点数据,此类数据宜分散存在于不同的磁盘上,以均衡各个磁盘的负荷,充分发挥多磁盘的并行操作的优势。

(3)保证关键数据快速访问,缓解系统瓶颈。

在数据库中有些数据如数据字典等的访问频率很高,为保证对它的访问不直接影响整个系统的效率,可以将其存放在某一固定磁盘上,以保证其快速访问。

由以上原则可知,只有在管理程序较大且有大量用户同时访问时才需要进行分区设计,因此,本管理系统不需要进行分区设计。

 

六、数据库实施

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)

);

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

Selectgw.UserID,gw.Uname,gw.Rname,yh.email,gw.address,sp.Isbn,sp.Shopname,sp.Price

Fromgw,yh,sp

Wheregw.UserID=yh.UserIDandgw.Uname=yh.Uname

andgw.Rname=yh.Rname

andgw.address=yh.addressandgw.Isbn=sp.Isbn

andgw.Shopname=sp.Shopname

andgw.price=sp.price;

6.3建立索引

Createuniqueindexyonghuonyh(UserID);

Createuniqueindexshangponsp(Isbn);

Createuniqueindexgouwuongw(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

{

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()//看来不能这样风装啊;;;;;

{

rs.close();

st.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";

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中输入的数

while(rs.next())

{

Stringx=rs.getString("userid");

Stringy=rs.getString("passwd");

System.out.println("数据库账户表中已有的帐户"+x);

System.out.println("该帐户的密码是"+y);

}

}catch(SQLExceptionf){System.out.println("catch出错");}

}});

 

Loading_Cancel=newJButton("Cancel");

//Loading_Cancel.addActionListener();

Loading_Name=newJTextField(textWidth);//长度50的账户名输入框,添加文档监视器,可以实现判断输入文本的正确,与文本框是否改变内容

//Loading_Name.getDocument().addDocumentListener();

Loading_Name.setEditable(true);

Loading_Key=newJPasswordField(textWidth);//密码输入框,与账户输入框同等长度;

Loading_lb1=newJLabel("账户");

Loading_lb2=newJLabel("密码");

//Loading_dia=newJDialog(Framex)//属于窗窗口的对话框;

 

ContainerLoading_c=Loading_Frame.getContentPane();

Loading_Frame.setSize(250,135);

Loading_Frame.setLayout(newFlowLayout());

 

//在登录窗口添加组件

Loading_c.add(Loading_lb1);

Loading_c.add(Loading_Name);

Loading_c.add(Loading_lb2);

Loading_c.add(Loading_Key);

Loading_c.add(Loading_Button);

Loading_c.add(Loading_Cancel);

 

Loading_Frame.setVisible(true);

 

}

 

publicstaticvoidmain(String[]args)

{

newLoading();

}

}

 

七、不足和心得体会

7.1系统设计的不足

1、在进行数据设计的时候,只考虑了几个最简单的数据输入,并不能很好地应用与实际应用当中

2、在使用过程中依旧会产生一些错误,比如缺乏一些用户交互界面造成的一些约束的错误

3、在整个系统的稳定性方面做的不足。

我不能保证在我的系统上如果再加上其他功能会不会导致系统崩溃,所以还需要不断地完善。

7.2我的心得

经过本次的实习,我发现在操作的过程中依旧存在着诸多的不足,在做很多内容的时候依旧还是要看看书,查找一些资料,从而可以看出,在一些基本的知识上还是存在着一些缺陷和不足。

此外,在逻辑结构上并没有考虑到与用户的交互问题,这也使得本系统的实用性大大折扣。

因此,在以后的学习生活当中,我会更为注意基础知识的巩固和初期在概念和逻辑结构设计上的合理性问题,总之,这次实习对我的学习成果不得不说是一次很好的检验,同时,是我受益良多。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1