基于java网上图书销售系统的设计与实现(含源文件)

欢迎添加微信互相交流学习哦!

二维码

项目源码:https://gitee.com/oklongmm/biye

1引言 
随着Internet国际互联网的发展,越来越多的企业开始建造自己的网站。基于Internet的信息服务,商务服务已经成为现代企业一项不可缺少的内容。很多企业都已不满足于建立一个简单的仅仅能够发布信息的静态网站。现代企业需要的是一个功能强大的,能提供完善的电子商务服务的动态商务网站。同时人们的生活方式也在随着发生改变,传统的购物方式已不能满足人们的需求。  
JSP是Sun公司推出的一种网站开发技术,Sun公司借助自己在Java上的不凡造诣,又把人们引进JSP时代,JSP即Java Server Page,它可以在Servlet和JavaBean的支持下,完成功能强大的Web应用程序。所以,在我的毕业设计中,我采用了JSP作为开发工具,构建了一个能实现基本的电子商务的小型动态商务网站——网上图书销售系统。该系统能实现用户的注册、登录功能;能够实现商品的查询,订购等功能。该系统基本上具备一个网上商品销售系统应该具备的常用功能,该设计项目基本上体现了构建一个动态商务网站所需要的技术,可以说,目前的大型商务网站也就是我们这个小型网站在内容上的扩充和完善。
2 概述 
随着时代的发展,信息技术、Internet/Intranet技术、数据库技术的不断发展完善,网络进程的加快,传统的购物方式也越来越不能满足人们快节奏的生活需求,使得企业的IT部门已经认识到Internet的优势,电子商务就是在这样一个背景下产生发展起来的。伴随着电子商务技术的不断成熟,电子商务的功能也越来越强大,注册用户可以在网上搜索购买到自己想要的各种商品,初步让人们体会到了足不出户,便可随意购物的快感。我的毕业设计也就正是一个电子商务系统的开发---网上图书销售系统。
3 系统分析
3.1 可行性分析
商业企业在运营过程中,经常会受到以下一些条件的限制:
    产品的宣传受到限制,采购商或顾客只能通过上门咨询、电话沟通等方式进行各种信息的获取,受一定的时间与物理空间的局限并且成本较高。
    庞大的商业经济周转。
    复杂的产品周转渠道。从看样品、谈价格到支付货款等一系列的产品周转渠道过于复杂,企业与顾客之间缺乏全面的沟通与快捷运营的平台。
    商业企业中根据季节的变化,热销商品在销售高峰到来时货源紧张,企业需要实时了解商品的销售情况,保证热销商品的要货满足率。
因此,企业需要重新认识市场、消费者以及自身市场定位,正确认识电子商务技术在企业中的重要地位,以少量的时间和资金建立企业信息门户网站并架设一定范围的商务网络,以此来制定长远发展战略,使企业与顾客间的经济活动变得更灵活、更主动。
本系统是一个中小型的电子商务系统----网上书店,可以为各类用户提供方便的在线买书环境,符合目前国内流行的电子商务模式。用户可以在系统中实现注册、浏览商品、搜索查询商品、下定单、处理定单等功能;管理员可以通过用户管理、定单管理、商品管理、评论管理等管理功能来对系统进行维护更新。
在技术上,目前市场上开发电子商务平台的技术很多,如ASP,PHP,PB,.NET等。我采用SUN公司的JSP技术,它是目前市场上最流行的技术之一,JSP具有一次编译,处处运行的优点[4]。
由分析可得,不论是商业还是技术上,网上图书销售系统的开发都是可行的。
3.2需求分析
通过对电子商务网站及网上书店的考察、分析以及实际的市场调查,要求本系统具有以下功能:
    统一友好的操作界面,能保证系统的易用性。
    规范、完善的基础信息设置。
    图书分类详尽,可按不同类别查看商品信息。
    按图书大类及图书名称进行模糊查询。
    实现网上购书。
    新书及特价图书展示。
4 概要设计
4.1 系统设计目标
对于典型的数据库管理系统,尤其是对像电子商务这样的数据流量特别大的网络管理系统,必须要满足使用方便、操作灵活等设计要求。本系统在设计时应该满足以下几个目标:
    采用人机对话的操作方式,界面设计美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。
    全面展示书店内所有的图书,并可展示最新图书及特价图书。
    为顾客提供一个方便、快捷的图书信息查询功能。采用模糊查询查询数据。
    实现网上购物。
    商品销售排行,以方便顾客了解本商城内的热销商品及帮助企业领导者做出相应的决策。
    查看商城内的公告信息。
    用户随时都可以查看自己的订单。
    对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
    系统最大限度地实现了易维护性和易操作性。
    系统运行稳定、安全可靠。
4.2 系统设计思想
本系统采用三层架构设计[4],它的工作原理如图4.1所示。
 
图4.1 三层结构原理图
采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间的接口即可。
4.3 系统功能模块划分
根据需求分析及三层架构设计的思想,设计出客户系统功能如图4.2


图 4.2 客户端系统
后台管理的系统功能图如图4.3
 
图4.3 后台管理系统功能图
4.4系统结构设计
根据面向对象和三层结构设计的思想,可得出如图4.4所示的系统结构设计图。
                                  图4.4 系统结构图
4.5系统功能简介
4.5.1系统基本功能
1)图书信息查询
该模块实现图书信息的分类显示,提供最新商品的推荐显示以及销售显示,便于引导购物取向。此外,还提供依据图书名称或是编号等包含关键字实现快速搜索的功能并显示图书的有关详细信息。
2)购物车管理
用于对每一个进入系统的用户所对应的购物车进行管理。将用户所选购的图书信息,包括价格、数量等信息记录到对应的购物车上,便于到收银台进行结帐处理。同时在此模块中,用户还可以方便的实现修改购物图书、清空购物车等操作。
3)会员信息管理
实现系统相关用户信息的注册及身份验证,同时也提供对应的用户资料的更新。该系统可以收集用户相关的联系方式、通讯地址等信息,可以更好的拓展销售规模。
4)订单处理
根据购物车中的信息,以及用户所选择的送货方式和付款方式,和用户对应的个人信息生成订单,便于后续工作的处理。在该模块中,用户可以随时查阅自己的订单,并对其进行取消等处理操作。
4.6 数据库设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致[10]。
4.6.1 数据库需求分析
针对网上图书销售系统的需求分析,得出如下需求信息。
订单分为单张详细订单和总订单。
    一个用户可以购买多本图书。
    一个用户对应一张订单。
    一个列表对应多张订单。
针对本系统功能分析,总结出如下的需求信息。
    用户,包括数据项:用户ID、用户名、密码。
    图书,包括数据项:图书编号、图书名、价格、图书介绍。
    订单列表,包括数据项:订单编号、图书编号、购书数量。
    订单,包括数据项:订单编号、用户编号、下单时间。
4.6.2 数据库概念结构设计
从本系统中规划出的实体有:用户信息实体、管理员信息实体、图书实体、图书分类实体、订单实体、订单列表实体。
实体之间关系的E-R图如图4.5所示。
                                           图4.5  实体之间的E-R图
     管理员实体的E-R图,如图4.6所示。
    图书分类实体的E-R图,如图4.7所示。
用户信息实体的E-R图,如图4.8所示。
图书实体的E-R图,如图4.9所示。
订单实体的E-R图,如图4.10所示。
订单列表实体的E-R图,如图4.11所示。
 
          图4.6  管理员实体的E-R图                     图4.7 图书分类实体E-R图                                                
 
图 4.8 用户实体E-R图
 
                               图4.9 图书实体E-R图  
 
图4.10 订单实体E-R图
 
图 4.11订单列表实体的E-R图
4.7  数据库逻辑结构设计
本系统数据库采用SQL Server 2000数据库,系统数据库名称为bookshop,下面分别给出数据表概要说明、数据表关系概要说明及主要数据表的结构。
1、    数据表概要说明
数据表树型结构图如图4.12所示,该数据表树型结构图包含系统所有的数据表
 
 图4.12 数据表树型结构图  
2、各个表的的结构如下表
表4.1为图书信息列表,记录书店现有的图书信息。
表4.1 Book表
列名    数据类型    长度    允许空    注释
ID    Int     4        图书编号
BookName    varchar    40    否    图书名称
BookClass    Int    4    否    图书分类
Author    Varchar    25    是    作者
Publish    Varchar    150    是    出版社
BookNo    Varchar    30    是    书号 
Content    text    300    是    内容
Price    float    8    是    价格
Amount    int    4    是    总数量
Leav_number    int    4    是    剩余数量
RegTime    datatime    8    是    注册时间
Picture    varchar    60    是    封面
表4.2为书店管理员信息表,记录管理员的帐号和密码。
                               表4.2  BookAdmin表
列名    数据类型    长度    允许空    注释
Adminuser    Varchar    20    否    管理员
AdminPass    Varchar    20    否    管理员密码
表4.3为用户信息表,记录用户的基本信息。
表4.3  用户表
列名    数据类型    长度    允许空    注释
ID    Int     2    否    用户编号
UserName    Varchar    50    否    用户名
passWord    Varchar    50    否    密码
Names    Varchar    50    否    真名
Sex    Varchar    50    是    性别
Address    Varchar    50    是    地址
Phone    Varchar    50    是    电话
Post    Varchar    50    是    邮编
Email    Varchar    50    是    电子邮件
RegTime    Datatime    50    是    注册时间
RegIPAddress    varchar    50    是    注册IP地址
表4.4为订单总表,记录某个用户的订单总信息。
                           表4.4 订单总表
列名    数据类型    长度    允许空    注释
ID    Int    4     否    总订单编号
OrderID    Int    4    否    订单号
BookNo    Int    4    否    书号   
Amount    int    4    是    数量
表4.5为订单表,记录但张订单的具体信息。
表4.5  订单表
列名    数据类型    长度    允许空    注释
ID    Int    4    否    订单ID
OrderID    Varchar    50    否    总订单ID
UserId    Varchar    50    否    用户ID
SubmitTime    Datatime    8    是    提交时间
ConsignmentTime    Datatime    8    是    购买时间
TotalPrice    Float    16    是    总价格
content    Text    300    是    描述
Ipaddress    Varchar    50    是    Ip 地址
Ispayoff    Varchar    50    是    是否付款
IsAddress    varchar    20    是    是否发货
表4.6为图书分类表,记录书店现有图书的分类。
                表4.6 Bookclass表
列名
数据类型    长度    允许空    注释
ID    Varchar    30    否    分类编号
ClassName    varchar    30    否    分类名


5 详细设计
5.1 开发技术简介
5.1.1 JSP简介
JSP(Java Server Pages)是由Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准,JSP技术在Servlet技术基础上发展起来的,它正在飞速发展中,现已成为Java服务器编程的重要组成部分。它虽然还未成型,但是它必将和J2EE(Java 2 Enterprise Edition)一起发展[6]。
JSP是结合markup(HTML和XML)和Java代码来处理一种动态页面。每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。JSP提供了多种方式访问Java class、Servlet、Applets和Web Server,因此,Web应用的功能可以分成多个明确定义公用接口的组件,通过JSP将它们结合在一起[9]。
5.1.2 JSP的运行原理
在JSP第一次获得来自于客户端浏览器的请求时,JSP文件将被JSP引擎(JSP engine)转换成一个Servlet,即将”.jsp”文件编译成Java Class文件。当Servlet引擎接收到请求后,如果设置了使用最新的JSP,它就会去找JSP文件,检查该文件在上次编译后是否改动过。如果改动过,就会重新编译生成新的Servlet,最终将请求转交给编译好的Servlet引擎执行[1]。如图5.1


图5.1 JSP运行原理图
在编译时如果发现JSP文件有任何语法错误,转换过程将中断,并向客户端发出出错信息;如果编译成功,则所转换产生的Servlet代码被编译,然后该Servlet被JSP引擎加载到内存中。此时JSP引擎还请求了jspInit()方法的执行,并对此Servlet初始化。JspInit()方法在Servlet的生命周期中只被请求一次,然后将被调用来处理客户端的请求和回复操作。对于所有随后对该JSP文件的请求,服务器将检查该JSP文件自最后一次被存取后是否经过修改。如果没有修改,则将请求交还给还在内存中的Servlet的jspService()方法,执行回复操作。由于Servlet始终驻于内存,所以响应是非常快的。Jsp页面在第一次访问时由于要转化和编译,运行速度较慢,但是当第二次访问该页时,由于文件已经被编译成字节码文件了,所以速度非常得快。
5.1.3 JSP页面的组成
 JSP页面看上去像标准的HTML和XML页面,并附带有JSP引擎能够处理和解析执行的代码与组件。通常,JSP代码和组件用于创建在最终页面上显示的文本。通常来说,JSP页面包括模板元素,指令元素,动作元素,Scritptlets,声明,表达式和JSP内建对象。
1)模板元素:模板元素是指JSP的静态HTML或者XML[4] 。
    2)指令元素:使用指令元素来设置全局变量,声明类、要实现的方法和输出内容的内型,它们并不向客户端产生任何输出,所有指令在文件范围内有效,JSP指令的一般语法形式为:<%@directivename attribute=”value”,attribute=”value”%>。
3)动作元素(标识):动作元素用于执行某些动作。在JSP规范中有2种类型的动作指令的标识。第一种是标准动作,它定义的是无论在什么版本的JSP引擎或Web服务器下总是可用的动作。第二种是自定义动作,它通过使用taglib指令来实现。例如JSP:useBean;JSP:setProperty;JSP:getProperty就是标准动作。
4)声明:用于声明合法的变量和方法。与任何语言相同,JSP语言使用变量来保存数据。这些变量用declaration元素声明,声明的语法为<%! declaration(s) %>。当页面被初始化的时候,JSP页面中的所有声明都被初始化。除了简单的变量,方法也能被声明。声明不对当前的输出流产生任何影响。
5)表达式:通过计算表达式所得到的结果来表示某个值。表达式的形式为:<%=expression%>。表达式求值的结果被强制转换为一个字符串,并插入到当前的输出流中。
    6)程序段:JSP可以在页面中包含的一段程序,称之为程序段。程序段是一个代码片断,在请求的处理过程中被执行。程序段可以和页面中的静态元件组合起来创建动态生成的页面。程序段在“<% %>”中定义,在这对标识中的所有东西都会被当成JSP程序执行。
5.1.4 JavaBean技术介绍
JavaBean技术是一种基于Java的组件技术,JavaBean组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据的提取,以及封装事务逻辑等,可以很好的实现业务逻辑和前台程序的分离使得系统具有更好的健壮性和灵活性,同时也是解决代码重用问题的一种策略。
以前的组件无法实现真正的代码重用,其主要原因就是它们对于处理平台的依赖和对开发语言的依赖过重。由于Java语言在这些方面所具有的特点和优势,使得基于它的软件JavaBean组件技术倍受人们的关注。它的任务就是:一次编写,可以在任何地方执行,
可以在任何地方重用。JavaBean组件可以在任何地方冲用包括了可以在应用程序、其他组件、文档、Web站点和应用程序构造器工具等多种方案中再利用。
为了创建和使用Java软件组件,JavaBean被实现为一种独立于平台和结构的应用程序接口,它的实现可以忽略内部的结构及细节问题,只需要定义其外部的特征及对外功能就行。其中,属性、方法和事件三种接口可以独立对外进行开发。
JavaBean的实质就是一个.class文件,也可以成为类文件。JavaBean以binary格式保存,可以保护Java源代码不容易被他人抄袭[7]。
5.1.5 JSP 的运行环境
要运行Jsp(注意,不是浏览Jsp页面),需要有支持Jsp的服务器。这里分2种情况:一种是自身就支持Jsp的服务器,如Jrun,Weblogic,JSWDK等;而另一种则是在不支持Jsp的服务器上安装Jsp引擎的插件,如在IIS,Apache等服务器上安装WebSphere,tomcat,Resin等插件。其中主流服务器是Weblogic和tomcat.
Weblogic是一款功能强大的服务器软件,配置比较简单,而且Jsp的扩展功能较多,附带了数据库的JDBC驱动程序。,支持JHTML(一种与Jsp十分相似的技术),是目前市场占有率最高的服务器。不过,Weblogic的运行情况不太稳定,使用它调试Jsp文件,出现语法错误或者数据库连接错误时,Weblogic就有可能崩溃。
Tomcat服务器是Apache Group Jakarta小组开发的一个免费服务器软件,适合于嵌入Apache中使用,而且,它的源代码可以免费获得,你可以自由地对它进行扩充。访问的地址 http://jakarta. apache.org/tomacat/index.html, Tomcat服务器的兼容性很好,如WebLogic服务器采用其为Web服务器引擎,Jbuilder将其作为标准的测试服务器,Sun公司也将其作为JSP技术应用的示例服务器。不足之处是它的配置比较麻烦,对系统硬件要求较高,而且有一些安全性的问题没有解决。但是Tomcat服务器有众多大软件公司的支持,而且服务器的性能稳定,其发展前景很好[9]。
5.2 系统主要文件
该购书系统主要有2类文件,一类是Bean文件,我把它们统一放在了bookshop文件夹里,保存在jakarta-tomcat-5.0.27\common\classes\bookshop下,(这是tomcat要求的默认存放Bean的路径),在bookshop文件夹下又有3个包:book,run,util,对Bean文件的一个分类;另一类是jsp文件,保存在jakarta-tomcat-5.0.27\webapps\ROOT。(这是tomcat的默认工作环境)
Book包中的Bean文件:Allorder.java,Book.java,Bookclass.java,Order.java,Shopcar.java,User.java
Util包中的Bean文件:ChStr.java,DataBase.java,DataFormat.java
Run包中的Bean文件Login.java,    
Op_book.java,Op_bookclass.java,Op_buy.java,Op_user.java
Jsp文件分为前台文件和后台文件,因文件太多,在此就不列举。
5.3 详细设计及说明
5.3.1 数据库连接Bean的编写[2]
数据库操作的JavaBean是一个公共类,放在bookshop下的util包中,通常包括连接数据库的方法getConnection、执行查询语句的方法executeQuery、执行更新操作的方法executeUpdate、关闭数据库连接的方法close。其实现代码如下:
package bookshop.util;    //将该类保存到package bookshop.util 包中
/**
 * <p>数据库连接专用包 </p>
 * <p>Copyright: wxy Copyright (c) 2007</p>
 * <p>Company:Ling Du book shop online </p>
*/
import java.sql.*;       //导入提供基本的数据库编程服务的包
public class DataBase {
  public Connection conn;    //定义一个Connection对象
  public Statement stmt;     //定义一个Statement对象
  public ResultSet rs=null;  //定义一个ResultSet对象
  public String sqlStr="";   //定义一个字符串,用来保存SQL语句
  public DataBase() {
  this.connect();
  }
 public boolean connect(){
//download by http://www.codefans.net/      try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
//加载SQL Server 2000数据库驱动
String url ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bookshop";
//保存连接数据库的URL地址的变量
conn=DriverManager.getConnection(url,”sa”,””);//建立数据库连接
Statement stmt= conn.createStatement ();
       }catch(Exception ee){
        System.out.println("connect db error:"+ee.getMessage());
//检测数据库连接是否成功
        return false;
       }
      return true;
    }
 public static void main(String[] args) {
     try{
            DataBase db = new DataBase();
            db.connect();
          }catch(Exception e){
   

  • 14
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经过本地编译可运行的,下载完成之后配置相应环境即可使用。源码功能都是经过老师肯定的,都能满足要求,有需要放心下载即可。源码是经
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值