网上书店+.docx

上传人:b****6 文档编号:5993192 上传时间:2023-01-02 格式:DOCX 页数:25 大小:434.23KB
下载 相关 举报
网上书店+.docx_第1页
第1页 / 共25页
网上书店+.docx_第2页
第2页 / 共25页
网上书店+.docx_第3页
第3页 / 共25页
网上书店+.docx_第4页
第4页 / 共25页
网上书店+.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

网上书店+.docx

《网上书店+.docx》由会员分享,可在线阅读,更多相关《网上书店+.docx(25页珍藏版)》请在冰豆网上搜索。

网上书店+.docx

网上书店+

网上书店

OnlineBookStoreSystem

 

姓名:

学号:

指导教师:

专业名称:

计算及应用技术

所在系部:

信息工程系

 

二○一二年六月

毕业论文(设计)开题报告

姓名

班级

指导教师

学号

20103042

毕业论文(设计)题目

网上书店

1.选题目的和意义:

一、选题目的:

随着Internet技术的发展,人们的日常生活已经离不开网络。

未来社会人们的生活和工作将越来越依赖于数字技术的发展,越来越数字化、网络化、电子化、虚拟化。

电子商务也随着网络的发展日益和人们的生活贴近。

网上购物也成为了电子商务的一个时尚,而网上书店是最普遍,也最流行的一个动态的电子商务网站,它使每一位顾客不用出门在家里就能够通过上网来轻松购买自己喜爱的书籍。

为此本人选择《网上书店系统的设计与实现》此题目。

二、选题意义:

网上书店为人们提供了更广阔的环境:

人们不受时间的限制,不受空间的限制,不受传统购物的诸多限制,可以随时随地在网上交易。

更广阔的市场:

在网上这个世界将会变得很小,一个商家可以面对全球的消费者,而一个消费者可以在全球的任何一家商家购物。

更快速的流通和低廉的价格:

电子商务减少了商品流通的中间环节,节省了大量的开支,从而也大大降低了商品流通和交易的成本。

更符合时代的要求:

如今人们越来越追求时尚、讲究个性,注重购物的环境,网上购物,更能体现个性化的购物过程。

具体安排进度:

2011年3月1日—30日,选好课题,查找资料,编写提纲;

2011年4月1日—20日,了解论文的格式,咨询指导老师从哪方面入手,进行写的状态形成初稿,形成初稿;

2011年4月21日—5月10日,提交初稿,在指导老师的指导下,形成二稿;

2011年5月11日—5月31日,提交二稿,在老师的指导下修改定稿并准备答辩。

摘要

JAVA语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言,本文描述了JAVA和JSP技术的特点以及在互联网上的使用情况,介绍这两种技术的重要编程方法和两者之关的联系,同时也会应用相关的Struts框架,并完成一个基于这种技术的网上书店系统。

【关键字】JAVA,Struts,Servlet,JSP,网络编程,电子商务,网上书店

Abstract

AtpresentJAVAisthehottestprogramminglanguageforWEBdevelopment,ThistextdescribedthecharacteristicsofJAVAandJSPtechnologyandthestateofoperatingonInternet,Itintroducedtherelationshipbetweenthemandtheimportantprogrammingmethodofthedoubletechnology,AndalsoshowtheStrutstechnology,Andworkoutanonlinebookstoresystembaseonthiskindoftechnology.

Keywords:

JAVA,Struts,Servlet,JSP,webprogram,internet,bookshop

前言

随着Internet国际互联网的发展,越来越多的企业开始建造自己的网站。

基于Internet的信息服务,商务服务已经成为现代企业一项不可缺少的内容。

很多企业都已不满足于建立一个简单的仅仅能够发布信息的静态网站。

现代企业需要的是一个功能强大的,能提供完善的电子商务服务的动态商务网站。

JSP是Sun公司推出的一种网站开发技术,Sun公司借助自己在Java上的不凡造诣,又把人们引进JSP时代,JSP即JavaServerPage,它可以在Servlet和JavaBean的支持下,完成功能强大的Web应用程序。

所以,在我的毕业设计中,我采用了JSP作为开发工具,构建了一个能实现简单的小型动态商务网站——网上书店。

该系统能实现用户的注册、登录功能;能够实现商品的查询,订购等功能。

该系统基本上具备一个网上商品销售系统应该具备的功能,该设计项目基本上体现了构建一个动态商务网站所需要的技术。

通过这次的毕业设计,我了解了目前流行的动态商务网站的构成和运作原理,掌握了用JSP构建动态网站的相关知识和技术原理,锻炼了自己的动手实践能力。

更重要的是,通过这次的毕业设计,我培养出了刻苦钻研的学习精神和严肃认真的学习态度,这对我以后的学习和工作有很大的益处。

在这次毕业设计过程中,我得到了指导老师李家兵老师和其他同组同学的悉心指导。

在此,我对他们表示衷心的感谢!

 

第一章概述

1.1开发背景

随着时代的发展,信息技术、Internet/Intranet技术、数据库技术的不断发展完善,网络进程的加快,传统的购物方式也越来越不能满足人们快节奏的生活需求,使得企业的IT部门已经认识到Internet的优势,电子商务就是在这样一个背景下产生发展起来的。

伴随着电子商务技术的不断成熟,电子商务的功能也越来越强大,注册用户可以在网上搜索购买到自己想要的各种商品,初步让人们体会到了足不出户,便可随意购物的快感。

我的毕业设计也就正是一个电子商务系统的开发---网上商品销售系统。

1.2JSP简介

JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,JSP技术在Servlet技术基础上发展起来的,它正在飞速发展中,现已成为Java服务器编程的重要组成部分。

它虽然还未成型,但是它必将和J2EE(Java2EnterpriseEdition)一起发展。

JSP是结合markup(HTML和XML)和Java代码来处理一种动态页面。

每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。

JSP提供了多种方式访问Javaclass、Servlet、Applets和WebServer,因此,Web应用的功能可以分成多个明确定义公用接口的组件,通过JSP将它们结合在一起。

1.2.1JSP的运行原理

在JSP第一次获得来自于客户端浏览器的请求时,JSP文件将被JSP引擎(JSPengine)转换成一个Servlet,即将”.jsp”文件编译成JavaClass文件。

当Servlet引擎接收到请求后,如果设置了使用最新的JSP,它就会去找JSP文件,检查该文件在上次编译后是否改动过。

如果改动过,就会重新编译生成新的Servlet,最终将请求转交给编译好的Servlet引擎执行。

如图1-1:

 

图1-1JSP运行原理

在编译时如果发现JSP文件有任何语法错误,转换过程将中断,并向客户端发出出错信息;如果编译成功,则所转换产生的Servlet代码被编译,然后该Servlet被JSP引擎加载到内存中。

此时JSP引擎还请求了jspInit()方法的执行,并对此Servlet初始化。

JspInit()方法在Servlet的生命周期中只被请求一次,然后将被调用来处理客户端的请求和回复操作。

对于所有随后对该JSP文件的请求,服务器将检查该JSP文件自最后一次被存取后是否经过修改。

如果没有修改,则将请求交还给还在内存中的Servlet的jspService()方法,执行回复操作。

由于Servlet始终驻于内存,所以响应是非常快的。

Jsp页面在第一次访问时由于要转化和编译,运行速度较慢,但是当第二次访问该页时,由于文件已经被编译成字节码文件了,所以速度非常得快。

1.2.2JSP页面的组成

JSP页面看上去像标准的HTML和XML页面,并附带有JSP引擎能够处理和解析执行的代码与组件。

通常,JSP代码和组件用于创建在最终页面上显示的文本。

通常来说,JSP页面包括编译指令,动作指令,声明,表达式和程序段等内容。

1.2.3JavaBean技术介绍

JavaBean技术是一种基于Java的组件技术,JavaBean组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据的提取等,是解决代码重用问题的一种策略。

以前的组件无法实现真正的代码重用,其主要原因就是它们对于处理平台的依赖和对开发语言的依赖过重。

由于Java语言在这些方面所具有的特点和优势,使得基于它的软件JavaBean组件技术倍受人们的关注。

它的任务就是:

一次编写,可以在任何地方执行,可以在任何地方重用。

JavaBean组件可以在任何地方冲用包括了可以在应用程序、其他组件、文档、Web站点和应用程序构造器工具等多种方案中再利用。

为了创建和使用Java软件组件,JavaBean被实现为一种独立于平台和结构的应用程序接口,它的实现可以忽略内部的结构及细节问题,只需要定义其外部的特征及对外功能就行。

其中,属性、方法和事件三种接口可以独立对外进行开发。

JavaBean的实质就是一个.class文件,也可以成为类文件。

JavaBean以binary格式保存,可以保护Java源代码不容易被他人抄袭。

1.2.4JSP的运行环境

要运行Jsp,需要有支持Jsp的服务器。

这里分2种情况:

一种是自身就支持Jsp的服务器,如Jrun,Weblogic,JSWDK等;而另一种则是在不支持Jsp的服务器上安装Jsp引擎的插件,如在IIS,Apache等服务器上安装WebSphere,tomcat,Resin等插件。

其中主流服务器是Weblogic和tomcat.

Weblogic是一款功能强大的服务器软件,配置比较简单,而且Jsp的扩展功能较多,附带了数据库的JDBC驱动程序。

,支持JHTML(一种与Jsp十分相似的技术),是目前市场占有率最高的服务器。

Tomcat服务器是ApacheGroupJakarta小组开发的一个免费服务器软件,适合于嵌入Apache中使用,而且,它的源代码可以免费获得,你可以自由地对它进行扩充。

访问的地址http:

//jakarta.apache.org/tomacat/index.html,Tomcat服务器的兼容性很好,如WebLogic服务器采用其为Web服务器引擎,Jbuilder将其作为标准的测试服务器,Sun公司也将其作为JSP技术应用的示例服务器

第二章需求分析

2.1系统说明

本系统是一个中小型的电子商务系统----网上书店,可以为各类用户提供方便的在线买书环境,符合目前国内流行的电子商务模式。

用户可以在系统中实现注册、浏览商品、搜索查询商品、下定单、处理定单等功能;管理员可以通过用户管理、定单管理、商品管理、评论管理等管理功能来对系统进行维护更新。

2.2系统功能简介

2.2.1基本功能

●游客可以浏览网站

●用户登陆

●用户能够浏览网站

●提供搜索引擎,使用户能够按特定的条件对所需商品进行搜索

●用户下定单购买商品

2.2.2用户界面设计

第三章系统设计

3.1系统设计思想

本系统采用三层架构设计,它的工作原理如图3-1所示。

图3-1

采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。

这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间的接口即可。

3.2系统功能模块化

如图3-2为本系统的功能模块图。

 

图3-2

3.3数据库设计

数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。

合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。

3.3.1数据库需求分析

针对一般在线书店的需求,得出如下需求信息。

▪用户分为游客和已注册用户。

▪订单分为单张详细订单和总订单。

▪一个用户可以购买多本图书。

▪一个用户对应一张订单。

▪一个列表对应多张订单。

针对本系统功能分析,总结出如下的需求信息。

▪用户,包括数据项:

用户ID、用户名、密码。

▪图书,包括数据项:

图书编号、图书名、价格、图书介绍。

▪订单列表,包括数据项:

订单编号、图书编号、购书数量。

▪订单,包括数据项:

订单编号、用户编号、下单时间。

3.3.2数据库概念结构

从本系统中规划出的实体有:

用户实体、图书实体、订单实体、订单列表实体。

用户信息实体的E-R图如图3-4所示。

图书实体的E-R图如图3-5所示。

订单实体的E-R图如图3-6所示。

订单列表实体的E-R图如图3-7所示。

3.3.3数据库逻辑机构设计

在线书店数据库中各个表的设计结果如下面的标和所示。

表3-8为图书信息列表。

表3-8

表3-9为用户信息列表。

表3-9

表3-10为订单总表,记录某个用户的订单信息。

表3-10

表3-11为订单表,记录但张订单的具体信息。

表3-11

第四章详细设计

4.1系统概述

我设计的这个系统是一个由JSP实现的网上购书系统。

它实现了基本的登录验证、查询商品、分页处理、购物车处理以及订单处理功能,其主要界面见图4-1:

图4-1

4.2系统主要文件

这个购书系统主要有2类文件,一类是Bean文件,我把它们统一放在了cart文件夹里,保存在jakarta-tomcat-5.0.27\common\classes\cart下,(这是tomcat要求的默认存放Bean的路径);另一类是jsp文件,保存在jakarta-tomcat-5.0.27\webapps\ROOT。

(这是tomcat的默认工作环境)

Bean文件:

CartManager.java,OrderEntity.java,OrderItemEntity.java

ProductEntity.java,UserEntity.java

Jsp文件:

cart.jsp

4.3详细代码及说明

4.3.1实现用户实体的Bean

1)用户作为实体,我把他的id,姓名,密码作为其属性在Bean里面做了定义,它们都是和数据库里的user表相对应的,在这个Bean里封装的方法也主要是对这个表进行操作.这个几个属性都被定义为类的私有成员,外界不可访问

privateStringid;

privateStringuserName;

privateStringuserPassword;

2)构造函数里做了2件事情,第一:

寻找数据库连接驱动;第二:

对上面的3个私有成员初始化:

publicstaticStringsDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";

publicstaticStringsConnStr="jdbc:

odbc:

cart";

publicstaticConnectionconn=null;

publicUserEntity(Stringid,StringuserName,StringuserPassword)

{

try{

Class.forName(sDBDriver);

}

catch(java.lang.ClassNotFoundExceptione){

System.err.println("UserEntity:

"+e.getMessage());

}

this.id=id;

this.userName=userName;

this.userPassword=userPassword;

}

3)这个类我封装了2类方法:

一是查找特定用户名的所有记录,代码如下:

publicstaticUserEntityqueryUser(StringuserName)throwsSQLException

{

try{

Class.forName(sDBDriver);

}

catch(java.lang.ClassNotFoundExceptione){

System.err.println("UserEntity:

"+e.getMessage());

}

Stringsql="selectid,user_name,user_passwordfromuserwhereuser_name=?

";

ResultSetrs=null;

try{

conn=DriverManager.getConnection(sConnStr);

PreparedStatementprepStmt=conn.prepareStatement(sql);

prepStmt.setString(1,userName);

rs=prepStmt.executeQuery();

}

catch(SQLExceptionex){

System.err.println("OrderItemEntityexecuteQuery:

"+ex.getMessage());

}

UserEntityuser=null;

if(rs.next())

user=newUserEntity(rs.getString

(1),rs.getString

(2),rs.getString(3));

returnuser;

}

该类封装的另一种方法是:

用户名和密码的获得。

这个主要是为了方便后面验证用户合法性使用

publicStringgetUserName(){

returnuserName;}

publicStringgetUserPassword(){

returnuserPassword;}

4.3.2实现商品实体的Bean

虽然我做的是一个购书系统,但考虑到系统的可扩展性,我把书当作一种商品来进行定义。

同样,参照数据库里的product表,我给商品这个类定义了如下4个属性,商品id,商品名称,商品价格,商品note,其类型同样是该类的私有属性:

privateStringid;

privateStringproductName;

privateStringproductPrice;

privateStringproductNote;

1)其构造函数和用户实体类基本上一致,所以代码及其说明我在这里就省略了。

2)对商品的操作也主要是2类,一类是对特定商品的查询,其原理和查询用户是一样的,但是有一点小小的区别,即查询商品可以使查询所有的商品,或者是查询特定id的商品,我通过以下代码把这2种查询合在了queryProduct这个函数里:

Stringsql="selectid,product_name,product_price,product_notefromproduct";

if(productIpareTo("")!

=0)

sql=sql+"whereid=?

";

Vectorv=newVector();

ResultSetrs=null;

其关于连接数据库,查询记录的代码和上面的大致雷同,所以在这里就省略了。

显示商品是分页显示的,其代码如下:

while(rs.next()){

++i;

if(i>pageCount*pageSize){

if(i<=(pageCount+1)*pageSize)

v.add(newProductEntity(rs.getString

(1),rs.getString

(2),rs.getString(3),rs.getString(4)));

else

break;

}

}

这一段代码的主要功能是:

每一页最多显示pageSize个商品,如果超过pageSize个,就分页显示。

PageSize在后面将会定义,其值我设置为10。

3)第二类方法是查询商品的id,全称,价格和note.例如查找商品的ID:

publicStringgetProductId()

{returnid;}

4.3.3实现订购单实体的Bean

客户每次购买一种商品都会产生一次订购单,它包括订单号,所购买的书号,所购买这种书的数量,这些构成了这个类的私有属性:

privateStringid;

privateStringorderId;

privateStringproductId;

privateStringproductNum;

1)客户每次选中一种商品后,点击放入购物车,就会产生一个订单,其实现代码如下:

Stringsql="insertintoorder_item(order_id,product_id,product_num)values(?

?

?

)";

ResultSetrs=null;

try{

conn=DriverManager.getConnection(sConnStr);

PreparedStatementprepStmt=conn.prepareStatement(sql);

prepStmt.setString(1,orderId);

prepStmt.setString(2,productId);

prepStmt.setString(3,productNum);

prepStmt.executeUpdate();}

订购单,书号,购买数量都是作为参数传过来的。

很明显,新建一张订购单其实就是在order_item表里插入一条新纪录就可以了。

其原理已经在上面说过来了,就不在此重复了。

2)在后面的购物车里,一名顾客的最终消费总额就是根据这里一张张的订购单得到的,所以查找特定订单号的订购单是这个类里面不可缺少的方法,它的算法实质上就是条件查询,和前面的无条件查询相比,我只把sql语句作了改动:

Stringsql="selectid,order_id,product_id,product_numfromorder_itemwhereorder_id=?

";

3)第3个被封装的方法是设置,获得订购单号,书号,定购数量,并且还可以获得sessionprice.

4.3.4实现购物车实体的Bean

在现实生活中,人们去超市买东西,都是把商品放在一个购物篮里,等到把所有要买的东西选购完毕后,一起拿到收银台前付钱。

我在程序里定义的购物车实体就是模拟这个功能.作为购物车,购物人,购物时间,所购书的总价格都是必不可少的:

privateStringid;

privateStringuserName;

privateStringorderDate;

privateStringorderPrice;

我觉得在这个Bean里面主要要解决的一个问题,如何解决一个新的购物车。

当一个顾客买完书提交购物车后,我们必须插入一个新的购物车纪录,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1