学号
课程设计报告
课程名称Web技术(JSP)课程设计
题目在线手机商城的设计与实现
学部
专业
班级
姓名
指导教师
2013 年12 月26 日
WEB技术(JSP)课程设计任务书
题目:
在线手机商城的设计与实现
1. 课程设计教学条件要求
课程设计开发平台与工具:eclipse/Dreamweaver+ JSP +SQL SERVER 2005
2. 课程设计任务
该系统主要完成在线手机类产品买卖交易平台的设计与实现,主要用于将手机产品直观地展现给客户,宣传每个手机产品的优劣及为客户提供手机商品在线预订和购买服务。
3.课程设计任务(功能)说明及功能模块图
该系统主要的功能包括:手机分类检索、客户在线预订、最新手机推荐、热门手机浏览、手机详细资料显示、手机销售排行统计、手机商品分类管理等功能。
(1)用户注册登陆模块
用户注册登陆模块主要用于注册网上商城的会员,储存详细的客户档案,便于管理员管理现有会员,同时也有利于会员了解公司的最新产品资讯。该模块的子功能有用户在线注册、用户登录管理和用户资料。
用户注册登陆模块
用户注册
用户
登录
与退
出
密码
修改
与取
回
用户
资料
修改图2.1用户注册登陆模块图
(2)手机检索查询模块
手机检索查询模块
品牌分类搜索热销商品排行
图2.2手机检索查询模块图(3)购物车管理模块
购物车管理模块
用户查看历史订单
用户
在线
填写
订单
用户
修改
订单
用户
查询
订单
明细图2.3购物车管理结构图
(4)后台手机商品管理
后台
手机
商品
信息管理
手机
信息
管理
商品
分类
管理
商品添加
商品查看
商品修改
商品类别添加
商品类别删除图2.4后台商品信息管理结构图
(5)后台用户管理
用户信
息管理
添加用户
删除用户
图2.5后台用户管理
3. 数据库设计
本系统主要设计一下几张表单:
(1)商品基本信息表:存放网上商城销售商品的基本信息
(2)商品分类信息表:存放网上商城商品分类的基本信息
(3)用户基本信息表:存放网上商城注册用户的基本信息
(4)订单信息表:存放与用户相关的订单基本信息
(5)订单条目信息表:存放与订单有关的具体条目信息(订单中的商品价格以及数量)(6)管理员信息表:存放管理的用户名和密码等信息。
4.各模块的功能说明
整个系统主要包含以下功能模块:
(1)会员注册登录模块:用来实现用户的注册及登陆功能、修改用户资料功能。
(2)商品检索查询模块:产品的分类显示、热销商品排行显示。
(3)会员购物车管理模块:会员购物车的显示和管理、订单生成和管理、选择付款方式等。(4)后台商品信息管理模块:用来对商品的增加、删除和修改功能。
(5)后台订单管理模块:用来对用户的订单进行处理。
(6)后台用户管理模块:管理员对注册用户信息进行维护。
目录
1主要技术阐述 (7)
2总体规划与设计 (8)
2.1需求分析 (8)
2.2系统功能划分 (8)
2.3数据库设计 (8)
3页面设计与编码 (11)
3.1界面设计 (11)
3.1.1首页界面 (11)
3.1.2注册界面 (11)
3.1.3登陆界面 (12)
3.1.4浏览手机界面 (12)
3.1.5注册信息修改界面 (13)
3.1.6管理员功能界面 (14)
3.1.7退出登陆界面 (15)
3.2系统核心代码 (15)
3.2.1商品添加servlet代码 (15)
3.2.2订单servlet代码 (18)
3.2.3购物车jsp代码 (19)
4总结 (21)
参考文献 (22)
1主要技术阐述
SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。Microsoft SQL Server 2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
SQL Server 2005 数据引擎是该企业数据管理解决方案的核心。此外Microsoft SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领域。
MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式。
2总体规划与设计
2.1需求分析
近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐渐进入传统的流通领域。于是网上商城开始流行起来,越来越多的商家在网上建起在线商城,向消费者展现出一种新颖的购物理念。
网上商城是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的学校,如公司报价,商城新闻和商城专题信息等。网上商城系统具有强大的交互功能,可使商家和用户方便的传递学校,完成电子贸易或EDI交易。这种全新的交易方式实现了公司文档与资金的无纸化交换。
2.2系统功能划分
优秀的网站需要各种类型的模块。各种功能模块在网站中扮演着不同的角色,它是使网站和用户之间沟通的基本桥梁。
本网站分为前台模块和后台模块,网站前台是面向网站访问用户的,通俗的说也就是给访问网站的人看的内容和页面,如浏览手机等操作。
网站的后台通常需要帐号及密码等信息的登陆验证,登陆信息正确则验证而后进入网站后台的管理界面进行相关的一系列操作。如管理员登陆登陆、修改注册信息等操作。通过网站管理后台,可以有效的管理网站供浏览者查阅的信息。
当然,前台和后台都是程序人员做的开发的网站页面,通常开发带网站管理后台功能的网站空间必须支持程序语言和数据开发功能。
2.3数据库设计
表2-1商品基本信息photo表
字段名称标识名称数据类型是否允许为空完整性Id id tinyint 否主键
url 商品图片路径varchar(255) 是
name 商品名text 是
time 商品生产日期datetime 是
xiaoliang 商品销量bigint 是
price 商品价格bigint 是
number 商品类别tinyint 是
该表设计的作用是存放网上商城销售商品的基本信息。
表2-2商品分类信息photo1表
字段名称标识名称数据类型是否允许为空完整性number 商品类别Tinyint(4) 否主键name 商品名tinytext 是
该表设计的作用是存放网上商城商品分类的基本信息。
表2-3用户基本信息user表
字段名称标识名称数据类型是否允许为空完整性logname 登录名varchar(20) 否主键password 密码text 否
phone 联系电话text 否
email 电子邮件text 否
address 联系地址text 否
realname 真实姓名text 否
该表设计的作用是存放网上商城注册用户的基本信息。
表2-4订单信息xinxi表
字段名称标识名称数据类型是否允许为空完整性id id tinyint 否主键name 商品名text 是
price 商品价格bigint 是
kucun 商品库存bigint 是
number 商品数量tinyint 是
url 商品路径varchar 是
该表设计的作用是存放与用户相关的订单基本信息。
表2-5订单条目信息dingdanxinxi表
字段名称标识名称数据类型是否允许为空完整性logname 登录名varchar(20) 否主键
address 联系地址text 否
phone 联系电话varchar(255) 否
fukuan 付款text 否
该表设计的作用是存放与订单有关的具体条目信息(订单中的商品价格以及数量)。
表2-6管理员基本信息message表
字段名称标识名称数据类型是否允许为空完整性
logname 登录名varchar(255) 否主键
address 联系地址text 否
该表设计的作用是存放管理的用户名和密码等信息。
3页面设计与编码
3.1界面设计
3.1.1首页界面
首页界面是该在线手机商城的主页,包括网页的导航和一些页面的链接,如图3.1
图3.1首页界面
3.1.2注册界面
该界面是该在线手机商城用户注册的基本信息,如图3.2
图3.2注册界面
3.1.3登陆界面
该界面为用户登陆功能,如图:3.3
图3.3登陆界面
3.1.4浏览手机界面
该界面为用户浏览手机界面,带有导航条,可以实现功能的切换,有品牌分类和热销排行两类如图:3.4
图3.4浏览手机页面
3.1.5注册信息修改界面
该界面为用户修改注册信息界面,带有导航条,可以实现功能的切换,界面显示用
户曾经注册过的信息,用户可以在上面进行修改。如图:3.5
图3.5修改注册信息界面
3.1.6管理员功能界面
该界面实现管理员对商品与用户的管理,带有导航条,可以实现功能的切换,如图:3.6
图3.6管理员登陆成功界面
手机商品管理分为三部分:商品添加、商品查看、商品修改。商品修改界面同商品添加界面一样。如图所示
图3.7商品添加界面
图3.8商品查看界面
用户管理分为两部分:添加用户、删除用户。添加用户界面同用户注册界面一样。如图所示
图3.9删除用户界面
3.1.7退出登陆界面
该界面实现用户退出,带有导航条,可以实现功能的切换,用户没登陆时提醒用户登陆,登陆界面同管理员登陆界面一样,用户已登陆时用户退出界面如图3.10
图3.10用户退出界面
3.2系统核心代码
3.2.1商品添加servlet代码
public class spAdd extends HttpServlet {
private static final long serialVersionUID = 1L;
private Connection con;
private PreparedStatement ps;
private ResultSet rs;
private String result;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(true);
JavaBean.spAdd r = new JavaBean.spAdd();
r.setId(request.getParameter("id"));
r.setUrl(request.getParameter("url"));
r.setName(request.getParameter("name"));
r.setTime(request.getParameter("time"));
r.setXiaoliang(request.getParameter("xiaoliang"));
r.setPrice(request.getParameter("price"));
r.setNumber(request.getParameter("number"));
String id=request.getParameter("id");
String url=request.getParameter("url");
String name=request.getParameter("name");
String time=request.getParameter("time");
String xiaoliang=request.getParameter("xiaoliang");
String price=request.getParameter("price");
String number=request.getParameter("number");
try{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql:///mobile","root","123");
ps=con.prepareStatement("insert into photo values(?,?,?,?,?,?,?)");
ps.setString(1, id);
ps.setString(2, url);
ps.setString(3, name);
ps.setString(4, time);
ps.setString(5, xiaoliang);
ps.setString(6, price);
ps.setString(7, number);
ps.executeUpdate();
if(id.contains(",")||id.contains(",")){
result="注册失败(用户名中不能有逗号),请重新注册,3秒后页面自动跳转……";
response.setHeader("refresh", "3;URL=/mobile/spAdd.jsp");
}
else{
result="商品添加成功!";
session.setAttribute("JavaBean.spAdd", r);
}
}
catch(Exception e){
e.printStackTrace();
result="注册失败(用户名不能重复),请重新注册,3秒后页面自动跳转……";
response.setHeader("refresh", "3;URL=/mobile/spAdd.jsp");
}
finally
{
try {
ps.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
request.setAttribute("result", result);
request.getRequestDispatcher("/mobileMessage.jsp").forward(request, response);
}
}
3.2.2订单servlet代码
public class dingdan extends HttpServlet {
private static final long serialVersionUID = 1L;
private Connection con;
private PreparedStatement ps;
private ResultSet rs;
String result=null;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String logname=request.getParameter("logname");
String address=request.getParameter("address");
String phone=request.getParameter("phone");
String fukuan=request.getParameter("fukuan");
try{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql:///mobile","root","123");
ps=con.prepareStatement("insert into dingdanxinxi values(?,?,?,?)");
ps.setString(1, logname);
ps.setString(2, phone);
ps.setString(3, address);
ps.setString(4, fukuan);
ps.executeUpdate();
}
catch(Exception e){
e.printStackTrace();
}
finally
{
try {
ps.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
request.setAttribute("result", "您已购买成功,请在购物车中查看您所购买的宝贝");
request.getRequestDispatcher("/show.jsp").forward(request, response);
}
}
3.2.3购物车jsp代码
<%
String result=(String)session.getAttribute("result");
if(result!=null)
out.print("
%>
<%
String number=(String)session.getAttribute("number");
%>