admin 管理员组文章数量: 887021
2024年1月12日发(作者:transport拓展)
.
1 绪 论
网上购物起源于七十年代,当时一些大公司通过建立自己的计算机网络实现各个机构之间、商业伙伴之间的信息共享,这个过程被称为EDI(电子数据交换)。EDIton通过传递标准的数据流可以避免人为的失误、降低成本、提高效率,估计在世界1---个最大的企业中95%以上的在使用这一技术。它过去是、现在也是网上购物的基础。
近年来,随着信息的全球化和国际互联网的普及化,越来越多的人想使用其无国界、无时间、无地域限制的便利环境来经营拓展商务。因此,网上购物成为互联网应用的最大热点,越来越多的企业通过使用网上购物技术进行商业上的交易以减少成本。当然,还有更多的公司想使用网络技术来架构一个虚拟的店面进行营业交易,企业与消费者通过网络完成交易,非但能使企业降低成本也可以让消费者在一个舒适的地点享受逛街与购物的乐趣。随着网上购物风潮的扩大,将会有更多的公司连上网络进行各项业务,而不只是将公司的产品介绍的网页放在网站上供人浏览而已。
随着因特网的不断发展和信息高速公路的逐步延伸,人类社会现今已昂首步入信息社会时代,而商品交易模式在不断的发生着变化。在社会化大生产以及社会分工日趋专业化的今天,网上购物无形的占据着主要地位。网上购物系统一般有商品管理、购物车管理、系统同管理和会员管理等要素组成,是一个网上交易的过程。其主要任务是交易各方以电子交易方式而不是通过当面交换或者之间面谈方式进行的任何形式的商业交易。显然,这与“网上购物”的概念和内容既有联系,又有明显的区别。他们设计的信息范围,服务功能以及社会意义等都不相同。网上购物系统搜集和管理的是特定的信息,其范围较窄,功能和目标比较明确、具体,主要是为特定的领域和机构的决策和管理服务;而信息管理则要对各类信息及其相关要素进行全方位管理,而对全社会开展信息服务,以便有效的满足社会的信息需求。
今天,大多数企业已经建立自己的网站介绍和销售他们的产品。您只要拥有一个计算机、浏览器、Internet连接和信用卡,今天就可以从网络上购买到书本、CD、鲜花、飞机票、电视、甚至是汽车。如今网上购物已经成为企业增加市场竞争力的一种重要的手段,同时使人民购物更加方便快捷。
.
.
2 相关知识和开发工具简介
2.1 Java的面向对象特性
Java包含了一种计算机编程语言和一个平台。Java编程语言是一种高级语言。由Sun微系统公司(Sun Macrosystem)发布,并作为一种开放的标准进行提供。Java平台包括了Java虚拟机和Java应用程序接口(API)。Java将原程序编译成字节码(bytecode),并通过Java虚拟机(JVM)解释字节码的方式来执行。因为这种运行方式,只要针对不同的计算机平台准备相应的Java虚拟机,就可以很方便的实现Java语言的跨平台性。因此,Java非常适合于企业网络和Internet环境,现在已成为Internet中最受欢迎、最有影响的编程语言之一。 Java有许多值得称道的优点,如简单、面向对象、分布式、解释性、可靠、安全、结构中立性、可移植性、高性能、多线程、动态性等。Java来自于Sun公司的一个叫Green的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统,这样我们可以把E-mail发给电冰箱、电视机等家用电器,对它们进行控制,和它们进行信息交流。开始,准备采用C++,但C++太复杂,安全性差,最后基于C++开发一种新的语言Oak(Java的前身),Oak是一种用于网络的精巧而安全的语言,Sun公司曾依此投标一个交互式电视项目,但结果是被SGI打败。可怜的Oak几乎无家可归,恰巧这时MarkArdreesen开发的Mosaic和Netscape启发了Oak项目组成员,他们用Java编制了HotJava浏览器,得到了Sun公司首席执行官ScottMcNealy的支持,触发了Java进军Internet。面向对象的程序设计很接近于我们人类自然的思维,相对于面向过程的程序设计,它具有更好的可扩展性和可维护性,使我们编写的代码更健壮。
面向对象主要有四大特性:封装、抽象、继承和多态。
封装:在面向对象语言中,封装特性是由类来体现的,我们将现实生活中的一类实体定义成类,其中包括属性和行为(在Java中就是方法),就好像人类,可以具有name,sex,age等属性,同时也具有eat(),sleep()等行为,我们在行为中实现一定的功能,也可操作属性,这是面向对象的封装特性;
抽象:抽象就是将一类实体的共同特性抽象出来,封装在一个抽象类中,所以抽象在面向对象语言是由抽象类来体现的。比如鸟就是一个抽象实体,因为抽象实体并不是一个真正的对象,它的属性还不能完全描述一个对象,所以在语言中体现为抽象类不能实例化;
继承:继承就像是我们现实生活中的父子关系,儿子可以遗传父亲的一些特性,在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用,其实继承体现的是is-a关系,父类同子类在本质上还是一类实体。
多态:多态就是通过传递给父类对象引用不同的子类对象从而表现出不同的行 .
.
为,多态可为程序提供更好的可扩展性,同样也可以代码重用。
2.2 Hibernate技术介绍
Hibernate是一种Java语言下的对象关系映射解决方案。 它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL 的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate 不仅管理Java 类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL 和JDBC 处理数据的时间。它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。它的优点是:
Hibernate 使用 Java 反射机制 而不是字节码增强程序来实现透明性。
Hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。
它支持各种关系数据库,从一对一到多对多的各种复杂关系。
2.3 Struts2技术介绍
Struts是在JSP Model2的基础实现了MVC设计模式的WEB Framework。基于Struts构架的WEB应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。它的目的是为了减少在运用MVC设计模型来开发Web应用的时间,它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。Struts由一组相互协作的类、Serlvet以及丰富的标记库(jsp tag lib)和独立于该框架工作的实用程序类(Validator)组成。
Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。
2.4 Spring简介
Spring作为实现J2EE的一个全方位应用程序框架,为我们开发企业级应用提供了一个健壮、高效的解决方案。主要有以下几个特点:
1 非侵入式:对于写代码从来不考虑复用和移植的程序员来说,这一点根本就没有吸引力,那么请跳过。所谓非侵入式是指Spring框架的API不会在业务逻辑上出现,也就是说我们的业务逻辑应该是纯净的,不能出现与业务逻辑无关的代码。首先针对应用而言,这样我们才能将业务逻辑从当前应用中剥离出来,从而在其他的应用中实现复用;其次针对框架而言,由于业务逻辑中没有Spring的API,所以业务逻辑也可以从Spring框架快速的移植到其他框架。
2 容器:Spring提供容器功能,容器可以管理对象的生命周期,对象与对象之 .
.
间的依赖关系。你可以写一个配置文件(通常是xml文件),在上面定义对象的名字,是否是单例,以及设置与其他对象的依赖关系。那么在容器启动之后,这些对象就被实例化好了,你直接去用就好了,而且依赖关系也建立好了。
3 IOC:控制反转,谓之“依赖关系的转移”,如果以前都是依赖于实现,那么现在反转为依赖于抽象吧,其实它的核心思想就是要面向接口编程
4 依赖注入:建立对象与对象之间依赖关系的实现,包括接口注入、构造注入、set注入,在Spring中只支持后两种
5 AOP:面向方面编程,我们可以把日志、安全、事务管理等服务(或功能)理解成一个“方面”,那么以前这些服务一直是直接写在业务逻辑的代码当中的,这有两点不好;首先业务逻辑不纯净,其次这些服务被很多业务逻辑反复使用,完全可以剥离出来做到复用。那么AOP就是这些问题的解决方案,我们可以把这些服务剥离出来形成一个“方面”,以期做到复用;然后将“方面”动态的插入到业务逻辑中让业务逻辑能够享受到此“方面”的服务。
其他还有一些特点不是Spring的核心,这里只做简单陈述,如:对JDBC的封装与简化,提供事务管理功能,对O/R mapping工具(hibernate、iBATIS)的整合;提供MVC解决方案,也可以与其他web框架(Struts、JSF)进行整合;还有对JNDI、mail等服务进行封装。
2.5 Oracle数据库介绍
2.5.1 什么是Oracle数据库?
Oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多。不过,一般的中小型企业都比较喜欢用mysql, SQL server等数据库系统,它的操作很简单,功能也比较齐全。只是相对于oracle数据库而言,在处理大量数据方面有些不如。
2.5.2 Oralce数据库简介
Oracle简称甲骨文,是仅次于微软公司的世界第二大软件公司,该公司名称就叫Oracle。该公司成立于1979年,是加利福尼亚州的第一家在世界上推出以关系型数据管理系统(RDBMS)为中心的一家软件公司。Oracle不仅在全球最先推出了RDBMS,并且事实上掌握着这个市场的大部分份额。现在,他们的RDBMS被广泛应用于各种操作环境:Windows NT、基于UNIX系统的小型机、IBM大型机以及一些专用硬件操作系统平台。事实上,Oracle已经成为世界上最大的RDBMS供应商,并且是世界上最主要的信息处理软件供应商。由于Oracle公司的RDBMS都以Oracle为名,所以,在某种程度上Oracle己经成为了RDBMS的代名词。Oracle数据库管理系统是一个以关系型和面向对象为中心管理数据的数据库管理软件系统,其在管理信息系统、企业数据处理、因特网及电子商务等领 .
.
域有着非常广泛的应用。因其在数据安全性与数据完整性控制方面的优越性能,以及跨操作系统、跨硬件平台的数据互操作能力,使得越来越多的用户将Oracle作为其应用数据的处理系统。Oracle数据库是基于“客户端/服务器”模式结构。客户端应用程序执行与用户进行交互的活动。其接收用户信息,并向“服务器端”发送请求。服务器系统负责管理数据信息和各种操作数据的活动。
2.5.3 Oralce数据库优缺点
优点:
的稳定性要比Sql server好。
在导数据工具功能比Sql Server的Bcp功能强大,Oracle可以按照条件把文本文件数据导入。
的安全机制比Sql Server好。
server的易用性和友好性方面要比Oracle好。
5.在处理大数据方面Oracle会更稳定一些。
Server在数据导出方面功能更强一些。
7.处理速度方面比Sql server快一些,和两者的协议有关。.
缺点: 价格昂贵。
2.6 JDBC简单介绍
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。
.
.
Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有
applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用
JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。
MIS 管理员们都喜欢 Java 和 JDBC 的结合,因为它使信息传播变得容易和经济。企业可继续使用它们安装好的数据库,并能便捷地存取信息,即使这些信息是储存在不同数据库管理系统上。新程序的开发期很短。安装和版本控制将大为简化。程序员可只编写一遍应用程序或只更新一次,然后将它放到服务器上,随后任何人就都可得到最新版本的应用程序。对于商务上的销售信息服务, Java
和JDBC 可为外部客户提供获取信息更新的更好方法。
2.7 JSP技术介绍
2.7.1 JSP的介绍
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Java
Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
JSP可用一种简单易懂的等式表示为:HTML+Java=JSP。
2.7.2 JSP的强势
(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。
(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在
.
.
任意环境中进行系统部署,在任意环境中扩展。相比ASP/.net的局限性是显而易见的。
(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。
2.7.3 JSP的弱势
(1) 与ASP一样,Java的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。
(2) Java的运行速度是用class常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。从另一方面,它还需要硬盘空间来储存一系列的.java文件和.class文件,以及对应的版本文件。
2.8 开发工具的选择
2.8.1 应用程序开发环境—MyEclipse 8.6
MyEclipse 8.6 是现今国内企业流行的基于Eclipse的商业开发工具 MyEclipse的当前最新版本。Eclipse( )是IBM公司主导下的一款开源免费的可以做基础Java项目开发的工具,大多数基于Eclipse二次开发的实用开发工具例如MyEclipse,IBM WSAD,BEA Workshop,Jbuilder2007 等等都是商业产品,有别于Eclipse自身开放免费的大旗,这些软件不能免费使用,例如MyEclipse
8.6 只有 30 天的试用期,过期之后需要付费使用。
MyEclipse 8.6的发布极大的增强了Eclipse 3.3/Europa集成开发环境的功能,增加了Java 6支持的组件和加快了AJAX的开发率,革命性的提高了开发者的开发效率。另外,MyEclipse 8.6现在已经和Spring、JPA整合。这项整合,允许用户们创建实体管理器和事务beans, 生成实体和DOA。MyEclipse 8.6增强了下面的功能:改进了Java EE 5 和 Spring功能部件、支持AJAX开发和测试、支持RAD Web 开发、具备Matisse4MyEclipse可视化Swing设计器、快速Java EE部署和测试。
MyEclipse 8.6 集中了开源和商业软件的开发支持的大多数框架,方便易用,功能强大,获得了广大开发人员的喜爱。用它来开发比自己用 Eclipse然后到处找插件安装要方便快捷的多。它支持开发基于 Spring, Hibernate, Struts, JSF, JPA,
EJB, Web Service 等 Java EE 技术的项目。
.
.
2.8.2 Tomcat应用服务器
目前支持JSP的应用服务器是较多的,Tomcat是其中较为流行的一个Web服务器,Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。
Tomcat也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。Tomcat是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性,越来越受到人们的重视。
2.8.3 PLSQL Developer
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要优势。
PL/SQL编辑器,具有语法加强、SQL和PL/SQL帮助、对象描述、代码助手、编译器提示、PL/SQL完善、代码内容、代码分级、浏览器按钮、超链接导航、宏库等许多智能特性,能够满足要求性最高的用户需求。当您需要某个信息时,它将自动出现,至多单击即可将信息调出。
2.8.4 Power Designer
Power Designer 是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,他几乎包括了数据库模型设计的全过程。利用Power
Designer可以制作数据流程图、概念数据模型、物理数据模型,还可以为数据仓库制作结构模型,也能对团队设计模型进行控制。他可以与许多流行的数据库设计软件,例如PowberBuilder,Delphi,VB等相配合使来缩短开发时间和使系统设计更优化。
Power designer是能进行数据库设计的强大的软件,是一款开发人员常用的数据库建模工具。使用它可以分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。在这里,概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义;物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。
这是一个强大的数据库设计工具,使用Data Architect可利用实体-关系图为一个信息系统创建"概念数据模型"-CDM(Conceptual Data Model)。并且可根据CDM产生基于某一特定数据库管理系统的"物理数据模型"-PDM(Physical
Data Model)。还可优化PDM,产生为特定DBMS创建数据库的SQL语句并可以文件形式存储以便在其他时刻运行这些SQL语句创建数据库。另外,Data Architect .
.
还可根据已存在的数据库反向生成PDM、CDM及创建数据库的SQL脚本。
.
.
3 网上购物系统需求分析
3.1 需求分析
网上购物从英文字面的意思上看就是利用现在先进的电子技术从事各种商业活动的方式。其实质是一套完整的网络商务经营及管理信息系统。在具体一点,它是利用现有的计算机硬件设备、软件和网络基础设施,通过一定的协议连接起来的电子网络环境进行各种各样的商务活动方式。这是一个比较严格的定义,例如:网上营销、网上客户服务、以及网上做的广告、网上调查等。
网上购物可以通过多种电子通讯方式完成。简单的,比如你通过打电话或者发传真的方式来与客户进行商贸活动,似乎也可以称作为网上购物;但是,现在人们所探讨的网上购物只要是以EDI和INTERNET来完成的。尤其是随着INTERNET技术的日益成熟,网上购物真正的发展将是建立在INTERNET技术上的。所以也有人把网上购物简称为IC(INTERNET COMMERCE)。
需求分析是数据库设计的第一阶段。不断的调查与研究,了解组织机构的情况,了解部门的业务流程等系统与需求,对于设计好的概念模型是非常重要的。在需求分析中,应该对现实世界要处理的对象进行详细的调查;在确定系统功能中,收集支持系统功能目标的数据及分析数据之间的关系和处理流程。可以说,需求分析的质量直接影响到系统设计的成败。功能如下:
a、用户注册:在网上购买商品的用户一定是该系统的注册用户,因此,必须提供用户注册功能;
b、用户登录:提供用户在网站上购物前的登录功能。只有登录后,用户才能正常进行购物操作。
c、商品搜索:用户在浏览商品时,必须给予搜索功能的支持,以便用户能够快速地查找自己喜欢的商品。
d、购物车管理:当用户选定一种商品后,就可以把这正商品放到购物车中,在本系统中使用session对象来存储购物车的有关信息。需要注意的是,在购物车中商品不是用户最终购买的商品,只是一个购物意向,用户可以根据需要,在提交订单之前,随时修改购物车中的商品。
e、商品信息管理:对系统图的商品进行管理,包括商品的入库,商品的信息的修改,剩余商品信息和商品信息的审核等功能。
f、管理员功能:对商品的信息进行修改。
3.2 选择网上购物的原因
.
.
图3-1 网上购物的原因
从上面的图中可以看出,网上购物选择节约时间和操作方便的人群占很高的比例,这说明随着生活节奏的加快,人么越来越希望拥有简单快捷的购物方式。
3.3 用户选择商品的配送方式
图3-2 用户选择商品的配送方式
从上面的调查显示结果中,可以看出人们总希望能直接拿到物品,而不用耽搁自己的时间,如果是送货上门,也可以检查自己购买的商品,这同时也表现出了人们对卖家信誉的担忧。
3.4 网上交易存在的问题
图3-3 网上交易存在的问题
4 网上购物系统总体设计
4.1 总体功能模块图
.
.
系统功能模块图如下:4-1图
网上购物系统
普通用户
管理员用户
用户登录
新用户注册
查看商品信息
将商品加入购物车
查看购物车
购买商品
查看历史购买记录
管理员登录
添加新商品
删除商品
修改商品信息
图4-1 系统功能模块图
4.2 网上购物系统E-R图
.
.
手机
编号
账号 用户名 密码
颜色
普通用户
1
查看
1
购买
推荐人
n
商品
原价
n
库存 优惠价
品牌 型号 内存 尺寸
邮箱
活动代码
更新
密码
1
账号
1
购买列表
购买日期
购买数量
管理员用户
编号 用户账号 商品编号
4-2 网上购物系统E-R图
4.3 数据库关系图
1、普通用户表:用来存储用户的信息。
表4-1 普通用户表
2、管理员用户表:用来存储管理员登录账号和密码。
图4-2 管理员用户表 .
.
3、商品信息表(Mp3):存放商品信息,此项目中是以MP3作为商品。
表4-3 商品信息表(Mp3)
4、购买过的商品表:存放哪个用户在什么时间买过什么商品的信息 ,其中字段Mp3-id为外键指向MP3表中的id。
表4-4 存储购买过的商品信息
.
.
4.4 业务设计
如图4-7描述了网上图书交易系统的逻辑体系结构:
图4-3 网上购物体系结构图
B/S的执行过程为:客户端通过浏览器向WEB服务器发出请求,如需操作数据库,则再由WEB服务器向数据库服务器发出请求,对数据库进行操作。操作完成后,由数据库服务器返回WEB服务器,客户端由WEB服务器以动态网页的形式返回客户端,由浏览器显示结果。
B/S建立在广域网上,面向不同的用户群,分散地域,这是以局域网为基础的C/S无法做到的。与操作系统平台关系不大。B/S结构利用不断成熟和普及的技术实现原来复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术,这种结构更成为当今应用软件的首选体系结构,作为最终用户,只要通过WEB浏览器,各种处理任务都可以调用系统资源来完成,这样大大简化了客户端,减轻了系统维护与升级的成本和工作量。
4.5 系统功能模块划分
.
.
对于网民,能吸引住他们的先决条件是网站的整体构思,所以网站的首页提供了一个简洁明快的界面,分为三个模块:用户管理模块、商品销售系统模块、在线管理系统。以让浏览者能一目了然的知道,自己想要的内容放在哪里,这些内容可以提供给所有的浏览者,内容包括图书查询,这里可以查看所有所需图书信息。
4.5.1 前台用户管理模块
用户界面
对于用户界面管理模块,根据系统功能的分析,它具有的功能应该包括网站页面的查看、图书列表的查看、购物车的使用、和用户功能的具体内容等,如图4-8所示:
网站页面 商品列表 购物车 用户功能
热门商品
新上架商品
购买商品
查看商品信息
查找商品
查看购物车
修改购物信息
提交购物订单
用户注册
用户登陆
查看购物车并购买商品
查看购物列表
图4-4 客户界面的系统功能模块图
4.5.2 后台用户管理模块
对于管理员管理界面而言,根据系统功能的分析,它有的功能应该主要是:对商品信息的修改,增加新商品,删除商品。如图4-9所示:
.
.
管理员用户
管理员修改商添加新删除商 .
登商品
品录 品
信息
图4-5 后台界面的系统功能模块图
.
5 网上购物系统详细设
5.1 系统的MVC分层架构设计
MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。
MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。
Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。将系统进行MVC分层能够使程序员有效率的开发,并且思路清晰、易于维护。下面将简单介绍本系统的MVC设计思路。
5.1.1 Model层设计
本系统中,Model层只是用来封装数据的作用,因此将数据库中的实例对象生成一个java类,便可以当做一个Model。Model层的作用是在Control层获得View层数据时,Control层想要将数据封装成一个对象,此时便可以直接使用Model层中的封装形式将数据进行封装。
5.1.2 View层设计
View层也可认为是显示层,采用jsp实现,View层主要功能是将Contorl层传过来的数据进行合理的编排并显示给客户端浏览器供用户浏览。因此View层的功能也相对比较单一。
5.1.3 Control层设计
由于Model层、View层的功能单一且Model层和View层不直接通讯,因此系统的大部分的业务逻辑和实现Model层与View层的交互都集中在Control层中处理。为此本系统采用了Struts2、Hibernate、Spring框架进行Control层的设计。为了能够更加清晰的进行系统开发,Control层的设计将划分为三个层面处理,分别是:Action、Service、Dao三小层,下面来介绍这三层的具体设计思路。
Action层:action层主要运用Struts2的ActionSupport类实现,在这一层里主要的工作是获得前端(View层)的数据或者请求信息,并且action层接收到View层的请求的信息后会调用service层方法来获得View层需要的数据和将数据进行封装成Model。根据自身需要action层也可以直接与dao层进行交互从而获得数据库中的数据信息。
Service层:service层主要负责业务逻辑的处理,主要运用了J2EE中的基本技术实现。action层调用service层时,service层根据action层的需要去跟Dao层交互并对action层传来的数据和dao层传来过来的数据进行逻辑处理,并把处理结果返回给action层。所以service层只是用来实现action层和dao层的信息交流。
.
.
Dao层:service层根据action的需要调用dao层的方法时,dao层就直接与数据库交互,获取到数据库中的信息,并交给service层处理。因此dao层只是用来直接与数据库交互。本层的实现技术是以Hibernate框架实现。
5.1.4 Spring框架在系统中的作用
Spring框架在本系统中的作用主要是对Struts2框架和Hiberna框架进行耦合
以及用来对Model进性依赖注入。从了解决了一般系统的低耦合性。
5.2 普通用户
普通用户即系统中是服务的对象。普通用户在本系统的注册页面填写完整信息后就可以登录本系统,用户可根据本人的需要购买您喜爱的商品。并可以查看您在本站之前所有的购买记录。
5.2.1 用户注册
图5-1 用户注册页面
普通用户需要进行注册,注册界面见图5-1。用户填入一定的用户信息,在用户注册后即可进入本系统,进行相关操作。用户注册采用的是Struts2框架对用户信息录入进行校验。如用户名、密码等属性的长度和格式的校验。在这个模块中,账号是数据库中不可重复的字段,所有在用户输入账号后查询数据库,如果数据库中已经有这个账号,则提示用户更改账号方可进行下一步操作。
.
.
如果用户提交的信息符合规定,则跳转到成功页面。如果不符合,则返回注册页面并提示信息错误之处,提示用户冲洗填写注册信息。
5.2.2 用户登录
用户注册成功后即可登陆本系统,登录界面见图5-2
图5-2 用户登录页面
登录的账号密码录入也采用的是Struts2框架,主要控制账号密码不能为空值,如果为空值则返回登录页面并给予相应的提示。如下图5-3所示:
图5-3 登录失败
.
.
如果登录成功则跳转到网站的主页,如下图5-4所示:
图5-4 登录成功时的主页显示商品信息界面
登录用户成功后的操作功能如下图5-5、5-6、5-7所示:
图5-5 登录成功时的主页显示用户操作1
图5-6 登录成功时的主页显示用户操作2
.
.
.
图5-7 登录成功时的主页显示用户操作3
.
5.2.3 用户查看商品
点击查看商品,跳转到该商品的详细信息的介绍。如下图5-8所示:
图5-8 查看商品的详细介绍界面
5.2.4 购物车
用户在浏览商品的同时如果看到喜欢的商品,便可以将它加入购物车以便继续浏览商品,在最后一同付款 。购物车功能是采用一个List来存储用户添加到购物车中的商品,并讲它set在HttpSession 中,在运用jsp页面中的session变量将List进行遍历,从而在购物车页面显示出购物车中的商品。
购物车的界面如下图5-9所示:
图5-9 购物车界面
5.2.5 查看购物列表
用户每次购买,系统会自动记录该用户购买该商品的时间,数量并存入数据库, .
.
以便用户可以随时查看自己的购物列表,如下图5-10所示:
图5-10 用户查看购物列表界面
5.3 管理员管理
该模块的功能是管理员正确登陆后,对商品的信息进行管理的操作,本系统中管理员可以对商品进行增加、删除、修改等操作。
5.3.1 管理员增加商品的信息
将商品按照数据库中存入字段方式录入新增商品的信息增加商品界面如下图5-11所示:
图5-11 管理员增加商品界面
5.3.2 管理员删除商品
因为商品的编号对应的字段是该表的主键,所以可以根据商品的编号进行删除。删除商品界面如下图5-12所示:
.
.
图5-12 管理员删除商品界面
5.3.3 管理员修改新的商品
修改商品界面,要求输入需要修改的商品的编号如下图5-13所示:
图5-13 管理员修改商品界面1
提交成功之后,进入修改信息页面,该页面会显示出该编号对应的信息如下图5-14:
.
.
图5-14 管理员修改商品界面2
.
.
总 结
经过半个月的努力,终于网上购物系统完成了,不过,遗憾的是功能多样性欠缺、用户展示界面效果粗糙,有待继续完善。其他基本功能都已经基本实现。
本系统是适用于个人网店的建设,有一定的实际意义,本系统实现了商品的购买和订单的处理等功能,基本具备商务系统所需要的功能,基本满足用户的需要,而且该系统所面对的用户范围比较广,对于用户来说,并不需要掌握专业的计算机知识便可以使用管理,有利于该系统的流通,和进一步的改进。
系统已经进行了测试,基本功能都成功了,但是因为初次开发,在系统中难免存在着各种问题,这些我们会在以后的时间里进行更正。
首先,在开发本系统的过程中,要查询翻阅大量的参考文献以及网上搜索资料,培养了我调查研究、查阅中外文献资料,运用国家标准、行业规范、手册、图册等资料的能力。在开发本系统应中,用到了我以前所学的很多知识。通过对本系统的开发,提高了我综合运用所学理论知识和技能,分析解决实际问题的能力,最主要的是提高了我的自学能力。
其次,经过本系统的开发,让我对所学的知识和技术进行了加深巩固,如:Jsp、Servlet、对Oracle数据库操作技术、Struts2框架技术、Hibernate框架技术、Spring框架技术等等。这也使我在软件开发方面的基础大有加强,对以后的工作大有帮助。
因此,通过这次毕业设计,把所学的理论知识与实际应用联系了起来,为我今后走向社会打下了坚实的基础。总之,这次毕业设计使我受益匪浅。
.
.
致 谢
首先感安徽工业大学工商学院领导及所有的任课教师,是你们,展示了自己博大胸怀和精深造诣,诠释了计算机学科的作用和价值,为我们打开了计算机学殿堂的大门,让我们明白了学无止境,学海无涯。谢谢你们四年的教导,不尽让我学会到了丰富专业知识,还让我学会了为人处事的道理。
感谢我的指导老师XXX老师,他严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他循循善诱的教导和不拘一格的思路给予我无尽的启迪、让我终身受益。同时也感谢我的室友,是他们给我造就了一个学习的环境,在此我向你们道声:“谢谢!”。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!
.
.
参考文献
1. 刘京华等. Java Web整合开发王者归来[M].北京:清华大学出版社,2010年1月
2. Christian Bauer,Gavin King. Hibernate实战(第2版) 北京:人民邮电出版社,2008年1月1日
3. 郝玉龙 迟健男.轻松掌握Struts2.清华大学出版社,2010年7月1日
4. 麦著 丁雪峰等.Spring 攻略.人民邮电出版社,2009年8月1日
5. 郭珍 王国辉等.JSP程序设计教程.人民邮电出版社 ,2008年5月1日
6. 孙风栋等.Oracle 10g数据库基本教程.电子工业出版社, 2009年7月1日
7. Craig Walls,Ryan Breidenbach. Spring in Action . 北京:人民邮电出版社,2006年5月1日
8. 埃克尔. Java编程思想. 北京:机械工业出版社 ,2007年10月1日
9. 李建中著 .数据库系统原理.北京:电子工业出版社, 2004年9月1日
10. 彭雪冬.网站建设实用开发精粹.北京:人民邮电出版社,2007年3月1日
.
.
附录:系统部分源程序
1 框架的配置文件
1.1 Spring+Hibernate 的配置:
xmlns:tx="/schema/tx" xmlns:context="/schema/context" xmlns:xsi="/2001/XMLSchema-instance" xmlns:p="/schema/p" xsi:schemaLocation=" /schema/beans /schema/beans/ /schema/context /schema/context/ /schema/tx /schema/tx/ "> base-package=""> proxy-target-class="true"> class="ateTransactionManager"> value="Driver"> . . class="essionFactoryBean"> 9Dialect true
1.2 Struts2 的配置:
Configuration 2.1//EN" "/dtds/">
.
.
class="ductSuccessAction"> . .
class="kPasswordAction">
class="edProductAction">
class="rAddProductAction">
class="rDelProductAction">
class="rUpdateProductAction"> . .
2 用户注册的Struts2框架验证文件
2.1注册页面的验证:
1.0.3//EN" "/xwork/" >
^d{6}$
.
.
^d{6}$
(password==password2)
2.2登录时的验证
1.0.3//EN" "/xwork/" >
.
.
2.3 找回密码时的验证
1.0.3//EN" "/xwork/" >
3 用户登录主要代码
package ;
.
.
import ;
import ce;
import ssion;
import ;
import tActionContext;
import ller;
import erDao;
import 3Dao;
import er;
import 3;
import ageService;
import ervice;
import Context;
import Support;
import riven;
@Controller
public class LoginAction extends ActionSupport implements
ModelDriven
@Resource
private Consumer consumer;
@Resource
private LoginService ls;
@Resource
private Mp3Dao md;
@Resource
private ConsumerDao cd;
@Resource
private ApartPageService aps;
private final Logger logger= ger();
public String execute() {
HttpSession session =
uest().getSession();
boolean
result=esult(ount(),sword());
if(result==false){
addFieldError(ERROR, getText("用户名或者密码错误!"));
("登录失败!---> "+"登录账号:"+ount().toString()+" 登录密码:"+sword());
}else{
.
.
Short page = 1;
List
List
ribute("APARTEDLIST", apartedList);
ribute("PAGE", page);
ribute("COUNT", ());
ribute("TOTALPAGES",
()>(()/6)?(()/6)+1:(()/6));
ribute("username",
(ount()).getUsername());
ribute("account", ount());
ribute("MP3LIST", mp3List);
}
return result?"success":"fail";
}
public Consumer getModel() {
return consumer;
}
}
4 实现购物车主要代码
package ;
import ist;
import ;
import ce;
import ssion;
import tActionContext;
import ent;
import 3;
import ductService;
import Support;
import riven;
@Component
public class AddProductAction extends ActionSupport implements
ModelDriven
@Resource
private Mp3 mp3;
@Resource
.
.
private AddProductService aps;
public String execute(){
HttpSession session =
uest().getSession();
if (ribute("username") != null) {
List
ribute("MP3BASKET");
if (mp3basket == null) {
mp3basket = new ArrayList
}
ribute("MP3BASKET", 3List(mp3basket,
()));
return
SUCCESS;
} else {
addFieldError("error", getText("您没有登录,只有注册用户才能购买"));
return
ERROR;
}
}
public Mp3 getModel() {
return mp3;
}
}
5 管理员用户管理商品的主要代码
5.1增加商品代码:
package ;
import ce;
import ent;
import 3;
import rService;
import Support;
import riven;
@Component
public class ManagerAddProductAction extends ActionSupport implements
ModelDriven
.
.
}
@Resource
private Mp3 mp3;
@Resource
private ManagerService ms;
public String execute(){
try{
(mp3);
return
SUCCESS;
}catch(Exception e){
addFieldError(ERROR, getText("添加失败,请重新添加!"));
return
INPUT;
}
}
public Mp3 getModel() {
return mp3;
}
5.1 删除商品代码:
package ;
import ce;
import ent;
import 3Dao;
import rService;
import Support;
@Component
public class ManagerDelProductAction extends ActionSupport {
@Resource
private ManagerService ms;
@Resource
private Mp3Dao md;
private String mp3id;
public String execute(){
try{
((f(mp3id)));
.
.
}
}
return
SUCCESS;
}catch(Exception e){
addFieldError(ERROR, "删除失败,
return
INPUT;
}
请重试!");
public String getMp3id() {
return mp3id;
}
public void setMp3id(String mp3id) {
3id = mp3id;
}
5.2 修改商品代码:
package ;
import ce;
import ent;
import 3;
import rService;
import Support;
import riven;
@Component
public class UpdateAction extends ActionSupport implements
ModelDriven
@Resource
private Mp3 mp3;
@Resource
private ManagerService ms;
public String execute(){
(mp3);
return
SUCCESS;
}
public Mp3 getModel() {
return mp3;
.
.
}}
.
.
.
版权声明:本文标题:网上购物系统毕业论文 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705041595h470874.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论