还剩51页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
仓库管理系统目录内容提要引言第一章管理信息系统概述………………………………………………4第二章系统设计…………………………………………………………112·1系统目标设计……………………………………………………112·2开发设计思想……………………………………………………112·3系统功能分析……………………………………………………122·4系统功能模块设计………………………………………………12第三章数据库设计………………………………………………………133·1数据库需求分析…………………………………………………133·2数据库概念结构设计……………………………………………143·3数据库逻辑结构设计……………………………………………163·4数据库结构的实现………………………………………………18第四章系统主要功能模块的创建………………………………………204.1功能选择界面的设计……………………………………………214.2设备入库模块的设计……………………………………………224.3设备出库模块的设计……………………………………………274.4设备还库模块的设计……………………………………………294.5设备需求模块的设计……………………………………………334.6设备采购模块的设计……………………………………………314.7显示报表模块的设计……………………………………………344.8开发中的难点和解决技巧………………………………………37第五章系统的编译和发行………………………………………………38总结………………………………………………………………………40致谢参考文献…………………………………………………………41附录………………………………………………………………………42内容摘要《仓库管理系统》是采用VISAULFOXPRO开发的一个数据库管理系统本设计说明书主要讲述了VISAULFOXPRO的基本功能及设计方法紧接着以本系统为例,逐一介绍开发本系统系统的步骤系统分析、系统设计、系统实现、系统维护在系统分析中先后用数据流图、系统的功能结构图分析了系统所需的各种数据在系统的设计中,详细的展现了系统的各个功能模块所需的数据库表及表字段菜单的设计等在系统的实现中,给出了实现表单中相应的功能控件的事件及代码以及菜单实现的方法文章的最后则给出了本系统的主要功能运行界面图关键字仓库管理仓库管理系统VISAULFOXPRO面向对象全套源程序代码,联系153893706前言企业的物资供应管理往往是很复杂的,烦琐的由于所掌握的物资种类众多,订货,管理,发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计计划报表繁多,因此物资管理必须实现计算机化,而且必须根据企业的具体情况制定相应的方案根据当前的企业管理体制,一般物资供应管理系统,总是根据所掌握的物资类别,相应分成几个科室来进行物资的计划,订货,核销托收,验收入库,根据企业各个部门的需要来发放物资设备,并随时按期进行库存盘点,作台帐,根据企业领导和自身管理的需要按月,季度,年来进行统计分析,产生相应报表为了加强关键物资,设备的管理,要定期掌握其储备,消耗情况,根据计划定额和实际消耗定额的比较,进行定额的管理,使得资金使用合理,物资设备的储备最佳所以一个完整的企业物资供应管理系统应该包括计划管理,合同托收管理,仓库管理,定额管理,统计管理,财务管理等模块其中仓库管理是整个物资供应管理系统的核心鉴于VisualFoxpro
6.0有强大的数据库管理功能,我们选用VisualFoxpro
6.0来完成这个仓库管理系统第1章管理信息系统基础管理信息系统就是我们常说的MIS(ManagementInformationSystem),在强调管理,强调信息的现代社会中它越来越得到普及MIS是一门新的学科,它跨越了若干个领域,比如管理科学、系统科学,运筹学、统计学以及计算机科学在这些学科的基础上,形成信息收集和加工的方法,从而形成一个纵横交织的系统
1.1管理信息系统概述20世纪,随着全球经济的蓬勃发展,众多经济学家纷纷提出了新的管理理论20世纪50年代,西蒙提出管理依赖于信息和决策的思想同时期的维纳发表了控制论,他认为管理是一个控制过程1958年,盖尔写到“管理将以较低的成本得到及时准确的信息,做到较好的控制”这个时期,计算机开始用于会计工作,出现数据处理一词1970年,WalterT.Kennevan给刚刚出现的管理信息系统一词下了一个定义“以口头或书面的形式,在合适的时间向经理、职员以及外界人员提供过去的、现在的、预测未来的有关企业内部及其环境的信息,以帮助他们进行决策”在这个定义里强调了用信息支持决策,但并没有强调应用模型,没有提到计算机的应用1985年,管理信息系统的创始人,明尼苏达大学的管理学教授GordonB.Davis给了管理信息系统一个较完整的定义,即“管理信息系统是一个利用计算机软硬件资源,手工作业,分析、计划、控制和决策模型以及数据库的人-机系统它能提供信息支持企业或组织的运行、管理和决策功能”这个定义全面地说明了管理信息系统的目标、功能和组成,而且反映了管理信息系统在当时达到的水平
1.2管理信息系统的特点
1.
2.1管理信息系统的组成管理信息系统在企业中的应用存在三个要素,这就是人、计算机和数据人是指企业领导者、管理人员、技术人员,以及MIS建设的领导机构和实施机构,他们在系统中起主导作用MIS是一项系统工程,不是只靠一些计算机开发人员就可以完成的,必须有企业管理人员,尤其是企业领导的积极参与计算机技术是MIS得以实施的主要技术在这些技术中,软件开发是MIS开发的重点第三个因素也不能忽视企业的管理数据是MIS正常运行的基础广义地说,各项管理制度是MIS建设成功的基础试想要计算一台机床的生产成本,需要按时输入每个部件、每个零件甚至每个螺钉螺帽的费用,涉及企业的生产车间、采购、库房、工艺设计和财务等多个部门,必须有一整套管理制度做保证
1.
2.2管理信息系统的界面特点在计算机软件技术中,人机界面已经发展成为一个重要的分支MIS人机界面设计一般遵循以下一些基本原则
1.以通信功能作为界面设计的核心人机界面设计的关键是使人与计算机之间能够准确地交流信息一方面,人向计算机输入信息时应当尽量采取自然的方式;另一方面,计算机向人传递的信息必须准确,不致引起误解或混乱另外,不要把内部的处理、加工与人机界面混在一起,以免互相干扰,影响速度设计MIS时,针对每一个功能,都要按照“I-P-O”的模块化思想,使输入、处理与输出“泾渭分明”,充分体现人机界面的通信功能这样设计出来的程序不易出错,而且易于维护报表打印是MIS必备的功能之一,而且打印之前常常需要计算计算与打印分开设计,虽然消耗时间,但易于整个MIS系统的维护
2.界面必须始终一致统一的人机界面不致于会增加用户的负担,让用户始终用同一种方式思考与操作最忌讳的是每换一个屏幕用户就要换一套操作命令与操作方法例如在整个系统可以以问号图标表示帮助,以磁盘图标表示存盘,以打印机图标表示打印等
3.界面必须使用户随时掌握任务的进展情况人机界面应该能够告诉用户软件运行的进度特别是在需要较长时间的等待时,必须让用户了解工作进展情况,如可以设计已经完成了百分之几的任务进度条等目前,Windows下的应用软件无论大小,其安装程序几乎均做到了这一点开发MIS软件时,这一点很值得借鉴
4.界面必须能够提供帮助一个优秀的MIS软件应该提供在线求助功能,甚至提供使用向导,这将给用户带来极大的方便在多媒体环境下,以语音提示作为操作向导,不会干扰屏幕信息,是一个极佳的选择
5.界面友好、使用方便多数MIS软件的数据输入量较大对于一些相对固定的数据,不应让用户频频输入(特别是汉字),而应让用户用鼠标轻松选择例如,人事管理系统中的“文化程度”是相对固定的数据,其值一般取“小学”、“初中”、“高中”、“大专”、“大本”、“硕研”、“博研”等录入这类数据之前,MIS软件应在相应位置弹出一个列表框,待用户以鼠标点击,而不应让用户每次都输入这些汉字另外,开发者应编写一个错误实时记录程序,自动记录何日、何时、何程序出了何种错误总之,所开发的MIS在使用过程中,应使用户的数据输入量降至最低限度,同时也要减少用户的干预量实践证明,用户干预愈少,MIS系统的满意程度愈高
6.输入画面尽可能接近实际如果某个电算会计软件的凭证录入画面是表格式的,一屏可录入多条记录,而且与实际凭证一模一样,甚至连颜色都无异,用户在终端上录入凭证,仿佛用笔在纸上填写凭证,以增加人机亲和力
7.具有较强的容错功能误操作、按键连击等均有可能导致数据误录巧妙地进行程序设计,可以避免此类因素造成的错误例如,录入学生成绩时,我们可以对其范围进行限定,使用户无法输入0~100以外的数据;录入学生年龄时,不妨根据实际情况将范围限制在15~20之间
1.3管理信息系统的开发管理信息系统开发方法主要有结构化生命周期开发方法、原型法、面向对象的开发方法等
1.结构化生命周期开发方法目前较为流行的MIS开发方法是结构化生命周期开发方法,其基本思想是用系统的思想和系统工程的方法,按用户至上的原则,结构化、模块化地自上而下对生命周期进行分析与设计用结构化生命周期开发方法开发一个系统,将整个开发过程划分为5个依次连接的阶段系统规划阶段主要任务是明确系统开发的请求,并进行初步的调查,通过可行性研究确定下一阶段的实施系统规划方法有战略目标集转化法(SST,StrategySetTransformation)、关键成功因素法(CSF,CriticalSuccessFactors)和企业规划法(BSP,BusinessSystemPlanning)系统分析阶段主要任务是对组织结构与功能进行分析,理清企业业务流程和数据流程的处理,并且将企业业务流程与数据流程抽象化,通过对功能数据的分析,提出新系统的逻辑方案系统设计阶段主要任务是确定系统的总体设计方案、划分子系统功能、确定共享数据的组织,然后进行详细设计,如处理模块的设计、数据库系统的设计、输入输出界面的设计和编码的设计等系统实施阶段主要任务是讨论确定设计方案、对系统模块进行调试、进行系统运行所需数据的准备、对相关人员进行培训等系统运行阶段主要任务是进行系统的日常运行管理,评价系统的运行效率,对运行费用和效果进行监理审计,如出现问题则对系统进行修改、调整这五个阶段共同构成了系统开发的生命周期结构化生命周期开发方法严格区分了开发阶段,非常重视文档工作,对于开发过程中出现的问题可以得到及时的纠正,避免了出现混乱状态但是,该方法不可避免地出现开发周期过长、系统预算超支的情况,而且在开发过程中用户的需求一旦发生变化,系统将很难作出调整
2.原型法原型法在系统开发过程中也得到不少应用原型法的基本思想是系统开发人员凭借自己对用户需求的理解,通过强有力的软件环境支持,构造出一个实在的系统原型,然后与用户协商,反复修改原型直至用户满意原型法的应用使人们对需求有了渐进的认识,从而使系统开发更有针对性另外,原型法的应用充分利用了最新的软件工具,使系统开发效率大为提高
3.面向对象系统开发方法面向对象(OO,ObjectOriented)的系统开发方法,是近年来受到关注的一种系统开发方法面向对象的系统开发方法的基本思想是将客观世界抽象地看成是若干相互联系的对象,然后根据对象和方法的特性研制出一套软件工具,使之能够映射为计算机软件系统结构模型和进程,从而实现信息系统的开发
1.
3.3管理信息系统的开发过程管理信息系统的开发过程一般包括系统开发准备、系统调查、系统分析、系统设计、系统实现、系统转换、系统运行与维护、系统评价等步骤根据开发系统的大小、复杂、投入、方式、方法等因素的不同,各步骤的要求和内容也不同,用户需要根据实际情况进行取舍和计划
1.系统开发准备系统开发准备工作主要包括提出系统开发要求、成立系统开发小组、制订系统开发计划等工作
2.系统调查新系统的系统分析与系统设计工作都要建立在对现行系统调查的基础上,即必须调查现行系统的运行情况、问题等,明确用户的需求,特别是合作开发和委托开发方式调查的主要内容有
(1)现行系统概况该组织的发展历史、目前组织的规模、工作状况、管理水平、与外界的主要联系等调查该项内容的目的主要是为了划分系统界限、系统与外界的输入输出接口等
(2)组织机构画出组织的组织结构图,弄清组织的行政关系、人员编制、工作范围、地理位置等,发现不合理问题及新系统启动后可能对现有组织的影响
(3)业务流程按照业务种类的不同和处理时间的先后不同,深入了解现行系统的业务流程,画出现行系统业务流程图,并与业务人员反复讨论,得到认可调查中要注意定性与定量相结合,注意人、财、物、信息的流向、规格、频率、要求以及需要解决的问题等
(4)报表、数据处理了解各种统计报表、数据的格式、内容、处理时间及上报时间、频率、规律,存在的问题,对新系统的要求、希望等并收集各种报表
(5)问题现行系统中存在的主要问题和薄弱环节,可以按照严重程度分成不同的等级新系统的建立应能解决大部分问题,并改善薄弱环节
(6)新系统的功能和目标了解各级领导和各类业务工作人员对新系统功能的要求,为进一步完善新系统的目标做准备
(7)其他如对新系统的各种约束条件,需要说明的其他问题等
3.系统分析系统分析(又称逻辑设计)是管理信息系统开发的关键环节,要求在系统调查的基础上,对新系统的功能进行细致的分析,并建立一个新系统的逻辑模型新系统的逻辑模型由系统数据流程图、概况表、数据字典、吃理逻辑表达式及有关说明组成最后要完成系统分析报告(也称为系统逻辑设计说明书)系统逻辑模型就像在根据需要建设一座学校前,按照学校教育的层次(初等、中等、高等)、规模、投资、地理环境、技术水平等条件的要求和约束,先由建筑设计院进行设计,保证学校建成后的各种功能得以实现,之后才能进行工程设计和施工一样在系统设计阶段要做认真、细致的分析、研究工作,避免新系统在功能上存在先天不足或缺陷因为新系统模型是建立在对现行系统的分析及要求的基础上的,所以系统调查工作要进行得深入、细致、全面用户可以对新系统的逻辑模型提出意见,双方经过讨论、修改,最后达成共识,并完成系统分析报告(系统逻辑设计说明书),经有关领导审批通过之后,转入系统设计(又称系统物理设计)阶段
4.系统设计系统设计又称系统物理设计系统设计要根据系统分析报告中的系统逻辑模型综合考虑各种约束,利用一切可用的技术手段和方法进行各种具体设计,确定新系统的实施方案,解决“系统怎么做”的问题结构化系统设计是指利用一组标准的图表工具和准则,确定系统有哪些模块,用什么方法连接,如何构成良好的系统结构,并进行系统输入、输出、数据处理、数据存储等环节的详细设计这一阶段的重点是设计好系统的总体结构,选择最经济合理的技术手段系统设计阶段的文件是系统设计报告(又称系统物理设计说明书)管理信息系统的开发是一项系统工程,为了保证系统的质量,设计人员必须遵守共同的设计原则,尽可能地提高系统的各项指标(系统可变性、可靠性、工作质量、工作效率、经济性等)
5.系统实施与转换系统实施阶段的主要工作包括系统硬件的购置与安装、程序的编写(购买)与调试、系统操作人员的培训、系统有关数据的准备和录入、系统调试和转换在系统实施阶段要成立系统实施工作量到小组,组织各专业小组组长和有关部门的领导共同编制新系统实施计划可以应用各种项目管理的软件和方法进行管理,实行项目经理负责制,保证系统实施工作的顺利进行和成功硬件的购置和安装包括计算机硬件、外设、网络、电源、机房、环境等有关设备的购买、验收、安装与调试工作等,这些工作主要由专业技术人员完成数据准备与录入工作主要是指由手工操作转入计算机处理所需的各种数据的整理、录入及计算机系统中为新系统所用数据的转换工作数据准备与录入工作要注意数据的准确性,在整理、录入、校验等各个环节把好关,为系统的顺利转换打好基础在进行以上各个环节的同时展开人员培训工作,包括管理信息系统只是的普及教育、新制度的学习、计算机操作训练等使所有人员了解新系统的基本功能、新系统对使用人员的要求、建立管理信息系统的目的、管理信息系统的建立可以为组织和个人带来的帮助和便利、个人在新系统中应该承担的工作等,是用户关心、支持新系统的实现
6.系统维护和评价管理信息系统是一个复杂的人机系统系统外部环境与内部因素的变化,不断影响系统的运行,这时就需要不断地完善系统,以提高系统运行的效率与服务水平,这就需要从始至终地进行系统的维护工作系统评价主要是指系统建成后,经一段时间的运行后,要对系统目标与功能的实现情况进行检查,并与系统开发中设立的系统预期目标进行对比,及时写出系统评价报告系统维护与评价阶段是系统生命周期中的最后一个阶段,也是时间最长的一个重要阶段,就像汽车的维护工作好可以延长汽车的使用寿命和提高其使用效率一样,系统维护工作的好坏可以决定系统的生命周期的长短和使用效果第2章系统设计2.1系统目标设计系统开发的总体任务是实现企业物资设备管理的系统化,规范化和自动化,从而达到提高企业物资管理的效率的目的2.2开发设计思想仓库管理的物资在本文中主要假定都是企业生产所需要的各种设备进货时经检查合同确认认为有效托收以后,进行验货入库,填写入库单,进行入库登记企业各个部分根据所需要的物资设备总额和部门生产活动需要提出物资需求申请计划员根据整个企业的需求开出物资设备出库单,仓库管理员根据出库单核对发放设备设备使用完毕需要及时归还入库,填写入库单根据需要按照月,季,年进行统计分析,产生相应报表仓库管理的特点是信息处理量比较大所管理的物资设备种类繁多,而且由于入库单,出库单,需求单等单据发生量特别大,关联信息多,查询和统计的方式各不相同因此在管理上实现起来有一定的困难在管理的过程中经常会出现信息的重复传递,单据,报表种类繁多,各个部门管理规格不统一等问题在本系统的设计过程中,为了克服以上困难,满足计算机管理的需要,我们采取了下面的一些原则●统一各种原始的单据的格式,统一帐目和报表的格式●删除不必要的管理冗余,实现管理规范化、科学化●程序代码标准化,软件统一化,确认软件的可维护行和实用性●界面尽量简单化,做到实用、方便,尽量满足企业中不同层次员工的需要●建立操作日志,系统自动记录所进行的各种操作2.3系统功能分析本人中的仓库管理系统需要完成功能主要有一下几点●仓库管理各种信息的输入,包括入库、出库、还库、需求信息的输入等●仓库管理各种信息的查询、修改和维护●设备采购报表的生成●在库存管理中加入最高储备和最低储备字段,对仓库中的物资设备实现监控和报警●企业各个部门的物资需求的管理●操作日志的管理●仓库管理的使用帮助2.4系统功能模块设计在系统功能分析的基础上,考虑vfp程序编制的特点,得到如图所示的系统功能模块图仓库管理系统系输维查报帮统入护看表助模模模模模模块块块块块块打日入出还需印志库库库求设管模模模模置理块块块块第三章数据库设计3.1数据库需求分析在仔细调查企业仓库物资设备管理过程的基础上,得到本系统所处理的时间流程如图所示仓库现有库存各部门需求企业总体生产计划汇总处理设备采购设备出库设备入库设备还库数据流程图在本设计中,通过对企业仓库管理的内容和数据流程分析,设计的数据项和数据结构如下●设备代码信息包括的数据项有设备号、设备名称●现有库存信息包括的数据项有现有设备、现有数目、总数目、最大库存、最小库存等●设备使用信息包括的数据项有使用的设备、使用部门、数目、使用时间、出库时状态●设备采购信息包括的数据项有采购的设备、采购员、供应商、采购数目、采购时间等●设备归还信息包括的数据项有归还设备、归还部门、归还数目、归还时间、经手人等●设备需求信息包括的数据项有需求的部门、需求设备、需求数目、需求时间等有了上面的数据结构、数据项和数据流程,就能进行下面的数据库设计3.2数据库概念结构设计这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础本设计根据上面的设计规划出的实体有库存实体、入库实体、出库实体、采购实体、还库实体、需求实体各个实体的E-R图及其关系描述如下1)库存实体E-R图现有库存设备号现有库存警戒库存总数2)入库实体E-R图入库设备号供应商信息采购价格信息采购员3)出库实体E-R图出库设备号使用部门数量时间经手人4)部门需求实体E-R图部门需求设备号需求部门需求数量需求时间5)还库实体E-R图设备还库设备号还库时间人还库数量经手人6)计划采购实体E-R图计划采购设备号库存信息供应信息时间7)实体和实体之间的关系E-R图如图所示入库现有库存出库还库部门需求设备采购3.3数据库逻辑结构设计在上面的实体以及实体之间的关系的基础上,形成数据库中的表格以及各个表格之间的关系仓库管理系统数据库中的各个表格的设计结果如下面的几个表格所示每个表格表示在数据库中的一个表
(1)设备代码表列名数据类型可否为空设备号(主键)数值型
(20)不能为空设备名称字符型
(50)可为空
(2)设备入库表列名数据类型可否为空设备号数值型
(20)不能为空入库时间(主键)日期型
(8)可为空供应商字符型
(50)可为空供应商电话字符型
(15)可为空入库数量数值型
(20)可为空价格字符型
(10)可为空采购员字符型
(20)可为空
(3)设备出库表列名数据类型可否为空设备号数值型
(20)不能为空出库时间(主键)日期型
(8)可为空使用部门字符型
(50)可为空出库状况数值型
(20)可为空经手人字符型
(20)可为空出库数量数值型
(10)不能为空领取人字符型
(50)可为空用途字符型
(50)可为空
(4)现有库存表列名数据类型可否为空设备号(主键)数值型
(20)不能为空现有库存数值型
(20)可为空最大库存数值型
(20)可为空最小库存数值型
(20)可为空总数数值型
(20)可为空
(5)部门需求表列名数据类型可否为空设备号(主键)数值型
(20)不能为空部门名称字符型
(20)不能为空需要数量数值型
(20)可为空需求开始时间日期型
(8)可为空需求结束时间日期型
(8)可为空
(6)设备还库表列名数据类型可否为空设备号(主键)数值型
(20)不能为空还库时间日期型
(8)不能为空仓库管理员数值型
(20)可为空归还数量数值型
(20)可为空归还人字符型
(10)可为空
(7)操作日志表列名数据类型可否为空操作员字符型
(50)不能为空操作内容字符型
(50)不能为空操作时间日期型
(8)可为空
(8)设备采购计划表列名数据类型可否为空设备号数值型
(20)不能为空现有库存数值型
(20)可为空总库存数值型
(20)可为空最大库存数值型
(20)可为空购买数量数值型
(20)可为空供应商字符型
(20)不能为空价格字符型
(10)可为空计划采购时间(主键)日期型
(8)可为空3.4数据库结构的实现在需求分析、概念结构设计的基础上得到数据库的逻辑结构设计之后,我们就可以在VisualFoxPro
6.0数据库系统中实现该逻辑结构打开如图所示的“仓库管理”项目后,在项目管理器中展开数据文本夹,用鼠标选中数据库,单击右侧的“新建”按钮,在弹出的对话框中将该数据库文件存储为c:\仓库管理\仓库管理.dbc在弹出的如图所示的数据库设计器中单击鼠标右键,选择“新建表”,为数据库添加数据表(表的内容见上节)下面以表设备代码表为例来介绍表的建立过程选择“新建表”,在弹出的对话框中将表存储为c:\仓库管理\设备代码.dbf在弹出的如图所示的表设计器中填写表的内容字段设置完成后,单击“确定”按钮后为表输入数据,如不想现在输入,可以先“取消”,以后再输入具体方法如下
(1)如图所示,选中要输入数据的表,单击“浏览”按钮
(2)此时弹出无数据的表,在VisualFoxPro
6.0的主窗口中选择“表”,选择“追加新记录”后,就可以在表中输入数据了如图所示不过这种方法只能一次输入一条记录,如果要输入第二条记录时,需再次选择追加新记录如果有一个已有的数据表,就可以使用“使用追加记录”将这个有数据的表追加到当前表中,不过执行该操作要求这二个表的结构完全相同第四章系统主要功能模块的创建按照前面的分析,我们将管理系统的逻辑模块统一到6个实际功能模块中,如图所示切换面板用于切换不同的操作,每项具体操作结束后,都会返回到切换面板切换面板设设设设设显备备备备备示入出还需采报库库库求购表下面对各模块的作用进行说明
(1)设备入库模块添加设备到库存中
(2)设备出库模块将设备从库存取出并记录
(3)设备还库模块将归并到库存的设备保存到数据库
(4)设备需求模块记录各部门的设备需求
(5)设备采购模块记录要采购的设备
(6)切换面板用于切换到不同的操作,如设备入库、设备出库等
(7)显示报表显示库存过多、库存不足等信息下面就按照功能模块图来设计该仓库管理系统首先在VisualFoxPro
6.0中建立一个项目管理器,以便管理本系统中所有的数据,命名为“仓库管理”一下操作均在该项目管理器中进行以下所有表单的“desktop”属性全部设为“.T.-真”4.1功能选择界面的设计这一模块的主要功能是作为系统主界面为进入本系统不同功能界面选择提供一个接口,使用一个窗口来实现这一功能首先建立一个表单,设取“caption”属性为“仓库管理”在该表单上添加6个“按钮”控件,它们的“caption”属性分别为“设备入库”,“设备出库”,“设备还库”,“部门需求”,“设备采购”,“显示报表”然后在表单上添加“图象控件”,并设其“stretch”属性为“2-strech(扩展)”,“pictrue”属性为图片所在的位置,本例中为“c:\仓库管理\
001.jpg”在“comm.and1”“caption”属性为“设备入库”控件的“click”事件中添加如下代码doform设备入库表thisform.release在“comm.and2”“caption”属性为“设备出库”控件的“click”事件中添加如下代码doform设备出库表thisform.release在“comm.and3”“caption”属性为“设备还库”控件的“click”事件中添加如下代码doform设备还库表thisform.release在“comm.and4”“caption”属性为“部门需求”控件的“click”事件中添加如下代码doform部门需求表thisform.release在“comm.and5”“caption”属性为“设备采购”控件的“click”事件中添加如下代码doform设备采购表thisform.release在“comm.and6”“caption”属性为“显示报表”控件的“click”事件中添加如下代码doform显示报表thisform.release在“form1”的属性里选择“autocenter”设置为“.T.-真”,同时将“backcolor”设置为“255255255”,“windowstate”设置为“0-普通”添加“form1”的“init”事件的代码如下setdirectorytoc:\仓库管理\*将程序的默认的路径指向资源所在的文件夹该表单设计结果如图所示4.2设备入库模块的设计在设备入库模块中将实现设备数据的添加和入库等功能本模块设计采用先用向导生成表单,然后修改的方法实现首先在项目管理器的文档视图下单击“新建”按钮,在接下来的向导中,“数据库和表”选择“仓库管理”以及“设备入库表”,这是前面定义好的数据库和表由于设备入库需要显示所有的字段,因此我们将可用字段全部移至选定字段,如图所示,单击“下一步”按钮,在表单样式中,选择“阴影式”以及“图片按钮”,如图所示左上角的窗口提供了表单样式的预览功能,图片按钮和文本按钮的区别在于显示的时候是以图片来表达功能还是文字来表达,实现功能的函数没有区别选择“上一步”按钮可以跳回上一个界面对表单中显示的字段进行修改单击“下一步”按钮后,向导进行到“步骤3-排序次序”,如图所示,选择“设备号”为索引,并选择升序排列最后预览表单,核对每项的设置,完成表单向导,如图所示值得注意的是,在结束表单向导前,可选择“保存表单以备将来使用”,“保存并运行表单”,或者“保存表单并用表单设计器修改表单”由于VisualFoxPro
6.0向导生成的表单只具有普遍性,对于当前设计的仓库管理系统还需要一定的改变,因此以我们选择“保存表单并用表设计器修改表单”单击“完成”按钮系统提示保存表单,将表单保存为“设备入库表.scx”,存于c:\仓库管理目录下然后打开表单修改器生成的表单,如图所示在修改BUTTONSET时,可以通过属性窗口的下拉列表选定单个按钮,调整其位置和其它属性如图所示根据功能需求,把“cmdprint”、“”cmdexit、“cmdDelete”和“cmdedit”的Visible属性都设为“.F.-假”添加2个命令按钮,Caption属性分别设为“修改库存”和“回主界面”在“回主界面”命令按钮的click事件中添加代码如下thisform.releasedoform仓库管理在修改库存命令按钮的click事件中添加代码如下select现有库存表getid=thisform.设备号
1.text
1.valuesetorderto设备号seekgetidiffoundgetnum=thisform.入库数量
1.text
1.valueupdate现有库存表set现有库存=现有库存+getnumwhere设备号=getidelseinsertinto现有库存表设备号现有库存最大库存最小库存;valuethisform.设备号
1.text
1.valuethisform.入库数量
1.text
1.value100010endifinsertinto操作日志表操作员操作内容操作时间;valuesthisform.采购员
1.text
1.value设备入库date保存后运行表单,界面如图所示4.3设备出库模块的设计在设备出库模块中将实现设备出库数据的添加和修改库存等功能该模块的功能和设备入库的功能相似具体操作可以参考设备入库模块的设计,设计最终的界面如图所示在表单的左上角加上了显示当前时间的功能,添加标签label2的caption属性设为“当前时间”;添加label3的caption属性设为空;为当前表单的label3init事件添加如下代码this.caption=dtocdate该模块具体实现过程不再一一详细说明下面列出了表单中所用到控件的属性值1Form1控件的主要属性属性名称属性值Caption设备出库表Autocenter.T.-真BackColor
255.
255.255
(2)ButtonSet1控件的主要属性控件名属性名称属性值cmdExitVisible.F.-假cmdDeleteVisible.F.-假cmdPrintVisible.F.-假cmdEditVisible.F.-假Command1Caption修改库存Command2Caption回主界面下面时设备出库表单中“修改库存”命令按钮的click事件的代码select现有库存表*先在该表单的数据环境中添加现有库存表getid=thisform.设备号
1.text
1.valuesetorderto设备号seekgetid*在现有库存表中查找设备号等于getid的纪录iffoundgetnum=thisform.出库数量
1.text
1.valueupdate现有库存表;set现有库存=现有库存-getnumwhere设备号=getid*如果库存表中有该项设备,则更新库存表insertinto操作日志表操作员操作内容操作时间;valuesthisform.领取人
1.text
1.value设备出库dateelsemessagebox出错1错误的设备号endif4.4设备还库模块的设计在设备还库模块中将实现设备还库数据的添加和修改库存等功能,按照前面介绍的步骤设计设备还库表设备还库表所可能用到的控件的属性如表所示
(1)Form1控件的主要属性属性名称属性值Caption设备还库表Autocenter.T.-真BackColor
255.
255.255
(2)ButtonSet1控件的主要属性控件名属性名称属性值cmdExitVisible.F.-假cmdDeleteVisible.F.-假cmdPrintVisible.F.-假cmdEditVisible.F.-假Command1Caption修改库存Command2Caption回主界面下面是设备还库表中“修改库存”命令按钮的click事件的代码select现有库存表*先在该表单的数据环境中添加现有库存表getid=thisform.设备号
1.text
1.valuesetorderto设备号seekgetid*在现有库存表中查找设备号等于getid的纪录iffoundgetnum=thisform.归还数量
1.text
1.valueupdate现有库存表;set现有库存=现有库存-getnumwhere设备号=getidinsertinto操作日志表操作员操作内容操作时间;valuesthisform.归还人
1.text
1.value设备还库date*如果库存表中有该项设备,则更新库存表同时更新操作日志elsemessagebox出错1错误的设备号*如果没有该设备号则报告出错信息endif保存后运行表单,可得到如图所示的设备还库表4.5设备需求模块的设计在设备需求模块中将实现设备需求数据的添加和保存日志等功能首先通过VisualFoxpro的表单向导生成所需的设备需求表单,选择部门需求表的所有可用字段,然后为保持程序风格的一致,继续采用表单的阴影式和图片按钮的风格在“步骤3-排序次序”时选择设备号的升序排列最后单击“完成”按钮,把表单保存在“c:\仓库管理\”目录下,名为“设备需求.scx”通过表单向导生成的表单如图所示,我们可以调节控件的位置,修改表单中控件的属性,最后结果所下图所示相关的属性设置如下图所示
(1)Form1控件的主要属性属性名称属性值Caption部门需求表Autocenter.T.-真BackColor
255.
255.255
(2)ButtonSet1控件的主要属性控件名属性名称属性值cmdExitVisible.F.-假cmdDeleteVisible.F.-假cmdPrintVisible.F.-假cmdEditVisible.F.-假Command1Caption保存日志Command2Caption回主界面在表单设计器中,双击“保存日志”命令按钮添加click事件代码如下insertinto操作日志表操作员操作内容操作时间valuesusername设备需求date双击回主界面命令按钮,添加click事件代码如下thisform.releasedoform仓库管理保存对表单所作的修改4.6设备采购模块的设计在设备采购模块中将实现设备采购数据的添加和保存日志等功能
(1)由数据表生成表单通过VisualFoxpro的表单向导,生成设备采购计划表单在选择数据库和表时,选择仓库管理数据库和设备采购计划表在选择字段时,选择所有可用字段,选择阴影式和图片按钮作为设备采购计划表的样式选择计划采购时间的升序排列作为设备采购计划表的索引
(2)为窗体修改和添加命令按钮添加2个命令按钮“保存日志”和“回主界面”设置表单中控件的属性下面的表列出了需要修改的控件的名称以及属性值
(1)Form1控件的主要属性属性名称属性值Caption设备采购表Autocenter.T.-真BackColor
255.
255.255
(2)ButtonSet1控件的主要属性控件名属性名称属性值cmdExitVisible.F.-假cmdDeleteVisible.F.-假cmdPrintVisible.F.-假cmdEditVisible.F.-假Command1Caption保存日志Command2Caption回主界面
(3)为按钮添加click事件代码在表单设计器中,双击保存日志命令按钮添加click事件代码如下insertinto操作日志表操作员操作内容操作时间valuesusername设备需求date*把设备需求写入操作日志表中双击回主界面按钮,添加click事件代码如下thisform.release*释放本表单doform仓库管理*运行仓库管理界面保存对表单所作的修改,表单运行效果如图所示4.7显示报表模块的设计在该模块中,一共要显示3个报表,分别提供库存不足,库存过多和操作日志等信息1.设计显示报表表单在项目管理器的文档视图下选择“新建”,然后选择新建表单,如图所示在如图所示的空白表单中添加一个页框控件,并按照下表设置页框的属性,同时在数据环境里添加现有库存表和操作日志表控件名属性名称属性值Form1Caption显示报表Pageframe1Caption3Pageframe
1.Page1Caption库存不足表Pageframe
1.Page2Caption库存过多表Pageframe
1.Page3Caption操作日志分别为每个page添加一个表格grid1,如图所示库存过多表库存不足表操作日志表设置表格控件的属性,如表所示grid1控件的主要属性表控件名属性名称属性值Pageframe
1.Page
1.grid1ReadOnly.T.-真Pageframe
1.Page
1.grid1RecordSourceType1-别名Pageframe
1.Page
1.grid1ColumnCount-1Pageframe
1.Page
2.grid1ReadOnly.T.-真Pageframe
1.Page
2.grid1RecordSourceType1-别名Pageframe
1.Page
2.grid1ColumnCount-1Pageframe
1.Page
3.grid1ReadOnly.T.-真Pageframe
1.Page
3.grid1RecordSourceType1-别名Pageframe
1.Page
3.grid1ColumnCount-12.代码设计定义Pageframe
1.Page
1.grid1的init事件运行“显示报表”表单,界面所图所示localCusts1select设备号最大库存现有库存from现有库存表where现有库存最大库存intocursorCusts1thisform.页框.库存过多.库存过多表.recordsource=Custs1定义Pageframe
1.Page
2.grid1的init事件localCusts2select设备号最小库存现有库存from现有库存表where现有库存最小库存intocursorCusts2thisform.页框.库存不足.库存不足表.recordsource=Custs2定义Pageframe
1.Page
3.grid1的init事件localCusts3select*from操作日志表intocursorCusts3thisform.页框.操作日志.操作日志表
1.recordsource=Custs3运行“显示报表”表单,界面如图所示4.8开发中的难点和解决技巧VisualFoxPro
6.0中的向导包括表向导、数据库向导、表单向导、查询向导、报表向导、标签向导、邮件合并向导、数据透视表向导、导入向导、文档向导、安装向导、升迁向导、应用程序向导、WEB发表向导等、我们合理应用向导可以在编程中提高效率为了快速开发高效的软件,本设计中的多数表单的设计采用利用表单设计向导生成,然后在生成的表单的基础上修改数据库软件用来管理数据的优势在于可以迅速从成千上万的数据中找到我们需要的数据,而查询功能的设计也是数据库应用软件设计过程中的重点也是难点本设计过程中利用表单向导强大的功能,轻松完成了数据的查询功能而且表单向导生成的查询功能非常强大,完全可以满足数据库应用软件的需要第五章系统的编译和发行5.1设置主文件用主图标标记的文件是用户在启动.app或者.exe时被调用的文件它可以是一个表单、菜单或者程序,建议使用程序作为主文件5.2构造主文件如果主文件是一个程序,它将调用应用程序框架中的各个功能组件,然后由这些组件调用应用程序的其余部分如果要建立一个简单的主程序,可以按下列步骤进行
(1)现设置应用环境界面
(2)建立初始用户界面
(3)建立事件循环
(4)恢复环境,退出应用程序例如,可以建立下面的程序作为主程序为了避免无限循环,必须在READEVENTS命令之前安排CLEAREVENTS命令可以在主菜单或者主表单中添加一个“退出”项,该项发出CLEAREVENTS命令5.3在.app和.exe文件中包含和排除文件如果在发布的应用程序中不想再更改这些文件,可把它们放在项目中并设置为“包含”那么这些文件变成只读的,不能修改如果想修改这些文件,把它们放在项目中并设置为“排除”,然后作为独立文件随着应用程序一起发布在默认情况下,VisualFoxPro
6.0在嵌放的过程中排除了数据库、表格、成为.ff的c库文件和.app文件建议除了一些特定的表格,最好不要包含这类文件数据库和表格需要变化和添加,而如果编译后包含自.exe或者是.app文件中,由于这二个文件被创建后都是静态的,因此被包含的文件也是静态的和只读的把数据库和表格包含在这些文件中很明显会带来问题因为这些文件不能被包含在文件.exe或者是.app文件中,所以要在发布一个应用程序之前为这些文件做好准备如要排除可修改的文件,首先在项目管理器中,选择可修改的文件,然后从“项目”菜单中选择“排除”命令在一个文件被排除后,则在文件的左方加入一个排除符号小结一个完整的仓库管理系统到此就制作完成了在本例中详细的讲述了从创建数据库到系统设计和各模块的创建、面向对象的表单的设计、基本功能如查询的实现、主程序的编写致谢在本次毕业设计的过程中,我的导师和学院的老师们给了我很大的指导和帮助不仅使我在规定的时间内完成了系统的设计,同时还使我学到了很多有益的经验在此,我谨向他表示最衷心的感谢同时,学校给了我这次毕业设计的机会,使我得到了很好的锻炼,在此,我也向学校的各位老师表示最诚挚的感谢主要参考文献作者.书名.出版社.出版日期1.李加福·VisualFoxPro
6.0·北京·清华大学出版社·2004年6月2.周建成·FoxPro
2.5命令与函数专辑·北京·人们邮电出版社·2001年7月3.梁杰、效英、殷咸青·Foxpro
2.6forwindows使用详解·西安·西安电子科技大学出版社·2002年5月附录程序运行界面1主界面2设备入库表3设备出库表4设备还库表5部门需求表6设备采购表7显示报表附录2主要控件的源代码清单1主程序源代码SETTALKoffsetsysmenuoffsetcenton_screen.windowstate=2_screen.icon=icons\happy.ico_screen.maxbutton=0_screen.minbutton=1_screen.closable=.f.modifywindowscreennocloseMODIFYWINDOWSCREENTITLE仓库管理信息系统ZOOMWINDOWSCREENMAXsetdefaulttodatadoform登录表单readeventsclearcloseallreturnendif2登录表单的确定按钮控件的click源代码locateforalltrim用户名==alltrimthisform.combo
1.valueandalltrim密码==alltrimthisform.text
1.valueif!eofifalltrim级别==管理员publicjbusernamejb=1username=alltrimthisform.combo
1.valueelsepublicjbusernamejb=0username=alltrimthisform.combo
1.valueendifdomenu.mprthisform.releasedoform仓库管理else#definemissmatch_loc用户或口令错,请重新登录!waitwindowmissmatch_loctimeout1thisform.combo
1.value=thisform.text
1.value=thisform.text
1.setfocusnumcount=numcount+1ifnumcount=4numcount=0mess=messagebox三次口令错,将退出程序!4+16+2退出cleareventreleasethisformendifendif3密码修改表单的修改按钮的click事件源代码ifemptythisform.text
4.valuemess=messagebox用户名不能为空!48警告elseifemptythisform.text
1.valuemess=messagebox旧密码不能为空!48警告elseifemptythisform.text
2.valuemess=messagebox新密码不能为空!48警告elseifemptythisform.text
3.valuemess=messagebox重复密码不能为空!48警告elseifalltrimthisform.text
2.valuealltrimthisform.text
3.valueorlenalltrimthisform.text
2.valuelenalltrimthisform.text
3.valuemess=messagebox二次密码不一致!48警告elselocateforalltrim用户名==alltrimthisform.text
4.valueandalltrim密码==alltrimthisform.text
1.valueifeofmess=messagebox密码错误,系统将取消你的修改权利!48警告thisform.releaseelserepl密码withalltrimthisform.text
3.valuemess=messagebox密码修改成功!48信息thisform.releaseendif4添加操作员表单的最首按钮的click事件源代码gotopthisform.grid
1.setfocusthisform.grid
1.refresh5添加操作员表单的上一个按钮的click事件源代码skip-1ifbofchr7=messagebox警告,这已经是第一条记录!48信息窗口gotopendifthisform.grid
1.setfocusthisform.grid
1.refresh6添加操作员表单的下一个按钮的click事件源代码skipifeofchr7=messagebox警告,这已经是最后一条记录!48信息窗口gobottomendifthisform.grid
1.setfocusthisform.grid
1.refresh7添加操作员表单的最末按钮的click事件源代码gobottomthisform.grid
1.setfocusthisform.grid
1.refresh8添加操作员表单的修改按钮的click事件源代码ifthisform.command
5.caption=修改thisform.text
1.readonly=.f.thisform.text
2.readonly=.f.thisform.text
3.readonly=.f.thisform.combo
1.readonly=.f.thisform.command
5.caption=保存thisform.command
1.enabled=.f.thisform.command
2.enabled=.f.thisform.command
3.enabled=.f.thisform.command
4.enabled=.f.thisform.command
6.enabled=.f.thisform.command
7.enabled=.f.thisform.command
8.enabled=.f.elsethisform.command
5.caption=修改thisform.text
1.readonly=.t.thisform.text
2.readonly=.t.thisform.text
3.readonly=.t.thisform.combo
1.readonly=.t.thisform.command
1.enabled=.t.thisform.command
2.enabled=.t.thisform.command
3.enabled=.t.thisform.command
4.enabled=.t.thisform.command
6.enabled=.t.thisform.command
7.enabled=.t.thisform.command
8.enabled=.t.endifthisform.grid
1.setfocusthisform.grid
1.refresh9添加操作员表单的添加按钮的click事件源代码ifthisform.command
6.caption=添加thisform.text
1.readonly=.f.thisform.text
2.readonly=.f.thisform.text
3.readonly=.f.thisform.combo
1.readonly=.f.thisform.command
6.caption=保存thisform.command
1.enabled=.f.thisform.command
2.enabled=.f.thisform.command
3.enabled=.f.thisform.command
4.enabled=.f.thisform.command
5.enabled=.f.thisform.command
7.enabled=.f.thisform.command
8.enabled=.f.appeblanelsethisform.command
6.caption=添加thisform.text
1.readonly=.t.thisform.text
2.readonly=.t.thisform.text
3.readonly=.t.thisform.combo
1.readonly=.t.thisform.command
1.enabled=.t.thisform.command
2.enabled=.t.thisform.command
3.enabled=.t.thisform.command
4.enabled=.t.thisform.command
5.enabled=.t.thisform.command
7.enabled=.t.thisform.command
8.enabled=.t.endifthisform.grid
1.setfocusthisform.grid
1.refresh10添加操作员表单的删除按钮的click事件源代码cMessageTitle=系统警告cMessageText=确认要删除吗?nDialogType=4+32nanswer=messageboxcMessageTextnDialogTypecMessageTitleifnanswer=6delethisform.grid
1.setfocusthisform.grid
1.refreshendif11类baseform的picrecord的源代码IFTYPETHIS.APP_MEDIATOR.BaseClass#CRETURNENDIFIFTHIS.APP_MEDIATOR.PickRecordToWorkOnIFTHIS.APP_MEDIATOR.lAddingAND!EMPTYALIASTHIS.REFRESH*CheckifwehaveblankrecordalreadyfromtxtbtnsIFGETFLDSTATE1#3THIS.AddRecordENDIFENDIFENDIF12类baseform的queryunload的源代码IFTYPETHIS.APP_MEDIATOR.BaseClass#CIF!THIS.ResolveConflictsNODEFAULTRETURN.F.ENDIFRETURNENDIFIFDODEFAULTIFNOTTHIS.App_Mediator.QueryUnloadNODEFAULTRETURN.F.ENDIFELSENODEFAULTRETURN.F.ENDIF13类baseform的release的源代码IF!THIS.QueryunloadNODEFAULTRETURN.F.ENDIF14类baseform的resolveconflicts的源代码#DEFINEPROMPTTOSAVE_LOCDatahasbeenchanged.WouldyouliketosavechangesIF!THIS.lSaveBufferedDataRETURNENDIFLOCALnDECursorsaDECursorscDataEnvReflPromptSavelHadPromptLOCALlcAliaslnFieldsnPromptSaveiloCurrentControl*FlushcurrentcontrolIFTYPETHIS.ActiveControl.baseclass=CAND;PEMSTATUSTHIS.ActiveControlvalue5AND;PEMSTATUSTHIS.ActiveControlcontrolsource5AND;!EMPTYTHIS.ActiveControl.controlsourceloCurrentControl=THIS.ActiveControl*CheckifdataactuallychangedIF!EVALloCurrentControl.controlsource=loCurrentControl.ValueloCurrentControl.Value=loCurrentControl.ValueENDIFloCurrentControl=ENDIFnDECursors=0cDataEnvRef=DIMENSIONaDECursors
[1]DOCASECASETYPETHISFORM.DataEnvironment=OnDECursors=AMEMBERSaDECursorsTHISFORM.DataEnvironment2cDataEnvRef=THISFORM.DataEnvironmentCASETYPETHISFORMSET.DataEnvironment=OnDECursors=AMEMBERSaDECursorsTHISFORMSET.DataEnvironment2cDataEnvRef=THISFORMSET.DataEnvironmentCASETHIS.lUpdateAllBufferedTablesnDECursors=AUSEDaDECursorsOTHERWISEIF!EMPTYALIASaDECursors
[1]=ALIASnDECursors=1ENDIFENDCASEFORi=1TOm.nDECursorsIFEMPTYm.cDataEnvReflcAlias=aDECursors[m.i]ELSEWITHEVALm.cDataEnvRef+.+aDECursors[m.i]IFATCCURSOR.BaseClass=0skiprelationsLOOPENDIFlcAlias=.ALIASENDWITHENDIFIFUSEDlcAliasANDCursorGetPropsourcetypelcAlias=3AND;CursorGetPropbufferinglcAlias1IF!m.lHadPromptIFCursorGetPropbufferinglcAlias3IFGETNEXTMODIFIED0lcAlias=0LOOPENDIFELSElnFields=GETFLDSTATE-1lcAliasIFREPLICATE1LENlnFields=TRANSlnFieldsLOOPENDIFENDIFnPromptSave=MESSAGEBOXPROMPTTOSAVE_LOC35IFnPromptSave=2RETURN.F.ENDIFlPromptSave=nPromptSave=6lHadPrompt=.T.ENDIFIFm.lPromptSaveTableUpdate.T..T.lcAliasupdateonexitELSETableRevert.T.lcAliasupdateonexitENDIFENDIFENDFOR15类baseform的show的源代码LPARAMETERSnStyleLOCALlcAppRefIFTYPETHIS.APP_MEDIATOR.BaseClass#COR!THIS.lShowFirstTimeRETURNENDIFTHIS.lShowFirstTime=.F.THIS.lSaveBufferedData=.F.THIS.PickRecord第53页共54页。