基于Java的网上花店系统

1 网上花店商品销售网站概述

1.1 课题简介

随着时代的快速发展,电子商务的迅速崛起正在改变着人们的生活方式。网上购物平台的不断兴起,使得人们越来越习惯于在网上购买各种商品,包括鲜花。然而,目前针对鲜花销售的网络平台相对较少,因此设计一个网上花店销售系统具有很大的前景。

本网上花店销售系统旨在为用户提供一个便捷的在线购买鲜花的平台,同时也为花店老板提供一个高效的管理系统。用户可以通过该系统浏览各种鲜花,查看公告,注册登录后进行鲜花选购、生成订单以及查看订单等操作。管理员则可以对系统进行全面的管理,包括鲜花、分类、公告、订单和用户的管理。

1.2 设计目的

传统的实体鲜花销售存在诸多限制,如地域约束、客户范围有限、购买流程繁琐等。本系统的设计目的在于满足用户随时随地在网上挑选购买鲜花的需求,提高花店老板的工作效率,使网上鲜花管理工作系统化、规范化、自动化,提升整个购买鲜花流程的效率,将总体水平提升到一个新的高度。

与传统花店相比,网上花店具有运营成本低、职员人数少、无需大型运营场地、传播信息迅速、容量大、范围广、可交互等优势。此外,网上花店的建立可以更好地满足消费者的需求,为消费者带来方便,促进浏览此网站用户的购买欲,提高销售效率。

网上花店系统为用户提供了完整的网上鲜花订购流程,使用户足不出户即可进行网上购物,为消费者带来了极大的便利。在这个繁忙的社会,人们很少有时间能见面交流感情,在特殊的日子里送给好友一束鲜花是联络感情的很好方式,因此受到广大消费者的欢迎。与此同时,商家也不再需要在商店里被动地等待顾客,完全可以坐在家里就轻松地卖出自己的商品,获得利润。

1.3 系统开发所采用的技术

 1.3.1 开发工具

  1. MyEclipse:作为对Eclipse IDE的扩展,MyEclipse企业级工作平台在数据库和JavaEE的开发、发布、应用程序服务器的整合方面能够极大地提高工作效率。它几乎包括了目前所有主流开源产品的专属Eclipse开发工具,功能丰富,包括完备的编码、调试、测试和发布功能,完整地支持HTML、Struts 2、Spring、JSP、CSS、JavaScript、Servlet、Hibernate、JDBC数据库链接工具等。
  2. Tomcat:Tomcat服务器是一个免费的开放源代码的Web应用服务器,运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是调试和开发JSP程序的第一选择。

1.3.2 开发使用的数据库系统
本系统使用SQL Server 2008作为关系数据库管理系统。SQL Server 2008是微软公司2008年推出的数据库产品,它紧密结合了微软公司的各类主要产品,与Windows操作系统、Office办公软件、Visual Studio开发平台的最新技术进行了衔接。其各项指标在同类产品中堪称优秀,而且图形化的管理界面十分便于学习与使用。SQL Server 2008具有可信任、高效、智能等特点,使得公司可以以很高的安全性、可靠性和可扩展性来运行他们最关键任务的应用程序,降低开发和管理数据基础设施的时间和成本,提供一个全面的平台,可以在用户需要的时候发送观察和信息。
1.3.3 系统环境

  1. 硬件条件:英特尔酷睿2 CPU、1GB内存、20GB以上硬盘的PC机。
  2. 软件条件:Windows 7操作系统。

1.4 系统功能模块

本网上花店销售系统主要分为前台操作和后台管理两部分,

  1. 前台操作
    • 首页(主界面):提供简洁美观的主界面,陈列系统提供的功能,用户和管理员通过选择各个功能来达到自己所需的目的。
    • 鲜花搜索:用户可以通过鲜花搜索直接查询自己想要了解的鲜花。
    • 鲜花分类:用户可以通过鲜花分类查找某一类的鲜花。
    • 花店公告:管理员发布的与网上花店系统相关的公告信息,包括系统的使用或者最新的优惠活动等。用户登录系统后,可以查看公告信息,以此来最快地了解系统。
    • 鲜花浏览:用户可以通过选择该功能看到本系统鲜花的详细介绍。
    • 用户注册:新用户通过填写注册表单,将自己的详细信息输入并提交系统,系统会通过与数据库的连接以及表单限定的格式来检查合法性。注册成功后可以进行订购等其他功能。
    • 用户登录:用户通过输入“用户名”和“密码”进行登录,系统会通过与数据库的连接来检查合法性,如果存在则登录成功继续接下来的功能,如果不存在则返回登录界面。
    • 加入购物车:用户可以通过该功能选择自己要购买的鲜花并放入购物车,在购物车也可以进行数量的修改并且生成订单。但要首先登录才可以实现该功能。
    • 生成订单:用户可以把购物车里的鲜花下订单。
    • 查看订单:用户可以查询自己的订单,但首先必须登录。
    • 修改个人信息:用户可以修改个人资料。
  2. 后台管理
    • 分类管理:管理员可以对系统首页的分类进行增加、查看、修改、删除。
    • 鲜花管理:管理员可以对系统首页的鲜花进行增加、查看、修改、删除。
    • 公告管理:管理员可以对系统首页的公告进行增加、查看、修改、删除。
    • 订单管理:管理员可以对用户的订单进行查看、处理。
    • 用户管理:管理员可以对系统已经注册的用户进行查看、删除。

2 数据库设计

2.1 建立的数据库名称

实际建立的数据库名称“flowershop”;

2.2 所使用的表

1、t_Fenlei分类表

该表存放分类ID及分类名称。t_Fenlei分类表如表5-1所示。

表5-1   t_Fenlei分类表

名称

类型

长度

备注

id

int

11

主键

fname

varchar

255

分类名称

2、t_Product鲜花表

该表存放鲜花信息,主要包括鲜花名、鲜花图片、上架时间、价格、鲜花销量、鲜花描述等信息。分类表和该表相关联,因此表中还包含了分类ID以及分类名。t_Product鲜花表如表5-2所示。

表5-2   t_Product 鲜花表

名称

类型

长度

备注

id

int

11

主键

pname

varchar

255

鲜花名

imgpath

varchar

255

鲜花图片

createtime

varchar

255

上架时间

fenleiid

varchar

255

分类ID,外键

fname

varchar

255

分类名

jiage

double

价格

tuijian

varchar

255

是否推荐

dianjishu

int

11

点击数

xiaoliang

int

11

鲜花销量

miaoshu

text

鲜花描述

3、t_Gonggao公告表

该表存放公告信息,主要包括标题、内容、添加时间。t_Gonggao公告表如表5-3

所示。

表5-3   t_Gonggao 公告表

名称

类型

长度

备注

id

int

11

主键

biaoti

varchar

255

标题

neirong

text

内容

shijian

varchar

255

添加时间

4、t_Gouwuche购物车表

该表存放购物车ID、以及用户ID、鲜花ID、鲜花名、价格、购买数量。t_Gouwuche购物车表如表5-4所示。

表5-4   t_Gouwuche购物车表

名称

类型

长度

备注

id

int

11

主键

userid

int

11

用户ID,外键

pid

int

11

鲜花ID,外键

pname

varchar

255

鲜花名

jiage

double

价格

shuliang

int

11

购买数量

5、t_User用户表

该表中存放用户的基本信息,普通用户和管理员共用此表,主要包括用户ID、用户名、密码、姓名、角色、手机号、地址信息。普通用户和管理员通过角色的值进行区分, 0表示普通用户,1表示系统管理员。t_User用户表如表5-5所示。

表5-5   t_User 用户表

名称

类型

长度

备注

id

int

11

主键

username

varchar

255

用户名

password

varchar

255

密码

xingming

varchar

255

姓名

role

int

11

角色

dianhua

varchar

255

手机号

dizhi

varchar

255

地址

6、t_Dingdan订单表

该表存放订单ID、订单状态、以及关联表里的用户ID、用户姓名等信息。t_Dingdan订单表如表5-6所示。

表5-6   t_Dingdan订单表

名称

类型

长度

备注

id

int

11

主键

status

varchar

255

订单状态

userid

int

11

用户ID 外键

xingming

varchar

255

用户姓名

dianhua

varchar

255

用户手机

dizhi

varchar

255

收货地址

xiangqing

text

订单详情

orderid

varchar

255

订单号

beizhu

varchar

255

备注

shijian

varchar

255

生成时间

zongjia

double

总价

3 网上花店商品销售网站设计与实现

  1. 用户注册模块

该页面对输入的每一个数据都有格式上的要求,用户名不能为空且必须是数字,字母或者下划线,密码不能为空且至少6位,确认密码要和密码一致,姓名,收货地址以及手机号都不能为空,手机号码还要符合正确的格式。当用户进行注册时,页面首先会对输入的数据格式进行检验,若输入错误会有相应的提示。除此之外,当用户输入正确的格式的数据之后,点击了注册按钮,系统会在数据库进行比对,若用户名已经被注册,系统也会弹出相应的提示,若用户名还未注册则将数据插入数据库,提示注册成功并跳转到首页。具体的实现过程是在IndexServlet.java中对注册进行逻辑处理,在UserDao.java中对数据库进行操作。

图4-1 注册页面


 

  1. 用户登录模块

该页面对应代码中的login.jsp,用户名和密码都不能为空,否则页面会进行相应的提示,当输入用户名和密码点击登录之后,系统会在数据库中查找,若有匹配的数据则提示登录成功并跳转到首页,否则提示用户名或密码不正确。具体的实现过程是在IndexServlet.java中对登录进行逻辑处理,在UserDao.java中对数据库进行操作。

图4-2 登录页面

  1. 鲜花列表模块

鲜花列表页面对应代码中的index.jsp,鲜花信息详情页面对应代码中的product.jsp,具体实现方式是当用户点击查看详情时,在IndexServlet.java中用productupdate方法进行具体处理,之后把对象传到product.jsp页面。当用户点击鲜花列表或鲜花信息详情页面的加入购物车时,如果用户已经登录,那么系统跳转到我的购物车页面。否则,系统会提示用户先登录并跳转到登录页面。

    

图4-3  鲜花列表页面


    

  1. 用户购物车模块

我的购物车页面对应代码中的gouwuchelist.jsp,当用户点击鲜花列表或鲜花信息详情页面的加入购物车时,在IndexServlet.java中用gouwucheadd2方法进行添加商品到购物车操作,在GouwucheDao.java里对数据库进行操作,将所选鲜花数据插入数据库。我的购物车页面的变更删除分别用IndexServlet.java的gouwucheupdate2方法和gouwuchedelete方法实现。


图4-5 购物车页面

  1. 用户订单模块

我的订单页面对应代码中的orderlist.jsp,查询订单的操作在indexServlet/orderlist中实现,查看订单详情的操作在indexServlet/dingdanupdate3中实现,其中对数据库的操作在DingdanDao.java中完成。


图4-6 生成订单页面

  1. 鲜花管理功能

管理员通过此功能可以查看、修改、删除已经存在的鲜花,也可以增加新的鲜花。

鲜花管理页面对应代码中的productlist.jsp,添加新商品对应productadd.jsp,上传图片对应productupdate5.jsp,查看和修改分别对应productupdate3.jsp,productupdate.jsp,管理员进行操作时,系统通过在ManageServlet.java中的方法实现,对数据库的操作在ProductDao.java中实现。


图4-7 鲜花管理页面

  1. 订单管理功能

订单管理页面对应代码中的dingdanlist.jsp,查看订单详情对应dingdanupdate3.jsp,管理员进行操作时,系统通过在ManageServlet.java中的方法实现,对数据库的操作在DingdanDao.java中实现。


图4-8订单管理页面

4 课程设计总结

     在本次网上花店销售系统的设计与实现过程中,我收获了许多宝贵的经验和知识。

通过对系统的需求分析、设计和实现,我深入了解了电子商务系统的开发流程和技术要点。在需求分析阶段,我明确了系统需要满足的功能和性能要求,以及用户和管理员的具体需求。这为后续的设计和开发工作提供了重要的指导。

在系统设计阶段,我采用了MVC模式,将系统分为视图、模型和控制器三个部分,使得系统的结构更加清晰,易于维护和扩展。同时,我还对数据库进行了精心设计,确保数据的存储和管理高效可靠。

在系统实现阶段,我使用了JSP、Servlet和JavaBean等技术,实现了系统的各个功能模块。在实现过程中,我遇到了一些技术难题,例如如何实现购物车的功能、如何处理订单等。通过查阅相关资料和不断尝试,我最终解决了这些问题,提高了自己的技术能力。

通过对系统的测试和调试,我确保了系统的稳定性和可靠性。在测试过程中,我发现了一些潜在的问题,并及时进行了修复,提高了系统的质量。

此外,在整个课程设计过程中,我还学到了如何团队合作和沟通。我与同学们进行了充分的交流和讨论,分享了彼此的经验和想法,这对我来说是非常有益的。

总的来说,本次课程设计让我对JavaWeb应用开发有了更深入的理解和认识,提高了我的编程能力和解决问题的能力。同时,我也意识到自己在技术方面还有许多不足之处,需要不断学习和提高。我相信,这次课程设计的经验将对我今后的学习和工作产生积极的影响。

在未来的学习和工作中,我将继续努力学习新的技术和知识,不断提升自己的能力。我希望能够将所学的知识应用到实际项目中,为社会做出更大的贡献。

项目代码

管理员通过此功能可以查看和处理订单。

//订单信息列表
else if("dingdanlist".equals(method)){
    
    //定义跳转的地址
    url = "manageServlet/dingdanlist";
    
    //获取查询的信息
    String status = request.getParameter("status");    
    String orderid = request.getParameter("orderid");  
    
    //组装查询的SQL语句
    StringBuffer sb = new StringBuffer();
    sb.append(" where  ");
    
    if(orderid!=null&&!"".equals(orderid)){
                
       sb.append(" orderid like '%"+orderid+"%' ");
       sb.append(" and ");
       
       request.setAttribute("orderid", orderid);
    }
    
    if(status!=null&&!"".equals(status)){
       
       sb.append(" status like '%"+status+"%' ");
       sb.append(" and ");
       
       request.setAttribute("status", status);
    }
    sb.append(" 1=1 order by id desc ");
    String where = sb.toString();
//更新商品信息操作
else if("productupdate2".equals(method)){
    
    //从JSP获取信息
    String fenleiid = request.getParameter("fenleiid");
    String imgpath = request.getParameter("imgpath");
    String jiage = request.getParameter("jiage");
    String miaoshu = request.getParameter("miaoshu");
    String pname = request.getParameter("pname");
    Fenlei fenlei = fenleiDao.selectBean(" where id= "+fenleiid);
    
    //通过ID获取对象
    String id = request.getParameter("id");
    Product bean = productDao.selectBean(" where id= "+id);
    //更新对象属性
    bean.setFenleiid(fenlei.getId()+"");
    bean.setFname(fenlei.getFname());
    bean.setImgpath(imgpath);
    bean.setJiage(Double.parseDouble(jiage));
    bean.setMiaoshu(miaoshu);
    bean.setPname(pname);
    //更新操作
    productDao.updateBean(bean);
    
    
    writer.print("<script  language='javascript'>alert('操作成功');window.location.href='"+basePath+"manageServlet/productlist'; </script>");
}
//添加商品到购物车操作
else if("gouwucheadd2".equals(method)){

    HttpSession session = request.getSession();
    User user = (User) session.getAttribute("user");
    if (user == null) {
       writer.print("<script  language='javascript'>alert('请先登录');window.location.href='"+basePath+"login.jsp';</script>");
       return  ;
    }
    
    Product pro = productDao.selectBean(" where id= "+request.getParameter("pid"));
    
    Gouwuche bean = gouwucheDao.selectBean(" where userid="+user.getId()+" and pid="+pro.getId()+" ");
    if(bean!=null){
       writer.print("<script  language='javascript'>alert('该商品已经添加到购物车,请勿重复添加');window.location.href='"+basePath+"indexServlet/gouwuchelist';</script>");
       return  ;
    }
    bean = new Gouwuche();
    bean.setJiage(pro.getJiage());
    bean.setPid(pro.getId());
    bean.setPname(pro.getPname());
    bean.setShuliang(1);
    bean.setUserid(user.getId());
    
    gouwucheDao.insertBean(bean);
    
    writer.print("<script  language='javascript'>alert('添加成功');window.location.href='"+basePath+"indexServlet/gouwuchelist';</script>");
    
}
//获取当前的页数
    if(request.getParameter("pagenum")!=null){
       pagenum = Integer.parseInt(request.getParameter("pagenum"));
    }

    //从数据库查询列表信息,带分页功能
    Map<String,List<Fenlei>> map = fenleiDao.getList(pagenum,pagesize,url,where);
    String pagerinfo = map.keySet().iterator().next();
    List<Fenlei> list = map.get(pagerinfo);
    
    //返回给jsp页面的信息
    request.setAttribute("pagerinfo", pagerinfo);
    request.setAttribute("list", list);
    request.setAttribute("biaoti", "分类信息列表");
    request.setAttribute("url", "manageServlet/fenleilist");
    request.setAttribute("url2", "manageServlet/fenlei");
    
    
    
    //定义跳转的地址
    RequestDispatcher dispatcher = request.getRequestDispatcher("/manage/fenlei/fenleilist.jsp");
    //跳转操作
    dispatcher.forward(request, response);
}

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值