一、系统简介
本项目采用eclipse工具开发,jsp+servlet技术编写,样式采用了layui前段框架,数据库采用的是mysql,navicat开发工具。
系统一共分为3个角色分别是:管理员,仓管员,供应商
二、模块简介
管理员
1、登录
2、仓管员管理
3、仓库管理
4、供应商管理
5、商品管理
6、出库入库管理
仓管员
1、登录
2、个人信息维护
3、查看商品信息
4、库存预警
5、商品申请
6、商品供应记录
7、商品出库入库
供应商
1、登录注册
2、个人信息维护
3、商品出库入库申请
4、个人申请记录
获取方式:基于javaweb的仓库管理系统 - 九鸟网
三、项目截图
项目结构
数据库结构
登录
注册
仓管员管理
仓库管理
供应商管理
商品管理
出库入库管理
四、代码简介
1、登录
login.jsp中,用户填写用户名和密码,点击登录按钮,提交登录的form表单,请求后台的loginservlet类里面的login方法,验证登录后,跳转指定的页面
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> 仓 库 管 理 系 统</title>
<!-- 样 式 文 件 -->
<link rel="stylesheet" href="resource/component/pear/css/pear.css" />
<link rel="stylesheet" href="resource/admin/css/other/login.css" />
</head>
<!-- 代 码 结 构 -->
<body background="resource/admin/images/background.svg" style="background-size: cover;">
<form class="layui-form" action="LoginServlet?action=login" method="post" id="loginForm" name="loginForm" >
<div class="layui-form-item">
<img class="logo" src="resource/admin/images/logo.png" />
<div class="title">登  录</div>
<div class="desc">
仓 库 管 理 系 统
</div>
</div>
<div class="layui-form-item">
<input type="text" placeholder="请输入用户名" name="userName" id="userName" hover class="layui-input" />
<span id="msg3" style="color:red">${message}</span>
</div>
<div class="layui-form-item">
<input id="password" type="password" name="password" placeholder="请输入密码" hover class="layui-input" />
</div>
<div class="layui-form-item" style="text-align: center;">
<input type="radio" name="type" id="type" value="1" title="管理员" checked>
<input type="radio" name="type" id="type" value="2" title="仓管员" >
<input type="radio" name="type" id="type" value="3" title="供应商" >
</div>
<div class="layui-form-item">
<button type="submit" class="pear-btn pear-btn-success login" id="login">
登录
</button>
</div>
<div class="layui-form-item">
<a href="LoginServlet?action=toRegister" class="pear-btn pear-btn-warming layui-btn-fluid">去注册</a>
</div>
</form>
<!-- 资 源 引 入 -->
<script src="resource/component/layui/layui.js"></script>
<script src="resource/component/pear/pear.js"></script>
<script>
layui.use(['layer', 'form','jquery'], function(){
var form = layui.form,
layer = layui.layer,
$= layui.jquery;
form.render();//这句一定要加,占坑
$("#login").on("click", function() {
var userName = $("#userName").val().trim(); // trim()去除空格
var password = $("#password").val().trim();
var type = $("#type").val();
if(userName == ""){
layer.msg('用户名或者手机号不能为空!');
return false;
}
if(password == ""){
layer.msg('密码不能为空!');
return false;
}
if(type == ""){
layer.msg('请选择角色!');
return false;
}
});
setTimeout(function(){ $("#msg").html("")},3000);
setTimeout(function(){ $("#msg2").html("")},3000);
setTimeout(function(){ $("#msg3").html("")},3000);
});
</script>
</body>
</html>
private void login(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
removeAll(request,response);
String userName = request.getParameter("userName");
String password = request.getParameter("password");
String type = request.getParameter("type");
if(type.equals("1")){
Admin admin = new Admin();
admin.setUsername(userName);
admin.setPwd(password);
Admin admin1 = service.selectAdmin(admin);
try {
if (admin1 == null){
request.setAttribute("message", "管理员用户不存在或者密码错误");
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
}else {
request.getSession().setAttribute("admin",admin1);
request.getSession().setAttribute("flag",1);
request.getRequestDispatcher("/WEB-INF/views/main.jsp").forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}else if(type.equals("2")){
Keeper keep = new Keeper();
keep.setUsername(userName);
keep.setPwd(password);
Keeper keep1 = service.selectKeeper(keep);
try {
if (keep1 == null){
request.setAttribute("message", "仓管员不存在或者密码错误");
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
}else {
request.getSession().setAttribute("keeper",keep1);
request.getSession().setAttribute("flag",2);
request.getRequestDispatcher("/WEB-INF/views/main.jsp").forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}else if(type.equals("3")){
Supplier supplier = service.selectSupplier(userName,password);
try {
if (supplier == null){
request.setAttribute("message", "供应商不存在或者密码错误");
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
}else {
request.getSession().setAttribute("supplier",supplier);
request.getSession().setAttribute("flag",3);
request.getRequestDispatcher("/WEB-INF/views/main.jsp").forward(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}else{
request.setAttribute("message", "账号不存在或者密码错误");
try {
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
注册代码
用户点击注册按钮,跳转注册页面,填写注册表单,提交代码到SupplierServlet里面addSupplier方法中,后台进行数据库的插入操作,这边注册的是供应商,管理员需要审核通过后,供应商才能登陆
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<!-- 样 式 文 件 -->
<link rel="stylesheet" href="resource/component/pear/css/pear.css" />
<link rel="stylesheet" href="resource/admin/css/other/login.css" />
</head>
<!-- 代 码 结 构 -->
<body background="resource/admin/images/background.svg" style="background-size: cover;">
<form class="layui-form" action="SupplierServlet?action=addSupplier" method="post" id="loginForm" name="loginForm" >
<input id="te" type="hidden" name="te" value="1" />
<div class="layui-form-item">
<img class="logo" src="resource/admin/images/logo.png" />
<div class="title">注  册</div>
<div class="desc">
仓 库 管 理 系 统
</div>
</div>
<div class="layui-form-item">
<input type="text" placeholder="请输入姓名" name="names" id="names" hover class="layui-input" />
<span id="msg" style="color:red">${message}</span>
</div>
<div class="layui-form-item">
<input id="username" type="text" name="username" placeholder="请输入用户账号" hover class="layui-input" />
</div>
<div class="layui-form-item">
<select name="sex" id ="sex">
<option value="">请选择性别</option>
<option value="男">男</option>
<option value="女">女</option>
</select>
</div>
<div class="layui-form-item">
<input id="pwd" type="text" name="pwd" placeholder="请输入登录密码" hover class="layui-input" />
</div>
<div class="layui-form-item">
<button type="submit" class="pear-btn pear-btn-success login" id="login">
注册
</button>
</div>
<div class="layui-form-item">
<a href="LoginServlet?action=toLogin" class="pear-btn pear-btn-warming layui-btn-fluid">返回</a>
</div>
</form>
<!-- 资 源 引 入 -->
<script src="resource/component/layui/layui.js"></script>
<script src="resource/component/pear/pear.js"></script>
<script>
layui.use(['layer', 'form','jquery','laydate'], function(){
var form = layui.form,
layer = layui.layer,
laydate=layui.laydate,
$= layui.jquery;
form.render();//这句一定要加,占坑
laydate.render({
elem: '#time'
});
$("#login").on("click", function() {
var regNumber = /\d+/; //验证0-9的任意数字最少出现1次。
var regString = /[a-zA-Z]+/; //验证大小写26个字母任意字母最少出现1次。
var names = $("#names").val();
var username = $("#username").val();
var pwd = $("#pwd").val();
var sex = $("#sex").val();
if (names == null || names == "") {
layer.msg('名字不能为空!');
return false;
}
if (regNumber.test(names) || regString.test(names)) {
layer.msg('名字不能包含数字和字母!');
return false;
}
if (username == null || username == "") {
layer.msg('账号不能为空!');
return false;
}
if (username.length<4 || username.length>6 || isNaN(Number(username)) ) {
layer.msg('账号只能是4到6位的数字组成!');
return false;
}
if(pwd == null || pwd== ""){
layer.msg('密码不能为空!');
return false;
}
if(!(/^[A-Z][A-z0-9]*$/).test(pwd)){
layer.msg('密码的首字母要大写!');
return false;
}
if(sex == null || sex== ""){
layer.msg('性别不能为空!');
return false;
}
});
setTimeout(function(){ $("#msg").html("")},3000);
setTimeout(function(){ $("#msg2").html("")},3000);
setTimeout(function(){ $("#msg3").html("")},3000);
$("#imgUrl").change(function () {
//创建blob对象,浏览器将文件放入内存中,并生成标识
var img_src = URL.createObjectURL($(this)[0].files[0]);
//给img标检的src赋值
document.getElementById("preview_img").src=img_src;
//URL.revokeObjectURL(img_src);// 手动 回收,
});
});
</script>
</body>
</html>
private void addSupplier(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
String te = request.getParameter("te");
String names = request.getParameter("names");
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
String sex = request.getParameter("sex");
Supplier ss = service.selectSupplierByUsername(username);
Supplier s1 = new Supplier();
s1.setName(names);
s1.setUsername(username);
s1.setPwd(pwd);
s1.setSex(sex);
s1.setTimes(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()));
s1.setState("1");
try {
if(te != null && te.equals("1")){
if(ss !=null){
request.setAttribute("message", "登录账号重复!");
request.getRequestDispatcher("/WEB-INF/views/register.jsp").forward(request,response);
}else{
service.addSupplier(s1);
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
}
}else{
if(ss !=null){
request.setAttribute("message", "登录账号重复!");
request.getRequestDispatcher("/WEB-INF/views/supplier/addSupplier.jsp").forward(request,response);
}else{
service.addSupplier(s1);
response.sendRedirect(request.getContextPath()+"/SupplierServlet?action=supplierList");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
仓管员列表
分页查询仓管员的信息,返回给keepList.jsp,前端页面使用jstl进行遍历显示
private void keeperList(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
String p=request.getParameter("p");//接收页码
int pageSize=4;//每页显示5条
int pageNum=1; //默认第一页
if(p!=null){
pageNum= Integer.parseInt(p);
}
//调用分页查询
List<Keeper> list=service.geKeeperListPage(pageNum,pageSize);
//携带参数到页面
int nums=service.queryKeeperCount(); //查询总数
//计算总页数
int totalPage=(nums%pageSize==0)? (nums/pageSize):(nums/pageSize+1);
request.setAttribute("cp",pageNum); //当前页
request.setAttribute("tp",totalPage); //总页数
try {
request.removeAttribute("msg");
request.setAttribute("list" ,list);
request.getRequestDispatcher("/WEB-INF/views/keeper/keeperList.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<jsp:include page="/WEB-INF/common/form_header.jsp"/>
<body>
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">仓管员列表</div>
<div class="layui-card-body">
<form action="KeeperServlet?action=keeperListLike" method="post">
<input type="text" placeholder="根据姓名查询" name="names" id ="names" style="height:26px;" />
<input type="submit" class="layui-btn layui-btn-sm layui-btn-normal" value="查询" />
</form>
<span style="color: red" class="help-block m-b-none">${msg}</span>
<table class="layui-table">
<thead>
<tr>
<th>姓名</th>
<th>用户账号</th>
<th>密码</th>
<th>性别</th>
<th>创建时间</th>
<c:if test="${flag == 1}">
<th>操作</th>
</c:if>
</tr>
</thead>
<tbody>
<c:forEach items="${list}" var="u">
<tr>
<td>${u.name }</td>
<td>${u.username }</td>
<td>${u.pwd }</td>
<td>${u.sex }</td>
<td>${u.times }</td>
<c:if test="${flag == 1}">
<td>
<input id ="${u.id}" value="${u.id}" type="hidden" class="weui-input"/>
<a href="KeeperServlet?action=toUpdateKeeper&id=${u.id}" id="update"
class="layui-btn layui-btn-sm layui-btn-norma"><i
class="layui-icon">修改</i></a>
<a href='javascript:void(0)' class="layui-btn layui-btn-sm layui-btn-danger"><i
class="layui-icon">删除</i></a>
</td>
</c:if>
</tr>
</c:forEach>
</tbody>
</table>
<div style="text-align: center">
<div class="layui-btn-group">
<a class="layui-btn layui-btn-primary"
href="KeeperServlet?action=keeperList&p=1">首页</a>
<%-- 判断是否有上一页--%>
<c:if test="${cp>1}">
<a class="layui-btn layui-btn-primary"
href="KeeperServlet?action=keeperList&p=${cp-1}">上一页</a>
</c:if>
<%-- 循环显示页码--%>
<c:forEach begin="${cp-2>1 ? (cp-2) :1}"
end="${cp+2>tp?tp:(cp+2)}" var="e">
<%-- 判断是否是当前页--%>
<c:if test="${cp==e}">
<a class="layui-btn layui-btn-danger"
href="KeeperServlet?action=keeperList&p=${e}">${e}</a>
</c:if>
<c:if test="${cp!=e}">
<a class="layui-btn layui-btn-primary"
href="KeeperServlet?action=keeperList&p=${e}">${e}</a>
</c:if>
</c:forEach>
<%-- 判断是否有下一页--%>
<c:if test="${cp<tp}">
<a class="layui-btn layui-btn-primary"
href="KeeperServlet?action=keeperList&p=${cp+1}">下一页</a>
</c:if>
<a class="layui-btn layui-btn-primary"
href="KeeperServlet?action=keeperList&p=${tp}">尾页</a>
</div>
</div>
</div>
</div>
</div>
<script src="layui/jquery-1.9.1.min.js"></script>
<script src="layui/layui.js"></script>
<script>
layui.use(['layer','form','jquery'], function () {//调用layui组件
var form = layui.form;
var layer=layui.layer;
$=layui.jquery;
form.render();
$('a.layui-btn-danger').click(function(e){
var id = $(e.currentTarget).parent().find('.weui-input').attr('id');
if(confirm("确定要删除吗?")){
$.post("KeeperServlet?action=deleteKeeper&id="+id, function(data) {
layer.msg('删除成功!',{icon:6,offset:"auto",time:2000},function(){
document.location.reload();//当前页面
});
});
}
})
});
</script>
</body>
</html>
新增仓管员
点击新增按钮,跳转到新增仓管员的页面,填写新增仓管员的表单,点击提交,提交到后台KeeperServlet类中的addKeeper方法里面,进行数据库的插入操作!!
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<jsp:include page="/WEB-INF/common/form_header.jsp"/>
<body>
<div class="layui-fluid">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">新增仓管员</div>
<div class="layui-card-body">
<form action="KeeperServlet?action=addKeeper" method="post" id="registerForm" name="registerForm" class="layui-form" >
<div class="layui-form-item">
<label class="layui-form-label">姓名:</label>
<div class="layui-input-inline">
<input name="names" id="names" class="layui-input" />
<span id="msg3" style="color:red">${message}</span>
</div>
</div>
<div class="layui-form-item" >
<label class="layui-form-label">用户账号:</label>
<div class="layui-input-inline">
<input name="username" id="username" class="layui-input" />
</div>
</div>
<div class="layui-form-item" >
<label class="layui-form-label">登录密码:</label>
<div class="layui-input-inline">
<input name="pwd" id="pwd" class="layui-input" />
</div>
</div>
<div class="layui-form-item" >
<label class="layui-form-label">性别:</label>
<div class="layui-input-inline">
<select name="sex" id="sex">
<option value="">请选择性别</option>
<option value="男">男</option>
<option value="女">女</option>
</select>
</div>
</div>
<br>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" type="submit" id="sub_btn">提交</button>
<a href="KeeperServlet?action=toAddKeeper" class="layui-btn layui-btn-primary" >重置</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<script src="layui/layui.js"></script>
<script src="layui/jquery-1.9.1.min.js"></script>
<script>
layui.use([ 'form','jquery','layer','laydate' ], function() {
var form = layui.form,
layer = layui.layer,
laydate=layui.laydate,
$= layui.jquery;
form.render();//这句一定要加,占坑
$(function () {
// 给注册绑定单击事件
$("#sub_btn").click(function () {
var title = $("#title").val();
var content = $("#content").val();
/* if(title == null || title== ""){
layer.msg('主题不能为空!');
return false;
}
if(content == null || content== ""){
layer.msg('主要内容不能为空!');
return false;
} */
});
setTimeout(function(){ $("#errorMsg").html("")},3000);
});
setTimeout(function(){ $("#msg3").html("")},3000);
});
</script>
</body>
</html>
private void addKeeper(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
String names = request.getParameter("names");
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
String sex = request.getParameter("sex");
Keeper keeper = service.selectKeeperByUsername(username);
Keeper keeper1 = new Keeper();
keeper1.setName(names);
keeper1.setUsername(username);
keeper1.setPwd(pwd);
keeper1.setSex(sex);
keeper1.setTimes(new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()));
try {
if(keeper !=null){
request.setAttribute("message", "登录账号重复!");
request.getRequestDispatcher("/WEB-INF/views/keeper/addKeeper.jsp").forward(request,response);
}else{
service.addKeeper(keeper1);
response.sendRedirect(request.getContextPath()+"/KeeperServlet?action=keeperList");
}
} catch (Exception e) {
e.printStackTrace();
}
}
删除功能
点击删除按钮,执行指定的javascript代码,调用后端KeeperServlet类中的deleteKeeper方法,删除完成后,在进行页面查询返回给list页面
$('a.layui-btn-danger').click(function(e){
var id = $(e.currentTarget).parent().find('.weui-input').attr('id');
if(confirm("确定要删除吗?")){
$.post("KeeperServlet?action=deleteKeeper&id="+id, function(data) {
layer.msg('删除成功!',{icon:6,offset:"auto",time:2000},function(){
document.location.reload();//当前页面
});
});
}
})
private void deleteKeeper(HttpServletRequest request, HttpServletResponse response) {
// TODO Auto-generated method stub
String id = request.getParameter("id");
try {
service.deleteKeeper(id);
response.sendRedirect(request.getContextPath()+"/KeeperServlet?action=keeperList");
} catch (Exception e) {
e.printStackTrace();
}
}
其他模块代码都是类似的,此项目适合初学者学习借鉴,项目整体比较简单,可用作于毕设等方面的作业!!!!!
喜欢的朋友的点赞加关注,感兴趣的同学可以研究!!!!!
感谢 = v =
项目截图中的数据,很多是用来测试的,需要自行添加合适的数据图片!!
更多推荐
基于javaweb的仓库管理系统
发布评论