电子购物网站设计—1

电子购物网站设计—1二 开发环境 nbsp Windows 操作系统下开发平台 JDK MyEclipse tomcat MicrosoftSQL nbsp 编码 MyEclipse 软件美化界面 软 Dreamweaver 软件数据库设计 SQL nbsp Server2008 软件 nbsp 一 需求分析 1 系统管理 分三种不同权限的用户 系统管理员 顾客 商品管理员 主要实现系统管理员对商品管理员 顾客的管理

二、开发环境

 Windows操作系统下

开发平台:JDK,MyEclipse,tomcat,MicrosoftSQL Server。

 编码:MyEclipse软件

美化界面:软Dreamweaver软件

数据库设计:SQL  Server 2008软件

 

一、需求分析

1)系统管理:分三种不同权限的用户:系统管理员、顾客、商品管理员,主要实现系统管理员对商品管理员、顾客的管理,系统管理员可以实现商品管理员和顾客账户的添加、删除、修改等功能。

2)前台页面:可以展示商品,实现商品的简单的按名称搜索。

3)顾客模块:可以实现顾客账号的注册、登录、浏览商品、添加商品到购物车、提交订单、查看购买信息及订单流程。

4)商品管理员模块:可以添加、删除、修改商品信息;可以查看订单、发货。

 

三、数据库设计

1、系统管理员数据表

电子购物网站设计—1

2、用户数据表

电子购物网站设计—1

后面还有4个数据表,以后会在博客其他文章补全

部分文件结构:

电子购物网站设计—1

配置文件struts.xml代码如下:

代码太多了,只给出一本分

 
   
   
    
    
    
    
    
     
     
     
       /c_goodsSuccess.jsp 
      
     
       /error.jsp 
      
     
     
     
     
       /c_showgoods.jsp 
      
     
       /error.jsp 
      
     
     
     
     
       /c_updateGoods.jsp 
      
     
     
     
     
       /c_goodsSuccess.jsp 
      
     
     
     
     
       /c_goodsSuccess.jsp 
      
     
    
   

数据库连接类:

  

import java.sql.Connection; import java.sql.DriverManager; public class JDBC { private String dbDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";//数据库驱动 private String url="jdbc:sqlserver://localhost:1433;"+"databaseName=db_DZSW"; public Connection connection=null; public JDBC(){ try{ Class.forName(dbDriver).newInstance();//加载数据库驱动 connection=DriverManager.getConnection(url,"cqx","");//加载数据库 }catch(Exception e){ System.out.println("数据库加载失败!"); } } } 

上传图片的关键点:

   原理:先把图片上传到web容器Tomcat 上的临时文件夹,再获取图片的地址,保存到数据库中,显示图片的时候就取出地址,根据地址和图片的名称显示相应的图片,部分代码如下:

 /执行上传功能/// public String uploadFile() throws FileNotFoundException, IOException { try { InputStream in = new FileInputStream(file); String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR); File uploadFile = new File(dir, this.getFileFileName()); OutputStream out = new FileOutputStream(uploadFile); byte[] buffer = new byte[1024 * 1024]; int length; while ((length = in.read(buffer)) > 0) { out.write(buffer, 0, length); } in.close(); out.close(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } return this.fileFileName; } 

分页效果的关键点:

  实现分页的方法很多,但我更倾向与使用Sql语句分页读取数据,而不是全部数据一次性读出在放到List结果集再分页,个人也不推荐这种方法,数据多是不好使用。这里只给出部分代码和SQL语句

 public List 
      
        show(int pageSize, int pageNow){ List list=new ArrayList(); try{ if (pageSize>0 && pageNow>0) { ps=connection.prepareStatement(" SELECT TOP ("+pageSize+")*" + " FROM GoodsTable"+ " WHERE id >=(SELECT ISNULL(MAX(id),0) FROM "+ "(SELECT TOP "+(pageSize*(pageNow-1)+1)+" id FROM GoodsTable ORDER BY id) A)ORDER BY id"); ResultSet rs=ps.executeQuery(); while(rs.next()){ GoodsTable stu=new GoodsTable(); stu.setId(rs.getInt("id")); stu.setName(rs.getString("goodsName")); stu.setIntroduce(rs.getString("introduce")); stu.setNowPrice(rs.getFloat("nowPrice")); stu.setImages(rs.getString("images")); stu.setMark(rs.getInt("mark")); list.add(stu); } list.size(); } return list; }catch(Exception e){ e.printStackTrace(); list.size(); return list; } }// 
      

Jsp页面部分代码:

这个分页效果的使用

标签,根据

标签的
<
s:param
name=
“pageNow”
value=
“pageNow-1”
>获取相应的值,通过改变相应的数值条用相同的方法。去改变页面的内容,下一页,上一页,首页,尾页的实现方法是一样的。

 
       
首 页 上一页 下一页 末 页

修改商品类部分代码:

修改数据库的SQL语句update,从JSP页面获取ID的值,根据ID找到该条商品进行重新设置值,指定该条信息要修改的字段,接着调用ps.executeUpdate();更新数据库。代码如下:

 ///修改商品根据id/// public boolean Updategoods(GoodsTable sp){ try{ ps=connection.prepareStatement("update GoodsTable set bigID=?,smallId=?,goodsName=?," + "goodsFrom=?,introduce=?, number=?,nowPrice=?,freePrice=?,images=? where id=?"); ps.setFloat(7, sp.getNowPrice());//现价 ps.setFloat(8, sp.getFreePrice());//特价 ps.setObject(9,sp.getImages().toString());//图片 ps.setInt(10,sp.getId()); ps.executeUpdate(); ps.close(); System.out.println("id值为:"+sp.getId()); return true; }catch(Exception e){ e.printStackTrace(); return false; } }// 

删除订单类部分代码:

   主要是通过Sql语句Delete通过ps数据库的连接类用connection.prepareStatement的方法使用SQL语句根据where设置的条件的

 //删除订单 public void deleteOrder(OrderTable order) throws SQLException{ ps=connection.prepareStatement("delete from OrderTable where id=? "); ps.setInt(1,order.getId()); ps.executeUpdate(); ps.close(); }// 

后台显示商品:

  改代码是Action类的部分方法,把从Dao层传过来的结果集存放在List集合里面,然后通过Map集,把结果放在Request.put里返回给JSP页面(客户端)

 ///后台显示商品// public String showgoods() { // TODO Auto-generated method stub GoodsDao goods=new GoodsDao(); List 
          
            stu=goods.find();//调用GoodsDao的find()方法 if(stu!=null){ Map req=(Map)ActionContext.getContext().get("request"); req.put("stus",stu);//将SP的内容放到stus中 return SUCCESS; }else return ERROR; }// 
          

部分jsp页面代码:

 
            
            
           

六、部分运行结果与功能简述

1、首页效果图;用户界面

该界面相比其他界面就显得友好写,用户可以浏览商品信息,同样也可以把商品放进购物车中,然后去结账。当然用户也可以搜索自己想要的商品。这是一个站内搜索功能,对数据信息量大时对用户有很大的帮助。现在信息量比较小,不是很需要该功能的。同样也可以点击购物车,查看购物车中的商品信息。

电子购物网站设计—1

2、登录界面(运用CSS+js代码实现这种方式登录,实在Dreamweaver做出来的效果)在移植代码的。

    登录界面主要使用了一个弹出式窗口登录,这样有利于界面的简洁。选择不同的登录方式就跳转到相应的页面进行相应操作。

电子购物网站设计—1



后面我还会在个人博客上持续更新,敬请留意!



























版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198851.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:21
下一篇 2026年3月26日 下午2:21


相关推荐

  • sql server 备份还原_什么是SQL

    sql server 备份还原_什么是SQL1、动手备份2、动手还原3、T-SQL语句备份及还原BACKUP DATABASERESTORE FILELISTONLY FROM DISK代码示例– 打开设置当前数据库use mastergo– 默认创建数据库create database SQLDBgo– 打开设置当前数据库use SQLDBgoSQLDB– 在当前数据库创建表creat…

    2022年8月18日
    9
  • LoRA微调QWen2.5-0.5B

    LoRA微调QWen2.5-0.5B

    2026年3月13日
    3
  • 用ASP实现简单的繁简转换

    用ASP实现简单的繁简转换

    2021年11月15日
    66
  • flex垂直居中[通俗易懂]

    flex垂直居中[通俗易懂]{display:flex;justify-content:center;align-items:center;}以上代码可以使元素自动水平垂直居中{flex:1;}以上代码可以使子元素都有相同的长度,且忽略它们内部的内容:flex容器属性1、触发弹性盒:display:flex、inline-flex  注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。2、flex-directio.

    2022年4月26日
    88
  • makefile中的.PHONY和all的作用

    makefile中的.PHONY和all的作用PHONY 伪目标 伪目标是这样一个目标 它不代表一个真正的文件名 在执行 make 时可以指定这个目标来执行所在规则定义的命令 有时也可以将一个伪目标称为标签 伪目标通过 PHONY 来指明 PHONY 定义伪目标的命令一定会被执行 下面尝试分析这种优点的妙处 1 如果我们指定的目标不是创建目标文件 而是使用 makefile 执行一些特定的命令 例如 clean rm o

    2026年3月18日
    2
  • realm数据库使用

    realm数据库使用

    2022年3月12日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号