基于BS结构的工艺品销售系统项目,源码分享

今日思考,完成一个基于BS结构的工艺品销售系统项目,需要实现哪些功能?
此类项目常见描述如下:
随着计算机和网络等技术的不断发展,以及电子商务的广泛应用,企业能够在更大的范围内建立跨地域甚至全球化的市场。工艺品行业供应链的特点有:以销售/品牌企业为核心;市场需求变化很快;面向订单生产;供应链周期短;产品信息管理复杂;全球化的生态系统。面对市场日益加剧的竞争环境,我国工艺品企业加快发展电子商务和信息化步伐是必然走势,这将有利于企业增加外贸渠道,降低交易成本,简化商务过程和缩短生产周期。
SSM(MYECLIPSE)框架及其适合本类项目,使用MVC的思想可以极大程度减少重复工作量。和SSM(MYECLIPSE)框架最配的开发工具是MYECLIPSE。MYECLIPSE集成了大量插件,可以更好的使用SSM(MYECLIPSE)进行项目的开发,使得项目开发时事半功倍。
通过对基于BS结构的工艺品销售系统系统的仔细分析,可以得出基于BS结构的工艺品销售系统系统是一个 后台项目。
在这样一个项目中,系统的登录角色是必不可少的,对每个登录角色设置账号、密码。以确保系统可以正常登录使用。SSM(MYECLIPSE)项目中包含的登录角色有管理员。
为了完成系统的功能需要为产品设置订单表,记录订单信息。在订单表中定义了两者的关联关系,其中订单的名字与产品的mingzi字段对应、订单的价格与产品的jiage字段对应

总结得出该系统所有数据为:管理员(admin)、用户(yonghu)、产品(chanpin)、订单(dingdan)、运输(yunshu)

管理员表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 管理员id
username | VARCHAR(255) | | 账号
password | VARCHAR(255) | | 密码
quanxian | VARCHAR(255) | | 权限

用户表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 用户id
xingming | VARCHAR(255) | | 姓名
nianling | VARCHAR(255) | | 年龄
xingbie | VARCHAR(255) | | 性别
username | VARCHAR(255) | | 账号
password | VARCHAR(255) | | 密码

产品表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 产品id
zhonglei | VARCHAR(255) | | 种类
guige | VARCHAR(255) | | 规格
jiage | VARCHAR(255) | | 价格
shuliang | VARCHAR(255) | | 数量
mingzi | VARCHAR(255) | | 名字
jieshao | VARCHAR(255) | | 介绍

订单表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 订单id
mingzi | VARCHAR(255) | | 名字
jiage | VARCHAR(255) | | 价格
shuliang | VARCHAR(255) | | 数量
dizhi | VARCHAR(255) | | 地址
xingming | VARCHAR(255) | | 姓名
lianxifangshi | VARCHAR(255) | | 联系方式

运输表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 运输id
shifadi | VARCHAR(255) | | 始发地
tujing | VARCHAR(255) | | 途径
shijian | VARCHAR(255) | | 时间
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.ChanpinMapper;

import org.mypro.entity.Chanpin;

import org.mypro.entity.ChanpinExample;

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 ChanpinController {

private static final Log logger = LogFactory.getLog(ChanpinController.class);

@Autowired
private ChanpinMapper chanpindao;

//定义方法tianjiachanpin,响应页面tianjiachanpin请求

@RequestMapping(value = "tianjiachanpin")

public String tianjiachanpin(HttpServletRequest request, HttpServletResponse response,HttpSession session,String backurl) {

logger.debug("ChanpinController.tianjiachanpin ......");

if(backurl != null && backurl.indexOf("tianjiachanpin.action") == -1){

return "forward:/" + backurl; }

return "tianjiachanpin";

}

@RequestMapping(value = "tianjiachanpinact")

public String tianjiachanpinact(HttpServletRequest request,HttpSession session, HttpServletResponse response,Chanpin chanpin,String backurl) throws IOException {

logger.debug("ChanpinController.tianjiachanpinact ......");

chanpindao.insert(chanpin);

request.setAttribute("message", "添加产品成功");

if(backurl != null && backurl.indexOf("tianjiachanpinact.action") == -1){

return "forward:/" + backurl; }

//返回tianjiachanpin方法

return "forward:/tianjiachanpin.action";

}

//定义chanpinguanli方法响应页面请求

@RequestMapping(value = "chanpinguanli")

public String chanpinguanli(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) {

logger.debug("ChanpinController.chanpinguanli ......");

ChanpinExample example = new ChanpinExample();

List chanpinall = chanpindao.selectByExample(example);

request.setAttribute("chanpinall", chanpinall);

if(backurl != null && backurl.indexOf("chanpinguanli.action") == -1){

return "forward:/" + backurl; }

return "chanpinguanli";

}

// 定义 chanpinchakan方法

@RequestMapping(value = "chanpinchakan")

public String chanpinchakan(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) {

logger.debug("ChanpinController.chanpinchakan ......");

ChanpinExample example = new ChanpinExample();

List chanpinall = chanpindao.selectByExample(example);

request.setAttribute("chanpinall", chanpinall);

if(backurl != null && backurl.indexOf("chanpinchakan.action") == -1){

return "forward:/" + backurl; }

return "chanpinchakan";

}

// 定义 xiugaichanpin方法

@RequestMapping(value = "xiugaichanpin")

public String xiugaichanpin(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){

logger.debug("ChanpinController.xiugaichanpin ......");

Chanpin chanpin = chanpindao.selectByPrimaryKey(id);

request.setAttribute("chanpin", chanpin);

if(backurl != null && backurl.indexOf("xiugaichanpin.action") == -1){

return "forward:/" + backurl; }

return "xiugaichanpin";

}

// 定义xiugaichanpinact处理产品修改

@RequestMapping(value = "xiugaichanpinact")

public String xiugaichanpinact(HttpServletRequest request, HttpServletResponse response,Chanpin chanpin,HttpSession session,String backurl) throws IOException {

logger.debug("ChanpinController.xiugaichanpinact ......");

chanpindao.updateByPrimaryKeySelective(chanpin);

request.setAttribute("message", "修改产品信息成功");

if(backurl != null && backurl.indexOf("xiugaichanpinact.action") == -1){

return "forward:/" + backurl; }

return "forward:/chanpinguanli.action";

}

// 定义shanchuchanpin,处理删除产品

@RequestMapping(value = "shanchuchanpin")

public String shanchuchanpin(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){

logger.debug("ChanpinController.shanchuchanpin ......");

chanpindao.deleteByPrimaryKey(id);

request.setAttribute("message", "删除产品成功");

if(backurl != null && backurl.indexOf("shanchuchanpin.action") == -1){

return "forward:/" + backurl; }

return "forward:/chanpinguanli.action";

}

// 定义sousuochanpin方法,处理搜索操作

@RequestMapping(value = "sousuochanpin")

public String sousuochanpin(HttpServletRequest request, HttpServletResponse response,HttpSession session,String search,String backurl) {

logger.debug("ChanpinController.sousuochanpin ......");

ChanpinExample example = new ChanpinExample();

ChanpinExample.Criteria criteria = example.createCriteria();

if(search != null){

criteria.andZhongleiLike("%" + search + "%");

}

List chanpinall = chanpindao.selectByExample(example);

request.setAttribute("chanpinall", chanpinall);

if(backurl != null && backurl.indexOf("sousuochanpin.action") == -1){

return "forward:/" + backurl; }

return "sousuochanpin";

}

// 定义ChanpinpinglunMapper@RequestMapping

(value = "chanpinxiangqing")

public String chanpinxiangqing(HttpServletRequest request,HttpSession session, HttpServletResponse response,int id,String backurl) {logger.

debug("ChanpinController.chanpinxiangqing ......");Chanpin chanpin 

= chanpindao.selectByPrimaryKey(id);request.

setAttribute("chanpin", chanpin);

if(backurl != null && backurl.indexOf("chanpinxiangqing.action") == -1){

return "forward:/" + backurl; }

return "chanpinxiangqing";

}

// 上传文件图片等

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;

}}

查询运输模块:

在浏览器中进入运输查询页面时,此时浏览器的地址栏为yunshuguanli.action,该地址将响应yunshuController类中的yunshuguanli,在该方法中,通过selectByexample方法获取所有的运输信息,并将该信息保存到request中,在页面进行循环展示。该部分核心代码如下:

生成运输样例类,通过example定义查询条件 YunshuExample example = new YunshuExample();

通过yunshudao的selectByExample方法查询出所有的运输信息 List yunshuall = yunshudao.selectByExample(example);

将运输信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("yunshuall", yunshuall);

返回运输管理界面

return "forward:/yunshuguanli.action";

删除运输模块:

在页面中通过a标签,shanchuyunshu?id=将id传入到后台中,通过shanchuyunshu接收运输id。使用deleteByid的方法

删除该运输,完成删除操作。定义删除成功提示信息,删除运输成功,并保存到request中,该部分代码如下:

通过yunshudao的删除方法根据id删除对应的运输 yunshudao.deleteByPrimaryKey(id);

将删除运输成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除运输成功");

返回运输管理界面

return "forward:/yunshuguanli.action";

猜你喜欢

转载自www.cnblogs.com/bzls/p/11573967.html