仓库管理系统设计文档格式.docx
《仓库管理系统设计文档格式.docx》由会员分享,可在线阅读,更多相关《仓库管理系统设计文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
1.仓库管理各种信息的输入;
2.仓库管理各种信息的查询,修改和维护;
3.设备采购报表的生成;
4.在库存管理中加入最高储备和最低储备字段,仓库中的物资设备实现的监控和警;
5.企业各部门的物资需求的管理;
6.操作日志的管理;
7.仓库管理系统的使用帮助。
在下面的各章中我们将以开发一套仓库管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。
整个系统的开发过程严格遵循软件工程的要求,做到模块化分析、模块化设计和代码编写的模块化。
仓库管理系统是针对企业仓库的商品货物的经常出入库和查询统计等方面工作而开发的管理软件。
仓库管理系统是用于完成众多仓库管理业务所面临的日常工作。
根据用户的要求,实现仓库的商品管理、出入库管理、查询管理及用户管理等功能。
用户通过相应的模块,对仓库里的商品的基本情况进行更新、删除和查询,对商品的出库和入库进行管理,对出入库明细进行查询,对使用该系统的用户进行更新、删除和查询,对库存数量进行查询,用户通过简单的操作即可轻松的管理仓库。
仓库管理系统开发的总体任务是实现企业物资设备管理的系统化、规范化和自动化,从而达到提高仓库管理效率的目的。
◆简洁一致,操作便利
◆图形化界面,完备的物资管理功能
◆表格中的文字实时显示
◆本系统基于好用、易用、美观的原则设计了统一的人机界面
◆表格中的文字实时显示。
VisualC++6.0提供了多种多样的数据库访问技术——ODBCAPI、MFCODBC、DAO、OLEDB、ADO等。
它们提供了简单、灵活、访问速度快、可扩展性强的开发技术。
本软件针对企业物资供应管理业务范围及工作特点,设计了设备代码、设备入库、出库、还库、入库信息、出库信息、还库信息、设备需求、查看日志、修改密码等几个模块,这几个子模块包括了企业管理的主要业务,可以全面实现对物资的采购、出库、还库、统计和流通等业务的计算机管理,应用本系统可以在计算机上灵活、方便地管理仓库物资,从而大大的提高了处理效率,使管理更加现代化。
本系统是根据实际情况和具体内容,按一定的要求、科学、合理进行系统分析,设计,具体包括菜单设计、数据输入、库存报警、删除、修改等各种设计。
从而使本系统完全能满足经济性、灵活性、系统性及可靠性的要求。
系统考虑到设计与用户两方面,使其尽量具有好的兼容性,速度快,功能强的特点,可让程序运行相对变得简单而方便,可以简便地运行正确操作。
在VisualC++提供的数据库访问技术中我们做一下简单的比较:
1.1ODBC(OpenDataBaseConnectivity)和MFC(MicrosoftFoundationClassesODBC)ODBC是为客户应用程序访问关系数据库时提供的一个标准借口,对不同的数据库,ODBC提供了一套统一的API,使得应用程序可以应用所提供的API,访问任何提供了ODBC驱动程序数据库.ODBCAPI可以进行一些底层的数据库操作,但代码编制相对来说比较复杂;
而MFCODBC是VC++对ODBCAPI封装得到的,因此可以简化程序设计,但缺点就是无法对数据源进行底层操作.
2.DAO(DataAccessObjects)提供了一种通过程序代码创建和操作数据库的机制.
3.OLEDB(ObjectLinkandEmbeddingDataBase)和ADO(ActiveXDataObjects)OLEDB是VC++开发数据库应用中提供的基于COM接口的新技术.而ADO技术则是基于OLEDB的访问接口,对OLEDB的接口作了封装,定义ADO对象,使得程序开发得到简化,它属于数据库访问的高层接口.
3.1ODBC数据库访问
本程序采用ODBC数据库访问技术与ADO数据库访问技术,在Windows2000下开发的,数据库采用MicrosoftAccess2000开发,程序中以SQL语句来调用数据库,来对数据库的操作。
ODBC是一种使用SQL的程序设计接口。
使用ODBC让应用程序的编写者避免了与数据源相联的复杂性。
这项技术目前已经得到了大多数DBMS厂商们的广泛支持。
MicrosoftDeveloperStudio为大多数标准的数据库格式提供了32位ODBC驱动器。
这些标准数据格式包括SQLserver、Access、Paradox、dBase、FoxPro、Excel、Oracle
以及MicrosoftText。
如果用户希望使用其他数据格式,用户需要相应的ODBC驱动器及DBMS。
(1)Cdatabase类对象提供了对数据源的连接,通过它可以对数据源进行操作。
(2)CrecordView类对象能以控制的形式显示数据库记录。
这个视图是直接连CrecordSet对象的表视图。
(3)CrecoudSet类对象提供了从数据源中提取出的记录集。
CrecordSet对象通常用于两种形式:
动态集、和快照集。
动态集能与其他用户所做的更改保持同步。
快照集则是数据的一个静态视图。
每一种形式在记录被打开时都提供一组记录,区别在于,当用户在一个动态集里滚动到一条记录时,由其他用户或是应用程序听其他记录集对该记录所做的更改就会相应地显示出来。
3.2ODBC数据源的创建
在这一小结中,所使用的操作系统为Windows2000,使用其他操作系统的用户也可以找到类似的位置和选项.
(1)从控制面板中双击“管理工具”图表,然后在新出现的窗口中双击“数据源(ODBC)”.在弹出的对话框中选择不同的选项卡来确定建立数据源的类型.
(2)单击“添加”按钮,从弹出的对话框中选择适当的数据源驱动程序,此处我们选择MicrosoftAccessDriver。
在接下来的对话框中按照程序提示输入相关参数,如数据源名称和说明,同时根据提示选择数据库,如果登录密码等特殊要求,可以单击“高级”按钮进入新的对话框进行设置。
(4)单击“确定”按钮,所选择的数据源进入了ODBC数据源管理器,当用户再次双击“数据源(ODBC)”就会看到新的添加的数据源。
3.3数据源的连接
在VC++程序中使用刚才建立的数据源之前,还必须建立一个到数据源的连接。
在MFC中到数据源的连接封装于Cdatabase类中。
要使用Cdatabase对象,在ODBC数据源管理器中数据源必须已经正确配置。
在同一个应用程序中可以使用多个数据源,或者多个连接对应同一个数据源。
在此,我们要涉及到ADO技术来。
3.4SQL语句的直接执行
通过CrecordSet类可以完成大多数的查询操作,但有时需要对数据库建立新表,删除表和建立新的字段等,这是就需要用到Cddatabase类直接执行SQL语句的机制。
VisualC++中的ODBC类库可以帮助程序员完成绝大多数的数据库操作。
利用ODBC技术可以使程序员从具体的DBMS中解脱出来,从而极大地减少了软件开发的工作量,提高效率并增强了软件的可靠性。
3.5ADO技术介绍
在此,我们要涉及到ADO技术来。
ADO是为Microsoft最新和最强大的数据访问接口OLEDB而设计的,是一个便于使用的应用程序层。
属于高层数据库访问技术,所以相对于ODBC来说,具有面向对象的特点。
同时,在ADO对象结构中,对象与对象之间的层次结构不是非常明显,这会给编写数据库程序带来很多便利,还可以访问多种数据源这一点是和OLEDB一样的,使应用程序具有很好的通用性和灵活性。
它具有访问数据源效率高,方便地Web应用和技术编程接口丰富的特点,ADO可以以ActiveX控件的形式出现,这就大大方便了Web应用程序的编制,支持VisualC++,VisualBasic,VisualJ++以及VBScript和JavaScript等语言。
我们知道OLEDB为任何数据源都提供了高性能的访问,这些数据源包括关系和非关系数据库,电子邮件,文件系统,文本和图形以及自定义业务对象等。
ADO在关键的Internet方案中使用最少的网络流量,并且在最前端和数据源之间使用最少的层数,所有这些都是为了提供轻量,高性能的接口。
同时ADO使用了与DAO相似的约定和特性,使得它更容易于学习。
在ADO中包含了连接对象(Connection),命令对象(Command),记录集对象(Recordest),字段对象(Filed),参数对象(Parameter),错误对象(Error),属性对象(Property)和集合与事件等。
ADO到数据源的连接技术中Connection对象用来实现和数据源的连接。
3.5.1ADO到数据源的连接
创建一个Connection对象非常简单,只需要声明一个_ConnectionPtr型的指针,调用它的CreateInstance
方法即可(_ConnectionPtr是所谓的智能指针,包装了一个Connection接口指针)。
在ADO中,可以用Connection对象的Execute()方法执行命令,也可以用Command对象。
4.1系统设计目标
系统开发的总体任务是实现企业物资设备管理的系统化、规范化和自动化,从而达到提高仓库管理效率的目的。
4.2开发设计思想
仓库管理的物资主要是企业生产所需要的各种设备。
进货后需要填写入库清单、计算机会自动进行信息记录。
企业各个部门根据所需要的物资设备总额和部门生产活动需要提出物资申请,管理员根据需求信息和现存设备总额发放设备。
设备使用完毕需要及时归还入库,填写入库单,计算机会自动记录信息。
仓库管理的特点是信息处理量比较大,所管理的物资设备种类繁多,而且入库单、出库单、需求单等单据的发生量特别大,关联信息多,查询和统计的方式各不相同。
因此在管理上实现起来有一定因难。
在管理的过程中经常出现住处的重复传递:
单据、报表的种类繁多,各个部门管理规格不统一等问题。
本系统在设计过程中,为了克服这些困难,满足计算机管理的需要,采取了下面的一些原则:
程序代码标准化,软件统一化,确保软件的可维护性和实用性
删除不必要的管理冗余,实现管理规范化、科学化。
统一各种原始单据的格式,统一账目和报表的格式
建立操作日志,系统自动记录所进行的各种操作。
界面友好、简单化,做到实用、方便,尽量满足企业中不同层次员工的需要。
4.3系统功能分析
本例中的仓库管理系统需要完成的功能主要有以下几点:
仓库管理各种住处的输入、包括入库、出库、还库、需求信息的输入等
仓库管理各种信息的查询、修改和维护。
在库存管理中加入最高储备和最低储备字段,对仓库中的物资设备实现监控和报警。
企业各部门的物资需求的管理。
操作日志的管理。
仓库管理系统的使用帮助
4.4系统功能模块的设计
经过对仓库管理的系统分析,结合VisualC++程序编制的特点,得到如图所示的系统功能模块图。
(图4-1系统功能模块图)
5.1数据库需求分析
在仔细调查企业仓库物资设备管理过程的基础上,针对本实例,通过对企业仓库管理的内容和数据流程的分析,设计的数据项和数据结构如下:
图5-1数据流程图
设备代码信息,包括的数据项有设备号、设备名称。
现有库存信息,包括的数据项有现有设备、现有数目、总数目、最大库存和最小库存等。
设备使用信息,包括的数据项有使用的设备、使用部门、数目、使用时间和出库时间等。
设备归还信息,包括的数据项有归还设备、归还部门、归还数归还时间和经手人等。
设备需求信息,包括的数据项有需求的部门、需求设备、需求数目和需求时间等。
5.2数据库概念结构设计
这一设计阶段是在需求分析的基础上,设计出能满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。
此实例根据上面的设计规划出的实体有库存实体、入库实体、出库实体、采购实体,还库实体和需求实体。
5.3数据库逻辑结构设计
在上面的实体以及实体之间的关系的基础上,形成数据库中的表格和各个表格之间的关系。
仓库管理系统数据库及各个表格的设计是通过MicrosoftAccess设计开发,包括:
用户管理密码表、设备代码表、设备入库表、设备出库表、现有库存表、部门需求表、设备还库表、操作日志表。
6.1写日志模块
通过操作日志模块,该系统每次改变数据库数据的操作都会在操作日志表格中有相应的记录。
这样可以增强操作人员的责任感,提高系统的安全性,也有利于维护数据库数据的完整性。
此外,一个翔实的操作日志,也给开发过程中的调试,除错带来很大的便利,所以,这个模块的设计被放在了最前面。
在这个类中,保存了一个数据库连接指针m_DBCnt和当前用户ID(m_user)。
在主对话框CDMSDlg中加入一个ClogMngr型的成员变量,并在CDMSDlg:
:
OnInitDialog()中调用起Setup方法进行初始化,设置好数据库连接指针和用户名。
这样当程序中某处需要写信息进入操作日志的时间,只需要调用这个类的AddLog方法即可。
而CDMSDlg:
OnInitDialog内部实现过程时,利用了Connection对象的Exectute方法,直接执行SQL语句,向HOWDO表中加入了一条包含了操作者﹑操作时间和操作内容3个字段的记录。
直接使用SQL语句的方法在表比较简单的时候很快捷,但在表包含比较多个的字段时侯,就不太实用了。
对日志表,我们暂且先使用这种方法。
6.2读日志模块
在项目资源中加入一个对话框,它包含了一个列表框控件,几个编辑框和两个按钮。
这个窗体用以显示系统中所有的日志记录。
它还将实现清空所有记录的功能(*注意:
为了保证日志记录的完整性,安全性,不能单独删除某条记录)。
在删除所有记录时,用SQL语句显得很方便。
但是注意最好不要用“Delete*FOROMHOWDO”这样的语句,而是使用“TRUNCATETABLE”语句,它的速度比Delete要快。
7.1进入系统
启动本系统时,将出现登录界面,用户可以直接双击主程序图标,首先出现的是一个用户登录的窗口,不同的用户以不同的身份登录,选好用户,填好密码,再单击确定就能进入系统的主界面,也就是主要的操作控制窗口,这里主要是通过系统菜单进行操作的。
我们根据用户的要求,实现仓库的商品管理、出入库管理、查询管理及用户管理等功能。
用户通过相应的模块,对仓库里的商品的基本情况进行更新、删除和查询,对商品的出库和入库进行管理,对出入库明细进行查询,对使用该系统的用户进行更新、删除和查询,对库存数量进行查询,用户通过简单的操作即可轻松的管理,仓库管理员是整个系统拥有全部的控制权。
7.1.1登陆界面
在得到有效用户名(字符串长度非0)后,程序用如下代码尝试连接数据库,初始化成员变量(Connection指针和ClogMngr的实例)。
在连接成功后,写登录记录进入操作日志。
7.1.2主界面
登录完成之后,显示出主对话框。
单击某个按钮就能弹出某个功能的界面。
此模块提供菜单选择功能,供用户选择各模块;
并且设备入库、设备出库、设备还库等将常用的模块直接安放在主界面
7.1.3设备入库信息
我们可以将新进的产品存入库中,可以查看、修改、删除入库记录。
以其中“设备代码”按钮为例,说明它的事件处理函数。
从上面的代码看出,当单击“设备代码”按钮时,程序构造一个CdlgDevcode型对话框实例,通过它的Setup函数赋给它一个数据库连接指针和一个日志管理对象实例的指针,然后主对话框隐藏,直到子对话框事务处理结束。
7.1.4设备出库
对各个部门发放设备,此操作可以在出库数据库中加入一条记录,在设备信息库中减去出库数量
7.1.5设备还库
各个部门用完设备后及时归还,此操作可以在还库数据库中加入一条记录,在设备信息库中加上出库数量。
7.1.6设备信息
在此模块中可以修改设务库存的最大数量与最小数量,通过设备报警以便及时对设备增加或消减。
7.2设备代码管理
在进行设备入库、出库、还库时,所选设备必须在设备代码中有所记录,当新进的设备以前库中没有其记录时,必须在代码管理中对其进行添加以后才可以入库。
当有些设备以后不需要时可以在设备代码中对其进入删除。
当设备名称改变时也可以在其中更改。
其设备代码表格(device_code)经常被其他表格引用,如获取合法编号,有设备编号查找设备名称等。
所以自日志模块和主对话框完成之后,先建立这个表格的管理模块。
对话框类名为CDlgDEVCode。
这里用一个列表框控制显示读取的数据记录。
在CDlgDevcode:
OnInitDialog()中对这个控件(m_list)进行初始化(分割列,设置列宽,设置风格等)。
由于这个表格比较简单,读者可以看出,里面所有的数据库操作都是由SQL语句直接完成的,对数据的操控则通过VARIANT型变量进行。
在次稍微讲解一下VARIANT类型,此类型是COM技术中很重要的一种数据类型,经常用于在组件之间传递类型不定的参数。
它实质上是一个结构体,第一个成员变量Vt指明了VARIANT当前包含的类型;
第二至第四个成员为保留字段;
第五个成员变量则是一个union类型,VARIANT型变量的数据实际就放在这个union里。
使用的时间可以用强制类型将VARLANT型变量转换成多种类型,但所转换的类型一定要和Vt变量指明的类型一致,否则是没有意义的。
7.3查看出库信息
在此模块中可以查看出库的信息,恰好与设备出库模块相匹配。
后者负责创建一条设备出库信息记录,前者则对device_out表中的设备出库信息记录进行管理。
用户可在次完成修改,删除记录的操作。
前者起到了管理后者的作用。
所以在创建入库模块之前,先要创建它的管理模块。
在主对话框(即登录后主界面)中单击“出库信息”按钮就能进入界面。
如果出库时输入有误,可以在其中对其进行修改。
对于修改操作,则使用了ADO里的DataBinding技术。
这部分技术已经有了个了解,在这个项目中,所以所有的表格都用此方法做了绑定,使得添加和修改记录灵活,易用,切具有较高的性能。
7.4设备入库窗口
在主对话框单击“入库信息”按钮就进入了设备入库操作界面。
这里用两个Data-TimePicker控件来让用户输入时间,缺省的时间既是系统当前的时间。
组合框控件用于使用户输入合法的设备代码,对这个控件的初始化参见上面相应内容。
在用户填写完这个入库表格之后单击“确认”按钮,就将向数据库内的device_in表加入一条设备入库信息,同时还要修改库存表(device)中的相关数据。
具体说来,在库存表中已有这个设备的记录时,要增加device表中当前库存(now_number)这个字段的值;
若此时库存表中还没有这个设备记录,则向其中要增加一条新记录,新记录的“当前库存”和“总数”字段都设为当前的入库数量,“最大库存”和“最小库存”两个字段都设为缺省值1。
单击“确认”按钮之后,更新数据库操作的代码中用到了ADO中事务处理的概念。
因为整个操作要先后更新两个表:
device_in和device—先在device_in中增加一条入库记录,然后修改device表中此设备的数量值。
如果第一个操作顺利完成而第二个操作不幸失败的话,数据库数据的完整性将受到破坏。
于是我们在第一个操作开始之前调用了Connection对象的BeginTrans方法来开始一个事务:
m_DBCnt->
BeginTrans();
在第二个操作成功结束之后调用了Connection对象的CommitTrans方法提交此事务。
CommitTrans();
如果操作中途出现异常,则在异常处理处使用RoIIBackTrans取消这次事务。
AfxMessageBox(e.ErrorMessage());
RollbackTrans();
7.5查看还库信息
在此可以查看还库时的各种信息,对还库时的失误可以在此修改,也可以在此删除。
7.6库存报警模块的设计
仓库中的每一个设备都有最大库存量和最小库存量的限制(这部分数据在device表中保存)。
库存报警功能使用户可以方便的找出库中当前库存少于最小库存或者当前库存大于最大库存设备。
用户单击主对话框中“库存报警”按钮可以进入此模块。
这个模块可以以最大库存和最小库存为界限,分别查寻小于最小库存的设备和大于最大库存的设备,也可以两者一起查寻。
其中的“搜索过多库存”按钮将搜索库中当前量多于最高限量的设备,“搜索过少库存”则反之。
“全面搜索”则对两种情况都做了查询。
7.7帮助模块的设计
本系统的帮助是本程序的About窗口。
7.8程序的编译与发布
程序开始运行之后先出现登录界面。
成功输入用户名和密码后将进入主界面,之后可执行项目文件。
单击“设备代码”按钮进入设备代码表(device_code)的管理。
单击“入库信息”按钮进入入库信息表(device_in)的管理。
单击“设备入库”按钮开始设备入库操作,若成功,则在设备入库表(device_in)中增加一条记录,同时修改库存表(device)中的相关数据。
单击“设备出库”按钮开始设备出库操作。
若成功,则在设备出库表(device_out)中增加一条记录,同时修改库存表(device)中的相关数据。
单击“出库信息”按钮进入出库信息表(device_out)的管理。
单击“需求信息”按钮进入需求信息表(device_need)的管理。
单击“设备还库”按钮开始设备还库操作。
若成功,则在设备还库表(device_return)中增加一条记录,同时修改库存表(device)中的相关数据。
单击下方的“还库信息”按钮进入入库信息表(device_return)的管理。
单击“操作日志”按钮查看目前的所有操作日志记录,在里面还可以删除所有日志记录。
单击“