网上购物订单数据库系统Word文档下载推荐.docx

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

网上购物订单数据库系统Word文档下载推荐.docx

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

网上购物订单数据库系统Word文档下载推荐.docx

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

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

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

所谓静态信息是指那些经常变动或更新的资源,如公司简介、管理规范和公司制度等等;

动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。

网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或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 

有关编码的说明:

数据项名称:

会员编号 

XXXX 

简 

介:

本商城会员编号 

会员类别 

编号

类 

型:

电器

实 

例:

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系统功能模块结构图

会员实体图

会员注册时间

会员ID

会员名

会员

注册时间

会员密码

联系方式

图3-3 

商品实体图

单价

厂商

条形码

商品名

商品

上传时间

数量

物品类型

图片地址

图3-4 

3.5系统E-R图

3.5.1分E-R图

3.5.2总E-R图

图3-5系统E-R图

管理员后台处理流程图

订单处理

图3-6管理员后台处理流程图

四、逻辑模型设计

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

管理员(管理员编号、用户名、密码)

会 

员(ID、昵称、密码、姓名、地址、E-mail、QQ、联系方式)

购物车(编号、用户名、商品名、数量、总价格、创建时间)

订 

单(订单号、创建时间、用户名、姓名、地址、联系方式、商品名、商品编号、数量、总价、单价)

商 

品(商品编号、商品名、单价、厂商、生产日期、商品介绍)

4.2各个数据库表设计如下:

表1 

用户信息表

数据项编号

数据项名称

别名

简述

字段名

类型

取值范围

I1

用户编号

用户ID

用户代号

User

Char

4-20

I2

注册日期

日期

Rtime

Date

I3

用户名

用户昵称

Uname

I4

用户密码

密码

用户登陆密码

passwd

6-18

I5

用户地址

地址

address

I6

用户姓名

真实姓名

Rname

4-10

I7

用户QQ

QQ

5-15

I8

E-mail

邮箱

mail

表2 

商品信息表

商品编号

Isbn

上架时间

Upload_time

品名

名称

Shopname

From

价格

商品单价

Price

Int

库存数量

库存

库存量

Storecount

商品简介

简介

Content

表3 

购物车信息表

订单编号

订单号

订单代号

OrderId

订单日期

下订单时间

Stime

用户编码

购买者代号

UserId

昵称

购买者用户名

送货地址

收货人姓名

商品编码

商品代码

商品名称

I9

商品数量

商品数

购买数量

count

0-9999

I10

商品价格

购买商品价格

price

I11

交易状态

状态

商品交易状态

Condition

其中交易状态中设定:

------- 

等待付款 

已付款等待发货

已发货等待签收

交易完成

交易关闭

4.3关系模式的优化

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

五、物理设计

5.1聚簇设计

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

OderId(订单编号)

Isbn(商品编号)

User(用户编号)

Uname(用户名)

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

5.2索引设计

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

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

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

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

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

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

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

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,

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);

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.*;

class 

Loading

{

privateJFrameLoading_Frame;

privateJButtonLoading_Button;

privateJTextFieldLoading_Name;

privateJButtonLoading_Cancel;

privateJPasswordFieldLoading_Key;

privateJLabelLoading_lb1;

privateJLabelLoading_lb2;

//privateJDialogLoading_dia;

/* 

publicstatic 

Resultdosqlserch(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"

数据库账户表中已有的帐户"

+x);

该帐户的密码是"

+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);

Loadin

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

当前位置:首页 > 解决方案 > 其它

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

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