网上购物系统后台分析与实现

摘 要

本网上购物系统是一个基于Internet,采用B2C(Business to Consumers) [1]模式,并根据现有的网上购物系统的现状而设计开发的电子商务平台。它不但可以扩大商家的规模和市场影响力,而且可以减少企业的经营成本,提高工作效率。

本文首先介绍了网上购物系统的现状及开发背景,然后论述了系统的设计目标,系统需求和总体设计方案,较详细的论述了系统的详细设计和实现。最后,本文对网上购物系统进行了系统检测并提出了还需要改进的问题。

本系统主要为用户提供了会员注册,购物车管理,商品搜索,用户资料修改等功能,为管理员提供了商品管理,用户信息管理,新闻信息管理,广告链接管理等功能。在设计方面,本系统采用B/S三层结构,同时使用JSP技术进行动态页面的设计,从系统的安全性和代码的可重用性方面考虑,运用JavaBean对程序的关键代码进行封装。后台数据库选用Access数据库。

关键词   B/S结构/JavaBean/JSP/Access

THE ANALYSIS AND REALIZATION 

OF THE SHOP ONLINE SYSTEM

ABSTRACT

The shop online system is a electronic commercial platform which has been designed according to the situation of shop online system based on Internet with B2C mode. It can not only enhance the scale of shopping centre and market influence, and can also reduce the enterprise’s running cost, improve work efficiency.

The thesis has firstly introduced the practical situation and the developing background of the system. And then has described the designing goal、system need and the whole designing plan, has described the detailed design and reality of the system in detail. Finally, conclusion has been drawn about the system and problem has also been raised.

The system has mainly provided users with the following functions: membership registration、shopping car management、goods search、information modify etc. It has also provided managers with goods management、customer information management、news management 、ad management and so on. It has been designed with B/S mode of three-tier structure, JSP technology in dynamic page design. Considering from the security and reusing code of the system, key codes has been secured by JavaBean technology. Access database has been used as the background database.

Key Words   B/S, structure,JavaBean, jsp ,access

目  录

中文摘要………………………………………………………………………………Ⅰ

英文摘要………………………………………………………………………………Ⅱ

1 网上购物系统绪论

1.1 系统开发背景

1.1.1网上购物的发展

1.1.2网上购物系统的现状

1.2系统实现的目标

1.3系统的开发意义

2网上购物系统分析

2.1网站的设计目标

2.2网站的可行性分析

2.3网站的深入调查

2.4网站设计的特点

2.5网站开发的设计思想

2.6系统设计的总体规则

3 系统的开发技术及主要架构

3.1开发技术的选择

3.2系统的主要架构及开发模式

3.2.1基于B/S的体系结构

3.2.2基于MVC的应用开发模型

4 系统的功能和流程分析

4.1网站的功能分析

4.2 平台功能模块的设计分析

4.3 系统流程分析

4.3.1前台购物流程如图4-2 所示

4.3.2注册功能流程如图4-3所示

4.3.3商品搜索流程如图4-4所示

4.3.4用户登录流程如图4-5所示

4.3.5商品管理流程如图4-6所示

4.3.6购物车流程如图4-7所示

5 系统功能的具体实现

5.1系统数据库表的基本设计

5.2 功能总体说明

5.2.1 目录结构说明

5.2.2 功能页面结构

5.2.3 主要功能流程如图5-1所示

5.3各功能模块的实现

5.3.1数据库的连接

5.3.2用户登陆模块的实现

5.3.3 购物车模块的实现

5.3.4商品信息和新闻的实现

5.3.5后台管理模块的实现

5.3.6 商品搜索模块的实现

6 系统测试及难点分析

6.1系统运行环境的搭建

6.1.1 JAVA虚拟机的安装

6.1.2 Tomcat环境搭建

6.2 系统程序的安装和加载

6.2.1 文件的拷贝

6.2.2 数据库的连接

6.2.3 Myeclipse开发工具

6.3系统测试

6.3.1 系统关键部分测试分析

6.3.2 单元测试分析

6.3.3 测试分析总结及说明

6.3.4 系统的性能分析

6.4 系统中所存在的问题及解决方案

6.4.1 系统的整体设计和规划中的问题

6.4.2 开发功能模块所遇到的难点

6.4.3系统中存在的问题及拟定的解决方法

总结与展望

致  谢

参考文献

前 言

目前,网络正以一种前所未有的冲击力在影响着人类的活动,包括人类的生产和日常生活。网络的诞生和发展,颠覆了传统的信息传播方式,冲破了存在于传统交流方式中时间和空间的种种壁垒,极大地改变了人类从物质到精神、从形式到内容、从生产到生活的各种活动,并且给人类带来了新的机遇和挑战。

2006年1月17日,中国互联网络信息中心(CNNIC)在京发布“第十七次中国互联网络发展状况统计报告”。报告显示,截至2005年12月31日,我国上网用户总数突破1亿,为1.11亿人,其中宽带上网人数达到6430万人。上网计算机数达到4950万台,网络国际出口带宽达到136106M,网站数达到69.4万个。IP地址总数达到7439万个,仅次于美国和日本,位居世界第三。

而本次毕业设计的任务是,构建一个电子商务网站,采用的主要技术是基于服务器端的JSP、Java的组件JavaBean,以及网页编程语言HTML。

JSP[2]是Java Server Page的缩写,是由Sun Microsystems公司倡导、许多公司参与建立一种动态网页技术标准,它在动态网页的建设中有强大而特别的功能。JSP是一种服务器端HTML(或XML)嵌入Java代码的脚本语言,是开发Web动态网站快速而有效的工具,JSP的技术的优势:

1. JSP技术是用Java语言作为脚本语言的。Java语言是成熟的、强大的、易扩充的编程语言。

2. 高效性与安全性。JSP在执行前先被编译成字节码,字节码由Java虚拟机解释执行,比源码解释效率高。

3. 可维护性。由于JSP技术是一种开放的、跨平台的结构,因此Web服务器、平台及其他组件能很容易升级或切换,且不会影响JSP基本的应用程序。

4.稳定性。

5.产品的多样性。

目前,在国内JSP还是一种较新的技术。但JSP+Servlet+JDBC+JavaBean目前已经成为开发电子商务平台的主流技术。随着国内与国际的接轨,JSP必将成为网站开发技术的首选。

1 网上购物系统绪论

1.1 系统开发背景

1.1.1网上购物的发展

近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。

网上购物系统[3]作为B2B,B2C(Business  to  Customer,即企业对消费者),C2C(Customer  to  Customer,即消费者对消费者)电子商务的前端商务平台,在其商务活动全过程中起着举足轻重的作用。本文主要考虑的是如何建设B2C的网上购物系统。

网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。

1.1.2网上购物系统的现状

目前在国内PHP与ASP应用最为广泛。而JSP由于是一种较新的技术,国内采用的较少。但在国外,JSP已经是比较流行的一种技术,尤其是电子商务类的网站,多采用JSP。

采用PHP的网站如新浪网(sina)、中国人(Chinaren)等,但由于PHP本身存在的一些缺点,使得它不适合应用于大型电子商务站点,而更适合一些小型的商业站点。

首先,PHP缺乏规模支持[4]。其次,缺乏多层结构支持。对于大负荷站点,解决方法只有一个:分布计算。数据库、应用逻辑层、表示逻辑层彼此分开,而且同层也可以根据流量分开,组成二维阵列。而PHP则缺乏这种支持。还有上面提到过的一点,PHP提供的数据库接口支持不统一,这就使得它不适合运用在电子商务中。

ASP和JSP则没有以上缺陷,ASP可以通过Microsoft Windowsd的COM/DCOM获得ActiveX规模支持,通过DCOM和Transcation Server获得结构支持;JSP可以通过SUN Java的Java Class和EJB获得规模支持,通过EJB/CORBA以及众多厂商的Application Server获得结构支持。

三者中,JSP应该是未来发展的趋势。世界上一些大的电子商务解决方案提供商都采用JSP/Servlet。比较出名的如IBM的E-business,它的核心是采用JSP/Servlet的WebSphere;西方另外一个非常著名的电子商务软件提供商,Intershop。它原来的产品Intershop1 2, 3, 4占据了主要的电子商务软件份额。它们都是通过CGI来提供支持 的。但去年10月后它推出了Enfinity,一个采用JSP/Servlet的电子商务Application Server,而且声言不再开发传统软件。

总的来说,ASP,PHP,JSP三者都有相当数量的支持者,而这三者也各有所长,在开发过程中,我们应该根据实际的需要来使用最合适的技术,本系统则采用较新的jsp技术,一方面jsp的安全性和跨平台性比较好,另一方面,我也希望能从开发该系统的过程中,深入学习一下这门编程语言。

1.2系统实现的目标

现在流行的网上购物系统不仅要有漂亮的网页,更要有严谨的规划,注重每一个细小的环节。这样才能使得在电子交易时避免不必要错误发生。我们将使用HTML、JSP等技术来编辑网页,并运用JDBC技术把数据库和动态网页相关联。传统的管理信息系统信息获取方法是由专业文字录入人员将信息输入到管理系统的数据库中,这种方法在数据量不大时有很多的应用场合。当数据量比较大,并且有较强的专业性时,录入的费用和出错的可能性都相应上升。本设计在实际应用中的解决方案是建立网站,  以及自己的数据库,使得所需商品信息可以及时的保存、更新,可以更好的及时了解商品买卖的情况。

1.3系统的开发意义

Internet的发展[5],为改变传统的商业运作模式提供了一种技术上的可行性的方案:利用Internet的技术和协议,建立各种企业内部网Intranet,企业外部网Extranet,通过廉价的通讯手段,将买家与卖家、厂商和合作伙伴紧密结合在了一起,消除时间与空间带来的障碍,从而大大的节约了交易成本,扩大了交易范围。而在实际的生活中,这种方案已经被广泛的运用到了实际的商业活动中了,人们将这种交易模式称为:电子商务。

当今比较流行的网上购物系统国外有“淘宝(www.taobao.com)”,国内有“当当(www.dangdang.com)”。它们都是相当优秀的电子商务网站,对其他的网站提供了良好的典范。设计中可以学习参考他们的思想,了解和熟悉整个网站的开发流程及完整的电子商务网站应有的功能和注意事项。

设计和完成一个电子商务网站的,将会牵涉到许多技术上的问题,如:动态网页制作技术的,后台数据库的设计和管理,通过实际的制作个网站,可以避免纸上谈兵,在实践中掌握上述技术的使用。

2网上购物系统

系统分析是平台开发的一个不可缺少的环节,为了能够使本系统更好、更完善地被设计出来,就必须先进行调查研究。在系统调查的基础上,对新系统的功能进行细致的分析,从而才能够开发出完整的系统设计。

2.1网站的设计目标

本购物系统由于需要演示程序,故为了演示方便,采用JSP+Access数据库的架构实现的,此系统分为前台管理和后台管理。前台管理是友好的操作界面,供用户浏览、查询使用。包括:浏览商品、查询商品、订购商品、购物车、用户维护等功能;后台管理是提供给管理员的,其中包括:商品管理、用户管理、网站信息管理、和广告友情链接等。使管理员从繁琐的手工操作中解脱出来,并提高了办公效率。

2.2网站的可行性分析

随着计算机技术的发展和网络人口的增加,网络世界也越来越广博,越来越丰富,电子商务已经成为网上的一股潮流。我们相信要不了太长有时间,顾客就可以在网络世界上获得他们在现实世界上可以获得的所有商品和服务。

可行性研究是为了弄清楚系统开发的项目是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也是很重要的,经过最初的设计目标和进行的市场调查得出以下四点的可行性分析[6]:

(1)经济可行性:该平台设计只是作为本人的毕业设计,又因为本人的设计能力有限,其功能还不能完善,所以没有什么经济效益可谈。

(2)技术可行性:JSP+Servlet的技术已经较为成熟。

(3)运行可行性:该系统需要搭建JVM即JAVA虚拟机和Tomcat环境,在此环境下系统,并且在正确连接数据库后可以正常运行。

(4)法律可行性:该平台是作为毕业设计与商业无关,又因为是自主开发设计,因此不会构成侵权,在法律上是可行的。

通过以上的可行性分析,我将采用JSP+Servlet相结合的技术,运用Access数据库对网站进行建设。

2.3网站的深入调查

经过以上的初步调查和研究,并且确定了该平台的可行性,并决定开发本平台,为了能够对现行的平台内容进行充分了解,使所要开发的平台更具有实用性和适应性,通过两个月的实习调查和指导老师的耐心介绍,设计出该平台功能如下:

1. 能够完成用户基本信息录入的注册和用户基本信息的个人前台与后台管理。

2. 能够完成管理员对网站的商品资料(商品添加、商品审查)会员管理(会员审查)、网站信息管理(新闻添加、修改删除、公告设置),以及常规设置(广告添加,友情链接)的功能。

3. 能过电子商品的名称,电子商品的分类进行搜索。

4. 能够通过查看购物车对所选商品进行确定、挑选,通过定单查询对支付费用进行确定。

经过前一阶段的调查与研究分析,我已确定了该平台设计的主要功能,对每个功能模块也作了具体描述,下面就来具体分析该平台的设计特点与具体思想。

2.4网站设计的特点

我所设计和开发的网上购物平台是经过很长时间的调查和分析才开始具体实施的,它的主要特点是改变了以往的购物只能过现实的商场才能达到的结果,采用Web技术,借助于Internet互联网广泛应用技术,达到资源共享,提高以往购物的局限性,缩短人们的时间和提高工作效率,具有较好的交互性,从而实现信息化,规范化,系统化,网络化的平台,使整个购物活动过程简单、方便、易行。

2.5网站开发的设计思想

网上购物平台主要是对后台管理和前台操作。后台管理是管理员对本网站的维护,通过商品资料(商品添加、商品修改)会员管理(会员审查)网站信息管理(新闻添加、修改删除、公告设置),以及常规设置(广告添加,友情链接)等功能达到对网站的管理。前台操作是用户登录到本网站,可以进行用户注册,通过网站的精品推荐或商品搜索功能,找到自己想要买的商品,装入购物车,提交定单进行购买。

网上购物平台的特点是客户和电子商品信息量很大,管理员需要整理的信息很多,为让管理员轻松、方便、快捷的管理,该平台采用符合购买电子商品基本的原则,满足广大客户的日益增长的数量,并达到操作过程中的直观、方便、实用、安全等要求。

2.6系统设计的总体规则

无论哪个网站都要有它自己的设计规则。该平台也一样,它的主要设计规则有:

简单性:在实现平台的功能的同时,尽量让平台操作简单易懂,这对于一个网站来说是非常重要的。

针对性:该平台设计是网上购物系统及后台管理的定向开发设计,所以具有专业突出和很强的针对性。

实用性:该平台能完成电子商品展示和管理员管理的基本信息,具有良好的实用性。

3 系统的开发技术及主要架构

3.1开发技术的选择

合理的选择开发技术,对于网站开发的完成情况有着非常重要的影响。要开发一个网站,首先要选择一个动态网页开发技术。当前比较流行的动态网页开发技术有JSP、ASP、PHP。它们的特性比较如表3-1所示[7]:

表3-1 asp/jsp/php比较表

技术名称

ASP

JSP

PHP

对数据库的支持

开发难易度

容易

容易

较难

使用平台

Windows9X/NT

Windows/UNIX

UNIX

安全性

不好

不好

对组件的支持

支持

支持

不支持

执行方式

解释执行

编译之后执行

解释执行

跨平台

不好

  

这三种都是在传统的HTML代码中,利用HTML标签的扩展,构成页面。不难看出,JSP的综合实力是最强的,尤其是在安全性和跨平台性两个方面,比其他的两种技术都要好,因此,最后我们选择基于Java的JSP技术作为动态网页的开发技术。

3.2系统的主要架构及开发模式

系统的建设关键在于其所使用的架构,而网上购物这种基于web的系统,传统的c/s架构已经不能满足大量用户的访问和操作,b/s基于浏览器的架构则是目前网络系统应用的主流,它将大量的数据处理工作交给服务器端来处理,客户端只用通过普通的IE浏览器即可访问系统,方便快捷而且利于系统的更新和维护,java语言在该方面更是得天独厚,j2ee规范的出现则使系统的开发更加规范,层次更加清楚,更利于对复杂事务的处理,而且在安全性方面也做的更好。基于mvc的开发流程则使开发过程更加清晰明了,利于做一些复杂的逻辑实现,从而节省了开发周期和开发成本。

3.2.1基于B/S的体系结构

 在B/S体系结构[8]系统中,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。B/S结构简化了客户机的工作,客户机上只需配置少量的客户端软件。服务器将担负更多的工作,对数据库的访问和应用程序的执行将在服务器上完成。浏览器发出请求,而其余如数据请求、加工、结果返回以及动态网页生成等工作全部由Web Server完成。实际上B/S体系结构是把二层C/S结构的事务处理逻辑模块从客户机的任务中分离出来,由Web服务器单独组成一层来负担其任务,这样客户机的压力减轻了,把负荷分配给了Web服务器。这种三层体系结构如图3-1所示。

图3-1 B/S三层架构示意图

 这种结构不仅把客户机从沉重的负担和不断对其提高的性能的要求中解放出来,也把技术维护人员从繁重的维护升级工作中解脱出来。由于客户机把事务处理逻辑部分分给了功能服务器,使客户机一下子"苗条"了许多,不再负责处理复杂计算和数据访问等关键事务,只负责显示部分,所以维护人员不再为程序的维护工作奔波于每个客户机之间,而把主要精力放在功能服务器上程序的更新工作。这种三层结构在层与层之间相互独立,任何一层的改变不会影响其它层的功能。

3.2.2 基于MVC的应用开发模型

在传统的基于Web的应用系统中,例如ASP,CGI等,通常开发者将业务逻辑,数据逻辑、展示逻辑等混杂在一起,在同一个界面面里既进行后台数据库的访问和操作,同时还包含业务流程和页面表示。这样编写出来的程序,既不利于程序员对业务代码的调试,同时也不利于编辑人员进行交互页面的设计。同时系统也不具备可扩展性,当我们要在现有业务上进行扩展的时候,通常无法借助于现有的资源和应用,而只能够重新编写,大大增加了投资,延长了系统上线的时间,失去了竞争市场的优势。

在本网上购物系统中,将采用通行的MVC模式来构建应用。这种结构解决了前面所述的所有问题,在我们的应用集成网络中,通过企业级高端J2EE应用服务器实现MVC开发模型。MVC的逻辑图[9]如图3-2所示:

图3-2应用服务器之上采用MVC开发的逻辑示意图

图3-3  MVC业务流程示意图

通过这种方案,我们可以迅速地实现整个业务,其优势和特点如下:

Model(模型)层:由EJB组件来实现,EJB将具体的业务封装在组件内部,具备安全、高性能、可重用等优秀的特征。

View(视图)层:由JSP、HTML组成。这一层次的特点是能够真实地展示和客户交互的界面,具备可描绘的功能。同时能够嵌套动态数据,可以进行动态页面的展示。同时可以方便地进行客户端的个性化定制。根据每个客户的需求来展示不同风格的界面。

Controller(控制器)层:是非常重要的一层,这一层是连接View和Model的纽带,同时也是将这两层进行最大限度分离的工具。通常由Servlet来实现,Servlet和JSP虽然同样都属于页面展示工具,但分属两层。主要在于JSP以脚本语言的形式存在, 它的主要优势是进行动态数据的Web展示,而Servlet是一个完整的Java程序,进行业务的调用和流程的处理是它的长处。

通过这种模型的建立,我们的应用系统具备了非常好的性能和可扩展性。将业务组件和展示页面进行分离,并通过Controller来描述调用关系,一方面可以提高效率,另一方面也可以增加系统扩充的能力,使我们的系统可以进行最快速度的业务扩展,以满足不同用户、不同阶段、各种各样的业务需求。

4 系统的功能和流程

4.1网站的功能分析

经过前期的深入调查和研究,总结出该平台需要完成的一些具体功能,分析如下:

用户管理      能够完成用户基本信息录入的注册和用户基本信息的修改。

管理员管理    能够完成管理员对网站的商品信息管理(商品添加、商品审查)、会员管理(会员审查)、网站信息管理(新闻添加、修改删除、公告设置),以及常规设置(广告添加,友情链接)的功能。

搜索功能       能过电子商品的名称进行搜索。

查询功能       能够通过查看购物车对所选商品进行确定、挑选。

4.2 平台功能模块的设计分析

在平台功能的分析基础上,得到本平台的功能模块图如图4-1所示: 

图4-1 平台购物模块图

用户进入网上购物平台,用户可以注册,然后登录后可以进行修改资料,用户可以通过商品搜索,找到自己想要产品。管理员可以通过后台登录进去进行会员管理,商品管理,新闻管理和广告链接管理。在会员管理中,可以对会员就行添加删除,在商品管理中可以对商品进行添加修改,在广告链接里面可以对广告设置和友情链接进行管理。

4.3 系统流程分析

4.3.1前台购物流程如图4-2 所示

图4-2 前台购物流程图

用户再前台可以浏览商品,看到自己喜欢的商品可以选择商品,然后订购商品,这时需要进行判断,如果是没有注册的用户,那么系统跳到注册页面,如果是注册了没有登录的用户,则跳转到登录页面,已经登录的用户则跳转到购物车页面,然后去收银台结帐,然后提交订单。

4.3.2注册功能流程如图4-3所示   

图4-3 注册功能流程图

注册的具体实现为:

点击主页面的用户注册选项后,会弹出一个注册信息页面,用户需要如实填写用户名,密码,E_mail,地址,电话,真实,姓名等各项信息,提交后,系统进行检测判断该用户名是否已经注册过,如果已经存在则弹出新页面,提示用户该用户名已经注册过,如果没有则进行下一步判断,用户输入的两次密码是否一致,然后依次往后判断用户所填写的各项信息是否符合要求,直到所有信息均正确无误,系统将该用户注册信息写入会员表即member并提示用户注册成功,用户登陆后,就可以进行有效的购物了。

4.3.3商品搜索流程如图4-4所示

图4-4 商品搜索流程图

商品的搜索功能使用户更加方便的进行自己所需要的商品的查询,节省时间,提高效率。用户搜索时只要输入商品的关键字就能搜索到所有相关的商品。并且能列出通过搜索得到的商品的详细信息。

4.3.4用户登录流程如图4-5所示

图4-5 用户登陆流程图

用户登录,首先要有一个提供用户登录的表单。用户登录的表单应该嵌入整体的结构当中。在实际的应用中,可以这样设计,如果用户没有登录,则在页面中显示用户登录的选项,用户登录后,则可隐藏用户登录的选项而代之以用户的基本信息。

首先,用户要有一个用户名和密码。商务网站需要很高的稳定性和安全性,因此对用户名不允许使用恶意的代码作为用户名。同时对密码也要求保密,将密码加密后再存入数据库。另外,一个电子商务网站。用户的真实姓名是必不可少的。除此之外还需要用户的性别、E-MAIL、电话号码等。

4.3.5商品管理流程如图4-6所示

图4-6 商品管理流程图

在该功能里管理员可以进行不需要的商品的删除,在这里管理员当然也可以浏览到商品的详细信息。并且比普通用户在浏览商品界面里所看到的商品信息多一个该商品在数据库中的ID。

4.3.6购物车流程如图4-7所示

购物车具体的实现可采用这种形式:定义一个购物车的类(Class)。

1.列出商品的列表,使用户能够自由选择所需要的商品。

2.当用户在点击“添加到购物车”的链接时,执行如下功能:

检查用户购物车类是否存在。如不存在,则建立,并注册这Session变量;在有用户购物车类存在的情况下,检查该类中是否有该商品。如存在,则商品数量相应加1;如没有该商品,则将该商品添加到该类中。

         

图4-7  购物车流程图

5 系统功能的具体实现

5.1系统数据库表的基本设计

在建设网站系统之前,我们必须对系统所用到的数据进行大致的分类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数据库是系统的重中之重。

数据库设计要遵循一些规则,一个好的数据库满足一些严格的约束和要求。尽量分离各实体对应的表,一个实体对应一个表,搞清楚该实体有哪些属性,对应有些什么字段,以及各实体之间有何种联系。实体、属性与联系是进行概念设计时要考虑的三个元素,也是一个好的数据库设计的核心。

从实际出发,经过仔细地设计,得到各表的设计,它们分别是表5-1商品信息表,表5-2 会员信息表member,表5-3购物车表basket,表5-4管理员表admin,图5-5新闻列表news,表5-6网站信息表system,表5-7 广告信息列表ad。

表5-1 商品信息表

字段

字段名

类型

宽度

小数位

索引

可否为空

Hw_id

商品编号

自动编号

Hw_name

商品名称

文本型

50

Hw_cash

商品价格

数值型

18

2

Hw_content

商品信息

备注型

255

Hw_pic

商品图片

文本型

255

Hw_buys

商品数量

数值型

18

Hw_date

商品日期

日期型

[说明]对于商品信息表,因为经验不足,我将其关键字段hw_id商品编号采用的是Access数据库中的自动编号,虽然也确定了商品信息的唯一性,但不具备直观的特点,在实际应用中最好是将其设置一个命名规则,管理人员在添加商品的时候能够自动产生一个有一定规则和一定意义的命名规则,方便管理人员对其进行管理和维护,例如对于手机类商品可将其编号设置为mobile+型号+添加日期,这样更容易对商品进行管理。Hw_pic字段代表图片,但在这里存放的只是它的路径所以应该使用文本类型。

表5-2 会员信息表member

字段

字段名

类型

宽度

小数位

索引

可否为空

User_id

会员编号

自动编号

User_name

会员帐号

文本型

50

User_pass

会员密码

文本型

50

User_adds

会员地址

文本型

255

User_mail

会员E_Mail

文本型

50

User_tel

会员电话

文本型

50

User_regtime

注册时间

日期型

User_postcode

邮政编码

文本型

50

User_namec

会员姓名

文本型

50

[说明]对于会员信息表,会员编号也要有一定的命名规则,另外会员帐号的命名规则也有一定要求,如必须以字母开头,不能有特殊字符,长度大于4个字符小于16个字符等等,还有一个需要注意的是用户密码,由于Access数据库本身不提供特殊字段的加密,用户注册以后注册密码是以明码形式存放在数据库中,这对系统来说是极不安全的,因此需要我们用一些特殊工具来对其进行加密。

表5-3购物车表basket

字段

字段名

类型

宽度

小数位

索引

可否为空

Basket_id

购物车编号

自动编号

Hw_id

商品编号

自动编号

User_name

会员帐号

文本型

50

Basket_count

商品数量

数值型

18

Basket_date

购物时间

日期型

Basket_check

是否结帐

是/否

Hw_name

商品名称

文本型

50

Hw_cash

商品价格

数值型

18

2

Sub_number

订单编号

文本型

50

[说明]购物车表则是系统中与其他几个表关系最多的一个表了,它包含了商品表,会员表中的几个重要字段,是我们进行最后购物统计的主要依据,我们在确定购买一样商品的时候,系统将数据写入购物车表,在用户确定去结帐之前basket_check值为否,确定之后值变为是,一个用户可能对应多个basket记录,但在统计的时候,仅对basket_check为真的记录进行统计,这样就可以避免造成统计错误。

表5-4管理员表admin

字段

字段名

类型

宽度

小数位

索引

可否为空

Admin_id

管理员编号

自动编号

Admin_name

管理员帐号

文本型

50

Admin_pass

管理员密码

文本型

50

[说明]该表和会员表一样存在字段的命名规则的要求,出于安全考虑对于管理员帐号发放应该谨慎,管理人员数量一定要控制,越少越安全,在实际应用中,我们还要对整个数据库进行加密,以防止系统重要数据泄漏。

图5-5新闻列表news

字段

字段名

类型

宽度

小数位

索引

可否为空

News_id

新闻编号

自动编号

News_title

新闻标题

文本型

255

News_content

新闻内容

备注型

News_date

新闻日期

日期型

[说明]存储网站新闻信息,与其他表没有关联。

表5-6网站信息表system

字段

Name

Mail

Tel

Adds

OICQ

MSN

Sitename

Fax

Code

字段名

姓名

信箱

电话

地址

QQ

MSN

网站名称

传真

邮编

类型

文本

文本

文本

文本

数值

数值

文本

文本

文本

[ 说明]该表主要存储一些网站信息,如系统管理员的联系方式等,以页面的形式提供给用户,与其他表没有关联。                                                  

表5-7 广告信息列表ad

字段

字段名

类型

宽度

小数位

索引

口否为空

Id

自动编号

自动编号

url

链接地址

文本型

50

Wordlink

链接名称

文本型

50

Content

链接内容

文本型

50

[说明]该表为单独的表,与其他表没有关联,主要存储一些链接网站或广告信息。

5.2 功能总体说明

5.2.1 目录结构说明

(1) admin 用于存储系统管理员的后台操作脚本,包括商品类别管理、商品信息管理、站内公告管理、订单管理、系统用户管理等功能;

(2) pic 用来存储商品的图片资料,管理员上传的商品图片也存在这里。

(3) img 用来存储网页上的图片文件。

(4) database 用来存储系统的数据库,由于环境限制,本系统采用的是windows自带的Access数据库,所有的相关表也都放在这里。

(5) Class 用来存储封装起来的一些servelet,也可称为JavaBean文件。

5.2.2 功能页面结构

(1)前台功能页面

主页面框架:

index.jsp,top.jsp,in-search.jsp,includenotice.jsp,paihang.jsp,middle.jsp

商品展示:bought.jsp,cash.jsp,showing.jsp,views.jsp,inproduct.jsp  

登陆注册:dengluyufou.jsp reg.jsp,regsave.jsp,quit.jsp

(2)后台管理页面

主页面框架:index.jsp,manage.jsp,left.jsp,main.html,quit.jsp

商品管理:addhw.jsp,changehw.jsp,changehw_ok.jsp,savehw.jsp,delhw.jsp

用户管理:viewuser.jsp

新闻管理:addnews.jsp,editnews.jsp,delnews.jsp

公告管理:gg.jsp,gg2.jsp,ggdel.jsp

广告链接:guanggao.jsp,links.jsp,savelinks.jsp

5.2.3 主要功能流程如图5-1所示

图5-1 主要功能流程图

用户根据图示完成网上购物的基本流程,在前面已经详细说过。

5.3各功能模块的实现

5.3.1数据库的连接

出于安全性的考虑,我们将与数据库的连接,单独写出来并进行编译,也就是数据库连接的javabean文件,编译出来的.class文件是无法被修改的只能通过源文件进行修改,我们在JSP页面中只用直接调用改方法即可,在本系统中我们将其命名为为.faq

存放在class/ckstudio/db下设其id为mdb,我们在需要对数据库进行操作的时候只需在页面上添加这样一个标签<jsp:useBean id="mdb" class="ckstudio.db.faq" scope="page"/>即可。连接关键代码如下:

String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};

DBQ="+strDirPath+"db.mdb";

  定义连接地址

Connection conn = DriverManager.getConnection(url);

连接数据库

5.3.2用户登陆模块的实现

用户登陆模块是防止非法用户登陆的第一道防线,通过它可以保护后台数据库的安全性,当用户要进行定购时,首先要进入的就是身份验证界面,只有在密码正确的情况下才能进行以后的购物,如果输入的密码不正确,则不能进行定购。如果用户以浏览者的身份进入网站,则只能进行一般的商品浏览和搜索,而不能进行选购,在点击添加购物车后,系统会判断该用户是否是登陆用户,如果不是则弹出提示页面,提示用户必须先登陆才能定购商品,如果是第一次登陆,请先注册。

主页面的效果图如下图5-2所示:

                           图5-2 主页面示意图

如果用户还不是会员则提示用户进行注册,用户提交信息之后,系统开始判断用户的注册信息是否有效,首先是用户名是否为空,(该处存在用户名命名规则的问题,后面问题中会详细解决)用户输入的两次密码是否一致,然后依次往后判断用户所填写的各项信息是否符合要求,直到所有信息均正确无误,系统将该用户注册信息写入会员表即member并提示用户注册成功,用户登陆后,就可以进行有效的购物了。

注册页面的效果图如下图5-3所示:

图5-3注册页面示意图

系统对用户的注册信息的验证实现如下:

用户输入的各项信息分别对应字段

先判断用户名是否为空request.getParameter("user_name").equals("")  

同样道理对密码进行判断

判断两次输入是否一致user_pass.equals(user_pass2)

其他选项与上面类似,如果条件符合则将该值赋给各个字段

用户名重复的验证代码为:

sql="select * from member where user_name='"+user_name+"'";

当所有条件都符合的时候,系统将数据写入数据表,并返回成功页面,显示用户所填的注册信息,写入关键语句为:

sql="Insert into member(user_name,user_pass,user_adds,user_mail,user_tel,user_regip,user_namec)values('"+user_name+"','"+user_pass+"','"+user_adds+"','"+user_mail+"','"+user_tel+"','"+request.getRemoteHost()+"','"+getStr(request.getParameter("user_namec")))";

登陆的具体实现要通过一个全程变量,即Session变量来实现,在系统中则由一个单独的session.jsp页面来放置该session。用户登录的界面dengluyufou.jsp,从member表查得用户提交的帐户名和密码正确后,用一个全局变量,即Session变量保存这一消息(该变量名称为Session(“user_name”))。示意图如图5-4所示

图5-4  登录示意图

具体的判断过程为:

若session中user为空即session.getAttribute("user_name")==null,表明没有经过登陆与否的验证,则立即跳转到dengluyufou.jsp,请用户登录;并将用户登陆的帐号和密码通过

关键代码为:String sql="select * from member where user_name='"+user_name+"'";

如果user_name存在的话则判断其密码是否正确

如果为真则将用户信息赋给session session.setAttribute("user_name",""+rs.getString("user_name")+"");

以方便系统对用户在操作一些会员功能时进行用户身份验证。

登录后,可以马上看到自己的资料,如图5-5所示:

图5-5  用户信息示意图

用户在登录之后也可以对自己的资料进行修改,在点击主页面的修改资料之后,弹出这样的一个页面,用户可以直接在文本框里修改,然后确认。如图5-6所示

图5-6  用户资料修改示意图

修改这一过程的具体实现过程为

sql="select * from member where user_name='"+user_name+"'";

根据用户名将该用户的所有信息列出来,以供用户修改,

修改的方法采用的是rs.updateString("user_pass",user_pass);其他的类似。

5.3.3 购物车模块的实现

当用户登陆成功以后,如果找到了希望定购的物品,在点击物品下方的定购以后,系统会弹出一个新的页面,显示该物品已经添加进购物车,然后用户需要选择定购的数量。页面效果如图5-7所示:

图5-7购物车示意图

在点击确认以后,该物品信息被后台添加到购物车表即basket表中,如果用户需要继续购物,可以继续选择,不断添加,系统会自动将所有信息写入basket表,同时显示用户所购买的物品列表,及合计价格。

其具体代码实现过程为:

从session中取得该用户的信息

user_name=(String)session.getValue("user_name");

对商品的信息进行提取以写入购物车表

具体的写入语句为:

sql="insert into basket(hw_id,user_name,basket_count,hw_name,hw_cash)";

sql=sql+"values('"+hw_ids+"','"+user_name+"','"+counts+"','"+hw_name+"','"+hw_cashs+"')";

以下是用户执行确认后的示意图,如图5-8所示

图5-8 所购商品信息示意图

如果用户在去收银台结帐前对已经选购的物品不满意时,可选择清空购物车,同时系统也将basket表中相关信息删除。用户完成选购之后,可点击收银台付款,系统返回最终选购物品列表和合计价格,如图5-9所示:

图5-9收银台结帐示意图

该步骤实现的关键语句为:

String sql="select * from basket where user_name='"+user_name+"'and basket_check=false";

系统只统计basket_check为否的该用户选购的商品信息。

用户再一次确认后,系统会显示购物成功并返回给用户一个定购单号,提示用户填写收货人详细信息,包括姓名、地址、邮编、邮箱、电话、付款方式、备注等信息,这些信息是系统自动从用户表中提取出来的,用户可以修改,如图5-10所示

图5-10  定货单示意图

这一步的具体实现与用户资料修改类似,都是先将该用户的相关资料从数据库中调出来sql6="select * from member where user_name='"+(String)session.getValue("user_name")+"'";然后使用方法update对表中各项信息进行修改。

确认后,系统弹出提交成功页面,如图5-11所示:

图5-11 订货成功示意图

该页面也就是将用户提交的订单信息返回,并产生了一个唯一订单号,以方便用户查询,这个订单号的产生,并不是随机产生的,而是使用了一定的规则,在这里主要是根据用户名和订单产生的时间来生成订单号,具体的代码如下:

String sub_number="";

String now=(String)((new java.util.Date()).toLocaleString());

sub_number=user_name+now;

相类似的,系统中的其他类似字段也可以使用这样规则来产生随机编号,以方便管理

5.3.4商品信息和新闻的实现                                                        

商品信息主要是为了让顾客对所需要的信息就行了解。其中网站设置会员价格和VIP会员价格,一般会员享受会员价格,付费的VIP会员享受VIP价格。如图5-12所示:

图5-12 商品信息示意图

其中商品显示的关键代码如下:

sql="select * from hw where hw_id="+hw_id;

然后用<%=pifa%>的方法读出数据库内容。

新闻的显示同商品信息方法一样,代码不再写出,如图5-13所示:

图5-13 新闻信息示意图

5.3.5后台管理模块的实现

网上购物系统除了能够让用户实现前台的浏览和购物等操作之外,还必须能够使管理人员能够对系统的各种信息进行维护,比如商品的增加、删除、修改,会员的审查,网站新闻的更新等等。管理功能是网上购物系统相当重要的一部分功能。

管理员可以通过主页面的“后台管理”进入系统后台进行维护,点击之后,首要的就是进行身份验证,输入正确的帐号,密码之后,方能进入。由于涉及到交易,出于安全性考虑,管理员帐号应尽量少分配,密码也要尽量复杂,经常更换。

后台登录首页面如图5-14所示:

图5-14 后台登录示意图

这个过程中,点击登录后,将用户名和密码框中的值传递到2login.jsp中进行验证,如果用户名和密码同数据库中的一致,那么登录成功,转到manage.jsp页面中。具体实现关键代码如下:

String sql="select * from admin where admin_name='"+admin_name+"' and admin_pass='"+admin_pass+"'";

进入之后系统管理的主页面 采用了框架结构,左边是一个树型菜单,右边显示具体信息。

如图5-15所示:

图5-15 后台登录首页界面

管理的主要功能有商品信息的更新,会员信息维护,网站信息维护,广告链接设置等四大块,商品信息管理,主要就是添加新的商品,删除和修改已经添加的商品。

添加商品的界面如图5-16所示:

图5-16 商品添加界面

 这一部分的实现也没有新的方法,使用的依然是一些sql语句来对相关数据进行添加和修改,添加的关键的sql语句用insert into插入就可以。这里不在贴出

修改则使用update语句。

查看与修改商品页面如图5-17所示:

图5-17 商品管理界面

删除商品主要用到的关键语句为sql语句:

sql="delete * from hw where hw_id="+Cint(request.getParameter("hw_id"));

其中需要用到记录集分页功能,由于代码过长,故只说出主要思想:

int PageSize =20; //设置每张网页显示两条记录

int ShowPage = 1; //设置欲显示的页数

int RowCount = 0; //ResultSet的记录数目

int PageCount = 0; //ResultSet分页后的总页数

int duoyu=0;

sql="select * from hw order by hw_id DESC";

rs=mdb.executeQuery(sql);

然后for循环hw表,对数目进行判断。

点击修改,可看到以下界面,如图5-18所示:

图5-18 商品修改界面

实现方法和添加的sql语句差不多,修改用update语句实现就可以了。

会员信息管理,则主要是添加会员和对一些恶意注册用户进行删除。添加会员主要分两种,一种是付费的享受最低价格的VIP用户,另一种是网站注册的普通用户。界面如图5-19所示:

图5-19 用户添加界面

添加用户和添加商品的语句都是用insert 插入,主要sql语句是:

sql="insert into member(user_name,user_pass,user_type) values('"+user_name+"','"+user_pass+"','"+user_type+"')";

mdb.executeInsert(sql);

以下是用户删除界面如图5-20所示:

图5-20 会员信息管理界面

删除则用delete语句:sql="select * from member where user_id="+user_id+"";

网站信息管理,进行网上新闻的发布,修改删除,以及系统公告等信息的设置,这些功能虽然无关紧要,但在实际中却能方便用户,提高网站效益。

以下是新闻添加界面如图5-21所示:方法同样用到insert

图5-21 新闻信息管理界面

新闻管理添加主要添加首页上面的新闻。可以写入html标记语言来控制。

以下是新闻管理页面如图5-22所示:

图5-22  新闻管理界面

这里只是用到后台读取数据库信息,应用sql语句的select查询新闻表就可以了,然后把新闻表中的记录全部输出,用记录集rs来标记。

下面用到分页技术,int PageSize =20; //设置每张网页显示两条记录

int ShowPage = 1; //设置欲显示的页数

int RowCount = 0; //ResultSet的记录数目

int PageCount = 0; //ResultSet分页后的总页数

int duoyu=0;

sql="select * from news order by news_id DESC";

rs=mdb.executeQuery(sql);

然后for循环news表,对数目进行判断。

以下司新闻修改界面如图5-23所示

图5-23 新闻修改界面

新闻修改可以对已经发表的新闻进行修改,里面同样可以加入标记语言,这样可以更好的控制格式。

网站公告对于一个购物网站来说至关重要,因为他标识着网站的最新动态,可以让消费者更清楚的知道最近有什么消息。如图5-24所示

图5-24 网站公告添加界面

广告设置,可以让商家在网站上投放广告,这样给自己网站带来一些经济上的收益。

广告界面如图5-25所示:

图5-25 网站广告管理界面

友情链接,主要是链接一些合作单位的网页,不仅能结识各大网站的站长,也可以为自己的网站宣传,让别人更好的找到你。

友情链接界面如图5-26所示:

图5-26 友情链接管理界面

在完成系统的更新之后,作为管理人员,应该及时注销自己的帐户,树型菜单的上方提供了注销登陆的选项,点击之后,注销用户,并返回到前台页面,防止他人恶意修改网站信息,造成不必要的损失。

以上两个部分都是比较简单的功能实现,具体实现过程与前几个类似。

5.3.6 商品搜索模块的实现

网上购物作为一个在网上展示自己商品的销售系统,如何能让用户以最快的速度找到自己希望买到的物品,也是需要非常重视的一个问题,此时搜索引擎也就必不可少了。本购物系统也做了一个小模块,以供用户进行一些模糊查找,用户不必输入全部名称,只需输入一些关键词,系统就可以将符合该查询条件的所有商品信息以网页形式返回给用户。

该搜索功能在jsp页面中实现的关键代码为:

则按商品名称进行搜索

sql="select * from hw where hw_name like '%"+hw_name+"%'

order by hw_id DESC";查找出所有含有该关键字的商品信息

6 系统测试及难点分析

6.1系统运行环境的搭建

6.1.1 JAVA虚拟机的安装

本系统采用的是基于java的jsp技术 ,所以java虚拟环境即java虚拟机是必须要安装的。

JDK(Java Development Kit )是一切java应用程序的基础,可以说,所有的java应用程序是构建在这个之上的。它是一组API,也可以说是一些java Class。目前已经正式发布的最新版本是JDK1.5。Windows下,直接运行.exe文件,安装到一个目录,如C:/jdk1.5,安装完成后就是环境变量的设置。

桌面上选择“我的电脑”(右键) ->高级 ->环境变量 ->在“系统变量”--->“新建” ->在变量名中输入:JAVA_HOME,变量值中输入: C:/jdk1.5   同样再新建一个变量名CLASSPATH,变量值中输入:C:\jdk1.5; C:\jdk1.5\lib\dt.jar; C:\jdk1.5\lib\tools.jar;  还需要在Path变量值后面添加一个值:C:\jdk1.5\bin。至此JAVA环境安装成功。我们可以在命令行中敲入命令java 如果显示java帮助,则证明环境设置成功。

6.1.2  Tomcat环境搭建

安装TOMCAT,直接使用默认安装就可以了,假如我们将其安装在C:\Tomcat5.5,

安装完毕后,开始设置环境变量,新建环境变量CATALINA_HOME,值为C:\Tomcat5.5,新建CATALINA_BASE,值为C:\Tomcat5.5。

打开Tomcat5.5文件中的bin文件,双击其中的运行程序Server Runner,显示server start,服务器正常启动,此时在浏览器上敲入本地测试地址:http://localhost:8080 如果出现 Tomcat页面则证明 Tomcat安装成功,而且正常启动。

到这里,系统运行所需要的基本运行环境已经安装完成。

6.2 系统程序的安装和加载

6.2.1 文件的拷贝

我们可以将整个系统文件夹shop拷贝到Tomcat的默认根目录下,一般路径为:

C:\Tomcat5.5\webapps\ROOT。

6.2.2 数据库的连接

因为该系统仅作为毕业设计使用,为了方便演示和运行,系统所用数据库,采用了office自带的Access数据库,系统所用到的所有表都在其中,这里的数据库名称为db,放在目录shop/database/下面,连接使用ODBC数据源连接。

数据源设置步骤:(windows操作系统)

 1.进入“控制面板”-->管理工具”--->“数据源(ODBC)”

 2.选择“用户DNS”

 3.点击“添加”---〉选择驱动器“Microsoft Access Driver”---点击“完成”

 4.填写数据源名:shnxn

 5.选择数据库:shop下面database下的db.mdb,为了安全,您可以把数据库放置在任何地方,只需保证这里的连接到那个数据库即可;

 6.单击“确定”

 7.完成数据源设置

设置完数据源以后,把文件中的classes文件下的所有文件夹复制到 网站根目录的web-inf文件夹下面;

然后重启服务器即可。

在浏览器敲入地址:http://localhost:8080/shop/ 我们可以看到网站的主页面已经出现,至此,系统加载成功。

6.2.3 Myeclipse开发工具

下面请看开发界面如图6-1所示:

图6-1 myeclipse开发界面

Myeclipse7.0是开发jsp的强有力的工具,他集成了很多插件,本网上购物系统就是在Myeclipse7.0的平台上开发的。

6.3系统测试

6.3.1 系统关键部分测试分析

系统完成之后,对各个模块的功能进行了详细的测试,输入数据和预测输出数据相比,发现了一些问题。主要是在查询过程中预计查询结果和实际结果不一致,有时候达不到目的,对数据库的操作表之间的关联考虑得不够周到,因此往往会出现一些小的错误。还有查询条件的前后数据类型不一致也是一个很常见的错误,需要靠一步步的查找解决。各个模块组装完成后,又会出现一些问题。比如在操作购物车结帐的这个流程中,由于是多次添加和修改,最后结帐,所以很容易造成数据混乱,必须对相应的数据关系理清楚,一些关键查询统计的SQL语句必须反复斟酌才能放在程序中使用。

6.3.2 单元测试分析

(1)经过上面部分的分析,我们可以得知,购物车模块是我们需要特别注意的地方,因为它涉及到了我们数据库中的大部分数据,并且是进行网上交易的最关键部分,绝对不能出现任何的差错,下面我们就针对这一模块进行用例测试:

我们以用户fywang的身份登入系统,用户名是:fywang密码是:fywang

然后点击定购商品:THE FACE SHOP 顶级抗皱面霜(晚霜)55g   单价为71元  

弹出购物车清单:选择商品数量  1   确认   

出现清单:显示商品名称 THE FACE SHOP 顶级抗皱面霜(晚霜)55g   数量1    合计 71元

与我们估算的数据相符。

此时选择清空购物车,继续购物,点击定购商品:THE FACE SHOP 顶级抗皱面霜(晚霜)55g  单价为71元

选择数量2  确认,出现清单:显示商品名称 THE FACE SHOP 顶级抗皱面霜(晚霜)55g   合计142元   

继续选择收银台结帐,出现帐单显示:显示商品名称 THE FACE SHOP 顶级抗皱面霜(晚霜)55g  合计142元

与我们估算的数据也相符,证明清空购物车的功能正常有效,并没有将我们第一次选购的物品计算在内,价格的计算也正确无误。

下面我们来看后台数据库的数据:

打开购物车表basket  我们可以看到以用户名fywang为关键字段的两条记录中,一条是我们第一次添加到购物车的商品信息,一条是第二次添加到购物车的商品信息,我们可以发现这两条记录的区别,第二条记录THE FACE SHOP 顶级抗皱面霜(晚霜)55g的basket_check属性为是,subnumber属性为fywang 20091511219305349,而第一条THE FACE SHOP 顶级抗皱面霜(晚霜)55g 的basket_check属性为否,subnumber属性为空,证明该条记录没有产生订单也就是说这次无效的选购记录,并没有被计入到帐单中,和我们的预期目标一致,即该部分功能正常,测试完毕。

(2)对用户注册部分进行测试

用户名:fywang   密码:fywang   确认:fywang   E _mail:fywang@fywang.com

 地址:河南新郑市西亚斯国际学院    邮编:450000    真实性名:王鹏,谢唤利

提交以后,弹出提示信息:该用户已存在,用户名重复验证正常

将用户名改为:几个空格    然后其他的不变

提交之后我们会发现系统返回成功页面,但问题是用户名什么也没有,空格也被作为合法的用户名,这在实际应用中是不允许的,我们需要对其命名规则进行定义,具体修改请参看后面存在问题及解决方法。

同样的邮编及电话也存在规则未定义的问题,需要对其加以定义。

6.3.3 测试分析总结及说明

在测试过程中,我经过模块测试和组装测试,排除了系统的大部分错误。当然排除所有错误是不太可能的,我想应该还有些不易检测到的错误还没有被发现,需要在使用的过程中进一步的完善,数据库的加密是一个重要的概念,在实际的应用过程中是一个尚待解决的问题,应该做好数据库的完善工作,特别是备份和安全工作;另一方面本系统没有制作相关的打印,由于时间仓促难免有错误和不完善的地方,希望老师能够帮我指点和纠正。

6.3.4 系统的性能分析

网上购物系统的性质决定了它的服务端工作负荷比较大,这就要求服务端的硬件配置要尽可能的高,主要是内存,而且操作系统也要尽可能的稳定。基于java的系统一般来说网络安全性比较好,但并不能说就一定安全,尤其在windows操作系统下,由于windows的漏洞比较多,系统装配在windows下并不是最佳的选择,如果有条件,建议可将系统装配在unix操作系统下,提高系统的抗侵入能力。

系统的核心数据库,随着数据的不断增多,必然会产生冗余,导致系统运行效率降低,建议管理员定期备份和清理冗余数据,以保证系统的正常高效运行。

6.4 系统中所存在的问题及解决方案

6.4.1 系统的整体设计和规划中的问题

由于是基于B/S[10]的系统,网页在其中就承担着非常大的工作,包括向服务端后台写入和修改数据,以及服务端响应客户端的请求,向客户端页面返回数据,这些工作不可能只由几个网页来完成,但网页数量一多又必然结构混乱,造成开发过程难以控制。

为解决这个问题,我采用了现代软件开发过程的模块化思想,先将系统功能进行分解,大致可分为两部分,即前台和后台,前台又包括主页面及产品信息展示页面、搜索功能页面、新闻页面、购物车及订单页面等几个大的部分,后台包括会员信息管理、商品信息管理、新闻信息管理、等几个部分,各个部分又由许多小的页面组成,这样一来虽然网页数量没有减少,但结构清晰了很多,在开发过程中可以逐步,逐个模块的实现,提高了开发效率。

6.4.2 开发功能模块所遇到的难点

因为是第一次做这么完整的jsp系统,所以碰到的问题也很多,除了一些基本的语法之外,感觉还是一些考虑问题的思维方式不太得当,比如我的这个网上购物系统,我感觉难度比较大的还是购物车这个模块比较的难设计,因为过程比较复杂,他的一些逻辑处理就比较的难以用代码实现。

我参考了一些电子商务网站,研究了一下他们的购物流程,大概有了一些处理的想法,用户在点击定购之后,系统先将该商品信息写入购物车页面,只有当用户在选择了商品数量,及确认按钮之后,系统才将该信息写入basket表,用户不选择商品数量,或者不点击确认按钮,系统就不把该商品信息写入basket表,这样就不至于造成basket表数据混乱,用户无法继续购物。

当用户完成选购,点击去收银台结算时,系统开始判断商品库中的这些商品数量是否大于用户所选数量,如果没有,则提示用户没有该商品,如果有则将所有basket表中属于该用户id的商品信息提出来,并合计价格,返回给用户,用户如果确定付款购买,则给用户提供一个订货单,由用户填写一些基本信息,确认之后,系统则产生一个唯一的订货单号,并将其返回给用户,以便用户日后查询,同时,系统则将该用户所选购的商品信息以及用户信息放入到订单表中。

这样就基本上实现了购物车的功能。

6.4.3系统中存在的问题及拟定的解决方法

(1)第一个问题是用户在注册过程中,一些关键字段的命名规则存在着比较大的缺陷,比如用户名的选择上,一般的习惯是规定只能从a~z和数字0~9的随机组合,不能有特殊字符,而且只能以字母开头,不能以数字开头,用户名的长度也有限制,我在系统中只考虑了为空的情况,这是不够的,我们可以在jsp页面添加一段javascript验证代码,主要是使用正则表达式对用户名进行限制,具体的代码如下:

if( form.username.value.length<5||form.username.value.length>20) {

alert("\您的用户名长度应该在5-20个字符之间!");长度判断

if ( fIsNumber(form.username.value.charAt(0),

"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")!=1 ){

alert("\您的用户名只能以字母开头!");            开头判断                

if ( fIsNumber(form.username.value,            特殊字符判断

"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_")!=1 ){

alert("\您的用户名应该是数字、字母、下划线,不允许出现汉字等其他字符!");

(2)第二个问题就是用户登陆以后,如果需要修改资料,系统会先将数据库中该用户的所有信息以列表形式显示出来,问题就是此时出现的用户密码信息是以明码形式出现的,这对用户来说就存在这很大的风险,容易被他人看到,最好是以一些特殊符号来代替从而防止信息泄漏,在参考了其他网站的登陆模块之后,我对代码进行了简单修改,即可实现,问题是由密码的输入框属性引起的,原始的代码为:

<input type="text" name="user_pass" size="36" class=input value="<%=rs.getString("user_pass")%>">

此时密码输入框的属性为text也就是文本框,它会直接将数据以明码形式原封不动的输出,我们只需将其改为password属性即可,它以默认的黑色圆点代替真实数据,这样一个简单的修改,就保证了该部分的安全性。

(3)第三个问题是管理人员对用户的管理部分,一个是用户信息,尤其是密码的加密,处于对系统安全性的考虑,数据库中的用户密码应该对于所有人都是加密状态,包括管理人员,但因本人水平有限对这个方面也不是很了解,所以准备采用现有的加密软件对相关数据进行加密,如http://www.newhua.com/soft/19490.htm该软件可以一次加密多个表,加密的文件会保存为新文件,不会破坏原来的数据库。加密算法采用了base64算法,但是目前不支持对中文进行加密,且加密的字段属性必须为“文本”或“备注”,因此对于需要加密的关键字段,我们必须事先将其设置为文本类型。如果需要我们可以也可将整个数据库进行加密,增加系统的安全性。

还有一个漏洞就是对会员的管理功能做的不够,没有考虑到用户密码丢失的问题,解决方法有两个,一个就是采取通常的做法,让用户在注册过程中,设置一些问题,通过回答问题的方式来取回密码,还有一个方法就是让管理员通过后台,初始化用户的密码,然后用户登陆对密码进行修改,这两个方法都可以达到目的,具体的实现过程不再一一说明。

对于网上购物系统来说安全性无疑是最重要的,层层验证虽然保证了系统的安全性,但对于用户来说又是极不人性化的,如何在最简单的验证流程下,保证用户数据的安全,是在做网上购物系统中需要考虑的一个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值