免费预览已结束,剩余39页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
零度网上图书销售系统设计与开发零度网上图书销售系统设计与开发1. 引言1.1 项目来源随着时代的发展,信息技术、Internet/Intranet技术、数据库技术的不断发展完善,网络进程的加快,传统的购物方式也越来越不能满足人们快节奏的生活需求,使得企业的IT部门已经认识到Internet的优势,电子商务就是在这样一个背景下产生发展起来的。伴随着电子商务技术的不断成熟,电子商务的功能也越来越强大,注册用户可以在网上搜索购买到自己想要的各种商品,初步让人们体会到了足不出户,便可随意购物的快感。我们的课程设计也就正是一个电子商务系统的开发零度网上图书销售系统。1.2 任务目标对于典型的数据库管理系统,尤其是对像电子商务这样的数据流量特别大的网络管理系统,必须要满足使用方便、操作灵活等设计要求。通过对电子商务网站及网上书店的考察、分析以及实际的市场调查,要求本系统具有以下功能:l 采用人机对话的操作方式,界面设计美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。l 全面展示书店内所有的图书,并可展示最新图书及特价图书。l 为顾客提供一个方便、快捷的图书信息查询功能。采用模糊查询查询数据。l 实现网上购物。l 商品销售排行,以方便顾客了解本商城内的热销商品及帮助企业领导者做出相应的决策。l 查看商城内的公告信息。l 用户随时都可以查看自己的订单。l 对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。l 系统最大限度地实现了易维护性和易操作性。1.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 业务组织从本系统中规划出的实体有:用户信息实体、管理员信息实体、图书实体、图书分类实体、订单实体、订单列表实体。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业务定义一个网上图书销售管理系统应该包含两类角色:购书者(用户)和图书销售系统管理员。 针对不同角色,将系统分为前台和后台两个部分。购书者部分(前台):1. 购书者进行网上注册、登录:必须先注册,注册时必须提供用户名、密码、电子 邮件、安全提示问题、安全答案。2. 查询待售图书和欲购图书信息:所有注册消费均可通过网上图书销售管理系统,查询最新图书信息、畅销图书信息、特价图书信息。 3. 订购图书:消费者对欲购图书订购,可以修改自己的购物车,在订购信息被确认之前可以对订购信息进行修改。系统管理员(后台):1 管理员登录:管理员进入图书销售系统须填写用户名和密码。2 管理员管理供应商信息:包括供应商名称、地址、城市、区域、邮编、联系方式。3 管理员发布图书信息:通过图书销售管理系统发布最新图书、畅销图书、特价图书的信息。4 管理员处理购书者的订单信息:包括客户填写的订单信息,同时对订单进行审核。5 日销售信息管理:选择日期,查看当天的日销售信息。 6 系统公告的发布:发布最新的系统消息,方便大家购书。2.1.3 业务流程进入系统用户注册是否已注册用户用户登录查看所有商品查看商品详细信息查看购物车是否购买添加至购物车修改商品数量删除商品结账清空购物车填写订单完成结账退出系统否是否是 图2.1.8 业务流程图2.2 功能需求2.2.1 功能组成在线书店客户端界面管理端界面在购书界面图书管理模块购物车界面定单信息管理登陆/注册添加图书模块添加图书分类模块订单信息模块客户管理模块登陆模块公告管理模块 图2.2.1 系统结构图2.2.2 功能逻辑1. 顶层数据流图该系统的顶层数据流图如图2.2.2。由于该系统分为用户和管理员两部分,每个部分总的数据流图分别如图2.2.3和图2.2.4所示。图书信息购物信息图书信息购物信息网上图书销售管理系统用户管理员图2.2.2 顶层数据流图 用户网上图书销售管理系统注册登录信息搜索查看信息购物车订单结算用户图书信息订单信息订单信息表用户信息表图书详细信息表图2.2.3 用户部分的数据流图管理员网上图书销售管理系统供应商信息图书类别图书信息订单信息用户信息管理员订单信息表用户信息表图书类别信息表图书详细信息表订单(详细)信息表订单信息用户信息图书信息图书类别供应商信息图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所示。显示信息订单信息订单详细信息用户查看购物车用户购物信息表结算订单订单结算信息表图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所示。管理员订单信息购物信息管理订单信息表图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;日期客户名称图书名称客户姓名图书ISBN订购地址图书单价联系方式图书数量商品总价付款方式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.*; /导入提供基本的数据库编程服务的包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.microsoftaccessDriver).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.getMessage();/检测数据库连接是否成功 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 dataFormat() /* * 把字符串转换成适合于网页显示的文本 * 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 */ 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.indexOf(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 = 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.append(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, , >); 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 String 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=”;.其中的seter和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 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; Amount = 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; ClassName = ; 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; /交货时间 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 = ; IsPayoff = 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 = 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 getBookId() 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()方法 /* * 获得查询用户信息的语句 * 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()方法 /* * 执行查询 * 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.getLong(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():booleanOp_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); 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 = 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.getParameter(price).floatValue(); catch (Exception e) price = 0; sqlflag = false; abooks.setPrince(price); int amount; try amount = new Integer(request.getParameter(amount).intValue(); catch (Exception e) sqlflag = false; amount = 0; abooks.setAmount(amount); String content = request.getParameter(content); if (content = null) content = ; abooks.setContent(to_String(content); if (sqlflag) flag = true; return flag; catch (Exception e) return flag; 2)book_search()方法/* * 完成图书查询,包括分类,分页查询 * param res * return * throws java.lang.Exception */public boolean book_search(HttpServletRequest res) throws Exception DataBase db = new DataBase(); db.connect(); Statement stmt = db.conn.createStatement (); request = res; String PAGE = request.getParameter(page); /页码 String classid = request.getParameter(classid);/分类ID号 String keyword = request.getParameter(keyword);/查询关键词 if (classid=null) classid=; if (keyword=null) keyword = ; keyword = to_String(keyword).toUpperCase(); try page = Integer.parseInt(PAGE); catch (NumberFormatException e) page = 1; /取出记录数 if (!classid.equals() & keyword.equals() ) sqlStr = select count(*) from book where bookclass=+classid + ; else if (!keyword.equals() if (classid.equals() sqlStr = select count(*) from book where upper(bookname) like % + keyword+ % or upper(content) like % + keyword + %; else sqlStr = select count(*) from book where bookclass= + classid + and (upper(bookname) like % +keyword+ % or + upper(content) like % + keyword + %); else sql
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 20002009年我国北京和上海地区Hp抗生素耐药趋势研究
- 大学康养实训室建设方案
- 深圳先行实施方案
- 财税业务推销实施方案
- 2026中国柔性传感器可穿戴设备领域创新趋势与消费洞察报告
- 2026京东服饰3.8女人节创意提报
- 2026年熱門市場分析
- 化学与实验教学
- 《重医王学峰》课件
- 分子发光分析法
- 2026年福建从村党组织书记、村委会主任中考试录用乡镇机关公务员练习试题及答案
- 2026年网格员矛盾纠纷排查化解理论知识试题及答案
- 文化墙改造施工组织设计方案
- 2026年湖北省武汉市中考数学试题卷(答案解析版)
- 【中考真题】云南省2026年初中学业水平考试语文真题试卷(含答案)
- 三升四英语暑假衔接作业完整版 人教PEP版小学三年级升四年级每日一练(可打印)
- 2026年南昌大学第二附属医院医护人员招聘考试参考试题及答案详解
- 2026年国网中高级职称评定考试(国家电网)复习题及答案
- 2026-2030中国塑机辅机行业行情走势及重点企业竞争力分析研究报告
- 机电设备减震降噪施工技术方案
- 2026中国民生银行公司客户经理招聘笔试参考题库及答案解析
评论
0/150
提交评论