课程设计基于JSP网上书店系统的设计与实现.docx
- 文档编号:3500224
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:43
- 大小:335.24KB
课程设计基于JSP网上书店系统的设计与实现.docx
《课程设计基于JSP网上书店系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《课程设计基于JSP网上书店系统的设计与实现.docx(43页珍藏版)》请在冰豆网上搜索。
课程设计基于JSP网上书店系统的设计与实现
中南林业科技大学
Web技术应用基础
*******
学号:
********
学 院:
理学院
专业年级:
08信计1班
设计题目:
基于JSP网上书店系统的设计与实现
2011年06月
摘要
JAVA语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言,本文描述了JAVA和JSP技术的特点以及在互联网上的使用情况,介绍这两种技术的重要编程方法和两者之关的联系,并完成一个基于这种技术的网上书店系统。
【关键字】JAVA,JavaBeans,Servlet,JSP,网络编程,电子商务,网上书店
第一章概述
(一)JSP简介和运行原理
JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,JSP技术在Servlet技术基础上发展起来的,它正在飞速发展中,现已成为Java服务器编程的重要组成部分。
它虽然还未成型,但是它必将和J2EE(Java2EnterpriseEdition)一起发展。
JSP是结合markup(HTML和XML)和Java代码来处理一种动态页面。
每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。
JSP提供了多种方式访问Javaclass、Servlet、Applets和WebServer,因此,Web应用的功能可以分成多个明确定义公用接口的组件,通过JSP将它们结合在一起。
在JSP第一次获得来自于客户端浏览器的请求时,JSP文件将被JSP引擎(JSPengine)转换成一个Servlet,即将”.jsp”文件编译成JavaClass文件。
当Servlet引擎接收到请求后,如果设置了使用最新的JSP,它就会去找JSP文件,检查该文件在上次编译后是否改动过。
如果改动过,就会重新编译生成新的Servlet,最终将请求转交给编译好的Servlet引擎执行。
(二)开发背景
我国的网上书店虽然从数量上取得了一定的进展,但从售量而言却不尽人意,目前,国内尚无一家在网上零售领域形成绝对领先优势的网上书店。
发展比较好的寥寥无几,比较成功的有当当书店。
伴随着电子商务技术的不断成熟,电子商务的功能也越来越强大,注册用户可以在网上搜索购买到自己想要的各种商品,初步让人们体会到了足不出户,便可随意购物的快感。
我的毕业设计也就正是一个电子商务系统的开发---网上商品销售系统。
第二章需求分析
本系统是一个中小型的电子商务系统----网上书店,可以为各类用户提供方便的在线买书环境,符合目前国内流行的电子商务模式。
用户可以在系统中实现注册、浏览商品、搜索查询商品、下定单、处理定单等功能;管理员可以通过用户管理、定单管理、商品管理等管理功能来对系统进行维护更新。
(一)系统组成
1.客户界面部分
图书选购(可按分类查找图书,或者通过关键字进行查询)。
购物车功能。
查看图书详细信息。
用户注册。
用户登录。
查看用户的订单信息。
修改用户个人信息。
2.管理界面部分
现有图书管理:
修改,删除,查看。
用户管理:
查看,修改,删除。
订单管理:
查看订单清单,更新订单付款,出货状态,删除订单。
留言管理。
职工管理。
出版社管理。
(二)角色识别
角色识别的任务是找出所有可能与系统发生交互行为的外部实体,对象和系统。
他们的行为不受系统的控制,但是可以提供输入给系统(即使用系统的功能,或者能够响应系统的服务请求,为系统提供服务的接口)。
在前面的描述中可知,用户在访问系统时,可以浏览书籍和查询书籍,并使用购物车筛选自己中意的书籍,购物完之后到服务台进行结帐,并保留订单以便收到货物时进行核对,很显然系统存在这样的主要角色,我们定义该角色为前台客户。
同样在系统的后台,也需要人员管理货物,查询,处理订单,管理注册用户,我们定义该角色为系统管理员。
综上所述,本系统实际只包含两个角色:
前端用户,系统管理员。
前台用户的行为:
管理个人信息,前台订单处理,购物,浏览信息。
管理个人信息的操作:
用户注册,用户信息修改,用户登录,用户信息查看。
前台订单处理的操作:
结帐,查看订单状态,取消订单。
购物操作:
浏览购物车,将商品放入购物车,取消购物车中的商品,修改购物车中商品的数量,清空购物车。
浏览信息:
查看图书详细信息,查找图书。
系统管理员的行为:
用户管理,后台订单管理,商品管理。
用户管理的操作:
管理员登录,后台验证,查看/修改用户信息,添加/删除用户。
后台订单管理的操作:
查看订单,确认订单,修改订单状态,删除订单。
商品管理:
查看图书列表,查看图书详细信息,添加图书,修改图书,删除图书,添加图书分类,删除图书分类,浏览图书分类列表。
为了更好的理解我画出了前台用户模型图和系统管理员模型图:
前台用户模型:
图2-1前台用户模型
图2-2系统管理员模型
表2.1模块功能列表
序号
功能模块
类型
功能模块
备注
1
前台用户
管理个人信息
用户注册,用户信息修改,用户登录,用户信息查看
2
前台用户
前台订单处理
结帐,查看订单状态,取消订单
3
前台用户
购物
浏览购物车,将商品放入购物车,取消购物车中的商品,修改购物车中商品的数量,清空购物车
4
前台用户
浏览信息
查看图书详细信息,查找图书
5
系统管理员
用户管理
管理员登录,后台验证,查看用户信息,修改用户信息,添加用户,删除用户
6
系统管理员
后台订单管理
查看订单,确认订单,修改订单状态,删除订单
7
系统管理员
商品管理
查看图书列表,查看图书详细信息,添加图书,修改图书,删除图书,添加图书分类,删除图书分类,浏览图书分类列表
表2.1是根据模块完成任务的不同进行划分的,一共包括7大模块,其中与前台相关的共有4个,与后台相关的有3个。
这些功能模块是建立在我们对系统的需求分析和设计的基础上的。
当然这是从大的方向对系统进行的很粗糙的划分,进入系统设计阶段我们将会对系统进行更加精细的划分设计。
任何系统的功能的实现都离不开角色的参与,为了赋予不同的角色不同的功能和权限,也为了一定程度上确保系统交易的安全性和顺利进行,我们必须对系统的各种用户进行管理,从表2.1可以看出,系统提供用户登录,用户注册,用户信息查看,用户信息修改的功能。
用户登录后是为了从后端数据库中核实用户的登录名和密码,防止非法用户下订单,确保系统的安全性和秩序。
其他的功能也是最大限度的保证系统的顺利进行和安全性。
这里就不一一说明了。
第三章系统设计
本系统采用三层架构设计,它的工作原理如图3-1所示。
图3-1三层架构模型
采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回给用户界面层。
(三)数据库设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
1.数据库需求分析
针对一般在线书店的需求,得出如下需求信息。
▪用户分为游客和已注册用户。
▪订单分为单张详细订单和总订单。
▪一个用户可以购买多本图书。
▪一个用户对应一张订单。
▪一个列表对应多张订单。
针对本系统功能分析,总结出如下的需求信息。
▪用户,包括数据项:
用户ID、用户名、密码。
▪图书,包括数据项:
图书编号、图书名、价格、图书介绍。
▪订单列表,包括数据项:
订单编号、图书编号、购书数量。
▪订单,包括数据项:
订单编号、用户编号、下单时间。
从本系统中规划出的实体有:
用户实体、图书实体、订单实体、订单列表实体。
。
11N
N
图3-5实体关系E-R图
图3-6图书实体E-R图
图3-7用户实体E-R图
图3-8订单实体E-R图
图3-9订单列表实体E-R图
2.数据库逻辑结构设计
网上书店数据库中各个表的设计结果如下所示。
表3.1图书信息表book
字段名
数据类型
长度
允许空
说明
ID
int
4
自动编号,主键
bookname
int
4
书名
bookclass
varchar
255
图书类别
author
varchar
100
yes
图书作者
publish
float
8
yes
出版社
bookNo
varchar
100
yes
书号
Content
text
16
yes
内容介绍
price
tinyint
1
yes
价格
Amount
int
4
yes
总数量
Leav_number
int
4
yes
库存量
picture
int
4
yes
封面
reg_time
datetime
8
yes
入库时间
表3.2用户信息表shop_user
字段名
数据类型
长度
允许空
说明
ID
int
4
自动编号,会员编号
username
varchar
4
no
用户名
password
varchar
100
no
密码
Names
int
4
yes
会员级别
Sex
varchar
50
yes
名字
Addr
varchar
50
yes
地址
Phone
varchar
25
yes
电话
Post
varchar
25
yes
邮编
varchar
25
yes
邮箱
Retime
datetime
8
yes
注册时间
RegIpAddr
varchar
20
yes
注册ip
表3.3订单信息表orders
字段名
数据类型
长度
允许空
说明
ID
int
4
yes
自动编号,订单编号
order_id
int
4
yes
会员编号
user_id
int
4
yes
图书编号
quantity
int
4
yes
订购数量
submit_time
datetime
8
yes
提交订单时间
consignmentTime
datetime
8
yes
交货时间
totalprice
float
8
yes
总价
content
varchar
20
yes
备注
isPayoff
int
11
yes
是否付款
isSale
int
11
yes
是否发货
表3.4订单列表allorder
字段名
数据类型
长度
允许空
说明
ID
int
4
自动编号,卡类型编号
orderID
int
11
yes
订单号
BookNo
int
11
yes
书号
Amount
int
11
yes
数量
表3.5管理员信息表bookadmin
字段名
数据类型
长度
允许空
说明
AdminUser
varchar
20
管理员用户名
AdminPass
varchar
50
yes
管理员密码
表3.6图书分类表bookclass
字段名
数据类型
长度
允许空
说明
ID
int
4
自动编号,卡类型编号
Classname
varchar
30
yes
图书类别
第四章详细设计
(一)实现bookshop.run包
1.login.java
这是一个以客户为中心的交易平台,只有成为了系统的合法用户才能够使用这个系统,因此需要检验每个用户的合法性,管理用户登录的login.java正是要完成这样的功能。
类中定义了个private属性和他们对应的setX()/getX()方法和默认构造函数和execute()getSql()操作。
private属性分别是:
privateStringusername;//登录用户名
privateStringpasswd;//登录密码
privatebooleanisadmin;//是否管理员登录
privatelonguserid=0;//用户ID号
重要操作:
主要介绍execute()
execute()操作
功能:
从数据库中查询用户信息。
返回值:
boolean型,如果取值成功返回true,否则,返回false。
设计思路:
获得数据库连接对象Connection对象,ResultSet对象和Statement对象――》调用getSql()方法获得sql语句――》执行sql语句。
程序主干部分代码:
publicbooleanexecute()throwsException{
………
try{con=DataBase.getConnection();
stmt=con.createStatement();
rs=stmt.executeQuery(getSql());
}catch(Exceptione){
e.printStackTrace();}
while(rs.next()){
if(!
isadmin)
{userid=rs.getLong("id");}
flag=true;
}
………}
2.op_book.java
该类主要负责图书的管理,包括图书的修改,查询,删除和添加等。
op_book类有以下属性:
privatebookabooks=newbook();//新的图书类
privatejavax.servlet.http.HttpServletRequestrequest;//建立页面请求
privatebooleansqlflag=true;//对接收到的数据是否正确
privateVectorbooklist;//显示图书列表向量数组
privateintpage=1;//显示的页码
privateintpageSize=5;//每页显示的图书数
privateintpageCount=0;//页面总数
privatelongrecordCount=0;//查询的记录总数
publicStringsqlStr="";
op_book类有以下方法(省去了属性对应的getX()/setX()方法):
book_search();完成图书查询,包括分类,关键字查询。
delete();负责图书的删除。
getOnebook();主要完成图书的单本查询,用于支持页面的“查看详细信息”。
insert();负责图书的添加。
to_String();把字符串以“ISO8859-1”编码形式输出,使页面正常显示。
update();负责修改图书信息。
getRequest();负责接受页面传递过来的参数,分解并将参数存放到abooks对象中。
重要操作:
主要介绍getRequest()方法
功能:
负责从页面接受表单数据并分解,设置abooks对象相应属性。
参数设计:
页面传递的Request对象,其中包括表单数据。
返回值:
boolean型,true表示成功,否则返回false。
设计思想:
获取页面传递的Request对象—》分解Request对象—》获取表单参数值—》把参数值设置成图书对象abooks相对应的属性值。
程序主干代码:
publicbooleangetRequest(javax.servlet.http.HttpServletRequestnewrequest){………
request=newrequest;
StringBookName=request.getParameter("BookName");
abooks.setBookName(to_String(BookName));
Stringauthor=request.getParameter("author");
abooks.setAuthor(to_String(author));
Stringpublish=request.getParameter("publish");;
abooks.setPublish(to_String(publish));
Stringbookclass=request.getParameter("bookclass");
abooks.setBookClass(bc);
Stringbookno=request.getParameter("bookno");
abooks.setBookNo(to_String(bookno));
Stringpicture=request.getParameter("picture");
abooks.setPicture(to_String(picture));
price=newFloat(request.getParameter("price")).floatValue();
abooks.setPrice(price);
amount=newInteger(request.getParameter("amount")).intValue();
abooks.setAmount(amount);
StringContent=request.getParameter("Content");
abooks.setContent(to_String(Content));
……..
}
3:
op_user.java:
为了使用上的方便,我们把对用户的管理,包括用户的添加,删除,修改,查询等集合成一个管理类。
该类具有以下属性:
privateuseruser=newuser();//新的用户对象
privatejavax.servlet.http.HttpServletRequestrequest;//建立页面请求
privateVectoruserlist;//显示用户列表向量数组
privateintpage=1;//显示的页码
privateintpageSize=8;//每页显示的图书数
privateintpageCount=0;//页面总数
privatelongrecordCount=0;//查询的记录总数
privateStringmessage="";//出错信息提示
privateStringusername="";//注册后返回的用户名
privatelonguserid=0;//注册后返回的用户ID
该类具有的主要方法(省去了属性相关的getX()/setX()操作):
add():
负责用户的添加。
delete():
负责删除指定ID的用户。
get_alluser():
取出书店所有用户的信息。
getGbk():
返回指定字符串的GBK编码。
getUserinfo():
负责取得用户的详细信息。
update():
负责修改用户资料。
getRequest():
获取表单数据,并分解存储。
4:
op_buy.java
我们把业务逻辑和对订单以及和订单列表的管理集成到了该类当中。
该类具有以下属性:
privatejavax.servlet.http.HttpServletRequestrequest;//建立页面请求
privateHttpSessionsession;//页面的session;
privatebooleansqlflag=true;//对接收到的数据是否正确
privateVectorpurchaselist;//显示图书列表向量数组
privateVectorallorder;//订购单列表
privateVectororder_list;//订单清单列表
privateintbooknumber=0;//购书总数量
privatefloatall_price=0;//购书总价钱
privatebooleanisEmpty=false;//库中的书数量是否够购买的数
privateintleaveBook=0;//库存数量
privateStringorderId="";//用户订单号
privatebooleanisLogin=true;//用户是否登录!
privateintpage=1;//显示的页码
privateintpageSize=15;//每页显示的订单数
privateintpageCount=0;//页面总数
privatelongrecordCount=0;//查询的记录总数
该类的主要操作(省去了属性相关的getX()/setX()操作)
addnew():
负责向购物车中添加新购买的图书。
delete():
负责从数据库中删除指定ID的订单。
modiShoper():
负责修改购物车中已选的图书。
delShoper():
负责删除购物车中的物品。
getAllorder():
负责从数据库中的订单列表中查询指定用户的订单列表。
getGbk():
获得指定字符串的GBK编码。
getOrder():
获得单个订单对象。
payout():
提交购物车,把订单插入到数据库中。
update():
该方法负责当用户付款后,把数据中对应订单的是否付款标记修改成已付状态。
重要操作:
主要介绍addnew()方法:
功能:
负责向购物车中添加一条新记录。
参数设计:
页面传递的request对象。
返回值:
boolean类型,成功返回true,否则返回false。
设计思路:
从页面获得表单数据(request对象中)---》获得图书编号等参数值—》判断购买数量是否合法—》如果是可以操作,否则不能操作—》判断是否第一次购买—》如果是第一次购买,按第一次购买操作—》否则查询购买列表,找是否有相应项,有则直接修改数量—》否则添加新记录。
函数代码:
publicbooleanaddnew(HttpServletRequestnewrequest)throwsException{
…………
request=newrequest;
StringID=request.getParameter("bookid");
StringAmount
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 基于 JSP 网上 书店 系统 设计 实现