JSP网上购物系统
存档资料 成绩:
华东交通大学理工学院
课 程 设 计 报 告 书
所属课程名称 JSP程序设计
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
目 网上购物系统 分 院 电 信 分 院
专业班级 计算机2011—1 学 号 20110210440129 学生姓名 余小宝
指导教师 程志平
20 14年 6月 9日
华东交通大学理工学院课程设计
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
目 录
摘要 ......................................................................................................................................... 2
引言 ......................................................................................................................................... 2
第1章 数据库设计 ............................................................................................................. 3
1、需求
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
................................................................................................................... 3
2、概念设计 ................................................................................................................... 3
2.1、概念设计任务 ................................................................................................ 3
2.2、相关的实体集 ................................................................................................ 3
2.3、E-R图设计 .................................................................................................... 3
3、逻辑设计 ................................................................................................................... 4
3.1、商品信息表: ................................................................................................ 4
3.2、管理员表: .................................................................................................... 5 第2章 后台管理系统的实现 ............................................................................................... 6
1、系统文件结构: ....................................................................................................... 6
2、JSP的简单介绍及部分代码 ................................................................................... 7
login.jsp代码:.................................................................................................... 15
showGoods.jsp代码: ........................................................................................ 17
uploadGoods.jsp代码: ..................................................................................... 20 第3章:系统测试 ............................................................................................................... 22
问题一: ....................................................................................................................... 22
问题二: ....................................................................................................................... 23 第4章:总结 ....................................................................................................................... 24 参考文献 ............................................................................................................................... 25
致 谢 ................................................................................................................................... 25
华东交通大学理工学院课程设计报告
摘要
当今社会是一个信息化的社会,PC技术和Internet技术的高速发展给人们的生活带来了极大的便利。Internet成了人们快速获取、发布和传递信息的最重要的渠道之一,它在人们的政治、经济、生活等各个方面发挥着越来越重要的作用,俨然已经不能为其他任何工具所取代。在此情况下,许许多多的网上购物网站、SNS社交网站以及其他一些方便人们交流、沟通、学习和生活的网站应运而生,而其中,网上购物网站当属最令人欢欣鼓舞的。
通过网上购物网站,无论何时何地你都可以轻松地查询搜索甚至是买到心爱的物品,只要那里有一台接入了Internet的电脑。通过网上购物网站你可以很清楚的了解全世界各地的商品的信息,从而对它们进行比较、筛选,直到找到自己称心的物品。而对于管理人员来说,利用购物网站也能轻松地管理大量的商品,而且可以通过系统查看各种商品的销售情况,从而在运营上进行调整,以便获得更好的销售业绩。
本文基于当当网和Java对网上购物网站最重要的两个部分:数据库和后台管理系统,进行了分析和设计。数据库就是用来存储需要卖出的商品信息、用户信息以及其他各方面的信息,以方便用户根据自己的喜好,浏览和购买自己喜欢的东西。而后台管理系统则是方便管理员对数据库中的商品、用户等信息进行管理,以及对销售情况进行分析等。
关键词:网上购物 数据库 后台管理
引言
目前大部分销售商还在用传统模式进行销售,不方便对市场的需求进行调查,对自己所卖的商品不能及时地了解相关信息,获利没有达到最大限度;当购物者需要买自己所需的商品时,需要浪费很多的财力和物力。现在正处于信息时代,我们应该借助网络,提高销售的效率,以便促进经济的发展,从传统的购物方式转化到在网上进行购物。
本课程设计系统目前主要实现对商品简单的增删改查的操作,系统还不成熟,有待于继续开发。
系统要实现以下目标:
(1)管理员注册账号,并登陆账号。
(2)商品信息(销售商提供商品信息,并且可以修改信息,方便会员查看)
(3)对各种信息的管理(用户可以对各种要购买的商品信息进行增删改查操作)
第 2 页 共 26 页
-
华东交通大学理工学院课程设计报告
第1章 数据库设计
1、需求分析
需求分析阶段是网上购物系统开发的第一个阶段,也是非常重要的一个阶段。这是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响后面各个阶段的设计,并影响到设计结果是否合理和实用。它也是我们系统开发过程当中最困难、最耗费时间的一步,作为地基的需求分析做的是否充分和准确,决定了在其上构建数据库大厦的速度和质量。
2、概念设计
数据库概念模型设计阶段是数据库设计的关键阶段,在这一阶段里,主要是以需求分析中所识别的需求等信息为基础,确定网上购物系统中的实体和实体间联系,建立此系统的信息模式,准确描述此系统的信息结构,建立一个独立与各DBMS的高级概念模型。
2.1、概念设计任务
识别网上购物系统中的实体,识别实体的属性,识别实体的关键字,识别实体间的联系,并建立实体关系图(E—R图)来描述网上购物系统中的相关实体、属性及关系,从而达到为建立良好的网上购物系统的数据模型的目的。
2.2、相关的实体集
根据对前面的需求分析的相关需求进行分析,可以得出以下实体集:
1)、管理员实体集:管理员编号、管理员名称、密码
2)、商品信息实体集:商品编号、商品名称、商品价格、商品数量、商品日期、商品图片。
2.3、E-R图设计
管理员编号
管理员名称
管理员
密码
搜索商品 管理
添加商品
修改商品
删除商品
第 3 页 共 26 页
华东交通大学理工学院课程设计报告
商品名称
商品数量
商品编号
商品信息
商品图片
销售价格
商品日期
3、逻辑设计
逻辑结构设计是根据E-R图向关系模型转换的一般规则将概念结构转换为某个DBMS所支持的数据模型,并根据规范化理论对其进行优化的过程。
本系统依托MySQL来进行,所以在此过程中需要将上一步骤中得到的E-R图转换为MySQL所支持的关系模型,并对其进行一定程度上的优化。由于E-R图向关系模型转换的一般规则和规范化理论
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
很多,在这里就不再一一叙述。现将转换的结果列出:
备注:这些表都设计在“网上购物系统”数据库里。
3.1、商品信息表:
-- ---------------------------- -- Table structure for `goodstb` -- ---------------------------- DROP TABLE IF EXISTS `goodstb`; CREATE TABLE `goodstb` (
`gnum` int(11) NOT NULL AUTO_INCREMENT,
`gname` varchar(100) DEFAULT NULL,
`gprice` varchar(10) DEFAULT NULL,
`gdate` varchar(20) DEFAULT NULL,
第 4 页 共 26 页
华东交通大学理工学院课程设计报告
`gcount` int(11) DEFAULT NULL,
`gimg` varchar(100) DEFAULT NULL,
PRIMARY KEY (`gnum`)
)
3.2、管理员表:
-- ---------------------------- -- Table structure for `usertb` -- ---------------------------- DROP TABLE IF EXISTS `usertb`;
CREATE TABLE `usertb` (
`usernum` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL,
`userpassword` varchar(100) NOT NULL DEFAULT '',
PRIMARY KEY (`usernum`)
)
第 5 页 共 26 页
华东交通大学理工学院课程设计报告
第2章 后台管理系统的实现
后台管理系统是为了方便经销商对网上购物系统中的商品信息、订单信息等进行查询、修改、统计等操作而设计的。本文利用JSP实现基于网页的后台管理系统,以方便管理员对整个系统进行整体维护和更新。数据库仍使用MySQL,并使用ConnectionFactory.java类对数据库的操作和其他一些功能进行封装。 1、系统文件结构:
第 6 页 共 26 页
华东交通大学理工学院课程设计报告
这里列出的只是系统的一小部分文件,还有对管理员员和商品信息等各个表进行数据库操作封装的实现类。ConnectionFactory.java类里是对数据库操作进行封装,这样不仅可以使这些组件得到重用,而且能使JSP页面整洁、干净,不会出现JSP页面里全是Java脚本段而使页面难以阅读,产生混乱。下面就对这些文件进行简单的介绍: 2、JSP的简单介绍及部分代码
ConnectionFactory.java类实现对数据库的连接操作,返回一个Connection对象实例。代码如下:
package my.sky.fly.connectionFactory; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.SQLException;
public class ConnectionFactory {
static String driver="com.mysql.jdbc.Driver";
static String url =
"jdbc:mysql://localhost:3306/shopping?useUnicode=true&characterEncoding=utf-8";
static String username="root";
static String password="root";
//连接数据库
public static Connection getConn(){
Connection conn=null;
try {
Class.forName(driver);//在jvm运行时加载driver所指向的类。
//找 到 数据库,并登陆数据库
conn=DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] args) {
第 7 页 共 26 页
华东交通大学理工学院课程设计报告
Connection conn1=getConn();
System.out.println(conn1);
}
}
GoodsDao.java继承ConnectionFactory并对数据库进行的查询、更新进行简单的封装。 GoodsDao.java是对商品信息数据表进行各种操作的实现,包括插入一条新记录、根据名称进行搜索、显示所有商品等。代码如下:
package my.sky.fly.dao;
import java.util.ArrayList;
import java.util.List;
import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.ResultSet;
import java.sql.SQLException;
import my.sky.fly.connectionFactory.ConnectionFactory;
import my.sky.fly.dto.Goods;
public class GoodsDao {
//查询所有商品
public List
selAllGoods(){
List list=new ArrayList();
Connection conn=ConnectionFactory.getConn();
String sql="select * from goodstb";
PreparedStatement prep=null;
ResultSet rs=null;
try {
prep=conn.prepareStatement(sql);
rs=prep.executeQuery();
Goods g=null;
while(rs.next()){
g=new Goods();
g.setGid(rs.getInt(1));
g.setGname(rs.getString(2));
g.setGprice(rs.getString(3));
第 8 页 共 26 页
华东交通大学理工学院课程设计报告
g.setGdate(rs.getString(4));
g.setGcount(rs.getInt(5));
g.setGimg(rs.getString(6));
list.add(g);
System.out.println(list.size());
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public List pageSel(int pagenum){
System.out.println(getMaxPage());
List list=new ArrayList();
Connection conn=ConnectionFactory.getConn();
PreparedStatement prep=null;
String sql="select * from goodstb limit ?,10";
ResultSet rs=null;
try {
prep=conn.prepareStatement(sql);
prep.setInt(1, (pagenum-1)*10);
rs=prep.executeQuery();
Goods g=null;
while(rs.next()){
g=new Goods();
g.setGid(rs.getInt(1));
g.setGname(rs.getString(2));
g.setGprice(rs.getString(3));
g.setGdate(rs.getString(4));
g.setGcount(rs.getInt(5));
g.setGimg(rs.getString(6));
list.add(g);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
第 9 页 共 26 页
华东交通大学理工学院课程设计报告
try {
rs.close();
prep.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
public int getMaxPage(){
int size=0;
String sql="select count(*) from goodstb";
Connection conn=ConnectionFactory.getConn();
ResultSet rs=null;
PreparedStatement prep=null;
int maxpage=0;
try {
prep=conn.prepareStatement(sql);
rs=prep.executeQuery();
while(rs.next()){
size=rs.getInt(1);
}
if(size%10==0){
maxpage=size/10;
}else{
maxpage=size/10+1;
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
rs.close();
prep.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
第 10 页 共 26 页
华东交通大学理工学院课程设计报告
}
}
return maxpage;
}
public List selGoods(String str){
List list=new ArrayList();
String sql="select * from goodstb where gname like ? or gprice like ?";
PreparedStatement prep=null;
ResultSet rs=null;
Connection conn=ConnectionFactory.getConn();
try {
prep=conn.prepareStatement(sql);
prep.setString(1, "%"+str+"%");
prep.setString(2, "%"+str+"%");
rs=prep.executeQuery();
Goods g=null;
while(rs.next()){
g=new Goods();
g.setGid(rs.getInt(1));
g.setGname(rs.getString(2));
g.setGprice(rs.getString(3));
g.setGdate(rs.getString(4));
g.setGcount(rs.getInt(5));
g.setGimg(rs.getString(6));
list.add(g);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
//删除商品
public void delGoods(int gid){
Connection conn=ConnectionFactory.getConn();
String sql="delete goodstb where gnum=?";
PreparedStatement prep=null;
try {
第 11 页 共 26 页
华东交通大学理工学院课程设计报告
prep=conn.prepareStatement(sql);
prep.setInt(1, gid);
prep.execute();
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
prep.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//按商品编号进行商品查询
public List selGoodsById(int gid){
List list=new ArrayList();
Connection conn=ConnectionFactory.getConn();
//
PreparedStatement prep=null;
ResultSet rs=null;
String sql="select * from goodstb where gnum=?";
try {
prep=conn.prepareStatement(sql);
prep.setInt(1, gid);
rs=prep.executeQuery();
Goods g=new Goods();
while(rs.next()){
g.setGid(gid);
g.setGname(rs.getString(2));
g.setGprice(rs.getString(3));
g.setGdate(rs.getString(4));
g.setGcount(rs.getInt(5));
g.setGimg(rs.getString(6));
list.add(g);
第 12 页 共 26 页
华东交通大学理工学院课程设计报告
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
rs.close();
prep.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
//修改商品
public void updataGoods(Goods g){
Connection conn=ConnectionFactory.getConn();
PreparedStatement prep=null;
String sql="update goodstb set gname=?,gprice=?,gdate=?,gcount=? where
gnum=?";
try {
prep=conn.prepareStatement(sql);
prep.setString(1, g.getGname());
prep.setString(2, g.getGprice());
prep.setString(3, g.getGdate());
prep.setInt(4,g.getGcount());
prep.setInt(5, g.getGid());
prep.execute();
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
第 13 页 共 26 页
华东交通大学理工学院课程设计报告
prep.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//添加商品
public void addGoods(Goods g){
Connection conn=ConnectionFactory.getConn();
String sql="insert into goodstb(gname,gprice,gdate,gcount,gimg)
values(?,?,?,?,?)";
PreparedStatement prep=null;
try {
prep=conn.prepareStatement(sql);
prep.setString(1,g.getGname());
prep.setString(2, g.getGprice());
prep.setString(3, g.getGdate());
prep.setInt(4,g.getGcount());
prep.setString(5, g.getGimg());
prep.execute();
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
prep.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
对其余数据表均有一个对应的ConnectionFactory.java类来封装对其进行的操作,这里就不在一一列出。
第 14 页 共 26 页
华东交通大学理工学院课程设计报告
这些JavaBean类是此网上购物系统中最基本也是最重要的部分,所有对数据库进行的操作全部由它们完成,JSP做的只是在需要的时候对它们的调用和处理。
下面介绍JSP页面:
文件名 功能描述
Index.jsp 首页面,它包括管理员的登陆窗口
showGoods.jsp 商品信息管理页面,提供查看、添加、删除、修改商品信息的链
接
updataGoods.jsp 修改商品信息处理页面
uploadGoods.jsp 上传商品处理页面
goodsmsg.jsp 查看商品信息的页面
register.jsp 管理员注册信息的页面
ok.jsp 成功修改商品信息的跳转页面
部分页面的代码:
login.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath(); String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/
";
第 15 页 共 26 页
华东交通大学理工学院课程设计报告
%>
My JSP 'index.jsp' starting page
欢迎光临网上购物系统
管理员登录
第 16 页 共 26 页
华东交通大学理工学院课程设计报告
showGoods.jsp代码:
第 17 页 共 26 页
华东交通大学理工学院课程设计报告
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@page import="my.sky.fly.dto.Goods"%>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/
";
List list=(List)request.getAttribute("list");
int pagenum=(Integer)request.getAttribute("pagenum"); %>
My JSP 'showGoods.jsp' starting page
<%for(int i=0;i
|
商品名称:<%=g.getGname() %> |
商品价格:<%=g.getGprice() %> |
商品数量:<%=g.getGcount() %> |
商品日期:<%=g.getGdate() %> |
删除修改 |
|
<%if((i+1)%5==0){ %>
<%} %>
第 19 页 共 26 页
华东交通大学理工学院课程设计报告
<%} %>
uploadGoods.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath(); String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/
";
%>
第 20 页 共 26 页
华东交通大学理工学院课程设计报告
My JSP 'uploadGoods.jsp' starting page
由于代码过多,在此就不一一写出了。许多页面的代码都是相似的,而且都是一
些最基础的HTML代码。
第 21 页 共 26 页
华东交通大学理工学院课程设计报告
第3章:系统测试
由于本次课程设计的时间很短,因此只是做了一个简单的网上购物系统,采用了java中简单的MVC模式,并没有用到框架,使用servlet在页面和数据底层处理之间传送数据,实现的功能也是比较简单。只有基本的功能,而且是实现的功能还有一些小问题让人头疼又无语。
问题一:
这是在开始写完代码运行时遇到了异常,原因是:开始将AdminServlet类写到my.sky.fly.Dao的包中,后来又移到了com.du.servlet包中,但是在web.xml配置中没改,因此出现了ClassNotFoundException异常。
解决
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
:
将my.sky.fly.Dao改为com.du.servlet
第 22 页 共 26 页
华东交通大学理工学院课程设计报告
问题二:
乱码问题数据库中的数据打开是正确是,但在页面中显示的时候是乱码。
解决方法:
后来将页面和数据处理的编码都改为了UTF-8就可以了。
基本都得到了解决,系统也完了99%,完成此系统的过程中让我学习到了很多,在开始做系统前首先,要进行各种分析,确定自己要做什么样的系统,确定自己要使用到哪些软件,规划好项目的基本步骤;然后,借阅相关资料查看是否有分析中漏掉的地方,准备好用到的软件;最后,开始编写程序。
第 23 页 共 26 页
华东交通大学理工学院课程设计报告
第4章:总结
Internet 的普及为电子商务、网上交易的发展提供了得天独厚的条件,而网站的构想和建设是十分基础和重要的一环。现在购物网站并没有得到充分的共享,结合商务网站的特点合理而有效地建设购物网站的信息发布平台是十分有意义的。而其中关于数据库的设计和后台管理系统更是每一个优秀的商务网站都必须重视和做好的。本文只是简单对一个网上购物系统进行了数据库的设计和后台管理系统的简单实现:基于JSP和MySQL文中的代码经过Eclipse+tomcat+MySQL的简单运行。
通过对以上系统的数据库、后台管理系统等的分析和设计,我学到了很多在课本中学不到的知识,发现只有用到实际当中,知识才能发挥它的力量.
第 24 页 共 26 页
华东交通大学理工学院课程设计报告
参考文献
[1] 蔡剑、景楠. Java Web应用开发:J2EE和Tomcat. 北京:清华大学出版社,2005.9 [2] 侯晓强、徐春荣、勾海波. Java服务器编程实例[M]. 中国青年出版社,2004.5 [3] 耿详义、张跃平. JSP实用教程. 北京:清华大学出版社,2003.5 [4] 肖刚. Java Web服务器应用程序设计[M]. 西安:电子工业出版社,2001.6 [5]JavaScript 1.5实例教程. 高等教育出版社,2001.4
致 谢
在这次课程设计的撰写过程中,我得到了许多人的帮助。
首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做的更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,也提高了自己的设计能力。
其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计上的难题。同时也感谢学院为我提供良好的做课程设计的环境。
最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。
第 25 页 共 26 页