《零度网上图书销售系统设计与开发.doc》由会员分享,可在线阅读,更多相关《零度网上图书销售系统设计与开发.doc(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、零度网上图书销售系统设计及开发1. 引言1.1 项目来源随着时代发展,信息技术、Internet/Intranet技术、数据库技术不断发展完善,网络进程加快,传统购物方式也越来越不能满足人们快节奏生活需求,使得企业IT部门已经认识到Internet优势,电子商务就是在这样一个背景下产生发展起来。伴随着电子商务技术不断成熟,电子商务功能也越来越强大,注册用户可以在网上搜索购买到自己想要各种商品,初步让人们体会到了足不出户,便可随意购物快感。我们课程设计也就正是一个电子商务系统开发零度网上图书销售系统。1.2 任务目标对于典型数据库管理系统,尤其是对像电子商务这样数据流量特别大网络管理系统,必须要
2、满足使用方便、操作灵活等设计要求。通过对电子商务网站及网上书店考察、分析以及实际市场调查,要求本系统具有以下功能:l 采用人机对话操作方式,界面设计美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。l 全面展示书店内所有图书,并可展示最新图书及特价图书。l 为顾客提供一个方便、快捷图书信息查询功能。采用模糊查询查询数据。l 实现网上购物。l 商品销售排行,以方便顾客了解本商城内热销商品及帮助企业领导者做出相应决策。l 查看商城内公告信息。l 用户随时都可以查看自己订单。l 对用户输入数据,系统进行严格数据检验,尽可能排除人为错误。l 系统最大限度地实现了易维护性与易操作性。1.3 开
3、发环境硬件环境:处理器 英特尔 酷睿2 双核处理器T5750(2.0GHz, 前端总线667MHz)芯片组 Intel PM 965芯片组内存 2G (DDRII 667)硬盘 250G SATA(5400rpm)显示芯片 NV Geforce 8400M GS 独立显卡,支持TurboCache技术显示内存 128M 独立显存软件环境:操作系统 WINDOWS 7JDK 1.4.2 TomCat 6.01 Access2003 My eclipse 6.52. 系统需求分析2.1 业务需求2.1.1 业务组织从本系统中规划出实体有:用户信息实体、管理员信息实体、图书实体、图书分类实体、订单实
4、体、订单列表实体。NN管理员用户购书订单列表订单图书图书分类11NN11 图2.1.1 实体之间E-R图管理员用户名密码图书分类分类名称分类编号 图2.1.2 管理员实体E-R图 图2.1.3 图书分类实体E-R图 用 户用户名地址真名性别 Email注册时间注册IP密码图 2.1.4用户实体E-R图 图 书 图书编号图书名称分类编号封面作者出版社内容介绍总数量剩余数量价格 图2.1.5 图书实体E-R图 订单订单编号用户编号购买时间总价格内容IP地址是否发货是否付款图2.1.6 订单实体E-R图订单列表购书数量图书编号用户号订单号图 2.1.7订单列表实体E-R图2.1.2业务定义一个网上图
5、书销售管理系统应该包含两类角色:购书者(用户)与图书销售系统管理员。 针对不同角色,将系统分为前台与后台两个部分。购书者部分(前台):1. 购书者进行网上注册、登录:必须先注册,注册时必须提供用户名、密码、电子 邮件、安全提示问题、安全答案。2. 查询待售图书与欲购图书信息:所有注册消费均可通过网上图书销售管理系统,查询最新图书信息、畅销图书信息、特价图书信息。 3. 订购图书:消费者对欲购图书订购,可以修改自己购物车,在订购信息被确认之前可以对订购信息进行修改。系统管理员(后台):1 管理员登录:管理员进入图书销售系统须填写用户名与密码。2 管理员管理供应商信息:包括供应商名称、地址、城市、
6、区域、 、联系方式。3 管理员发布图书信息:通过图书销售管理系统发布最新图书、畅销图书、特价图书信息。4 管理员处理购书者订单信息:包括客户填写订单信息,同时对订单进行审核。5 日销售信息管理:选择日期,查看当天日销售信息。 6 系统公告发布:发布最新系统消息,方便大家购书。2.1.3 业务流程进入系统用户注册是否已注册用户用户登录查看所有商品查看商品详细信息查看购物车是否购买添加至购物车修改商品数量删除商品结账清空购物车填写订单完成结账退出系统否是否是 图2.1.8 业务流程图2.2 功能需求2.2.1 功能组成在线书店客户端界面管理端界面在购书界面图书管理模块购物车界面定单信息管理登陆/注
7、册添加图书模块添加图书分类模块订单信息模块客户管理模块登陆模块公告管理模块 图2.2.1 系统结构图2.2.2 功能逻辑1. 顶层数据流图该系统顶层数据流图如图2.2.2。由于该系统分为用户与管理员两部分,每个部分总数据流图分别如图2.2.3与图2.2.4所示。图书信息购物信息图书信息购物信息网上图书销售管理系统用户管理员图2.2.2 顶层数据流图 用户网上图书销售管理系统注册登录信息搜索查看信息购物车订单结算用户图书信息订单信息订单信息表用户信息表图书详细信息表图2.2.3 用户部分数据流图管理员网上图书销售管理系统供应商信息图书类别图书信息订单信息用户信息管理员订单信息表用户信息表图书类别
8、信息表图书详细信息表订单(详细)信息表订单信息用户信息图书信息图书类别供应商信息图2.2.4 管理员部分数据流图2. 用户部分分解后数据流图1) 注册登录数据流图如图2.2.5所示。提示信息登录登录信息用户提示信息注册用户信息表用户注册信息图2.2.5 用户注册登录数据流图2) 查看、搜索图书信息数据流图如图2.2.6所示。用户图书搜索查看查看搜索图书信息显示信息用户图书详细信息表图2.2.6 用户查看搜索图书信息数据流图3) 用户购买图书数据流图如图2.2.7所示。用户放入购物车购买信息订单信息表图2.2.7 购物车数据流图4) 订单结算数据流图如图2.2.8所示。显示信息订单信息订单详细信
9、息用户查看购物车用户购物信息表结算订单订单结算信息表图2.2.8 订单结算数据流图3. 管理员部分分解后数据流图1) 管理员登录与修改密码数据流图如图2.2.9所示。修改密码信息管理员修改密码登录登录信息管理员提示信息提示信息管理员信息表图2.2.9 管理员登录与修改密码数据流图2) 图书类别管理数据流图如图2.2.10示。管理员图书类别信息修改/删除图书类别图书类别信息表图2.2.10 图书类别管理数据流图3) 图书信息管理数据流图如图2.2.11示。管理员图书信息添加删除修改图书信息图书信息表图2.2.11 图书信息管理数据流图4) 订单信息管理数据流图如图2.2.121所示。管理员订单信
10、息购物信息管理订单信息表图2.2.12 购物信息管理数据流图5) 公告管理数据流图如图2.2.13所示。管理员公告信息公告管理公告信息表图2.2.13 公告管理数据流图2.3 数据字典2.3.1 数据项定义数据项编号:B02-01数据项名称:图书编号简 述:图书入库时进行登记图书分类表类型及宽度:字符型,10位取 值 范 围:“0000000001”“9999999999”2.3.2 数据结构定义表2.3.1 客户订单数据结构DS02-01:客户订单DS02-02:订单标志DS02-03:客户情况DS02-04:订单情况I1:订单ID客户ID图书ID12;日期客户名称图书名称客户姓名图书ISB
11、N订购地址图书单价联系方式图书数量商品总价付款方式2.3.3 数据流定义数据流编号:D03-05数据流名称:客户订单简 述:客户填写订单数据流来源:客户数据流去向:订单处理模块数据流组成:DS013.系统详细设计3.1 程序算法详细设计3.1.1数据库连接Bean编写package bookshop.util; /将该类保存到package bookshop.util 包中 * 数据库连接专用包 * Copyright: wxy Copyright (c) 2010 * Company:Ling Du book shop online import java.sql.*; /导入提供基本数据库
12、编程服务包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() tryClass.forName(com.microsoft.jdbc.microsoftac
13、cessDriver).newInstance();/加载microsoftaccess 2003数据库驱动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.ge
14、tMessage();/检测数据库连接是否成功 return false; return true; public static void main(String args) try DataBase db = new DataBase(); db.connect(); catch(Exception e) e.printStackTrace();3.1.2字符处理Bean编写package bookshop.util; * 负责字符串处理 import java.lang.*;import java.util.*;public class dataFormat public dataForm
15、at() * 把字符串转换成适合于网页显示文本 * param s * return public static String toHtml(String s) if (s=null) return s; s=strReplace(s,&,&); s=strReplace(s,>); s=strReplace(s,"); s=parseReturn(s,n ); return s; * 把字符串sBody中sFrom用sTo替换 * param sBody * param sFrom * param sTo * return
16、 public static String strReplace(String sBody, String sFrom, String sTo) int i,j,k,l; if (sBody=null | sBody.equals() return ; i = 0; j = sFrom.length(); k = sTo.length(); StringBuffer sss = new StringBuffer(sBody.length(); boolean bFirst=true; l = i; while (sBody.indexOf(sFrom,i)!=-1) i = sBody.ind
17、exOf(sFrom,i); sss.append(sBody.substring(l,i); sss.append(sTo); i += j; l = i; sss.append(sBody.substring(l); return sss.toString(); * 把字符串中rn转换成n * param String sBody : 要进行替换操作字符串 * param String sEndwith : 要替换成为字符串 public static String parseReturn(String sBody, String sEndwith) StringTokenizer t =
18、 new StringTokenizer(sBody, rn); StringBuffer sss = new StringBuffer(sBody.length(); boolean bFirst=true; if (sEndwith.trim().equals() sEndwith=n; while (t.hasMoreTokens() String s=t.nextToken(); s=s.trim(); while (s.startsWith() s=s.substring(2); if (!s.equals() if (bFirst) bFirst=false; else sss.a
19、ppend(sEndwith); sss.append(s); return sss.toString(); * 将字符串格式化成 HTML 代码输出 * 只转换特殊字符,适合于 HTML 中表单区域 * param str 要格式化字符串 * return 格式化后字符串 public static String toHtmlInput(String str) if (str = null) return null; String html = new String(str); html = strReplace(html, &, &); html = strReplace(html
20、, , >); return html; * 将普通字符串格式化成数据库认可字符串格式 * param str 要格式化字符串 * return 合法数据库字符串 public static String toSql(String str) String sql = new String(str); return strReplace(sql, , );3.1.3实现用户实体Bean1)private Long id;private String userName;private String userPassword; private String Names; private Str
21、ing Sex; private String Address; private String Phone; private String Post; private String Email; private String RegTime; private String RegIpAddress;2)构造函数里对以上私有成员进行初始化: Public user() Id=0; UserName=”; Password=”; Names=”; Sex=”; Address=”; Phone=”; Post=”; Email=”; RegTime=”; RegIpAddress=”;其中sete
22、r与geter方法用来设置与获取以上各属性值。在jsp页面中通过 引入。3.1.4实现图书实体Beanpackage bookshop.book; * 图书类 public class book private long Id;/ID序列号 private String BookName;/书名 private int BookClass;/图书类别 private String classname ; /图书类别名 private String Author;/作者 private String Publish;/出版社 private String BookNo ;/书号 private
23、String Content ;/内容介绍 private float Prince ;/书价 private int Amount ;/总数量 private int Leav_number ;/剩余数量 private String RegTime ;/登记时间 private String picture ;/图书样图文件名称 * 图书初始化 public book() Id = 0; BookName = ; BookClass = 0; classname = ; Author = ; Publish = ; BookNo = ; Content = ; Prince = 0; Am
24、ount = 0; Leav_number = 0; RegTime = ; public void setId(long newId) this.Id = newId; public long getId()其中seter与geter方法用来设置与获取以上各属性值。在jsp页面中通过 引入。3.1.5 实现图书分类实体Beanpackage bookshop.book; * 图书分类类public class bookclass private int Id;/ID序列号 private String ClassName;/图书类别 public bookclass() Id = 0; Cl
25、assName = ; public bookclass(int newId, String newname) Id = newId; ClassName = newname;3.1.6实现订单实体Beanpackage bookshop.book; * 订单类 public class order private long Id;/ID序列号 private String orderId; /订单编号 private long UserId;/用户序列号 private String SubmitTime;/提交订单时间 private String ConsignmentTime; /交货
26、时间 private float TotalPrice;/总金额 private String content; /用户备注 private String IPAddress;/下单时IP private boolean IsPayoff;/用户是否已付款 private boolean IsSales;/是否已发货 public order() /在构造方法里初始化变量 Id = 0; orderId = ; UserId = 0; SubmitTime = ; ConsignmentTime = ; TotalPrice = 0; content = ; IPAddress = ; IsP
27、ayoff = false; IsSales = false; public long getId() return Id;其中seter与geter方法用来设置与获取以上各属性值。在jsp页面中通过 引入。3.1.7 实现订单列表Beanpackage bookshop.book; * Title: public class allorder private long Id;/ID序列号 private long orderId;/订单号表序列号 private long BookNo;/图书表序列号 private int Amount;/订货数量 public allorder() Id
28、 = 0; orderId = 0; BookNo = 0; Amount = 0; public long getId() return Id;其中seter与geter方法用来设置与获取以上各属性值。在jsp页面中通过 引入。3.1.8 实现购物车实体Beanpackage bookshop.book; * Title: public class shopcar private long bookId;/图书ID编号 private int quanlity;/选购数量 public shopcar() bookId = 0; quanlity = 0; public long getBo
29、okId() return bookId;3.1.9管理用户登录Bean编写LoginExecute():booleangetIsadmin():booleangetSql():StringLogin():voidIsadmin:booleanPasswd:StringuserId:longuserName:String 图3.1.1从图3.1.1中可以看出Login具有属性与方法,其中login() :void构造函数,getismin为取得属性isadmin值方法,即判断登陆用户是否是管理员。其它是设置与获取属性方法。其中有两个重要方法如下:1) getSql()方法 * 获得查询用户信息
30、语句 * return public String getSql() if (isadmin) sqlStr = select * from BookAdmin where adminuser = + dataFormat.toSql(username) + and adminpass = + dataFormat.toSql(passwd) + ; else sqlStr = select * from shop_user where username = + username + and password = + passwd + ; return sqlStr; 2)Execute()方
31、法 * 执行查询 * return * throws java.lang.Exception public boolean excute() throws Exception boolean flag = false; DataBase db = new DataBase(); db.connect(); /获取一个数据库连接 Statement stmt = db.conn.createStatement (); rs = stmt.executeQuery(getSql(); /rs 里返回查询结果集 if (rs.next() if (!isadmin) userid = rs.getL
32、ong(id); flag = true; rs.close(); return flag;3.1.10管理图书Bean编写Op_booksqlStr:Stringabooks:booksqlflag:booleanBooklist:VectorPage:intPagecount:intPagesize:intRecordcount:longRequest:HttpservletRequestBook_search():booleanDelete():booleanGetonebook():booleanGetsql():StringGetsqlflag():booleanInsert():b
33、ooleanOp_book():voidTo_string():StringUpdate():boolean图3.1.2管理图书op_book类类图1)getRequest()方法public boolean getRequest(javax.servlet.http.HttpServletRequest newrequest) boolean flag = false; try request = newrequest; String ID = request.getParameter(id); long bookid = 0; try bookid = Long.parseLong(ID)
34、; catch (Exception e) abooks.setId(bookid); String bookname = request.getParameter(bookname); if (bookname=null | bookname.equals() bookname = ; sqlflag = false; abooks.setBookName(to_String(bookname); String author = request.getParameter(author); if (author=null | author.equals() author = ; sqlflag
35、 = false; abooks.setAuthor(to_String(author); String publish = request.getParameter(publish); if (publish=null) publish = ; abooks.setPublish(to_String(publish); String bookclass = request.getParameter(bookclass); int bc = Integer.parseInt(bookclass); abooks.setBookClass(bc); String bookno = request.getParameter(bookno); if (bookno = null) bookno = ; abooks.setBookNo(to_String(bookno); String picture = request.getParameter(picture); if (picture = null) picture = images/01.gif; abooks.setPicture(to_String(picture); float price; try price =new Float(request.get
限制150内