基于 SQL和Visual C++的仓库物资管理系统的设计与实现_第1页
基于 SQL和Visual C++的仓库物资管理系统的设计与实现_第2页
基于 SQL和Visual C++的仓库物资管理系统的设计与实现_第3页
基于 SQL和Visual C++的仓库物资管理系统的设计与实现_第4页
基于 SQL和Visual C++的仓库物资管理系统的设计与实现_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

3系统分析目录15摘要基于SQL和VisualC++的仓库物资管理系统的设计与实现摘要随着企业物流活动的竞争加剧,如何高效管理和使用仓库,成为企业目前急需解决的问题。为了有效管理企业仓储信息,针对仓库信息管理目前存在的问题状况以及企业发展需要,设计了仓储管理系统开发项目。本文分析了仓储管理体系的现状及未来的功能需求,进行了仓储管理系统的研究与应用。在该系统的设计研究过程中利用了从上而下的分析方法,对仓库管理系统的分析、数据库设计、系统功能设计等的实现进行了介绍。利用数据库进行规划,设计新的数据库管理系统、信息咨询、信息管理和数据控制等各项数据管理系统。本文对数据库管理问题进行了深入的分析,实现了数据库管理系统的设计职能,改进了现有仓库管理模式,加快了信息化管理的进程,对于仓库管理的发展具有里程碑意义。关键词:仓库管理;数据库设计;系统功能设计;信息化管理论文类型:应用研究目录TOC\o"2-3"\h\z\t"标题1,1"1绪论 11.1课题研究背景 11.2仓库管理系统研究现状 22系统应用技术 22.1SOLServer2000技术 22.1.1SOLServer简介 32.1.2SOLServer2000的基本特点 32.2VisualC++技术介绍 32.2.1VisualC++概述 42.2.2VisualC++的优势 43系统分析 53.1系统需求分析 53.1.1系统结构 63.1.2系统运行环境 63.2系统功能分析 63.2.1基础信息管理 73.2.2库房日常管理 74系统详细设计 74.1开发环境选择 84.2设计原则 84.2.1系统性能要求 84.2.2系统可靠性要求 94.2.3系统安全性要求 94.2.4系统易用性要求 94.3系统功能模块设计 94.4数据库逻辑结构设计……………….95系统具体实现 105.1主窗体设计 105.1.1菜单设计 105.1.2工具栏设计 115.1.3主窗体设计步骤 115.2父窗口设计 115.3商品入库程序设计 125.3.1概述 125.3.2设计步骤 125.3.3程序相关代码 125.4库存盘点程序设计 125.4.1概述 135.4.2设计步骤 135.4.3程序相关代码 135.5疑难问题分析解决 145.5.1利用表格录入商品 145.5.2联想录入表格的实现 146结论 15致谢 16参考文献 17声明西安交通大学网络教育学院论文PAGE16绪论1.1课题研究背景随着当今社会信息化高速发展,对企业管理提出了更高的要求,物资高效流动成为一个企业竞争力提升的一个重要支撑点。物资的仓储是物流管理的一个关键环节。仓库是调节物流的中枢。随着企业的高速发展,企业规模增大,物资储存种类及储存量的急剧上升,依靠过去人工管理模式,已显然不能满足企业的发展需求,提升仓储管理,加快物资流动效率,成为企业发展的必然选择。近些年来,一些经济发达国家级地区已逐步在进行物流仓储效率提升方面开展了一些研究与应用,并取得了明显的效果,促进了企业竞争力的提升,在当前竞争激烈的市场环境中得到了考验。设计和开发“仓库管理系统”成为国内外先进企业的共识,成为企业提升其竞争力的一种重要手段。仓库管理系统是一个多元化的流程管理,目前,在大型的公司、企业、单位都在使用计算机管理,操作者节约时间、大大提高工作效率,对操作管理系统的查询、统计、输入、输出、修改能很快的完成,并且准确率高。运用计算机进行仓库物资管理是手工管理无法相比的,信息的储存量大、成本价廉、具有很强的可靠性原则。可以极大的提高劳动管理的工作效率。目前,各行各业都在使用计算机对单位的整个运行情况操作,使用了信息资源的储备量和快捷性,查询方便、快捷输入、帮助仓库管理人员对企业生产所需要的物资设备有效的控制和管理,使得企业的各项工作都能有条不紊的进行,最大限度的降低了生产成本,提高了工作人员的效率,因此开发仓库管理软件具有很多的优点,完全实现了现代化、规模化的管理模式。1.2仓库管理系统研究现状仓库管理和研究经历了几十年的发展,在开发仓库管理系统领域已经取得了巨大的成绩。仓库管理的概念最初是在工厂的设计过程中,未形成建立系统化的思维。上世纪50、60年代在一些国外学者的著作中陆续的出现仓库管理数据研究,并进行了系统的分析,出现了一些杰出的设计师,如爱伯尔、穆尔、缪色等人物。多年以来,计算机技术的发展非常快,计算机已经普及和应用到了工厂的设计中,以及各个领域。随着技术的发展,人们对仓库管理意识逐渐增强,各个企业中物流逐渐发展起来,对物资的运输方式也发生了改变,由原来的人工逐渐替换为机械化。这些技术在国内外都得到了应用与发展。设计的产品品种多、物美价廉,得到了市场的认可,这种规划思想在市场上得到了广泛认同和发展壮大。计算机的设计技术带动了仓库管理的发展,设计模式的变化,在建筑行业、企业、仓储行业得到了应用。在仓库行业信息化进程的加快,软件技术的发展,使仓库管理的发展速度也加快。使仓库管理的系统化更加完善,计算机的发展更促进了这一趋势的快速发展。在国外,有关仓库物资管理的应用和发展已经有几十年的历程,在相关的技术领域具有一定的研究成果。1960年时仓库管理系统发展的开始阶段,刚开始的仓库管理系统相当的简单,没有系统化的管理理念,信息的储备量也较小,仅仅在加工业产品设计过程中使用,可以降低工人繁杂的劳动过程。随着技术的进步,国外的许多专家开始在科学管理领域运用一套系统管理的方式对工厂设计进行研究。在1970年,计算机技术发展更加迅速,国外的一些计算机辅助工厂布置程序逐渐发展起来,仓库管理系统的先进理念进一步的发展起来,当时在物流行业发展相当的普遍,美国学者RichardMuther提出对物料的搬运技术进行了分析,他提出了一套完整的、简单易行的逻辑原理,运用数理化的分析方法,受到国内外众多学者的关注。随着加工厂产品品种的多样化、工序的复杂,加工厂的设计技术不断成熟,有了新的规划和工艺流程,使得整个生产管理流程都具有合理化的方案。在1990年,国外的工厂已经开始运用先进的制造技术和管理方法进行物料的搬运和加工,并可以计算机绘图,在网上订货、销售等流程逐渐发展起来。先进的信息技术逐渐在企业中发展起来,使得企业的生产、销售实现资源共享、信息交流,企业与供应商、销售商更好的协作。运用互联网技术使得整个发展流程能够顺利进行。目前仓库管理软件供应商发展到几百家,可以在多个仓库环境下入库、出库、实现工作中人员的监控录像,网上客户订单便捷化的实行,人们在家里都可以完成工作,服务相当的快速,实行了供应链管理一体化的模式,流程相当的简单、订单管理、高自动化流程等优点。我国的仓库管理系统研究比较晚,也不能和国外先进技术相比。1980年,美国物流专家RichardMuther在中国讲授系统的设计流程、物料搬运设计、系统工业化设计,在国内产生了很大的影响力,这时我国的仓库管理系统逐渐发展起来。在这个时期,日本专家在西安、郑州、沈阳等做仓库管理系统的培训,在我国理论界受到了影响,我国的仓库管理系统也开始进入发展阶段。目前,我国在仓库管理系统方面已经取得了一定的成绩,研制了自动化的立体仓储管理模式,具有规范化和统一性的物流连接口,并实现了与海尔公司的团建合作技术,实现了由加工、收单、出货的整个流程和功能;由于国内的仓储技术发展还不是非常熟练,研究机构没有真正起到举足轻重的作用,国内市场目前还不是很发达,流传的还是普通的管理软件。普通软件在资源配置方面相对滞后,生产成本较高。对物资和信息的交流还不是很熟练,没有形成统一的管理系统模式,导致物流时间较长、周转的次数较慢,给整个周转流程造成一定的影响,所以,实行仓库管理模式对我国仓储管理水平具有一定的理论意义和现实意义。2系统应用技术2.1SQLServer2000技术2.2.1SQLServer简介SQLServer关系数据库(relationaldatabase)的一种,它促进了普通数据库管理的发展,是关系数据库重要的组成部分。关系数据库是所有数据库中最为重要的管理方式之一。它具有支持其他数据库功能的优点,并可以备份数据的特征。关系数据库的演化模式也发生了变化,后来也出现了相关的操作系统,并与之结合产生了新的操作系统。2.2.2SQLServer2000的主要基本特点1.Internet集成。SQLServer2000可以支持语言系统的开发和应用,可支持数据库的网站的存储功能,以及具有延展性、稳定性、实用性等多个特征。也可进行数据库的设计和模型构造功能。同时,还具有查询、筛选等优点,给软件语言提供了强大的支持。2.可伸缩性和可用性。无论是笔记本,还是其他具有具有数据处理的软件均支持本数据库引擎。该数据库商用版可以用在不同服务请、查询图形和内存等强大功能,使其可实现最为强大网站所具有的优势和其功能特点。3.企业级数据库功能。该搜索软件可满足目前各种数据管理所需的要求和条件。其可以有效的保证数据的安全性,可以对大量的数据进行管理和修改,该功能可以对数据的完整性具有强大的安全性。该数据库的类似镜像功能可保证使用者对多个数据存储单位进行修订,并可使单独数据副本同时更新。还同时具有将数据应用到不同用户能力,使其可独立自行运行,同时可把不同用户独立运行所有的修改记录回传到服务器中。2.2VisualC++技术介绍2.2.1VisualC++概述VC是一种可视化快速软件开发工具。VC主要以C语言的发展为基础,它具有C语言的原本的所有特点外,还可针对具体的目标按照操作者的意思进行编辑,融入操作者的思想。另外,编译器的主要功能是创建应用程序,完成可执行的文件。它的主要优点主要表现在:1.可以兼容多种不同类型的数据;2.可以接受度较高;3.可以进行结构化和面向对象的程序设计;4.可以大大提供使用者的效率;5.可复制性,可以反复使用。2.2.2VisualC++的优势1.VC的集成的窗体设计器可操作性强、易于各类人员的使用,功能丰富。2.VC将软件的功能进行了最大的发挥,实现了其价值的最大化,它能够较好将其适用人群及其优点进行了很好的结合和权衡。VC清晰和严谨的模块化构成、使用简单。3.MFC是VC的基础。VC在设计时以程序为框架,并可以完成组件属性的设置,完成组件的操作。4.VC在软件系统开发方面特别是数据库的应用和支持方面具有较大的优势。VC具有功能强大的数据库引擎,可支持本地、客户、服务器形式等数据库平台[17]。此外,VC的多层访问数据源更易于实现。5.VC的编程开发工具功能强大、可延展性情。在VC中包含了多个功能强大的组件。另外,还封装了等底层网络函数。西安交通大学网络教育学院论文3系统分析3.1系统需求分析3.1.1系统结构图3-1仓库管理流程图在激烈的市场竞争中,拥有高效的管理制度成为企业管理不二之选,仓库管理的重要性不言而喻。建立仓库信息系统对于企业管理效率的提高,具有划时代意义,是一个现代化企业的必由之路,能够有效促进企业科学、可持续发展的道路[21]。图3-1仓库管理流程图通过对仓库管理过程的分析与研究,要求仓库管理系统实现如下目标[22]:1.可以进行商品的进出库管理。2.实现商品的实际情况管理。3.实现商品的流动管理。4.实现商品的库存极限管理。5.实现动态管理。3.1.2系统运行环境1.硬件环境1)浏览器:GoogleChrome™(适用于AutoCAD网络应用);2)内存:8GB以上;3)硬盘:200GB以上;4)显示器:常规显示器:1920x1080真彩色,高分辨率和4K显示:Windows10,64位系统支持高达3840x2160的分辨率(带显示卡);5)打印机:IIP系列激光打印机及喷墨打印机.2.软件环境1)Windows10SDK预览版Build15003以上操作系统;2)SQLServer2019内部版本;3)VisualC++2017以上版本。3.2系统功能分析3.2.1基础信息管理此系统可进行输入人员、存货、采购产品厂家资料的管理,以及对其修改、查询。1.设定数据库。主要包括库管人员登记表,记录了维护仓库管理人员相关的基本信息。2.人员管理。主要完成对人员情况的录入,修改,删除等维护操作,同时也可进行查询、统计、打印表单等操作。3.商品信息管理。主要完成对商品基础信息的输入、调整等动态修改操作及其浏览。4.供应商信息管理。主要完成对商品采购厂家相关资料的输入、调整等动态管理。5.设定文本编辑工具。3.2.2用户权限管理本系统的用户权限分为两级,分别是一般操作员和系统操作员,其权限如下:1.一般操作员可实现库房日常管理功能和查询管理功能。2.系统操作员在拥有一般操作员的权限外,还可对系统的基础信息进行管理,并设定操作人员的主要信息。基础信息设定中,系统操作员可对数据库设置信息、商品基本信息、供货商基本信息等进行设定。对操作人员主要信息的设定主要包括对操作人员的权限管理和限定。西安交通大学网络教育学院论文4系统详细设计4.1环境开发选择SQLServer2000是一种主导式的数据库管理系统,它自身不是VF简单的开发形式,主要为客户提供有效的客户开发端,为用户提供主要的功能。它的主要功能是为客户提供主要的数据管理功能,同时也是数据库服务器的主要特征,为客户服务功能提供一定的接口。有助于运用不同的开发软件来为客户提供一定的客户应用程序的客户端。这样就用不同的开发工具来开发客户端应用程序[15]。本系统选VisualC++6.0完成对程序应用的开发效果。数据库系统一般是由数据库应用程序、数据库管理系统、数据库等三部分应用程序组成。其中主要的核心部分是数据库管理系统,其中最重要的作用就是进行数据库的控制活动和管理活动。其次对数据进行存储、查看应用程序、修改和操作这些数据的主要程序是数据库应用程序。4.2设计原则4.2.1系统性能要求1.查询操作快速查询的一般时间主要控制在3秒以内,并且可以承受2小时的疲劳系统测速,但是可以查询成功。2.快速的生成报表报表一般会在2分钟之内打印出来,数据较困难的报表会在10几分钟生成。4.2.2系统可靠性要求系统应支持一年365天不间断运行。该系统一般不会出现程序上的原始数据错误,系统在出现问题后会在很短的时间内取得成功,恢复原始的数据,具有自动的恢复功能和检修功能。4.2.3系统安全性要求基于仓库管理系统应用层用户管理对用户的身份认证和授权,保证数据权限的安全性。根据基础设施方面提供的设备情况,并且数据可以进行备份的功能,建立有效的数据库管理功能,有效减少数据出现的问题,并且对操作的信息进行长时间的记录。4.2.4系统易用性要求系统软件设计充分考虑了不同类型用户的需求差异,操作简便,采用通用的操作平台,友好性强,易于掌握。系统设计充分考虑了用户操作的便捷性要求[24]。4.3系统功能模块设计本系统的功能设计主要分为:基础信息管理模块、入库管理模块、库存管理模块和查询管理模块等四个主要模块。其中操作员信息、商品信息、库存信息和供应商信息是基础信息管理模块。主要信息的记录入库和入库退货管理是入库管理模块管理。库存管理模块是主要盘点出入库的信息,查询管理可以对出入库的额信息进行查询管理。4.4数据库逻辑结构设计图4-1数据库E-R图仓库管理系统的E-R如图4-1所示图4-1数据库E-R图仓库管理系统共使用了10张数据表,分别为操作员信息表(tb_operator),供应商信息表(tb_providerinfo),库存盘点明细表(tb_check_sub),库存盘点主表(tb_check_main),库存信息表(tb_storageinfo),入库明细表(tb_instock_sub),入库退货明细表(tb_cancelinstock_sub),入库退货主表(tb_instore_main),商品库存表(tb_merchandisestorage),商品入库主表(tb_instore_main),商品信息表(tb_merchandiseinfo)下面列出了各数据表结构,如表4-1~表4-10所示。表4-1操作员信息表(tb_operator)字段名称字段类型主键外键是否为空描述namevarchar(30)是操作原名称passwordvarchar(50)操作员密码levelsmallint操作员级别操作员信息表是用来储存所有操作员的信息,主要包括:操作员名称、操作员密码、操作员级别3个字段。表4-2供应商信息表(tb_providerinfo)字段名称字段类型主键外键是否为空描述providermamevarchar(50)是供应商名称artificialpersonvarchar(30)法人principalvarchar(10)负责人phonevarchar(30)电话addrvarchar(50)地址webvarchar(50)网址e_mailvarchar(50)电子信箱供应商信息表是用来储存所有供应商的信息,主要包括:供应商名称、法人、负责人、电话、地址、网址、电子信箱7个字段。表4-3库存盘点明细表(tb_check_sub)字段名称字段类型主键外键是否为空描述checkIDvarchar(30)是盘点单号merchandiseidvarchar(50)商品编号sumfloat数量库存盘点明细表是用来储存库存盘点的信息,主要包括:盘点单号、商品编号、数量3个字段。表4-4库存盘点主表(tb_check_main)字段名称字段类型主键外键是否为空描述checkIDvarchar(30)是盘点单号storagevarchar(30)仓库名称principalvarchar(30)负责人checktimedatetime盘点时间checkspecsmallint盘点标识0报损1报益memovarchar(100)备注库存盘点主表是用来储存库存盘点的主要信息,主要包括:盘点单号、仓库名称、负责人、盘点时间、盘点标识0报损1报益5个字段。表4-5入库明细表(tb_instock_sub)字段名称字段类型主键外键是否为空描述instockidvarchar(30)外键入库单号merchandiseIDvarchar(30)外键商品编号unitPricemoney单价numbersfloat数量rebatefloat折扣paymoneymoney金额stocknamevarchar(30)仓库名称入库明细表是用来储存入库情况的信息表,主要包括:入库单号、单价、数量、折扣、金额、仓库名称6个字段。表4-6入库退货明细表(tb_cancelinstock_sub)字段名称字段类型主键外键是否为空描述CancelIDvarchar(30)退货编号merchandiseIDvarchar(30)商品编号unitPricemoney单价numbersfloat数量rebatefloat折扣paymoneymoney金额stocknamevarchar(30)外键仓库名称入库退货明细表是用来储存入库退货的信息表,主要包括:退货编号、商品编号、单价、数量、折扣、金额、仓库名称7个字段。表4-7入库退货主表(tb_instore_main)字段名称字段类型主键外键是否为空描述CancelIDvarchar(30)是退货单号providervarchar(50)是供应商operatorvarchar(30)是操作员rebatefloat折扣sumtotalmoney总计paymoneymoney应付金额factmoneymoney实付金额intimedatetime退货时间入库退货主表是用来储存入库退货的主要信息,主要包括:退货单号、供应商、操作员。折扣、总价、应付金额、实付金额、退货时间8个字段。表4-8商品库存表(tb_merchandisestorage)字段名称字段类型主键外键是否为空描述merchandiseIDvarchar(30)是(联合主键)商品编号storagenamevarchar(30)是(联合主键)仓库名称storagenamfloat商品库存pperlimitfloat库存上限lowerlimitfloat库存下限商品库存表是用来储存商品库存情况的信息表,主要包括:商品编号、仓库名称、商品库存、库存上限、库存下限5个字段。表4-9商品信息表(tb_merchandiseinfo)字段名称字段类型主键外键是否为空描述IDvarchar(50)是商品编号namevarchar(30)商品名称specvarchar(20)规格shortnamevarchar(10)简称defaultpricemoney默认价格manufacturervarchar(30)厂家memovarchar(100)备注商品信息表是用来储存商品的信息,主要包括:商品编号、商品名称、规格、简称、默认价格、厂家6个字段。5系统具体实现5.1主窗体设计菜单,工具栏,状态栏和客户区域图5-1主窗体等部分是构成仓库管理系统的主要部件。可以有效的编辑文档/视图状态栏等部件的创建,所以不需要进行编辑。同时,将客户区域设计为两个部分,分别为左边区域和右边区域,左边区域是一个空间视图,右边区域是一个普通视图,分割条在中间,通过调整分割条可以调整左右区域的空间大小。主窗体设计效果如图5-1所示。图5-1主窗体5.1.1工具栏设计仓库管理系统的工具栏由CReBar类与CToolBar组成。其中,CReBar类主要窗口为CToolBar,可以在其中设置相应的颜色,再将CToolBar类设置为效果,这样,工具栏背景就被巧妙地改变了。利用CReBar类,CToolBar类设计工具栏步骤如下:1.在主窗口框如何利用CReBar类对象m_wndReBar,一个CToolBar类对象m_wndToolBar,一个CLmageList类对象img,其中img用于存储工具栏上显示的图像。2.创建一个工具栏的方法。3.在其方法中通过调用Create()方法创建CReBar空间。4.调用CToolBar类的CreateEx()方法创建一个工具栏空间。5.设置工具栏按钮大小,加载工具栏按钮图像。6.修改工具栏风格,使其背景透明。向工具栏中添加工具栏按钮,并设置工具栏按钮信息。图5-2商品入库管理窗口图5-2商品入库管理窗口5.1.2设计步骤主窗体设计步骤如下:1.从树视图控件类CTreeView派生一个子类CLeftView。2.在CLeftView中定义一个CImageList类型的成员变量ImgTree,用于存储树视图节点图标。3.改写“OnInitialUpdate()”方法,创建图像列表,向图像列表中加载图像,定义树节点结构,向树视图控件中添加节点。4.处理树控件的双击事件,根据节点标题显示相应的窗口。这样,当用户双击节点时,就会现实相应的对话框。程序源代码如下所示:voidCLeftView::OnDblclk(NMHDR*pNMHDR,LRESULT*pResult){NM_TREEVIEW*pNMTreeView=(NM_TREEVIEW*)pNMHDR;//TODO:AddyourcontrolnotificationhandlercodehereCTreeCtrl&CtlTree=(CTreeCtrl&)GetTreeCtrl();HTREEITEMselect_item=CtlTree.GetSelectedItem();CStringstr=CtlTree.GetItemText(select_item);if(str=="操作员管理"){m_pdlgBaseInfoM=newCDlgBaseInfoM(0);m_pdlgBaseInfoM->DoModal(); deletem_pdlgBaseInfoM;}……}5.在主题窗口框架类中定义一个CSplitterWnd类对象m_wndSplitter,用于拆分窗口。6.改写主窗口框架类的“OnCreateWnd”方法,将客户区域分为两个部分。至此,完成主窗口的设计。BOOLCMainFrame::OnCreateClient(LPCREATESTRUCT/*lpcs*/,CCreateContext*pContext){//createsplitterwindowif(!m_wndSplitter.CreateStatic(this,1,2))returnFALSE;if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CLeftView),CSize(200,100),pContext)||!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CAaaView),CSize(100,100),pContext)){m_wndSplitter.DestroyWindow();returnFALSE;}returnTRUE;5.2父窗口设计在设计仓库管理系统时,按功能将各模块组织起来,放在一个父窗口的标签控件中,每个标签页现实一个子窗口,其运行效果如图5-3所示。图5-3父窗口图5-3父窗口在设计父窗口时,定义一个标签控件类CTabSheet,该控件派生于类CTabCtrl,主要实现如下功能:(1)存储标签控件中现实的所有窗口的指针(2)存储标签控件中现实的所有窗口的标题和窗口ID(3)记录标签控件的页数(4)记录标签控件的当前页索引(5)将窗口添加到标签页中(6)设置窗口在标签页中的显示位置(7)显示指定标签页中的窗口CTabSheet类的详细设计过程如下:1.创建一个MFC类,名称为“CTabSheet”,基类为“CTabCtrl”。2.定义5个成员变量,代码如下:LPCTSTRm_Title[MAXPAGE];UINTm_IDD[MAXPAGE];CDialog*m_pPages[MAXPAGE];intm_nNumOfPages;intm_nCurrentPage;其中,m_Title用于存储标签控件中所有窗口的标题,m_IDD存储标签控件中所有窗口的ID,m_pPages存储标签控件中所有的窗口指针,m_nNumOfPages记录标签控件中标签的页数,m_nCurrentPage记录标签控件的当前页面索引。3.将窗口添加到标签页面,代码如下:BOOLCTabSheet::AddPage(LPCTSTRtitle,CDialog*pDialog,UINTID){if(MAXPAGE==m_nNumOfPages)returnFALSE;m_nNumOfPages++;m_pPages[m_nNumOfPages-1]=pDialog;m_IDD[m_nNumOfPages-1]=ID;m_Title[m_nNumOfPages-1]=title;returnTRUE;}参数title为窗口标题,pDialog是页面关联的窗口指针,ID为窗口ID。4.创建标签页面,显示所有窗口。voidCTabSheet::Show(){for(inti=0;i<m_nNumOfPages;i++){m_pPages[i]->Create(m_IDD[i],this);InsertItem(i,m_Title[i]);}m_pPages[0]->ShowWindow(SW_SHOW);for(i=1;i<m_nNumOfPages;i++)m_pPages[i]->ShowWindow(SW_HIDE);SetRect();}5.显示某个标签页中的窗口。voidCTabSheet::Show(intn){for(inti=0;i<m_nNumOfPages;i++){m_pPages[i]->Create(m_IDD[i],this);InsertItem(i,m_Title[i]);}for(i=0;i<m_nNumOfPages;i++)m_pPages[i]->ShowWindow(SW_HIDE);m_pPages[n]->ShowWindow(SW_SHOW);SetRect(n);SetCurSel(n);}在完成标签控件的设计后,开始设计父窗口。1.创建一个窗口,类名为“CDlgInputStorageM”在该类中定义工具栏对象m_wndToolBar(类名为CToolBar),m_wndReBar(类名为CReBar)。2.定义一个CTabSheet对象,名称为“m_tab”,用于管理窗口。3.定义功能窗口对象。用户可以根据需要定义窗口类对象。例如,在入库管理中需要包含两个功能模块,即入库退货管理,一次需要定义两个窗口对象,代码如下:CDlgProductorInput2m_dlg1;CDlgInputStoreBack2m_dlg2;4.在窗口类CDlgInputStorageM的初始化事件中调用标签控件(m_tab)的AddPage方法添加页面,并现实页面和相应窗口。至此,完成父窗口的设计。m_tab.AddPage("商品入库",&m_dlg1,IDD_PRODUCTOR_INPUT2);m_tab.AddPage("入库退货",&m_dlg2,IDD_INPUT_BACK2);if(nSelect>=0){m_tab.Show(nSelect);}else{m_tab.Show();}5.3商品入库程序设计5.3.1概述商品入库管理主要实现商品入库信息的等级,生成入库票号,修改(增加)商品库存的功能。在录入入库信息时,为了方便用户录入数据,还提供了一些辅助功能。例如:在录入供应商信息时,按PageDown键,会以列表的形式显所有供应商信息供用户选择商品信息,商品入库管理活动图,如图5-4所示,商品入库管理运行效果如图5-5所示。图5-4商品入库管理活动图图5-5商品入库管理窗口图5-5商品入库管理窗口5.3.2设计步骤1.创建一个窗口,类名为“CDlgProductorInput2”,删除窗口中的“OK”和“Cancel”按钮。2.在对话框属性窗口中选择“Styles”选项卡,将“Titlebar”选项置于非选中状态,取消窗口的标题栏。3.在窗口中放置7个静态文本资源,6个编辑框资源,1个时间控件资源,2个列表框资源,2个列表视图资源。设置各主要资源属性如表5-1所示。表5-1主要资源属性设置对象名称资源符号资源变量资源属性ListBoxIDC_LISTBOXlistbox可见属性:falseEditBoxIDC_OPERATORNAMEoperatorname可见属性:falseListViewIDC_DETAILLISTlist视图属性:Report5.3.3程序相关代码处理窗口初始化时的时间,设置录入表格的风格,列标题,列宽度。自定义函数CalculateMoney()用于统计列表中的商品金额。该函数利用循环累计商品列表中的金额字段数据。代码如下:floatCDlgProductorInput2::CalculateMoney(){ floatmoney,temp; money=0.0; CStringc_money; introwcounts=list.GetItemCount(); for(inti=0;i<rowcounts;i++) { c_money=list.GetItemText(i,6); if(!c_money.IsEmpty()) { temp=atof(c_money); money+=temp; } } returnmoney;}函数InputInfoIsNull()用于判断商品入库信息是否为空。该函数首先读取所有编辑框中的数据,如果有一项数据为空,函数返回值为true代码如下:boolCDlgProductorInput2::InputInfoIsNull(){ CStringc_provider,c_totalmoney,c_rebate,c_paymoney,c_factmoney; providername.GetWindowText(c_provider); totalmoney.GetWindowText(c_totalmoney); rebate.GetWindowText(c_rebate); paymoney.GetWindowText(c_paymoney); factmoney.GetWindowText(c_factmoney); if((c_provider.IsEmpty())||(c_totalmoney.IsEmpty())||(c_rebate.IsEmpty())||(c_paymoney.IsEmpty())||(c_factmoney.IsEmpty())) returntrue; else returnfalse;5.4库存盘点程序设计5.4.1概述在企业中,仓库管理人员会定期对库存商品进行盘点,以确认商品实际库存。在仓库管理系统中,库存盘点是对计算机中原始商品数量进行修改,以使其与实际商品数量一致。此外,还可以记录原始商品数量与实际商品数量存在差距的原因,即由何种原因导致实际的商品数量与原始数据不符,并且针对商品数量减少的情况,对仓库管理人员进行处罚。库存盘点窗口如图5-6所示。图5-6库存盘点窗口图5-6库存盘点窗口5.4.2设计步骤1.新建一个窗体,其类名为“CDlgStorePD3”,删除窗口中的“OK”和“Cancel”按钮2.在对话框属性窗口中选择“Styles”选项卡,将“Titlebar”选项置于非选中状态,取消窗口的标题栏。3.向窗口中添加5个静态文本资源,2个编辑框资源,2个组合框资源,2个列表视图资源,1个时间控件资源。设置各主要资源属性,如表5-2所示。表5-2主要资源属性设置对象名称资源符号资源变量资源属性ComBoxIDC_COMBO1storagename类型属性:DropeListListViewIDC_LIST3listinfo可用属性:false视图属性:ReportListViewIDC_LIST3list视图属性:Report5.4.3程序相关代码函数InfoIsNull(intmain)用于判断盘点信息是否为空,如果为空,返回值为true,否则为false。参数main标识函数检查的盘点信息,盘点信息为0,标识检查盘点的主要信息,入库查询程序设计5.5疑难问题分析解决5.5.1利用表格录入商品在设计商品入库模块时,采用了表格形式进行录入以方便用户录入多种商品。程序中利用列表视图控件录入商品信息,但MFC提供的列表视图控件CListCtrl只能够显示数据,而不能编辑,为了使列表视图控件能够编辑,改写CListCtel类,从该类派生一个子类CCustomGrid[16]。为了让CCustomGrid能够具有编辑功能,在该类中定义了一个编辑框类,当用户单击表格中的单元格时,将编辑框显示在单元格中,用户可以在编辑框中输入数据,在编辑框失去焦点时,将数据写入单元格。根据上面的功能描述,需要解决如下的问题:定义一个编辑框类,使其在失去焦点时将数据显示在列表中。在表格中创建编辑框,用户单击表格时,确定单元格的坐标(行和列索引)。根据单元格坐标确定单元格的区域,并在制定的区域显示编辑框。5.5.2联想录入表格的实现在本系统的商品入库管理模块中,为了方便用户录入数据,在输入商品信息时,可以键入简码,系统会将相关的商品信息显示在一个列表中,供用户选择。根据上面的功能描述,需要解决如下问题:截获表格编辑时的消息。根据不同的字段(商品编号,商品名称)设置不同的查询语句。在适当的位置显示列表控件。双击列表控件,将选择的数据显示在表格中。针对上面的问题描述,逐一进行解决。6结论本论文主要运用数据库技术和面向对象编程技术研究开发的一套仓库管理系统。它集网络办公,业务工作,资料搜索,资料文档管理,数据实时更新等于一体,功能齐全,实用性强,为仓库的管理提供了科学规范的“模板”。该系统实现的信息资源共享,办公网络化、无纸化及远程办公、异地办公,功能多样化,能够有效地提高工作效率和办公自动化程度,具有较高的经济效益。6.1系统特点1.操作简便,管理容易。由于本系统采用VisualC++编码设计,程序可读性和通用性好。其简单易学的特点使得本系统管理工作的难度与工作量大大降低。且其人性化的设计界面,显著降低操作难度。2.覆盖面广,功能完善。本系统机制完整,功能完善,覆盖面广,涵盖了仓库管理的绝大部分业务。仓库管理的各项规章制度以及各项工作流程皆能在本系统中体现出来。3.保有费用低。应用系统的保有费用包含了购买费用、管理维护费用、应用开发费用、系统集成费用等等。由于本系统管理维护简便,大大降低了保有费用。6.2解决的主要问题本系统结合工作实际,贴近仓库日常管理工作,系统有效地解决了以下几个方面的内容:1.对仓库房日常管理工作进行科学规范;对仓库房管理各类人员进行科学配置;3.实现了仓库房管理的各项主要数据的数字化管理与实时更新;6.3本系统技术创新点本系统实现了数字化的功能。登录本系统就可查看权限内的最新情况、传送或接收工作信息、呈送或检查各类报表,正常处理个人手头工作等。使得对仓库的管理更具时效性,提高了效率和质量,同时大大提高了工作效率。6.4试验试用情况对本系统的性能、各种功能以及实用性方面进行了认真检测。认为:该系统运行稳定可靠,界面友好,操作简便,实用性强,有效提高了工作效率,增强了仓库管理的完善性和有效性。本系统经某单位试用,反映良好。工作人员一致认为:本系统操作简便,简单易学,能够很好地提高工作效率,值得大力推广。6.5系统存在不足1.由于水平有限,部分代码写得不够简洁,可读性不是太强。2.系统虽然能够包含仓库管理的绝大部分工作,但也不能尽善尽美,亟待在下一步工作中加以完善补充。3.系统针对单机开发,为解决大型企业的跨地域仓库管理问题,可研究进一步开发网络版。致谢致谢我的网络教育本科即将毕业,心情无比的快乐,带着感恩的情怀写出了这篇毕业论文,在2.5年的本科计算机应用学习中,我学到了很多知识。这都离不开指导老师对我的悉心教导。主要感谢我的论文指导老师

温馨提示

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

评论

0/150

提交评论