电子商城shopping详细设计说明书.docx
《电子商城shopping详细设计说明书.docx》由会员分享,可在线阅读,更多相关《电子商城shopping详细设计说明书.docx(59页珍藏版)》请在冰豆网上搜索。
电子商城shopping详细设计说明书
“梦之队”
文档编号
产品版本
密级
文件状态:
[]正在修改
[√]正式发布
All-T-2011/11/13
Version1.0
内部
项目名称
电子商城shopping
共29页
电子商城shopping
详细设计说明书
文档拟制:
“梦之队”
项目组长:
谭建锋
批准人:
拟制日期:
2012年8月1日
详细设计说明书
1引言
1.1编写目的
编写详细设计说明书的目的是为了使开发人员在完成概要设计说明书的基础上,完成概要设计规定的各项功能的具体实现。
编写详细设计说明书的目的就是为程序员写出实际的程序代码提供依据。
它是软件详细设计阶段所有任务和所有相关人员所需的参考资料。
1.2背景
说明:
a.软件系统的名称:
基于Java和数据库的电子商城系统
b.任务提出者:
实训教师吕老师
c.开发者:
梦之队
d.完成的系统可以在Myeclipse上运行,用户可在此进行各种网上购物操作。
1.3定义
列出本文件中用到专门术语的定义和外文首字母组词的原词组。
详细设计:
在概要设计的基础上,对其功能模块或部件进行实现设计,是编程人员能写出程序代码。
用户接口:
是指一个程序与程序使用者交互的部分。
算法:
详细设计中实现某项功能的数据处理流程及处理方法。
SDK:
SoftwareDevelopmentKit即软件开发工具包。
1.4参考资料
a.【1】《概要设计说明书》
b.【2】《需求分析说明书》
c.【3】《Java与web开发设计》
d.【4】《数据库》
2程序系统的结构
该系统分为七大部分:
会员注册与登录及其资料修改、商品介绍与购买、商品销售排行、购物车、订单、商城公告、查询搜索。
下面使该系统的流程图和功能图。
前台管理模块
后台管理模块
(一)流程图
会员注册与登录及其资料修改
商品
购物车
订单
公告
查询搜索
(二)功能图
本系统采用三层架构设计,它的工作原理如图所示。
3模块1
(会员登录注册及资料修改)设计说明
顾客在进行第一次购物之前要进行会员登记。
一般要求输入真实的姓名、通讯地址、联系电话、Email地址等基本信息。
注册完后,系统会自动生成一个“会员ID”和密码,并在网页上显示出来。
顾客一定要记住自己的ID号和密码,为了防止密码泄漏,顾客可以自己修改密码;
3.1程序描述
本程序描述的是用户申请会员和对会员的资料修改功能,包括:
登录、注册、重置、填写、保存、重填、返回。
3.2功能
为了统一管理,系统规定只有会员才能购买商品,所以要购买商品的新用户必须先进行用户注册。
用户注册的入口位置在网站首页的左侧。
用户点击“注册”即可进入用户注册页面,
publicbooleanaddMember(MemberInfmemberInf){
booleanflag=true;
try{
con=DBConnection.getInit().getConn();
Stringsql="insertinto[userInf](userName,password,Email,userRank,consume,userState,creatTime,modifyime)values(?
?
?
?
?
?
?
?
)";
pst=con.prepareStatement(sql);
pst.setString(1,memberInf.getMemberName());
pst.setString(2,memberInf.getPassword());
pst.setString(3,memberInf.getEmail());
pst.setInt(4,1);
pst.setDouble(5,0);
pst.setString(6,"1");
pst.setDate(7,newjava.sql.Date(System.currentTimeMillis()));
pst.setDate(8,(java.sql.Date)memberInf.getModifyime());
flag=pst.execute();
returnflag;
}catch(Exceptione){
returnflag;
}
finally
{
DBConnection.getInit().closeAll(con,pst,rs);
}
}
网站要求用户名必须唯一,用户可以先看自己的用户名是否被注册。
由于是网络程序,所以注册后在保存用户信息时候,还需要再次对注册用户进行检测。
如果不存在,则保存该用户信息。
否则提示该名用户已经被注册,请重新注册,如图:
代码如下:
如果用户输入的用户名存在,并且冻结字段的值不为1,则判断用户输入的密码是否正确,如果密码也正确,则成功登录,否则提示登录失败。
如图:
代码如下
publicbooleanvalidMember(StringmemberName,StringmemberPassword){
booleanflag=ture;
try{
con=DBConnection.getInit().getConn();
Stringsql="selectcount(*)from[userInf]whereuserName='"+memberName+"'andpassword='"+memberPassword+"'";
Statementst=con.createStatement();
rs=st.executeQuery(sql);
rs.next();
if(rs.getInt
(1)>0){
flag=false;
}
returnflag;
}catch(Exceptione){
returnflag;
}
finally
{
DBConnection.getInit().closeAll(con,pst,rs);
}
}
如果密码不小心泄露了或者是搬家了,为了能够购买到商品并成功送货到门,用户可在会员资料修改页面对密码或地址簿进行修改
会员资料修改页面
publicbooleanmodifyMemberAddr(MemberAddrmemberAddr){
booleanflag=true;
try{
con=DBConnection.getInit().getConn();
Stringsql="update[userAddr]setusername='"+memberAddr.getMembername()+"',address='"+memberAddr.getAddress()+"',province='"+memberAddr.getProvince()+"',city='"+memberAddr.getCity()+"',region='"+memberAddr.getRegion()+"',postcode='"+memberAddr.getPostcode()+"',phone='"+memberAddr.getPhone()+"'whereuserID='"+memberAddr.getMemberID()+"'";
Statementst=con.createStatement();
flag=st.execute(sql);
st.close();
returnflag;
}catch(Exceptione){
e.printStackTrace();
returnflag;
}
finally
{
DBConnection.getInit().closeAll(con,pst,rs);
}
}
3.3输入输出项
输入的数据是用户填写的基本信息。
输出是从硬盘中读取的文件数据等,或错误警告信息、消息框。
3.4尚未解决的问题
在本程序的模块中部分功能还未得到全部完善,因时间关系,有进一步优化的空间。
4模块2
(商品介绍与购买)设计说明
进入网上商店,挑选商品。
顾客可以按产品类别检索商品,也可以输入产品名称等信息,通配检索数据库,找出所关心的商品;查看商品细节说明,了解价格、付款及送货方式、购物说明等信息;
4.1程序描述
本程序描述的是对商品的详细介绍以及购买流程,包括:
查看、分类、购买、收藏、用户评论。
4.2功能
新品上架
在前台首页中,单击“新品上架”超链接可以进入到新品上架页面
上架新品消息保存在商品信息表tb_bookinfo中,以字段newbook标志,当newbook字段的值为1时,代表该图书为上架新品。
上架新品页面关键代码:
<%
publicListshowNewGoods(){
try{
conn=DBConnection.getInit().getConn();
java.util.DatecurrentDate=newjava.util.Date(System.currentTimeMillis());//获取本地时间
currentDate.setDate(currentDate.getDate()-7);//7天内创建的商品为新品
Stringtime=newSimpleDateFormat("yyyy-MM-dd").format(currentDate);
Stringsql="select*fromgoodswherecreateTtime>'"+time+"'";
Statementst=conn.createStatement();
rs=st.executeQuery(sql);
ListgoodsList=newArrayList();
while(rs.next()){
Goodsgoods=newGoods();
goods.setGoodID(rs.getInt("goodID"));
goods.setGoodName(rs.getString("goodName"));
goods.setGoodInfo(rs.getString("goodInfo"));
goods.setMarketPrice(rs.getDouble("marketPrice"));
goods.setShoppingPrice(rs.getDouble("shoppingPrice"));
goods.setDiscount(rs.getDouble("discount"));
goods.setGoodCategory(rs.getInt("goodCategory"));
goods.setGoodAmount(rs.getInt("goodAmount"));
goods.setGoodRank(rs.getInt("goodRank"));
goods.setIsBargain(rs.getString("IsBargain"));
goods.setIsValid(rs.getString("IsValid"));
goods.setGoodImage(rs.getString("goodImage"));
goods.setCreator(rs.getInt("Creator"));
goods.setCreateTtime(rs.getDate("CreateTtime"));
goods.setModifier(rs.getInt("Modifier"));
goods.setModifyTime(rs.getDate("ModifyTime"));
goodsList.add(goods);
}
st.close();
returngoodsList;
}catch(Exceptione){
e.printStackTrace();
returnnull;
}finally{
DBConnection.getInit().closeAll(conn,pst,rs);
}
}
特价商品与新品上架功能实现基本一致,在此不作过多解析
商品的分类
为了方便用户查询所需商品信息,在网站中设置了商品分类显示模块。
在首页面右侧有图
点击一大分类后又有许多小分类,点击小分类即可查看到相应商品信息
4.3输入输出项
输入的数据是用户填写的基本信息。
输出是从硬盘中读取的文件数据等,或错误警告信息、消息框。
4.4尚未解决的问题
在本程序的模块中部分功能还未得到全部完善,因时间关系,有进一步优化的空间。
5模块3
(购物车)设计说明
选中商品后,输入购买数量并点击“选购”按钮,将商品放入购物车;选购结束,检查购物车,核实商品和数量是否正确,如有出入,可以重新调整商品和数量,如无误,则去“收银台”结帐。
5.1程序描述
本程序描述的是用户对商品的购买及退换,包括:
购买、更改数目、结账、清空购物。
5.2功能
在购物车主要包括所选商品的添加,查看购物车,单件商品购买数量的修改,清空购物车4部分。
1.添加到购物车cart_add.jsp
主要采用Vector类型的变量cart来存储购物数据的,被保存在Session中,然后将商品信息保存到cart中,主要代码:
publicvoidaddCart(Goodsgoods,intquantity){//将商品添加到购物车
if(invaliadInStock(goods.getGoodID())>0){//查询数据库,看是否有库存量
if(items==null){//判断是否为null
//第一次进来
items=newArrayList- ();
Itemitem=newItem(goods,quantity);
items.add(item);
}else{
//否则就直接添加进去
Iterator- it=items.iterator();
booleanisFind=false;//是否找到相同的商品
while(it.hasNext()){
Itemitem=it.next();
//判断商品是否已经存在在购物车中,存在的话数量直接相加
if(item.getGoods().getGoodID()==goods.getGoodID()){
isFind=true;
item.setQuantity(quantity+item.getQuantity());
break;
}
}
//没有找到就新建一个商品Item
if(isFind==false){
Itemitem=newItem(goods,quantity);
items.add(item);
}
}
System.out.print("商品添加成功,请查看购物车!
");
}
else{
System.out.print("该商品没有库存,跳转到主页面");
}
}
2.查看购物车
查看购物车页面首先需要判断购物车是否为空,如果为空将页面直接跳转到购物车为空页面cart_see.jsp,否则显示购物车信息。
代码如下:
publicArrayList- getAllItem(Itemitem){//获得购物车商品列表
returnitems;
}
3.单件商品购买数量的修改
代码如下:
publicvoidmotifyCart(Goodsgoods,intquantity){//修改购物车中商品数量
if(invaliadInStock(goods.getGoodID())>quantity){
Iterator- its=items.iterator();
while(its.hasNext()){
Itemitem=its.next();
if(item.getGoods().getGoodID()==goods.getGoodID()){
item.setQuantity(quantity);
break;
}
}
}
}
4.清空购物车
实现的方法很简单,只需要将保存在Session中的购物信息清空即可,清空购物车页面代码为:
publicvoidclearCart(){//清空购物车
items.clear();
}
如图
5.3输入输出项
输入的数据是用户填写的基本信息。
输出是从硬盘中读取的文件数据等,或错误警告信息、消息框。
5.4尚未解决的问题
在本程序的模块中部分功能还未得到全部完善,因时间关系,有进一步优化的空间。
6模块4
(订单)设计说明
收银台提交购物清单、选择付款方式及送货方式。
完成购物过程。
生成订单
6.1程序描述
本程序描述的是用户申请会员和对会员的资料修改功能,包括:
登录、注册、重置、填写、保存、重填、返回。
6.2功能
生成订单时,不但要保存用户订单中所购买的商品信息和订单信息,同时还需要返回一个可供用户随时查询的唯一订单号。
用户查看购物车页面中的“去收银台结帐”超连接即可进入到收银台页面填写订单信息,在该页面中系统会根据用户登录的用户名自动填写用户基本信息,除用户名不可更改外,其他的均可修改,收银台页面的运行结果如图
publicintaddOrder(Orderorder){//添加订单,即结算以后生成订单
intorderID=0;
try{
conn=DBConnection.getInit().getConn();
Stringsql="insertintoorders(userID,reciver,address,province,city,region,postcode,phone,orderTotalMoney,payWay,bill,sendWay,sendTime,orderRemark,orderState,createTime,modifyTime)"+
"values(?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
)";
pstmt=conn.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);//传入参数:
Statement.RETURN_GENERATED_KEYS
//pstmt.setInt(1,order.getOrderID());
pstmt.setInt(1,order.getMemberID());
pstmt.setString(2,order.getReciver());
pstmt.setString(3,order.getAddress());
pstmt.setString(4,order.getProvince());
pstmt.setString(5,order.getCity());
pstmt.setString(6,order.getRegion());
pstmt.setString(7,order.getPostcode());
pstmt.setString(8,order.getPhone());
pstmt.setDouble(9,order.getOrderTotalMoney());
pstmt.setInt(10,order.getPayWay());
pstmt.setInt(11,order.getBill());
pstmt.setInt(12,order.getSendWay());
pstmt.setInt(13,order.getSendTime());
pstmt.setString(14,order.getOrderRemark());
pstmt.setString(15,order.getOrderState());
pstmt.setDate(16,order.getCreatTime());
pstmt.setDate(17,order.getModifyTime());
pstmt.executeUpdate();//执行sql
rs=pstmt.getGeneratedKeys();//获取结果
rs.next();
orderID=rs.getInt
(1);//取得id的值
}catch(ClassNotFoundExceptione1){
e1.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}
finally{
DBConnection.getInit().closeAll(conn,pstmt,rs);
}
returnorderID;
}
}
在收银台页面cart_checkout.jsp中,首先应用判断用户是否已经购物,然后再判断用户是否登录,如果用户没有购物或是没有登录都将给予提示并返回到网站首页。
关键代码为:
生成订单后,若想要退去订单,在order.jsp页面判断此订单为“新订单”后,有一取消按钮,点击即可退去订单。
代码如下:
publicbooleanDeleteOrder(intOrderID){
//TODOAuto-generatedmethodstub
conn=Db.getConn();
booleanflag=true;
try{
pstmt=conn
.prepareStatement("delete