资源描述
摘要
本次设计研究的是日进五金库存管理系统。日进五金库存管理系统采用目前比较流行的Delphi与SQL Server组合开发完成。实现了货品出入库、盘点、调拨,以及查询相关信息等最基本的功能,帮助企业解决了账目混乱,库存不准,信息反馈不及时等问题。它界面美观,操作简便,SQL Server数据库又保证了它强大的数据传输和存储功能,在实用性和安全性上都得到保证。
本文介绍了库存管理系统的设计目的、开发过程和运行调试,对它的功能特点以及相关重要的技术难点也做了详细的介绍和分析。并对Delphi与SQL Server等技术做了简介,对当前国内比较普遍的几个库管系统做了简要比较。
关键词:库存管理系统,Delphi,SQL Server数据库
ABSTRACT
The graduation design research is RiJin hardware inventory management system. RiJin hardware inventory management system adopts currently popular Delphi and SQL Server combination development. The realization of the goods out and filled of storage, inventory, allocation, as well as Query-related information such of these most basic function, help enterprise settled accounts, confusion, inventory information feedback timely. It interface aesthetics, simple operation, and SQL Server database and ensure its powerful data transfer and storage in practical function, can not be underestimated.
Inventory management system are introduced in this paper the design purpose, development process and operation commissioning of its function, characteristics and the important technical difficulty also made a detailed introduction and analysis. And the Delphi and SQL Server technology, etc, by the way the current domestic several common warehouse system.
Keywords: Inventory Management System, Delphi, SQL Server Database.
目录
摘要 I
ABSTRACT II
第1章 引言 1
1.1 背景 1
1.2 设计的目的与意义 1
1.3 设计概述 2
第2章 开发环境介绍 3
2.1 Delphi 7 3
2.2 SQL Server 2000 3
2.3 ADO技术 4
第3章 数据库设计 6
3.1 需求分析 6
3.1.1 功能需求分析 6
3.1.2 数据表结构分析 6
3.2 概念结构设计 7
3.3 逻辑结构设计 8
第4章 系统设计 11
4.1 设计目标 11
4.2 编号设计 11
4.3 窗体设计 12
4.3.1 命名规则 12
4.3.2 窗体介绍 12
4.4 技术要求 13
4.4.1 Object Pascal 语言和SQL语言 13
4.4.2 VCL的使用 13
第5章 主要功能模块设计 15
5.1 系统框架 15
5.1.1 系统文件说明 15
5.1.2 库管系统功能图 15
5.1.3 库管系统架构图 16
5.2 主窗体设计 18
5.2.1 主窗体介绍 18
5.2.2 菜单栏的功能设计 19
5.3 用户登陆模块设计 20
5.4 用户管理模块设计 21
5.5 数据备份恢复模块 22
5.6 货品库存模块 24
5.7 货品入库模块 26
5.8 入库单查询模块 26
5.9 往来单位模块 27
第6章 系统调试与改进 29
6.1 调试环境 29
6.2 调试内容 29
6.2.1 登陆调试 29
6.2.2 Storagefrm调试 29
6.2.3 货品库存调试 30
6.2.4 综合调试 30
6.2 调试结果 30
6.3 系统改进 31
第7章 结束语 32
致谢 33
参考文献 34
附录 源代码 35
43
第1章 引言
1.1 背景
从20世纪50年代中期开始,计算机应用从科学研究部门扩展到企业管理及政府行政部门,人们对数据处理的要求也越来越高。1968年,世界上诞生了第一个商品化的信息管理系统IMS(Information Management System),从此,数据库技术得到了迅猛发展。在互联网日益被人们接受的今天,Internet又使数据库技术、知识、技能的重要性得到了充分的放大。现在数据库已经成为信息管理、办公自动化、计算机辅助设计等应用的主要软件工具之一,帮助人们处理各种各样的信息数据。没有数据库技术,人们在浩瀚的信息世界中将显得手足无措。
随着计算机技术与网络通信技术的发展,数据库技术已成为信息社会中对大量数据进行组织与管理的重要技术手段及软件技术,是网络信息化管理系统的基础。同时,市场经济的发展,企业管理的信息化,数据库技术被更多的大公司、小企业应用于平时的生产,销售,以及财务人事管理中。数据库技术的发展与应用侧面的反映出了社会、经济的发展情况。
我国中小企业有70%是零售业,企业经营涉及进、销、存多个环节,涉及商品种类繁多,业务量大,库存管理复杂,使用手工管理已无法胜任。如何采用先进的计算机系统管理进货、销售、库存等诸多环节也已成为趋势及必然。企业的库存管理向来是一个庞大的事务,管理的好坏直接影响到企业的经济效益[1]。
1.2 设计的目的与意义
本次设计的目的是开发一个小型的库存管理系统,用于管理企业的库存和进销等[2]。系统做到简单实用,对基本的入库、出库、挑拨、盘点清楚明了。一个好的库存管理软件,能够很好的对企业的经营进行管理,对企业的销售和存货能够很好的实时放映,对企业的利益能做到最大化,并且提高了工作的效率,降低了成本。
国内中小企业使用比较多的库存管理软件(或进销存软件),有以下几款:金蝶、速达、管家婆、当然它们已经不单单是做库存管理、进销存那么简单。它们的功能强大,人性化设计使它们备受青睐。这些管理系统涉及到了财务、人事、资源等方面,功能上也不单单是那些销售结算,报表,添加更多智能化的东西,如管理客户信息、日程任务管理、销售机会管理、项目管理、合同订单管理、产品管理、营销日报管理,并且帮助企业管理人员生成各种业务报表和通过互联网可以给客户群发短信、邮件等。这些销售分析,图表说明,智能提醒、消息的及时反馈等功能,不仅让企业解决了人才项目众多难以分配、信息滞后和错漏等问题,更使企业业务增长迅猛,效益大幅度提到。特别像金蝶,它的适用范围大,可以说国内大部分公司都可以用,而且它已经不单单是做产品和技术,更多的提供不同的解决方案和设备,它面向对象有大中小企业,政府和非盈利组织。它们的壮大和发展,都反映企业管理的重要性,尤其是库存管理。
综合国内几款有名的库存管理软件(或进销存软件)。我们可以很清楚的发现:随着经济的增长,计算机科技与网络的发展,企业的经营和管理也会步入自动化,智能化,信息化管理。只有这样,企业可以更好的生存,发展,壮大。
1.3 设计概述
本次毕业设计的作品是:日进库存管理系统[3-5]。主要的功能是实现货品的入库、出库、盘点、调拨,以及对这些操作的查询,在此之外又添加了用户管理、往来单位管理和货品库存管理,顺便加了几个常用的小工具,如笔记本、计算器。作品的适用对象是小型企业或者是经营部,能够满足其日常经营需要。在设计过程中放弃了很多功能,待以后有机会加以改进。
第2章 开发环境介绍
2.1 Delphi 7
Delphi 7是Borland公司在2002年8月推出的全新的可视化的集成开发环境(IDE),为我们提供了一种方便、快捷的Windows应用程序开发工具[6-8]。它使用了Microsoft Windows用户图形界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编译器、最为领先的数据库技术。
主要特点如下:
(1)直接编译生成可执行代码,编译速度快。
(2)支持将存取规则分别交给客户机或服务器处理的两种方案,而且允许开发人员建立一个简单的部件或部件集合,封装起所有的规则,并独立于服务器和客户机,所有的数据转移通过这些部件来完成。
(3)具有可重用性和可扩展性。
(4)具有强大的数据存取功能。
(5)拥有强大的网络开发能力,
(6)Delphi使用独特的VCL类库,使得编写出的程序显得条理清晰,VCL是现在最优秀的类库,它使得Delphi在软件开发行业处于一个绝对领先的地位。
(7)从Delphi8开始Delphi也支持.Net框架下程序开发。
目前最新版本是2009,但让人惋惜的是Delphi的最早开发公司Borland于2009年5月被英国软件商Micro Focus收购。当前Delphi产品已经由CodeGear公司继续发展。
2.2 SQL Server 2000
SQL Server 是一个关系数据库管理系统。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX 操作系统上的应用。Microsoft SQL Server以后简称为SQL Server或MS SQL Server。
SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统。该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用
SQL Server 2000有以下功能和特点:
l 真正的客户机/服务器体系结构。
l 图形化用户界面,使系统管理和数据库管理更加直观、简单。
l 丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
l 具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。
l 对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。
l SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。
l 支持XML(Extensive Markup Language,扩展标记语言)
l 强大的基于Web的分析
l 支持OLE DB和多种查询
l 支持分布式的分区视图
SQL Server的最新版为SQL Server 2008。它为业务关键型应用程序提供最高级别的安全性、可靠性和伸缩性。并且SQL Server 2008具有高效率和智能化性能。
2.3 ADO技术
ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据[9]。
对数据的访问已经成为现代软件开发中一个主要的任务。传统的主要的数据库访问技术—ODBC (Open Database Connect )技术只能访问关系型数据库,而且访问速度慢。为此,Microsoft提供了新的访问技术—OLE DB (应用在数据库上的对象连接与嵌入)和ADO (ActiveX Data Object) ,OLE DB和ADO都是基于COM接口的技术,使用这种技术可以直接对数据库的驱动程序进行访问,大大提高了访问速度。ADO 是一种高层的访问技术。用ADO访问数据源具有简单方便、访问速度快、占用内存少、可以访问不同数据源(包括Access、Oracle、SQL Server等)和可用于Microsoft ActiveX页等优点。因此,ADO技术一出现,便深受广大程序员喜爱,并迅速成为开发数据库的主流技术。
ADO主要包括Connection, Dataset和Command三个对象, 它们的主要功能如下:
Connection对象:负责打开或连接数据库文件;
Dataset对象:数据集,操作来自数据库的数据;
Command对象:对数据库下达行动查询指令,以及执行SQL Server的存储过程。
第3章 数据库设计
3.1 需求分析
本次毕业设计的需求分析是根据日进工量具总汇的要求来做的,主要是从他们日常经营的需要和遇到的着手。根据日进工量具总汇的需求和日常经营的反映情况,我对系统的功能模块和数据表的结构进行了系统的分析[10]。
3.1.1 功能需求分析
l 良好的人机界面,简单明了的操作
l 有较好的权限分配功能(暂定)
l 在入库、出库时存在一对多的关系,要求支持多行录入功能
l 方便用户查询,支持多条件查询(如编号,产地等)
l 流水号操作(如001),单据编号唯一,自动生成
l 支持库存盘点,有库存树形结构(按种类分)
l 有均价显示功能
l 能详细显示上次卖出货品的信息,如时间,价格
l 往来企业信息要有
l 支持数据库备份和恢复
3.1.2 数据表结构分析
对于库管系统功能的需求。我对数据表进行了分析,共建了22张表,有几张表在设计中并没用到,这些是以后增加功能所需的表。我将对其中重要的几张表给于数据结构和数据项的分析。具体如下:
用户管理表:流水号(唯一主键) 、姓名、密码、权限、数据备份、数据恢复……(后面的数据项省略,本次设计未用到)。
往来单位表:流水号、名称、联系人、电话、传真、Email、税号、帐号、收货单位、供货单位、备注。
货品目录表:流水号、编号、名称、规格、单位、类别、类别编号、入库价格、出库价格、均价、警戒上限、警戒下限、当前库存、仓库、供货单位、备注、总数量、总金额。
入库单表:流水号、单据编号、原始单据、经办人、日期、入库原因、供货单位、红冲。
入库明细表:流水号、单据编号、货品编号、名称、规格、单位、仓库、数量、单价、金额、备注、红冲。
其它表还有出库单、出库明细、盘点单、盘点明细、调拨单、调拨明细等。由于其数据结构跟入库单和入库明细差不多,所以不添了。表体后期是有改动的,根据我设计的程度改动了下。每个表中的流水号都是该表唯一的主键,我在其设计时设定为唯一标识。对SQL Server表进行操作时,流水号都是内部自动生成的,而且是真正的唯一。考虑到编号,名称等,都可能因出错产生重名,所以不加以设为主键。
3.2 概念结构设计
由以上的数据表结构分析可以得出。用户管理表的权限功能限制了用户操作的范围,决定了本次系统操作人的身份。货品目录既库存目录,它与出库、入库、调拨、盘点都有关系,而往来单位目录则跟出入库有着联系。具体看E-R图结构,如图3.1所示:
图3-1 数据库中主要E-R图
用户管理表:添加、保存、删除用户信息,并设定相关权限,是用户对库管系统操作的身份认证。
货品目录表:库管系统中最主要的一张的表,记录了正个库存商品的综合详细的信息,其他操作都对其进行改变。
入库单:保存入库信息,主要信息是入库单据编号,对应入库明细编号。
出库单:保存出库信息。
盘点单:保存盘点信息。
调拨单:保存调拨信息。
往来单位:保存跟出入库有关的单位的详细信息。
3.3 逻辑结构设计
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,实际上是数据在逻辑级上的视图。一个数据库只有一个模式。数据库模式以某一种数据模型为基础,统一综合考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。
从数据库管理系统角度看,数据库系统通常采用三级模式结构;这是数据库管理系统内部的系统结构。
从数据库最终用户角度看,数据库系统的结构分为集中式结构(又可有单用户结构,主从式结构),分布式结构,客户/服务器结构和并从结构。这是数据库系统外部的体系结构。
这里我将从系统管理方面给出几张重要数据表的数据设定。
表3-1 用户管理表
表3-2 往来单位表
表3-3 货品目录表
表3-4 入库单表
表3-5 入库明细表
第4章 系统设计
4.1 设计目标
l 支持多行输入,自动生成流水号和单据编号。
l 界面美观友好、信息查询灵活、方便、快捷、准确。
l 提高工作效率,降低成本。
l 往来单位详细浏览。
l 对用户输入的数据进行过滤,当输入有误时提示用户。
l 数据保密性强,用户对应不同的操作级别。
l 系统最大限度的实现了易安装性、易维护性和易操作性。
l 直接调用记事本、计算器和日期/时间。
l 系统运行稳定、安全可靠。
l 状态显示,有操作状况和日期/时间等。
4.2 编号设计
编号是一种商品或单据的唯一标识,编号设计的目的是为了便于数据的存储和检索,提高处理的效率和精度。这里加如流水号,跟编号的性质差不多,它代替以上编号作为数据表的唯一标识和主键,这样能防止出错,更方便检索,流水号数据表自动生成。具体编号设计如下:
l 单据编号
1. 入库单据编号为“入库”拼音简码、系统日期和3位数字编号的组合。例如RK20090324001。
2. 出库单据编号为“出库”拼音简码、系统日期和3位数字编号的组合。例如CK20090324001。
3. 盘点单据编号为“盘点”拼音简码、系统日期和3位数字编号的组合。例如PD20090324001。
4. 调拨单据编号为“调拨”拼音简码、系统日期和3位数字编号的组合。例如TB20090324001。
l 流水号
SQL Server自动生成,从1开始,数字有不可替代性,即表的一条数据删除,该条数据流水号将不在出现。流水号记录了对数据表的操作次数。
l 商品编号
商品编号自定,一般可以使用货品名称的拼音简码和数据组合。
4.3 窗体设计
4.3.1 命名规则
所有窗体以“frm”结尾,单元为“Form”结尾,首字母大写,英文或者中文缩写格式。如:主界面窗体命名为“Mainfrm”,对应的单元命名“MainForm”。
窗体中代码函数命名以其功能名称简写命名,变量命名类似。代码中如果为包含关系缩进两个字符。Begin和end单独占一行。
数据库窗体命名为“DMfrm”,其中的数据控件命名规则以各表代表功能或内容命名。如货品目录的查询控件命名为“HP_ML”,其他类同。
4.3.2 窗体介绍
系统中共有19个窗体,重要的几个为:Usersfrm,Mainfrm,Loginfrm,Storagefrm,HPlistfrm,WLfirmsfrm,DJlistfrm,DMfrm。其中Mainfrm为程序主窗体,因为其功能都在它上面打开实现,所以它调用了以上所有窗体。各窗体功能介绍如下:
Usersfrm:即用户管理界面,可以添加,删除,修改用户信息,主要是对权限的修改,现版本未添加权限实质功能。
Mainfrm:程序主界面,系统的功能项都在上面,它是整个系统的框架。
Loginfrm:登陆界面,决定用户能否登陆系统进行操作,本版本未设计输入次数限制。默认无用户情况可登陆,为方便操作添加了admin用户。
Storagefrm:顾名思义,跟库存有关的窗体。它的功能最大,集合了出入库,调拨,盘点四大功能为一体的窗体。
HPlistfrm:货品目录,既库存。保存着库存货品的详细信息,支持树形查询。目前版本树形功能不是很完善。
WLfirmsfrm:往来单位界面。可以添加、修改、删除往来单位信息。
DJlistfrm:单据查询窗体。跟Storagefrm一样,四和一功能,能够查询出入库,盘点,调拨的单据情况。
DMfrm:数据库窗体,所有跟数据库有关的控件都放在上面,该窗体默认为隐形窗体,不显示。
这些主要的窗体组成了这个程序最主要的几项功能,其他的一些窗体如系统设置,数据库配置和关于窗体等,都不做介绍。
4.4 技术要求
4.4.1 Object Pascal 语言和SQL语言
Delphi使用的是Object Pascal 语言。Object Pascal 是一种高级编译语言,具有强类型(对数据类型的检查非常严格)特性,支持结构化和面向对象编程。它的优点包括代码的易读性、快速编译,以及支持多个单元文件从而实现模块化编程。虽然在Delphi提供了很多VCL控件,但对代码的编写量并没有减少。系统中每个功能的实现都需要大量的代码编写,这就需要对Pascal的充分掌握,能够熟悉它的各类语法结构和命名定义规则,对其各类控件事件中变量要知道,并懂的实用。这些要经过大量的代码的阅读和长时间的实战练习才能做到的。
这次设计中使用SQL语言为Transact-SQL。Transact-SQL语言是基于商业应用的结构化查询语言,是标准SQL语言的增强版本。在这次设计中,Transact-SQL使用并没有遇到什么大的难题,因为之前的数据库原理课程中学过。它用的最多的语句就是“select xxx from 数据表 where 表项 ……”。唯一不习惯的是,当语言中有控件变量时,我都会在语法上出点小差错。
4.4.2 VCL的使用
VCL是Visual Component Library(可视组件库)的缩写,即可视组件库,它是Delphi,C++ Builder等编程语言的基本类库。它拥有封装纯粹,可扩展性强,操作方便等特点。如果是一个非常繁杂的Win32API,在经过VCL封装后,使用也是非常简便的。下面介绍几个使用最多,也是最重要,最难的控件。
4.4.2.1 TADOQuery
TADOQuery是Delphi的ADO中的一个控件,它继承了TCustomADODataSet类,它的功能是对数据库进行底层的SQL语言操作[9-12]。它虽然没有TADODataSet功能强大,但它的实用性很适合初学者,而且在比TADOTable略胜一筹。我在本次设计中,使用的就是TADOQuery。
4.4.2.2 TDBGrid
TDBGrid是Data Controls中的一个控件,它是以表格形式显示和处理数据集中的记录[13]。TDBGrid组件在表格中显示数据集中的记录,用户也可以修改表格中的数据。但TDBGrid是个感性组件,它无法自定其行数。即使它很方便的对数据进行操作,但在布局和数据分配上却不能做到让称心如意。我在里面显示数据的部分用的是TDBGrid,其他地方则放弃了。
4.4.2.3 TStringGrid
TStringGrid是Additional中的组件。它是一个字符串表格组件,用于简化处理字符串与关联对象间的操作。它跟TDBGrid不通的是它完全的自定义,用户根据自己需要改变表格的外观,数据的处理也比TDBGrid来的方便简单。它是自由的,而TDBGrid是被数据集捆绑了的。TStringGrid感觉实用、舒服,在出入库和调拨、盘点中用的就是TStringGrid,稍微修改几句代码就可以改变其外观。
4.4.2.4 TStatusBar
TStatusBar是Win32中的一个组件。这个组件最常见,在文件系统中被我们称作是状态栏。主要是用来显示不同的信息,可以分成几个不同的部分。他的使用很简单,基本上写的代码也不错,唯一碰到的问题就是时间的动态显示,这里用到了另外一个组件TTimer,跟它搭配才可以实现时间的更新。
第5章 主要功能模块设计
5.1 系统框架
5.1.1 系统文件说明
库管系统总共有BakFile,Data,Image这3个文件夹,系统要是完善的话,可能要添加2-3文件夹。BakFile的作用是存放数据库备份文件,Data则是存放着库管系统的数据库,Image里面的图片都是更系统有关的图片的。本来想添加DataImage文件夹,但功能未作出,则没添加。
库管系统设计时的功能名为RJKG.dpr,可执行程序为RJKG.exe。RJKG.exe为工程运行后自动生成。
5.1.2 库管系统功能图
日进库存管理系统的功能图如图5.1所示(灰色字体功能未完善,系统中也无实现该功能):
日进库存管理系统
日期时间
记事本
计算器
报表设计
工具
库存
目录
货品库存
货品入库
货品出库
货品调拨
货品盘点
货品预订
货品目录
往来单位
费用类型
统计
入库产品明细
出库产品明细
结算
货品入库分析
货品出库分析
系统
系统设置
数据库配置
用户管理
数据备份
数据恢复
离开锁定
注销登陆
系统退出
查询
入库单
出库单
盘点单
调拨单
预订单
费用支出
应收应付
帮助
关于
图5-1 日进库存管理系统功能图
5.1.3 库管系统架构图
l 主文件架构图:
主文件架构图描述了库管系统从登陆到主界面的过程,如图5.2所示:
图5-2 主文件架构图
l 系统菜单框架图:
系统架构图描述了跟系统有关的一些功能。如图5.3所示:
图5-3 系统架构图
l 库存菜单框架图:
库存架构图中的窗体都是跟库存操作有关的,包括库存目录,出入库,盘点,调拨等操作。如图5.4所示:
图5-4 系统架构图
l 查询菜单框架图:
查询框架图中有出入库,盘点,调拨单的查询。如图5.5所示:
图5-5 查询架构图
5.2 主窗体设计
5.2.1 主窗体介绍
主窗体是库管系统中最重要的窗体,所有的功能都在窗体上展开实现,它是所有功能的集合点,它的关闭系统也随之关闭。主窗体的FormStyle设置为fsMDIForm,用作其他功能窗体的母窗体。背景设为白色,为了方便导航界面的显示,主窗体上未使用TPanel控件。主窗体界面如图5.6所示:
图5-6 主窗体界面图
主窗体的最上方有有菜单栏,使用的是TMainMenu控件,双击该控件,可以对菜单项进行添加。菜单栏如图5.7所示:
图5-7 主窗体菜单栏图
中间是主窗体的主要功能导航图,它上面的按钮是用TLabel控件制作的。对它的Cursor属性改为crHandPoint,可以让鼠标移动到按钮上时变成手型图样。功能导航如图5.8所示:
图5-8 主窗体导航图
最下方,则是状态栏,控件为TStatusBar。状态栏如图5.9所示:
图5-9 主窗体状态栏图
5.2.2 菜单栏的功能设计
菜单栏上集合了库管系统的所有功能,它跟我们平时所用的菜单栏一样,因为它是Windows API封装的。菜单栏的所有功能分布如图5.10所示:
图5-10 菜单栏功能分布图
系统设置:主要是管理日进库管系统使用者公司的信息。其他也有一些数据和记账设置,但未添加。
数据库配置:连接后台数据库的设置界面。因为数据库在毕业设计电脑上已经配置好了,所以该功能现未开发,但界面已做出。
用户管理:对库管系统的用户信息进行管理。
数据备份:数据库备份。
数据恢复:数据库恢复。
离开锁定:暂无。
注销登陆:用户重登陆。
系统退出:退出。
货品库存:库管系统中的库存货品查看管理。
货品入库:货品入库操作。
货品出库:货品出库操作。
货品盘点:货品盘点操作。
货品调拨:货品调拨操作。
货品目录:暂界面和功能与货品库存一样。
往来单位:管理跟企业贸易来往的单位信息。
入库单:入库货品的单据和详细信息。
出库单:出库货品的单据和详细信息。
盘点单:盘点货品的单据和详细信息。
调拨单:调拨货品的单据和详细信息。
记事本:调用记事本工具。
计算器:调用计算器工具。
日期/时间:调用日期时间。
5.3 用户登陆模块设计
用户登陆模块用来判别用户信息,确定该用户能否操作系统。面板上的控件也不多,有TImage,TComboBox和按钮等控件。TComboBox控件为界面的核心控件,它上面集合了输入和选择用户功能,并且直接从数据库中用户表读取用户列表。登陆界面如图5.11所示:
图5-11 登陆界面图
5.4 用户管理模块设计
用户管理模块的主要功能就是添加、删除、修改用户信息,并对设定权限(暂无)。界面左边使用的是TDBGrid控件,直接连接数据库显示用户信息,这里隐藏了默认管理员admin。右边是对用户信息的操作,使用的是简单的TEdit作为输入。面板上也有使用到TPageControl和TBevel,用于权限设定和相关说明,但为完善。用户管理界面如图5.12所示:
图5-12 用户管理图
用户管理界面在刚打开时,用户信息相关的输入控件为不可用。对其Enabled属性设为False。当点击新建按钮时,属性才变为True,其实控件为可输入状态,按钮新建的变为保存,这个时候可以新建用户,修改和删除按钮的功能效果跟新建相似。添加,修改情况下用户管理界面如图5.13所示:
图5-13 用户管理(新建状态)图
5.5 数据备份恢复模块
数据备份恢复模块并没有建立窗体,而是直接使用了TOpenDialog,TSaveDialog这2个控件。点击数据备份,就会调用TOpenDialog,打开Windows系统常见的文件打开选择界面。备份的文件名自动生成,格式为日期加“_data”后缀名为自定的.bak。默认目录为系统当前目录下的BckFile。备份界面如图5.14所示:
图5-14 数据备份图
数据恢复是把备份的数据还原到数据库,原先的数据将被覆盖。所要恢复的数据库来源于备份的数据库文件。这个操作直接影响数据库文件,谨慎操作。当点击数据恢复时,会调用TSaveDialog控件,打开常见的文件保存界面。为了增加数据库安全性,防止过失操作,在恢复前添加了提示信息,根据用户的选择来判断是否进行数据恢复。恢复完毕后,系统会关闭并重启。恢复界面如图5.15所示:
图5-15 数据备份图
5.6 货品库存模块
货品库存模块跟货品目录模块同属一个模块。都是管理货品的库存。界面使用了多个TPanel面板,这样的好处可以更好的规划布局,及时最大化也不会出现不美观的情况。模块中加入了TTreeView控件,在设置上读取了数据库中的货品分类表,我在这里添加了三个数据项,分别为:工具、量具和其它。这样,通过对树形结构点击,可以很直观的在右侧的表格显示相关的货品。设计中虽然用到了TDBImage控件,但图片添加功能暂时无法实现。货品库存界面如图5.16所示:
图5-16 货品库存图
通过上图可以看到,右侧显示库存货品,蓝色部分为当前选中的货品,这样可以清楚的看到货品近期的一些出入库情况。当双击右侧库存表中货品时,可以查看货品更详细的信息,点击修改按钮时进入修改状态。货品详细信息界面如图5.17所示:
图5-17 货品详细信息图
5.7 货品入库模块
货品入库模块是货品入库操作的模块,它一般是企业货品的购入。这里有用到表格是StringGrid。原先采用的DBGrid,但在考虑到界面修改的限制问题,所以放弃。使用StringGrid最大好处是可以根据设计者的要求来改变界面,而且它支持信息的多条输入,在入库时就避免了因货品种类繁多而频繁打开入库界面的问题。入库界面代码中加入了编号自动生成模块,这样在界面打开时单号就可以看到,同时价格统计模块的设计让货品添加时,总金额会实时更新显示在界面的左下方。每次入库成功后,界面会清空,单号会自动递增。货品入库界面如图5.18所示:
图5-18 货品入库图
5.8 入库单查询模块
入库单查询模块是用来查询入库信息的。可以通过它来观察最近的入库情况。窗体上布置了2个DBGrid,上方的显示入库单的简要信息,下面的显示入库的详细内容。2者根据入库单据连接在一起,实现动态更新显示。用户只要在上面的中点击入库单,下面的DBGrid就会显示该单的货品入库详情。界面上端添加了查询功能,提供多种查询方式。最下方的状态栏实时反映操作情况。入库单界面如图5.19所示:
图5-19 入库单查询模块图
5.9 往来单位模块
往来单位模块记录了与企业贸易来往的单位信息,可以对其进行添加,修改,删除。货品入库时中供货单位可以随着入库货品的成功保存到往来单位模块中,但只有名称,用户如需要对其信息进行详细添加,则要在往来单位模块中实现。它的控件使用跟用户管理模块差不多,但功能显示上又与货品目录相似,可以说是2者结合体。往来单位中的产品图片功能暂时无,所以无法添加修改。往来单位界面如图5.20所示:
图5-20 往来单位图
在界面上可以通过点击新建,修改按钮来打开往来单位信息窗体,也可以直接双击所要查看的单位来打开窗体,只有在该窗体上才可以对单位信息进行改动。往来单位信息界面如图5.21所示:
图5-21 往来单位信息图
第6章 系统调试与改进
6.1 调试环境
操作系统:Windows XP Professional SP3
数据库:SQL Server 2000
调试工具:Delphi 7
数据库名:日进五金库存
服务器名:RIJIN
6.2 调试内容
6.2.1 登陆调试
登陆调试主要是解决用户登入问题。在用户选择上采用ComboBox,它的好处就在于即可以输入,也可以通过下拉列表查看和选择用户。调试中存在的问题是ComboBox能否下拉显示用户列表,选择或者输入后按回车,焦点能否自动跳到密码输入行。在密码栏的调试主要是对密码是否为空,是否正确和保密性上的调试。如密码为空或者错误,则提示输入信息有误!
库管系统主窗体不是登陆窗体,这样在点击登陆窗体的退出时,就会出现一次错误提示,是内存读址的错误。系统只有在主窗体关闭时才会关闭系统,因此登入窗体的关闭不会造成系统结束,因此代码语句Application.Terminate写哪里很关键。要是写在工程文件中,则有错误。因
展开阅读全文