网上书店Online BookStore System毕业论文Word下载.docx

上传人:b****3 文档编号:18461769 上传时间:2022-12-16 格式:DOCX 页数:23 大小:380.22KB
下载 相关 举报
网上书店Online BookStore System毕业论文Word下载.docx_第1页
第1页 / 共23页
网上书店Online BookStore System毕业论文Word下载.docx_第2页
第2页 / 共23页
网上书店Online BookStore System毕业论文Word下载.docx_第3页
第3页 / 共23页
网上书店Online BookStore System毕业论文Word下载.docx_第4页
第4页 / 共23页
网上书店Online BookStore System毕业论文Word下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

网上书店Online BookStore System毕业论文Word下载.docx

《网上书店Online BookStore System毕业论文Word下载.docx》由会员分享,可在线阅读,更多相关《网上书店Online BookStore System毕业论文Word下载.docx(23页珍藏版)》请在冰豆网上搜索。

网上书店Online BookStore System毕业论文Word下载.docx

客户端

请求(Request)

WebServer

响应(Response)

Server

extension

服务器扩展

Servlet

engine

JSP

Servlet引擎

JSP引擎

Class

loader

Java

complier

parser

类载入器

Java编译器

JSP语法分析器

 

图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中使用,而且,它的源代码可以免费获得,你可以自由地对它进行扩充。

访问的地址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

{

catch(java.lang.ClassNotFoundExceptione){

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){

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,其类型同样是该类的私有属性:

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();

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

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

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

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

privateStringorderId;

privateStringproductId;

privateStringproductNum;

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

insertintoorder_item(order_id,product_id,product_num)values(?

?

)"

prepStmt.setString(1,orderId);

prepStmt.setString(2,productId);

prepStmt.setString(3,productNum);

prepStmt.executeUpdate();

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

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

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

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

selectid,order_id,product_id,product_numfromorder_itemwhereorder_id=?

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

4.3.4实现购物车实体的Bean

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

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

privateStringorderDate;

privateStringorderPrice;

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

当一个顾客买完书提交购物车后,我们必须插入一个新的购物车纪录,这是由insertOrder()方法来实现的:

其插入代码如下:

conn=DriverManager.getConnection(sConnStr);

PreparedStatementprepStmt=conn.prepareStatement(sql);

StringcurDate=(java.util.Calendar.getInstance().getTime()).toString();

prepStmt.setString(1,userName);

prepStmt.setString(2,curDate);

prepStmt.setString(3,orderPrice);

prepStmt.executeUpdate();

这里,插入的原理和前面是相同的,但是有一个地方需要解释:

即购物时间字段,是采用的java.util.Calendar.getInstance().getTime(),这是一个库函数,被封装在java.util,在这个类定义的开头,我把这个库文件包含进来:

importjava.util.*;

这个方法返回的结果必须把转化成String,否则后面插入数据库时会出现类型不匹配的错误。

toString()就是用来实现类型转换的。

为了方便后面对这个购物车进行操作,我在这个方法里还获得了该购物车的id:

StringselectStatement="

selectid"

+"

fromorderlistwhereuser_name=?

orderbyiddesc"

PreparedStatementprepStmt=conn.prepareStatement(selectStatement);

prepStmt.setString(1,userName);

ResultSetrs=prepStmt.executeQuery();

rs.next();

Stringresult=rs.getString

(1);

returnresult;

在sql里,查询特定用户购物车的id号,并且按照降序排列。

是因为,针对一个网上购书系统,顾客可以多次在这里购书,那么在购物车表单里,针对一个顾客会有很多条他的购物纪录,而在数据库里,各条记录的id是安装时间先后顺序逐渐递增的,如果安装降序排列,那么得到的第一条记录则是最新插入的纪录。

result=rs.getString

(1)表示只把该条记录的第一个字段传给result,即把购物车的id号传给result。

4.3.5实现购物实体的Bean

1)买书的第一步便是用户登录,现在购书都要

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

当前位置:首页 > 经管营销 > 公共行政管理

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

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