演示视频:
https://www.bilibili.com/video/bv1fu4y1m7ha/
3.1 需求分析
一个典型的电子商务网站的购物车模块主要功能有:会员登陆及身份验证,包括用户注册、验证注册信息、会员登陆时的身份验证等;在线选购商品,包括浏览、查找、购买、购物车的管理、查看已经提交的订单信息等。
其中在会员的身份验证部分,主要是利用openssl技术进行数字证书的颁发和用户身份认证工作。
3.2 系统设计
根据前面章节需求分析的情况,结合本系统所要实现的功能,具体设计方案如下。
3.2.1系统功能
通过对需求的分析,一个电子商务网站的购物车应包括以下的主要功能:
1)会员登陆及身份验证,包括用户注册、验证注册信息、会员登陆时的身份验证等;
2)在线选购,包括浏览、查找、购买、购物车的管理、查看已经提交的订单信息等;
3.2.2系统结构
图3-1系统功能模块图
用户通过注册以后成为合法登录用户。登录以后可以查看修改个人信息在线购买商品查看定单状态。
3.2.3系统流程图
图3-2系统流程图
3.3 数据库设计
3.3.1数据库需求分析
(1)商品数据的准备。首先要搜集分销商的所有商品数据。这些商品数据可以分为三类:纸面记录、电子数据(xml、access、excel等文件)、网上数据。无论对于哪一种数据,都要对其进行检查,修正有问题的数据,删除重复和过期的记录。在检查的同时,还要对这些数据进行分析,为制定商品目录方案做准备。
(2)商品数据方案的制定。商品数据方案制定的目的在于:
①对商品进行科学、灵活地分类,方便客户迅速从少则几万,多则几十万甚至上百万种商品中找出所需商品。
②使系统支持强大、方便、快捷的查询功能,实现模糊查询和智能查询。
③高效的商品数据方案能提高数据库性能,提高网页浏览速度。
(3)客户信息表的制定。客户信息表内保存着在线商店中所有客户个人所拥有的个人信息和资料,是在线商店的后台管理人员进行商品销售的设计规划和进行决策的依据和参考。客户id则是客户个人身份证明的依据。
3.3.2数据库的逻辑结构分析
对于系统用户信息数据库,有以下数据项和数据结构:
用户信息:用户id(自动编号)、用户姓名、电话号码、email、地址、邮编。
对于系统的商品信息系统,有以下数据项和数据结构:
商品记录信息:商品的id(自动编号)、商品名称、商品单价、商品数量、商品所属类别。
而电子商务网站就是基于以上各个数据库的连接和综合,把各个独立的数据库通过内在的关联性统一到一个主页面里,从而方便客户的访问和购买,实现了一对一的交互。
4 系统实现
3.1 系统首页
图3-1 电子商务网站首页
此功能模块由index1.jsp来实现,并提供了本系统绝大多数功能的入口,例如:会员注册、登录,管理员登录,查询等。
会员登录主要是将用户输入的用户名和密码与数据库中my_users表中的已有的信息进行比对,如果完全一样,则是合法用户,可以成功登录,如果不一样,则登录失败。
查询功能是通过输入商品名称关键字和下拉菜单中商品类别进行查询提交查询信息以后由find.jsp显示查询结果。此功能未注册用户也可用,但是所查询商品不提供购买功能。
3.2 具体模块实现
3.2.1商品浏览
此功能模块由buy.jsp来实现。
当用户进入购物中心以后,系统会显示所有的商品基本信息。但在商品数量过于庞大以后则不容易查看所需商品,所以系统提供了按类别查询的功能。下拉菜单中有商品的所有类别,用户根据类别以post方法传递表单。再在该页设置接收字段:
string bookclass=codetostring(request.getparameter("bookclass"));
通过关键字bookclass对数据库商品表my_goods进行查询:
select * from my_goods where goodsclass='"+bookclass.trim()+"'
这样就比较清楚的可以获得各类别的商品的信息。有了自己需要购物的商品,则可以通过点击购买将商品添加到购物车,详细信息可以查看商品的详细信息。
详细信息页面xiangxi.jsp通过商品id查询数据库,除了显示以上信息以外,还显示商品数量,备注等信息。
界面如下图:
图3-2 商品信息
为了不让庞大的数据让人看得眼花缭乱,在商品的实现时是分页显示,每页显示5项记录。分页代码如下:
4.2.2购物车
此功能模块由:
buybook2.jsp,addgoods.jsp,minusgoods.jsp,deletegoods,buy.java来实现。
当用户选定某样商品并在登录后的情况下,可以点击购买将商品添加到购物车。在购物车中可以设置购买商品的数量。设置好数量以后按提交按钮根据商品唯一id将商品添加到购物车。在addgoods.jsp中通过获取商品id:
string id=request.getparameter("id");
int goods_count=integer.parseint(request.getparameter("book_count"))
以及buycar.java中的函数
public void addgoods(string goods_id,int goods_count)来实现。提交购物以后,可以选择查看购物车,也可以无限制的选择继续购买。选择继续购买以后跳转到商品购买页面buy.jsp选择查看购物车则跳转到buybook2.jsp。在跳转到buybook2.jsp页面以后,如果用户不满意该选择可以删除或者更改所选商品数量,更改商品数量是通过buycar.java和minusgoods.jsp一起来实现。
用户在确定需要购买以后,就可以提交购物车,完成购物功能。
图3-4 购物车
购物车中商品总价格totalprice是通过商品单价和数量进行结算。代码如下:
4.2.3查看订单
本模块划分为2个部分,一是用户对定单的管理,二是管理员对定单的管理。用户对定单的管理通过userjiemian.jsp实现查看自己的定单状态是否付款以及删除自己的定单。查看自己的定单是通过用户名访问定单表以获取自身定单,删除定单是通过定单id删除掉选定的定单:
a href='delcord.jsp?id="+rs.getstring("indentno")+"'
用户也可以通过查询指定的定单id来查询想要知道的定单的信息。通过sqlstring="delete from my_indentlist where id="+id;
语句删除以前的定单。
管理员管理定单除了拥有用户管理定单的功能以外,还可以通过定单id更新定单的状态,修改定单的付款状态以及发货状态。修改定单页面change.jsp.
通过获取定单id,用update语句更新定单信息。定单管理界面如下图:
图3-5查看当前订单
定单查询代码如下:
select * from my_indentlist where username='"+username+"'
4.2.4用户注册
此功能模块由reg.jsp,log.jsp,changemima.jsp,psxinxi.jsp来实现。分别别实现用户的注册以及密码的修改。psxinxi查看自己的基本注册情况。
如下图:
图3-6用户注册
用户点击“个人信息”以后系统就会查询数据库my_users表显示当前用户信息。由于整个用户页面都用session变量控制访问权限,所以在进行查询的时候就根据seesion变量中的username对数据库进行查询,查询代码如下:
rs=sql.executequery("select * from my_users where username like '%"+username.trim()+"%'");
reg.jsp用来注册用户的基本信息,包括用户名,用户密码,性别,电话,地址,邮编,email等基本信息。为了系统用户名和密码等的合法化,系统通过function on_submit()函数来控制输入,如果为空则提示用户名为空返回重新输入。示例代码如下:
if (form1.username.value==""){
alert("用户名不能为空");
………
}
同时为了保证输入合法化如email这样的信息,系统通过判断语句来确定输入是否合法
在通过基本信息输入以后,系统将信息传递给log.jsp进行处理,log.jsp首先用字符串接收函数:
string username=codetostring(request.getparameter("username"));
来接收reg.jsp提交的信息。然后通过数据库执行sql语句insert将数据写入数据库中,如果注册成功则跳转到首页,如果注册不成功,则通过:
out.print("注册不成功,请检查必添项目");
提示输入不成功。
changemima.jsp用来修改用户的密码信息,用户在登录以后点击修改密码的链接可以对密码进行修改。在输入两次密码时需要用到两次输入密码正确与否的判断:
判断合法以后,就可以访问数据库通过update语句来更新用户密码信息。
4.2.5会员登录
此功能通过来实现,避免简单代码的重复编写,也达到美观实用的效果。
图3-7会员登录
发表评论