用Jsp + MySql 开发一个在线购物系统.docx
《用Jsp + MySql 开发一个在线购物系统.docx》由会员分享,可在线阅读,更多相关《用Jsp + MySql 开发一个在线购物系统.docx(27页珍藏版)》请在冰豆网上搜索。
用Jsp+MySql开发一个在线购物系统
武汉理工大学华夏学院
软件综合课程设计
课程名称:
软件综合课程设计
题目:
在线购物系统
系名:
信息工程系
专业班级:
计算机1111班
姓名:
学号:
***********
********
2014年12月19日
1目标
1.1在线购物系统课设的内容:
采用Jsp+MySql开发一个在线购物系统。
该系统具备用户注册、登录,商品发布,购物车等基本功能。
1.2课程设计目的与任务:
软件综合课程设计是一个综合性的设计型实验教学环节,旨在使学生通过软件开发的实践训练,进一步掌握设计开发软件的方法与技术,学会数据的组织方法,提高软件开发的实际能力,培养创造性的工程设计能力和分析、解决问题的能力。
实现以下目标:
⑴深化已学的理论知识,完成理论到实践的转化
通过软件开发的实践,进一步加深对软件工程方法和技术的了解,将所学的理论知识运用于开发实践中,并在实践中逐步掌握软件工具的使用。
⑵提高分析和解决实际问题的能力
课程设计不仅是一次软件工程实践的模拟训练,同时通过软件开发的实践,积累经验,提高分析问题和解决问题的能力。
2软件开发环境与技术简介
2.1开发工具介绍
该系统的开发主要包括前台开发语言设计和后台数据库设计。
选择开发工具时应该考虑客户需求、系统功能和性能要求及开发人员的习惯等因素。
开发B/S(浏览器/服务器)结构的应用程序时,前台开发语言通常可以选择JSP、ASP、PHP等;如果开发网络应用程序,则需要选择一个网络数据库系统,例如SQLServer、Oracle和IBMDB2等;如果开发单机应用程序,则只要选择一个小型数据库系统就可以了,例如Access。
与其他开发工具相比,JSP具有简单易学、灵活方便和易于扩充等特点,越来越多地被用做浏览器/服务器应用程序的前端开发工具,与后台的SQLServer数据库相结合,能够提供高性能的管理信息系统解决方案。
因此,本系统采用的是JSP作为前台开发工具,SQLServer作为后台数据库。
2.2数据库系统
如果开发网络应用程序,则需要选择一个网络数据库系统,例如SQLServer、Oracle和IBMDB2等;如果开发单机应用程序,则只要选择一个小型数据库系统就可以了,例如Access。
2.3硬件环境
CPU:
Pentium43.0以上。
内存:
512MB以上。
硬盘:
80GB以上。
显示器:
1024×768像素以上。
数据库:
Access2000以上。
操作系统:
WindowsXP或更高版本。
2.4软件环境
SQLServer、MyElipse
3系统分析
商务系统随着中国经济的高速发展发生了巨大的变化。
专做营销的中小型企业随着百姓个人消费水平的增长迅速成长起来,但同时也带来了这一行业激烈的竞争。
3.1需求分析
3.1.1业务需求分析
网站的制作已经不单单是把企业想要表达的内容摆放在网站上那么简单,当今的网站设计包含了更多的设计元素,给予浏览者更多的视觉享受。
现在企业营销商需要用一些更新颖更有效的方式增强竞争力。
建设一个宣传自身商品形象的电子商务营销模式的网站是一种有效的方法。
另外,通过电子商务网站,广阔自己的营销方式和市场,能够帮助企业营销商从鱼龙混杂的市场中脱颖而出,完善企业销售与服务的环节,最终提升企业的价值与经济效益。
3.1.2用户需求分析
这个网站以上面的业务需求为基础,进一步提出网站需要完成的以下任务:
网站需要让供应商、客户以及浏览者能看到商城的信息及动态,另一个重要的内容就是能够显示出该商城现有的各类型商品及其详细信息;由于消费者的需求在增长和变化,商城在面对面销售的基础上也要随之发展出相应的服务,如在线订购等技术。
另外,企业营销商除了能与普通客户一样浏览网站之外,还需要对网站进行管理。
企业需要定期更新现有商品的详细信息、商城动态和联系方式,必要时还要对企业的介绍做更改。
对于消费者通过网站提交的各种订单能够进行处理以方便销售。
3.1.3功能需求分析
根据上面的需求分析,需要设计出网站的前台与后台。
用户在前台所浏览的内容,网站的后台需要能相应的做出更新或修改。
根据以上的想法,设计出网站的功能:
⑴前台用户相关功能主要包括:
用户注册、登录;
购物车;
订单查询;
个人资料修改;
发布留言。
⑵后台管理相关功能主要包括:
添加商品;
处理订单;
查询用户信息;
添加连接;
管理公告信息。
将以上这些功能制作成网页以后,在其中分别互相建立连接,基本完成商城及用户对网站的要求。
3.2业务流程分析
将上面的需求分析进行归纳。
得出网站的两个业务主角,即用户与管理员。
然后制定他们的相关活动。
对应网站的功能可以确定,用户活动对应网站前台业务流程;管理员活动对应网站的后台业务流程。
在对业务流程分析中,尽量把业务主角的活动考虑全面,使系统的功能尽量完整。
3.2.1前台业务流程分析
前台业务主要面向客户。
用户可以浏览网站主页、商品的介绍和一些服务信息。
前台业务流程如图1所示。
图1前台业务流程图
3.2.2后台业务流程分析
在网站设计中,管理员完成对网站的维护与管理的工作。
使用数据库中权限的功能对管理员设置权限,管理员可以对商品及商品分类的信息进行新增,修改及删除,也可以对订单信息进行查看、撤销、发货、完成等处理,同时管理员也可以对用户信息进行管理。
流程图如图2所示。
图2后台业务流程图
3.3数据流程分析
在分析了系统的业务流程之后,就要分析系统的数据流,为后面设计网站的数据库做好基础。
这里主要利用数据流程图来说明数据流程。
数据流程图是一个图示工具,容易理解,容易在开发和用户方之间进行交流,以及在开发组织内部交流。
因此数据流程图作为一种模型工具已经广泛使用在软件工程的实践中[2]。
根据前台业务流程,可以将用户的活动分为两类。
用户浏览所使用到的数据归纳为站内信息,如商品信息等。
而用户提交的订单则作为网站的订单数据。
相应的,根据后台业务流程,管理员对网站内容的添加、更新和删除等所操作的数据定义为商城信息。
网站数据流的总体图如图3所示。
图3网站数据流的总体图
进一步分析网站的数据流程,得到网站数据流程的零级图,如图4所示。
图4网站数据流的零级图
4系统总体设计
4.1系统设计
4.1.1系统功能分析
一个典型的B2C电子商务网上订购系统主要功能有:
(1)为客户提供24小时方便快捷的在线订购服务。
(2)商品信息的维护与管理,包括价格的调整、现有商品信息的修改、新商品信息的加入、过时商品信息的删除等。
(3)高效的商品数据方案,对商品信息进行科学、灵活地分类、存储,方便客户迅速从少则几万,多则几十万甚至上百万种商品中找出自己所需商品。
(4)强大、方便、快捷的查询功能。
提供关键字查询(如:
查找所有商品)。
(5)订单号模块所谓订单号模块,就是客户购买完商品后,系统自动分配一个购物号码给客户,以方便客户随时查询账单处理情况。
了解现在货物的状态。
(6)订单管理。
为分销商的EPR系统提供数据接口。
管理员可以查看历史记录、订单状态,并且能够在最短的时间内通知用户。
4.1.2系统体系结构
图5系统功能模块图
根据体系结构可将系统分为用户和管理两个角色:
(1)用户:
用户通过注册以后成为合法登录用户。
登录以后可以查看修改个人信息在线购买商品查看定单状态。
(2)管理员:
系统管理员可以管理整个系统,包括查看用户定单并修改相应信息查看用户信息,对不信任用户也可以对他进行删除。
查看商品信息,可以删除不需要的商品。
添加商品信息。
4.1.3系统流程
图6系统流程图
4.2数据库设计
4.2.1数据库需求分析
(1)商品数据的准备。
首先要搜集分销商的所有商品数据。
这些商品数据可以分为三类:
纸面记录、电子数据(XML、Access、Excel等文件)、网上数据。
无论对于哪一种数据,都要对其进行检查,修正有问题的数据,删除重复和过期的记录。
在检查的同时,还要对这些数据进行分析,为制定商品目录方案做准备。
(2)商品数据方案的制定。
商品数据方案制定的目的在于:
①对商品进行科学、灵活地分类,方便客户迅速从少则几万,多则几十万甚至上百万种商品中找出所需商品。
②使系统支持强大、方便、快捷的查询功能,实现模糊查询和智能查询。
③高效的商品数据方案能提高数据库性能,提高网页浏览速度。
(3)客户信息表的制定。
客户信息表内保存着在线商店中所有客户个人所拥有的个人信息和资料,是在线商店的后台管理人员进行商品销售的设计规划和进行决策的依据和参考。
客户ID则是客户个人身份证明的依据。
4.2.2数据库的逻辑结构分析
对于系统用户信息数据库,有以下数据项和数据结构:
用户信息:
用户ID(自动编号)、用户姓名、电话号码、Email、地址、邮编。
对于系统的商品信息系统,有以下数据项和数据结构:
商品记录信息:
商品的ID(自动编号)、商品名称、商品单价、商品数量、商品所属类别。
而网上购物系统就是基于以上各个数据库的连接和综合,把各个独立的数据库通过内在的关联性统一到一个主页面里,从而方便客户的访问和购买,实现了一对一的交互。
用户在购买商品前可以先看看商品目录,看看有没自己需要的商品,在商品的目录里有各个商品的具体的介绍,比如说商品的名称,数量,价格等,用户在看好自己的商品后,在商品的搜索中,你可以选择你所需的商品,用户在选择自己的商品时,系统则连接到后台关于此商品信息的数据库中,找到适合客户需求的信息。
客户将选购的商品放入系统所提供的购物篮里,此时顾客可以继续选购另外的商品,或者删除原先购买的商品,并可对商品进行名称和数量上的修改和添加。
点击“继续购买”,重复以上进行的购买活动。
直到顾客满意。
购物结束后,进行提交,点击“提交”,完成购物。
4.2.3数据库表的设计
分别建立以下的表以满足需要:
本系统需要建立4个数据表,他们分别是:
管理员表(my_goodsadminuser):
存放管理员用户名,管理员密码信息。
用户表(my_users):
存放用户编号,用户名,用户密码,真实姓名,性别,电话,email等信息。
商品信息表(my_goods):
存放商品编号,商品名,销售员,类别,提供商,价格以及数量等信息。
定单表(my_indentlist):
存放定单编号,用户,总价,是否付款,是否发货,用户备注等信息。
各表具体信息见下图:
表1my_goodsadminuser表中字段
字段名
数据类型
字段描述
adminuser
文本
管理员用户名
adminpass
文本
管理员密码
表2my_users表中字段
字段名
数据类型
字段描述
id
数字
用户主键
username
文本
用户名
passwd
文本
用户密码
Names
文本
真实姓名
Sex
文本
性别
Address
文本
地址
Phone
文本
电话
Post
文本
邮编
Email
文本
Email地址
表3my_goods表中字段
字段名
数据类型
字段描述
ID
数字
商品编号
Goodsname
文本
名称
Goodsclass
数字
类别
Seller
数字
销售员
Provider
文本
提供商
Price
数字
价格
Amount
文本
数量
Content
文本
说明
表4my_indentlist表中字段
字段名
数据类型
字段描述
ID
数字
组ID
username
文本
商品购买用户
Price
文本
定单价格
ispayoff
文本
是否付款
issales
文本
是否发货
content
文本
备注
4.2.4数据库的连接
在本系统中,系统会频繁的访问数据库。
本系统采用JSP的JDBC-ODBC驱动程序。
数据库的连接代码是通用的。
代码如下:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Stringurl="jdbc:
microsoft:
sqlserver:
//localhost:
1433;
DatabaseName=biye";
StringstrUser="sa";
StringstrPassword="417929";
Connectioncon=DriverManager.getConnection(url,strUser,strPassword);
Statementst=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
………
5具体设计分析
5.1系统首页
图6网上购物系统首页
此功能模块由index1.jsp来实现,并提供了本系统绝大多数功能的入口,例如:
会员注册、登录,管理员登录,查询等。
会员登录主要是将用户输入的用户名和密码与数据库中my_users表中的已有的信息进行比对,如果完全一样,则是合法用户,可以成功登录,如果不一样,则登录失败。
查询功能是通过输入商品名称关键字和下拉菜单中商品类别进行查询提交查询信息以后由find.Jsp显示查询结果。
此功能未注册用户也可用,但是所查询商品不提供购买功能。
5.2具体模块实现
5.2.1商品查看
此功能模块由buy.jsp来实现。
当用户进入购物中心以后,系统会显示所有的商品基本信息。
但在商品数量过于庞大以后则不容易查看所需商品,所以系统提供了按类别查询的功能。
下拉菜单中有商品的所有类别,用户根据类别以post方法传递表单。
再在该页设置接收字段:
Stringbookclass=codeToString(request.getParameter("bookclass"));
通过关键字bookclass对数据库商品表my_goods进行查询:
SELECT*FROMmy_goodswheregoodsclass='"+bookclass.trim()+"'
这样就比较清楚的可以获得各类别的商品的信息。
有了自己需要购物的商品,则可以通过点击购买将商品添加到购物车,详细信息可以查看商品的详细信息。
详细信息页面xiangxi.jsp通过商品ID查询数据库,除了显示以上信息以外,还显示商品数量,备注等信息。
界面如下图:
图7商品信息
为了不让庞大的数据让人看得眼花缭乱,在商品的实现时是分页显示,每页显示5项记录。
分页代码如下:
intdipage=1;//当前页码数默认为1
Stringpages=request.getParameter("dipage");
if(pages==null)
{
pages="1";
…………
intcountRecord=0;//记录条数
intcountPageRecord=0;//每页记录条数
intcountPage=0;//总页数
countPageRecord=5;//每页5条记录,要设置每页记录条数就更改这个变量的值
…………
countRecord=rs.getRow();//得到总页数
if(countRecord/countPageRecord==0)
countPage=countRecord/countPageRecord;
else
countPage=countRecord/countPageRecord+1;//把记录指针移至当前页第一条记录之前
if((dipage-1)*countPageRecord==0)
rs.beforeFirst();
…………
5.2.2购物车
此功能模块由:
buybook2.Jsp,addgoods.Jsp,minusGoods.Jsp,deleteGoods,buy.java来实现。
当用户选定某样商品并在登录后的情况下,可以点击购买将商品添加到购物车。
在购物车中可以设置购买商品的数量。
设置好数量以后按提交按钮根据商品唯一ID将商品添加到购物车。
在addgoods.jsp中通过获取商品ID:
Stringid=request.getParameter("id");
IntGoods_Count=Integer.parseInt(request.getParameter("book_count"))
以及buycar.Java中的函数
publicvoidaddGoods(StringGoods_id,intGoods_Count)来实现。
提交购物以后,可以选择查看购物车,也可以无限制的选择继续购买。
选择继续购买以后跳转到商品购买页面buy.Jsp选择查看购物车则跳转到buybook2.Jsp。
在跳转到buybook2.Jsp页面以后,如果用户不满意该选择可以删除或者更改所选商品数量,更改商品数量是通过buycar.Java和minusGoods.Jsp一起来实现。
关键代码:
buycar.Java:
publicbooleanminusGoods(StringGoods_id,intGoods_Count)
{……
deleteGoods(Goods_id);
……}
minusgoods.Jsp:
intGoods_Count=Integer.parseInt(request.getParameter("book_count"))
buycar.minusGoods(id,Goods_Count);
用户在确定需要购买以后,就可以提交购物车,完成购物功能。
图8购物车
购物车中商品总价格totalprice是通过商品单价和数量进行结算。
代码如下:
doubletotalprice=0;
totalprice=totalprice+rs.getFloat("price")*((Integer)list.get(goods)).intValue();
5.2.3订单管理
本模块划分为2个部分,一是用户对定单的管理,二是管理员对定单的管理。
用户对定单的管理通过userjiemian.Jsp实现查看自己的定单状态是否付款以及删除自己的定单。
查看自己的定单是通过用户名访问定单表以获取自身定单,删除定单是通过定单ID删除掉选定的定单:
ahref='delcord.jsp?
id="+rs.getString("indentno")+"'
用户也可以通过查询指定的定单ID来查询想要知道的定单的信息。
通过sqlString="deletefrommy_indentlistwhereid="+ID;
语句删除以前的定单。
管理员管理定单除了拥有用户管理定单的功能以外,还可以通过定单ID更新定单的状态,修改定单的付款状态以及发货状态。
修改定单页面change.jsp.
通过获取定单ID,用update语句更新定单信息。
定单管理界面如下图:
图9查看当前订单
定单查询代码如下:
SELECT*FROMmy_indentlistwhereusername='"+username+"'
5.2.3用户个人信息管理
此功能模块由reg.Jsp,log.Jsp,changemima.Jsp,psxinxi.jsp来实现。
分别别实现用户的注册以及密码的修改。
Psxinxi查看自己的基本注册情况。
如下图:
图10查看用户自己基本情况
用户点击“个人信息”以后系统就会查询数据库my_users表显示当前用户信息。
由于整个用户页面都用session变量控制访问权限,所以在进行查询的时候就根据seesion变量中的username对数据库进行查询,查询代码如下:
rs=sql.executeQuery("SELECT*FROMmy_userswhereusernamelike'%"+username.trim()+"%'");
reg.Jsp用来注册用户的基本信息,包括用户名,用户密码,性别,电话,地址,邮编,Email等基本信息。
为了系统用户名和密码等的合法化,系统通过functionon_submit()函数来控制输入,如果为空则提示用户名为空返回重新输入。
示例代码如下:
if(form1.username.value==""){
alert("用户名不能为空");
………
}
同时为了保证输入合法化如Email这样的信息,系统通过判断语句来确定输入是否合法,示例代码:
if(form1.email.value.length!
=0)
{for(i=0;iif(form1.email.value.charAt(i)=="@")
break;
if(i==form1.email.value.length)
{alert("非法EMAIL地址");
………
}
}
在通过基本信息输入以后,系统将信息传递给log.Jsp进行处理,log.Jsp首先用字符串接收函数:
Stringusername=codeToString(request.getParameter("username"));
来接收reg.Jsp提交的信息。
然后通过数据库执行SQL语句insert将数据写入数据库中,如果注册成功则跳转到首页,如果注册不成功,则通过:
out.print("注册不成功,请检查必添项目");
提示输入不成功。
changemima.Jsp用来修改用户的密码信息,用户在登录以后点击修改密码的链接可以对密码进行修改。
在输入两次密码时需要用到两次输入密码正确与否的判断:
if(form1.passwd.value!
=form1.passconfirm.value){
alert("确认密码不相符!
");
判断合法以后,就可以访问数据库通过update语句来更新用户密码信息。
图11用户注册信息
5.2.5用户控件
此功能通过<%@includefile="end.htm"%>来实现,避免简单代码的重复编写,也达到美观实用的效果。
5.2.6商品管理
此功能是通过booklist.Jsp和addbook.JsP,addbooklog.Jsp,delcord.jsp来实现
addbook.Jsp主要是用来添加商品的信息,包括商品名称,销售员,厂商,编号,价格,数量等信息。
在下拉菜单中可以选取商品的类别进行分类添加。
写好添加的商品信息以后将表单数据传递给addbook.Jsp对数据进行处理,通过addbooklog.Jsp的insrt语句将表单数据写入数据库。
具体代码如下:
Stringbookname=codeToString(request.getParameter("bookname"));
if(bookname==null)
bookname="";
………
Stringsqlstring=null;
sqlstring="insertintomy_goods(goodsname,goodsclass,seller,provider,goodsno,content,price,amount)