ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:380.22KB ,
资源ID:18461769      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18461769.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网上书店Online BookStore System毕业论文Word下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、客户端请求(Request)Web Server响应(Response)Serverextension服务器扩展ServletengineJSPServlet引擎JSP引擎ClassloaderJavacomplierparser类载入器Java编译器JSP语法分析器图1-1 JSP运行原理在编译时如果发现JSP文件有任何语法错误,转换过程将中断,并向客户端发出出错信息;如果编译成功,则所转换产生的Servlet代码被编译,然后该Servlet被JSP引擎加载到存中。此时JSP引擎还请求了jspInit()方法的执行,并对此Servlet初始化。JspInit()方法在Servlet的生命周期

2、中只被请求一次,然后将被调用来处理客户端的请求和回复操作。对于所有随后对该JSP文件的请求,服务器将检查该JSP文件自最后一次被存取后是否经过修改。如果没有修改,则将请求交还给还在存中的Servlet的jspService()方法,执行回复操作。由于Servlet始终驻于存,所以响应是非常快的。Jsp页面在第一次访问时由于要转化和编译,运行速度较慢,但是当第二次访问该页时,由于文件已经被编译成字节码文件了,所以速度非常得快。1.2.2 JSP页面的组成JSP页面看上去像标准的HTML和XML页面,并附带有JSP引擎能够处理和解析执行的代码与组件。通常,JSP代码和组件用于创建在最终页面上显示的

3、文本。通常来说,JSP页面包括编译指令,动作指令,声明,表达式和程序段等容。1.2.3 JavaBean技术介绍JavaBean技术是一种基于Java的组件技术,JavaBean组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据的提取等,是解决代码重用问题的一种策略。以前的组件无法实现真正的代码重用,其主要原因就是它们对于处理平台的依赖和对开发语言的依赖过重。由于Java语言在这些方面所具有的特点和优势,使得基于它的软件JavaBean组件技术倍受人们的关注。它的任务就是:一次编写,可以在任何地方执行,可以在任何地方重用。JavaBean组件可以在任何地方冲用包括了可以在应用程序、其

4、他组件、文档、Web站点和应用程序构造器工具等多种方案中再利用。为了创建和使用Java软件组件,JavaBean被实现为一种独立于平台和结构的应用程序接口,它的实现可以忽略部的结构及细节问题,只需要定义其外部的特征及对外功能就行。其中,属性、方法和事件三种接口可以独立对外进行开发。JavaBean的实质就是一个.class文件,也可以成为类文件。JavaBean以binary格式保存,可以保护Java源代码不容易被他人抄袭。1.2.4 JSP的运行环境要运行Jsp,需要有支持Jsp的服务器。这里分2种情况:一种是自身就支持Jsp的服务器,如Jrun,Weblogic,JSWDK等;而另一种则是

5、在不支持Jsp的服务器上安装Jsp引擎的插件,如在IIS,Apache等服务器上安装WebSphere,tomcat,Resin等插件。其中主流服务器是Weblogic和tomcat.Weblogic是一款功能强大的服务器软件,配置比较简单,而且Jsp的扩展功能较多,附带了数据库的JDBC驱动程序。,支持JHTML(一种与Jsp十分相似的技术),是目前市场占有率最高的服务器。Tomcat服务器是Apache Group Jakarta小组开发的一个免费服务器软件,适合于嵌入Apache中使用,而且,它的源代码可以免费获得,你可以自由地对它进行扩充。访问的地址 jakarta. apache.o

6、rg/tomacat/index.html, Tomcat服务器的兼容性很好,如WebLogic服务器采用其为Web服务器引擎,Jbuilder将其作为标准的测试服务器,Sun公司也将其作为JSP技术应用的示例服务器第二章 需求分析2.1 系统说明本系统是一个中小型的电子商务系统-网上书店,可以为各类用户提供方便的在线买书环境,符合目前国流行的电子商务模式。用户可以在系统中实现注册、浏览商品、搜索查询商品、下定单、处理定单等功能;管理员可以通过用户管理、定单管理、商品管理、评论管理等管理功能来对系统进行维护更新。2.2 系统功能简介2.2.1 基本功能 游客可以浏览 用户登陆 用户能够浏览 提

7、供搜索引擎,使用户能够按特定的条件对所需商品进行搜索 用户下定单购买商品2.2.2 用户界面设计第三章 系统设计3.1 系统设计思想本系统采用三层架构设计,它的工作原理如图3-1所示。图3-1采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间的接口即可。3.2 系统功能模块化如图3-2为本系统的功能模块图。用户登录在线购书查看购物车察看订单信息察看图书详细购买图书查询察看图书详细资料查看订单详细继续购书清空购物车提交

8、购物车删除已经选购的图书修改购买数量图3-23.3 数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。3.3.1 数据库需求分析针对一般在线书店的需求,得出如下需求信息。 用户分为游客和已注册用户。 订单分为单详细订单和总订单。 一个用户可以购买多本图书。 一个用户对应一订单。 一个列表对应多订单。针对本系统功能分析,总结出如下的需求信息。 用户,包括数据项:用户ID、用户名、密码。 图书,包括数据项:图书编号、图书名、价格、图书介绍。 订单列表,包括数据

9、项:订单编号、图书编号、购书数量。 订单,包括数据项:订单编号、用户编号、下单时间。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

10、系统概述我设计的这个系统是一个由JSP实现的网上购书系统。它实现了基本的登录验证、查询商品、分页处理、购物车处理以及订单处理功能,其主要界面见图4-1:图4-14.2 系统主要文件 这个购书系统主要有2类文件,一类是Bean文件,我把它们统一放在了cart文件夹里,保存在jakarta-tomcat-5.0.27commonclassescart下,(这是tomcat要求的默认存放Bean的路径);另一类是jsp文件,保存在jakarta-tomcat-5.0.27webappsROOT。(这是tomcat的默认工作环境)Bean文件:CartManager.java,OrderEntity.

11、java,OrderItemEntity.java ProductEntity.java,UserEntity.javaJsp文 件:cart.jsp4.3 详细代码及说明4.3.1实现用户实体的Bean1)用户作为实体,我把他的id, ,密码作为其属性在Bean里面做了定义,它们都是和数据库里的user表相对应的,在这个Bean里封装的方法也主要是对这个表进行操作.这个几个属性都被定义为类的私有成员,外界不可访问 private String id; private String userName; private String userPassword;2)构造函数里做了2件事情,第一:寻

12、找数据库连接驱动;第二:对上面的3个私有成员初始化:public static String sDBDriver = sun.jdbc.odbc.JdbcOdbcDriver;public static String sConnStr = jdbc:odbc:cartpublic static Connection conn = null;public UserEntity(String id,String userName,String userPassword) try Class.forName(sDBDriver); catch(java.lang.ClassNotFoundExcep

13、tion e) System.err.println(UserEntity: + e.getMessage(); this.id=id; this.userName=userName; this.userPassword=userPassword; 3)这个类我封装了2类方法:一是查找特定用户名的所有记录,代码如下:public static UserEntity queryUser(String userName) throws SQLException catch(java.lang.ClassNotFoundException e) String sql=select id,user_n

14、ame,user_password from user where user_name= ? ResultSet rs = null; try conn = DriverManager.getConnection(sConnStr); PreparedStatement prepStmt = conn.prepareStatement(sql); prepStmt.setString(1,userName); rs = prepStmt.executeQuery(); catch(SQLException ex) OrderItemEntity executeQuery: + ex.getMe

15、ssage(); UserEntity user=null; if(rs.next() user=new UserEntity(rs.getString(1),rs.getString(2),rs.getString(3); return user;该类封装的另一种方法是:用户名和密码的获得。这个主要是为了方便后面验证用户合法性使用 public String getUserName() return userName; public String getUserPassword() return userPassword;4.3.2实现商品实体的Bean虽然我做的是一个购书系统,但考虑到系统

16、的可扩展性,我把书当作一种商品来进行定义。同样,参照数据库里的product表,我给商品这个类定义了如下4个属性,商品id,商品名称,商品价格,商品note,其类型同样是该类的私有属性: private String productName; private String productPrice; private String productNote;1) 其构造函数和用户实体类基本上一致,所以代码及其说明我在这里就省略了。2) 对商品的操作也主要是2类,一类是对特定商品的查询,其原理和查询用户是一样的,但是有一点小小的区别,即查询商品可以使查询所有的商品,或者是查询特定id的商品,我通过以

17、下代码把这2种查询合在了queryProduct这个函数里:String sql=select id,product_name,product_price,product_note from product if(productIpareTo()!=0) sql=sql+ where id = ? Vector v=new Vector(); 其关于连接数据库,查询记录的代码和上面的大致雷同,所以在这里就省略了。显示商品是分页显示的,其代码如下: while(rs.next() +i; if(ipageCount*pageSize) if(i=(pageCount+1)*pageSize)v.

18、add(new ProductEntity(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4); else break; 这一段代码的主要功能是:每一页最多显示pageSize个商品,如果超过pageSize个,就分页显示。PageSize在后面将会定义,其值我设置为10。3) 第二类方法是查询商品的id,全称,价格和note. 例如查找商品的ID: public String getProductId() return id; 4.3.3 实现订购单实体的Bean 客户每次购买一种商品都会产生一次订购单,它包括订单号

19、,所购买的书号,所购买这种书的数量,这些构成了这个类的私有属性: private String orderId; private String productId; private String productNum;1) 客户每次选中一种商品后,点击放入购物车,就会产生一个订单,其实现代码如下:insert into order_item(order_id,product_id,product_num) values(?,?) prepStmt.setString(1,orderId); prepStmt.setString(2,productId); prepStmt.setString(

20、3,productNum); prepStmt.executeUpdate();订购单,书号,购买数量都是作为参数传过来的。很明显,新建一订购单其实就是在order_item表里插入一条新纪录就可以了。其原理已经在上面说过来了,就不在此重复了。2)在后面的购物车里,一名顾客的最终消费总额就是根据这里一的订购单得到的,所以查找特定订单号的订购单是这个类里面不可缺少的方法,它的算法实质上就是条件查询,和前面的无条件查询相比,我只把sql语句作了改动:select id,order_id,product_id,product_num from order_item where order_id= ?

21、3)第3个被封装的方法是设置,获得订购单号,书号,定购数量,并且还可以获得session price.4.3.4 实现购物车实体的Bean在现实生活中,人们去超市买东西,都是把商品放在一个购物篮里,等到把所有要买的东西选购完毕后,一起拿到收银台前付钱。我在程序里定义的购物车实体就是模拟这个功能.作为购物车,购物人,购物时间,所购书的总价格都是必不可少的: private String orderDate; private String orderPrice;我觉得在这个Bean里面主要要解决的一个问题,如何解决一个新的购物车。当一个顾客买完书提交购物车后,我们必须插入一个新的购物车纪录,这是由

22、insertOrder()方法来实现的:其插入代码如下: conn = DriverManager.getConnection(sConnStr); PreparedStatement prepStmt = conn.prepareStatement(sql); String curDate=(java.util.Calendar.getInstance().getTime().toString(); prepStmt.setString(1,userName); prepStmt.setString(2,curDate); prepStmt.setString(3,orderPrice);

23、prepStmt.executeUpdate();这里,插入的原理和前面是相同的,但是有一个地方需要解释:即购物时间字段,是采用的java.util.Calendar.getInstance().getTime(),这是一个库函数,被封装在java.util,在这个类定义的开头,我把这个库文件包含进来: import java.util.*;这个方法返回的结果必须把转化成String,否则后面插入数据库时会出现类型不匹配的错误。toString()就是用来实现类型转换的。为了方便后面对这个购物车进行操作,我在这个方法里还获得了该购物车的id: String selectStatement =s

24、elect id +from orderlist where user_name=? order by id desc PreparedStatement prepStmt = conn.prepareStatement(selectStatement); prepStmt.setString(1,userName); ResultSet rs = prepStmt.executeQuery(); rs.next(); String result=rs.getString(1);return result;在sql里,查询特定用户购物车的id号,并且按照降序排列。是因为,针对一个网上购书系统,顾客可以多次在这里购书,那么在购物车表单里,针对一个顾客会有很多条他的购物纪录,而在数据库里,各条记录的id是安装时间先后顺序逐渐递增的,如果安装降序排列,那么得到的第一条记录则是最新插入的纪录。result=rs.getString(1)表示只把该条记录的第一个字段传给result,即把购物车的id号传给result。4.3.5 实现购物实体的Bean 1)买书的第一步便是用户登录,现在购书都要

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

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