某物资存储管理系统设计与实现-无忧无虑毕设网_第1页
某物资存储管理系统设计与实现-无忧无虑毕设网_第2页
某物资存储管理系统设计与实现-无忧无虑毕设网_第3页
某物资存储管理系统设计与实现-无忧无虑毕设网_第4页
某物资存储管理系统设计与实现-无忧无虑毕设网_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 本文配套程序下载地址 : 无忧无虑毕设网 ()-大学生毕业设计站 ,免费毕业设计论文 ,无忧无虑毕设网 大学生毕业设计 ,出售各类毕业设计源码 ,论文 ,程序源码 ,网站源码 ,免费视频教程 ,我们将竭诚为您服务! 分类号: TP315 U D C: D10621-408-(2007)6250-0 密 级:公 开 编 号: 2002032023 成 都 信 息 工 程 学 院 学 位 论 文 某物资存储管理系统设计与 实现 论文作者姓名: 杜 林 申请学位专业: 网络工程 申请学位类别: 工学学士 指导教师姓名(职称): 王 燚(副教授) 论文提交日期: 2007年 6 月 10 日 某物资存储管理系统设计与实现 摘 要 随着市场经济的高速发展,物资存储管理越来越重要,如何降低成本,提高工作效率是物资存储管理者需要解决的一个实际问题,本系统从实际出发,在分析目前物资管理中存在的问题基础上,结合管理信息系统开发的概念,结构及系统开发的基本原理和方法开发的。系统是用 Delphi7.0 作 为前台开发工具、用 SQL Server 2000 作为后台数据库开发的物资存储管理系统,支持多形式客户的数据共享、提高作业效率、监控整个物资进库、出库流程、提供完整的物资出库、入库信息,并且特别关注对各环节业务的监控及例外情况的监控。系统主要完成对 物资 仓库的库存管理,包括 物资 入库、出库、库存,员工信息,供应商信息以及密码管理等。系统可以完成对各类信息的浏览、查询、添加、删除、修改 等功能。 关键词 : 物资 物资入库 物资出库 Design and Implementation of A Commodity Storage Management System Abstract Along with the market economy high speed development, the commodity storage management is becoming more and more important. How to reduce the cost and enhance the working efficiency is a critical problem which the superintendent needs to solve. This commodity storage management system is developed according to the principle of software system development and is based on analyzing the problems existing in current commodity management systems. This system, which uses Delphi7.0 to develop the forestage application and uses SQL Server 2000 as the backstage database, supports various kinds of customer data sharing to enhance the work efficiency. It monitors the entire commodity flow entering and leaving the storage in order to provide detail information of how and when the commodity leaves or enters the storage to the customers. The system has implemented the basic functions for commodity storage management, including storing and retrieving goods, checking the state of goods and the information of suppliers, as well as the password management and so on. Key words: Commodity; In-Stock; Out-Stock 目 录 论文总页数: 27页 1 引言 . 1 1.1 背景 . 1 1.2国内现状的研究 . 1 1.3开发思路 . 2 1.3.1物资管理信息系统开 发的必要性 . 2 2 管理系统功能分析 . 2 2.1 系统功能分析 . 2 2.2 系统功能模块设计 . 3 3 系统开发工具介绍 . 3 3.1 开发工具的选择 . 3 3.2 Delphi 7.0 及 SQL Server 2000简介 . 4 3.2.1 Delphi 7.0简介 . 4 3.2.2 SQL Server 2000简介 . 5 4 数据库的实现 . 6 4.1 数据库综述 . 6 4.2 确定数据表和表中的字段以及数据结构 . 6 4.2.1 数据表概要说明 . 6 4.2.2 主要的表中的字段以及数据结构 . 7 5 物资存储管理系统设计与实现 . 10 5.1 主程序窗体设计 . 10 5.1.1主窗 体设计步骤 . 10 5.1.2程序相关代码分析 . 12 5.2 基础窗体的设计与实现 . 13 5.2.1基础窗体的设计 . 14 5.2.2 程序相关代码分析 . 14 5.3 物资入库管理设计与实现 . 14 5.3.1 物资入库管理的设计 . 15 5.3.2 相关代码的分析 . 16 5.4 物资出库管理的设计与实现 . 20 5.4.1物资出库管理的设计 . 20 5.4.2相关代码的分析 . 22 6 主要功能模块测试 . 23 6.1 物资入库管理测试 . 24 6.2 物资入库查询测试 . 24 6.3 物资出库管理测试 . 24 结 论 . 25 参考文献 . 25 致 谢 . 26 声 明 . 27 第 1 页 共 27 页 1 引言 1.1 背景 对物资的管理在企业生产经营中非常重要,物资管理的好环,直接影响着企业的经营生产和发展进步。由于物资供应渠道多、品种规格千变万化,这就使得物资的供应和管理变得复杂和困难。如何加强企业 成本意识,做好物资供应、降低库存、加速资金周转、加强物资使用监督和财务监督以成为企业愈加关注的问题。在物资管理中采用计算机管理十分必要,这对于搞好物资的供、管、用三方面的工作,保障供应,合理地使用物资,提高物资管理劳动生产率,促进企业健康发展具有重要意义。 采用计算机物资管理系统,具有以下优点: 1 利用计算机和信息技术,可以代替人工劳动,减轻工作人员工作量和工作繁琐程度,提高工作效益和工作质量等。 2 通过对库存的有效管理,可以节约资金占用,降低库存,提高经济效益。 3 通过对材料消耗的控制,降低生产成本 。 4.通过对供应渠道的有效管理,加强与供应商的协作,提高市场反应能力。 1.2国内现状的研究 信息已成为继劳动力、土地、资本之后的又一大资源。谁控制的信息越多,谁利用信息资源的效率越高,谁就会在各方面的竞争中占有一席之地,谁就会有更多的优势。 物资供应部门是企业与生产单位之间的桥梁、纽带,是企业正常生产的物资保障部门。正因为供应部门是关键的中转环节,建立一套物资管理信息系统对于如何有效的把本单位生产所需的生产资料及时、保质保量的供应上去,有着重要的意义。从微观上讲,建立一套物资管理信息系统能够加 快物资的周转速度,提高生产效率,从而加强了管理的信息化手段,提高了本单位的经济效益。从宏观上讲,顺应了社会的信息化、社会化潮流,缩短了整个社会化大生产的周期。 由于物资管理在社会大生产中占用重要地位,其计算机化在发达国家已达到95%以上,而我国在全国范围内推广计算机在管理中的应用,是在 80 年代初开始的。起步虽晚,但发展快。特别是微型计算机的出现和普及,为信息处理提供了物美价廉的手段,对于推动我国管理信息处理 现代 化起到了重要作用。物资管理工作中存在的主要 问题: 1 ) 根据各单位 或公司 所报材料明细逐个与库存账 本对照查阅,库中有其所需材料则开据料单从库中领取,若库中 没有 ,则通知采购人员采购。库中物资种类繁多,查对繁琐,易出错。 第 2 页 共 27 页 2 ) 从开据发料单到每月结帐、清册都是手工操作,计算器加算盘,效率低且准确率不高。单位配备的计算机仅局限于打字,做报表,不能开单据,计算机应有的功能没有充分发挥。 针对以上存在的问题,通过建立物资管理信息系统使物资管理工作更加规范化、程序化,提高其处理工作的速度和准确性,也便于动态查询,提高 效率 。 1.3开发思路 1.3.1 物资管理信息系统开发的必要性 通过对以上在物资管理中存在 的 问题 及 需求调查得知,以前的物资管理办法,工作繁琐,工作量大,效率低。因而,建立一套物资管理信息系统势在必行。各单位的需求虽然不尽相同,但大体上可分为如下几个方面 : ( 1)用户的信息要求:随时查询库存物资状况,进行库存物资汇总,对记录能随时删除、插入及恢复。 ( 2)用户的处理要求:能随时增加、删除,修改每一个库存物资记录,并能打印单据。 ( 3)对数据的安全性、完整性的要求:要保证每个记录必须完整 。 1.3.2 物资管理信息系统开发 的可行性 所谓 开发的可行性 ,就是指在整个系统开发工程中,解决 “ 做什么 ” 的问题,把要解决 哪些问题,满足用户哪些具体的信息需求调查分析清楚,从逻辑上或说从信息处理的功能需求上提出系统的方案,即逻辑模型,为下一阶段进行物理方案设计,解决怎么办提供依据。它是信息开发系统中的一个重要阶段,是建立系统模型的第一步。其核心是目标分析与需求分析,最后提出系统的逻辑方案 。 2 管理系统功能分析 2.1 系统功能分析 物资管理系统是一个典型的数据库应用程序,由启动窗体模块、登录模块、系统主界面模块、基础信息模块、物资管理模块、信息查询模块、红字冲销模块、系统管理模块等组成,特规划功能如下: (1) 物资管理模块 主要功能是对物资的入库、出库、入库退货进行管理。 (2) 物资管理模块主要功能是对物资的入库、出库、入库退货进行管理。 (3) 信息查询模块主要功能是对物资入库、物资出库、物资退货、和供应商结款进行高效的查询。 (4) 红字冲销模块主要是对入库票号、出库票号、入库退货票号、和供应商结款票号进行冲销。 (5) 系统管理模块主要功能是系统登录、口令修改和系统退出。 第 3 页 共 27 页 2.2 系统功能模块设计 本系统的功能模块如图 1所示 物 资 管 理 系 统基 础 信 息 管 理 物 资 管 理 系 统 管 理仓库信息基础管理物资基础信息管理供应商信息管理职工信息管理操作员信息管理职务信息管理物资入库管理物资出库管理物资入库退货盘点打印供应商结款系统登录口令管理系统退出信 息 查 询物资入库查询物资出库查询物资退货查询供应商结款查询红 字 冲 销入库票号冲销出库票号冲销入库退货票号冲销供应商接口票号冲销图 1 系统功能模块图 3 系统开发工 具介绍 3.1 开发工具的选择 随着社会需求的推动和计算机技术的发展普及,各行业的管理机构需要有计算机来处理大量的信息。选择一优秀的数据库管理系统作为开发平台,将给日后的信息处理带来便利性。其中,基于微型计算机的数据库系统是应用最广泛、实用性最强的一种计算机技术。而事实证明: SQL数据库是一个广泛使用、简单易用、性能价格比较高、工具完整而又丰富、界面友好、处理速度高的关系型数据库。 SQL SERVER20000 主要用于 Windows 环境,利用它可设计出体现Windows 风格的丰富多彩的图形化用户界面,使用户 的操作和使用十分便利。SQL SERVER2000 是为数据库应用程序开发而设计的功能强大、面向对象的编程工具。它能够管理大量复杂的数据信息,同时有具有很好的安全性和较强的网络功能,甚至还能够实现数据的远程访问和存储加工 从本人的实际情况看:因为在校期间也有学习过可视化的编程,对这一类的软件的使用也有较深的认识,所以说选用 SQL SERVER2000作为开发工具是很 第 4 页 共 27 页 有优势的。 而对于前台编程工具,目前比较流行的是 VC+,VB, Delphi,PowerBuilder,C+builder 等。对底层编程比较需 要的地方就大部分 VC+,而Delphi的 IDE是非常易用的。业界有一句很经典的话:真正的程序员用 VC+,而聪明的程序员用 Delphi。可见, VC+与 Delphi 是两种较优秀的语言开发工具。 Delphi 7.0应用程序开发工具, 是 目前最为广泛的、易学易用的面向对象的开发工 具, Delphi 7.0提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故实现本系统 用 Delphi作为开发工具 是一个 明智 的选择。 3.2 Delphi 7.0 及 SQL Server 2000 简介 3.2.1 Delphi 7.0 简介 Delphi是全新的可视化编程环境 , 为我们提供了一种方便、快捷的 Windows应用程序开发工具。它使用了 Microsoft Windows图形用户界面的许多先进特性和设计思想 , 采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术。 它简单易学、效率高,且功能强大,可以与 Windows的专业开发工具 SDK相媲美, 使用 Delphi开发应用软件,无疑会大大地提高编程效率。 DELPHI最显著的特点就是高效性和稳定性, 总的来说, 主要体现在以下 6个方面: (1)可视化开发环境的性能。 (2)面向对象编程的概念。 (3)编译器的速度和已编译代码的效率。 (4)编程语言的功能及其复杂性。 (5)数据库结构的灵活性和扩展性。 (6)框架对设计和使用模式的扩充。 Delphi实际上是 Pascal语言的一种版本 , 但它与传统的 Pascal语言有天壤之别。一个 Delphi程序首先是应用程序框架 , 而这一框架正是应用程序的 “ 骨架 ” 。在骨架上即使 没有附着任何东西,仍可以严格地按照设计运行。您的工作只是在“ 骨架 ” 中加入您的程序。缺省的应用程序是一个空白的窗体 (Form),您可以运行它,结果得到一个空白的窗口。这个窗口具有 Windows窗口的全部属性:可以被放大缩小、移动、最大最小化等,但您却没有编写一行代码。因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下了良 第 5 页 共 27 页 好的基础。 Delphi已经为您做好了一切基础工作 -程序框架就是一个已经完成的可运行应用程序,只是不处理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代 码而已。 在空白窗口的背后,应用程序的框架正在等待用户的输入。由于您并未告诉它接收到用户输入后作何反应,窗口除了响应 Windows的基本操作 (移动、缩放等 )外,它只是接受用户的输入,然后再忽略。 Delphi把 Windows编程的回调、句柄处理等过程都放在一个不可见的 Romulam覆盖物下面,这样您可以不为它们所困扰 ,轻松从容地对可视部件进行编程。 3.2.2 SQL Server 2000简介 SQLServer2000 继承了数据库软件设计和引擎方面的优势,已经成为新一代网络应用程序的最佳数据库和分析解决 方案之一。作为 Microsoft NET Enterprise Servers 的核心组件,它将减少电子商务、在线商务和数据仓库应用程序推向市场的时间,并对需要的环境提供可靠的支持。 SQLServer2000 对 XML和 HTTP 提供充分的支持;提供分割装载和确保时间的特性;提供先进的管理和协调机制,可以自动管理线程任务,降低总体开销。 SQLServer2000 是一个具备完全 Web 支持的数据库产品,提供了可扩展标记语言( XML)核心支持以及Internet 上和防火墙外进行查询的能力,具有可伸缩性、灵活 性、扩充性好,而且价格便宜等特点;还可以使用 XML 更新程序更容易地插入、更新和删除数据。使用 SQLServer2000 可以获得非凡的可伸缩性和可靠性。通过向上伸缩和向外扩展的能力, SQLServer2000 满足苛刻的电子商务和企业应用程序要求。主要体现为: ( 1)高度可用性; ( 2)可伸缩性; ( 3)安全性; ( 4)分布式分区图; ( 5)索引视图; ( 6)虚拟接口系统网络; ( 7)复制特性。 SQLServer2000 是 Microsoft NET Enterprise Server 的数据管理与分析中枢。 SQLServer2000 包括加速从概念到最后交付开发过程的工具。主要体现为: ( 1)经过简化的数据库管理; ( 2)提高开发人员的工作效率; ( 3)数据转换服务( DTS); ( 4)扩展应用程序; 第 6 页 共 27 页 ( 5)英语查询; ( 6)数据挖掘; ( 7) OLAP 服务; ( 8) OLAP 灵活性; ( 9)闭合循环分析。 4 数据库的实现 4.1 数据库综述 数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。 数据库在系统中占有非常重要的地位,数据库设计的好坏将 直接影响系统的效率。合理的数据库设计可以提高数据存储的效率,有利于程序的实现。 创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。创建一个数据库结构的过程被认为是数据模型设计。 1标识需要的数据; 2收集被标识的字段到表中; 3标识主关键字字段; 4绘制一个简单的数据图表; 5规范数据; 6标识指定字段的信息; 7创建物理表。 4.2 确定数据表和表中的字段以及数据结构 4.2.1 数据表概要说明 如图 2 所示的即为本系统中数据库中的数据表的树形结构图,该数据表树型结构图 包含系统所有数据表。可以清晰地反应数据库信息 。 第 7 页 共 27 页 图 2 数据表树形结构图 4.2.2 主要的表中的字段以及数据结构 ( 1) tb_storeregID(入库主要信息表) 入库主要信息表用于保存入库的主要信息,入库主要信息表结构如表 1 所示 。 表 1 tb_storeregID 数据结构 字段名称 数据类型 字段大小 主键否 功能描述 regID varchar 30 是 登记票号 providername varchar 30 供应商名称 principal varchar 30 负责人 operator varchar 30 操作员 stocktotal Money 8 入库总计 stockrebate float 8 入库折扣 paymoney money 8 应付金额 factmoney money 8 实付金额 timedate datetime 8 时间 ( 2) tb_storeoutlist (物资出库详细信息表) 物资出库详细信息表用于保存物资出库详细信息,物资出库详细信息表结构如表 2所示。 表 2 tb_storeoutlist数据结构 字段名称 数据类型 字 段大小 主键否 功能描述 outID varchar 30 出库票号 storename varchar 30 物资名称 num float 8 数量 storagename varchar 30 仓库名称 ( 3) tb_storeoutID(物资出库主要信息表) 第 8 页 共 27 页 物资出库主要信息表用于保存物资出库的主要信息,物资出库主要信息表结构如表 3所示。 表 3 tb_storeoutID 数据结构 字段名称 数据类型 字段大小 主键否 功能描述 outID varchar 30 是 出库票号 storemanager varchar 30 库管员 outperson varchar 30 领取人 operator varchar 30 操作员 memo varchar 100 备注 timedate datetime 8 时间 ( 4) tb_storelist(物资入库详细信息表 ) 物资入库详细信息表用于保存物资入库的详细信息,物资入库详细信息表结构如表 4所示。 表 4 tb_storelist数据结构 字段名称 数据类型 字段大小 主键否 功能描述 regID varchar 30 登记票号 storagename varchar 30 库存名称 storename varchar 30 物资名称 unitprice money 8 单价 storesum float 8 物资数量 storemoney money 8 金额 ( 5) tb_storeinfo(物资基础信息表) 物资基础信息表用于保存物资基础信息,物资基础信息表结构如表 5所示。 表 5 tb_storeinfo 数据结构 字段名称 数据类型 字段大小 主键否 功能描述 storename varchar 30 是 物资名称 nameshort varchar 10 简码 spec varchar 20 规格 defaultprice money 8 默认价格 barcode varchar 30 条形码 basicunit varchar 10 基本单位 stockunit varchar 10 采购单位 conversion float 8 换算 ( 6) tb_storageinfo(仓库基础信息表) 仓库基础信息表用于保存仓库基础信息,仓库基础信息表结构如图 6所 示 。 表 6 tb_storageinfo数据结构 字段名称 字段类型 字段大小 主键否 功能描述 storagename varchar 30 是 仓库名称 nameshort varchar 10 简码 ( 7) tb_providerinfo(供应商信息表) 供应商信息表用于保存供应商品信息,供应商信息表结构如表 7所示。 表 7 tb_providerinfo 数据结构 第 9 页 共 27 页 字段名称 数据类型 字段大小 主键否 功能描述 providername varchar 30 是 供应商名称 nameshort varchar 20 简码 principal varchar 10 负责人 phone varchar 20 联系电话 address varchar 100 地址 web varchar 50 网址 timedate datetime 8 时间 memo varchar 100 备注 ( 8) tb_operatorinfo(操作员信息表) 操作员信息表用于保存操作员信息,操作员信息表结构如表 8所示。 表 8 tb_operatorinfo数据结构 字段名称 数据类型 字段大小 主键否 功能描述 operatorname varchar 30 操作员名称 password varchar 30 密码 level varchar 20 级别 ( 13) tb_Idlogout(票号冲销信息表) 票号冲销信息表用于保存标号冲销信息,票号冲销信息表结构如表 9所示。 表 9 tb_IDlogout 数据结构 字段名称 数据类型 字段大小 主键否 功能描述 Id varchar 30 冲销票号 kind int 4 类型 operator varchar 30 操作员 timedate datetime 8 时间 ( 14) tb_employeeinfo (员工信息表) 员工信息表用于保存员工信息,员工信息表结构如表 10所示 。 表 10 tb_employeeinfo 数据结构 字段名称 数据类型 字段大小 主键否 功能描述 workerID varchar 30 是 工号 workername varchar 30 姓名 sex varchar 10 性别 knowledge varchar 20 学历 phone varchar 30 联系方式 address varchar 30 地址 duty varchar 30 职务 engagetime datetime 8 聘用时间 memo varchar 100 备注 ( 15) tb_comstorage(物资库存信息表) 物资库存信息表用于保存物资库存信息,物资库存信息表结构如表 11所 第 10 页 共 27 页 示。 表 11 tb_comstorage 数据结构 字段名称 数据类型 字段大小 主键否 功能描述 storagename varchar 30 是 仓库名称 storename varchar 30 是 物资名称 storesum float 8 数量 5 物资存储管理系统设计与实现 5.1 主程序窗体设计 主 程序窗体是程序控制的中心,操作权限、程序功能调用等都要通过主程序窗体调用实现。实现如图 3所示。 图 3 主窗体的实现 5.1.1 主窗体设计步骤 ( 1)运行 Delphi 会自动创建一个窗体,设置该窗体为程序主窗体,命名为“ t_main”,设置窗体的 Caption 属性为“备品管理系统”; WindowState属性为“ wsMaximized”; KeyPreview属性 为“ True”。 ( 2)在“ Win32”组件页中点选“ TImageList”组件,添加到窗体上,命名为“ ImageMemu”,设置该组件的 Height属性为“ 22”; Width属性为“ 22”。双击该组件,在弹出的对话框中单击【 Add】按钮,添加图标,如图 4所示。 第 11 页 共 27 页 图 4 添加图标 ( 3)在 “ Standard” 组件页中点选 “ TActionList” 组件,添加到窗体上,命名为 “ List1” 。设置该组件的 Images属性为 “ ImageMemu” ,双击 List1组件打开编辑器,单击【 New Action】按钮 添加 Actions 对象,并设置相应的 Caption属性和 Name属性 , 如图 5所示。 图 5 添加动作项 ( 4)在“ Additional”组件页中点选“ TActionManager”组件,添加到窗体上,命名为“ ActionManage1”,双击该组件打开动作编辑器,选择“ Toolbars”选项卡,单击【 New】按钮,添加“ TActionToolBar”对象。 ( 5)在窗体上点选 ActionManager1 组件,在 “ Object Inspector” 窗口中,单击 ActionBars 属性右侧的【 】按 钮 , 弹出对话框 。 ( 6)在弹出的对话框中点选“ 0-ActionBar-ActionTooBar1”,在“ Object Inspector”窗口中,单击 Items属性右侧的【 】按钮,在弹出的对话框中,单击【 Add New】按钮添加菜单项,并设置各个菜单项的 Caption属性。 ( 7)点选各菜单项,在“ Object Inspector”窗口中,单击 Items右侧的【 】按钮,在弹出的对话框中设置子菜单项的 Action属性和 Caption 属性 ( 8)在 “ Win32”组件 页中点选 “ TStatusBar” 组件 , 添加到窗体上,命名为 “ StatusBar1” 。 StatusBar 组件用于显示状态信息,双击 StatusBar1 组 第 12 页 共 27 页 件,在弹出的对话框中单击【 Add New】按钮添加面板。在 “ Object Inspector”窗口中设置面板的 Width属性、 Text属性和 Alignment属性 。 5.1.2 程序相关代码分析 在主窗体的 OnShow 事件处理过程中,将初始化窗口,如果不存在配置文件则弹出登录服务器窗口,显示登录窗口。 procedure Tt_main.FormShow(Sender: TObject); var ini: TIniFile; server,database,user,password: String; begin /调用初始化窗口 Application.CreateForm(Tf_ini,f_ini); f_ini.ShowModal; f_ini.Free; ini := nil; /配置信息是否存在 if Not FileExists(ExtractFilePath(Application.ExeName)+Login.ini) then /判断文件是否存在 begin /调用登录服务器窗口 ,登录服务器并记录登录信息 Application.CreateForm(Tf_loginserver,f_loginserver); f_loginserver.ShowModal; f_loginserver.Free; end else /读取配置信息 begin Try ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+Login.ini); server := ini.ReadString(配置信息 ,服务器 ,); database := ini.ReadString(配置信息 ,数据库 ,); user := ini.ReadString(配置信息 ,用户名 ,); password := ini.ReadString(配置信息 ,密码 ,); 第 13 页 共 27 页 Try t_data.Connection1.ConnectionString:= Provider=SQLOLEDB.1; Password=+Trim(Password)+;Persist Security Info=True; User ID=+Trim(User)+; Initial Catalog=+Trim(Database)+;Data Source=+Trim(Server); t_data.Connection1.Open; Except if Application.MessageBox(数据库连接失败 ,是否重新连接数据库 ?,提示 ,mb_yesno) = ID_Yes then begin Application.CreateForm(Tf_loginserver,f_loginserver); f_loginserver.ShowModal; f_loginserver.Free; end; end; Finally ini.Free; end; end; Login.Execute; StatusBar1.PanelsSta_Date.Text := FormatDateTime(yyyy-mm-dd,Now); 5.2 基础窗体的设计与实现 创建基础窗体主要是提高开发速度和代码的利用率,从基础窗体继承的子窗体具有基础窗体的全部功能,基础窗体如图 6所示。 第 14 页 共 27 页 图 6 基础窗体 5.2.1 基础窗体的设计 添加一个新窗体,命名为“ f_frame”,设置其 BorderStyle 属性为“ bsDialog”; KeyPreview 属性为 “ True”。 5.2.2 程序相关代码分析 在窗体的 OnKeyDown 事件处理过程中设置,如果用户按下 ESC键关闭窗体。代码如下: procedure Tf_frame.FormKeyDown(Sender: TObject; var Key: Word; /按 Esc键关闭窗体 Shift: TShiftState); begin if Key = VK_Escape then Close; end; 定义过程“ FindNext(Direct: Boolean);”,使用 Enrter键代替 Tab键。代码如下: procedure Tf_frame.FindNext(Direct: Boolean); begin FindNextControl(ActiveControl,Direct,False,False).SetFocus; end; 5.3 物资入库管理设计与实现 物资入库管理模块主要功能是记录物资入库的相关信息,使用 TStringGrid组件实现多行录入。物资入库管理模块运行结果如图 7所示 。 第 15 页 共 27 页 图 7 5.3.1 物资入库管理的设计 ( 1)选择“ File” /“ New” /“ Other”菜单项,打开“ New Items”对话框,选择“ bpglxt”选项卡,点选“ f_frame”,以继承方式使用该窗体。 单击【 OK】按钮添加一个新命名窗体为“ f_instore”,设置 Caption 属性为“物资入库管理”。 ( 2)在窗体上添加 TLabel组件,命名为“ Label1”。设置该组件的 Caption属性为“物资入库管理”,设置 Label1组件的 Font属性。 ( 3)在窗体上添加 TPanel组件,命名为“ Panel2”。设置该 组件的 Align属性为“ alBottom”; Caption属性为空。 ( 4)添加 4个 TLabel 组件到 Panel2组件上,分别设置它们的 Caption 属性为“供应商名称”、“负责人”、“操作员”、“时间”。添加 4 个 TEdit 组件到Panel2组件上,分别命名为“ Providername”,“ Principal”,“ Operator”。添加 TDateTimePicker 组件到 Panel2组件上,命名为“ Date”。 ( 5)在窗体上添加 TPanel组件,命名为“ Panel1”。设置该组件的 Align属性为“ alBottom”,在 Panel1组件上添加 4 个 TLabel组件和 4个 TEdit 组件。 ( 6)在窗体上添加 TPanel组件,命名为“ Panel3”。在该组件上添加 3个TBitBtn组件,分别命名为“ Save”、“ Cancel”、“ Quit”。 ( 7)添加 TStringGrid 组件到窗体上,命名为“ Reginfo”。设置该组件的Align属性为“ alBottom”; ColCount属性为“ 9”; RowCount属性为“ 2”; Ctrl3D属性为“ False”。 ( 8)在窗体上添加 TDataSource组件,命名为“ RegSource”;添加 TListBox 第 16 页 共 27 页 组件,命名为“ List”;添加 TComboBox组件,命名为“ Comstorage”;添加 TDBGrid组件,命名为“ Grid”。设置 Grid组件的 DataSource 属性为“ RegSource”。设计期物资入库窗体下图 8: 图 8 设计期物资入库管理模块 5.3.2 相关代码的分析 在窗体的 OnShow 事件处理过程中设置 TStringGrid组件相关属性,将仓库信息添加到 TComboBox 组件中。代码如下: procedure Tf_instore.FormShow(Sender: TObject); begin inherited; with Reginfo do begin /设置字段名称 Cellsbarcode,0:=条形码 ; Cellsstorename,0:= 物资名称 ; Cellsbasicunit,0:=基本单位 ; Cellsstockunit,0:= 采购单位 ; Cellsconvertions,0:= 换算关系 ; Cellsunitprice,0:= 单价 ; Cellsnum,0:=数量 ; Cellsmoney,0:= 金额 ; 第 17 页 共 27 页 Cellsstoragename,0:=仓库名称 ; end; with t_data.Query1 do /查询仓库名称 ,将其添加到组合框中 begin CLose; SQL.Clear; SQL.Add(select storagename from tb_storageinfo); Open; end; if t_data.Query1.RecordCount0 then begin while not t_data.Query1.Eof do begin Comstorage.Items.Add(Trim(t_data.Query1.FieldByName(storagename).AsString); t_data.Query1.Next; end; Comstorage.ItemIndex := 0; end; Cancel.Click; end; 在 TStringGrid 组件的 OnKeyPress事件处理过程中限制输入的内容。代码如下: procedure Tf_instore.ReginfoKeyPress(Sender: TObject; var Key: Char); begin inherited; if (col = unitprice)or(col = num)or(col = convertions) then begin if not (Key in 0.9,.,#8) then /只允许输入数字键和退格键 Key := #0 /输入空字符 end; 第 18 页 共 27 页 end; Keypress键盘事件 该 事件是当 用户按下 ASCII 字符的键盘 时发生的 。在该事件下的 Key 参数是一 个数字,代表字符的 ASCII 值 ,如 13( 回车 键)或 27( ESC 键)。 示例代码如下: IF Key=#13 then edit2.setfocus /回车后,焦点跳转到 edit2组件。 在 TStringGrid 组件的 OnSelectCell 事件处理过程中设置单元是否可编辑。 代码如下: procedure Tf_instore.ReginfoSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin inherited; row := ARow; col := ACol; /当物资名称为空时可以编辑条形码 ,当条形码为空时可以编辑物资名称 , /当条形码不为空时可以编辑单价、数量 if (col = barcode)and(Trim(Reginfo.Cellsstorename,row)=)or(col = storename)and(Trim(Reginfo.Cellsbarcode,row)=)or (col = unitprice)and(Trim(Reginfo.Cellsbarcode,row)or(col = num)and(Trim(Reginfo.Cellsbarcode,row)or (col = convertions)and(Trim(Reginfo.Cellsbarcode,row)then Reginfo.Options := Reginfo.Options + goEditing else Reginfo.Options := Reginfo.Options - goEditing; end; 在 TStringGrid 组件的 OnSetEditText 事件处理过程中,设置 TDBGrid 组件出现的位置。代码如下: procedure Tf_instore.ReginfoSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); var 第 19 页 共 27 页 CellRect: TRect; /记录单元格的区域 ,用于设置 begin inherited; if Reg = false then begin Grid.Visible := False; /使辅助录入表格不可用 if (Acol = storename) then /按仓库名称或简码进行匹配查询 begin With t_data.Query1 do begin CLose; SQL.Clear; SQL.Add(select * from tb_storeinfo where storename Like :Storename or nameshort like :nameshort); Parameters.ParamByName(storename).Value:= Trim(Reginfo.Cellsstorename,ARow)+% ; Parameters.ParamByName(nameshort).Value:= Trim(Reginfo.Cellsstorename,ARow)+% ; Open; end; if t_data.Query1.RecordCount0 then /根据用户的输入是否有匹配的数据 begin Regsource.DataSet := t_data.Query1; if not Grid.Visible then /计算表格应出现的位置 begin CellRect := Reginfo.CellRect(ACol,ARow); CellRect.Left := CellRect.Left+Reginfo.Left; CellRect.Right := CellRect.Right+ Reginfo.Left; CellRect.Top := Reginfo.Top+ CellRect.Top; Grid.Left := CellRect.Right+1; Grid.Top := CellRect.Top; Grid.Visible := True; end; 第 20 页 共 27 页 end else begin RegSource.DataSet := Nil; Grid.Visible := False; Application.MessageBox(该物资信息不存在 .,提示 ,64); reg := True; Reginfo.Cellsstorename,Row:=; Reginfo.Col := storename; end; end; end; 5.4 物资出库管理的设计与实现 物资出库管理模块主要功能是记录物资出库的相关信息。物资出库管理模块运行的结果如图 9所示 。 图 9 物资出库管理模块运行的结果 5.4.1 物资出库管理的设计 ( 1)选择“ File” /“ New” /“ Other”菜 单项,打开“ New Items”对话框,选择“ bpglxt”选项卡,点选“ f_frame”,以继承方式使用该窗体。单击【 OK】按钮添加一个新窗体,命名窗体为“ f_storeout”,设置 Caption属性为“物资出库管理”。 ( 2)在窗体上添加 TLabel组件,命名为“ Label1”。设置该组件的 Caption属性为“物资出库管理”。 第 21 页 共 27 页 ( 3)在窗体上添加 TPanel组件,命名为“ Panel2”。设置该组件的 Align属性为“ alBottom”; Caption属性为空。 ( 4)添加 4个 TLabel组件到组件 Panel2组件上,分别设置它们的 Caption属性为“领取人”、“库存员”、“操作员”、“时间”。添加 3个 TEdit组件到 Panel2组件上,分别命名为“ outperson”,“ storemanager”,“ Operator”。添加TDateTimePicker组件到 Panel2组件上,命名为“ Date”。 ( 6)在窗体上添加 TPanel组件,命名为“ Panel3”。在该组件上添加 3个TBitBtn 组件,分别命名为“ Save”、“ Cancel”、“ Quit”。添加 TLabel 组件到Panel3 组件上;添加 TEdit 组件到窗体上,命名为“ Memo”,主要组件属性设置如表 2所示。 表 2 主要组件对象的属性列表 对象名 对象类型 属性 值 Save TBitBtn Caption 保存 Cancel 取消 Quit 退出 ( 7)添加 TStringGrid 组件到窗体上,命名为“ Reginfo”。设置该组件的Align属性为“ alBottom”; ColCount属性为“ 4”; RowCount属性为“ 2”; Ctrl3D属性为“ False”。 ( 8) 在窗体上添加 TDataSource 组件,命名为“ RegSource”;添加 TListBox组件,命名为“ List”;添加 TComboBox组件,命名为“ Comstorage”;添加 TDBGrid组件,命名为“ Grid”。设置 Grid组件的 DataSource 属性为“ RegSource”。设计期物资出库窗体如图 10所示。 第 22 页 共 27 页 图 10 设计期物资出库管理模块 5.4.2 相关代码的分析 在窗体的 OnShow 事件处理过程中,设置 TStringGrid组件表格字段名称,向 TComboBox组件中添加仓库名称。代码如 下: procedure Tf_storeout.FormShow(Sender: TObject); begin /在窗体显示时 ,设置表格字段名称 ,向组合框中添加仓库名称 inherited; with Reginfo do begin Cellsbarcode,0:=条形码 ; Cellsstorename,0:= 物资名称 ; Cellsnum,0:=数量 ; Cellsstoragename,0:=仓库名称 ; end; with t_data.Query1 do begin CLose; SQL.Clear; SQL.Add(select storagename from tb_storageinfo); Open; end; if t_data.Query1.RecordCount0 then begin while not t_data.Query1.Eof do /利用循环的方式向组合框中添加仓库名称 begin Comstorage.Items.Add(Trim(t_data.Query1.FieldByName(storagename).AsString); t_data.Query1.Next; end; Comstorage.ItemIndex := 0; end; Cancel.Click;/调用取消按钮的单击事件进行初始化 end; 在 TStringGrid 组件的 OnKeyPress事件处理过程中限制输入的内容。代码如下: 第 23 页 共 27 页 procedure T

温馨提示

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

评论

0/150

提交评论