jsp课程设计在线购物系统说明Word文档格式.docx
- 文档编号:16225635
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:51
- 大小:324.32KB
jsp课程设计在线购物系统说明Word文档格式.docx
《jsp课程设计在线购物系统说明Word文档格式.docx》由会员分享,可在线阅读,更多相关《jsp课程设计在线购物系统说明Word文档格式.docx(51页珍藏版)》请在冰豆网上搜索。
由于用户登录属于用户登陆系统,所以不在本系统中实现,读者可自行完成此功能。
用户登陆系统后便可查看各种详细信息,并进行商品的订购。
下面给出系统需要实现的具体功能。
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
密码
4
Price
电子货币余额
Double
5
Consume
消费的电子货币
6
Type
用户类型
表2.2order订单表
Order
定单编号
订单类型
订单金额
Datetime
添加时间
DtaeTime
Userid
ProductName
商品名称
表2.3consume消费记录表
ConsumeId
消费记录id
消费金额
消费时间
用户di
表2.4add充值记录表
AddId
充值记录id
充值类型
Coin
充值金额
I
充值日期
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'
TYPE'
varchar(5)defaultNULL,
PRIMARYKEY('
)
)
创建数据表order的SQL语句:
order'
ORDERRID'
PRICE'
DATATIME'
datetimedefaultNULL,
USERID'
PRODUCTNAME'
创建数据表consume的SQL语句:
consume'
CONSUMEID'
varchar(50)defaultNULL,
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类用来配置文件中的各个参数值。
代码如下:
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.ResultSet;
importm.database.DBConnect;
publicclassUsercoinSelectBean{
publicStringselectUsercoin(StringID,inti){
Stringcondition;
if(i==0){
condition="
selectcoinfromuserwhereid='
"
+ID+"
'
;
}elseif(i==1){
selectconsumefromuserwhereid='
}elseif(i==2){
selectconsume+coinfromuserwhereid='
}elseif(i==3){
selectnamefromuserwhereid='
}else{
selecttypefromuserwhereid='
ResultSetrs=null;
Statementsql=null;
Stringstr=newString();
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){
TradeDBSQLException:
"
+ex.getMessage());
returnnewString("
cannotselect"
returnstr;
2.6.2定义ConsumeSelectBean类
用户登录后除了看到个人的电子货币信息(如已消费电子货币、剩余电子货币等信息)以外,还可以看到自己消费信息的统计情况,如购买了几个相同的商品,购买这几种商品总共花了多少电子货币。
publicclassConsumeSelectBean1{
publicConsumeSelectBean1(){
publicStringBufferselectConsume(StringuserID){
selectcount(userid)asnum,productname,sum(price)astotalfromconsumewhereuserid='
+userID+"
groupbyproductname"
Stringname,coin,num;
StringBufferbuffer=newStringBuffer();
Connectionconn=DBConnect.getConnection();
sql=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
while(rs.next()){
num=rs.getString
(1);
name=rs.getString
(2);
coin=rs.getString(3);
buffer.append(num+"
个"
+name+"
"
+"
金额:
+coin+"
<
br>
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 课程设计 在线 购物 系统 说明