jsp课程设计在线购物系统说明.docx
- 文档编号:3320105
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:51
- 大小:324.32KB
jsp课程设计在线购物系统说明.docx
《jsp课程设计在线购物系统说明.docx》由会员分享,可在线阅读,更多相关《jsp课程设计在线购物系统说明.docx(51页珍藏版)》请在冰豆网上搜索。
jsp课程设计在线购物系统说明
前言
JSP是基于Java语言的服务器端脚本技术,是由Sun公司倡导的一种动态网页技术,通过JSP的标记在HTML静态内容中加入动态数据,制作动态网页。
HTML代码可以由网页设计人员负责,而动态数据则由程序开发人员负责完成,有利于网页设计者和程序员发挥各自特长,设计出专业的网站。
JSP成功的一个很重要的原因就是在JSP中采用了Java程序片段,因此,我们在学习JSP之前,一定要对Java语言的基本语法要有所了解,这样才能达到一个比较好的学习效果。
随着社会科技的发展,计算机已经普及到每个家庭当中,计算机给人们带来了无比的便利,同时在交流、贸易等各个方面都有其突出的作用。
人们不管是交流、贸易好事其他,都是通过网页实现的,可以说深刻了解网页是每个计算机爱好着必须掌握的。
目前,各种各样的线订购系统琳琅满目,各式各样的在线订购服务应有尽有,凡是在日常生活中所能见到的交易活动,都可以在互联网上找到对应的网站。
可见网络给人们带来了什么样的便利条件。
JSP是基于Java语言的服务器端脚本技术,是由Sun公司倡导的一种动态网页技术,通过JSP的标记在HTML静态内容中加入动态数据,制作动态网页。
HTML代码可以由网页设计人员负责,而动态数据则由程序开发人员负责完成,有利于网页设计者和程序员发挥各自特长,设计出专业的网站。
JSP成功的一个很重要的原因就是在JSP中采用了Java程序片段,因此,我们在学习JSP之前,一定要对Java语言的基本语法要有所了解,这样才能达到一个比较好的学习效果。
通过JSP动态网页的制作,我们将从中可以学到很多知识,不仅对我们身边的琐碎小事能进一步的了解,同时也可以给我们带来丰富的知识,可以让我们学习到很多,这为我们以后的发展也提供了很好的机会。
正文
本次课程设计将要实现的是一个在线订购子系统,它是网上订购系统的一部分,实现了用户信息显示,用户订购显示、查询,用户消费记录显示、查询和用户充值记录显示、查询等功能。
这是一个在线订购系统的一部分,实现起来比较容易。
比较适合从基础开始掌握jsp开发的这样一个开发流程。
2.1系统概述
目前互联网上大大小小的在但不论是各种样式的在线订购系统,还是经销何种商品的在线订购系统,都必不可少的会有用户订单级消费记录查询子系统,作为消费或即将消费的用户,了解自己在网上的消费情况是十分重要的。
这个子系统需要实现的功能总体来说包括一下4部分:
基本信息插询
订单查询功能
消费查询功能
充值记录查询
图2-1中,用户可以在在线订购子系统的首页上,直接看到用户个人的信息,用户可以通过页面上的连接来浏览自己的消费记录、订单和充值记录等信息。
图2-1用户个人信息查询系统首页
2.2需求分析
本次中在线订购子系统的设计目的是:
实现一个注册用户个人信息的查询系统,任何用户都可以通过这个平台来了自己在网上购买的具体情况。
将系统需求加以总结,得出系统需求如下:
系统可以运行在windows操作系统平台上,并提供友好的用户界面
用户登录后可以直接浏览个人消费记录
用户登录后可以直接浏览个人订单记录
用户登录后可以直接浏览个人充值记录
用户可以根据条件分别对消费记录、订单记录和充值记录进行查询。
2.3系统功能预览
通过前面的分析已经明确本系统的用户只有一类,即注册用户。
由于用户登录属于用户登陆系统,所以不在本系统中实现,读者可自行完成此功能。
用户登陆系统后便可查看各种详细信息,并进行商品的订购。
下面给出系统需要实现的具体功能。
2.3.1个人信息查询及显示功能
普通用户登录后,即可浏览自己的信息。
其中包括用户的类型(普通用户或VIP用户)和用户电子货币的详细记录情况,如图2.2所示:
图2.2用户基本信息的显示
2.3.2用户订单查询及显示功能
用户可以根据订单号、订单类型和订单生成日期作为查询条件来进行查询,如图2.3所示:
图2.3用户订单查询
2.3.3用户充值记录查询及显示功能
用户可以根据充值类型和生成日期作为查询条件来进行查询,如图2.4所示:
图2.4用户充值记录的查询
2.3.4用户消费记录的查询及显示功能
用户可以根据消费时间作为查询条件进行查询。
页面如图所示:
图2.5用户消费记录的查询
2.4系统分析
需求确定之后需要对系统进行整体分析和设计。
这包括系统功能的描述,对功能模块的划分和对系统流程的分析。
下面首先对系统功能进行描述。
2.4.1系统功能模块划分
模块分析是描述系统需求的一个过程,需要将需求分析中的感性描述进行抽象,其取出要实现的功能,这是整个系统开发的一个关键过程。
分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通的机制。
需求分析的第一步是描述系统的功能,以此确定系统的功能需求。
根据以上的用户操作需求,将系统划分如下,并对模块的划分和功能进行描述。
整个系统的模块结构如图2.6所示:
图2.6系统模块系统图
2.4.2系统流程分析
本系统中的用户是注册用户。
根据以上的模块划分和功能分析可知,该系统的流程主要是注册用户对个人详细的信息进行的各种查询。
图2.7所示为操作流程:
图2.7系统流程图
2.5系统设计
系统分析完成后,进入系统设计阶段,这是整个系统实现过程中非常重要的一个阶段。
良好的系统设计将会使开发顺利的进行。
2.5.1数据库逻辑结构设计
数据库设计是系统设计中非常重要的环节。
数据是一切系统设计的基础,通俗的说,数据库设计就像高楼大厦的根基一样,如果设计不合理、不完整,将在系统开发过程中,甚至到后期的系统维护、功能变更和功能扩充时引起较多问题,严重时甚至要重新设计项目,重做大量已完成的工作。
根据功能模块划分的结果可知,本系统的用户只有一类:
注册用户。
注册用户在使用此平台时无需登录,因此在本系统中需要创建注册用户的数据实体用于记录用户信息。
除此之外由于系统还要显示和查询用户的详细信息,这包括用户的电子货币信息,用户的订单信息、用户的向消费记录信息和用户的充值记录信息,所以需要创建他们各自相应的实体。
●用户数据实体:
需要记录用户的登录名和密码,还有该用户的电子邮件地址信息,登录名和密码也是登录系统时验证所必需的。
●订单数据实体:
包括订单的添加时间、订单号、订单名称、商品名称和目前状态等属性。
●消费记录数据实体:
包括消费时间、消费的商品名等属性。
●充值记录数据实体:
包括用户充值的时间、充值的金额等信息。
以上4个实体是基本的数据实体。
这4个实体之间并没有直接的关联关系,这意味着开发将必将简单。
下面将要设计数据库表。
在设计数据库表的过程中,一般要遵循以下几个原则。
●数据库的一个表最好只存储一个实体或对象的相关信息,不同的实体最好存储在不同的数据表中,如果实体还可以在划分,要掌握实体的划分原则是最好能够比当前系统要开发的实体的复杂度小。
●数据表的信息结构一定要适合,表的字段的数量一般不要过多。
●扩充信息和动态变化的信息一定要分别放在不同的表里。
2.5.2创建数据库
首先要创建一个数据库,可以使用MySQL的辅助图形化界面工具SQLyog。
接下来要在这个数据库中创建数据表,由前面的分析得知这个系统中需要建立4张数据表,他们分别如下:
1.用户信息表(User):
用于存放用户个人信息和电子货币的数据记录。
2.用户订单表(order):
用于存放用户订单饿数据记录信息。
3.用户消费记录表(consume):
用于存放用户的消费记录信息。
4.用户充值记录表(add):
用于存放用户的充值记录信息。
这4张数据表的字段说明如表2.1~~2.4所示:
表2.1User用户表
序号
字段
含义
类型
1
Id
用户id
Int
2
Name
用户名
Varchar
3
Password
密码
Varchar
4
Price
电子货币余额
Double
5
Consume
消费的电子货币
Int
6
Type
用户类型
Varchar
表2.2order订单表
序号
字段
含义
类型
1
Order
定单编号
Int
2
Type
订单类型
Varchar
3
Price
订单金额
Int
4
Datetime
添加时间
DtaeTime
5
Userid
用户id
Int
6
ProductName
商品名称
Varchar
表2.3consume消费记录表
序号
字段
含义
类型
1
ConsumeId
消费记录id
Int
2
Price
消费金额
Int
3
Datetime
消费时间
DtaeTime
4
Userid
用户di
Int
5
ProductName
商品名称
Varchar
表2.4add充值记录表
序号
字段
含义
类型
1
AddId
充值记录id
Int
2
Type
充值类型
Varchar
3
Coin
充值金额
I
4
Datetime
充值日期
DtaeTime
5
Userid
用户id
nt
2.5.3创建表的脚本文件
据数据库字段设计,编写的创建数据库表的SQL语句如下。
创建数据表user的SQL语句:
CREATETABLE'user'(
'ID'int(11)NOTNULL
'NAME'varchar(20)defaultNULL,
'PASSWORD'varchar(10)defaultNULL,
'COIN'Int(11)defaultNULL,
'CONSUME'Int(11)defaultNULL,
'TYPE'varchar(5)defaultNULL,
PRIMARYKEY('ID')
)
创建数据表order的SQL语句:
CREATETABLE'order'(
'ORDERRID'int(11)NOTNULL
'TYPE'varchar(10)defaultNULL,
'PRICE'Int(11)defaultNULL,
'COIN'Int(11)defaultNULL,
'DATATIME'datetimedefaultNULL,
'USERID'Int(11)defaultNULL,
'PRODUCTNAME'varchar(20)defaultNULL,
PRIMARYKEY('ID')
)
创建数据表consume的SQL语句:
CREATETABLE'consume'(
'CONSUMEID'int(11)NOTNULL
'PRICE'Int(11)defaultNULL,
'DATATIME'datetimedefaultNULL,
'USERID'Int(11)defaultNULL,
'PRODUCTNAME'varchar(50)defaultNULL,
PRIMARYKEY('CONSUMEID')
)
2.5.4目录和包结构
在进行程序设计和开发之前,要设计目录和包结构。
良好的结构会使代码逻辑清除且容易阅读。
一般一个设计良好的结构都有其共同的特点,就是逻辑清楚。
本系统的目录结构如图2.8所示:
:
图2.8目录及包结构
在这个目录结构中,Buy是个项目的根目录也是项目的名称。
其下src目录由于存放原文件所有的java类都定义在这个文件夹下。
WebRoot目录是发布时网站的根目录,其下放置JSP网页,这个平台的页面放在COIN文件夹下,WEB-INF目录下存放系统的配置文件,如web.xml等。
这个目录结构是通用的目录结构,读者可以根据需要进行相应的修改。
2.5.5定义DBConnect
本系统采用JSP+JavaBean技术进行开发,为了更好的进行数据库的相关操作,这里定义一个DBConnect类负责数据库的连接、SQL语句的执行等工作。
本系统采用数据库连接池进行数据库的统一管理,同时在数据库的操作上进行了封装,方便系统开发时与数据库的交互。
接下来进行相信介绍。
在实现某一个功能时,首先要连接数据库。
那么,如果在每一次需要用到操作数据库的时候,都需要进行一系列相同的重复操作。
如,加载驱动,创建连接。
其实这些操作可以封装在一个数据库操作类中。
这样做的好处是:
一旦系统移植,数据库参数改变,则不需要重新修改所有的连接代码并重新编译,只要在这个封装类中改变其参数值即可。
首先在文件config.properties中配置数据库连接参数,即数据库的驱动、连接地址、用户名、密码。
在整个系统中只有这么一个入口,所以在移植数据库或者改变系统环境时,只需要修改这个地方即可,十分方便。
具体代码如下:
conn_type=
conn_url=jdbc:
mysql:
//localhost:
3306/buy?
useUnicode=true&characterEncoding=UTF-8
conn_user=root
conn_pwd=root
conn_driver=com.mysql.jdbc.Driver
采用了如下代码的一个类,来统一管理数据库的连接:
packagem.database;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassDBConnect{
publicstaticConnectiongetConnection(){
Connectionconn=null;
try{
Class.forName(Config.CONNECTION_DRIVER).newInstance();
conn=DriverManager.getConnection(Config.CONNECTION_URL,
Config.CONNECTION_USER,Config.CONNECTION_PWD);
}catch(Exceptione){
e.printStackTrace();
}
if(conn==null){
System.out.println("nogetconnection!
throwsException");
}
returnconn;
}
}
还有一个Config类用来配置文件中的各个参数值。
代码如下:
packagem.database;
importjava.io.IOException;
importjava.util.Properties;
publicclassConfig{
privatestaticPropertiesprop=newProperties();
static{
try{
prop.load(Config.class.getResourceAsStream("config.properties"));
}catch(IOExceptione){
e.printStackTrace();
}
}
publicstaticStringCONNECTION_TYPE=prop.getProperty("conn_type");
publicstaticStringCONNECTION_URL=prop.getProperty("conn_url");
publicstaticStringCONNECTION_USER=prop.getProperty("conn_user");
publicstaticStringCONNECTION_PWD=prop.getProperty("conn_pwd");
publicstaticStringCONNECTION_DRIVER=prop.getProperty("conn_driver");
}
2.6基本信息查询功能
用户基本信息包括用户的个人电子货币的余额、用户已消费电子货币等信息。
还包括自己消费信息的统计情况,如购买了几个相同的商品,都买这几个商品总共花了多少电子货币等。
2.6.1定义UsercoinSelectBean
用户登录后首先看到的会是个人的电子货币信息,如已消费电子货币、剩余电子货币等信息。
这时就需要在JSP页面中调用JavaBean来对数据库进行查询,并且将查询结果返回到页面中来。
代码如下:
packagecom.buy.bean.coin;
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importm.database.DBConnect;
publicclassUsercoinSelectBean{
publicStringselectUsercoin(StringID,inti){
Stringcondition;
if(i==0){
condition="selectcoinfromuserwhereid='"+ID+"'";
}elseif(i==1){
condition="selectconsumefromuserwhereid='"+ID+"'";
}elseif(i==2){
condition="selectconsume+coinfromuserwhereid='"+ID+"'";
}elseif(i==3){
condition="selectnamefromuserwhereid='"+ID+"'";
}else{
condition="selecttypefromuserwhereid='"+ID+"'";
}
ResultSetrs=null;
Statementsql=null;
Stringstr=newString();
try{
Connectionconn=DBConnect.getConnection();
sql=conn.createStatement();
rs=sql.executeQuery(condition);
while(rs.next()){
str=rs.getString
(1);
}
rs.close();
sql.close();
conn.close();
}catch(SQLExceptionex){
System.out.println("TradeDBSQLException:
"+ex.getMessage());
returnnewString("cannotselect");
}
returnstr;
}
}
2.6.2定义ConsumeSelectBean类
用户登录后除了看到个人的电子货币信息(如已消费电子货币、剩余电子货币等信息)以外,还可以看到自己消费信息的统计情况,如购买了几个相同的商品,购买这几种商品总共花了多少电子货币。
这时就需要在JSP页面中调用JavaBean来对数据库进行查询,并且将查询结果返回到页面中来。
代码如下:
packagecom.buy.bean.coin;
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importm.database.DBConnect;
publicclassConsumeSelectBean1{
publicConsumeSelectBean1(){
}
publicStringBufferselectConsume(StringuserID){
Stringcondition;
condition="selectcount(userid)asnum,productname,sum(price)astotalfromconsumewhereuserid='"+userID+"'groupbyproductname";
ResultSetrs=null;
Stringname,coin,num;
Statementsql=null;
StringBufferbuffer=newStringBuffer();
try{
Connectionconn=DBConnect.getConnection();
sql=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs=sql.executeQuery(condition);
while(rs.next()){
num=rs.getString
(1);
name=rs.getString
(2);
coin=rs.getString(3);
buffer.append(num+"个"+name+","+"金额:
"+coin+"
");
}
rs.close();
sql.close();
conn.close();
}catch(SQLExceptionex){
System.out.println("TradeDBSQLException:
"+ex.getMessage());
returnnewStringBuffer("查询错误");
}
returnbuffer;
}
}
2.6.3创建usercoin.jsp用户信息显示页面
接下来是用来显示用户信息的JSP页面,其代码如下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%session.setAtt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jsp 课程设计 在线 购物 系统 说明