随着社会经济的迅速发展,汽车销售业的规模也在不断扩大,有关汽车销售的信息量也成倍增加。以前我们手工记录汽车销售产品的时代已经过去了,面对庞大的信息量,我们必须制定一套高效率的汽车销售管理系统,对汽车销售资料进行集中统一的管理。随着信息技术的飞速发展,计算机已经是近代经营管理的必须工具,它已经渗透到各个领域,使用计算机对汽车销售工作进行管理,不仅能够保证各项信息准确,而且还具有查找方便、可靠性高、保密性好等优点,能够极大的提高汽车销售业的工作效率和服务质量。根据系统的综合考虑,本系统采用的开发工具使用JAVA语言和mysql数据库,设计并实现了一个基于浏览器/服务器模式结构的汽车销售管理信息系统。系统具有对用户信息、汽车基本信息、员工信息、客户信息、供应商信息、仓库信息、库存信息、汽车入库信息、汽车销售信息进行全部查询、指定查询、添加、修改和删除的功能。该项目使用框架为SSM(MYECLIPSE),选用开发工具为MYECLIPSE。汽车销售管理信息系统为一个 后台项目。
为了完成该系统,我们首先需要对该系统进行需求分析。一个汽车销售管理信息系统应包含用户角色有管理员、用户。为了能让用户顺利登陆系统完成相关操作,需要为每种登陆角色设置账户和密码字段。

总结得出该系统所有数据为:管理员(admin)、用户(yonghu)、员工(yuangong)、客户(kehu)、汽车(qiche)

管理员表

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

用户表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 用户id
username | VARCHAR(255) | | 账号
password | VARCHAR(255) | | 密码
huzhu | VARCHAR(255) | | 户主
chexing | VARCHAR(255) | | 车型
jiage | VARCHAR(255) | | 价格

员工表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 员工id
xingming | VARCHAR(255) | | 姓名
nianling | VARCHAR(255) | | 年龄
xingbie | VARCHAR(255) | | 性别
zhiwei | VARCHAR(255) | | 职位
gongzi | VARCHAR(255) | | 工资

客户表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 客户id
xingming | VARCHAR(255) | | 姓名
nianling | VARCHAR(255) | | 年龄
xingbie | VARCHAR(255) | | 性别
chexing | VARCHAR(255) | | 车型
nianxian | VARCHAR(255) | | 年限
jiage | VARCHAR(255) | | 价格

汽车表

字段名 | 类型 | 属性 | 描述
id | INT(11) | PRIMARY KEY | 汽车id
chexing | VARCHAR(255) | | 车型
pinpai | VARCHAR(255) | | 品牌
jiage | 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.KehuMapper;

import org.mypro.entity.Kehu;

import org.mypro.entity.KehuExample;

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

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

@Autowired
private KehuMapper kehudao;

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

@RequestMapping(value = "tianjiakehu")

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

logger.debug("KehuController.tianjiakehu ......");

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

return "forward:/" + backurl; }

return "tianjiakehu";

}

@RequestMapping(value = "tianjiakehuact")

public String tianjiakehuact(HttpServletRequest request,HttpSession session, HttpServletResponse response,Kehu kehu,String backurl) throws IOException {

logger.debug("KehuController.tianjiakehuact ......");

kehudao.insert(kehu);

request.setAttribute("message", "添加客户成功");

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

return "forward:/" + backurl; }

//返回tianjiakehu方法

return "forward:/tianjiakehu.action";

}

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

@RequestMapping(value = "kehuguanli")

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

logger.debug("KehuController.kehuguanli ......");

KehuExample example = new KehuExample();

List kehuall = kehudao.selectByExample(example);

request.setAttribute("kehuall", kehuall);

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

return "forward:/" + backurl; }

return "kehuguanli";

}

// 定义 kehuchakan方法

@RequestMapping(value = "kehuchakan")

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

logger.debug("KehuController.kehuchakan ......");

KehuExample example = new KehuExample();

List kehuall = kehudao.selectByExample(example);

request.setAttribute("kehuall", kehuall);

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

return "forward:/" + backurl; }

return "kehuchakan";

}

// 定义 xiugaikehu方法

@RequestMapping(value = "xiugaikehu")

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

logger.debug("KehuController.xiugaikehu ......");

Kehu kehu = kehudao.selectByPrimaryKey(id);

request.setAttribute("kehu", kehu);

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

return "forward:/" + backurl; }

return "xiugaikehu";

}

// 定义xiugaikehuact处理客户修改

@RequestMapping(value = "xiugaikehuact")

public String xiugaikehuact(HttpServletRequest request, HttpServletResponse response,Kehu kehu,HttpSession session,String backurl) throws IOException {

logger.debug("KehuController.xiugaikehuact ......");

kehudao.updateByPrimaryKeySelective(kehu);

request.setAttribute("message", "修改客户信息成功");

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

return "forward:/" + backurl; }

return "forward:/kehuguanli.action";

}

// 定义shanchukehu,处理删除客户

@RequestMapping(value = "shanchukehu")

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

logger.debug("KehuController.shanchukehu ......");

kehudao.deleteByPrimaryKey(id);

request.setAttribute("message", "删除客户成功");

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

return "forward:/" + backurl; }

return "forward:/kehuguanli.action";

}

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

@RequestMapping(value = "sousuokehu")

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

logger.debug("KehuController.sousuokehu ......");

KehuExample example = new KehuExample();

KehuExample.Criteria criteria = example.createCriteria();

if(search != null){

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

}

List kehuall = kehudao.selectByExample(example);

request.setAttribute("kehuall", kehuall);

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

return "forward:/" + backurl; }

return "sousuokehu";

}

// 定义KehupinglunMapper@RequestMapping

(value = "kehuxiangqing")

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

debug("KehuController.kehuxiangqing ......");Kehu kehu

= kehudao.selectByPrimaryKey(id);request.

setAttribute("kehu", kehu);

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

return "forward:/" + backurl; }

return "kehuxiangqing";

}

// 上传文件图片等

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;

}}

查询汽车模块:

在后台中定义汽车查询模块,在侧边栏中点击汽车管理,可以跳转到汽车管理界面。在该页面中通过qicheController中定义qicheguanli响应汽车查询模块。在qicheguanli中查询出所有信息,返回页面进行循环展示。查询方法为qichedao中的selectByexample方法。该部分核心代码如下:

生成汽车样例类,通过example定义查询条件 QicheExample example = new QicheExample();

通过qichedao的selectByExample方法查询出所有的汽车信息 List qicheall = qichedao.selectByExample(example);

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

返回汽车管理界面

return "forward:/qicheguanli.action";

删除汽车模块:

删除汽车功能实现在qicheController中,实现方法为shanchuqiche。在页面中通过get方法shanchuqiche.action?Id的形式将需要删除的汽车id上传到服务器中,响应对应的方法,调用qichedao中的deleteByPrimaryKey方法,完成删除操作。将删除成功的提示信息返回到页面中,完成删除数据的操作。该部分核心代码:

通过qichedao的删除方法根据id删除对应的汽车 qichedao.deleteByPrimaryKey(id);

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

返回汽车管理界面

return "forward:/qicheguanli.action";

02-10 09:20