EStore系统详细说明Word文件下载.docx
《EStore系统详细说明Word文件下载.docx》由会员分享,可在线阅读,更多相关《EStore系统详细说明Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
![EStore系统详细说明Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/29/28a5902b-dd43-4582-aa3c-23e28dbbe98c/28a5902b-dd43-4582-aa3c-23e28dbbe98c1.gif)
该《说明》的读者是:
参与系统开发的管理人员和设计人员。
2.2.项目背景
进入21世纪以来,电子商务伴随着IT的成熟,逐渐发展壮大,成为网络经济的核心。
在电子商务的发展过程中,人们逐渐意识到在线购物的无地域界限、安全、方便快捷及其价格优势,在线购物的队伍也随之扩大。
不断增长的强大需求正成为电子商务的发展动力,基础环境的成熟与需求欲望的增长将推动电子商务与商务网站的建设不断发展。
开发E-Store,能够让消费者很快就可以搜寻到想要的书籍;
例如留言板、讨论区、E-MAIL服务,更是为传统书店提供多元化的服务。
3.1.项目系统设计架构及理念
理念:
网上书店商务网站构建初始目标主要是面向广大消费者,由于图书消费属于知识型消费类,人们求知欲望没有阶层与年龄差别,因而,书店网站应在具有自己特色的同时应适合不同人士的需要。
因此,网上书店网站定位于面向广大消费者,并突出完善售前、售中、售后客户服务与安全保障方面的特色。
售前服务提供详细的图书信息、简便快捷的操作过程;
售中服务通过采取安全措施为用户提供网上订购服务安全保障与实时支付;
售后服务对用户订购的图书提供快速物流配送,并对用户所购图书提供质量保证。
架构:
前台功能结构
后台功能结构
4.1.详细功能说明
在前台实现主要有:
1.用户注册
2.用户登陆
3.查看全部图书
4.查看图书详细情况
5.购物车功能
6.图书选购
7.查看用户的订单信息
8.显示结账页面和确认页面
9.购买成功页面。
后台管理部分主要有:
1.商店图书管理:
添加、修改、删除、查看。
2.用户信息管理:
查看、修改、删除。
3.订单信息管理:
查看订单清单、更新订单付款、删除订单。
4.管理员管理:
管理员添加,删除,密码修改,查询。
4、2项目整体操作说明
(1)顾客在进行第一次购物之前要进行注册。
一般要求输入用户名和密码等基本信息。
注册完后,系统会显示一个登陆页面;
(2)进入网上商店,查看,挑选商品。
顾客可以按产品类别检索商品,找出所关心的商品;
(3)查看商品细节说明,了解价格、付款方式、购物说明等详细信息;
(4)选中商品后,点击“放入购物车”按钮,将商品放入购物车;
如需继续购物则点击“继续购物”按钮;
(5)选购结束,检查购物车,核实商品和数量是否正确,如有出入,可以重新调整商品和数量,如无误,则点击“结帐”按钮;
(6)在结账页面填写自己的相关信息,如姓名,信用账号,电话号码等基本信息,完成结账;
在验证页面核对结账信息,如无误点击“确定”完成购物过程,如有误则返回结账页面进行修改。
后台管理人员的操作过程:
1.管理人员输入用户名,密码进入管理页面。
2.管理人员进入管理页面,可进行商店图书查询,添加图书资料,订单信息查询,用户信息查询。
3.管理人员点击商店图书查询页面。
4.管理人员点击添加图书资料页面:
输入需添加的图书信息,管理人员点击提交向后台数据库提交信息。
提交成功的话,页面显示新图书资料提交成功,否则显示数据库操作失败。
5.管理人员点击订单查询页面:
页面显示出已接到订单,其中包括图书名称,作者,图书类别,单价,数量,以及总金额,总数量。
6.管理人员点击用户信息查询页面:
页面显示出用户的基本信息。
管理员可以进行用户的删除查找动作。
删除成功后,页面显示删除成功。
4.3.系统操作流程
前台流程:
后台流程:
4.4.数据库设计
书本信息表:
titles用来存储书本相关信息
书本大类别表:
tb_bigType用来保存书本大类别信息
书本大类别表:
tb_samllType用来保存书本大类别信息
订单信息表:
tb_order用来保存前台用户提交的订单信息
详细订单表:
tb_orderDetail用来保存用户提交订单的详细信息
友情链接表:
tb_link存储商城中超链接的各个网站
商城信息表:
tb_info用于存储商城公告信息
用户信息表:
tb_user用于存储商城注册用户信息
管理员信息表:
tb_manager用于存储后台管理员信息
A、前台会员管理模块
1、会员登录模块
流程分析与设计
功能实现流程设计
编程详解:
(1)login.jsp页面中提供会员或管理员登录的信息输入,由会员或后台管理员输入登录名和密码,以请求参数的形式提交给LoginResult.jsp处理。
(2)LoginResult.jsp页面获取页面请求参数用户名与密码。
(3)以会员名(后台管理员)为参数调用UserDao(MemberDao)类的selectUserEntity(selectMemberEntity)方法,查询数据库表。
(4)查询结果为空,提示“会员不存在,请重新登录”或“管理员不存在,请重新登录”,否则将方法返回的会员信息表实体对象保存。
(5)对实体对象的密码与页面请求参数密码(即会员(管理员)在登录时输入的密码)比较,密码不一致,登录失败,页面提示重新登录,系统页面跳转到首页。
(6)会员密码验证一致,则登录成功,系统显示成功信息,页面跳转至前台商品展示页面,同时将会员信息保存在会话中,以供会员本次在网站访问时使用。
同样,后台管理员登陆成功后进入后台页面,也将信息保存在会话中,以供管理员在进行后台管理时使用。
2、会员注册模块
功能实现流程设计:
1、在uesrRegister.jsp中提供功能入口链接
<
ahref="
userRegister.jsp"
>
注册<
/a>
2、创建userRegister.jsp,页面设计提交表单
3、创建User.jsp,该页面实现实际数据库操作,并不生成返回浏览器的页面,数据库操作结果以JSP隐含对象request的属性将请求转发到doRegister.jsp显示<
jsp:
forwardpage="
doRegistert.jsp"
<
/jsp:
forward>
3、会员信息修改
功能实现流程设计:
1、修改main.jsp
2、判断会员是否登录
因为在会员登录后会将会员信息以类UserEntity的对象形式在JSP隐含对象session中存放,故可使用判断session对象是否存有会员信息对象来判断是否登录。
%Stringuserlink="
userLoginPlease.jsp"
;
//user是会员登录后存放在session对象上的属性名
if(session.getAttribute("
user"
)==null){}
UserEntityuser=UserEntity)session.getAttribute("
);
userlink="
userUpdate.jsp?
name="
+user.getName();
%>
4、会员找回密码
在login.jsp中添加找回密码的链接,链接到密码找回功能的起始页面findPass.jsp.jsp
创建findPass.jsp,页面风格与主页保持一致,在页面中设计一个提交表单,用于提交找回密码的会员名称,会员输入会员名称后,将作为请求参数以post方法提交到页面findPass1.jsp中,提交之前使用JavaScript函数checkEmpty(form)进行合法性验证
在页面中引入数据库会员信息表操作类和实体类,使用操作类的selectUserEntity方法以findPass1.jsp提交的请求参数“会员名称”做参数查询数据库,查询结果存放在页面对象user中。
还可以在findPass2.jsp页面中重新设置密码,成功之后跳转到login.jsp页面,重新登录。
B、前台商品检索
流程分析与设计
商品检索功能由两部分页面构成:
搜索内容的提交页面和搜索结果显示页面。
考虑到搜索功能应是用户常用的功能,而且搜索内容的提交页面元素不需要许多,因而将搜索提交页面设计在通用框架上侧包含的页面index.jsp中,以页面的表单元素searchForm存在,并设计该表单提交的目的地址为执行搜索操作并显示搜索结果的页面kind.jsp。
includepage="
goodsShowSort.jsp"
flush="
true"
include>
/td>
<
tdvalign="
middle"
formname="
searchForm"
method="
post"
action="
goodsShowSearch.jsp"
onSubmit="
returncheckEmpty(searchForm)"
<
table>
1.在GoodsDao类中,添加按商品名称查询方法publicListselectGoodsSearch(Stringsearch),方法参数为String类型的对象,表示商品的名称,方法返回符合查询条件的商品链表
2.在页面index.jsp中,添加搜索条件提交表单,表单设计输入文本,负责接受用户需要查询的商品名称,并将此信息以请求参数search提交给页面goodsShowSearch.jsp处理。
tdstyle="
top-padding:
5px;
"
width="
150"
<
inputname="
search"
type="
text"
size="
30"
align="
left"
class="
inputStyle"
onMouseOver="
this.className='
inputStyleMove'
onMouseOut="
this.className='
inputStyle'
>
3.页面kind.jsp处理用户的商品搜素先从页面请求参数search中获取要查询的商品名称,然后以此作方法参数调用数据库商品信息表操作类BooksDao的selectGoodsSearch()方法
//搜索商品
BooksDaodao=newBooksDao();
Stringsearch=request.getParameter("
//获取在上页面search中输入的搜索内容
ListsearchList=(List)dao.selectGoodsSearch(search);
intpageNumber=searchList.size();
//计算出有多少条记录
intmaxPage=pageNumber;
//计算有多少页数
4、编写goodsShowSearch.jsp页面
C、前台购物车管理
(1)商品详细信息显示
1、创建goodsShowSelectOne.jsp,在页面中引入数据库商品信息表操作类BooksDao和实体类BooksEntity,实现利用BooksDao的selectGoodsOne方法从数据库中检索出会员想购买的商品,检索条件为商品编码,该商品编码通过页面请求参数获得。
%@pageimport="
com.mycompany.dao.BooksDao"
%>
com.mycompany.entity.BooksEntity"
2、页面添加生成数据库商品信息表操作类BooksDao的对
象,调用selectGoodsOne方法检索商品信息放入BooksEntity
对象goods中。
publicActionForwardgoodSelect(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse){
Listlist=null;
list=dao.selectGoods();
intpageNumber=list.size();
Stringnumber=request.getParameter("
i"
if(maxPage%6==0){
maxPage=maxPage/6;
}else{
maxPage=maxPage/6+1;
}
if(number==null){
number="
0"
request.setAttribute("
number"
String.valueOf(number));
maxPage"
String.valueOf(maxPage));
pageNumber"
String.valueOf(pageNumber));
list"
list);
returnmapping.findForward("
goodSelect"
}
(2)、添加商品到购物车
编程详解
1、创建cartAdd.jsp,在页面中引入java实用工具类Vector和代表会员所选商品的临时实体类GoodsCart,类Vector是java常用的集合类型,用于生成购物车,购物车里商品GoodsCart的实例对象是Vector类实例中的元素,可以利用Vector类的方法方便的实现对购物车进行维护。
java.util.*"
com.mycompany.cart.CartGoods"
2、页面添加到购物车的商品信息商品编号和价格是由页面goodsShowOne.jsp以form表单提交的,使用request对象的getParameter方法获取。
StringgoodsID=(request.getParameter("
goodsId"
));
floatgoodsPrice=Float.parseFloat(request.getParameter("
price"
(3)显示购物车
编程详解
创建cartShow.jsp,在页面中引入java实用工具类Vector和代表会员所选购商品信息的临时实体类GoodsCart,以及商品信息表操作类BooksDao类,Vector类用于生成对象存放会员的购物车,GoodsCart用于存放遍历购物车中的商品购买信息,BooksDao类用于获取商品的其他信息。
%BooksDaodao=newBooksDao();
(4)修改及清空购物车、
编程详解:
1、使用session对象的getAttribute方法获取购物车存入Vector类对象cart中,并生成新购物车newcart:
Vectorcart=(Vector)session.getAttribute("
cart"
Vectornewcart=newVector();
2、遍历购物车cart内的商品,每件商品的购买数量由页面参数numX获得,将所有购买数量不为0的商品添加到新购物车newcart中:
for(inti=0;
i<
cart.size();
i++){
CartGoodscartGoods=(CartGoods)cart.elementAt(i);
//取出各件购物车中的商品
CartGoodscartGoods=(CartGoods)cart.elementAt(i);
Stringnum=request.getParameter("
num"
+i);
try{
intnewnum=Integer.parseInt(num);
cartGoods.number=newnum;
if(newnum!
=0){
newcart.addElement(cartGoods);
3、清空购物车
在清空购物车cartClear.jsp页面上,使用session对象的removeAttribute方法,实际上不仅清除购物车中的商品,也删除了购物车,会员如果继续购物,将会重新生成购物车。
session.removeAttribute("
response.sendRedirect("
cartShow.jsp"
%request.setCharacterEncoding("
GBK"
Stringisbn[]=request.getParameterValues("
ISBN"
Stringnum[]=request.getParameterValues("
newNum"
Mapcart=(Map)session.getAttribute("
isbn.length;
System.out.println("
isbn="
+isbn[i]+"
数量="
+num[i]);
if(Integer.parseInt(num[i])>
=1){
CartItemBeancartItem=(CartItemBean)cart.get(isbn[i]);
cartItem.setQuantity(Integer.parseInt(num[i]));
cart.put(isbn[i],cartItem);
}else{
out.println("
scriptlanguage='
javascript'
alert('
请输入有效数!
'
window.location.href='
viewCart.jsp'
/script>
return;
}}
session.setAttribute("
cart);
viewCart.jsp"
前台会员订单查询功能分析:
会员在登录进入网上商城后可以查看自己所有的订单(包括已经出货和尚未出货的订单),既可以单独查看自己已经出货的订单,也可以单独查看自己尚未出货的订单;
同时还可以对每个订单进行详细信息的查询。
用户在前台JSP页面(cartSelect.jsp)可以提交四种请求:
1.查看自己的所有订单。
2.在自己所有的订单中查看已经出货的订单。
3.在自己所有的订单中查看尚未出货的订单。
4.查看自己某一订单的详细信息。
E、Servlet的配置
1)Servlet的名称、类和其它选项的配置
在web.xml文件中配置Servlet时,首先必须指定Servlet的名称、Servlet类的路径,还有选择性的给Servlet添加描述信息,并且指定在
发布时显示的名称和图标。
具体如下:
servlet>
servlet-name>
orderServlet<
/servlet-name>
servlet-class>
com.mycompany.servlet.orderServlet<
/servlet-class>
/servlet>
和<
元素之间的内容是Servlet的名称
元素之间的内容是Servlet类的路径。
2)初始化参数
Servlet可以配置一些初始化参数,如下代码:
init-param>
param-name>
config<
/param-name>
param-value>
/WEB-INF/struts-config.xml<
/param-value>
/init-param>
代码说明:
指定number的参数值是1000。
在servlet中可以通过init()方法体中调用getInitParameter()方法进行访问。
3)Servlet的映射
在web.xml配置文件中可以给一个Servlet做多个映射,因此可以通过不同的方法访问这个Servlet。
servlet-mapping>
url-pattern>
/orderServlet<
/url-pattern>
/servlet-mapping>
指定名称为OrderServlet的Servlet的映射路径为/OrderServlet。
F、创建Servlet过滤器和实现其编程接口
1、建立一个实现Filter接口的类publicclassSessionFilterimplementsFilter
所有过滤器都必须实现javax.servlet.Filter。
这个接口包含三个方法,分别为doFilter、init和destroy。
(1)publicvoiddoFilter(ServletRequestsrequest,ServletResponsesresponse,FilterChainchain)
throwsIOException,ServletException{
//System.out.println("
使用以下方法对请求进行编码:
encoding="
+targetEncoding);
HttpServle