XXXXXX大学
本科生毕业论文(设计)
题 目 网上商理系统
学 院 计算机学院
专业班级 级软件工程一班
学生姓名 XXXXXXXXXXXXXXXXX
指导教师 XXXXXXXXX
撰写日期:二〇XX年五月四日
网上商理系统
XX
信息与管理科学学院软件工程专业
摘要: 21世纪是电子商务蓬勃发展的世纪。社会经济的发展使得人们的生活水平有了很大提高。计算机科学的发展和互联网的普及,电子商务在经济发展中的作用也越来越明显,因此很受大家的欢迎。
本系统是以JAVA语言为基础,用JSP Servlet技术来实现的一个在线购物及后台管理系统。它实现了一个在线购物网站所需的基本功能,包括:商品展示,商品检索,商品评论,购物车,商品添加,订单管理等功能。它提供了友好的交互页面和丰富的功能,通过页面展示丰富多样的产品,让顾客流连忘返。
本系统是一个B2C模式的在线购物平台。B2C模式是电子商务领域发展较为成熟的平台之一,典型代表为卓越、京东。本系统采用B2C模式,通过强大的后台管理功能和后续研发优势,本系统必将更加完善,更加满足电子商务发展要求。
关键字:电子商务、JSP Servlet、B2C
E-commerce & Management System
Abstract: We all believe that ,in the 21st the e-commerce will develop rapidly and greatly. The rapidly developing social economy contribute to the improvement of common human life.With the developing of Computer Science and the prevalence of Internet, electronic commerce is play a more and more important role in our social economy,and its advantages make it popular to us.
This system is based on JAVA,and it's was completed by JSP Servlet technology. It supplies many useful functions which almost all the online trading systems need, which including : goods displaying, goods searching, goods comment, goods add, order management,etc. The friendly front pages display a lot of goods of any kinds, this is the attraction of my system.
It's a system in B2C mode.B2C mode is one of the maturest modes in e-commerce area, JingDong Online Mall is typical representative of this mode. Our excellent background management provides favorable support to our system. This will helps our system adapt to the development of e-commerce developing in the future.
Keywords: Electronic commerce,JSP Servlet,B2C
1 引言
1.1 系统开发的背景和现状
1.1.1 电子商务网站开发背景
Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。
1.1.2 电子商务网站的现状
在美、日等信息化程度较高的国家和地区,网络商店发展速度迅猛,美国的世界级超一流的零售商,如沃尔玛凯玛特、家庭仓储、科罗格、J.C培尼等纷纷跻身于网络经商的行列。
在我国,网上购物从无到有也不过短短几年时间。如今,在北京、上海、深圳等大城市,已有200多家商场,专卖店开设了网上商店,还有一些正处在观望阶段。真正意义上的网上购物,即货款的结算在网上进行,已在国内实现。电子商务的发展也越来越多样化,模式有B2B,B2C,C2C等,也涌现出一大批优秀的电子商务网站,从淘宝,拍拍,阿里巴巴外贸,卓越,贝塔斯曼,到现在的中关村在线,1号店,京东商城等。
基于电子商务所连带出的商品交易方案、电子结账方案和信息安全方案等,已逐步成为国际信息技术市场竞争的焦点。随着电子商务的日益发展,产生了虚拟银行、网络营销、网上购物、网络广告等新兴信息产业,从侧面反应了电子商务正在对社会和经济产生着深刻的影响。
不仅如此,基于电子商务模式的扩展,团购网络和其他电子商务辅助型网站的也正变得越来越热,在未来,电子商务必定有着更广阔的发展空间。
1.2 系统开发的目的和意义
1.2.1 系统开发的目的
电子商务主要包括网上广告、订货、付款、客户服务和货物递交等,售前、售中、售后以及市场调查分析、财务核算及生产安排等多项利用Internet开发的商业活动,它对人类社会进行着全方位的改造,在企业竞争、部门、公共研究机构、教育以及娱乐等方面改变着人类相互交往的方式,为人们展示了一个全新、璀璨的世界。由于电子商务的出现,传统的经营模式和经营理念将发生巨大的变化。电子商务主要以飞速发展的遍及全球的 Internet 网络为架构,以交易双方为主体,以银行支付和结算为手段,以客户数据库为依托的全新商业模式。电子商务将会创造巨大的效益和机会,会将市场的空间形态、时间形态和虚拟形态结合起来,将物流、资金流、信息流汇集成开放的、良性循环的环路,使经营者以市场为纽带,在市场上发挥最佳的作用,得到最大的效益。
1.2.2 系统开发的意义
●投资少,回收快。
●基本不需要占压资金。
●24小时营业时间。
●不受店面空间的。
●不受地理位置影响。
从这些先天的优势可以看出,电子商务的进一步蓬勃发展是时代的趋势,尽早积极开发网上购物系统网站有着非常大的现实意义。
2 系统运行环境和开发平台
2.1 系统运行环境
2.1.1 系统软件环境
[3]。因此,系统对于客户端的要求不高,而服务器端则要求安装某些必需软件。具体配置如下:
1 安装web浏览器
2 安装有图片编辑软件
3 安装Adobe Flash IE插件
1 Windows Server2003或Windows Server2008操作系统
2 安装有MySQL和SQLServer 2005数据库系统
3 安装有SQL Server Management Studio数据库管理软件
4 安装有MySQL Administrator和Navicat数据库管理软件
5 安装有J2SE 6.23版JDK开发工具包
6 安装有Apache WEB服务器Tomcat 6.0
2.1.2 系统硬件环境
1 CPU:奔腾Ⅲ 1.2 GHz
2 内存:256MB
3 硬盘:40GB
1 CPU:至强 Xeon 3.6 GHz
2 内存:8GB
3 硬盘:2TB
2.2 系统开发平台
2.2.1 开发语言环境
该网上购物系统是用JAVA语言开发的在线商务系统。Java是一种跨平台的语言,可以在不同的操作系统环境中运行,只要有java解释器和浏览器就可以运行,java是面向对象编程中的一种经典语言[2]。
2.2.2 开发所需工具简介
[10]。
[7]。
2.2.3 开发所用到的技术简介
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务[8]。
视图是用户看到并与之交互的界面。在新式的Web应用程序中,JSP开始在 视图中扮演着重要的角色,但一些新的技术已层出不穷。模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。控制器接受用户的输入并调用模型和视图去完成用户的需求。
MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用视图格式化模型返回的数据,并呈现给用户。如图2-1所示:
图2-1 MVC架构模型
●JSP技术
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,该技术为创建显示动态生成内容的Web页面提供了一个简捷而快速的方法。JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。JSP技术的优势一次编写,到处运行,并且系统的多平台支持。JSP还有强大的可伸缩性,被多样化和功能强大的开发工具支持。
Servlet是使用Java Servlet应用程序设计接口(API)及相关类和方法的Java程序。除了Java Servlet API,Servlet还可以用于扩展和添加到API的Java类软件包。它最常见的用途是扩展Web服务器,提供非常安全的、可移植的、易于使用的CGI替代品。它是一种动态加载的模块,为来自Web服务器的请求提供服务。它完全运行在Java虚拟机上[14]。由于它在服务器端运行,因此它不依赖于浏览器的兼容性。
2.2.4 开发所需插件
3 系统可行性研究和需求分析
3.1 系统可行性分析
3.1.1 市场可行性分析
3.1.2 技术可行性分析
3.1.3 时间可行性分析
3.1.4 成本收益的可行性分析
信息系统的开发过程中,最大的成本是人力成本,而人力成本在该项目开发中恰恰是最小的成本,相反,时间成本成了最大的成本。物力成本上,开发工具完全免费,不需要额外原材料,物力成本几乎为零。这是个付出就有回报的过程,对于软件开发的基本流程的进一步熟悉,对于基本知识的进一步巩固就是整个系统开发的最大收益,也是最终的目的,因此该系统完全是非常有价值的一次尝试。
3.1.5 系统后续开发和维护的可行性
3.2 系统需求分析
3.2.1 系统架构设计
本系统采用 B/S(Browser/Server)模式体系结构。B/S 模式结构,是 WEB 兴起后的一种网络结构模式。其统一了客户端,将系统功能实现的核心部分集中到服务器,从而简化系统的开发、维护和使用。B/S 结构采用星形拓扑结构建立企业内部通信网络或利用 Internet 虚拟专网(VPN)。前者安全、快捷、准确;后者有节省投资、跨地域广等优点。
在本系统的设计中,要使用MVC模式,将前台视图,后台和数据库以及中间层分离开来。在编码过程中要在不同的包中分别:建立模型,实现模型,Servlet连接,数据库连接类和过滤器。
系统的实现方式如图3-1所示:
图3-1系统结构流程图
通过上图,可以很清晰的看到本系统的整体架构,通过将不同的功能模块分离开来,利用Servlet容器和配置文件来实现用户请求的选择和调度,大大降低了不同模块间的耦合度,增强了代码重用度和健壮性。
3.2.2 用户和管理员的功能需求
3.2.2.1 功能模块划分
这部分的内容包括:产品的添加、删除、查询、订单的管理、操作员的管理、注册用户的管理等。
图3-2 前台与后台模块功能 状态图
3.2.2.2 用户模块的功能划分
信息,则页面显示该信息并由顾客确认。如尚未填写则显示相应表单请其填写,系统记录顾客提交的收货人信息以便其下次购物时使用。顾客提交订单后可在网上商城查询该订单,并可对尚未处理的订单进行取消、修改等操作。
3.2.2.3 管理员模块的功能划分
3.2.3 性能需求
3.2.3.1 对数据精确度的要求
对于商品价格和用户存款的数据要使用BigDecimal类来管理,防止出现因为精度问题而无法购买商品的情况出现。
3.2.3.2 对系统易用性、可移植性、健壮性的要求
易用性:整个购物系统要简单易用,用户容易上手并且能很容易的找到用户想找的功能模块。购物流程要明白,公告和通知位置显眼,能被用户看到,产品图片要清晰,产品信息描述要准确。
可移植性:整个购物系统能符合服务器平台的需要,可以保证在集群服务器上,在不同的服务器环境中都可以顺利运行。
健壮性:系统要具有较强的适应能力,能承受住较多用户同时访问的需要,并且系统的相关文档要保留完整,源码标注清晰,结构合理,便于后续的开发和维护。
4 系统概要设计
4.1 系统总体功能流程图
系统总体分为前台模块和后台模块两个部分。
图4-1描述前台模块的整体流程:
图4-1 购物系统前台模块流程图
图4-2描述的是后台模块的整体流程:
图4-2 购物系统后台模块流程图
4.2 系统数据库设计
数据库的设计非常重要,直接关系着系统的整体稳定性。
数据库的设计过程中要参照以下规范:
1. 数据库表设计时,表名称要采用英文单词+下划线+tb的形式。采用这种命名方式的含义是:user_tb→用户表。表达意思简单明确。
2. 表中字段的命名方式采用表名称缩写+下划线+英文单词的形式。采用这种命名方式的含义是:u_name→用户名称 u_truename→用户真实姓名。
3. 数据库设计主要要划分为四个核心模块:用户,管理员,商品,订单。表的设计要结构清晰、有条理,还要高效。具体设计为以下14张表,存储内容如下所示:
① 用户表:用户ID,用户等级ID,用户名,密码,真实姓名,邮箱,性别,年龄,地址,电话,消费额,密码问题。
② 收藏表:用户ID,商品ID,收藏时间,收藏地址。
③ 用户等级折扣表:等级折扣表ID,等级名称,消费额,折扣。
④ 订单表:订单ID,用户ID,订单号,品种数,地址,收件人,订单日期,联系电话,说明,货物位置。
⑤ 订单详细表:订单详细ID,订单ID,商品ID,商品数量,价格。
⑥ 商品表:商品ID,品牌ID,名称,价格,图片名称,上架时间,简介,库存,成交量,点击量。
⑦ 品牌表:品牌ID,品牌名,品牌编号,状态。
⑧ 商品种类:编号,总分类ID,类别名称,状态。
⑨ 商品总分类:总分类ID,分类名称,状态。
⑩ 管理员表:管理员ID,用户名,密码,类型。
留言表:用户ID,留言内容,留言时间。
商品评价表:商品评价ID,商品ID,用户ID,评价内容,评价时间。
打折表:打折ID,消费金额起点,折扣。
数据库的外键设计:
① 可以通过订单表查看用户信息和商品信息。
② 可以根据留言回复表查看到管理员信息和用户留言信息。
③ 可以通过用户等级折扣表查看打折水平。
④ 可以通过商品表查询到商品小分类和总分类。
4.3 系统页面和模块设计
系统的页面包括前台部分和后台部分,前台部分包括前台商品部分和用户部分,通过JSP页面来实现系统的功能。
商品部分:404.jsp 作用:提示请求页面没有找到。
用户部分:collectshow.jsp 作用:显示会员的收藏夹。
后台部分:Error.jsp 作用:登录错误跳转页面。
5 总体设计与实现
5.1 数据库设计与实现
5.1.1 数据库表设计
根据4.2中对数据库设计的要求,在该系统中建立了14张表,定义了14个外键约束,用PowerDesigner设计数据库模型如图5-1所示:
图5-1 PowerDesigner设计数据库表和外键关系
根据数据库设计要求,数据库设计中一共要建表14张,分别为:
① 商品表 ② 品牌表 ③ 商品种类 ④ 商品总分类 ⑤ 商品评价
⑥ 用户表 ⑦ 收藏表 ⑧ 用户登记表 ⑨ 留言表
⑩ 订单表 订单详细表
管理员表 回复留言表 打折表
在数据库的设计中,通过以上14张表存放商城商品和交易信息。14张表主要分为用户部分,订单部分,商品部分,和管理员部分4大块。通过外键约束实现了对于不同表的相互关联和约束。例如:收藏表作为从表,外键关联于商品表和用户信息表,通过设置外键"用户id"可以得到某用户信息,通过设置外键"商品id"可以查询到用户收藏的商品信息,而且在外部发出更新和删除请求时,通过设置CASCADE级联删除,可以强制更新商品信息。
注:关于该系统数据库创建的SQL脚本和模型均存放在附录中。脚本为MySQL版和SQLServer版共两份。
5.1.2 数据库的约束与关系
◆订单表 user_id 关联 用户表 user_id;
◆收藏表 user_id 关联 用户表 user_id;
◆订单详细表 o_id 关联 订单表 o_id;
◆商品表 g_id 关联 品牌表 g_id;
◆品牌表 t1_id 关联 商品种类表 t1_id;
◆回复留言表 m_id 关联管理员表 m_id;
5.2 系统主要功能的设计与实现
5.2.1 数据库连接池类与数据库工厂类简介
5.2.1.1 DBConnectionPool类详解
操作的方法,供外部类来实现对数据库的访问。例如:外部类要执行数据库查询,它只需通过调用executeQuery(sql)方法,传进SQL语句作为参数即可返回ResultSet结果集,然后在结果集中检索即可。同理,外部类执行数据库插入和删除操作,它只需要调用executeOperate(sql) 方法,传进SQL语句作为参数即可返回ResultSet结果集,查询完毕后要释放资源时,通过调用DBConnectionPool的release()方法来释放资源。
DBConnectionPool 类和 DBFactory类工作方式如图5-2所示:
图5-2 UserImpl与GoodsImpl操纵数据库 类图
DBConnectionPool类的具体实现方式(核心代码):
//返回当前连接池的一个对象
public static DBConnectionPool getInstance() {
if (null == instance) {
instance = new DBConnectionPool();
}
return instance;
}
通过getInstance()方法获取一个DBConnectionPool类实例
//获取连接池中的一个连接
public synchronized Connection getConnection() {
if (pool.size() > 0) {
conn = pool.get(0);// 获取连接
pool.remove(conn);// 将连接从连接池中移除
return conn;
}
通过getConnection()方法返回一个数据库连接
// 释放连接
public synchronized void release(Connection conn) {
pool.add(conn);
}
通过release()方法释放数据库连接
以下简要介绍 Java与数据库建立连接的实现方式:
//初始化连接池、读取配置文件(存放着数据库连接信息)
private void init() {
pool = new Vector } //在连接池中添加连接 private void addConnection() { Connection conn = null; Class.forName(driver); for (int i = 0; i < poolSize; i++) { conn = DriverManager.getConnection(url, username, password); pool.add(conn); } } //读取配置文件 private void readConfig() { Properties prop = new Properties();// 定义一个属性实例 prop.load(pool.properties);// 加载属性文件 this.setDriver(prop.getProperty("driver")); } 图5-3 连接池的基本工作原理 数据库连接池这种设计模式属于应用共享资源的开发中非常著名的一种设计模式:资源池(Resource Pool)。该模式正式为了解决资源的频繁分配、释放所造成的一系列问题而设计的。这种模式通过设定连接池的最大连接数来防止系统无控制的与数据库系统的连接,减小了数据库系统因过载而崩溃的可能,大大提高了对系统与数据库连接控制的灵活性。 数据库连接池在高效性和稳定性上也具有极大的优势。 例:在eclipse中新建两个类DBTest.java和DBPoolTest.java 在DBTest中,利用for循环控制类与数据库建立1000次连接,同样,在DBPoolTest中通过for循环,利用线程池与数据库建立1000次连接。 图5-4是类运行结果的截图: 图5-4 两种连接方式的比较 池的DBPoolTest类建立1000次连接仅耗时422毫秒。 图5-5 DBPoolTest进行一百万次连接 5.2.1.2 DBFactory类的实现方式和功能 图5-6 其他类对DBFactory的调用 5.2.2 用户注册登录模块的实现方式 5.2.2.1 会员与游客的功能范围 图5-7 游客与会员功能用例图 图5-8 会员等级图示 会员的等级划分方法如表所示: 表5-1 商城会员积分折扣映射表 5.2.2.2 用户注册模块的实现 function checkusername(){ var username =document.getElementById("u_name").value; if(username.length<4 || username.length>16){ var sp= document.getElementById("sp"); sp.innerHTML="用户名长度不合要求"; return false; } } public void validate() { if(username==null||"".equals(username)) this.addFieldError("username", "姓名不能为空!"); if(username.length()>16||username.length()<4) this.addFieldError("username", "姓名长度不符合要求!"); if(age<1||age>100) this.addFieldError("age", "年龄必须在1到100之间!"); } 图5-9 浏览器端用户信息校验 5.2.2.3 用户登录模块的实现 图5-10 登录后用户名显示 图5-11悬浮框提示 "\一"到"\龥"和"\豈"到"\uFA2D",汉字校验流程如图5-12所示: 图5-12 汉字校验状态图 5.2.3 管理员登录和其功能范围的实现 5.2.3.1 管理员登录模块的实现 图5-13 管理员登录页面 ENCRYPT(str[,salt]),ENCODE(str,pass_str),MD5(string),SHA1(string),SHA(string) ,AES_ENCRYPT(string,key_string)这几种加密方式,供用户使用。 5.2.3.2 管理员功能范围的实现方式 图5-14 管理员功能模块用例图 图5-15 管理员登录首页面 1商城介绍信息的更改 2商品管理包括(商品添加,商品信息更新,商品下架,商品分类管理) 3客户管理包括(查看用户信息,用户级别管理,用户删除) 4订单管理包括(查看订单,搜索订单,订单状态更新,订单取消,订单数据分析) 5留言管理包括(查看留言,留言回复,留言评论管理) 6广告管理包括(友情链接添加,广告信息发布,广告信息删除,广告排序和时限管理) 7支付方式管理包括(在线支付设置,支付宝设置,银行账号设置,货到付款设置) 图5-16 添加商品界面 管理系统中,管理员的功能范围和权限控制非常重要,特别是功能范围,实际可能遇到的所有查询功能都要在系统的开发过程中有所体现。 5.3.3.3 管理员管理 在后台设置了管理员选项,在这里可以添加、修改和删除管理员信息。图5-17是管理员添加的页面: 图5-17 管理员添加 5.3.3.4 管理员留言回复功能的实现 实质上,留言的回复是通过JavaScript脚本中建立函数。用户登录后,如果进入个人信息页面查看个人留言和管理员回复,页面上将会根据留言发布的条数在 图5-18 留言效果图示 5.2.4 商品购买及购物车的实现 5.2.4.1 商品购买的实现方式 图5-19 商城首页面 商品展示 如:点击商品首页面的商品----联想Y460 电脑。浏览器将重定向到商品详细描述界面,通过页面的产品介绍,用户可以了解到商品的具体信息。 图5-20 商品详细信息展示 如图所示,商品展示的所有信息存储在goods_tb表中。在商品简介页面要说明:商品编号,商品名称,商品价格,商品库存,商品评论等信息,便于会员购买时查看咨询。此外商品介绍页面中还要有好评率、上下架时间和收藏选项,以便于会员推广和记录这件商品。 5.2.4.2 购物车的实现 将商品ID保存在session中,由于用户登录时,系统会自动创建一个session对象来存储用户名,因此可以通过session将商品ID和用户ID一起添加到一个ArrayList链表中,用户继续购物时,session没有失效,因此可以继续添加商品。如果用户选择付款,那么可以通过点击结账按钮到收银台界面,收银台将根据session中存储的商品ID从数据库查询商品价格,这样就实现了结账功能。 此外,用户还可以通过购物车中的删除按钮来灵活控制购物车,实现机制是调用JSP内置对象session的removeAttribute("g_id")方法来清除session中对应的商品信息,由于 session具有用户发出请求时创建,关闭浏览器时session失效的特性,所以,如果用户没有结账时关闭购物车,session将在浏览器关闭时清空,用户登录信息将也被同时清空。 图5-21 购物车的应用场景 在购物车页面中,用户可以随意的选择删除以选择商品,或者修改购买的商品数量。 5.2.5 订单和订单管理的实现方式 在日常的购物网站中,交易量非常的大,每笔交易如果没有完整的记录来保存交易信息,那么出错后造成的损失将非常大,而且处理起来会相当的麻烦,引入订单可以大大简化这一过程,通过在订单表关联外键到商品表和用户表,可以很完整的保存下来用户购买商品时的商品编号、商品价格、商品产地、购买时间、用户名称、收件人名称、收件人地址、付款时间还有发货状态等信息,非常便于查询和作为凭证。订单所面对的对象分为商城会员和管理员两种,这两种角色所分别具有的功能在5.2.5.2详解。 以下两节将通过本网上商城系统的运行实况,详细介绍该系统订单的产生方式和管理方式。 5.2.5.1 订单的产生方式 订单是网络交易的最重要凭证,订单的唯一性非常重要,每笔生意都要唯一的对应一个订单。因此订单可以作为订单表的主键和标志位,在网上商城系统中,一般都用订单提交时间的时间戳来确定订单编号,在交易量非常大的时候为了避免重复,有时候还需要在时间戳后加上一小串随机码来确保避免重复。在本网上商城系统中,订单编号的产生也是通过获取订单提交时间的时间戳来获得的。 Date today = new Date(); SimpleDateFormat ss = new SimpleDateFormat("yyMMddHHmmss"); String o_code = ss.format(today);//得到订单编号。 com.fit.e_commerce.model包中,创建了一个OrderModel的类文件,在其中创建了Order模型,并使之与数据库的Order对应,通过将前台页面得到的参数复制给一个Order对象,创建好Order对象后,通过调用Order的工厂方法类将其存储到数据库中,储存过程在5.2.1的DBFactory中有详细介绍。 5.2.5.2 订单的页面显示方式 订单作为商城交易的最重要凭证,所以关于订单的功能实现一定要丰富多样,订单面对的对象为商城会员和管理员,对于不同的对象,订单的表现方式要严格控制,防止订单信息被非法修改的情况出现。除此之外,订单的实时状态也是非常重要的一个环节。在本系统中也不例外。 设计良好的订单能够在有限的页面空间内体现出一个交易的详尽的信息,并且订单内容的重要部分要醒目,便于用户查看。在该系统中按照商城会员和管理员两种身份来设计订单。 商城会员和商理员关于订单模块的功能划分: 会员:① 下订单 ② 订单信息查询 ③ 订单实时状态查询 ④ 未发货订单删除 ⑤ 订单跟踪 管理员:① 订单查询 ② 订单状态查看和更新 ③ 过期订单处理 ④有效订单处理 (注:管理员没有更改订单信息的权限) 图5-22 订单模块用例图 从上可以看出,会员登录后,可以查询订单的为订单信息查询页面,该页面显示的是会员最近所有交易的记录,用户可以通过按时间搜索和按订单标号搜索的方式查询某次交易的信息。 会员可以通过订单信息查询页面。在该页面上显示出用户最近所有的交易信息列表,列表上会列举出:订单编号,订单时间,商品名称,商品价格,商品数量等信息,但如果用户要获得详细信息,就必须通过订单号查询,如上图所示,当点击某订单号后,JSP服务器会自动重定向至memberdetailorder.jsp页面,在该页面中,将以如下图的方式详细的列举出订单的所有信息,如:收件人、联系方式、收件人地址以及订单信息等。 图5-23订单表ER图 图5-24 订单详细查询界面 5.2.5.3 订单的后台管理 图5-25 订单状态修改 从上图可以看到,这一个页面中并没有显示出每个订单的所有信息, 而是显示出了最主要的部分信息。由于订单表中所有的字段太多,因此在这里全部显示不仅让人头晕眼花还会降低执行效率,因此在这里强调了搜索功能,可以按条件过滤出符合要求的订单,如:按状态搜索、按编号搜索、按下单人搜索、按电话搜索、按收件人搜索等。而讲订单的所有信息放在另一个页面中显示,这一点与会员看到的订单详细界面类似,如图 5-25所示。 至此订单的所有实现方式介绍完毕。 6 系统测试 6.1 系统测试概述 从测试是否针对系统的内部结构和具体实现算法的角度来看, 可分为 :白盒测试和黑盒测试。 6.2 系统黑盒测试 黑盒测试是指把被测软件看作是一个黑盒子, 我们不去关心盒子里面的结构是什么样子, 只关心软件的输入数据和输出结果。 等价类测试是黑盒测试中非常具有代表性的一种测试方式,它是指把所有可能的输入数据, 即程序的输入域划分成若干部分, 然后从每一部分中选取少数贴近边界值的数据作为测试用例。 在本系统中,在用户登录模块的测试用到了等价类测试。 图6-1 等价类测试效果 在该系统中用户注册时受以下几个条件:① 4≤username.length≤16 ② 用户名不能是已存在的用户名 ③ 用户名不能全是数字 ④ 两次输入的密码必须一致 ⑤ 6≤password.length≤12 ,因此可以设计如下表格,通过输入表格中的不同组合来检测该模块功能是否正确。 表6-1 等价类测试案例 6.3 系统白盒测试 把测试对象看作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。 图6-2 白盒测试实例 购物车模块要求系统能正确读取商品的单价P,并且可以从页面显示的用户订购商品数量N获取总价格T,如果用户删除商品,也要能返回正确结果。 图6-3购物车模块数据流程图 表6-2 白盒测试案例 7 结 语 经过近3个月的努力,网上购物管理系统终于设计完成了。在这个项目的开发过程中,遇到了很多很多的问题,包括许多会用却不懂的问题,通过查阅资料,请教老师,其中的不少问题都得以解决,但是还是有一些问题存在。在以后,我会继续努力。 7.1 本系统的优点 本系统是网上商城测试项目,也是本人的毕业设计,有一定的实际意义,本系统实现了商品的购买和订单的处理等功能,基本具备商务系统所需要的功能,基本满足用户的需要,而且该系统所面对的用户范围较广,对于用户来说,并不需要掌握专业的计算机知识便可以使用,便于推广和使用,有利于BUG的发现和后续的开发维护。 7.2 本系统的不足之处及发展意见 该系统从4月中上旬完成到现在,一直处于调试和调整阶段,发现了很多很多意想不到的问题,在这个阶段的收获也是最大。 目前系统存在的问题主要体现在以下几方面: ① 空指针异常(java.lang.NullPointerException) 这个错误是随机出现,并没有发现程序实际的出错之处,而且加的判断标志位有时正常有时失效。初步判断是SQL语句导致的问题。在整个数据库的设计过程中,goods表和user表都填充了一定量的数据,而在系统的开发代码中大量嵌入了SELECT * FROM TABLE 语句,导致了笛卡尔乘积非常庞大,并且在一次页面中可能牵涉到数次的SELECT * FROM TABLE查询。这可能是空指针异常的最主要原因。 ② [Microsoft][ODBC SQL Server Driver]无效的描述符索引 刚出现这个错误时,都很头疼,SQL语句完全正确,在MySQL数据库中的测试也正确,就是在系统中抱这个错误,经过查阅资料最终发现是SQLServer 2005服务器自身的原因。通过SELECT语句在SQLServer表中查询信息时,必须要按照表中字段排列的顺序查找,否则就会报错,即使是通过SELECT * 语句来查询,从返回的结果集中取数据时也要按照字段排列来取。这个问题最终被解决,但由于系统中SQL语句很多,可能还存在有没有发现的此类错误。 这个跟空指针异常应该是同样的原因,但由于SELECT * FROM TABLE 语句非常多,修改起来工作量非常大,而且稍不细心就会出错,因此在后续的调试中修改的类文件并不是很多。 7.3 在系统设计与实现过程中的收获 首先,在开发本系统的过程中,要查询翻阅大量的参考文献以及网上搜索资料,培养了我调查研究、查阅中外文献资料,运用国家标准、行业规范、手册、图册等资料的能力。其次,在开发本系统应中,用到了我以前所学的很多知识。通过对本系统的开发,提高了我综合运用所学理论知识和技能,分析解决实际问题的能力。最主要的是提高了我的自学能力。通过这次毕业设计,把所学的理论知识与实际应用联系了起来,为我今后走向社会打下了坚实的基础。总之,这次毕业设计使我受益匪浅。 参考文献 [1] 孙卫琴.Java 面向对象编程[M].北京:电子工业出版社,2010. [2] 阎宏.Java与模式[M].北京:电子工业出版社,2009. [3] 贾素玲,王强. JSP应用开发技术[M].北京:清华大学出版社,2007. [4] 谢星星.企业应用架构设计[M].北京:中国水利水电出版社出版社,2010. [5] 张剑,曹爽,董亮.JavaScript程序设计[M].北京:清华大学出版社,2010. [6] 许珂,卢泉. Oracle数据库 高级版[M].北京:清华大学出版社,2010. [7] BruceEckel. JAVA编程思想[M].北京:机械工业出版社,2009. [8] (美)Nicholas C.Zakas. JavaScript高级程序设计[M].北京:人民邮电出版社,2009. [9] (以)Doron A.Peled. 软件可靠性方法[M].北京:机械工业出版社,2006. [10] (美)Budi Kurniawan. 深入剖析Tomcat[M].北京:机械工业出版社,2011. [11] (美)Joshua Bloch. Effective Java[M].北京:机械工业出版社,2008. [12] 周志明.深入理解JAVA虚拟机[M].北京:机械工业出版社,2011. [13] 付献祯,徐迎晓.Java Applet和Java Servlet在网页制作中的运用[J].上海大学学报(自然科学版),1999年,第S1期:43-47. [14] 王立东,张凯.JVM中栈以及相关指令的实现[J].计算机工程与应用,2004年,第05期:26-27. [15] 章婧,卢凯,周旭.Java程序内存行为研究[J].小型微型计算机系统,2011年,第08期:35-39. 是书拯救了我,也是书成全了我的所有。在大学的最后两年半里,我读了许多的史学经典,读了许多的哲学著作。当看到无数前人以人生为代价,将一生的起伏浓缩成文字时,我沉默了。当听到无数的巨人将心底的呐喊化作利剑穿透纸背直指苍穹时,我沉默了。这种碰撞让我清楚的看到了人生的短暂,青春的更短暂,也更明白了人生的真正意义。因此,在这里,我最先要感谢的是XXXX大学图书馆和借我书看的朋友,还有跟我一起谈论如何看待漫漫前路的友人,是他们丰富了我人生最为宝贵的东西----灵魂。 其次,最要感谢的当属我的父母,奶奶。没有亲人,我是不会有现在这么强大的思想动力的。 再次,要感谢我的指导老师XX老师。由于毕业设计的是在外地完成,跟指导老师的沟通存在很大的不便,但是在毕业设计的开发阶段,X老师一直热心的关切我的设计进度,给我了非常非常大的帮助,特别是在论文的书写阶段,从格式到内容,认真把关,耐心指出我论文中的不足。 最后要感谢大学四年陪我渡过的同学们和舍友们。你们让我的大学生活充满了活力,每次活动时的欢乐,每次聚会时的幸福,这些都尽在不言中。真的非常非常感谢你们。 祝愿我亲爱的同学们能在不远的未来里能自由的掌控自己的生活,有双明亮的眼睛,祝愿我的老师工作顺利,生活幸福。 谢谢! 附录 1.论文中所有的模型设计 2.系统数据库文件 3.系统试运行截图 4.系统数据库表设计 一、系统的所有模型设计,在毕业设计文件夹下的数据模型中都可以找得到,部分采用PowerDesigner设计,部分采用Visio设计。 二、系统试运行过程中的数据库文件存在于数据库文件文件夹下,使用SQL Server2005可以顺利导入。 三、系统试运行期间的截图存在与截图文件夹下,比较全面,当然还有部分没有截图。 四、系统数据库表设计。数据库模型在数据模型文件夹中保存有完整版本在此,我以MySQL数据模型来展示数据库设计,模型如下: 附录 MySQL数据库表模型
用户等级 积分设定 折扣率 新手 0 1.0 初级 500 0.95 中级 1500 0.9 高级 5000 0.85 终极 10000 0.8 中来显示。实质上是通过数据库语言中的limit语言来实现的,通过limit可以查询到留言表中的特定几行的内容并返回,系统通过COUNT()函数查询留言次数,再在页面中动态建立
行数,再通过EL表达式在 中写入留言内容来实现的。这一功能非常实用。效果如图5-18所示:
以上测试,通过分析边界值,划分不同的值域,分别取值,进而可以看到注册部分通过了黑盒测试。测试变量名称 输入数据 输出数据 aaa 长度错误 kaka 已存在的用户名 aaaaaaaaaaaaaaaaa 长度错误 aaaaaa 正确 111111 不能全为数字 aaa 密码长度错误 aaaaaaaaaaaaaaaaa 密码长度错误 aaaaaa aaaaaa 正确 Aaaaaa bbbbbb 两次密码不一致 编号 输入数据 输出数据 覆盖路径 校验结果 P1 P2 Del P1 Add P2 Display1 Display2 1 1 2 Y Y 5 null 1 F 2 1 2 Y N 3 null 1-2 F 3 1 2 N Y 6 1-2-3-5 1-2-3-5 F 4 1 2 N N 3 1-2-4-5 1-2-4-5 T 网上购物系统-论文
最新推荐
猜你喜欢
热门推荐