基于java 公司库存管理系统设计与实现

5 阅读11分钟

 博主介绍:翰文编程 专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和课设项目实战、企业信息化系统建设,从业十八余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+题目解决方法案例  方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

信息化商务苏宁云商(沈阳大区)有限公司库存管理系统主要分为2个权限:管理员权限、普通权限。不同的身份登录系统会有不同的权限,进行不同的操作,系统主要设计了权限分配、用户管理、商品管理、库存管理、信息查询等功能,满足企业单位利用信息化平台进行商品的库存管理,具体功能模块图如4.1所示:

​编辑

图4.1 系统总体模块图

4.2 数据库层的设计

数据设计方案:采用DBMS方案——SQL Server . SQL Server关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。

4.2.1 概念模型设计

将需求分析得到的用户需求抽象为信息结构,即概念模型的过程就是概念结构设计,它是整个数据库设计的关键。

(2)系统中实体E-R图

根据信息化商务库存管理的详细设计系统的要求,规划出了以下一些实体。

用户信息实体,主要包括 用户编号,用户名,密码,姓名,权限,联系电话,联系地址 等信息实体。如图4.2所示:

​编辑

图4.2 用户实体属性图

商品分类信息实体,主要包括 商品分类编号,分类 等信息实体。如图4.3所示:

​编辑

图4.3 商品分类实体属性图

商品信息实体,主要包括 商品编号,商品名称,分类,品牌,型号,数量,登记时间 等信息实体。如图4.4所示:

​编辑

图4.4 商品实体属性图

仓库信息实体,主要包括 仓库编号,仓库名称,说明 等信息实体。如图4.5所示:

​编辑

图4.5 仓库实体属性图

调拨信息实体,主要包括 调拨编号,商品,从仓库,到仓库,数量,说明,备注,操作时间 等信息实体。如图4.6所示:

​编辑

图4.6 调拨实体属性图

     入库信息实体,主要包括 入库编号,流水,商品,数量,仓库,操作时间 等信息实体。如图4.7所示:

​编辑

图4.7 入库实体属性图

出库信息实体,主要包括 出库编号,流水,商品,数量,仓库,操作时间 等信息实体。如图4.8所示:

​编辑

图4.8 出库实体属性图

**4. **2 .2 ****关系模式设计

一个实体型转换为一个关系模式的集合。实体的属性就是关系的属性,实体的码就是关系的码。

对于实体间的联系则有以下不同的情况:

在信息化苏宁云商(沈阳大区)有限公司库存管理系统中,实体有用户实体,商品分类实体,商品实体,仓库实体,调拨实体,入库实体,出库实体等等,他们之间的关系如图4.11所示:

​编辑

图4.11 实体之间关系图

4.3 本章小结

本章主要介绍的内容是总体设计或者概要设计,介绍了信息化智能商务平台苏宁云商(沈阳大区)有限公司库存管理系统的设计,主要是在架构设计、总体模块设计和数据库设计的方面介绍的,为进一步的详细设计做准备。

第5章  详细设计

详细设计阶段的任务就是把在总体设计阶段提出的比较抽象概括的解决问题的方法具体化,也就是“应该怎样具体地实现这个系统”。在本阶段将包括数据库的设计和每个模块的详细设计,确定实现模块功能所需要的算法和数据结构。

5.1 后台设计

5.1.1 角色权限设计

普通用户或管理员输入自己的用户账号、密码,通过身份验证后可以进入相应的管理界面首页。管理员管理页面分为权限管理、用户管理、库存管理、商品管理、仓库管理、调配管理等功能。普通用户管理页面分为库存管理、商品管理、申请管理、仓库管理等模块。

5.1.2 角色验证设计

当用户需要登录的时候,需要有响应的页面来实现这一功能。登录界面是用来支持用户进行登录功能操作的界面,当在界面中输入普通用户的用户名、密码,就可以通过身份验证进入该系统。 登录界面需要让用户输入用户名、密码。如果是错误登录信息造成的还要显示错误信息。否则,当信息输入和权限选择正确时,将分别将用户导入各自对应的操作界面首页。

用户分为普通用户和管理员两种。每种用户具有不同的权限,能完成不同的操作。普通用户具有收发信息功能,留言功能以及查看公司名片夹功能等。管理员用户是系统的最高权限具有系统所有功能的操作。用户登录和身份验证功能模块的设计流程如图5.1所示:

​编辑

图5.1 管理员登录流程图

管理员登录信息验证界面是非常重要的一部分,它接收登录表单提交的信息,并在用户信息表里检验是否存在对应的用户,和判断用户的类型以便获得相应的权限。

5.2 数据库设计

5.2.1 逻辑结构设计

1 用户( 用户编号,用户名,密码,姓名,权限,联系电话,联系地址 )

2 商品分类( 商品分类编号,分类 )

3 商品( 商品编号,商品名称,分类,品牌,型号,数量,登记时间 )

4 仓库( 仓库编号,仓库名称,说明 )

5 调拨( 调拨编号,商品,从仓库,到仓库,数量,说明,备注,操作时间 )

6 入库( 入库编号,流水,商品,数量,仓库,操作时间 )

7 出库( 出库编号,流水,商品,数量,仓库,操作时间 )

5.2.2 物理结构设计

由各个关系模式和根据需求分析阶段数据字典的数据项描述,给出各数据表结构。

(1)用户信息表如表5.1所示:

表5.1 用户信息表

序号字段名称数据类型长度主键描述
1yhidINTEGER11用户编号
2yhmVARCHAR40用户名
3mmVARCHAR40密码
4xmVARCHAR40姓名
5qxVARCHAR40权限
6lxdhVARCHAR40联系电话
7lxdzVARCHAR40联系地址

(2)商品分类信息表如表5.2所示:

表5.2 商品分类信息表

序号字段名称数据类型长度主键描述
1spflidINTEGER11商品分类编号
2flVARCHAR40分类

(3)商品信息息表如表5.3所示:

表5.3 商品信息表

序号字段名称数据类型长度主键描述
1spidINTEGER11商品编号
2spmcVARCHAR40商品名称
3flVARCHAR40分类
4ppVARCHAR40品牌
5xhVARCHAR40型号
6slVARCHAR40数量
7djsjVARCHAR40登记时间

(4)仓库信息表如表5.4所示:

表5.4 仓库信息表

序号字段名称数据类型长度主键描述
1ckidINTEGER11仓库编号
2ckmcVARCHAR40仓库名称
3smVARCHAR40说明

(5)调拨信息表如表5.5所示:

表5.5 调拨信息表

序号字段名称数据类型长度主键描述
1dbidINTEGER11调拨编号
2spVARCHAR40商品
3cckVARCHAR40从仓库
4dckVARCHAR40到仓库
5slVARCHAR40数量
6smVARCHAR40说明
7bzVARCHAR40备注
8czsjVARCHAR40操作时间

(6)入库信息表如表5.5所示:

表5.5 入库信息表

序号字段名称数据类型长度主键描述
1rkidINTEGER11入库编号
2lsVARCHAR40流水
3spVARCHAR40商品
4slVARCHAR40数量
5ckVARCHAR40仓库
6czsjVARCHAR40操作时间

(7)出库信息表如表5.5所示:

表5.7 出库信息表

序号字段名称数据类型长度主键描述
1ckidINTEGER11出库编号
2lsVARCHAR40流水
3spVARCHAR40商品
4slVARCHAR40数量
5ckVARCHAR40仓库
6czsjVARCHAR40操作时间

5.2 系统实施

系统实施是指将系统设计阶段的结果在计算机上实现,将原来纸面上的·类似于设计图式的新系统方案转换成可执行的应用软件。实施阶段的主要活动:物理系统的建立,程序的编制,系统调试,系统切换,系统维护,系统评价。

界面也称作UI(User Interface),是人机交互重要部分,也是系统给用户使用的第一印象,是整个系统的重要组成部分。所谓的用户体验大部分就是指界面设计的体验。

本系统的名称是“苏宁云商(沈阳大区)有限公司库存管理系统”,界面要求是简洁大方,避免过度包装,目的是为了为企业用户提供一个操作平台,普通用户在本系统中只是商品管理、库存管理、信息浏览等,管理员管理除了拥有普通用户的功能还具有权限分配和用户管理。

5 **. **2.1 ****登录模块界面

登录系统首页,出现用户名、密码的输入框,填写用户名和密码点击【提交】按钮,即可登录;也可以点击【重置】按钮,进行重新录入。具体的登录页面如图5.1所示:

​编辑

图5.1 登录界面图

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%>

<%@ page import="com.util.DBO"%>

<%

DBO db=new DBO();

request.setCharacterEncoding("gb2312");

String yhm=(String)request.getParameter("yhm");

String mm=(String)request.getParameter("mm");





String sql="";sql="select * from yonghu where yhm='"+yhm+"' and mm='"+mm+"' ";System.out.println("sql="+sql);

db.open();

ResultSet rs=db.query(sql);

out.println("<script>");

if(rs.next()){session.setAttribute("yhm",rs.getString("yhm"));

session.setAttribute("mm",rs.getString("mm"));

session.setAttribute("qx",rs.getString("qx"));

;



out.println("alert('登录成功');");

out.println("window.location='index.jsp'");

}else{

out.println("alert('用户名或者密码错误');");

out.println("window.location='login.jsp'");

}

out.println("</script>");

%>

5.2.2用户管理界面

​编辑

主要代码: 

<table width="100%" border="1" bordercolor="#b1c7e0" bordercolordark="#FFFFFF" cellspacing="0" cellpadding="0" class="tab01">

      <tr>

        <td class="t" align="center" height="28" width="20">用户编号</td>

       

        <td class="t" align="center" height="28" width="20">用户名</td>

       

        <td class="t" align="center" height="28" width="20">密码</td>

       

        <td class="t" align="center" height="28" width="20">姓名</td>

       

        <td class="t" align="center" height="28" width="20">权限</td>

       

        <td class="t" align="center" height="28" width="20">联系电话</td>

       

        <td class="t" align="center" height="28" width="20">联系地址</td>

       

 <td class="t" align="center" width="15%">操作</td>

          </tr>

<%



int Page=0;

int maxPage=0;

if(rs!=null){

String str=(String)request.getParameter("Page");

if(str==null){

str="0";

}

int pagesize=10;

rs.last();

int RecordCount=rs.getRow();



if(RecordCount>0){

System.out.println("RecordCount=="+RecordCount);

maxPage=(RecordCount%pagesize==0)?(RecordCount/pagesize):(RecordCount/pagesize+1);

 Page=Integer.parseInt(str);

if(Page<1){

  Page=1;

}else{

if(Page>maxPage){

Page=maxPage;

}}

rs.absolute((Page-1)*pagesize+1);

for(int i=1;i<=pagesize;i++){

%>









      <tr>

        <td  align="center" height="28" ><%=rs.getString("yhid")%></td>

       

        <td  align="center" height="28" ><%=rs.getString("yhm")%></td>

       

        <td  align="center" height="28" ><%=rs.getString("mm")%></td>

       

        <td  align="center" height="28" ><%=rs.getString("xm")%></td>

       

        <td  align="center" height="28" ><%=rs.getString("qx")%></td>

       

        <td  align="center" height="28" ><%=rs.getString("lxdh")%></td>

       

        <td  align="center" height="28" ><%=rs.getString("lxdz")%></td>

       

 <td class="t" align="center" width="15%"><a href="yonghuupdate.jsp?keyid=<%=rs.getString("yhid")%>">修改</a>|

 <a href="yonghudelete.jsp?keyid=<%=rs.getString("yhid")%>"  onClick="javascript:if(confirm('是否删除')){return true;}else{return false;}">删除</a>|

 <a href="yonghudetail.jsp?keyid=<%=rs.getString("yhid")%>">查看</a>|

 </td>

          </tr>

  

  

  

  

  

  

    <%

try{

if(!rs.next()){break;}

}catch(Exception e){System.out.println(e.toString());}

}

}

 %>



 <tr>

    <td height="38" width="100%" colspan="10"><div align="center"><table width="98%"  border="0" cellspacing="0" cellpadding="0">

  <tr>

 <td align="right">当前页数:[<%=Page%>/<%=maxPage%>] 

<%if(Page>1){%>

<a href="yonghulist.jsp?Page=1">第一页</a> <a href="yonghulist.jsp?Page=<%=Page-1%>">上一页</a>

<% }

if(Page<maxPage){%>

<a href="yonghulist.jsp?Page=<%=Page+1%>">下一页</a> <a href="yonghulist.jsp?Page=<%=maxPage%>">最后一页 </a>

<%}



}



%>

    </table></td>

5.2.3商品模块界面

​编辑

5.2.4 仓库模块界面

​编辑

5.2.5 入库模块界面

​编辑

大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者