基于javaweb的仓库管理系统(java+ssm+jsp+mysql)

基于javaweb的仓库管理系统(java+ssm+jsp+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

20220519000002

20220519000003

20220519000004

20220519000006

基于javaweb+jsp的仓库管理系统(SSM+jsp+mysql+maven)

一、项目简述

功能包括: 仓库管理,出入库管理,仓库人员管理,基本信息管理, 供应商信息,系统管理等等。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。

系统操作日志请求:

/**

  • 系统操作日志请求 Handler

*/

@Controller

@RequestMapping(value = “/systemLog”)

public class SystemLogHandler {

@Autowired

private SystemLogService systemLogService;

/**

  • 查询系统的登入登出日志

  • @param userIDStr 用户ID

  • @param accessType 记录类型(登入、登出或全部)

  • @param startDateStr 记录的起始日期

  • @param endDateStr 记录的结束日期

  • @param offset 分页的偏移值

  • @param limit 分页的大小

  • @return 返回 JSON 数据 其中:Key为rows的值代表所有记录数据,Key为total的值代表记录的总条数

  • @throws SystemLogServiceException SystemLogServiceException

*/

@SuppressWarnings(“unchecked”)

@RequestMapping(value = “getAccessRecords”, method = RequestMethod.GET)

public @ResponseBody

Map<String, Object> getAccessRecords(@RequestParam(“userID”) String userIDStr,

@RequestParam(“accessType”) String accessType,

@RequestParam(“startDate”) String startDateStr,

@RequestParam(“endDate”) String endDateStr,

@RequestParam(“offset”) int offset,

@RequestParam(“limit”) int limit) throws SystemLogServiceException {

// 创建 Response 对象

Response response = ResponseFactory.newInstance();

List rows = null;

long total = 0;

// 检查参数

String regex = “([0-9]{4})-([0-9]{2})-([0-9]{2})”;

boolean startDateFormatCheck = (StringUtils.isEmpty(startDateStr) || startDateStr.matches(regex));

boolean endDateFormatCheck = (StringUtils.isEmpty(endDateStr) || endDateStr.matches(regex));

boolean userIDCheck = (StringUtils.isEmpty(userIDStr) || StringUtils.isNumeric(userIDStr));

if (startDateFormatCheck && endDateFormatCheck && userIDCheck) {

// 转到 Service 执行查询

Integer userID = -1;

if (StringUtils.isNumeric(userIDStr))

userID = Integer.valueOf(userIDStr);

Map<String, Object> queryResult = systemLogService.selectAccessRecord(userID, accessType, startDateStr, endDateStr, offset, limit);

if (queryResult != null) {

rows = (List) queryResult.get(“data”);

total = (long) queryResult.get(“total”);

} else

response.setResponseMsg(“Request Argument Error”);

if (rows == null)

rows = new ArrayList<>(0);

// 返回 Response

response.setCustomerInfo(“rows”, rows);

response.setResponseTotal(total);

return response.generateResponse();

/**

  • 查询系统的操作日志

  • @param userIDStr 用户ID

  • @param startDateStr 记录的起始日期

  • @param endDateStr 记录的结束日期

  • @param offset 分页的偏移值

  • @param limit 分页的大小

  • @return 返回 JSON 数据 其中:Key为rows的值代表所有记录数据,Key为total的值代表记录的总条数

  • @throws SystemLogServiceException SystemLogServiceException

*/

@SuppressWarnings(“unchecked”)

@RequestMapping(value = “getUserOperationRecords”)

public @ResponseBody

Map<String, Object> selectUserOperationRecords(@RequestParam(“userID”) String userIDStr,

@RequestParam(“startDate”) String startDateStr,

@RequestParam(“endDate”) String endDateStr,

@RequestParam(“offset”) int offset,

@RequestParam(“limit”) int limit) throws SystemLogServiceException {

// 创建 Response

Response response = ResponseFactory.newInstance();

List rows = null;

long total = 0;

// 检查参数

String regex = “([0-9]{4})-([0-9]{2})-([0-9]{2})”;

boolean startDateFormatCheck = (StringUtils.isEmpty(startDateStr) || startDateStr.matches(regex));

boolean endDateFormatCheck = (StringUtils.isEmpty(endDateStr) || endDateStr.matches(regex));

boolean userIDCheck = (StringUtils.isEmpty(userIDStr) || StringUtils.isNumeric(userIDStr));

if (startDateFormatCheck && endDateFormatCheck && userIDCheck) {

// 转到 Service 进行查询

Integer userID = -1;

if (StringUtils.isNumeric(userIDStr))

userID = Integer.valueOf(userIDStr);

Map<String, Object> queryResult = systemLogService.selectUserOperationRecord(userID, startDateStr, endDateStr, offset, limit);

if (queryResult != null) {

rows = (List) queryResult.get(“data”);

total = (long) queryResult.get(“total”);

} else

response.setResponseMsg(“Request argument error”);

if (rows == null)

rows = new ArrayList<>(0);

response.setCustomerInfo(“rows”, rows);

response.setResponseTotal(total);

return response.generateResponse();

货物信息管理请求:

/**

  • 货物信息管理请求 Handler

*/

@RequestMapping(value = “/**/goodsManage”)

@Controller

public class GoodsManageHandler {

@Autowired

private GoodsManageService goodsManageService;

private static final String SEARCH_BY_ID = “searchByID”;

private static final String SEARCH_BY_NAME = “searchByName”;

private static final String SEARCH_ALL = “searchAll”;

/**

  • 通用的记录查询

  • @param searchType 查询类型

  • @param keyWord 查询关键字

  • @param offset 分页偏移值

  • @param limit 分页大小

  • @return 返回一个 Map ,包含所有符合要求的查询结果,以及记录的条数

*/

private Map<String, Object> query(String searchType, String keyWord, int offset, int limit) throws GoodsManageServiceException {

Map<String, Object> queryResult = null;

switch (searchType) {

case SEARCH_BY_ID:

if (StringUtils.isNumeric(keyWord))

queryResult = goodsManageService.selectById(Integer.valueOf(keyWord));

break;

case SEARCH_BY_NAME:

queryResult = goodsManageService.selectByName(keyWord);

break;

case SEARCH_ALL:

queryResult = goodsManageService.selectAll(offset, limit);

break;

default:

// do other thing

break;

return queryResult;

/**

  • 搜索货物信息

  • @param searchType 搜索类型

  • @param offset 如有多条记录时分页的偏移值

  • @param limit 如有多条记录时分页的大小

  • @param keyWord 搜索的关键字

  • @return 返回所有符合要求的记录

*/

@SuppressWarnings(“unchecked”)

@RequestMapping(value = “getGoodsList”, method = RequestMethod.GET)

public

@ResponseBody

Map<String, Object> getGoodsList(@RequestParam(“searchType”) String searchType,

@RequestParam(“offset”) int offset, @RequestParam(“limit”) int limit,

@RequestParam(“keyWord”) String keyWord) throws GoodsManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

List rows = null;

long total = 0;

// 查询

Map<String, Object> queryResult = query(searchType, keyWord, offset, limit);

if (queryResult != null) {

rows = (List) queryResult.get(“data”);

total = (long) queryResult.get(“total”);

// 设置 Response

responseContent.setCustomerInfo(“rows”, rows);

responseContent.setResponseTotal(total);

return responseContent.generateResponse();

/**

  • 添加一条货物信息

  • @param goods 货物信息

  • @return 返回一个map,其中:key 为 result表示操作的结果,包括:success 与 error

*/

@RequestMapping(value = “addGoods”, method = RequestMethod.POST)

public

@ResponseBody

Map<String, Object> addGoods(@RequestBody Goods goods) throws GoodsManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

// 添加记录

String result = goodsManageService.addGoods(goods) ? Response.RESPONSE_RESULT_SUCCESS : Response.RESPONSE_RESULT_ERROR;

// 设置 Response

responseContent.setResponseResult(result);

return responseContent.generateResponse();

/**

  • 查询指定 goods ID 货物的信息

  • @param goodsID 货物ID

  • @return 返回一个map,其中:key 为 result 的值为操作的结果,包括:success 与 error;key 为 data

  • 的值为货物信息

*/

@RequestMapping(value = “getGoodsInfo”, method = RequestMethod.GET)

public

@ResponseBody

Map<String, Object> getGoodsInfo(@RequestParam(“goodsID”) Integer goodsID) throws GoodsManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

String result = Response.RESPONSE_RESULT_ERROR;

// 获取货物信息

Goods goods = null;

Map<String, Object> queryResult = goodsManageService.selectById(goodsID);

if (queryResult != null) {

goods = (Goods) queryResult.get(“data”);

if (goods != null) {

result = Response.RESPONSE_RESULT_SUCCESS;

// 设置 Response

responseContent.setResponseResult(result);

responseContent.setResponseData(goods);

return responseContent.generateResponse();

/**

  • 更新货物信息

  • @param goods 货物信息

  • @return 返回一个map,其中:key 为 result表示操作的结果,包括:success 与 error

*/

@RequestMapping(value = “updateGoods”, method = RequestMethod.POST)

public

@ResponseBody

Map<String, Object> updateGoods(@RequestBody Goods goods) throws GoodsManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

// 更新

String result = goodsManageService.updateGoods(goods) ? Response.RESPONSE_RESULT_SUCCESS : Response.RESPONSE_RESULT_ERROR;

// 设置 Response

responseContent.setResponseResult(result);

return responseContent.generateResponse();

/**

  • 删除货物记录

  • @param goodsID 货物ID

  • @return 返回一个map,其中:key 为 result表示操作的结果,包括:success 与 error

*/

@RequestMapping(value = “deleteGoods”, method = RequestMethod.GET)

public

@ResponseBody

Map<String, Object> deleteGoods(@RequestParam(“goodsID”) Integer goodsID) throws GoodsManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

// 删除

String result = goodsManageService.deleteGoods(goodsID) ? Response.RESPONSE_RESULT_SUCCESS : Response.RESPONSE_RESULT_ERROR;

// 设置 Response

responseContent.setResponseResult(result);

return responseContent.generateResponse();

/**

  • 导入货物信息

  • @param file 保存有货物信息的文件

  • @return 返回一个map,其中:key 为 result表示操作的结果,包括:success 与

  • error;key为total表示导入的总条数;key为available表示有效的条数

*/

@RequestMapping(value = “importGoods”, method = RequestMethod.POST)

public

@ResponseBody

Map<String, Object> importGoods(@RequestParam(“file”) MultipartFile file) throws GoodsManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

String result = Response.RESPONSE_RESULT_ERROR;

// 读取文件内容

int total = 0;

int available = 0;

if (file != null) {

Map<String, Object> importInfo = goodsManageService.importGoods(file);

if (importInfo != null) {

total = (int) importInfo.get(“total”);

available = (int) importInfo.get(“available”);

result = Response.RESPONSE_RESULT_SUCCESS;

// 设置 Response

responseContent.setResponseResult(result);

responseContent.setResponseTotal(total);

responseContent.setCustomerInfo(“available”, available);

return responseContent.generateResponse();

/**

  • 导出货物信息

  • @param searchType 查找类型

  • @param keyWord 查找关键字

  • @param response HttpServletResponse

*/

@SuppressWarnings(“unchecked”)

@RequestMapping(value = “exportGoods”, method = RequestMethod.GET)

public void exportGoods(@RequestParam(“searchType”) String searchType, @RequestParam(“keyWord”) String keyWord,

HttpServletResponse response) throws GoodsManageServiceException, IOException {

String fileName = “goodsInfo.xlsx”;

List goodsList = null;

Map<String, Object> queryResult = query(searchType, keyWord, -1, -1);

if (queryResult != null) {

goodsList = (List) queryResult.get(“data”);

// 获取生成的文件

File file = goodsManageService.exportGoods(goodsList);

// 写出文件

if (file != null) {

// 设置响应头

response.addHeader(“Content-Disposition”, “attachment;filename=” + fileName);

FileInputStream inputStream = new FileInputStream(file);

OutputStream outputStream = response.getOutputStream();

byte[] buffer = new byte[8192];

int len;

while ((len = inputStream.read(buffer, 0, buffer.length)) > 0) {

outputStream.write(buffer, 0, len);

outputStream.flush();

inputStream.close();

outputStream.close();

客户信息管理请求:

/**

  • 客户信息管理请求 Handler

*/

@RequestMapping(value = “/**/customerManage”)

@Controller

public class CustomerManageHandler {

@Autowired

private CustomerManageService customerManageService;

private static final String SEARCH_BY_ID = “searchByID”;

private static final String SEARCH_BY_NAME = “searchByName”;

private static final String SEARCH_ALL = “searchAll”;

/**

  • 通用的结果查询方法

  • @param searchType 查询方式

  • @param keyWord 查询关键字

  • @param offset 分页偏移值

  • @param limit 分页大小

  • @return 返回指定条件查询的结果

*/

private Map<String, Object> query(String searchType, String keyWord, int offset, int limit) throws CustomerManageServiceException {

Map<String, Object> queryResult = null;

switch (searchType) {

case SEARCH_BY_ID:

if (StringUtils.isNumeric(keyWord))

queryResult = customerManageService.selectById(Integer.valueOf(keyWord));

break;

case SEARCH_BY_NAME:

queryResult = customerManageService.selectByName(offset, limit, keyWord);

break;

case SEARCH_ALL:

queryResult = customerManageService.selectAll(offset, limit);

break;

default:

// do other thing

break;

return queryResult;

/**

  • 搜索客户信息

  • @param searchType 搜索类型

  • @param offset 如有多条记录时分页的偏移值

  • @param limit 如有多条记录时分页的大小

  • @param keyWord 搜索的关键字

  • @return 返回查询的结果,其中键值为 rows 的代表查询到的每一记录,若有分页则为分页大小的记录;键值为 total 代表查询到的符合要求的记录总条数

*/

@SuppressWarnings(“unchecked”)

@RequestMapping(value = “getCustomerList”, method = RequestMethod.GET)

public

@ResponseBody

Map<String, Object> getCustomerList(@RequestParam(“searchType”) String searchType,

@RequestParam(“offset”) int offset,

@RequestParam(“limit”) int limit,

@RequestParam(“keyWord”) String keyWord) throws CustomerManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

List rows = null;

long total = 0;

Map<String, Object> queryResult = query(searchType, keyWord, offset, limit);

if (queryResult != null) {

rows = (List) queryResult.get(“data”);

total = (long) queryResult.get(“total”);

// 设置 Response

responseContent.setCustomerInfo(“rows”, rows);

responseContent.setResponseTotal(total);

responseContent.setResponseResult(Response.RESPONSE_RESULT_SUCCESS);

return responseContent.generateResponse();

/**

  • 添加一条客户信息

  • @param customer 客户信息

  • @return 返回一个map,其中:key 为 result表示操作的结果,包括:success 与 error

*/

@RequestMapping(value = “addCustomer”, method = RequestMethod.POST)

public

@ResponseBody

Map<String, Object> addCustomer(@RequestBody Customer customer) throws CustomerManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

// 添加记录

String result = customerManageService.addCustomer(customer) ? Response.RESPONSE_RESULT_SUCCESS : Response.RESPONSE_RESULT_ERROR;

responseContent.setResponseResult(result);

return responseContent.generateResponse();

/**

  • 查询指定 customer ID 客户的信息

  • @param customerID 客户ID

  • @return 返回一个map,其中:key 为 result 的值为操作的结果,包括:success 与 error;key 为 data

  • 的值为客户信息

*/

@RequestMapping(value = “getCustomerInfo”, method = RequestMethod.GET)

public

@ResponseBody

Map<String, Object> getCustomerInfo(@RequestParam(“customerID”) String customerID) throws CustomerManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

String result = Response.RESPONSE_RESULT_ERROR;

// 获取客户信息

Customer customer = null;

Map<String, Object> queryResult = query(SEARCH_BY_ID, customerID, -1, -1);

if (queryResult != null) {

customer = (Customer) queryResult.get(“data”);

if (customer != null) {

result = Response.RESPONSE_RESULT_SUCCESS;

// 设置 Response

responseContent.setResponseResult(result);

responseContent.setResponseData(customer);

return responseContent.generateResponse();

/**

  • 更新客户信息

  • @param customer 客户信息

  • @return 返回一个map,其中:key 为 result表示操作的结果,包括:success 与 error

*/

@RequestMapping(value = “updateCustomer”, method = RequestMethod.POST)

public

@ResponseBody

Map<String, Object> updateCustomer(@RequestBody Customer customer) throws CustomerManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

// 更新

String result = customerManageService.updateCustomer(customer) ? Response.RESPONSE_RESULT_SUCCESS : Response.RESPONSE_RESULT_ERROR;

responseContent.setResponseResult(result);

return responseContent.generateResponse();

/**

  • 删除客户记录

  • @param customerIDStr 客户ID

  • @return 返回一个map,其中:key 为 result表示操作的结果,包括:success 与 error

*/

@RequestMapping(value = “deleteCustomer”, method = RequestMethod.GET)

public

@ResponseBody

Map<String, Object> deleteCustomer(@RequestParam(“customerID”) String customerIDStr) throws CustomerManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

// 参数检查

if (StringUtils.isNumeric(customerIDStr)) {

// 转换为 Integer

Integer customerID = Integer.valueOf(customerIDStr);

// 刪除

String result = customerManageService.deleteCustomer(customerID) ? Response.RESPONSE_RESULT_SUCCESS : Response.RESPONSE_RESULT_ERROR;

responseContent.setResponseResult(result);

} else

responseContent.setResponseResult(Response.RESPONSE_RESULT_ERROR);

return responseContent.generateResponse();

/**

  • 导入客户信息

  • @param file 保存有客户信息的文件

  • @return 返回一个map,其中:key 为 result表示操作的结果,包括:success 与

  • error;key为total表示导入的总条数;key为available表示有效的条数

*/

@RequestMapping(value = “importCustomer”, method = RequestMethod.POST)

public

@ResponseBody

Map<String, Object> importCustomer(@RequestParam(“file”) MultipartFile file) throws CustomerManageServiceException {

// 初始化 Response

Response responseContent = ResponseFactory.newInstance();

String result = Response.RESPONSE_RESULT_SUCCESS;

// 读取文件内容

int total = 0;

int available = 0;

if (file == null)

result = Response.RESPONSE_RESULT_ERROR;

Map<String, Object> importInfo = customerManageService.importCustomer(file);

if (importInfo != null) {

total = (int) importInfo.get(“total”);

available = (int) importInfo.get(“available”);

responseContent.setResponseResult(result);

responseContent.setResponseTotal(total);

responseContent.setCustomerInfo(“available”, available);

return responseContent.generateResponse();

/**

  • 导出客户信息

  • @param searchType 查找类型

  • @param keyWord 查找关键字

  • @param response HttpServletResponse

*/

@SuppressWarnings(“unchecked”)

@RequestMapping(value = “exportCustomer”, method = RequestMethod.GET)

public void exportCustomer(@RequestParam(“searchType”) String searchType, @RequestParam(“keyWord”) String keyWord,

HttpServletResponse response) throws CustomerManageServiceException, IOException {

String fileName = “customerInfo.xlsx”;

List customers = null;

Map<String, Object> queryResult = query(searchType, keyWord, -1, -1);

if (queryResult != null) {

customers = (List) queryResult.get(“data”);

// 获取生成的文件

File file = customerManageService.exportCustomer(customers);

// 写出文件

if (file != null) {

// 设置响应头

response.addHeader(“Content-Disposition”, “attachment;filename=” + fileName);

FileInputStream inputStream = new FileInputStream(file);

OutputStream outputStream = response.getOutputStream();

byte[] buffer = new byte[8192];

int len;

while ((len = inputStream.read(buffer, 0, buffer.length)) > 0) {

outputStream.write(buffer, 0, len);

outputStream.flush();

inputStream.close();

outputStream.close();


  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网选课系统是一个非常实用的系统,可以方便学生进行选课操作,也可以方便教师进行课程管理。下面是一个基于JavaWeb的网上选课系统的设计思路: 1. 系统架构 该系统采用 B/S 架构,即浏览器/服务器架构。前端使用 HTML、CSS、JavaScript 和 JQuery,后端使用 Java+SSM 框架和 MySQL 数据库。 2. 系统功能 (1)学生模块:学生可以登录系统后进行选课操作,查看已选课程,并对已选课程进行退选操作。 (2)教师模块:教师可以登录系统后进行课程管理操作,包括添加课程、修改课程、删除课程等操作。 (3)管理员模块:管理员可以登录系统后对学生和教师进行管理,包括添加学生、添加教师、修改学生信息、修改教师信息等操作。 (4)公告管理:管理员可以发布公告,学生和教师可以浏览公告。 (5)选课规则管理:管理员可以设置选课规则,例如每个学生最多选择多少门课程,每门课程最多选多少人等。 3. 数据库设计 该系统需要设计以下数据库表: (1)学生表:包括学生编号、学生姓名、学生性别、学生年龄、所在班级等字段。 (2)教师表:包括教师编号、教师姓名、教师性别、所教课程、教龄等字段。 (3)课程表:包括课程编号、课程名称、授课教师、上课时间、选课人数等字段。 (4)选课记录表:包括学生编号、课程编号等字段。 (5)公告表:包括公告编号、公告内容、发布时间等字段。 4. 技术实现 该系统采用 Java+SSM 框架进行实现,其中: (1)后端技术:采用 SpringMVC 框架进行控制器的开发,采用 MyBatis 框架进行数据库操作。 (2)前端技术:采用 HTML、CSS、JavaScript 和 JQuery 进行页面布局和交互效果的实现。 (3)数据库技术:采用 MySQL 数据库进行数据存储和管理。 5. 总结 网上选课系统是一个非常实用的系统,它可以方便学生进行选课操作,也可以方便教师进行课程管理。该系统采用 B/S 架构,采用 Java+SSM 框架进行开发,实现了学生模块、教师模块、管理员模块、公告管理和选课规则管理等功能。在实现时需要注意数据库表的设计和技术实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值