Oracle课程设计-网上购物系统.pdf
湖南理工学院 计算机学院 课程设计报告 课 程 Oracle 数据库 题 目 网上购物系统 学 号 姓 名 罗 前 班 级 计科 1404 指导 教师 白天 2017 年 6 月 19 日 目 录 目 录.2 第一章 引言.错误!未定义书签。项目背景.3 设计目的.3 开发工具的选择.3 开发环境.3 第二章 需求分析.4 可行性分析.4 系统任务描述.4 体系架构.4 系统设计和功能分析.4 第三章 总体设计.7 消费者子模块.75 后台子模块.5 第四章 数据库设计.9 概念结构设计.9 逻辑结构设计.10 具体设计.11 实现.12 心得20 第一章 引言 项目背景 进入 21 世纪以来,电子商务伴随着 IT 的成熟,逐渐发展壮大,成为网络经济的核心。在电子商务的发展过程中,网络在人群中的使用率不断提高,人们逐渐意识到在线购物的无地域界限、安全、方便快捷及其价格优势,在线购物的队伍也随之扩大。如今网上购物的人群不断增加,为了满足用户的更高体验我深入分析了本系统各个模块之间的协调能力以满足客户需求。该系统的主要目的是:满足用户网上购物需求,方便快捷,足不出户就可以优惠的价格买到最称心如意的商品。设计目的 此课程设计的主要目的是使自己能熟练掌握基于 Oracle 数据库的应用系统的开发,所以也是基于 Oracle 的一些基本操作的应用。同样选择这个选题也是因为日益流行的网络购物所展现出来的优势,所以我才设计出这个系统来方便用户来购买实惠的商品。开发工具选择 本系统后台数据库采用 Oracle 10g 数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台采用 Myeclipse 作为主要开发工具,通过 JDBC 数据库驱动可与 Oracle 数据库链接。开发环境 系统开发平台:Myeclipse 系统开发语言:java 数据库管理软件:Oracle 10g 第二章 需求分析 可行性研究 可行性研究阶段的主要任务是在系统初步调查的基础上,对新系统是否能够实现和值得实现等问题做出判断,避免在花费了大量的人力和物力之后才发现系统不能实现或新系统投入使用后没有任何实际意义而引起的浪费,对新系统可行性的分析,要求用最小的代价在尽量短的时间内确定系统是否可行。(1)技术可行性分析 网络在线商城系统的开发是一项复杂的系统工程。为了保证系统开发成 功,必须采用工程化的系统开发方法,并研究出一些符合工程化标准的开发方法。这些方法旨在指导开发者进行工程化的系统开发,从而加快系统开发的速度,保证质量以及降低开发成本。工程化的系统开发方法确实在开发实践中取得了一定的效果。(2)运行可行性分析 随着计算机知识的普及和推广,越来越多的人掌握了计算机的基本 使用方法和技能。随着 Internet 的发展,用户对于网络、WINDOWS 等环境 下的软件使用比较熟悉,对于新鲜事物,用户表现出极大的兴趣和热情。(2)经济可行性分析 网络在线商城系统给人们带来了方便,成为一种全新的商务模式。因此,不用出门就可以在家购物的新时尚已经到来,构建一个网络在线商城系统在经济上是完全可行的。系统任务描述 系统模块的设计遵循整个系统总体设计思路,基于 web 的应用程序开发与数据库设计。体系架构 从功能构成的角度出发划分系统的职能层次,按照从底层到顶层,服务到应用的划分方法,网上购物系统基本上可以划分为四个部分:应用运行集成环境层、系统支撑软件架构、功能组件支撑和系统业务模块。其基本组成图如下:(一)应用运行集成环境层 包括本系统部署环境平台操作系统(本系统对操作系统无特殊要求,系统可以无缝迁移到Windows/Linux/Unix等常见平台之上)、系统使用的数据库管理系统(默认使用Oracle,系统内部数据库访问操作采用灵活的数据库方言机制,能够灵活的支持系统数据持久层迁移)以及本项目运行的应用服务器(Tomcat)(二)系统支撑软件架构 包括操作系统中的 TCP/IP 协议栈、JRE 运行环境,J2EE 引擎以及访问数据持久层的 JDBC API。(三)功能组件支撑 本系统需要不同客户端界面之间的实时性响应,需要在基础资源管理层和业务模块之间实现业务间实时通讯的功能组件,该组件必须能够兼容目前最成熟,运用范围最广的HTML5/标准。(四)功能组件支撑 包括网络在线商城系统的运营业务功能模块,如商品管理,用户浏览查询商品、结算购物车,管理员处理订单、管理商品相关信息。系统设计与功能分析 网上购物系统,可用于一些自由职业者打发时间,热爱网购的学生来进行网购的平台,它使用方便,易用性强,图形界面清晰明了。该系统页面使用 HTML+CSS+JavaScript编写,运用一些 Jquery 库和 bootstrap 框架,用 Oracle 10g 数据库作为后台的数据库进行信息的存储,用 SQL 语句完成商品信息的添加,查询,修改,删除的操作以及订单的修改,删除等,同时这些都可以通过后台管理员的页面来实现。另外我们用 JDBC 驱动实现前台与后台数据库的连接。该系统实现的大致功能:(1)用户登陆界面。ID 号和密码输入正确即可登录。用户:1.用户注册 2.用户登录 3.查看用户本人详细信息,包括用户名、邮箱地址、上次登录时间等 4.用户信息修改,包括邮箱地址与密码等 5.浏览商品详细信息 6.将商品加入购物车 7.删除商品 8.提交订单并支付 9.查看购买记录 10.查看在线人数与当前时间 (2)管理员界面。提供了对车辆信息的查询,添加,修改,删除。修改密码等功能。拥有最高的权限。允许添加普通用户信息。管理员:1.管理员登录 2.查看本人详细信息,包括用户名,邮箱地址、上次登录时间等。3.管理员信息修改,包括邮箱地址和密码。4.浏览商品的详细信息。5.商品的上架。6.订单的处理 图 系统用例图 第三章 总体设计 经过对系统的需求分析,网上购物系统主要划分为两个大的部分:消费者子模块和后台子模块。如图 系统的总体结构。图 系统的总体结构 消费者子模块 前台用户登录后可以进行商品信息的查看,然后看到满意的商品添加到购物车,选好商品后进行结账下单,但后订单信息中可以看到订单状态,同时在收到货后也可以在订单页面进行收货确认,如图是前台消费者模块结构。图.1 前台消费者模块结构 后台子模块 后台管理员页面主要可以进行商品的查看,然后可以上架商品,就是添加商品,或者对商品的信息进行修改,同时也可以进行订单状态的更改,比如说发货。如图信息查询模块结构。图 后台管理模块结构 第四章 数据库的设计 概念结构设计 数据实体关系图 图 实体关系图 逻辑结构设置 数据对象结构图 用结构图形式全局的描述数据库的设计:说明各个数据表之间的关系,数据库表的关键字和字段等。图 数据对象结构图 代码表描述 表四个表说明 序号 表名 表描述 1 users 存储用户的登录信息 2 goods 存储商品信息 3 alreadybuy 存储用户已经下单的订单信息 4 shoppingcat 购物车内商品的信息 具体设计-数据字典设计 用户表 表 数据库-用户表 用户表:users 字段名称 数据类型 能否空 默认值 说明 usid number(11,0)否 无 用户编号,主键,自动增长 uname varchar2(20)否 无 用户登录时使用的账号名称 userpass varchar2(20)否 无 用户登录时使用的密码 email varchar2(50)否 无 用户的邮箱 lastlogin date 否 无 用户上次登录的时间 购物车 表 购物车表 购物车表:shoppingcard 字段名称 数据类型 能否空 默认值 说明 sid number(11,0)否 无 主键,角色编号,自动增长 usid number(11,0)否 无 用户角色 id,外键 gid number(11,0)否 无 商品 id,外键 gnumber number(11,0)否 无 购买的数量 商品信息表 表 商品信息表 商品信息表:goods 字段名称 数据类型 能否空 默认值 说明 gid number(11,0)否 无 商品编号,主键 gname varchar2(100)否 无 商品名称 gnumber number(11,0)否 无 商品的库存数量 gphoto varchar2(100)是 无 商品图片文件名称 types varchar2(100)否 无 商品的类型 producer varchar2(50)否 无 商品的生产商 price number(11,0)否 无 商品的单价 carriage number(11,0)否 无 商品的运费 pdate date 否 无 商品的上架日期 paddress varchar2(100)否 无 发货地址 described varchar2(100)是 无 商品的详细描述 已购买信息 表 已购买信息表 已购买信息:alreadybuy 字段名称 数据类型 能否空 默认值 说明 aid number(11,0)否 无 已购买编号,主键,自动增长 gid number(11,0)否 无 购买的商品编号 usid number(11,0)否 无 购买用户的编号 gnumber number(11,0)否 无 购买的数量 buytime date 否 无 购买的时间 statement varchar2(11)否 无 状态的描述 .实现 创建表空间 为网上购物系统创建数据库的永久性表空间 CARSYS,采用区自动扩展,段采用自动管理方式,存储该系统中的数据表。用 CREATE TABLESPACE 语句创建表空间,具体的表空间创建如下图所示:图 表空间创建 创建数据库并插入记录 为网路购物系统创建数据表,一共共四张表,利用 create table 语句创建数据表并在创建的同时确定每张表的约束,具体如下图所示:用户表 users 的创建:图 users 表创建 购物车表 shoppingcard 的创建:图表创建 商品表 goods 的创建:图 good 表创建 订单详细表 alreadybuy 的创建:图 alreadybuy 表创建 开启事务和使用 for 循环向 shoppingcart 中插入 10000 条数据:图 插入 10000 条记录 然后查询 shopppingcart 表:图 查询插入结果 在数据表上建立索引 在四个表中都建立索引,以便于快速查询,通过 CREATE INDEX 语句创建索引。在 users 表的 name 列上创建一个非唯一性索引,如图所示:图 users 表的非唯一性索引 在 users 表的 ename 列创建唯一性索引,如图所示:图 users 表的唯一性索引 在 shoppingcart 表的 gid 列创建唯一性索引,如图所示:图 shoppingcart 表的唯一性索引 在 goods 表的 gnumber 列创建函数索引,如图所示:图 goods 表的函数索引 在 shoppingcart 表的 gid 列创建位图索引,如图所示:图 alreadybuy 表的位图索引 建立完整性约束 针对数据库中各表的列属性建立完整性约束,包括唯一性约束和检查约束 在 users 表的 ename 列添加唯一性约束,如图所示:图 users 表的唯一性约束 在 users 表的 passwd 列添加检查约束,约束密码的位数必须大于 6 位:图 usrs 表的检查约束 在 goods 表中添加检查约束,商品的价格必须大于 0:图 goods 表的检查约束 视图、存储过程和触发器的创建 在 users 创建一个包含用户基本信息的视图,用于方便快捷地查询到用户地基本信息,如图:图 users 表视图 在 shoppingcart 表创建一个关于已经放入购物车商品信息的视图,用于用户可以实时看到购物车的信息,如图:图 shoppingcart 表视图 在 users 表创建存储过程,以用户的 usid 为参数,返回用户密码,以方便快速查询用户的密码,如图:图 users 表的存储过程 测试调用时,因存储过程中用到了,所以需要先用命令 set serveroutput on 开启输出服务,这样在调用存储过程时才能看到其输出的值,如图所示:图 存储过程测试 在 alreadybuy 表创建一个存储过程,以输入用户的 ID 为参数统计该用户所购买的商品,用于快速的查询已经购买的商品,如下图所示:图 alreadybuy 表的存储过程 在 users 表中创建触发器,当你密码输错的时候,不能登录购买商品。触发器创建如下图所示:图 users 表的触发器 创建用户 用 create user user_name 来创建用户,设置一个身份认证密码,默认表空间为 CRASYS,在该表空间的配额为 20M,用户的状态设置为锁定状态,在需要开启该用户来管理数据库时再解锁该用户,用户创建如下图所示:图 用户创建 对 admin 用户授权,将该数据库中的 4 个表的所有操作权限授予 admin 用户,如图所示:图 用户授权 对 admin 用户授予 connect 和 resource 的权限以保证在解锁用户后能够登录数据库。图 用户授权 逻辑备份 对数据库进行逻辑备份,备份用户数据,以防系统在运行时出现各种情况下的出现数据丢失,逻辑备份如下所示,使用 EXP 导出数据:命令格式为:exp userid=username/password tables=(tablename or file=PATH(路径).dmp,导出方式为导出表。图 导出操作 图 导出的数据文件 心得 本学期的 Oracle 课程快要结束了,通过这从课程设计,重新系统的又回顾了我们这学期所学的课程内容,在这次课程设计中,也遇到了很多不能解决的问题,在老师和同学的帮助下,我基本完成了数据库系统的设计。按照课程设计的要求,从需求分析,系统总体设计,数据库设计各个步骤,有序地分步完成系统的各项任务,基本完成了系统中的数据库设计与搭建。从这次课程设计,我也发现了自己的不足,依旧是对于数据库的操作的熟练度不是很好,还有就是编程能力也有待提高,结束这门课程不代表就结束了对 Oracle 的学习,以后的日子,我会更加努力的学习技术来提升自己。