马晓荣,吴银川
(1.陕西职业技术学院陕西西安710100;2.西安石油大学陕西西安710065)
随着我国改革开放的不断深入,经济的快速发展,企业要想在激烈的竞争中立于不败之地,现代化的管理是必不可少的。库存管理是企业经营过程中一个非常重要的环节,尤其对库存管理的实时性要求更为重要[1-2]。传统的仓库管理工作主要是依靠手工来完成,不能及时监控商品储存数量、对库存产品数量报警以及库存产品失效报警等问题。这些问题将直接影响生产和销售的方便性和管理的规范性。为了加快库存管理的信息化,提高库存管理的处理效率,建立库存管理系统已经是企业发展过程中一个亟待解决的问题[3]。
1)基本信息管理
基本信息包括客户信息、仓库信息和用户信息。客户可以分为供应商和购货商两种类型。在产品入库时,需要提供供应商的信息;在产品出库和退货时,需要提供购货商的信息。仓库信息包括仓库编号、仓库名称和仓库说明等信息。用户信息包括用户名、密码和员工姓名等信息。
基本信息管理模块要求实现对客户信息、仓库信息和用户信息的添加、删除、修改和查看等操作。
2)产品信息管理
产品信息管理模块需要实现对产品类型的添加、删除、修改和查看以及对产品信息的添加、删除、修改和查看等操作。
3)库存操作管理
库存操作由仓库管理员执行,库存操作管理模块可以实现入库管理、出库管理和库存盘点等功能。
入库可以分为采购入库、生产入库、退货入库、退料入库等情况。入库操作需要记录相关的产品信息、仓库信息、客户信息、经办人、涉及金额和入库时间等信息。出库可以分为销售出库、退货出库、用料出库等情况。出库操作需要记录相关的产品信息、仓库信息、客户信息、经办人、涉及金额及出库时间等信息。对库存产品进行整理,纠正不准确的库存数据即库存盘点。由于人为操作等原因,系统中的库存数据与实际数据之间可能会存在误差。所以每隔一段时间就需要对库存进行盘点,从而保证库存数据的准确性[4]。
4)库存警示管理
库存中的产品接近或超过临界值时需要进行报警即库存警示。在产品信息中,包含产品的合理数量范围和有效期限。产品数量小于合理数量的下限、产品数量大于合理数量的上限、产品出现接近或超过有效期限时都需要报警。
库存警示管理模块可以实现库存产品数量报警和库存产品失效报警。
5)统计查询管理功能
统计查询管理模块可以对库存产品进行各种类型的统计和查询,从而使用户能够全面地了解库存状况[5]。统计查询管理模块可以实现产品入库统计报表和库存产品流水线统计报表。
本系统将用户分为系统管理员用户和普通用户两种。系统管理员用户Admin可以管理其他用户的信息,在其他方面与所有用户的权限相同。库存管理系统的总体功能模块图如图1所示。
图1 库存管理系统功能模块图Fig.1 Function module diagram of the inventory management system
仔细分析用户在使用系统时的工作过程,对于多类型用户的管理系统来说,每一类用户的工作流程都是不相同的。多用户系统的工作流程都是从用户登录模块开始,对用户的身份进行认证。身份认证一般分为确认用户是否是有效的系统用户以及确认用户类型两个过程。第1个过程决定用户能否进入系统,第2个过程根据用户的类型决定用户的操作权限,从而决定用户的工作界面。本系统的流程分析如图2所示。
图2 库存管理系统流程图Fig.2 Flow chart of the tnventory management system
通过基于SQL Server2005的库存管理系统的总体分析与设计之后对数据库进行设计。本系统创建的数据库名为Store。数据库Store包含以下8个表:客户信息表Client、仓库信息表Storehouse、用户信息表Users、产品类别表ProType、产品信息表Product、入库操作信息表StoreIn、出库操作信息表TakeOut和库存产品信息表ProInStore。
客户信息表Client用来保存客户的基本信息。其基本结构如表1所示。
表1 Client的结构Tab.1 Structure of the client
另外,仓库信息表Storehouse用来保存仓库信息,它的字段主要包括仓库编号Sid、仓库名称Sname和仓库说明Memo等;用户信息表Users用来保存用户信息,它的字段主要包括用户名UserName、密码Pwd及用户类型User_type(1-系统管理员用户,2-普通用户)等;产品类别表Protype用来保存产品的类别,它的字段主要包括产品类别编号Typeid、产品类别名称Typename和上级产品类别UpperId(如果UpperId=0,则表示此产品类别为一级类别)等;产品信息表Product用来保存产品信息,它的字段主要包括产品编号Pid、产品名称Pname、产品类型编号TypeId、产品规格Pstyle、计量单位Punit、参考价格Pprice、产品数量下限Plow、产品数量上限Phigh、有效期Valid(以天为单位)、在到达有效期前几天发出警告AlarmDays等;入库操作信息表StoreIn用来保存入库操作的基本信息,它的字段主要包括入库操作类型SiType(包括采购入库、生产入库、退货入库、退料入库等)、入库产品编号Pid、生产日期MakeDate、入库产品单价Pprice、入库产品数量Pnum、客户编号Cid、仓库编号Sid、经办人EmpName、入库日期OptDate等;出库操作信息表TakeOut用来保存出库操作的基本信息。它的字段主要包括出库操作类型Ttype(包括销售出库、退货出库、用料出库等)、出库产品编号Pid、出库产品单价Pprice、出库产品数量Pnum、客户编号Cid、仓库编号Sid、经办人EmpName、出库日期OptDate等;库存产品信息表ProInStore用来保存库存产品的基本信息。它的字段主要包括产品存储编号SpId、产品编号Pid、产品入库单价Pprice、产品数量Pnum、生产日期MakeDate、仓库编号Sid等。
本系统采用Visual C++作为前台开发工具,使用SQL Server2005作为后台数据库。首先在Visual C++设计工程的框架,包括创建工程、在工程中添加和注册数据库访问控件、添加数据库访问类、为每个表创建对应的类、设计系统主界面、设计登录对话框等。
其次是实现客户管理模块设计、仓库管理模块设计、用户管理模块设计、产品管理模块设计、库存操作管理模块设计、库存警示管理模块设计以及统计查询管理模块设计等。
下面以统计查询管理模块的设计为例,来介绍其实现。统计查询管理模块实现产品出入库统计表和库存产品流水统计表两个功能。本系统中为了提高系统的效率,建立了特定的视图等对象,既提高了数据访问速度,又隔离了用户端程序对数据库的直接访问,提高了整个系统的安全性,经过系统的运行,证明以上方法是切实可行的。在实现产品出入库统计表对话框中创建了3个视图v_StoreIn,v_TakeOut和v_ProInStore。以对每种产品统计库存总数量来建立视图为例,具体代码如下:
USE Store
GO
CREATE VIEW dbo.v_ProInStore
AS
SELECT p.Pid,SUM(s.Pnum)AS SumNum
FROMdbo.Product p INNER JOIN
Dbo.ProInStore s ON p.Pid=s.Pid
GROUP BY p.Pid
添加对话框,设置相应的属性即可。
基于SQL Server2005的库存管理系统,规范了库存管理中对基本信息、产品信息、库存操作、库存警示和统计查询的管理,使库存管理更加科学化。通过实际使用表明了该系统功能齐全、使用方便、界面友好[6],为企业节约了成本,提高了库存管理的信息化水平。
[1] 王想实.基于C/S结构的超市库存管理系统的设与实现[J].湖南工业职业技术学院学报,2009(4):29-30.WANG Xiang-shi.Supermarket store management system design and implementation based on C/S structure[J].Journal of Hunan Industry Polytechnic,2009(4):29-30.
[2] 董明.基于C#仓库库存管理系统设计与实现[J].才智,2012(10):50.DONG Ming.Store management system design and implementation based on C#[J].Intelligence,2012(10):50.
[3] 刘燕,吴娴,罗治平.基于数据库的库存管理系统的研究[J].制造业自动化,2009(9):35-37.LIU Yan,WU Xian,LUO Zhi-ping.Study of inventory management system based on database[J].Manufacturing Automation,2009(9):35-37.
[4] 陈世洪,王晓海,廖建华.SQL Server2000管理、开发及应用实例详解[M].北京:人民邮电出版社,2006.
[5] 邹建.IT名人堂·深入浅出:SQL Server 2005开发、管理与应用实例[M].北京:人民邮电出版社,2008.
[6] 徐炼.基于SQL Server2000教务管理系统的设计与实现[J].教学研究,2012(8):88-92.XU Lian.Research of the design and implementation of education administration management system based on SQL server2000[J].Teaching Research,2012(8):88-92.