J2EE课程设计
题目:网书店设计实现
目录
摘 3
第章 需求分析 3
11会员户需求 3
12理员户需求 3
13匿名户需求 3
14 总体功需求 3
第二章 网站功概述 3
21 功概述 3
22 网站功流程图 3
第三章 系统总体设计 3
31前台总体设计 3
32理员系统设计 3
33数库设计 3
第四章 详细设计 3
41 页面设计 3
42 业务逻辑设计 3
第五章 软件测试 3
51 测试工具 3
52 测试结果 3
第六章 设计总结 3
第七章 参考文献 3
第八章 源代码 3
摘
摘:着互联网络发展网书店越越关注通网书店足出户选购需图书效缩短图书流通环节省时省力该系统前台网页台理维护系统两部分构成支持整网站运作功基础帮助权限户实现登录验证身份浏览图书信息维护图书信息加入购物车购买具占系统资源少信息量站点维护方便便维护数等优点文介绍网书店系统开发模式环境具体阐述软件功规划总体分析设计分模块系统详细设计软件测试程
关键字:jsp数库网书店购物车
第章 需求分析
需求分析软件设计重环节阶段系统理系统应情况作全面调查确定系统目标确定户需求网书店系统实现网选书购书产生订单等功系统典型网商城般需实现商品信息动态展示购物车理客户信息注册登录理订单处理等模块户系统需求方面进行分析
11会员户需求
会员户网购物重方便快捷系统户够量产品信息中迅速搜索想解产品信息户中存熟悉网购物流程系统操作流程应该简单易
首先户书店中查询种商品介绍实物图片价格等基信息便户确定满意商品选商品户选商品放入购物车
网书店系统中会员户系统需求:
1.会员登陆身份验证
A.会员户实现登录
B.身份验证
C.修改资料
2.线选购商品
A.浏览类书籍
B.图书查询
C.户选购图书放入购物车理购物车
D.户查提交订单
会员户
登录验证
图书查询
购物车理
订单理
图11 会员户例图
12理员户需求
系统理员系统中扮演着非常重角色理员进行商品理定单理户理等需求系统面量信息应该做条理清楚理员够轻松找需理类实现需求理中心应该做功齐全模块划分明确
网书店系统前台模块理员户系统需求:
A.书籍信息理
B.交易信息理
C.会员理
理员户
图书理
会员理
订单理
图12 理员户例图
13匿名户需求
匿名户需登陆进行图书浏览具图书加入购物车理购物车功更增加删图书信息
匿名户
浏览图书
加入购物车
图13 匿名户例图
14 总体功需求
1 图书查询需求
客户进入网书店时应该页面中分类显示新书目信息供客户选择需图书时应该提供图书名称者作者住处快速查询需书目信息功
2 购物车理需求
客户选择购买某图书产品时应该够应图书信息例:价格数量记录购物车中允许客户返回书目查询页面选择商品添加购物车中购物订单生成应该够动清生成订单购物车中信息
3 订单处理需求
应客户购买图书商品信息需求确定购图书商品价格数量等信息提示户选择应订单加入购物车
4 理员客户分类功
够实现理员户享功特分类处理
第二章 网站功概述
21 功概述
该系统分模块:户登录网购物理系统模块功:
()户登录
实现网书店客户信息身份验证户登录保证户网站安全性便网站理户登录进行购物匿名户进行图书浏览户权限
(二)网购物
1书籍展示
户通搜索方式查书籍信息搜索方式:图书类书名作者出版社书显示书名作者定价等果想解书详细信息点击书名详细信息包括图书封面容简介等
2购物车
户浏览书籍时放入购物车钮书籍放入购物车中便购买户根需进行查修改清空购物车操作
(三)理系统
理系统系统理员整网站台数库进行维护网站重门进入栏目时系统会提示输入系统理员户名密码包括户理书籍理订单理书籍理包括图书库存理订单理图书销售情况理
1图书库存理
理员添加新书添加书籍分类修改书籍库存信息删书籍
2图书销售情况理
理员根日期书号种两条件作查询条件解图书销售情况
3订单理
理员根日期查询删日期中户订单信息
22 网站功流程图
网站功流程图示
成功
失败
匿名户
会员户
身份验证
户登录
网书店
查书籍
图书展示
放 入 购 物 车
图书搜索
验 证
理员
户理
图书理
订单理
第三章 系统总体设计
31前台总体设计
网购物系统前台
系统首页
商品列表
购物车
图31 网书店前台功模块图
根功求网书店系统前台划分功模块:
1 户登录功:登录网站功
2 购物车:存放客户购物程中选出货物
3 商品列表:解商城种分类商品
32理员系统设计
网购物系统台
户理
商品理
订单理
图32 网书店台功模块图
根功求网图书书店系统台划分功模块:
1户理:网站户进行审核理
2商品理:发布新商品发布商品进行理
3订单理:户购物商品理员需台审核发货
33数库设计
数库设计系统开发中非常重关键环节果设计系统维护变更时甚系统开发程中引起较严重问题量工作会重新运行
面具体实现数库设计容web项目里创建目录存放数库表该网书店项目名称bookShopbookshop目录创建名字dataBase目录dataBase目录创建MS Access数库数库名称BookDBmdbBookDBmdb里创建三数库表名字book记录书籍详细信息orderList记录书籍订单列表信息订单信息orderDeatil永固记录书籍订单详细信息订单书籍信息中数库表bookorderListorderDetil详细信息表示
字段名称
字段类型
描述
字段含义
ID
varchar(50)
空
键
bookID
varchar(100)
空
书籍ID号唯性
title
varchar(50)
空
书名
name
int(11)
空
作者
time
date
出版时间
info
varchar(1000)
空
书籍描述
pie
Varchar(100)
空
单位
price
varchar(100)
空
价格
saleAmount
varchar(50)
空
销售数量
表31 数库表book详细信息
字段名称
字段类型
描述
字段含义
ID
varchar(50)
空
键
orderID
varchar(100)
空
订单号
status
varchar(60)
空
订单状态
name
int(11)
空
顾客姓名
time
date
订单时间
info
varchar(100)
空
备注
allAmount
Varchar(100)
空
定书籍总数量
allMoney
varchar(100)
空
定书籍总金额
phone
Varchar(50)
空
联系电话
address
Varchar(100)
空
联系址
code
varchar(30)
空
邮政编码
表32 数库表orderList详细信息
字段名称
字段类型
描述
字段含义
ID
varchar(50)
空
键
orderID
varchar(100)
空
订单号orderList表关联
bookID
varchar(60)
空
ID号book表关联
price
varchar(100)
空
价格
amount
Varchar(100)
空
数量
info
varchar(100)
空
备注
money
varchar(100)
空
金额
表33 数库orderDetail详细信息
字段
类型
Key
Null
默认
字段含义
Id
varchar(50)
PRI
NULL
理编号
User
varchar(50)
NULL
户名
password
varchar(50)
NULL
密码
表34 理员表admin定义
便面程序开发测试先数库表book中添加条记录记录表示
bookID
title
name
time
pie
price
saleAmount
IS00000001
JAVA
Zhangsan
2007121
2050
0
IS00000002
C#
Lisi
2006101
1800
0
IS00000003
C++
Wangwu
200681
套
12030
0
IS00000004
Delphi
Yaoliu
200721
套
8090
0
IS00000005
net
Sunqi
200551
4000
0
表35 数库表book中添加记录
第四章 详细设计
数库设计完毕面进行网书店整系统详细设计详细设计需求分析前提系统实现功环节进行细化详细设计中需考虑全面更考虑细节包括页面程序流程需技术等面通页面设计javaBean业务逻辑设计程序流程设计等方面网书店进行详细设计分析面系统开发代码编写做充分准备工作
41 页面设计
页面系统户进行信息交互佳效途径户展示输出信息获取户端输入信息通页面实现网书店功实现展示书籍列表信息显示书籍具体信息选择书籍放入购物车订单购买书籍等户先浏览书籍列表信息次某书感兴趣查该书籍详细信息介绍然放入购物车继续选择图书期间果觉购物车中某种书籍想购买该书购物车中删完成选择书籍确定购买时需系统订单户填写基联系信息提交完成购物程该购物程图展示
图41 购书程图
图出需样页面显示信息收集信息需页面表示
页面名称
描述
booklistjsp
显示书籍列表信息页面通单击书籍查书籍详细信息
bookDetailjsp
显示书籍详细信息页面返回bookListjsp页面书籍放入购物车中
bookCarjsp
显示购物车信息页面购物车中删已选择书籍返回bookListjsp页面继续选择书籍完成选择书籍订单页面
addBookjsp
选中书籍放入购物车
orderjsp
户输入订单信息页面填写完整户信息进行步确认购买页面
buyjsp
确认购买书籍页面显示购买书籍订单信息户确认
successjsp
购买书籍成功页面
errorjsp
系统出错信息显示页面
commonjsp
链接数库操作类通页面
表41 需页面描述信息
表中列出页面然页面已满足求增加页面整站首页工具条页面网站页脚信息页面表列出页面关联关系访问信息
图42 页面间访问关系
42 业务逻辑设计
图购书程图中根页面需请求业务逻辑处理需业务逻辑处理
图43 页面间业务逻辑
图中出页面需业务逻辑处理需业务逻辑处理类表示
类名称
描述
BookDBjava
数库进行操作方法类链接数库数库表中读取数数库表写数等
BookDetailjava
表示书籍具体信息实体类
ShopCarjava
购物车列表类
ShopCarItemjava
购物车列表详细条目信息类
Orderjava
订单信息实体类
表42 业务逻辑处理类描述信息
浏览书籍列表信息时先调BookDBjava类链接数库数库中读取书籍信息然页面显示信息查书籍具体信息时需调BookDetailjava类该书放入购物车时候需调ShopCarjava类订单确认购买书籍时候需调BookDBjava类链接数库数库中写订单信息综述知道jsp页面调业务逻辑处理类间关联关系间访问关系图示
图44 JSP页面调业务逻辑处理类关系
第五章 软件测试
51 测试工具
测试工具采myeclipse + mysql + tomcat反复测试检验开发结果重启tomcat服务器开浏览器址输入httplocalhost8080bookshopmainhtml会进入登陆界面bookListjsp会进入书籍列表界面bookCar会进入显示购物车信息界面buyjsp会进入订单信息
52 测试结果
测试结果图界面示
图51 登录界面
图52 购物车清单界面
图53 图书列表界面
图54 订单信息界面
第六章 设计总结
文简介绍网书店购物系统功体系结构重点讨系统数准备数库逻辑结构分析jsp台数库链接等关键技术技术实现满足系统需优化系统性
设计报告介绍网书店web系统设计开发程先需求分析软件功概述然总体设计详细设计软件测试直够真正运行起系统采三层BS软件结构中jsp页面负责信息展示信息输入jsp页面做实际性业务逻辑处理业务逻辑处理交JavaBean类完成Jsp结合应JavaBeanJavaBean里通JDBC方式访问数库
第七章 参考文献
[1] 万峰科技编著.JSP网站开发四酷全书[M].电子工业出版社2006
[2] 耿祥义编著.JSP基础编程[M].清华学出版社2004
[3] 李伟红 SQL Server2005数库应 中国水利水电出版社2007
[4] 龙怀冰 SQL Server 2005实开发教程 民邮电出版社2006
[5] 廖疆星等著.中文Dreamweaver网页设计教程[M].冶金工业出版社2003
[6] 四维科技编.JSP网络编程实例[M].民邮电出版社2005
[7] 李存斌 SQL Server 2005实教程 中国水利水电出版社2006101
[8] 刘京华 Java Web整合开发王者清华学出版社2011
第八章 源代码
1BookDBjava
package bookshop
import javasql*
import javautil*
public class BookDB {
private ArrayList alBooks
private String dbUrljdbcodbcBookShopDB
private String orderId
public BookDB () throws Exception{
ClassforName(sunjdbcodbcJdbcOdbcDriver)
}
public Connection getConnection()throws Exception{
return javasqlDriverManagergetConnection(dbUrl)
}
public void closeConnection(Connection con){
try{
if(connull) conclose()
}catch(Exception e){
eprintStackTrace()
}
}
public void closePrepStmt(PreparedStatement prepStmt){
try{
if(prepStmtnull) prepStmtclose()
}catch(Exception e){
eprintStackTrace()
}
}
public void closeResultSet(ResultSet rs){
try{
if(rsnull) rsclose()
}catch(Exception e){
eprintStackTrace()
}
}
public int getNumberOfBooks() throws Exception {
Connection connull
PreparedStatement prepStmtnull
ResultSet rsnull
alBooks new ArrayList()
try {
congetConnection()
String strSql select * + from book
prepStmt conprepareStatement(strSql)
rs prepStmtexecuteQuery()
while (rsnext()) {
BookDetail bd new BookDetail(rsgetString(bookID) rsgetString(title)
rsgetString(name)rsgetDate(time) rsgetString(info)
rsgetString(pie)rsgetDouble(price)rsgetInt(saleAmount))
alBooksadd(bd)
}
}finally{
closeResultSet(rs)
closePrepStmt(prepStmt)
closeConnection(con)
}
return alBookssize()
}
public Collection getBookList()throws Exception{
Connection connull
PreparedStatement prepStmtnull
ResultSet rs null
alBooks new ArrayList()
try {
congetConnection()
String strSql select * + from book order by bookID
prepStmt conprepareStatement(strSql)
rs prepStmtexecuteQuery()
while (rsnext()) {
BookDetail bd new BookDetail(rsgetString(bookID) rsgetString(title)
rsgetString(name)rsgetDate(time) rsgetString(info)
rsgetString(pie)rsgetDouble(price)rsgetInt(saleAmount))
alBooksadd(bd)
}
}finally{
closeResultSet(rs)
closePrepStmt(prepStmt)
closeConnection(con)
}
Collectionssort(alBooks)
return alBooks
}
public BookDetail getBookDetail(String bookId) throws Exception {
Connection connull
PreparedStatement prepStmtnull
ResultSet rs null
try {
congetConnection()
Systemoutprintln(getConnection)
String strSql select * from book where bookID
prepStmt conprepareStatement(strSql)
prepStmtsetString(1 bookId)
rs prepStmtexecuteQuery()
if (rsnext()) {
BookDetail bd new BookDetail(rsgetString(bookID) rsgetString(title)
rsgetString(name)rsgetDate(time) rsgetString(info)
rsgetString(pie)rsgetDouble(price)rsgetInt(saleAmount))
prepStmtclose()
return bd
}
else {
return null
}
}finally{
closeResultSet(rs)
closePrepStmt(prepStmt)
closeConnection(con)
}
}
public void buyBooks(ShopCar car)throws Exception {
Connection connull
Collection items cargetItems()
Iterator i itemsiterator()
try {
congetConnection()
consetAutoCommit(false)
while (ihasNext()) {
ShopCarItem sci (ShopCarItem)inext()
BookDetail bd (BookDetail)scigetItem()
String bookIdbdgetBookId()
int quantity scigetQuantity()
buyBook(bookId quantitycon)
orderDetail(bd quantitycon)
}
concommit()
consetAutoCommit(true)
} catch (Exception ex) {
conrollback()
throw ex
}finally{
closeConnection(con)
}
}
public void buyBook(String bookId int quantityConnection con) throws Exception {
PreparedStatement prepStmtnull
ResultSet rsnull
try{
String strSql select * + from book where bookID
prepStmt conprepareStatement(strSql)
prepStmtsetString(1 bookId)
rs prepStmtexecuteQuery()
if (rsnext()) {
prepStmtclose()
strSql update book set saleamount saleamount + where bookID
prepStmt conprepareStatement(strSql)
prepStmtsetInt(1 quantity)
prepStmtsetString(2 bookId)
prepStmtexecuteUpdate()
prepStmtclose()
}
}finally{
closeResultSet(rs)
closePrepStmt(prepStmt)
}
}
public void orderDetail(BookDetail bd int quantityConnection con) throws Exception {
PreparedStatement prepStmtnull
try{
String strSql insert into orderDetail(orderIDbookIdpriceamountmoneys) +
values()
prepStmt conprepareStatement(strSql)
Systemoutprintln(orderId)
prepStmtsetString(1orderId)
prepStmtsetString(2 bdgetBookId())
prepStmtsetDouble(3 bdgetPrice())
prepStmtsetInt(4 quantity)
prepStmtsetDouble(5 bdgetPrice()*quantity)
prepStmtexecuteUpdate()
prepStmtclose()
}finally{
closePrepStmt(prepStmt)
}
}
public void order(Order order) throws Exception{
Connection connull
PreparedStatement prepStmtnull
try {
congetConnection()
String strSql insert into orderList(orderIDstatusallAmountallMoneynamephoneaddresscodeinfo) +
values()
prepStmt conprepareStatement(strSql)
orderIdgetNowTime()
ordersetOrderID(orderId)
prepStmtsetString(1 orderId)
prepStmtsetString(2 效)
prepStmtsetInt(3 ordergetAllAmount())
prepStmtsetDouble(4 ordergetAllMoney())
prepStmtsetString(5 ordergetName())
prepStmtsetString(6 ordergetPhone())
prepStmtsetString(7 ordergetAddress())
prepStmtsetString(8 ordergetCode())
prepStmtsetString(9 ordergetInfo())
prepStmtexecuteUpdate()
}finally{
closePrepStmt(prepStmt)
closeConnection(con)
}
}
public static String getNowTime() {
javautilDate ctime new javautilDate()
String rTime
javatextSimpleDateFormat cf new javatextSimpleDateFormat(
yyyyMMddHHmmss)
rTime cfformat(ctime)
return rTime
}
}
2BookDetailjava
package bookshop
import javautilDate
public class BookDetail implements Comparable {
private String bookId
private String title
private String name
private Date time
private String info
private String pie
private double price0
private int saleAmount0
public BookDetail(String bookIdString titleString name
Date timeString infoString piedouble priceint saleAmount){
thisbookIdbookId
thistitletitle
thisnamename
thistimetime
thisinfoinfo
thispiepie
thispriceprice
thissaleAmountsaleAmount
}
public String getBookId() {
return bookId
}
public String getInfo() {
return info
}
public String getName() {
return name
}
public String getPie() {
return pie
}
public double getPrice() {
return price
}
public int getSaleAmount() {
return saleAmount
}
public Date getTime() {
return time
}
public String getTitle() {
return title
}
public void setBookId(String string) {
bookId string
}
public void setInfo(String string) {
info string
}
public void setName(String string) {
name string
}
public void setPie(String string) {
pie string
}
public void setPrice(double d) {
price d
}
public void setSaleAmount(int d) {
saleAmount d
}
public void setTime(Date date) {
time date
}
public void setTitle(String string) {
title string
}
public int compareTo(Object o) {
BookDetail bd (BookDetail)o
int lastCmp titlecompareTo(bdtitle)
return (lastCmp)
}
}
3 Orderjava
package bookshop
import javaioSerializable
import javautilDate
public class Order implements Serializable{
private String orderID
private String status
private Date time
private int allAmount0
private double allMoney0
private String name
private String phone
private String code
private String info
private String Address
public Order (){
}
public Order (String orderIDString status Date time int allAmount
double allMoneyString nameString phoneString codeString info){
thisorderIDorderID
thisstatusstatus
thistimetime
thisallAmountallAmount
thisallMoneyallMoney
thisnamename
thisphonephone
thiscodecode
thisinfoinfo
}
public int getAllAmount() {
return allAmount
}
public void setAllAmount(int allAmount) {
thisallAmount allAmount
}
public double getAllMoney() {
return allMoney
}
public void setAllMoney(double allMoney) {
thisallMoney allMoney
}
public String getCode() {
return code
}
public void setCode(String code) {
thiscode code
}
public String getInfo() {
return info
}
public void setInfo(String info) {
thisinfo info
}
public String getName() {
return name
}
public void setName(String name) {
thisname name
}
public String getOrderID() {
return orderID
}
public void setOrderID(String orderID) {
thisorderID orderID
}
public String getPhone() {
return phone
}
public void setPhone(String phone) {
thisphone phone
}
public String getStatus() {
return status
}
public void setStatus(String status) {
thisstatus status
}
public Date getTime() {
return time
}
public void setTime(Date time) {
thistime time
}
public String getAddress() {
return Address
}
public void setAddress(String address) {
Address address
}
}
4ShopCarjava
package bookshop
import javautil*
public class ShopCar {
HashMap items null
int numberOfItems 0
public ShopCar() {
items new HashMap()
}
public synchronized void add(String bookId BookDetail book) {
if(itemscontainsKey(bookId)) {
ShopCarItem scitem (ShopCarItem) itemsget(bookId)
scitemincrementQuantity()
} else {
ShopCarItem newItem new ShopCarItem(book)
itemsput(bookId newItem)
}
numberOfItems++
}
public synchronized void remove(String bookId) {
if(itemscontainsKey(bookId)) {
ShopCarItem scitem (ShopCarItem) itemsget(bookId)
scitemdecrementQuantity()
if(scitemgetQuantity() < 0)
itemsremove(bookId)
numberOfItems
}
}
public synchronized Collection getItems() {
return itemsvalues()
}
protected void finalize() throws Throwable {
itemsclear()
}
public synchronized int getNumberOfItems() {
return numberOfItems
}
public synchronized double getTotal() {
double amount 00
for(Iterator i getItems()iterator() ihasNext() ) {
ShopCarItem item (ShopCarItem) inext()
BookDetail bookDetails (BookDetail) itemgetItem()
amount + itemgetQuantity() * bookDetailsgetPrice()
}
return roundOff(amount)
}
private double roundOff(double x) {
long val Mathround(x*100)
return val1000
}
public synchronized void clear() {
itemsclear()
numberOfItems 0
}
}
5ShopCarItemjava
package bookshop
public class ShopCarItem {
Object item
int quantity
public ShopCarItem(Object anItem) {
item anItem
quantity 1
}
public void incrementQuantity() {
quantity++
}
public void decrementQuantity() {
quantity
}
public Object getItem() {
return item
}
public int getQuantity() {
return quantity
}
}
6addBookjsp
<@ page contentTypetexthtml charsetGB2312 >
<@ include filecommonjsp >
<@ page importjavautil* >
addBookjsp
<
String bookId requestgetParameter(Add)
String title requestgetParameter(title)
if (bookId null) {
BookDetail book bookDBgetBookDetail(bookId)
caradd(bookId book)>
J2EE课程设计
题目:网书店设计实现
目录
摘 3
第章 需求分析 3
11会员户需求 3
12理员户需求 3
13匿名户需求 3
14 总体功需求 3
第二章 网站功概述 3
21 功概述 3
22 网站功流程图 3
第三章 系统总体设计 3
31前台总体设计 3
32理员系统设计 3
33数库设计 3
第四章 详细设计 3
41 页面设计 3
42 业务逻辑设计 3
第五章 软件测试 3
51 测试工具 3
52 测试结果 3
第六章 设计总结 3
第七章 参考文献 3
第八章 源代码 3
摘
摘:着互联网络发展网书店越越关注通网书店足出户选购需图书效缩短图书流通环节省时省力该系统前台网页台理维护系统两部分构成支持整网站运作功基础帮助权限户实现登录验证身份浏览图书信息维护图书信息加入购物车购买具占系统资源少信息量站点维护方便便维护数等优点文介绍网书店系统开发模式环境具体阐述软件功规划总体分析设计分模块系统详细设计软件测试程
关键字:jsp数库网书店购物车
第章 需求分析
需求分析软件设计重环节阶段系统理系统应情况作全面调查确定系统目标确定户需求网书店系统实现网选书购书产生订单等功系统典型网商城般需实现商品信息动态展示购物车理客户信息注册登录理订单处理等模块户系统需求方面进行分析
11会员户需求
会员户网购物重方便快捷系统户够量产品信息中迅速搜索想解产品信息户中存熟悉网购物流程系统操作流程应该简单易
首先户书店中查询种商品介绍实物图片价格等基信息便户确定满意商品选商品户选商品放入购物车
网书店系统中会员户系统需求:
1.会员登陆身份验证
A.会员户实现登录
B.身份验证
C.修改资料
2.线选购商品
A.浏览类书籍
B.图书查询
C.户选购图书放入购物车理购物车
D.户查提交订单
会员户
登录验证
图书查询
购物车理
订单理
图11 会员户例图
12理员户需求
系统理员系统中扮演着非常重角色理员进行商品理定单理户理等需求系统面量信息应该做条理清楚理员够轻松找需理类实现需求理中心应该做功齐全模块划分明确
网书店系统前台模块理员户系统需求:
A.书籍信息理
B.交易信息理
C.会员理
理员户
图书理
会员理
订单理
图12 理员户例图
13匿名户需求
匿名户需登陆进行图书浏览具图书加入购物车理购物车功更增加删图书信息
匿名户
浏览图书
加入购物车
图13 匿名户例图
14 总体功需求
1 图书查询需求
客户进入网书店时应该页面中分类显示新书目信息供客户选择需图书时应该提供图书名称者作者住处快速查询需书目信息功
2 购物车理需求
客户选择购买某图书产品时应该够应图书信息例:价格数量记录购物车中允许客户返回书目查询页面选择商品添加购物车中购物订单生成应该够动清生成订单购物车中信息
3 订单处理需求
应客户购买图书商品信息需求确定购图书商品价格数量等信息提示户选择应订单加入购物车
4 理员客户分类功
够实现理员户享功特分类处理
第二章 网站功概述
21 功概述
该系统分模块:户登录网购物理系统模块功:
()户登录
实现网书店客户信息身份验证户登录保证户网站安全性便网站理户登录进行购物匿名户进行图书浏览户权限
(二)网购物
1书籍展示
户通搜索方式查书籍信息搜索方式:图书类书名作者出版社书显示书名作者定价等果想解书详细信息点击书名详细信息包括图书封面容简介等
2购物车
户浏览书籍时放入购物车钮书籍放入购物车中便购买户根需进行查修改清空购物车操作
(三)理系统
理系统系统理员整网站台数库进行维护网站重门进入栏目时系统会提示输入系统理员户名密码包括户理书籍理订单理书籍理包括图书库存理订单理图书销售情况理
1图书库存理
理员添加新书添加书籍分类修改书籍库存信息删书籍
2图书销售情况理
理员根日期书号种两条件作查询条件解图书销售情况
3订单理
理员根日期查询删日期中户订单信息
22 网站功流程图
网站功流程图示
成功
失败
匿名户
会员户
身份验证
户登录
网书店
查书籍
图书展示
放 入 购 物 车
图书搜索
验 证
理员
户理
图书理
订单理
第三章 系统总体设计
31前台总体设计
网购物系统前台
系统首页
商品列表
购物车
图31 网书店前台功模块图
根功求网书店系统前台划分功模块:
1 户登录功:登录网站功
2 购物车:存放客户购物程中选出货物
3 商品列表:解商城种分类商品
32理员系统设计
网购物系统台
户理
商品理
订单理
图32 网书店台功模块图
根功求网图书书店系统台划分功模块:
1户理:网站户进行审核理
2商品理:发布新商品发布商品进行理
3订单理:户购物商品理员需台审核发货
33数库设计
数库设计系统开发中非常重关键环节果设计系统维护变更时甚系统开发程中引起较严重问题量工作会重新运行
面具体实现数库设计容web项目里创建目录存放数库表该网书店项目名称bookShopbookshop目录创建名字dataBase目录dataBase目录创建MS Access数库数库名称BookDBmdbBookDBmdb里创建三数库表名字book记录书籍详细信息orderList记录书籍订单列表信息订单信息orderDeatil永固记录书籍订单详细信息订单书籍信息中数库表bookorderListorderDetil详细信息表示
字段名称
字段类型
描述
字段含义
ID
varchar(50)
空
键
bookID
varchar(100)
空
书籍ID号唯性
title
varchar(50)
空
书名
name
int(11)
空
作者
time
date
出版时间
info
varchar(1000)
空
书籍描述
pie
Varchar(100)
空
单位
price
varchar(100)
空
价格
saleAmount
varchar(50)
空
销售数量
表31 数库表book详细信息
字段名称
字段类型
描述
字段含义
ID
varchar(50)
空
键
orderID
varchar(100)
空
订单号
status
varchar(60)
空
订单状态
name
int(11)
空
顾客姓名
time
date
订单时间
info
varchar(100)
空
备注
allAmount
Varchar(100)
空
定书籍总数量
allMoney
varchar(100)
空
定书籍总金额
phone
Varchar(50)
空
联系电话
address
Varchar(100)
空
联系址
code
varchar(30)
空
邮政编码
表32 数库表orderList详细信息
字段名称
字段类型
描述
字段含义
ID
varchar(50)
空
键
orderID
varchar(100)
空
订单号orderList表关联
bookID
varchar(60)
空
ID号book表关联
price
varchar(100)
空
价格
amount
Varchar(100)
空
数量
info
varchar(100)
空
备注
money
varchar(100)
空
金额
表33 数库orderDetail详细信息
字段
类型
Key
Null
默认
字段含义
Id
varchar(50)
PRI
NULL
理编号
User
varchar(50)
NULL
户名
password
varchar(50)
NULL
密码
表34 理员表admin定义
便面程序开发测试先数库表book中添加条记录记录表示
bookID
title
name
time
pie
price
saleAmount
IS00000001
JAVA
Zhangsan
2007121
2050
0
IS00000002
C#
Lisi
2006101
1800
0
IS00000003
C++
Wangwu
200681
套
12030
0
IS00000004
Delphi
Yaoliu
200721
套
8090
0
IS00000005
net
Sunqi
200551
4000
0
表35 数库表book中添加记录
第四章 详细设计
数库设计完毕面进行网书店整系统详细设计详细设计需求分析前提系统实现功环节进行细化详细设计中需考虑全面更考虑细节包括页面程序流程需技术等面通页面设计javaBean业务逻辑设计程序流程设计等方面网书店进行详细设计分析面系统开发代码编写做充分准备工作
41 页面设计
页面系统户进行信息交互佳效途径户展示输出信息获取户端输入信息通页面实现网书店功实现展示书籍列表信息显示书籍具体信息选择书籍放入购物车订单购买书籍等户先浏览书籍列表信息次某书感兴趣查该书籍详细信息介绍然放入购物车继续选择图书期间果觉购物车中某种书籍想购买该书购物车中删完成选择书籍确定购买时需系统订单户填写基联系信息提交完成购物程该购物程图展示
图41 购书程图
图出需样页面显示信息收集信息需页面表示
页面名称
描述
booklistjsp
显示书籍列表信息页面通单击书籍查书籍详细信息
bookDetailjsp
显示书籍详细信息页面返回bookListjsp页面书籍放入购物车中
bookCarjsp
显示购物车信息页面购物车中删已选择书籍返回bookListjsp页面继续选择书籍完成选择书籍订单页面
addBookjsp
选中书籍放入购物车
orderjsp
户输入订单信息页面填写完整户信息进行步确认购买页面
buyjsp
确认购买书籍页面显示购买书籍订单信息户确认
successjsp
购买书籍成功页面
errorjsp
系统出错信息显示页面
commonjsp
链接数库操作类通页面
表41 需页面描述信息
表中列出页面然页面已满足求增加页面整站首页工具条页面网站页脚信息页面表列出页面关联关系访问信息
图42 页面间访问关系
42 业务逻辑设计
图购书程图中根页面需请求业务逻辑处理需业务逻辑处理
图43 页面间业务逻辑
图中出页面需业务逻辑处理需业务逻辑处理类表示
类名称
描述
BookDBjava
数库进行操作方法类链接数库数库表中读取数数库表写数等
BookDetailjava
表示书籍具体信息实体类
ShopCarjava
购物车列表类
ShopCarItemjava
购物车列表详细条目信息类
Orderjava
订单信息实体类
表42 业务逻辑处理类描述信息
浏览书籍列表信息时先调BookDBjava类链接数库数库中读取书籍信息然页面显示信息查书籍具体信息时需调BookDetailjava类该书放入购物车时候需调ShopCarjava类订单确认购买书籍时候需调BookDBjava类链接数库数库中写订单信息综述知道jsp页面调业务逻辑处理类间关联关系间访问关系图示
图44 JSP页面调业务逻辑处理类关系
第五章 软件测试
51 测试工具
测试工具采myeclipse + mysql + tomcat反复测试检验开发结果重启tomcat服务器开浏览器址输入httplocalhost8080bookshopmainhtml会进入登陆界面bookListjsp会进入书籍列表界面bookCar会进入显示购物车信息界面buyjsp会进入订单信息
52 测试结果
测试结果图界面示
图51 登录界面
图52 购物车清单界面
图53 图书列表界面
图54 订单信息界面
第六章 设计总结
文简介绍网书店购物系统功体系结构重点讨系统数准备数库逻辑结构分析jsp台数库链接等关键技术技术实现满足系统需优化系统性
设计报告介绍网书店web系统设计开发程先需求分析软件功概述然总体设计详细设计软件测试直够真正运行起系统采三层BS软件结构中jsp页面负责信息展示信息输入jsp页面做实际性业务逻辑处理业务逻辑处理交JavaBean类完成Jsp结合应JavaBeanJavaBean里通JDBC方式访问数库
第七章 参考文献
[1] 万峰科技编著.JSP网站开发四酷全书[M].电子工业出版社2006
[2] 耿祥义编著.JSP基础编程[M].清华学出版社2004
[3] 李伟红 SQL Server2005数库应 中国水利水电出版社2007
[4] 龙怀冰 SQL Server 2005实开发教程 民邮电出版社2006
[5] 廖疆星等著.中文Dreamweaver网页设计教程[M].冶金工业出版社2003
[6] 四维科技编.JSP网络编程实例[M].民邮电出版社2005
[7] 李存斌 SQL Server 2005实教程 中国水利水电出版社2006101
[8] 刘京华 Java Web整合开发王者清华学出版社2011
第八章 源代码
1BookDBjava
package bookshop
import javasql*
import javautil*
public class BookDB {
private ArrayList alBooks
private String dbUrljdbcodbcBookShopDB
private String orderId
public BookDB () throws Exception{
ClassforName(sunjdbcodbcJdbcOdbcDriver)
}
public Connection getConnection()throws Exception{
return javasqlDriverManagergetConnection(dbUrl)
}
public void closeConnection(Connection con){
try{
if(connull) conclose()
}catch(Exception e){
eprintStackTrace()
}
}
public void closePrepStmt(PreparedStatement prepStmt){
try{
if(prepStmtnull) prepStmtclose()
}catch(Exception e){
eprintStackTrace()
}
}
public void closeResultSet(ResultSet rs){
try{
if(rsnull) rsclose()
}catch(Exception e){
eprintStackTrace()
}
}
public int getNumberOfBooks() throws Exception {
Connection connull
PreparedStatement prepStmtnull
ResultSet rsnull
alBooks new ArrayList()
try {
congetConnection()
String strSql select * + from book
prepStmt conprepareStatement(strSql)
rs prepStmtexecuteQuery()
while (rsnext()) {
BookDetail bd new BookDetail(rsgetString(bookID) rsgetString(title)
rsgetString(name)rsgetDate(time) rsgetString(info)
rsgetString(pie)rsgetDouble(price)rsgetInt(saleAmount))
alBooksadd(bd)
}
}finally{
closeResultSet(rs)
closePrepStmt(prepStmt)
closeConnection(con)
}
return alBookssize()
}
public Collection getBookList()throws Exception{
Connection connull
PreparedStatement prepStmtnull
ResultSet rs null
alBooks new ArrayList()
try {
congetConnection()
String strSql select * + from book order by bookID
prepStmt conprepareStatement(strSql)
rs prepStmtexecuteQuery()
while (rsnext()) {
BookDetail bd new BookDetail(rsgetString(bookID) rsgetString(title)
rsgetString(name)rsgetDate(time) rsgetString(info)
rsgetString(pie)rsgetDouble(price)rsgetInt(saleAmount))
alBooksadd(bd)
}
}finally{
closeResultSet(rs)
closePrepStmt(prepStmt)
closeConnection(con)
}
Collectionssort(alBooks)
return alBooks
}
public BookDetail getBookDetail(String bookId) throws Exception {
Connection connull
PreparedStatement prepStmtnull
ResultSet rs null
try {
congetConnection()
Systemoutprintln(getConnection)
String strSql select * from book where bookID
prepStmt conprepareStatement(strSql)
prepStmtsetString(1 bookId)
rs prepStmtexecuteQuery()
if (rsnext()) {
BookDetail bd new BookDetail(rsgetString(bookID) rsgetString(title)
rsgetString(name)rsgetDate(time) rsgetString(info)
rsgetString(pie)rsgetDouble(price)rsgetInt(saleAmount))
prepStmtclose()
return bd
}
else {
return null
}
}finally{
closeResultSet(rs)
closePrepStmt(prepStmt)
closeConnection(con)
}
}
public void buyBooks(ShopCar car)throws Exception {
Connection connull
Collection items cargetItems()
Iterator i itemsiterator()
try {
congetConnection()
consetAutoCommit(false)
while (ihasNext()) {
ShopCarItem sci (ShopCarItem)inext()
BookDetail bd (BookDetail)scigetItem()
String bookIdbdgetBookId()
int quantity scigetQuantity()
buyBook(bookId quantitycon)
orderDetail(bd quantitycon)
}
concommit()
consetAutoCommit(true)
} catch (Exception ex) {
conrollback()
throw ex
}finally{
closeConnection(con)
}
}
public void buyBook(String bookId int quantityConnection con) throws Exception {
PreparedStatement prepStmtnull
ResultSet rsnull
try{
String strSql select * + from book where bookID
prepStmt conprepareStatement(strSql)
prepStmtsetString(1 bookId)
rs prepStmtexecuteQuery()
if (rsnext()) {
prepStmtclose()
strSql update book set saleamount saleamount + where bookID
prepStmt conprepareStatement(strSql)
prepStmtsetInt(1 quantity)
prepStmtsetString(2 bookId)
prepStmtexecuteUpdate()
prepStmtclose()
}
}finally{
closeResultSet(rs)
closePrepStmt(prepStmt)
}
}
public void orderDetail(BookDetail bd int quantityConnection con) throws Exception {
PreparedStatement prepStmtnull
try{
String strSql insert into orderDetail(orderIDbookIdpriceamountmoneys) +
values()
prepStmt conprepareStatement(strSql)
Systemoutprintln(orderId)
prepStmtsetString(1orderId)
prepStmtsetString(2 bdgetBookId())
prepStmtsetDouble(3 bdgetPrice())
prepStmtsetInt(4 quantity)
prepStmtsetDouble(5 bdgetPrice()*quantity)
prepStmtexecuteUpdate()
prepStmtclose()
}finally{
closePrepStmt(prepStmt)
}
}
public void order(Order order) throws Exception{
Connection connull
PreparedStatement prepStmtnull
try {
congetConnection()
String strSql insert into orderList(orderIDstatusallAmountallMoneynamephoneaddresscodeinfo) +
values()
prepStmt conprepareStatement(strSql)
orderIdgetNowTime()
ordersetOrderID(orderId)
prepStmtsetString(1 orderId)
prepStmtsetString(2 效)
prepStmtsetInt(3 ordergetAllAmount())
prepStmtsetDouble(4 ordergetAllMoney())
prepStmtsetString(5 ordergetName())
prepStmtsetString(6 ordergetPhone())
prepStmtsetString(7 ordergetAddress())
prepStmtsetString(8 ordergetCode())
prepStmtsetString(9 ordergetInfo())
prepStmtexecuteUpdate()
}finally{
closePrepStmt(prepStmt)
closeConnection(con)
}
}
public static String getNowTime() {
javautilDate ctime new javautilDate()
String rTime
javatextSimpleDateFormat cf new javatextSimpleDateFormat(
yyyyMMddHHmmss)
rTime cfformat(ctime)
return rTime
}
}
2BookDetailjava
package bookshop
import javautilDate
public class BookDetail implements Comparable {
private String bookId
private String title
private String name
private Date time
private String info
private String pie
private double price0
private int saleAmount0
public BookDetail(String bookIdString titleString name
Date timeString infoString piedouble priceint saleAmount){
thisbookIdbookId
thistitletitle
thisnamename
thistimetime
thisinfoinfo
thispiepie
thispriceprice
thissaleAmountsaleAmount
}
public String getBookId() {
return bookId
}
public String getInfo() {
return info
}
public String getName() {
return name
}
public String getPie() {
return pie
}
public double getPrice() {
return price
}
public int getSaleAmount() {
return saleAmount
}
public Date getTime() {
return time
}
public String getTitle() {
return title
}
public void setBookId(String string) {
bookId string
}
public void setInfo(String string) {
info string
}
public void setName(String string) {
name string
}
public void setPie(String string) {
pie string
}
public void setPrice(double d) {
price d
}
public void setSaleAmount(int d) {
saleAmount d
}
public void setTime(Date date) {
time date
}
public void setTitle(String string) {
title string
}
public int compareTo(Object o) {
BookDetail bd (BookDetail)o
int lastCmp titlecompareTo(bdtitle)
return (lastCmp)
}
}
3 Orderjava
package bookshop
import javaioSerializable
import javautilDate
public class Order implements Serializable{
private String orderID
private String status
private Date time
private int allAmount0
private double allMoney0
private String name
private String phone
private String code
private String info
private String Address
public Order (){
}
public Order (String orderIDString status Date time int allAmount
double allMoneyString nameString phoneString codeString info){
thisorderIDorderID
thisstatusstatus
thistimetime
thisallAmountallAmount
thisallMoneyallMoney
thisnamename
thisphonephone
thiscodecode
thisinfoinfo
}
public int getAllAmount() {
return allAmount
}
public void setAllAmount(int allAmount) {
thisallAmount allAmount
}
public double getAllMoney() {
return allMoney
}
public void setAllMoney(double allMoney) {
thisallMoney allMoney
}
public String getCode() {
return code
}
public void setCode(String code) {
thiscode code
}
public String getInfo() {
return info
}
public void setInfo(String info) {
thisinfo info
}
public String getName() {
return name
}
public void setName(String name) {
thisname name
}
public String getOrderID() {
return orderID
}
public void setOrderID(String orderID) {
thisorderID orderID
}
public String getPhone() {
return phone
}
public void setPhone(String phone) {
thisphone phone
}
public String getStatus() {
return status
}
public void setStatus(String status) {
thisstatus status
}
public Date getTime() {
return time
}
public void setTime(Date time) {
thistime time
}
public String getAddress() {
return Address
}
public void setAddress(String address) {
Address address
}
}
4ShopCarjava
package bookshop
import javautil*
public class ShopCar {
HashMap items null
int numberOfItems 0
public ShopCar() {
items new HashMap()
}
public synchronized void add(String bookId BookDetail book) {
if(itemscontainsKey(bookId)) {
ShopCarItem scitem (ShopCarItem) itemsget(bookId)
scitemincrementQuantity()
} else {
ShopCarItem newItem new ShopCarItem(book)
itemsput(bookId newItem)
}
numberOfItems++
}
public synchronized void remove(String bookId) {
if(itemscontainsKey(bookId)) {
ShopCarItem scitem (ShopCarItem) itemsget(bookId)
scitemdecrementQuantity()
if(scitemgetQuantity() < 0)
itemsremove(bookId)
numberOfItems
}
}
public synchronized Collection getItems() {
return itemsvalues()
}
protected void finalize() throws Throwable {
itemsclear()
}
public synchronized int getNumberOfItems() {
return numberOfItems
}
public synchronized double getTotal() {
double amount 00
for(Iterator i getItems()iterator() ihasNext() ) {
ShopCarItem item (ShopCarItem) inext()
BookDetail bookDetails (BookDetail) itemgetItem()
amount + itemgetQuantity() * bookDetailsgetPrice()
}
return roundOff(amount)
}
private double roundOff(double x) {
long val Mathround(x*100)
return val1000
}
public synchronized void clear() {
itemsclear()
numberOfItems 0
}
}
5ShopCarItemjava
package bookshop
public class ShopCarItem {
Object item
int quantity
public ShopCarItem(Object anItem) {
item anItem
quantity 1
}
public void incrementQuantity() {
quantity++
}
public void decrementQuantity() {
quantity
}
public Object getItem() {
return item
}
public int getQuantity() {
return quantity
}
}
6addBookjsp
<@ page contentTypetexthtml charsetGB2312 >
<@ include filecommonjsp >
<@ page importjavautil* >
<
String bookId requestgetParameter(Add)
String title requestgetParameter(title)
if (bookId null) {
BookDetail book bookDBgetBookDetail(bookId)
caradd(bookId book)>