VC仓库电子管理系统_第1页
VC仓库电子管理系统_第2页
VC仓库电子管理系统_第3页
VC仓库电子管理系统_第4页
VC仓库电子管理系统_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编号 本科生毕业设计仓库管理系统Warehouse Management System学 生 姓 名专 业计算机科学与技术学 号指 导 教 师学 院计算机科学与技术2009年 06月 摘要本文对仓库管理系统 的功能及实现分别进行了论述,本系统采用SQL Server 2000作为后台数据库的开发工具,应用VC+ 6.0作为前台开发语言。本系统主要包括基础信息管理,入库管理,出库管理,查询管理等几个主模块。本系统操作简单明了,界面美观,简化了仓库管理烦琐的传统管理方式,以简单明了的方式对仓库库存进行系统的电子管理。本文首先阐述了管理信息系统开发的基本理论,包括开发过程的介绍、系统平台的选择、数据

2、库设计方法等。其次针对货物销售的业务需求,给出了一个完整的货物销售管理系统 的实现方案,包括系统的需求分析,系统的体系结构设计,各模块的功能 设计,数据库 设计及系统的集成部署等。对仓库管理管理系统 进行了详细设计及描述。关键字:功能 数据库 仓库管理系统AbstractFunction and realizing describing of this text separately to the warehouse managemen system, system this adopt SQL Server 2000 as backstage supporter developing ins

3、trument of database, employ VC+ 6.0 develop languages as front desk. This system mainly including the fundamental information management,warehouse entry management, warehouse output management,inquiry management,etc. This system operation is simple and clear, the interface is esthetic, simplify the

4、convoluted traditional management style of warehouse management, manage the systematic electron to warehouse management in simple and clear way apt to be grasped. This text explain basic theories that the management information system develop at first, introduction, systematic choice, database desig

5、n method,etc. of platform to develop course. Secondly direct against the business demand of sales of goods, provide the realization scheme of an intact warehouse managemen system, including systematic demand analyze systematic system structural design, every module of functions design, the design of

6、 storehouse of the data and systematic one are integrated and disposed etc. Have designed and described the warehouse managemen system in detail.Key words: Function;Database;Warehouse Management System目录第一章 绪论- 1 -1.1 选题背景- 1 -1.2 研究目的及意义- 1 -1.3 国内外现状- 1 -1.4 开发环境- 2 -第二章 开发工具简介- 3 -2.1 Visual C+ 编

7、程环境简介- 3 -2.2 SQL Server 2000 数据库简介- 4 -2.3 ADO简介- 5 -第三章 总体设计- 7 -3.1 系统需求分析- 7 -3.2 模块总体设计- 8 -3.3 数据库设计- 8 -3.3.1 数据库需求分析- 8 -3.3.2 数据库概念结构设计- 9 -3.3.3 数据库逻辑结构设计- 10 -第四章 详细设计- 13 -4.1 入库模块设计分析- 13 -4.1.1 商品入库处理过程分析- 13 -4.1.2 商品入库查询处理过程分析- 13 -4.2 系统模块的详细设计- 13 -4.2.1 菜单设计- 13 -4.2.2 工具栏设计- 14 -

8、4.2.3 系统主界面- 15 -4.2.4 父窗口设计- 15 -4.2.5 商品入库程序设计- 17 -4.2.6 库存盘点程序设计- 18 -4.2.7 入库查询程序设计- 19 -4.3 疑难问题分析解决- 20 -4.3.1 利用表格录入商品- 20 -4.3.2 联想录入表格的实现- 21 -总结- 23 -参考文献- 24 -致谢- 25 -附录- 26 -父窗口设计主要代码- 26 -商品入库程序设计- 27 -库存盘点程序的设计- 29 -入库查询程序查询- 32 -第一章 绪论1.1 选题背景随着我国经济的飞速发展,各种类型规模的公司企业迅速崛起,许多从事生产和经营管理的企

9、业都有自己生产和销售的产品,而这些产品都需要存贮在仓库中,对于每个企业来说,随着企业规模的不断扩大,产品数量的急剧增加,所生产产品的种类也会不断更新与发展,有关产品的各种信息量也会成倍的增长,而对庞大的产品信息量,如何有效的管理库存品,对这些企业来说是非常重要的,库存管理的重点是销售信息是否即使反馈,从而确保企业运行效益.而库存产品及时入库,出库的产品,经办人员及客户等方方面面的因素,如何管理这些信息数据,是一项复杂的系统工程,充分考验着仓库管理员的工作能力,工作量的繁重是可想而知的,所以就需要由仓库管理系统来提高仓库管理工作的效率,这对信息的规范管理,科学统计和快速查询,减少管理方面的工作量

10、,同时对于调动广大员工的工作积极性,提高生产效率,都具有十分重要的现实意义1.2 研究目的及意义当今社会是竞争的社会。在市场竞争中,建立科学、规范、高效管理制度成为了企业管理的当务之急。一个企业在市场中是否具有强有力的竞争力,除了要看企业的人才、资金、技术、产品之外,更重要的一项,就是要看企业是否有一个良好的管理体制。在企业管理中,仓库管理更是管理中的重中之重。随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,仓库管理系统就顺应时代的需要诞生了。使得管理人员可以告别沉重而且不易于查询的记事本堆了。本课题主要的目的是是帮助企业的仓库管理人员对企业生产所需要的物资设备进行管理和控制

11、,使生产设备得到充分利用,以达到降低成本。给用户提供简而易行的工作界面,为用户提供充足的信息和快捷的查询手段。管理人员通过系统企业仓库信息的管理与统计,为企业积累真实、有效的数据,通过对这些数据的分析与研究,对企业各方面做出的相应的调整,以提高企业的管理效率,使企业走上良好的发展道路1.3 国内外现状仓库管理系统是信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。如今用于支持后台的数据库有很多种。如ACCESS、SQL SEVER、IBM DB

12、2、ORACLE、MYSQL等等。Microsoft SQL Server 2000 能提供超大型系统所需的数据库服务。大型服务器可能有成千上万的用户同时连接到 SQL Server 2000 实例。SQL SERVER是一种不可思议的数据库产品。它不仅在性能、可靠性和易管理性等方面都表现十分出色,同时,它也允许开发人员在需要的时候进行非常精细的控制。在存储方面更出类拔萃。存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。做为前台的开发工具也涌现了不少优秀的产品,如VISUAL BASIC、VISUAL

13、 C+、JAVA、.NET等等。Visual Basic可以快速构Windows下的应用程序,程序设计方面的技术不断发展着,不断引进新的概念、新的方法,如从结构化的C开始,当面向对象的思想被提出后,出现了C+,微软在C+的基础上为使用户构建win32应用程序更加方便,推出了Visual C+。这也就需要程序员也要不断的更新自己的技术。1.4 开发环境系统开发环境包括硬件平台和软件平台两种。硬件平台是指开发与运行所需要的硬件环境,主要包括计算机机型及硬件配置。由于本系统是一个小型的MIS管理系统,因此对计算机硬件的要求不高,比较经济,只要配备有PII处理器(或以上)、64M内存(或以上)、10G

14、硬盘(或以上)的普通微机即可顺利运行。软件平台是指系统开发与运行的软件环境。本系统在开发时选用了稳定性较强的Windows XP中文专业版和Visual C+作为开发语言,同时选用了SQL Server 2000数据库。工具都是微软的产品,彼此之间的兼容性较好,开发出的应用系统稳定性较高。Visual C+ 6.0具有可视化的开发环境,可以快速完成系统的开发,内部集成的数据库访问通道,使其可以轻松方便的对数据库进行管理。数据库采用SQL Server 2000,由于我们的系统要求,采用它完全可以适合我们的工作需求,并且它所支持的数据类型十分丰富,维护简便,费用比较低,人员素质要求不是很高,容易

15、升级。第二章 开发工具简介2.1 Visual C+ 编程环境简介Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成

16、开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Visual C+它大概可以分成三个主要的部分:1 Developer Studio,这是一个集成开发环境,我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“Microsoft Visual C+”,所以很多人理所当然的认为,那就是Visual C+了。其实不然,虽然Develop

17、er Studio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知道,Developer Studio并不是专门用于VC的,它也同样用于VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio当成Visual C+, 它充其量只是Visual C+的一个壳子而已。这一点请切记!2 MFC。从理论上来讲,MFC也不是专用于Visual C+,Borland C+,C+Builder和Symantec C+同样可以处理MFC。同时,用Visual C+编写代码也并不意

18、味着一定要用MFC,只要愿意,用Visual C+来编写SDK程序,或者使用STL,ATL,一样没有限制。不过,Visual C+本来就是为MFC打造的,Visual C+中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C+而不用MFC就等于抛弃了Visual C+中很大的一部分功能。但是,Visual C+也不等于MFC。3 Platform SDK。这才是Visual C+和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,Platform SDK是以Microsoft C/C+编译器为核心(不是Visual C+,看清楚了),配合MASM,

19、辅以其他一些工具和文档资料。上面说到Developer Studio没有编译程序的功能,那么这项工作是由谁来完成的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成Visual Studio的基石。2.2 SQL Server 2000 数据库简介数据库是MIS中的重要支持技术,在MIS开发过程中,如何选择数据库管理是一个重要的问题,目前,数据库产品较多,每种产品都具有各自的特点和适用范围,因此,在选择数据库时,应考虑数据库应用的特点及适用范围,本系统选用的数据库语言是SQL Server 2000。SQL Server作为微软在Windows 系列平台上开发的数

20、据库,一经推出就以其易用性得到了很多用户的青睐,相信大多数将自己的业务建立在Windows平台上的用户都会对它有相当的亲切感。今天,我们就来谈谈您所关注的数据库解决方案之微软篇。区别于FoxPro、Access小型数据库,SQL Server是一个功能完备的数据库管理系统。它包括支持开发的引擎、标准的SQL语言、扩展的特性(如复制、OLAP、分析)等功能。而像存储过程、触发器等特性,也是大型数据库才拥有的。SQL Server 2000的优点如下:1.上手容易话分两头,如果您的企业至今还未购置数据库,其中一个主要的原因可能就是认为它不好上手,那么,从SQL Server开始吧。毕竟,大多数的中

21、小企业日常的数据应用是建立在Windows平台上的。由于SQL Server与Windows界面风格完全一致,且有许多向导(Wizard)帮助,因此易于安装和学习,有关SQL Server的资料、培训随处可得,并且目前国内具有MCDBA认证的工程师不在少数。从另一个角度来讲,学习SQL Server是掌握其他平台及大型数据,如Oracle,Sybase,DB/2的基础。因为这些大型数据库对于设备、平台、人员知识的要求往往较高,而并不是每个人都具备这样的条件,且有机会去接触它们。但有了SQL Server的基础,再去学习和使用它们就容易多了。IT行业的实践经验充分证明了这一点。2.兼容性良好由于

22、今天Windows操作系统占领着主导地的位,选择SQL Server一定会在兼容性方面取得一些优势。另外,SQL Server 2000 除了具有扩展性,可靠性以外,还具有可以迅速开发新的因特网系统的功能。尤其是它可以直接存贮 XML 数据,可以将搜索结果以 XML格式输出等特点,有利于构建了异构系统的互操作性,奠定了面向互联网的企业应用和服务的基石。这些特点在.NET 战略中发挥着重要的作用。 3.相对于7.0的忧越性Microsoft SQL Server 2000是在SQL Server 7.0的基础上对性能、可靠性、质量以及易用性进行了扩展。SQL Server 2000中包含许多新特

23、性,这些特性使其成为针对电子商务、数据仓库和在线商务解决方案的卓越的数据库平台。其增强的特性包括对丰富的扩展标记语言(XML)的支持、综合分析服务以及便捷的数据库管理数据仓库。Microsoft SQL Server 2000非常明显的改进就是增加了OLAP(联机分析处理)功能,这可以让很多中小企业用户也可以使用数据仓库的一些特性进行分析。OLAP可以通过多维存储技术对大型、复杂数据集执行快速、高级的分析工作。数据挖掘功能能够揭示出隐藏在大量数据中的倾向及趋势,它允许组织或机构最大限度的从数据中获取价值。通过对现有数据进行有效分析,这一功能可以对未来的趋势进行预测。2.3 ADO简介微软公司的

24、ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。ADO对象模型定义了一组可编程的自动化对象,可用于Visual Basic、Visual C+、Java以及其他各种支持自动化特性的脚本语言。ADO最早被用于Microsoft Internet In formation Server中访问数据库的接口,

25、与一般的数据库接口相比,ADO可更好地用于网络环境,通过优化技术,它尽可能地降低网络流量;ADO的另一个特性是使用简单,不仅因为它是一个面向高级用户的数据库接口,更因为它使用了一组简化的接口用以处理各种数据源。这两个特性使得ADO必将取代RDO和DAO,成为最终的应用层数据接口标准。在ADO模型中,主体对象只有3个:Connection、Command和Recordset,其他4个集合对象Errors、Properties、Parameters和Fields分别对应Error、Property、Parameter和Field对象,整个ADO对象模型由这些对象组成。一个典型的ADO应用使用Con

26、nection对象建立与数据源的连接,然后用一个Command对象给出对数据库操作的命令,比如查询或者更新数据等,而Recordset用于对结果集数据进行维护或者浏览等操作。Command命令所使用的命令语言与底层所对应的OLE DB数据源有关,不同的数据源可以使用不同的命令语言,对于关系型数据库,通常使用SQL作为命令语言。在Connection、Command和Recordset 3个对象中,Command对象是个可选对象,它是否有效取决于OLE DB数据提供者是否实现了ICommand接口。由于OLE DB可提供关系型数据源也可以提供非关系型数源,所以在非关系型数据源上使用传统的SQL命

27、令查询数据有可能无效,甚至Command命令对象也不能使用。第三章 总体设计3.1 系统需求分析经过前面的初步调研分析,总结出仓库管理工作具有以下特点:在仓库管理中存在帐目品种杂、重复次数多的问题,目前仓库对所有信息的管理均以手工完成,既由资料管理员以各种记录台帐方式完成信息的登记,在需要某种信息的时候查找台帐记录。很明显,目前的工作方法效率低下,信息保存的准确性、安全性难以保证,信息查询的快速性、完整性也难以保证,致使销售管理工作费人,费时,费力,繁琐枯燥,效率低下。因此实现仓库管理的计算机化迫在眉睫, 本系统是集仓库管理、货物管理、仓库货物进出库管理、客户统计、进出库统计等功能于一体的综合

28、性仓储管理系统。支持多种类型的入库、出库、补货方式,同时支持多种查询方式和全面的日志管理,可应用于各种行业的单体仓库精细化管理或者应用于制造企业、物流企业、流通业及其它特殊行业的仓库管理。可以轻松解决物流企业在仓库管理、货物流动分析等一系列问题,迅速提高物流企业对仓库经营管理水平、稳固客户群,增加经济效益,以最小的投资获得双盈的优秀管理。帮助生产企业、分公司、分销商、代理商、商场、商店等之间建立起一套完善、高效、具有快速反应能力和管理能力的业务平台,可以极大的提高企业竞争力,为企业创造价值果!经过详细的需求分析,得出仓库管理系统的用户图如图3.1图3.1 仓库管理系统用例图3.2 模块总体设计

29、本设计需要设计的系统是仓库管理系统,需要建立模块配合功能来实现它,因此,下面简单介绍一下本系统的几个主要模块。系统功能模块图如图3.2图3.2 仓库管理系统功能模块图1.基础信息管理:在基础信息管理中需要实现操作员,商品,仓库,供应商的信息管理,包括信息的添加,修改,删除,浏览。2.入库管理: 在入库管理中需要实现商品的入库,入库退货管理,记录入库,入库退货信息。3.库存管理: 在库存管理中需要实现库存商品打印,库存盘点,库存调拨,商品出库,库存上下限管理。4.查询管理: 在查询管理中需要实现入库查询,入库退货查询,报损,报益查询,库存调拨查询,商品出库查询。3.3 数据库设计3.3.1 数据

30、库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。仔细分析调查有关仓库管理信息需求的基础上,得到如图3.3所示的本系统所处理的数据流程。仓库现有库存汇总、处理各种单据产品入库产品出库报表打印图3.3 仓库管理系统数据流程图通过对企业仓库管理的内容和数据流程分析,设计数据项和数据结构如下: 货物信息,包括的数据项有编号、货物名称、货物类别、货物规格、计量单位、最高限量、最低限量、备注等。 仓库信息,包括的数据项有编号、仓库名称、仓库地点、保管

31、员编号、备注等。 库存状况信息,包括的数据项有编号、货物编号、库存数量、仓库编号等。 入库单信息,包括的数据项有编号、货物编号、经办人编号、入库时间、入库单价、入库数量、供应商编号、仓库编号、定单状况、其它金额、备注等。 出库单信息,包括的数据项有编号、货物编号、经办人编号、出库时间、出库单价、出库数量、客户编号、仓库编号、定单状况、其它金额、备注等。 进行月盘点信息,包括的数据项有编号、仓库编号、盘点时间、经办人编号、盘点数据等。3.3.2 数据库概念结构设计得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体结构,以及他们之间的关系,为以后的逻辑结构设计打下基础。根据上面

32、的设计规划出的实体有:现有库存信息实体、入库信息实体、出库信息实体、借入信息实体、借出信息实体、调拨信息实体图和报损信息实体图。主要实体具体的描述E-R图如下:现有库存信息实体E-R图如图3.4所示。现有库存信息实体编号货物名称最低限量最高限量图3.4 现有库存信息实体E-R图入库单信息实体E-R图如图3.5所示。入库信息实体编号经办人编号入库时间、单价、数量供应商编号图3.5 入库单信息实体E-R图出库单信息实体E-R图如图3.6所示。出库信息实体编号经办人编号入库时间、单价、数量客户编号图3.6出库信息实体E-R图3.3.3 数据库逻辑结构设计现在需要将在上面的数据库概念结构转化为SQL

33、Sever 2000 数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。仓库管理系统共使用了11张数据表,分别为操作员信息表(tb_operator),供应商信息表(tb_providerinfo),库存盘点明细表(tb_check_sub),库存盘点主表(tb_check_main),库存信息表(tb_storageinfo),入库明细表(tb_instock_sub),入库退货明细表(tb_cancelinstock_sub),入库退货主表(tb_cancelinstock_main),商品库存表(tb_merchandisetorage),商品入库主表(tb_instore_mai

34、n),商品信息表(tb_merchandiseinfo)。本仓库管理系统共设计了11张表,主要的8张表分别是:表3.1 操作员信息表(tb_operator)列名数据类型是否允许为空描述OperatorIDVarchar(10)否 操作员账号(主键)NameVarchar(30)否操作员姓名PasswordVarchar(10)否操作员密码LevelSmallint否操作员级别表3.2 供应商信息表(tb_providername)列名数据类型是否允许为空描述ProvidernameVarchar(30)否 供应商名称(主键)ArtificaialpersonVarchar(30)否法人Pri

35、ncipalVarchar(30)否负责人PhoneVarchar(30)否电话AddrVarchar(30)否地址WebVarchar(30)是网址E_mailVarchar(30)是电子邮箱表3.3 库存盘点明细表(tb_check_sub)列名数据类型是否允许为空描述checkIDVarchar(30)否 盘点单号(主键)MerchandiseidVarchar(30)否商品编号sumfloat否数量表3.4 库存盘点主表(tb_check_main)列名数据类型是否允许为空描述checkIDVarchar(30)否 盘点单号(主键)storageVarchar(30)否 仓库名称(外键

36、)PrincipalVarchar(30)否负责人Checktimedatetime否盘点时间CheckspecSmallint否盘点标识memoVarchar(100)否备注表3.5 库存信息表(tb_storageinfo)列名数据类型是否允许为空描述StoragenameVarchar(30)否 仓库名称(主键)表3.6 入库明细表(tb_instock_sub)列名数据类型是否允许为空描述InstockidVarchar(30)否 入库单号(主键)merchandiseIDVarchar(30)否 商品编号(外键)Unitpricemoney否单价NumbersFloat否数量Reba

37、teFloat否折扣PaymoneyMoney否金额stocknameVarchar(30)否仓库名称表3.7 入库退货明细表(tb_cancelinstock_sub)列名数据类型是否允许为空描述CanelidVarchar(30)否 退货单号(主键)MerchandiseidVarchar(30)否 商品编号(外键)unitpriceMoney否单价NumbersFloat否数量RebateFloat否折扣PaymineyMoney否金额stocknameVarchar(30)否仓库名称表3.8 入库退货主表(tb_ cancelinstock_main)列名数据类型是否允许为空描述Cca

38、ncelidVarchar(30)否 退货单号(主键)ProviderVarchar(30)否供应商OperatorVarchar(30)否操作员RebateFloat否折扣SumtotalMoney否总计PaymoneyMoney否应付金额FactmoneyMoney否实付金额intimeDatetime(30)否退货时间第四章 详细设计4.1 入库模块设计分析4.1.1 商品入库处理过程分析在进行商品入库时,首先需要录入入库的主要信息,例如:供应商、操作员、入库时间等,然后录入入库的商品信息,例如:商品编号、名称、入库价格、折扣等,在录入商品信息时,程序将自动总计,并根据折扣计算应付金额,

39、其商品入库状态图如图4.1所示。图4.1 入库状态图4.1.2 商品入库查询处理过程分析在查询商品入库信息时,首先需要设置查询条件,用户可以根据需要将时间段查询与具体条件查询组合,进行复杂的数据查询,商品入库查询状态如图4.2所示。图4.2 商品入库查询状态图4.2 系统模块的详细设计4.2.1 菜单设计为了设计一个特色的菜单,本人从CMenu类派生了一个CMyCoolMenu,并改写父类的DrawItem、MeasureItem方法,重新绘制菜单。设计步骤(1)新建一个普通类CMenuItemContext,用于记录菜单项的信息。(2)定义3个成员变量,分别记录菜单项的图标索引、菜单属性、菜

40、单标题。(3)新建一个类,类名为“CMyCoolMenu”,基类为CMenu。(4)定义4个成员变量用于记录菜单项内容、临时索引、记录菜单项ID、存储菜单项图标。(5)改写“MeasureItem(LPMEASUREITEMSTRUCT lpMIS)”方法,根据菜单属性重新设置菜单项的大小。(6)添加“AttachMenu”方法,根据菜单句柄加载菜单资源,并确定菜单项的属性。(7)添加“ChangeMenuStyle”方法,从菜单资源中确定菜单项的属性,参数bTop标识菜单项是否为顶层菜单。(8)绘制菜单。由于菜单项有多种状态,例如,鼠标移动到菜单项时的状态,菜单项被选中时的状态。因此需要定义

41、多个方法绘制菜单。(9)改写菜单项的“DrawItem”方法,绘制菜单。(10)创建一个菜单资源,定义一个CMyCoolMenu类对象m_mnu,调用AttachMenu方法关联菜单与菜单资源。(11)改写主窗口的“OnDrawItem”方法、“OnMeasureItem”方法。(12)在主窗口的头文件中将“OnDrawItem”方法,“OnMeasureItem”方法改为消息处理方法。(13)在主窗口的源文件消息映射部分添加映射宏。4.2.2 工具栏设计在仓库管理系统的工具栏由CReBar类与CToolBar类组成。其中,CReBar类作为工具栏CToolBar的父窗口,可以为CReBar类

42、设置背景颜色,然后将CToolBar类设置为透明效果,这样,工具栏背景就被巧妙地改变了。下面介绍如何利用CReBar类,CToolBar类设计工具栏。(1)在主窗口框架中定义一个CReBar类对象m_wndReBar,一个CToolBar类对象m_wndToolBar,一个CImageList类对象img,其中img用于存储工具栏上显示的图像。(2)定义一个CreateExToolBar()方法,用于创建工具栏。(3)在CreateExToolBar()方法中通过调用Create()方法创建CReBar控件。(4)通过调用CToolBar类的CreateEx()方法创建一个工具栏控件。(5)设

43、置工具栏按钮大小,加载工具栏按钮图像。(6)修改工具栏风格,使其背景透明。向工具栏添加工具栏按钮,并设置工具栏按钮信息(7)将工具栏添加到CReBar中,设置CReBar的Band(边条)属性。4.2.3 系统主界面仓库管理系统主窗体主要由菜单、工具栏、状态栏、和客户区域4个部分组成。在设计文档/视图结构程序是,状态栏会由应用程序向导自动创建,因此不用进行设计。对于客户区域的设计,本人将其划分为两个视图区域,左边视图区域为一个树视图控件,右边区域为普通的视图窗口,中间部分为分隔条,用户可以通过分隔条改变视图区域的大小。主窗体设计效果如图4.3:图4.3 主窗体运行效果主窗体的设计步骤如下:(1

44、)从树视图控件类CTreeView派生一个子类CLeftView.(2)在CLeftView中定义一个CImageList类型的成员变量ImgTree,用于存储树视图节点图标。(3)改写“OnInitialUpdate()”方法,创建图像列表,向图像列表中加载图像,定义树节点结构,向树视图控件中添加节点。(4)处理树视图控件的双击事件,根据节点标题显示相应的窗口。这样,当用户双击节点时,就会显示相应的对话框。(5)在主窗口框架类定义一个CSplitterWnd类对象m_wndSpliter,用于拆分窗口。(6)改写主窗口框架类的“OnCreateClient”方法,将客户区域分为两个部分。至此

45、,完成主窗口的设计。4.2.4 父窗口设计在设计仓库管理系统时,本人按功能将各模块组织起来,放在一个父窗口的标签控件中,每个标签页显示一个子窗口,其运行效果如图4.4粉色部分所示。图4.4 标签页运行效果在设计父窗口是,本人定义了一个标签控件类CTabSheet,该控件派生于类CTabCtrl,主要实现如下功能: 存储标签控件中显示的所有窗口的指针。 存储标签控件中显示的所有窗口的标题和窗口ID。 记录标签控件的页数。 记录标签控件的当前页索引。 将窗口添加到标签页中。 设置窗口在标签页中的显示位置。 显示指定标签页中的窗口。以下是CTabSheet类的详细设计过程:(1)创建一个MFC类,名

46、称为“CTabSheet”,基类为“CTabCtrl”。(2)定义5个成员变量,其中,m_Title用于存储标签控件中所有窗口的标题,m_IDD存储标签控件中所有窗口的ID,m_pPages存储标签控件中所有的窗口指针,m_nNumOfPages记录标签控件中的标签页数,m_nCurrentPage记录标签控件的当前页面索引。(3)将窗口添加到标签页面,参数title为窗口标题,pDialog是页面关联的窗口指针,ID为窗口ID。(4)创建标签页面,显示所有窗口。(5)显示某个标签页中的窗口。在完成标签控件的设计后,开始设计父窗口。(1)创建一个窗口,类名为“CDlgInputStorageM

47、”,在该类中定义工具栏对象m_wndToolBar(类名为CToolBar)、m_wndReBar(类名为CReBar)。(2)定义一个CTabSheet对象,名称为“m_tab”,用于窗口管理。(3)定义功能窗口对象。用户可以根据需要定义窗口类对象。例如,在入库管理中需要包含两个功能模块,即入库管理和入库退货管理,因此需要定义两个窗口对象。(4)在窗口类CDlgInputStorageM的初始化事件中调用标签控件(m_tab)的AddPage方法添加页面,并显示页面和相应窗口。4.2.5 商品入库程序设计商品入库管理主要实现商品入库信息的登记,生成入库票号,修改商品库存的功能。在录入入库信息

48、时,为了方便用户录入数据,还提供了一些辅助功能。例如:在录入供应商信息时,按PageDown键,会以列表的形式显示所有供应商信息供用户选择;在录入商品信息时,可以按商品编号、商品名称、助记码进行匹配查询,以列表形式显示商品信息。商品入库管理活动图,如图4.5所示。图4.5 商品入库管理活动图商品入库管理运行效果如图4.6所示。图4.6 商品入库管理运行效果设计步骤(1)创建一个窗口,类名为“CDlgProductorInput2”,删除窗口中的“OK”和“Cancel”按钮。(2)在对话框属性窗口中选择“Styles”选项卡,将“Title bar”选项置于非选中状态,取消窗口的标题栏。(3)

49、在窗口中放置7个静态文本资源、6个编辑框资源、1个时间控制资源、2个列表框资源、2个列表视图资源。(4)设置各主要资源属性如表4.1表4.1 商品入库各主要资源属性对象名称资源符号资源变量资源属性List BoxIDC_LISTBOXListbox可见属性:FalseEdit BoxIDC_OPERATORNAMEOperatorname可用属性:FalseList ViewIDC_DETAILLISTList视图属性:Report4.2.6 库存盘点程序设计在企业中,仓库管理人员会定期对库存商品进行盘点,以确认商品是否缺少。在仓库管理系统中,库存盘点是对计算机中原始商品数量进行修改,以使其与

50、实际商品数量一致。此外,还可以记录原始商品数量与实际商品数量存在差距的原因,即由于何种原因导致实际的商品数量与原始数据不符,并且针对商品数量减少的情况,对仓库管理人员进行处罚。库存盘点窗口如图4.7所示。图4.7 库存盘点运行效果设计步骤(1)新建一个窗体,其类名为“CDlgStorePD3”,删除窗口中的“OK”和“Cancle”按钮。(2)在对话框属性窗口中选择“Styles”选项卡,将“Title bar”选项卡置于非选中状态,取消 窗口的标题栏。(3)向窗口中添加5个静态文本资源、2个编辑框资源、2个组合框资源、2个列表视图资源、1个时间控件资源。(4)设置各主要资源属性,如表4.2所

51、示。表4.2 库存盘点各主要资源属性对象名称资源符号资源变量资源属性Com BoxIDC_COMBO1Storagename类型属性:Drop ListList ViewIDC_LIST3Listinfo可用属性:FALSE视图属性:ReportList ViewIDC_LIST1list视图属性:Report4.2.7 入库查询程序设计入库查询能够按多种方式查询商品的入库信息,仓库管理人员能够根据这些历史入库信息制定采购计划。入库查询管理活动图如图4.8所示.图4.8 入库查询管理活动图入库查询管理窗口如图4.9所示图4.9 入库查询管理运行效果设计步骤(1)新建一个窗体,其类名为“CDlg

52、InputQuery4”,删除窗口中的“OK”和“Cancel”按钮。(2)在对话框属性窗口中选择“Styles”选项卡,将“Title bar”选项置于非选中状态,取消窗口的标题栏。(3)向窗口添加3个静态文本资源、一个编辑框资源、一个组合框资源、2个列表资源、2个时间控件资源、2个复选框资源。(4)设置各主要资源属性。如表4.3所示表4.3 入库查询各主要资源属性对象名称资源符号资源变量资源属性Check BoxIDC_CHECK1Check1标题属性:空Com BoxIDC_COMBO1Fields数据:入库票号 供应商 操作员 商品名称类型:Drop ListList ViewIDC_

53、LIST1List视图属性为:Report4.3 疑难问题分析解决4.3.1 利用表格录入商品在设计商品入库模块时,为了方便用户录入多种商品,采用表格形式进行录入。程序中利用列表视图控件录入商品信息。但MFC提供的列表视图控件CListCtrl只能显示数据,而不能编辑,为了使列表视图控件能够编辑,笔者改写了CListCtrl类,从该类派生一个子类CCustomGrid。为了让CCustomGrid能够具有编辑功能,在该类中定义了一个编辑框类,当用户单击表格中的单元格时,将编辑框显示在单元格中,用户可以在编辑框中输入数据,在编辑失去焦点时,将数据写入单元格。根据上面的功能描述,需要解决如下问题:

54、 定义一个编辑框类,使其在失去焦点时将数据显示在列表中。 在表格中创建编辑框。 用户单击单元格时,确定单元格坐标(行和列索引)。 根据单元格坐标确定单元格区域,并在指定的区域显示编辑框。设计步骤1. 定义一个编辑框类从CEdit派生一个编辑框类,本例为“CKeyEdit”。为了使CKeyEdit具有更多的功能,定义了一个布尔型的成员变量IsNumber,用于确定是否限制编辑框只允许输入数字。处理编辑框的WM_KILLFOCUS消息,使其在失去焦点时将数据显示在列表的当前单元格中。为了使编辑框可以根据情况限制为本的输入,需要处理WM_CHAR消息,当IsNumber为TRUE时,编辑框只允许输入

55、数据:为FALSE,不进行限制。2.定义CCustomGrid类,创建编辑框从CListCtrl派生一个子类CCustomGrid,在该类中定义一个CKeyEdit对象。改写虚拟方法PreSubclassWindow,设置列表控件风格,创建编辑框。3用户单击表格时,确定单元格的坐标为了在用户单击表格时确定编辑框出现的位置,首先需要确定用户单击时的单元格坐标。处理表格的WM_LBUTTONDOWN消息,根据鼠标单击时的指针位置确定单元格坐标。4.根据单元格坐标确定单元格区域,并且该区域显示编辑框CListCtrl类提供了GetSubItemRect方法,能够根据单元格坐标确定其区域。4.3.2 联想录入表格的实现在本系统的商品录入模块管理中,为了方便用户录入数据,在输入商品信息时,可以键入简码,系统会将相关的商品信息显示在一个列表中,供用户选择。根据上面的功能描述,需要解决如下问题: 截获表格编辑时的消息。 根据不同的字段(商品编号,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论