




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Web开发技术课程设计报告题 目: 网上商城系统 学生姓名: 崔亚男 冯月红 刘云蓁 学 号 : 04 15 42 系别班级: 信息管理与工程系 12级信息管理与信息系统班 专业(方向):IT人才培养 指导教师:曹莹 信息管理与工程系 完成日期:2014 年 06月19日 目 录 1 任务与要求3 1.1需求分析3 1.2需求规定3 1.3模拟需求图42 系统总体设计 5 2.1设计目标及完成功能 52.2 系统结构设计 6 3 系统详细设计8 3.1普通用户界面的详细设计8 3.2管理员界面的详细设计 12 3.3数据库表的详细设计 14 3.4代码详细设计 16 4测试和维护 36 5总结 396参考文献 401. 任务与要求 1.1 需求分析 互联网的快速发展为人们的购物提供了多种方式,网上购物就是目前主流的网上购物方式之一。网上商城将现实中的购物行为虚拟到网上进行,人们可以足不出户,即可获得自己需要的商品。于是,我们为提高自己在JSP以及相关一系列中的编程能力,通过这几个星期的努力,来实现网上商城购物的一系列功能,了解用户的需要和管理员的功能来实现对购物系统的管理功能。明确所要开发软件的功能、性能与界面,使得软件人员更能清楚的了解用户的需求,并在一定基础上进一步提出概要说明书让使用者能更容易应用我们的系统。1.2 需求规定 管理主要功能权限普通用户管理模块登陆管理员,普通用户(只能注册普通用户,管理员只有一个)管理员,普通用户修改资料(包括基本资料及密码)管理员,普通用户管理员用户管理模块查看用户信息 管理员删除用户管理员商品管理模块查看商品管理员,普通用户添加商品管理员 修改商品管理员删除商品管理员数据库管理模块添加类型管理员删除类型管理员留言管理模块查看留言用户添加留言用户 购物车模块查看购物车用户加入购物车用户删除购物车商品用户1.3 模拟需求图 登陆界面1、 判断用户权限2、 用户管理3、 注册新用户商品管理界面1、 上传商品2、 删除商品3、 查看商品数据库界面1、添加类型2、删除类型3、修改类型留言界面1、 留言2、 删除留言3、 查看留言管理员界面1、 审核用户2、 修改用户资料和商品信息2 系统总体设计21 系统设计目标及完成功能l 网上购物商城是基于B/S模式的电子商务网站,用于满足不同人群的购物需求,本课程设计主要从普通用户界面和管理员界面的角度出发,以高效管理、满足消费者需求为原则,做出了以下的系统设计目标:l 统一友好的操作界面,具有良好的用户体验。l 商品信息完备,让用户可以更加清楚商品的性能。l 用户可通过购物车一次购买多件商品。l 实现支付功能,用户选择商品后可在线提交订单。l 提供简单的安全模式,用户必须先登录,才允许购买物品。l 用户可以查看自己订单信息。l 设计网站后台,管理网站的各项基本数据。 22 系统结构设计2.2.1系统流程图 商品信息游客网上购物商城首页 浏览器 浏览用户注册用户登录 失败用户 成功 成功 用户订单 加入购物车 购物车 选择商品 生成 管理员管理员登录 管理员登陆首页 失败2.2.2 系统结构 网上商城系统中有两类用户,分别是普通用户和管理员,他们分别对应着普通用户模板和管理员模板。普通应户模板是网上商城系统的主体模板,它具有以下功能:l 用户注册。l 用户登录。l 查看商品信息。l 发表留言。l 搜索商品信息。l 将商品加入购物车。l 对个人购物车进行管理。l 修改个人资料。管理员模板负责网上商城系统的管理和维护工作,它具有以下功能:l 管理商品类别信息(包括修改和删除商品类别信息)。l 添加商品类别信息。l 管理商品信息(包括修改和删除商品类别信息)。l 添加商品信息。l 管理普通用户。l 管理订单信息。l 修改个人资料。3 系统详细设计3.1普通用户界面的详细设计3.1.1 查看商品信息 普通用户主界面(Usermain.jsp)为主页面,它是一个框架页,它将整个界面分为上下两个框架,这两个框架分别是topFrame和usermainFrame他们所对应默认的页面分别是普通用户功能选择界面topuser.jsp和商品信息 列表界面warelist.jsp效果图如图所示: Topuser.jsp效果图 普通用户功能选择界面(topuser.jsp)提供了普通用户的所有功能连接,所显示欢迎信息是通过获取保存在session中的用户名来实现的。 warelist.jsp效果图3.1.2购物车管理,包括查看购物车、添加商品到购物车、从购物车中删除 商品 查看购物车信息 : 为用户提供管理自己购物车中信息的功能,这个模块中用户同时可以删除购物 信息。 添加商品到购物车:在商品信息列表界面中提供了将某个商品添加到购物车的链接,包括填写购物信息界面和添加成功界面。完成添加后将跳转到购物车信息管理界面。 从购物车中删除商品:点击删除的图标,用户可以将某商品从购物车中删除。3.1.3 用户资料管理 用户可自行修改用户的密码,电话号码,邮箱。3.1.4留言界面的详细设计 用户可就商品进行评论,可以添加留言以及表情。 addmsg.jsp效果图3.2管理员界面的详细设计 3.2.1、管理员主界面 管理员界面(Adminmainjsp)与普通用户主界面(Usermain.jsp)一样,它也是一个包含页,它将整个界面分为上下两个页面,这两个页面分别是topFrame和usermainFrame他们所对应默认的页面分别是管理员功能选择界面topadmin.jsp和商品信息列表界面adminlist.jsp效果图如图所示: Topadmin.jsp效果图 管理员功能选择界面(topuser.jsp)提供了普通用户的所有功能连接,所显示欢迎信息是通过获取保存在session中的用户名来实现的。 Adminlist.jsp效果图 商品信息管理界面显示了网上商城系统中的左右商品信息,在这个页面上采用的方法来显示商品信息,它还提供了添加、修改和删除商品信息的借口。 3.2.2.管理用户界面,包含查看用户信息功能和删除用户信息功能 3.2.3.订单管理界面,可以实现查看用户添加的订单信息功能3.3数据库表的详细设计 网上商城系统中所创建的数据库的名称是shop,这个数据库包括以下5个数据表:l Goods数据库保存订单信息l Users数据库保存所有用户信息l Wares数据库保存商品信息l Words数据库保存留言信息3.3.1 Goods数据库3.3.2 Users数据库3.3.3Wares数据库3.3.4 Words数据库3.4代码详细设计 3.4.1、数据库连接 package dbconn;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class DB private final String DRIVER=com.microsoft.jdbc.sqlserver.SQLServerDriver;private final String URL=jdbc:microsoft:sqlserver:/localhost:1433;databasename=dbj_blog;private final String USERNAME=sa; private final String PWD=sa; /* * 连接数据库驱动,驱动名称及URL. * 从Statement继承,用于提供可以查询信息一起预编译的语句. * ResultSet 类可用来接受执行SQL查询语句后得到的记录集. */ private Connection conn=null; private PreparedStatement pstat=null; private ResultSet rs=null; public DB()/* * * return Connection 返回生成的连接对象 */public Connection getConn()try Class.forName(DRIVER);conn=DriverManager.getConnection(URL,USERNAME,PWD); catch (ClassNotFoundException e) / TODO Auto-generated catch blockSystem.out.println(注册驱动失败+e.toString(); catch (SQLException e) / TODO Auto-generated catch blockSystem.out.println(数据库连接失败+e.toString(); return conn;/* * * param sql待查询的sql语句 * return 返回查询结果记录集 */public ResultSet executeQuery(String sql)try pstat=conn.prepareStatement(sql); rs=pstat.executeQuery();return rs; catch (SQLException e) / TODO Auto-generated catch blockSystem.out.println(数据库操作失败);return rs; /* * * param sql 待操作的sql语句 * return 返回整型值 */public int executeUpdate(String sql)int flag=0;try pstat=conn.prepareStatement(sql);flag=pstat.executeUpdate(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return flag;/* * 对数据库关闭的操作 */public void close() try if(rs!=null) rs.close(); if(pstat!=null) pstat.close(); if(conn!=null)conn.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); 3.4.2、乱码的处理问题 public class EncodeFilter implements Filter String code=GBK; public void destroy() public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException / TODO Auto-generated method stub HttpServletRequest request=(HttpServletRequest)arg0; request.setCharacterEncoding(code); arg2.doFilter(request, arg1);public void init(FilterConfig arg0) throws ServletException / TODO Auto-generated method stub3.4.3、获取系统时间package util;import java.util.Date;public class MyDate Date d=null;public MyDate() d=new Date();public String getDate() return (d.getYear()+1900)+年+(d.getMonth()+1)+月+d.getDate()+日+d.getHours()+时;3.4.4、图片上传 % String realpath=request.getRealPath(); File files=new File(realpath+upload); String test; test=files.list(); for(int k=0;k img alt= src=upload width=200 height=200 3.4.5商品数据表操作类例、GoodsCtrl,其他类与之相似,省略不写package edu.hbcf.shop.ctrl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import edu.hbcf.shop.conn.DBConn;import edu.hbcf.shop.bean.ShopGoods;/* * MsgCtrl类实现留言版模块的增、删、改、查 * version 1.0 * author cy * */public class GoodsCtrl DBConn db=null; Connection conn=null; ResultSet rs=null; PreparedStatement pstat=null; /* * 此方法实现查询所有留言信息,并返回查询结果 * return List( ShopGoods 类的结果记录集合) */public List queryAll() List list=new ArrayList();/定理list泛型集合,并实例化 db=new DBConn();/生成相应的类对象 conn=db.getConn();/加载并注册驱动,生成连接对象返回 String sql=select * from goods order by GoodsID DESC;/定义查询所有留言的sql语句 try pstat=conn.prepareStatement(sql);/生成预处理执行对象rs=pstat.executeQuery();/执行sql语句,并将结果保存在结果记录集中while(rs.next()/游标后移一条记录,如果记录存在ShopGoods sg=new ShopGoods();/实例化留言对象sg.setGoodsID(rs.getInt(GoodsID);/将对应记录字段GoodsID保存在商品留言对象的GoodsID属性中sg.setGoodsName(rs.getString(GoodsName);/将对应记录字段GoodsName保存在商品留言对象的GoodsName属性中sg.setBuyNumber(rs.getInt(BuyNumber);/将对应记录字段BuyNumber值保存在商品留言对象的BuyNumber属性中sg.setUserName(rs.getString(UserName);/将对应记录字段UserName值保存在商品留言对象的UserName属性中sg.setWareID(rs.getInt(WareID);/将对应记录字段WareID值保存在商品留言对象的WareID属性中sg.setCreateTime(rs.getString(CreateTime);/将对应记录字段CreateTime值保存在商品留言对象的CreateTime属性中list.add(sg);/添加对象sg到集合类中 catch (SQLException e) / TODO Auto-generated catch blockSystem.out.println(查询留言版,数据库操作失败!+e.toString();finally this.close();/连接通道关闭 return list;/返回集合类对象 /* * 此方法实现按用户查询所有留言信息,并返回查询结果 * return List( ShopGoods 类的结果记录集合) */public List queryAllByUser(String UserName) List list=new ArrayList();/定理list泛型集合,并实例化 db=new DBConn();/生成相应的类对象 conn=db.getConn();/加载并注册驱动,生成连接对象返回 String sql=select * from goods where UserName=? order by GoodsID DESC;/定义查询所有留言的sql语句 try pstat=conn.prepareStatement(sql);/生成预处理执行对象pstat.setString(1, UserName);rs=pstat.executeQuery();/执行sql语句,并将结果保存在结果记录集中while(rs.next()/游标后移一条记录,如果记录存在ShopGoods sg=new ShopGoods();/实例化留言对象sg.setGoodsID(rs.getInt(GoodsID);/将对应记录字段GoodsID值保存在商品留言对象的GoodsID属性中sg.setGoodsName(rs.getString(GoodsName);/将对应记录字段GoodsName值保存在商品留言对象的GoodsName属性中sg.setBuyNumber(rs.getInt(BuyNumber);/将对应记录字段BuyNumber值保存在商品留言对象的BuyNumber属性中sg.setUserName(rs.getString(UserName);/将对应记录字段UserName值保存在商品留言对象的UserName属性中sg.setWareID(rs.getInt(WareID);/将对应记录字段WareID值保存在商品留言对象的WareID属性中sg.setCreateTime(rs.getString(CreateTime);/将对应记录字段CreateTime值保存在商品留言对象的CreateTime属性中list.add(sg);/添加对象sg到集合类中 catch (SQLException e) / TODO Auto-generated catch blockSystem.out.println(查询留言版,数据库操作失败!+e.toString();finally this.close();/连接通道关闭 return list;/返回集合类对象 /* * 此方法实现向数据库添加一条留言信息 * return int 添加留言成功返回1,否则返回0 */public int addGoods(ShopGoods sg) int flag=0; db=new DBConn();/生成相应的类对象 conn=db.getConn();/加载并注册驱动,生成连接对象返回 String sql=insert into goods values(?,?,?,?,?);/定义添加记录的sql语句 try pstat=conn.prepareStatement(sql);/生成预处理执行对象pstat.setString(1,sg.getGoodsName();/设置对象的GoodsName参数pstat.setInt(2, sg.getBuyNumber();/设置对象的BuyNumber参数pstat.setString(3, sg.getUserName();/设置队想的UserName参数pstat.setInt(4, sg.getWareID();/设置对象的WareID参数pstat.setString(5, sg.getCreateTime();/设置对象的CreateTime参数flag=pstat.executeUpdate();/执行sql语句 catch (SQLException e) / TODO Auto-generated catch blockSystem.out.println(添加留言失败+e.toString();finally this.close();/关闭连接通道 return flag;/返回操作状态 /* * 此方法实现根据留言id查询一条留言信息 * param GoodsID 整形值,接受一条记录的id * return ShopGoods 将查询的一条留言记录存放到ShopGoods类实例中返回 */public ShopGoods querryById(int GoodsID) ShopGoods sg=null; db=new DBConn();/生成相应的类对象 conn=db.getConn();/加载并注册驱动,生成连接对象返回 String sql=select * from goods where GoodsID=?;/定义查询一条留言的sql语句 try pstat=conn.prepareStatement(sql);/生成预处理执行对象pstat.setInt(1, GoodsID);/设置pstat对象的待定参数msgidrs=pstat.executeQuery();/执行查询if(rs.next()/游标后移一条记录,如果记录存在sg=new ShopGoods();/实例化ShopGoods对象/sg.setGoodsID(rs.getInt(GoodsID);/将对应记录字段GoodsID值保存在留言对象的GoodsID属性中sg.setGoodsName(rs.getString(GoodsName);/将对应记录字段GoodsName值保存在留言对象的GoodsName属性中sg.setBuyNumber(rs.getInt(BuyNumber);/将对应记录字段BuyNumber值保存在留言对象的BuyNumber属性中sg.setUserName(rs.getString(UserName);/将对应记录字段UserName值保存在留言对象的UserName属性中sg.setWareID(rs.getInt(WareID);/将对应记录字段WareID值保存在留言对象的WareID属性中sg.setCreateTime(rs.getString(CreateTime);/将对应记录字段msgid值保存在留言对象的CreateTime属性中 catch (SQLException e) / TODO Auto-generated catch blockSystem.out.println(依据id查询一条留言失败+e.toString();/输出错误信息finally this.close();/关闭连接通道 return sg;/返回sg对象 /* * * param sg 接收ShopGoods类的实例对象 * return int值,表示操作成功为非零值,操作失败为0 */ public int updateGoods(ShopGoods sg) int flag=0; db=new DBConn();/生成相应的类对象 conn=db.getConn();/加载并注册驱动,生成连接对象返回 String sql=update goods set BuyNumber=?,UserName=?,WareID=?,CreateTime=? where GoodsID=?; try pstat=conn.prepareStatement(sql);/生成预处理执行对象pstat.setInt(1, sg.getGoodsID();/设置pstat对象的GoodsID参数pstat.setInt(2, sg.getBuyNumber();/设置对象的BuyNumber参数pstat.setString(3, sg.getUserName();/设置队想的UserName参数pstat.setInt(4, sg.getWareID();/设置对象的WareID参数pstat.setString(5, sg.getCreateTime();/设置对象的CreateTime参数flag=pstat.executeUpdate(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); finally this.close();/关闭连接 return flag; /返回flag /* * 实现一条留言记录的删除 * param GoodsID 整形值,接受一条记录的id * return int值,表示操作成功为非零值,操作失败为0 */ public int deleteGoodsbyId(int GoodsID) int flag=0; db=new DBConn();/生成相应的类对象 conn=db.getConn();/加载并注册驱动,生成连接对象返回 String sql=delete from goods where GoodsID=?; try pstat=conn.prepareStatement(sql);/生成预处理执行对象pstat.setInt(1, GoodsID);/设置待定参数的值flag=pstat.executeUpdate();/执行sql语句 catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); finally this.close();/关闭连接通道 return flag; /返回状态标志 /* * 此方法实现关闭操作留言版产生的连接对象、预处理执行对象以及结果记录集 */ public void close() try if(rs!=null)/如果结果记录集rs不为空 rs.close(); /关闭rs if(pstat!=null)/如果预处理执行对象pstat不为空 pstat.close();/关闭pstat if(conn!=null)/如果连接对象conn不为空 conn.close();/关闭conn catch(SQLException e) System.out.println(操作留言版数据库关闭异常!+e.toString(); 3.4.6客户端校验 function check() if(document.myform.username.value=)/判断用户名为空 alert(用户名不能为空); return false; if(document.myform.password.value=)/判断密码为空 alert(密码不能为空); return false; var password2=request.getParameter(password); if(password2.value!=password.value) alert(输入的密码不一致!);/判断密码一致性 return false; 3.4.7新技术应用HTML5 表单、按钮美化 .content font-family: 宋体;font-size: 12px; line-height:18px a:link font-size:12px; color:red a:visitedfont-size:12px; color:blue a:hoverfont-size:12px; color:pink a:activefont-size:12px; color:purper inputtype=submit:hover background: -webkit-gradient(linear, left top, left 24, from(#FF9800), color-stop(0%, #FF6900), to(#FF9800); .form margin-top:100px; margin-bottom:100px;margin-left: 400px;margin-right: 400px;padding: 26px 24px 46px;font-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年休闲农业与乡村旅游乡村旅游基础设施与公共服务提升报告
- 心理保健理论知识培训课件
- 电子焊接装配工教学课件
- there be句型语法练习题
- 心源性猝死的救治课件
- 莆田市高三三模数学试卷
- 南师大三模数学试卷
- 2025年钳工(技师)实操考试试卷汇编
- 金融科技赋能普惠金融:2025年应用效果与金融科技产业链布局优化报告
- 2025年再婚夫妻共同债务明细确认与清偿协议范本
- 施工组织设计施工总体部署完整版
- TUPSW微机控制电力专用不间断电源(UPS)系统使用说明书
- 骨质疏松诊治与中医药
- LY/T 2383-2014结构用木材强度等级
- GB/T 528-2009硫化橡胶或热塑性橡胶拉伸应力应变性能的测定
- 中日关系历史
- GB/T 15171-1994软包装件密封性能试验方法
- 2023年江苏省中学生生物学竞赛(奥赛)初赛试题和答案
- 信息系统运维服务方案
- 化工试生产总结报告
- DB32-T 3129-2016适合机械化作业的单体钢架塑料大棚 技术规范-(高清现行)
评论
0/150
提交评论