一、系统简介

本项目采用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">登&emsp;&emsp;录</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">注&emsp;&emsp;册</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的仓库管理系统