《网上购物订单数据库系统(共24页).doc》由会员分享,可在线阅读,更多相关《网上购物订单数据库系统(共24页).doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上网上购物订单数据库系统班级:xxxxx姓名:xxxxx目录4.1 E-R图向关系模型转化104.2 数据库表设计104.3 关系模式优化12五、物理设计12六、数据库实施14七、不足与体会23一、概述1.1 开发背景随着网络技术的日益成熟,网络购物已经成为引领潮流的购物方式,尤其是在一些出门购物并不是十分便利的地区,网上购物的优势更是体现的淋漓尽致。与此同时,网上购物也给商家带来了巨大的利润,因为免除了一些不必要的费用,在收益的获得上也显得更为直接,例如在今年的“光棍节”期间,淘宝的成交额将近200亿,可见,网上购物已成为主流。因而一个好的订单数据库管理系统成为了必要
2、,在管理好用户数据的同时,也提高了订单处理的效率。 网上购物系统的主要内容是,一方面让销售商把商品发布于网络,一方面让消费者通过网络来完成商品的交易。系统总体分成前台和后台两大模块,前台是用户模块,后台是管理员模块。实现的功能,首先系统向用户列出网站的商品信息。其次当顾客登录网上购物系统后,为每个用户分配一个购物车,用户选择商品后,商品会被放入购物车。再次,用户确认购物车信息,点击提交生成订单。最后,管理员对订单进行处理,即完成一次商品交易。 网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些经常变动或更新的资源,如公司简介、管理规范和公司制度等
3、等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易防护四实现了公司将文档与资金的无纸化交换。二、需求分析2.1 需求框架分析在我们的订单数据库系统中,采用了三层架构设计模式。三层架构是基于模块化程序设计的思想,为实现分解应用程序的需求,而逐渐形成的一种标准模式的模块划分方法。此模型将应用程序划分为:用户界面层、业务逻辑层、数据访问层三个层次。1、用户界面层:负责处理用户的输入和向用户输出,但并不负责解释其含义。有时候出于对效率的考虑,这一层可能会在向上传输用户输入之前进行合法性
4、验证。2、业务逻辑层:这一层是用户界面层与数据访问层的纽带,它根据用户界面层传来的数据进行相应的业务逻辑操作并把结果返回给前端界面显示。3、数据访问层:负责实际的数据存储和检索,它建立实际的数据库连接,根据用户的请求执行检索或更新数据库操作。2.2 功能需求订单数据库系统共有5个页面,基本流程为:1、 会员通过“会员登录页面”登录成功后进入“购物列表界面”。2、 会员在此可以选购;3、 选购完毕后进入“购物车清单页面”,查看购物信息。此处可修改信息。4、 确认购物车信息后进入“订单信息页面”,会员填写详细信息并提交订 单。5、 订单成功提交后进入“订单详情页面”,至此购物流程结束。2.3 系统
5、功能清单前台模块功能后台模块功能商品信息展示 会员注册 会员登陆 会员信息修改 购物车管理 订单管理商品管理会员管理系统管理 表 2-1 系统功能清单2.4 数据流图 图 2-1 数据流图2.5 数据字典2.5.1 数据流的描述(1)会员编号数据项定义表2-2 会员编号数据项定义数据项定义数据项编号: 有关编码的说明:数据项名称:会员编号 X XX XX 简 介:本商城会员编号 会员类别 编号类 型:电器实 例:A0001 2.5.2 处理逻辑的描述(1)判断是否已结算表2-4 判断是否已结算判断是否已结算处理逻辑编号:P003 处理逻辑名称:判断是否已结算简 述:判断是否已结算输入的数据流:
6、会员名、商品条形码、总额处理描述:根据会员名和商品条形码、总额,将对应的书籍交易状态更改为已付款等待发货输出的数据流:D003处理频率:100次/天三、 概念模型设计3.1 系统模块划分1、连接数据库模块:使用JDBC访问ORACLE数据库,实现对数据库的操作2、购物车及后台处理模块:会员将购买的商品加入购物车后,将数据插入数据库保存,以便后台管理员确定信息和发货以及会员查看记录3、验证登陆模块:根据输入的用户名和密码验证是否正确4、商品展示模块:通过访问数据库展示商品信息5、商品详细信息模块:显示商品的详细信息3.1.2后台模块详细功能描述:(1)管理员信息管理:登录;添加新管理员、删除管理
7、员:修改密码;管理员日志(记录管理员的每个操作,由超级管理员进行查询)。(2)商品信息管理:添加、删除商品类别;添加、修改、删除商品信息。(3)用户信息管理:查询用户信息、修改账户金额。(4)订单管理:管理订单是否确认,是否发货,是否付款,是否归档。并且对相应信息进行查询(支持多参数查询)。3.2 系统功能模块结构图 图 3-2 系统功能模块结构图3.3 会员实体图会员注册时间会员ID会员名会员注册时间会员密码联系方式 图 3-3 会员实体图3.4 商品实体图单价厂商条形码商品名商品上传时间数量物品类型图片地址 图 3-4 商品实体图3.5 系统E-R图3.5.1分E-R图3.5.2总E-R图
8、图3-5 系统E-R图3.6 管理员后台处理流程图判断是否为管理员否查看会员信息修改商品修改信息删除会员删除商品添加商品查看订单用户登陆非法登陆是会员管理订单管理商品信息管理订单处理 图 3-6 管理员后台处理流程图四、逻辑模型设计4.1 E-R图向关系模型转化管理员(管理员编号、用户名、密码)会 员(ID、昵称、密码、姓名、地址、E-mail、QQ、联系方式)购物车(编号、用户名、商品名、数量、总价格、创建时间)订 单(订单号、创建时间、用户名、姓名、地址、联系方式、商品名、商品编号、数量、总价、单价)商 品(商品编号、商品名、单价、厂商、生产日期、商品介绍)4.2 各个数据库表设计如下:
9、表1 用户信息表数据项编号数据项名称别名简述字段名类型取值范围I1用户编号用户ID用户代号UserChar4-20I2注册日期日期注册时间RtimeDateI3用户名用户昵称用户昵称UnameChar4-20I4用户密码密码用户登陆密码passwdChar6-18I5用户地址地址用户地址addressCharI6用户姓名真实姓名用户姓名RnameChar4-10I7用户QQQQ联系方式QQChar5-15I8E-mail邮箱联系方式mailChar 表2 商品信息表数据项编号数据项名称别名简述字段名类型取值范围I1商品编号条形码IsbnIsbnCharI2上传时间日期上架时间Upload_ti
10、meDateI3商品名品名名称ShopnameCharI4厂商厂商厂商FromCharI5单价价格商品单价 PriceIntI6库存数量库存库存量StorecountIntI7商品简介简介简介ContentChar 表3 购物车信息表数据项编号数据项名称别名简述字段名类型取值范围I1订单编号订单号订单代号OrderIdCharI2订单日期日期下订单时间StimeDateI3用户编号用户编码购买者代号UserIdCharI4用户名昵称购买者用户名UnameCharI5用户地址地址送货地址addressCharI6用户姓名真实姓名收货人姓名RnameCharI7商品编号商品编码商品代码IsbnCh
11、arI8商品名称商品名商品名称ShopnameCharI9商品数量商品数购买数量countInt0-9999I10商品价格价格购买商品价格priceInt0-9999I11交易状态状态商品交易状态Condition Int其中交易状态中设定:0 - 等待付款 1 - 已付款等待发货2 - 已发货等待签收3 - 交易完成4 - 交易关闭4.3 关系模式的优化对关系模式进行规范化处理,对关系模式进行评价与修正。五、物理设计5.1聚簇设计 该订单管理系统可建立以下聚簇:OderId(订单编号)Isbn(商品编号)User(用户编号)Uname(用户名)这几个聚簇设计是因为这几张表都是实体表,且聚簇中
12、的属性都是主键或是外键,被访问的概率很高,而其他表或者这些表上的其他属性被访问的概率就相对较低。5.2索引设计索引就是表中数据和相应存储位置的列表,使用索引可以大大减少数据的查询时间。对于一个确定的关系,通常在下列情况下可以考虑建立索引。(1) 在主键属性列和外键属性列上通常都可以分别建立索引,不仅有助于唯一性检查和完整性检查,而且可以加快连接查询的速度。(2) 以查询为主的关系可建立尽可能多的索引。(3) 对等值连接,但满足条件的元组较少的查询可以考虑建立索引。(4) 如果查询可以从索引直接得到结果而不必访问关系,则对此种查询可以建立索引。该数据库管理系统可建立以下索引:OderId(订单编
13、号)Isbn(商品编号)User(用户编号)Uname(用户名) Shopname(商品名) Rname(用户姓名)5.3分区设计与否涉及到数据库文件和日志文件的分区问题。磁盘分区设计的一般原则:(1) 减少访问冲突,提高I/O并发性。多个事物并发访问同一磁盘时,会产生磁盘访问冲突而导致效率低下,如果事务访问数据均能分布于不同磁盘上,则I/O可并发执行,从而提高数据库访问速度。(2) 分散热点数据,均衡I/O负担。在数据库中数据访问的频率是不均匀的,那些经常被访问的数据成为热点数据,此类数据宜分散存在于不同的磁盘上,以均衡各个磁盘的负荷,充分发挥多磁盘的并行操作的优势。(3) 保证关键数据快速
14、访问,缓解系统瓶颈。在数据库中有些数据如数据字典等的访问频率很高,为保证对它的访问不直接影响整个系统的效率,可以将其存放在某一固定磁盘上,以保证其快速访问。由以上原则可知,只有在管理程序较大且有大量用户同时访问时才需要进行分区设计,因此,本管理系统不需要进行分区设计。六、数据库实施6.1基本表的建立1、用户信息表create table yh( UserID char(20), Rtime date, Uname char(20), Rname char(10), passwd char(18), address char(50), QQ char(15), email char(50), P
15、RIMARY key (UserID) ); 2、商品信息表Create table sp( Isbn char(50), Uploadtime date, Shopname char(30), Frome char(50), Price int, Storecount int, Content char(50), Primary key (Isbn);3、订单信息表Create table gw( OrderId Char(50), Stime date, UserID Char(20), Uname Char(20), address Char(50), Rname Char(10), I
16、sbn Char(50), Shopname Char(30), Count int, Price int, Condition int, Primary key (OrderId), Foreign key (UserID) references yh(UserID), Foreign key (Isbn) references sp(Isbn);6.2建立视图Create view gw_用户AsSelect gw.UserID,gw.Uname,gw.Rname,yh.email,gw.address,sp.Isbn,sp.Shopname,sp.PriceFrom gw,yh,spWh
17、ere gw.UserID=yh.UserID and gw.Uname=yh.Uname and gw.Rname=yh.Rname and gw.address=yh.address and gw.Isbn=sp.Isbn and gw.Shopname=sp.Shopname and gw.price=sp.price;6.3建立索引Create unique index yonghu on yh(UserID);Create unique index shangp on sp(Isbn);Create unique index gouwu on gw(OrderId);6.4建立触发器
18、当删除sp中的某一商品时,gw中的相应商品也应删除create trigger del_商品ON gwfor deleteas delete Isbn where sp.Isbn = (select Isbn from deleted) 6.5 建立java程序与数据库的关联Java源码:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.sql.*;class Loadingprivate JFrame Loading_Frame;priva
19、te JButton Loading_Button;private JTextField Loading_Name;private JButton Loading_Cancel;private JPasswordField Loading_Key;private JLabel Loading_lb1;private JLabel Loading_lb2;/private JDialog Loading_dia;/*public static Resultdosqlserch(String s)/*rs.next();/指向第一个数据/可以操作,rs.getString(字段名)来获得属性;先关
20、闭rs.close();依次是st.close();最后是conn.close();*/*public static void closeConnection() /看来不能这样风装啊 ;rs.close();st.close();con.close;*/Loading()int textWidth=16;int length;Loading_Frame = new JFrame(Loading!);Loading_Frame.setResizable(false);Loading_Button = new JButton(sure);Loading_Button.addActionListe
21、ner(new ActionListener()public void actionPerformed(ActionEvent e)int flag=0;String name = Loading_Name.getText();String key1 = Loading_Key.getText();/Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);/打开jdbc驱动String url = jdbc:sqlserver:/localhost:1433;databaseName=dd;String user = la;Str
22、ing key = 123;Connection con;Statement st;ResultSet rs;Boolean flag1;Boolean flag2; trycon = DriverManager.getConnection(url,user,key);/获取连接对象st = con.createStatement();/rs = st.executeQuery(select * from yh );/rs即sql查询后得到的结果;rs此时游标指向为空,System.out.println(在账户输入框中您输入的是:+name);/输出TextField中输入的数while(r
23、s.next()String x = rs.getString(userid);String y = rs.getString(passwd);System.out.println(数据库账户表中已有的帐户+x);System.out.println(该帐户的密码是+y);catch (SQLException f)System.out.println(catch出错););Loading_Cancel = new JButton(Cancel);/Loading_Cancel.addActionListener();Loading_Name = new JTextField( textWid
24、th);/长度50的账户名输入框,添加文档监视器,可以实现判断输入文本的正确,与文本框是否改变内容/Loading_Name.getDocument().addDocumentListener();Loading_Name.setEditable(true);Loading_Key = new JPasswordField(textWidth);/密码输入框,与账户输入框同等长度;Loading_lb1 = new JLabel(账户);Loading_lb2 = new JLabel(密码);/Loading_dia = new JDialog(Frame x)/属于窗窗口的对话框;Cont
25、ainer Loading_c = Loading_Frame.getContentPane();Loading_Frame.setSize(250,135);Loading_Frame.setLayout(new FlowLayout();/在登录窗口添加组件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);
26、Loading_Frame.setVisible(true);public static void main(String args) new Loading();七、不足和心得体会7.1系统设计的不足1、在进行数据设计的时候,只考虑了几个最简单的数据输入,并不能很好地应用与实际应用当中2、在使用过程中依旧会产生一些错误,比如缺乏一些用户交互界面造成的一些约束的错误3、在整个系统的稳定性方面做的不足。我不能保证在我的系统上如果再加上其他功能会不会导致系统崩溃,所以还需要不断地完善。7.2我的心得经过本次的实习,我发现在操作的过程中依旧存在着诸多的不足,在做很多内容的时候依旧还是要看看书,查找一些资料,从而可以看出,在一些基本的知识上还是存在着一些缺陷和不足。此外,在逻辑结构上并没有考虑到与用户的交互问题,这也使得本系统的实用性大大折扣。因此,在以后的学习生活当中,我会更为注意基础知识的巩固和初期在概念和逻辑结构设计上的合理性问题,总之,这次实习对我的学习成果不得不说是一次很好的检验,同时,是我受益良多。专心-专注-专业