javaWeb蛋糕商城(前后台) 2

目录

摘要 1
关键词 1
前言 2
第一章 绪论 3
1.1 选题背景 3
1.2 选题的目的和意义 3
第二章 关键技术介绍 4
2.1 JSP 4
2.2 JDBC 5
2.3 Servlet 5
2.4 MVC模式 5
2.5 Ajax 5
第三章 系统分析及设计 5
3.1 需求分析 5
3.1.1 任务概述 5
3.1.2 功能需求 6
3.1.3 其它需求 6
3.2 可行性分析 5
3.2.1 技术可行性 9
3.2.2 经济可行性 9
3.2.3 操作可行性 9
3.2.4 社会可行性 9
3.3 总体设计 8
3.3.1 设计的基本思想 9
3.3.2 系统的功能模块设计 9
3.4 详细设计 9
3.4.1 系统代码框架 10
3.4.2 模块体系结构 10
3.5 数据库设计 9
3.5.1 E-R图 10
3.5.2 表结构和字段类型 10
第四章 程序设计 14
第五章 环境配置 23
第六章 总结 23

第一章 关键技术介绍

1.1 JSP

JSP是由Sun公司于19999年推出的- 种动态网页标准。利用这一技术可以建立安全、 跨平台的先进动态网页技术。它是从Servlet上分离出来的一小部分, 简化了开发,加强了界面设计。因为当用户对界面风格、内容进行修改时,就需要对代码进行修改并且需要进行重新编译和部署,这样就导致维护的工作量急剧上升。所以推出了JSP。
JSP主要优点如下:

  1. 跨平台新就是可以一次编写各种执行。
  2. 搭配可重复使用的组件。

1.2 JDBC

JDBC是一种用于执行SQL语句的java API,由一组类与接口组成,通过调用这种类和接口所提供地方法,可以使用标准的SQL语言来存取数据库中的数据。

1.3 Servlet

Servlet 是为创建基于 web 的应用程序提供了基于组件、独立于平台的方法,可以不受 CGI 程序的性能限制。Servlet 有权限访问所有的 Java API,包括访问企业级数据库的 JDBC API。

1.4 MVC模式

MVC是一个基本的框架模式,它将应用程序的数据模型层、处理层和视图层分开。MVC的应用程序被分成三个核心部件即模型、视图和控制器。最经典的MVC就是JSP。

1.5 Ajax

Ajax是一个强大的语言集合,将这些语言综合起米就可以创造非常自观的用户界面和客户端交互。可以通过各种基于Ajax的组件提高Web应用程序某些部分的性能且不会走向极端。Ajax同时也适用于建立服务器端链接,以及在不需要刷新浏览器的情况下的数据交互。Ajax应用程序是Web上的,任何人都可以通过连接来访问它。信息随需定制,Web应用程序也可以具有和桌面应用程序一样好的交互性。
第二章 系统分析及设计

二、 需求分析

2.1.1 任务概述

该系统为商家和顾客使用,提供商品在线分享购买的平台,系统将分为用户和管理员两个角色,其中系统用户部分的主要功能包括登录注册,前台商品分页浏览、搜索功能,购物车功能,订单的生成、查看、修改、删除、支付,前台页面的访问权限,管理员部分的功能有登录、商品的分页查看、添加、修改、删除、搜索,订单的查看、搜索,后台页面的访问权限等。

2.1.2 功能需求

 前台功能需求
(1)用户的登录:对已经注册的用户提供登录操作。
(2)用户的注册:针对还未注册的用户完成注册功能的使用,在注册的过程中涉及数据的合法性校验,以及利用ajax完成用户名是否已被注册的异步校验。
(3)商品展示模块:通过分页浏览商品,也可以通过关键词搜索商品。
(4)购物车:用于存放用户的购物内容,用户可根据自己的情况修改自己的购物车。
(5)订单模块:对于已经登录的用户可以对购物车内容进行付款生成订单,可以为自己的订单进行付款。
(6)前台页面的访问权限:对已有账号访问进行权限分类,用户只能进入前台。
系统的前台功能模块图如下:
在这里插入图片描述

 后台功能需求
(1)管理员登录:管理者根据账户和密码进行登录。
(2)商品管理:管理员可以对前台显示的商品进行管理包括分页查看,添加,修改,删除,搜索的功能。
(3)订单管理:管理员可以订单进行查看、删除、发货和搜索。
(4)后台账户管理:管理员可以对后台账户进行增删改查。
(5)用户管理:管理员可以对注册用户进行增删改查。
(6)后台页面的访问权限:对已有账号访问时进行权限分类,管理员只能进入后台。
系统的前台功能模块图如下:
在这里插入图片描述

2.1.3 其它需求

 可用性
产品容易上手,用户操作简单,效率高,产品质量高。
 可维护性
系统的设计要求方便维护,包括硬件的维护,软件的维护和网络的维护。
 安全保密
一个实用的系统同时必须是可靠安全的,既可以保证用户共享资源信息,同时也可以保证关键数据的安全性。

三、可行性分析

2.2.1 技术可行性
本系统采用MVC设计模式,系统设计层次清楚,后台采用MySQL数据库,MySQL小巧高效的特点满足系统的性能要求。本系统采用开源的JAVA开发工具MyEclipse和TomCat服务器进行程序的开发和发布。
2.2.2 经济可行性
在实际的销售运营过程中,产品的宣传受到限制,影响了产品的销售,并且提高了产品的销售成本。本系统完全可以改变这种现状,以少最的时间和资金来使企业与消费者之间的经济活动变得更加灵活、主动。系统中应用的开发工具及技术框架都是免费的,这无疑又压缩了网站的成本,从成本可行性分析来看,该系统充分体现了将产品利益最大化的企业原则。
2.2.3 操作可行性
本系统界面简洁明了,功能清晰,只要用户会一些简单的计算机操作,就可以网上购物,不需要用户具有较高的计算机专业知识,操作方便灵活。而且对于网站基本信息的维护也是十分简单,管理员可以在任何一台可以上网的机器上对网站进行维护,网站的简单易用性充分说明了本系统的操作可行性。

2.2.4 社会可行性
从当前的政策,法律和制度等社会因素分析。
本系统符合以下几点:

  1. 所有技术都是合法的。
  2. 开发不存在知识产权问题。

四、 总体设计

2.3.1 设计的基本思想
该系统采用B/S结构模式,系统的分析设计采用面向对象的技术,使用JSP+JavaBean+Database技术采用MVC模式开发基于WEB的小型网上购物系统。
2.3.2 系统的功能模块设计
在这里插入图片描述

五、 详细设计

2.4.1 系统代码框架

在这里插入图片描述

2.4.2 模块体系结构

在这里插入图片描述

六、数据库设计

在这里插入图片描述

2.5.2表结构和字段类型
表名称:s_admin
字段名称 字段类型 字段长度 是否空 是否主键 备注说明
id int 11 否 是 管理员的id
userName varchar 255 否 否 用户名
password varchar 255 否 否 密码
name varchar 255 否 否 姓名
LastLoginTime datetime 255 否 否 最后登录时间

表名称:s_user
字段名称 字段类型 字段长度 是否空 是否主键 备注说明
userId int 11 否 是 用户的id
userName varchar 20 否 否 用户名
userPassword varchar 20 否 否 密码
name varchar 20 否 否 姓名
sex varchar 2 否 否 性别
age int 5 否 否 年龄
tell varchar 20 否 否 手机号
address varchar 100 否 否 地址
enabled varchar 1 否 否 用户状态

表名称:s_cake
字段名称 字段类型 字段长度 是否空 是否主键 备注说明
cakeId int 11 否 是 商品编号
catalogId int 20 否 否 商品分类id
cakeName varchar 20 否 否 商品名称
price double 20,2 否 否 价格
description text 是 否 描述信息
imgId int 11 否 否 图片id
addTime datetime 否 否 上架时间

表名称:s_catalog
字段名称 字段类型 字段长度 是否空 是否主键 备注说明
catalogId int 11 否 是 商品分类id
catalogName varchar 20 否 否 商品分类名称

表名称:s_order
字段名称 字段类型 字段长度 是否空 是否主键 备注说明
orderId int 11 否 是 订单编号
orderNum varchar 50 否 否 订单号
userId int 11 否 否 用户的id
orderDate varchar 20 否 否 订单日期
money double 10,2 否 否 订单金额
orderStatus int 2 否 否 订单状态

表名称:s_orderitem
字段名称 字段类型 字段长度 是否空 是否主键 备注说明
itemId int 11 否 是 订单项编号
cakeId int 11 否 否 商品编号
orderId int 11 否 否 订单编号
quantity int 11 否 否 数量

表名称:s_uploadimg
字段名称 字段类型 字段长度 是否空 是否主键 备注说明
imgId int 11 否 是 图片id
imgName varchar 50 否 否 图片名称
imgSrc varchar 255 否 否 图片路径
imgType varchar 20 否 否 图片类型

七、程序设计

3.1 前台功能设计

3.1.1主界面

在这里插入图片描述

3.1.2登录界面

在这里插入图片描述

主要代码://登录验证
$(function(){var form=$("#loginForm").Validform({tiptype:3});form.addRule([{ele:"#l_userName",datatype:"*",nullmsg:"*请输入用户名!",errormsg:"*用户名输入不正确,请重新输入!" },{ ele:"#l_passWord",datatype:"*",nullmsg:"*请输入密码!",errormsg:"*密码输入不正确,请重新输入"},{ ele:"#ck_code",datatype:"*",ajaxurl:"CodeServlet?action=ckCode",nullmsg:"*请输入验证码!",errormsg:"*验证码输入不正确"}	]);});

3.1.3 注册界面

在这里插入图片描述

主要代码://注册表单验证
$(function(){var form=$("#regForm").Validform({tiptype:2,//validform初始化});form.addRule([{ele:"#userName",datatype:"*2-15",ajaxurl:"",nullmsg:"*请输入用户名!",errormsg:"*用户名为2-15个字符,请重新输入!" },{ ele:"#passWord",datatype:"*4-8",nullmsg:"*请输入密码!",errormsg:"*密码为4-8位字符,请重新输入"},{ele:"#c_passWord",datatype:"*",recheck:"passWord",mullmsg:"*请输入确认密码!",errormsg:"*两次输入的密码不一致,请重新输入!"},	{ele:"#name",datatype:"*2-15",nullmsg:"请输入姓名!",errormsg:"姓名为2-15个字符,请重新输入!"},{ele:"#sex",datatype:"*",nullmsg:"请选择性别!",errormsg:"请选择性别!"},{ele:"#age", datatype:"n1-2",nullmsg:"请输入年龄",errormsg:"年龄为1-2位数字,请重新输入!"},{ele:"#tell", 
datatype:"/^13[0-9]{9}$|17[0-9]{9}$|14[0-9]{9}&|15[0-9]{9}$|18[0-9]{9}$/",nullmsg:"请输入电话号码",errormsg:"电话号码输入不正确,请重新输入!"},{ele:"#address", datatype:"*",nullmsg:"请输入地址!",errormsg:"请输入地址!"} ]);});

3.1.4商品详情

在这里插入图片描述

主要代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {int cakeId = Integer.parseInt(request.getParameter("cakeId"));CakeDao bd = new CakeDaoImpl();request.setAttribute("cakeInfo",bd.findCakeById(cakeId));request.getRequestDispatcher(DETAIL_PATH).forward(request, response);}
3.1.5购物车主要代码://ajax提交处理function changeQ(obj,id,val){$.ajax({url:"CartServlet?action=changeIn",dataType:"json",async:true,data:{"cakeId":id,"quantity":val},type:"POST",success:function(data){$(obj).parent().parent().parent().find(".price i").html(data.subtotal);				$(obj).parent().find("input").val(data.quantity);$("#totPrice i").html(data.totPrice);$("#cart .num").html(data.totQuan);}	}); 	}

3.1.5购物车

在这里插入图片描述

3.1.6 提交订单

在这里插入图片描述
在这里插入图片描述

主要代码:

//去结算处理$("#tosettle").click(function(){$.get("UserServlet?action=landstatus",function(data){if(data.status=="y"){window.location.href="${basePath}jsp/cake/conorder.jsp";}else{$("#myModal").modal("show");}},"json")return;	});

3.1.7 查看订单

在这里插入图片描述

主要代码:

public List<OrderItem> findItemByOrderId(int orderId) {List<OrderItem> lo=new ArrayList<>();String sql="select * from s_orderItem where orderId=?";List<Map<String, Object>> query = DbUtil.executeQuery(sql, orderId);if(query.size()>0) {for(Map<String,Object> map:query) {OrderItem oItem=new OrderItem(map);lo.add(oItem);}  }return lo;} }

3.1.8 商品分类、检索

在这里插入图片描述

主要代码:

public List<Catalog> catalogList(PageBean pb) {List<Catalog> list=new ArrayList<Catalog>();String sql = "select * from s_catalog limit ?,?";// 查询的分页结果集List<Map<String, Object>> lm = DbUtil.executeQuery(sql, (pb.getCurPage() - 1) * pb.getMaxSize(),pb.getMaxSize());if(lm.size()>0){for(Map<String,Object> map:lm){Catalog catalog=new Catalog(map);list.add(catalog);}	}	return list; }

3.2 后台功能设计

3.2.1 后台登录页面

在这里插入图片描述

主要代码:

List<String> list=new ArrayList<String>();if(userName==null) {list.add("用户名不能为空");	}if(passWord==null) {list.add("密码不能为空");}if(list.size()==0) {if(ud.userLogin(admin)) {			request.getSession().setAttribute("adminUser",admin );response.sendRedirect(mainPath);return;}else {list.add("用户名或密码错误!请重新输入");	}}

3.2.2 用户管理页面

在这里插入图片描述

主要代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String action=request.getParameter("action");switch(action){case "list":adminList(request,response);break;case "add":adminAdd(request,response);break;case "update":adminUpdate(request,response);break;case "edit":adminEdit(request,response);break;case "del":adminDel(request,response);break;case "batDel":adminBatDel(request,response);break;case "find":adminFind(request,response);break;}
}	

3.2.3 商品管理页面

在这里插入图片描述

主要代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String action = request.getParameter("action");switch (action) {case "list":cakeList(request, response);break;case "detail":cakeDetail(request, response);break;case "addReq":cakeAddReq(request, response);break;case "add":cakeAdd(request, response);break;case "edit":cakeEdit(request, response);break;case "update":cakeUpdate(request,response);break;case "find":cakeFind(request, response);break;case "updateImg":updateImg(request,response);break;case "del":cakeDel(request,response);break;case "batDel":cakeBatDel(request,response);break;case "seach":seachCake(request,response);}}

3.2.4 订单管理页面

在这里插入图片描述

主要代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String action=request.getParameter("action");switch(action) {case "list":orderList(request,response);break;case "detail":orderDetail(request,response);break;case "processing":orderProcessing(request,response);case "ship":orderShip(request,response);case "seach":seachOrder(request,response);case "seach1":seachOrder1(request,response);	case "delete":deleteOrder(request,response);	}}

八、环境配置

 运行环境:win
 数据库:MySQL
 开发工具包:jdk1.8
 浏览器:Google Chrome、IE、Firefox等
 网页界面设计:Bootstrap
 服务器:Tomcat 8.5
 开发环境:Eclipse

九、联系与交流

扣:969060742 完整代码 报告 程序资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/582180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

射频PCB电路布局设计及布线注意事项

在电子产品和设备中&#xff0c;电路板是一个不可缺少的部件&#xff0c;它起着电路系统的电气和机械等的连接作用。如何将电路中的元器件按照一定的要求&#xff0c;在PCB上排列组合起来&#xff0c;是PCB设计师的主要任务之一。布局设计不是简单的将元器件在PCB上排列起来&am…

探究element-ui 2.15.8中<el-input>的keydown事件无效问题

一、问题描述 今天看到一个问题&#xff0c;在用Vue2element-ui 2.15.8开发时&#xff0c;使用input组件绑定keydown事件没有任何效果。 <template><div id"app"><el-input v-model"content" placeholder"请输入" keydown&quo…

【中小型企业网络实战案例 四】配置OSPF动态路由协议

【中小型企业网络实战案例 三】配置DHCP动态分配地址-CSDN博客 【中小型企业网络实战案例 二】配置网络互连互通-CSDN博客 【中小型企业网络实战案例 一】规划、需求和基本配置_大小企业网络配置实例-CSDN博客 配置OSPF 由于内网互联使用的是静态路由&#xff0c;在链路出…

如何快速下载huggingface模型

Huggingface国内开源镜像 https://hf-mirror.com/ 上面总结了多种从Huggingface上下载模型的方法&#xff0c;如下图。 方法一&#xff1a;使用huggingface官网提供的huggingface-cli工具 官方详解地址https://huggingface.co/docs/huggingface_hub/guides/download 1. 安装…

Arduino中手写脉冲控制步进电机-2

目录 1、前言 2、时间-位移关系计算 3、Matlab计算时间和位置数据 (1)Matlab程序 &#xff08;2&#xff09;Arduino程序 4、Matlab生成Arduino电机正反转程序语句 &#xff08;1&#xff09;Arduino程序 &#xff08;2&#xff09;Matlab 命令行方式生成Arduino步进电…

【Unity自制手册】基于Unity中物体移动相关方法和API集锦(动图详解)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

IPEmotion数据采集软件功能介绍

IPEmotion作为IPETRONIK的软件产品&#xff0c;主要应用于车辆测试和不同的实验室测试系统&#xff0c;能够满足各种测量需求。通过专业化的数据采集软件IPEmotion&#xff0c;我们可实现完整的数据采集过程&#xff0c;包括&#xff1a;配置数据采集设备&#xff1b;使用不同的…

SD-WAN企业组网的核心要点

随着企业网络需求的不断演进和全球化业务的扩张&#xff0c;SD-WAN&#xff08;软件定义广域网&#xff09;作为一种先进的网络架构技术&#xff0c;逐渐成为企业组网的首选方案。SD-WAN通过提供更灵活、高效和安全的网络连接&#xff0c;帮助企业轻松应对不同地区和业务需求。…

计算机毕业设计---ssm+mysql+jsp实现的校园二手市场交易平台源码

项目介绍 本系统主要实现的功能有&#xff1a; 前台&#xff1a;&#xff08;1&#xff09;二手物品信息查看、搜索。 &#xff08;2&#xff09;学生注册登录、个人信息修改。 &#xff08;3&#xff09;二手物品信息发布、编辑。 &#xff08;4&#xff09;二手物品评论、回…

【Unity细节】为什么按下移动键之后,物体还是会滑行一段距离(阻力都无穷大了)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 &#x1f636;‍&#x1f32b;️收录于专栏&#xff1a;unity细节和bug &#x1f636;‍&#x1f32b;️优质专栏 ⭐【…

内存满了无法开机(Ubuntu)

文章目录 在开机界面长按“shift”进入进入shell命令模式详细步骤选择Recovery Menu删除不需要的文件 在开机界面长按“shift”进入 进入shell命令模式详细步骤 选择Recovery Menu 删除不需要的文件 自己看着办吧

STM32 IIC开发学习

1IIC总线时序图 ① 起始信号 当 SCL 为高电平期间&#xff0c;SDA 由高到低的跳变。起始信号是一种电平跳变时序信号&#xff0c;而不是 一个电平信号。该信号由主机发出&#xff0c;在起始信号产生后&#xff0c;总线就会处于被占用状态&#xff0c;准备数据 传输。 ② 停止信…

Android 8.1 设置USB传输文件模式(MTP)

项目需求&#xff0c;需要在电脑端adb发送通知手机端接收指令&#xff0c;将USB的仅充电模式更改成传输文件&#xff08;MTP&#xff09;模式&#xff0c;便捷用户在我的电脑里操作内存文件&#xff0c;下面是我们的常见的修改方式 1、android12以下、android21以上是这种方式…

腾讯云轻量应用主机与云服务器功能、性能区别对比总结

腾讯云轻量服务器和云服务器CVM该怎么选&#xff1f;不差钱选云服务器CVM&#xff0c;追求性价比选择轻量应用服务器&#xff0c;轻量真优惠呀&#xff0c;活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三…

事务的简介

一、什么是事务 事务是一组数据库的操作序列&#xff0c;包含一个或多个sql操作命令&#xff08;增删改&#xff09;&#xff0c;事务将所有的操作命令看做一个不可分割的整体&#xff0c;向数据库系统提交或撤销操作&#xff0c;所有操作要么执行要么不执行。 ●事务是一种机…

VR全景图片制作时有哪些技巧,VR全景图片能带来哪些好处

引言&#xff1a; VR全景图片是通过虚拟现实技术制作出的具有沉浸感的图片&#xff0c;能够提供给用户一种身临其境的感觉。在宣传方面&#xff0c;它有着独特的优势和潜力&#xff0c;能够帮助吸引更多的潜在客户&#xff0c;那么VR全景图片制作时有哪些技巧&#xff0c;VR全…

进程间通信-匿名管道

一 什么是通信 就是进程间的数据交换&#xff0c;进程间由于具有独立性&#xff0c;需要操作系统提供能让进程间交换信息&#xff0c;也就是数据的方法。 二 如何做到 让不同进程看到同一份资源(这不是很简单的事吗)&#xff0c;我在父进程定义一个变量&#xff0c;子进程不就…

庙算兵棋推演AI开发初探(2-编写策略(上))

开始研读step()函数的编写方法。 这个是图灵网提供了一些基础的ai代码下载&#xff08;浏览需要注册&#xff0c;下载需要审批&#xff09;。 AI开发中心-人机对抗智能 (ia.ac.cn)http://turingai.ia.ac.cn/ai_center/show 一、代码研读(BaseAgent类) 1.step函数 这段代码定…

丰田「退股」电装,传统汽车供应链体系走到十字路口

就在中国市场热衷于车企与零部件厂商的合纵连横之际&#xff0c;本周&#xff0c;传统汽车巨头丰田公司宣布&#xff0c;将出售部分电装&#xff08;Denso&#xff09;公司股份&#xff0c;资金用于投入电动化、智能驾驶等新技术研发。 按照计划&#xff0c;丰田汽车拟出售超过…

私有部署ELK,搭建自己的日志中心(二)-- filebeat的介绍与安装

一、背景 在搭建ELK系统之前&#xff0c;你有必要去了解下&#xff0c;为何大家在agent端普遍青睐filebeat&#xff0c;而把logstash放置于更加靠后端。 轻量级的filebeat&#xff0c;作为agent角色&#xff0c;是安装在每台虚拟机上。 filebeat的学习分为两大部分&#xff1…