库存管理系统开发java课设含可运行程序.docx
《库存管理系统开发java课设含可运行程序.docx》由会员分享,可在线阅读,更多相关《库存管理系统开发java课设含可运行程序.docx(33页珍藏版)》请在冰豆网上搜索。
库存管理系统开发java课设含可运行程序
库存管理系统开发
1.设计目的
库存管理系统可帮助企业的仓库管理人员对库存物品的入库、出库、移库、盘点、补充订货和生产补料等操作进行全面的控制和管理。
库存管理系统从级别、类别、货位、批次、单价、ABC分类等不同角度来管理库存物品的数量,库存成本和资金占用情况。
以便及时了解和控制库存业务各方面的准确情况和数据、库存成本和资金占用情况。
而且可以及时了解和控制库存业务各方面的准确情况和数据,做到账、物、卡相符。
库存管理系统是一个多层次的管理系统,可以通过灵活的设置实现不同层次的管理。
通过此课程设计,通过实现Java程序开发的环境搭建与配置,进一步在实际运用中学习和掌握Java程序开发的全过程。
进一步熟悉掌握Java程序设计语言的基础内容,并通过亲自动手编写程序,不仅可以拓展知识面,使所学的知识融会贯通,还可以锻炼调试的能力。
从而在各个方面提高自身的能力。
2.设计方案论证
2.1系统总体设计:
软件配置:
数据库:
SQLServer,操作系统:
Unix图形用户界面简称GUI,是用图形的方式,借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出指令、启动操作,并将系统的运行结果同样以图形的方式显示给用户的技术。
JAVA的图形用户界面技术即为使用java.awt包来创建图形界面的方法,包括AWT组件、窗口和菜单设计、布局管理期以及绘图操作等。
2.2需求分析:
一个优秀的库存管理系统不仅能管理已经发生出入库任务,提供实时精确的库存存量状态信息,还可以通过库存状态的设置,对即将发生的出入库业务进行预测管理,准确地得出未来某个时点上的预计库存及相应得资金占用情况。
当销售订单到来时,企业的ERP系统根据已有的产品成品库存信息制定生产计划。
当下达生产任务时,根据已有的库存信息制定采购计划。
当评估企业经营生产计划时,根据库存物料盘点计划产品成本和库存物料资金占用情况。
因此,可以说库存管理系统是整个企业信息化系统开发中最关键、最重要的部分。
作为一个企业信息交互平台,应包括以下功能:
(1)企业库存基本数据
是整个库存管理系统的基础,库存管理的出入库和移动都要根据库存基础数据来进行操作。
它包括库存系统设计、仓库基本信息、库位基本信息、物品库存信息、库存状态信息,表单、版号的设定,单据字头设定,自定义栏设定等一些系统基本信息。
(2)企业仓库的作业管理
主要包括:
采购进货、采购退货、生产作业、外协作业、销售出货、销售退货、杂类入库、杂类出库、库存调拨、库存盘点和不合格产品处理。
(3)质检录入管理
主要包括:
来料质检和退料质检。
来料质检主要负责企业车间从外购进原材料的问题。
退货质检主要负责对公司的由于质量问题而被消费者退回来的产品进行质量复查,确认产品质量若有问题,完成退货质检工作。
(4)单据查询
主要用来处理各种单据的查询功能。
在库存管理系统中,要处理的单据主要有采购进货、采购退货、生产作业、外协作业、销售出货、销售退货、杂类入库、杂类出库、库存调拨、库存盘点和不合格产品处理等。
可对这些单据进行查询和执行各种打印输出报表功能。
(5)查询统计功能
主要用来统计公司的各种数据库查询和统计功能。
包括对库存信息的查询统计,分仓处理的统计,表明细查询、不合格产品库的产品信息统计查询。
(6)库存统计功能
主要包括:
采购入库统计和采购出库统计功能。
采购入库统计:
采购公司的原料,填写采购入库统计表,由系统进行统计。
采购出库统计:
对企业销售出库产品进行统计,统计当日销售的各类产品信息。
2.3概要设计:
库存管理系统是一个专用的系统。
只有公司的相关职员可以进入库存管理系统的主界面,操作各个版面的功能,如图所示:
在一个库存管理系统中,通常由五个方面的工作,包括入库管理、出库管理、移库管理、库存盘点、库存结账。
这几个方面通常是一个库存管理系统是整个企业信息化系统开发中最关键、最重要的功能。
通常一个库存管理系统得角色是各个公司库存管理的使用者,各个产品的信息,公司产品买卖进出库,仓库信息,库存盘点信息,供货单位信息和收货单位信息。
图1库存管理系统业务流程图
如图所示,在库存管理系统中,公司的相关职员输入正确的姓名和密码后进入系统的主界面,按以上业务流程完成相关的业务活动。
2.4详细设计:
2.4.1系统功能设计:
本系统主要包括9个模块:
图2库存管理系统功能模块图
(1)系统登录模块:
库存管理中,登录模块是整个库存管理系统的基础,只有通过此界面的认可,才能进入库存管理系统,正确执行库存管理系统的功能。
登录部分实现对企业员工登录的验证、标志,从而为相对应用户的操作系统提供依据。
(2)库存管理系统主界面:
在这个页面中可以进入库存管理系统得全部分支功能子界面。
包括库存货物信息登记处理、货物出入库信息登记处理、系统仓库盘存登记处理、仓库信息登记处理等。
(3)登记货品信息模块:
是库存管理系统得主要功能模块,可以获取仓库货品的详细信息,提高库存管理系统的效率。
(4)入库信息登记模块:
当一个公司的仓库进货时,需要进入这个表格的填写界面,输入正确的货品信息,完成货品信息的录入。
(5)出库信息登记模块:
当一个公司将自己的产品销售出去时,进入这个界面完成对公司产品详细信息进行详细记录。
(6)仓库盘点管理模块及仓库信息登记模块:
用来统计仓库的有关信息,建立正确而全面的仓库信息资料。
2.4.2数据库设计:
在库存管理系统中包括物料、仓位、库位、职员、部门、仓库管理五个实体。
其中每个职员属于某个部门,仓库管理员每个库位都属于某个仓库。
系统的核心是库存移动,包括出入库、盘点、物料移动等操作。
每次库位移动都是某种物料在仓库中库存的变动,并且由某个仓库管理员进行操作。
数据库流程图设计:
仓库管理系统主要涉及三个实体:
公司的相关职员、公司的货物、库位库存管理系统的系统页面。
其中三个关系类型相关职员与货物信息之间的关系是M:
N,系统页面和货物信息之间的关系是1:
N,相关职员和系统页面的关系是1:
1。
图3系统E-R图
数据库表的设计:
(1)货物属性表
物料属性表记录仓库管理所有物料的各种参数和相关信息。
在系统中只能由管理员对物料属性进行删除、插入、更新。
不同用户只能进行查询
表1货物属性表
字段名称
数据类型
大小
默认值
可否为空
主键
货物编码
字符
10
无
否
是
货物名称
字符
20
“物料”
否
否
分类代码
字符
10
无
否
否
计量单位
字符
10
无
否
否
原始库存
双精度数
10
无
可
否
入库单价
双精度数
10
无
可
否
存放仓库
字符
10
无
否
否
保质期
整型
10
无
可
否
(2)物品分类代码表
物品分类代码表保存物品的分类信息,通常很少变动。
因此在这个示例中,我们预先输入了货物代码表的内容,而不是提供修改货物分类代码的功能。
表2物品分类代码表
字段名称
数据类型
大小
默认值
可否为空
主键
分类代码
字符
4
无
否
否
分类名称
字符
20
无
否
否
(3)仓库信息表
仓库信息表保存了一个组织所有仓库中的相关信息。
对于普通的仓库员工只有具有查询的功能,仓库和仓库信息的变更也只能由管理员进行操作。
主键应该是“仓库代码+仓库名称”但是为了保证主键的唯一性,我们新增了一个字段仓库库位代码,它的组成规则为:
“仓库代码+‘—’+库位代码”,这样的仓库库位代码也唯一地决定了一个库位。
表3仓库信息表
字段名称
数据类型
大小
默认值
可否为空
主键
仓库代码
字符
9
无
否
是
仓库名称
字符
20
无
否
否
货物种类
字符
4
无
否
否
库存总件
字符
20
“库位”
否
否
库存金额
双精度数
10
无
否
否
库位代码
双精度数
10
无
否
否
(4)职员信息表
职员信息表保存了企业或组织所有职员的信息,与部门信息表一样,在库存管理系统中需要使用支援信息表,但是在整个GRP系统中,表是由其他系统进行维护的。
表4职员信息表
字段名称
数据类型
大小
默认值
可否为空
主键
工号
字符
6
无
否
是
姓名
字符
10
无
否
否
所属部门代码
字符
4
无
否
否
所属部门名称
字符
20
无
否
否
职务
字符
20
无
否
否
登录密码
字符
20
无
否
否
权限
字节
-
3
否
否
(5)盘存表
盘存表保存的是在每一次盘点后有仓库管理员输入的仓库中实际所有的物料信息。
本表主键为“货品代码+类别+等级+仓库编码+当日库存件数”共同作为这个表的主键。
表5盘存表
字段名称
数据类型
大小
默认值
可否为空
主键
货物代码
字符
10
无
否
是
货物规格名称
双精度数
-
无
否
否
类别
字符
20
无
否
是
等级
单精度值
10
无
否
是
仓库代码
字符
9
无
否
是
当日库存件数
单精度值
10
无
否
是
盘存件数
字符
6
无
否
否
盈亏件数
单精度值
10
无
否
否
盈亏金额
双精度值
20
无
否
否
(6)系统出库统计表
系统出库统计表的主要功能就是在公司卖出货物,仓库货物流出记录的表格。
通过这些可以统计一个仓库货物出库的详细信息,这个功能也是库存管理系统的重要功能之一。
表6系统出库统计表
字段名称
数据类型
大小
默认值
可否为空
主键
出库日期
日期型
10
无
否
是
出库单号
单精度数
-
无
否
否
货物规格名称
字符
20
无
否
是
类别
字符
10
无
否
是
等级
字符
9
无
否
否
存放仓库
字符
10
无
否
否
件数
字符
6
无
否
否
单价
单精度值
10
无
否
否
税率
双精度值
20
无
否
否
金额
单精度值
20
无
否
否
收货单位
字符
10
无
否
否
经办人
字符
10
无
否
否
经办人编码
单精度数
10
无
否
否
(7)系统入库登记表
系统入库登记表的主要功能就是公司购进货物时,仓库货物流入时记录的表格。
它的基本字段和系统出库登记表的字段相同,只加入了一些特殊的字段反映入库的特性,将“出库日期”“出库单号”改为“入库日期”“入库单号”即可。
故表略。
(8)库存出入库汇总表
库存出入库汇总表保存了所有保存引起库存货物出入的交易信息,是库存管理系统的核心。
表7库存出入库汇总表
字段名称
数据类型
大小
默认值
可否为空
主键
交易流水号
自动长整型
-
无
否
是
交易类型代码
字符
4
无
否
否
单据编号
字符
20
无
是
否
货物代码
字符
10
无
否
否
货物数量
双精度数
-
无
否
否
货物批号
字符
20
无
否
否
生产日期
日期\时间
-
无
否
否
存放仓库代码
字符
9
无
否
否
物料来源或取向代码
字符
4
无
否
否
外部经手人代码
字符
6
无
否
否
入库日期
日期\时间
-
无
否
否
仓库名称
字符
6
无
否
否
原始库存件数
双精度数
4
无
可
否
初期库存件数
双精度数
4
无
可
否
本期入库件数
双精度数
4
无
可
否
本期出库件数
双精度数
4
无
可
否
当前库存金额
双精度数
4
无
可
否
累计入库金额
双精度值
10
无
否
否
累计入库件数
单精度值
10
无
否
否
2.4.3创建数据库
(1)采用Qracle数据库管理系统。
启动Qracle数据库管理系统的DBCA功能,创建数据库.并打开OEM控制台。
进
而创建货物属性(GOOD-INFO)表。
创建货物汇总(STOCK-INFO)表。
(2)运用标准的SQL语言来完成GOOD-INFO表的创建。
具体方法略。
2.5库存管理系统的具体设计:
2.5.1登录模块
在库存管理系统中,登陆界面是非常重要的,它是整个库存管理系统的基础,只有通过此登录界面的认可,才能进入库存管理系统,正确的执行库存管理的功能。
登录模块如下图所示:
图4库存管理系统登录模块
在此窗口中公司员工必须输入正确的姓名和密码,才能进入系统主界面,事先将公司员工的姓名和密码以及ID号存在一个Qracle数据库worker-info表中,当员工登录此界面时,系统将用户输入的姓名和密码与数据库中事先存放的姓名和密码进行比较,相同则进入系统主界面,否则提示用户输入密码错误或者提此用户不存在。
构建系统主界面,设置系统界面大小。
在本界面中,设置系统的界面大小为600*500,同时设定界面的显示Title为[库存管理系统]。
及系统中各个控件的相关属性和字体,通过以下代码,将系统中创建的各个子菜单加入到各个主菜单中,同时设定菜单的显示。
}
2.5.3登记货品信息
登记货品信息是库存管理系统的主要界面,通过这个界面信息的正确输入可以获取仓库货品的详细信息,从根本上为公司库存服务,提高库存管理系统的效率。
图5库存管理系统图
在货品信息登记子界面中,必须输入正确的货品代码,货品名称,货品类别,即以货品登记和存放的仓库编号。
同时为了公司部门之间的信息共享,必须输入正确的存放入库单价和库存数量。
实现以上界面的Java重要代码如下:
设置系统界面大小,在本界面中,设置系统的界面大小为600*400,同时设定界面的显示Title为[库存管理系统]。
关于页面中各个控件的相关属性和字体,大小的设置见表:
2.5.4系统盘点
在一个库存管理系统中,系统盘点是系统的一个重要功能,通常这是一个公司的主要业务之一,也是库存管理系统的重要功能之一。
图6系统盘存数录入图
在盘存主界面中,如入正确的盘存数据录入信息,完成正确的数据录入信息功能,单击[提交]按钮,结束公司仓库盘存业务。
2.5.5入库管理和出库登记等模块
入库管理登记也是库存管理系统的主要功能模块,当一个公司的仓库进货时,我们通常要进入这个表格的填写界面,输入正确的货品信息,完成货品信息录入,对应的仓库入库等及信息子界面。
在库存管理系统入库登记信息主界面中,必须输入正确的入库登记信息,包括入库日期和入库单号,以及货品编码,库存数量,供货单位和经办人信息等一些关于物品入库的详细信息。
而出库登记模块是和入库模块相对应的系统模块,当一个公司将自己的产品销售出去是,就要进入这个系统界面来完成对公司产品出库信息进行详细记录,这个也是库存管理系统的重要功能之一。
还有例如业务单位信息、业务信息等模块的设计,由于篇幅的关系,没有进行详细的描述。
3.设计结果与分析
通过一段时间的努力,我终于圆满的完成了这次课程设计。
库存管理系统的首页如图所示:
图7进入库存管理系统
当输入正确的登录名和密码之后就可以进入库存管理的主页面进行入库管理、出库管理、移库管理、库存盘点、库存结账等各个方面的操作。
能够使企业的仓库管理人员对库存物品的入库、出库、移库、盘点、补充订货和生产补料等操作进行全面的控制和管理,从而做到账、物、卡相符。
通过此次从课程设计,我学会了库存管理系统的设计和实现方法,在设计的过程中应掌握的内容:
在Oracle9i的SQL-Plus控制台中创建数据库表格;使用JDBC技术来连接数据和执行各种SQL语句;使用Java语言进行各种图形化界面开发。
另外此次课程设计我也学会了库存管理系统的分析方法,它包括数据表格的字段分析和E-R图的分析,这些功能在系统分析中占有重要的地位。
是库存管理系统设计不可或缺的一部分。
4.设计体会
通过翻阅书籍查找各种资料我了解到,库存管理能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
库存管理信息系统是一种典型的信息管理系统。
它的作用不亚于进销存系统,它决定一个企业以后的发展。
通过对大型的完善的库存系统的了解,我也发现了我设计的库存管理系统中的不足,如采用的是单线程技术,关闭系统一个界面就关闭了整个系统是很不科学的。
若采用多线程的方法更好些。
而且打印报表也是一个可选的功能,在此次设计中没有实现,是需要以后改进的地方。
另外我采用的是Fame技术界面不够完美。
我想这些于我的经验不足和时间不充裕是分不开的。
但是由于我定位的是中小企业所以这些功能已经够用了。
通过此次课程设计,不仅锻炼了我自主学习的能力,同时通过自己动手操作,使在书本上的所学知识进一步融会贯通。
使我得能力得到了进一步的充实和提高。
并且对我以后的设计打下坚实的基础和丰富经验。
最后,我要感谢老师在此次课程设计中对我的帮助,使此次课程设计园满完成。
5.参考文献
[1]苗春义.Java项目开发全程实录(软件项目开发全程实录)[M].北京:
清华大学出版社,2008.6:
20-95
[2]邢素萍.JAVA办公自动化项目方案精解[M].北京:
航空工业出版社,2006.9:
305-350
[3]王国辉,李钟尉,王毅.Java程序设计自学手册[M].北京:
人民邮电出版社,2008.2:
288-331
[4]许晓曼,唐文忠.Java企业应用系统框架的比较与选择[J].计算机与信息技,2006,9
[5]刘志成,翁健红.Java程序设计课程的案例设计[J].电脑学习,2008,1
6附录
packageuntitled5;
importjava.io.*;
import.*;
importjava.sql.*;
importjava.lang.*;
importjavax.sql.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importcom.borland.jbcl.layout.*;
/**
*
Title:
*
Description:
*
Copyright:
Copyright(c)2003
*
Company:
*@authornotattributable
*@version1.0
*/
publicclassdelreader1extendsJFrame{
JPanelcontentPane;
XYLayoutxYLayout1=newXYLayout();
JLabeljLabel1=newJLabel();
JLabeljLabel2=newJLabel();
JLabeljLabel3=newJLabel();
JTextFieldjTextField1=newJTextField();
JLabeljLabel4=newJLabel();
JTextFieldjTextField2=newJTextField();
JLabeljLabel5=newJLabel();
JTextFieldjTextField3=newJTextField();
JLabeljLabel6=newJLabel();
JTextFieldjTextField4=newJTextField();
JLabeljLabel7=newJLabel();
JTextFieldjTextField5=newJTextField();
JButtonjButton1=newJButton();
//Constructtheframe
publicdelreader1(){
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try{jbInit();}
catch(Exceptione){e.printStackTrace();}
}
//Componentinitialization
privatevoidjbInit()throwsException{
contentPane=(JPanel)this.getContentPane();
jLabel1.setFont(newjava.awt.Font("SansSerif",0,25));
jLabel1.setForeground(Color.red);
jLabel1.setRequestFocusEnabled(true);
jLabel1.setText("库存管理系统");
contentPane.setLayout(xYLayout1);
this.setSize(newDimension(500,400));
this.setTitle("FrameTitle");
jLabel2.setFont(newjava.awt.Font("SansSerif",0,30));
jLabel2.setText("收货单位信息");
jLabel3.setFont(newjava.awt.Font("SansSerif",0,25));
jLabel3.setText("单位编号");
jTextField1.setText("");
jLabel4.setFont(newjava.awt.Font("SansSerif",0,25));
jLabel4.setRequestFocusEnabled(true);
jLabel4.setText("单位名称");
jTextField2.setText("");
jLabel5.setFont(newjava.awt.Font("SansSerif",0,25));
jLabel5.setText("单位地址");
jTextField3.setText("");
jLabel6.setFont(newjava.awt.Font("SansSerif",0,25));
jLabel6.setText("电话");
jTextField4.setText("");
jLabel7.setFont(newjava.awt.Font("SansSerif",0,25));
jLabel7.setText("联系人");
jTextField5.setText("");
jButton1.setFont(newjava.awt.Font("SansSerif",0,25));
jButt