大家好,我是全微毕设团队的创始人,本团队擅长JAVA(SSM,SSH,SPRINGBOOT)、PYTHON、PHP、C#、安卓等多项技术。
今天将为大家分析一个鲜花销售管理系统(花店是指从事以花为主的多元化经营,经营范围包括:鲜花及人造花的零售、批发业务;经营花店所需的用品、用具;礼仪策划庆典服务等的商店。
花店具备了花艺的自行设计、生产、来料加工等技术和设备条件;可提供各色品种鲜花。),该项目使用框架为SSM(MYECLIPSE),选用开发工具为MYECLIPSE。鲜花销售管理系统为一个 后台项目。
为了完成该系统,我们首先需要对该系统进行需求分析。一个鲜花销售管理系统应包含用户角色有管理员、客户。为了能让用户顺利登陆系统完成相关操作,需要为每种登陆角色设置账户和密码字段。
为了完成系统的功能需要为鲜花、客户设置购物车表,记录购物车信息。在购物车表中定义了两者的关联关系,其中购物车的鲜花与鲜花的mingcheng字段对应、购物车的鲜花id与鲜花的id字段对应、购物车的客户与客户的mingzi字段对应、购物车的客户id与客户的id字段对应
。为了完成系统的功能需要为客户、鲜花设置订单表,记录订单信息。在订单表中定义了两者的关联关系,其中订单的客户与客户的mingzi字段对应、订单的客户id与客户的id字段对应、订单的鲜花与鲜花的mingcheng字段对应、订单的鲜花id与鲜花的id字段对应
。
总结得出该系统所有数据为:管理员(admin)、鲜花(xianhua)、客户(kehu)、购物车(gouwuche)、订单(dingdan)
管理员表
字段名 | 类型 | 属性 | 描述
id | int(11) | PRIMARY KEY | 管理员id
username | varchar(255) | | 账号
password | varchar(255) | | 密码
鲜花表
字段名 | 类型 | 属性 | 描述
id | int(11) | PRIMARY KEY | 鲜花id
mingcheng | varchar(255) | | 名称
tupian | varchar(255) | | 图片
jiage | varchar(255) | | 价格
huayu | varchar(255) | | 花语
shuoming | varchar(255) | | 说明
客户表
字段名 | 类型 | 属性 | 描述
id | int(11) | PRIMARY KEY | 客户id
mingzi | varchar(255) | | 名字
username | varchar(255) | | 账号
password | varchar(255) | | 密码
yue | varchar(255) | | 余额
购物车表
字段名 | 类型 | 属性 | 描述
id | int(11) | PRIMARY KEY | 购物车id
xianhua | varchar(255) | | 鲜花
xianhuaid | varchar(255) | | 鲜花id
kehu | varchar(255) | | 客户
kehuid | varchar(255) | | 客户id
shuliang | varchar(255) | | 数量
zongjia | varchar(255) | | 总价
订单表
字段名 | 类型 | 属性 | 描述
id | int(11) | PRIMARY KEY | 订单id
kehu | varchar(255) | | 客户
kehuid | varchar(255) | | 客户id
xianhua | varchar(255) | | 鲜花
xianhuaid | varchar(255) | | 鲜花id
jiage | varchar(255) | | 价格
sql建表语句
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- ----------------------------
-- Table structure for ggxianhuaxiaoshou
-- ----------------------------
DROP TABLE IF EXISTS `t_admin`;
CREATE TABLE `t_admin` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '管理员id',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='管理员';
-- ----------------------------
DROP TABLE IF EXISTS `t_xianhua`;
CREATE TABLE `t_xianhua` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '鲜花id',`mingcheng` VARCHAR(255) DEFAULT NULL COMMENT '名称',`tupian` VARCHAR(255) DEFAULT NULL COMMENT '图片',`jiage` VARCHAR(255) DEFAULT NULL COMMENT '价格',`huayu` VARCHAR(255) DEFAULT NULL COMMENT '花语',`shuoming` VARCHAR(5000) DEFAULT NULL COMMENT '说明',PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='鲜花';
-- ----------------------------
DROP TABLE IF EXISTS `t_kehu`;
CREATE TABLE `t_kehu` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '客户id',`mingzi` VARCHAR(255) DEFAULT NULL COMMENT '名字',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',`yue` VARCHAR(255) DEFAULT NULL COMMENT '余额',PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='客户';
-- ----------------------------
DROP TABLE IF EXISTS `t_gouwuche`;
CREATE TABLE `t_gouwuche` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '购物车id',`xianhua` VARCHAR(255) DEFAULT NULL COMMENT '鲜花',`xianhuaid` INT(11) DEFAULT NULL COMMENT '鲜花id',`kehu` VARCHAR(255) DEFAULT NULL COMMENT '客户',`kehuid` INT(11) DEFAULT NULL COMMENT '客户id',`shuliang` VARCHAR(255) DEFAULT NULL COMMENT '数量',`zongjia` VARCHAR(255) DEFAULT NULL COMMENT '总价',PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='购物车';
-- ----------------------------
DROP TABLE IF EXISTS `t_dingdan`;
CREATE TABLE `t_dingdan` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '订单id',`kehu` VARCHAR(255) DEFAULT NULL COMMENT '客户',`kehuid` INT(11) DEFAULT NULL COMMENT '客户id',`xianhua` VARCHAR(255) DEFAULT NULL COMMENT '鲜花',`xianhuaid` INT(11) DEFAULT NULL COMMENT '鲜花id',`jiage` VARCHAR(255) DEFAULT NULL COMMENT '价格',PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='订单';
订单处理类
package org.mypro.front;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import javax.jms.Session;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.mypro.dao.DingdanMapper;
import org.mypro.entity.Dingdan;
import org.mypro.entity.DingdanExample;
import org.mypro.entity.Kehu;
import org.mypro.entity.KehuExample;
import org.mypro.dao.KehuMapper;
import org.mypro.entity.Xianhua;
import org.mypro.entity.XianhuaExample;
import org.mypro.dao.XianhuaMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
@Controller
@RequestMapping(value = "/")
public class DingdanController {
private static final Log logger = LogFactory.getLog(DingdanController.class);
@Autowired
private DingdanMapper dingdandao; // 定义kehudao参数
@Autowired
private KehuMapper kehudao; // 定义xianhuadao参数
@Autowired
private XianhuaMapper xianhuadao;
//定义方法tianjiadingdan,响应页面tianjiadingdan请求
@RequestMapping(value = "tianjiadingdan")
public String tianjiadingdan(HttpServletRequest request, HttpServletResponse response,HttpSession session,String backurl) {
logger.debug("DingdanController.tianjiadingdan ......");
// 定义 example1为 KehuExample的实例
KehuExample example1 = new KehuExample();
List kehuall = kehudao.selectByExample(example1);
request.setAttribute("kehuall", kehuall);
// 定义 example2为 XianhuaExample的实例
XianhuaExample example2 = new XianhuaExample();
List xianhuaall = xianhuadao.selectByExample(example2);
request.setAttribute("xianhuaall", xianhuaall);
if(backurl != null && backurl.indexOf("tianjiadingdan.action") == -1){
return "forward:/" + backurl; }
return "tianjiadingdan";
}
@RequestMapping(value = "tianjiadingdanact")
public String tianjiadingdanact(HttpServletRequest request,HttpSession session, HttpServletResponse response,Dingdan dingdan,String backurl) throws IOException {
logger.debug("DingdanController.tianjiadingdanact ......");
dingdandao.insert(dingdan);
request.setAttribute("message", "添加订单成功");
if(backurl != null && backurl.indexOf("tianjiadingdanact.action") == -1){
return "forward:/" + backurl; }
//返回tianjiadingdan方法
return "forward:/tianjiadingdan.action";
}
//定义dingdanguanli方法响应页面请求
@RequestMapping(value = "dingdanguanli")
public String dingdanguanli(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) {
logger.debug("DingdanController.dingdanguanli ......");
DingdanExample example = new DingdanExample();
List dingdanall = dingdandao.selectByExample(example);
request.setAttribute("dingdanall", dingdanall);
if(backurl != null && backurl.indexOf("dingdanguanli.action") == -1){
return "forward:/" + backurl; }
return "dingdanguanli";
}
// 定义 dingdanchakan方法
@RequestMapping(value = "dingdanchakan")
public String dingdanchakan(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) {
logger.debug("DingdanController.dingdanchakan ......");
DingdanExample example = new DingdanExample();
List dingdanall = dingdandao.selectByExample(example);
request.setAttribute("dingdanall", dingdanall);
if(backurl != null && backurl.indexOf("dingdanchakan.action") == -1){
return "forward:/" + backurl; }
return "dingdanchakan";
}
// 定义 xiugaidingdan方法
@RequestMapping(value = "xiugaidingdan")
public String xiugaidingdan(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){
logger.debug("DingdanController.xiugaidingdan ......");
Dingdan dingdan = dingdandao.selectByPrimaryKey(id);
// 定义 example1为 KehuExample的实例
KehuExample example1 = new KehuExample();
List kehuall = kehudao.selectByExample(example1);
request.setAttribute("kehuall", kehuall);
// 定义 example2为 XianhuaExample的实例
XianhuaExample example2 = new XianhuaExample();
List xianhuaall = xianhuadao.selectByExample(example2);
request.setAttribute("xianhuaall", xianhuaall);
request.setAttribute("dingdan", dingdan);
if(backurl != null && backurl.indexOf("xiugaidingdan.action") == -1){
return "forward:/" + backurl; }
return "xiugaidingdan";
}
// 定义xiugaidingdanact处理订单修改
@RequestMapping(value = "xiugaidingdanact")
public String xiugaidingdanact(HttpServletRequest request, HttpServletResponse response,Dingdan dingdan,HttpSession session,String backurl) throws IOException {
logger.debug("DingdanController.xiugaidingdanact ......");
dingdandao.updateByPrimaryKeySelective(dingdan);
request.setAttribute("message", "修改订单信息成功");
if(backurl != null && backurl.indexOf("xiugaidingdanact.action") == -1){
return "forward:/" + backurl; }
return "forward:/dingdanguanli.action";
}
// 定义shanchudingdan,处理删除订单
@RequestMapping(value = "shanchudingdan")
public String shanchudingdan(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){
logger.debug("DingdanController.shanchudingdan ......");
dingdandao.deleteByPrimaryKey(id);
request.setAttribute("message", "删除订单成功");
if(backurl != null && backurl.indexOf("shanchudingdan.action") == -1){
return "forward:/" + backurl; }
return "forward:/dingdanguanli.action";
}
// 定义sousuodingdan方法,处理搜索操作
@RequestMapping(value = "sousuodingdan")
public String sousuodingdan(HttpServletRequest request, HttpServletResponse response,HttpSession session,String search,String backurl) {
logger.debug("DingdanController.sousuodingdan ......");
DingdanExample example = new DingdanExample();
DingdanExample.Criteria criteria = example.createCriteria();
if(search != null){
criteria.andKehuLike("%" + search + "%");
}
List dingdanall = dingdandao.selectByExample(example);
request.setAttribute("dingdanall", dingdanall);
if(backurl != null && backurl.indexOf("sousuodingdan.action") == -1){
return "forward:/" + backurl; }
return "sousuodingdan";
}
// 定义DingdanpinglunMapper
@RequestMapping(value = "dingdanxiangqing")
public String dingdanxiangqing(HttpServletRequest request,HttpSession session, HttpServletResponse response,int id,String backurl) {
logger.debug("DingdanController.dingdanxiangqing ......");
Dingdan dingdan = dingdandao.selectByPrimaryKey(id);
request.setAttribute("dingdan", dingdan);
if(backurl != null && backurl.indexOf("dingdanxiangqing.action") == -1){
return "forward:/" + backurl; }
return "dingdanxiangqing";
}
// 上传文件图片等
public String uploadUtile(MultipartFile file, HttpServletRequest request) throws IOException {
// 根据当前时间生成时间字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");
String res = sdf.format(new Date());
// uploads文件夹位置
String rootPath = request.getSession().getServletContext().getRealPath("resource/uploads/");
// 原始名称
String originalFileName = file.getOriginalFilename();
// 新文件名
String newFileName = "sliver" + res + originalFileName.substring(originalFileName.lastIndexOf("."));
// 创建年月文件夹
Calendar date = Calendar.getInstance();
File dateDirs = new File(date.get(Calendar.YEAR) + File.separator + (date.get(Calendar.MONTH)+1));
// 新文件
File newFile = new File(rootPath + File.separator + dateDirs + File.separator + newFileName);
// 判断目标文件所在目录是否存在
if( !newFile.getParentFile().exists()) {
// 如果目标文件所在的目录不存在,则创建父目录
newFile.getParentFile().mkdirs();
}
System.out.println(newFile);
// 将内存中的数据写入磁盘
file.transferTo(newFile);
// 完整的url
String fileUrl = date.get(Calendar.YEAR) + "/" + (date.get(Calendar.MONTH)+1) + "/" + newFileName;
return fileUrl;
}}
如需源码,可以留下邮箱