1、1摘 要随着当今世界计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业进销存管理势在必行。本系统结合公司实际的进销存制度,通过对本公司的供应商、顾客、商品、进货、销售、代销等信息的管理,从而达到进货、销售和库存的全面信息管理。经过实际的需求分析,采用了 Microsoft 的 Visual FoxPro6.0 作为开发工具而开发出来的企业进销存管理系统。整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成进货、销售、库存管理的全过程,包括操作员的增添与修改,进货、销售商品的录入、统计与查询,以及库存的统计等。经过实际使用证明,本文所设计的企业进销存管理系统可以
2、满足企业进货、销售管理方面的需要。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案【关键字】进货管理, 销售管理, 库存管理, delphi, sql server 2000 数据库2目 录第一章 数据库基础31.1 数据库基础知识31.2 数据库开发的基本步骤6第二章 访问 visual basic 数据库82.1 ADO 的对象模型82.1 基本数据库管理9第三章 数据库开发163.1 数据库的设计163.2 系统功能设计203.3 创建库存盘点窗口233.4 创建产品管理窗口243.5 创建库存查询窗口273.6 实现退
3、出功能29第四章 系统的改进与扩展29参考文献293第一章 数据库基础1.1 数据库基础知识进行 VISUAL BASIC 数据库开发,首先要了解与之相关的数据库基本知识,这样进行项目开发就有了切入点。1.1.1 数据库的基本概念数据库技术的内涵,包括 4 个紧密相关的概念:数据、数据库、数据库系统和数据库管理系统。这里指的数据并不是日常讲到的狭义的数字。我们定义的数据是描述事物的符号记录。它既包括平时所讲的数字,还包括文字、影音、图形等形式。我们所说的数据库是指长期存储在计算机内、有组织的、可共享的数据的集合。数据库中的数据按一定的时间模型组织、描述和存储,具有较小的冗余度,较高的数据独立性
4、和易扩展性,并可为各种用户所共享。数据管理系统(DBMS)是一个软件系统。它负责将收集并抽取的大量的数据进行科学的组织,并将其存储在数据库中,高效地进行处理。它是数据库管理系统的核心,是为数据库的建立、使用和维护而配置的软件。它建立在操作系统的基础上,是位于操作系统和用户之间的一层数据管理软件,负责对数据库进行统一的管理和控制。用户发出的或应用程序中的各种操作数据库的数据命令,都要通过数据库管理系统来执行。数据库管理系统还承担着数据库的维护工作,能够按照数据库管理员规定的要求,保证数据库的安全性和完整性。其在计算机系统中的地位如图 1-1 所示。数据库系统是将计算机引入数据库系统而构成的。一般
5、由数据库、数据库管理系统、应用系统、数据库管理员和用户构成。我们所要讲的数据库就是数据库系统的简称,这也在一方面证明了计算机在数据库技术中举足轻重的作用。数据库管理应用系统层应用开发工具软件层翻译系统层硬件层图 1-1 数据库管理系统41.1.2 关系数据库计算机不可能直接处理现实中的具体事物,所以必须通过人将现实中的具体事物转换成计算机可以处理的事件信息,这就用到了数据模型。数据模型主要包括 3 种常用的模型,即网络模型、层次模型和关系模型。网络模型和层次模型又称为非关系模型。虽然非关系模型在现在还有一定的应用,但关系模型数据库应用越来越广泛。现在几乎所有的数据库管理系统都支持关系模型,非关
6、系系统的产品也大都加上了关系接口。1、关系模型的数据结构关系模型的数据结构表如表 1-1 所示。一个关系数据模型的逻辑结构就是一张二维表,由若干行和列组成。根据上面的表格来分析一下它的主要组成。元组(记录):表中的一行就是一个元组,即一个记录。属性:表中的一列就是一个属性。像在表 1-1 中,就有学号、姓名、所在班级、籍贯和年龄 5 个属性。表 1-1 关系数据库学号 姓名 所在班级 籍贯 年龄1001 李列 01 山西 221002 张三 02 河北 23 1030 王星 05 上海 21 主码(关键字):表中的一个属性可以确定惟一的一个元组。即通过这个属性可以找到惟一的元组。如表 1-1
7、中,姓名、籍贯、年龄均可以相同,但学号惟一,学号就是主码。 域:属性的取值范围。如所在学院的域就是学校有的院系,籍贯的域是中国的省市。 分量:元组中一个属性值。如重庆即是主码为 12004 元组中的一个分量。 关系模式:对关系的描述。表示为关系名(属性 1,属性 2,属性 3,属性 N)表 1-1 的关系就可以描述如下:学生(学号,姓名,班级,籍贯,年龄)要注意的是,关系模型要求关系必须是规范化的,即要求关系模式必须满足一定的规范条件,这些规范条件中最为基本的一条就是关系的每一个分量必须是一个不可分割的数据项,也就是说表中不可以再有表。2、关系数据模型的操作与完整约束关系的完整性约束条件包括
8、3 大类,即实体完整性、参照完整性和用户定义的完整性。5在满足关系的完整性约束的前提下,可以对关系数据模型进行操作。操作包括查询、插入、修改、更新等。关系数据模型作为当前的一种主流的数据模型,其优点主要有: 与非关系模型不同,它是建立在严格的数学概念的基础之上的。 关系模型的概念单一。无论实体不是实体之间的联系都用关系来表示。对数据的检索结果也是关系(即表) 。所以,数据结构简单、清晰,用户易掌握。 关系模型的存取路径对用户透明。当然,关系数据模型也不可避免地有缺点存在,如在开发数据库管理系统时必须对用户的查询进行优化等。1.1.3 ER 图建模最常用的方法就是“实体联系”实体(entity-
9、relationship approach) ,两个实体型之间的联系可分为 3 类: 一对一联系 一对多联系 多对多联系可以用图形来表示实体型之间的联系,如图 1-2 所示。1 1 m1 n n图 1-2 两个实体之间的联系1、ER 图概念实体联系模型简称 ER 图。它是描述概念世界,建立概念模型的实用工具。ER 图包括以下 3 个要素: 实体型用矩形框表示,框内标注实体名称。 属性用椭圆形表示,并用连线与实体连接起来。 联系用菱形表示,框内标注联系名称,并用连线将菱形框分别与有关实体相连,并在边线上注明联系类型。如果联系具有属性,则这些属性也要用无向边与该项连接起来。ER 图设计过程实际是对
10、数据进行归纳、分析,把企业的全部用户按他们对数据和功能需求进行分组。然后从局部入手,对每一类用户,建立局部 ER 模型,再综合成实体模型 A实体模型 B实体模型 A联系实体模型 B实体模型 A实体模型 B联系 联系6总体 ER 模型。2、设计局部 ER 图(1) 确定实体和属性。(2) 确定联系类型。依据需求分析结果,考查任意两个实体类型之间是否存在联系,若有联系,要进一步确定联系的类型(1:1,1:M,N:M) 。在确定联系时应特别注意两点:一是不要丢掉联系的属性;二是尽量取消冗余的联系,即取消可以从其他联系导出的联系。(3) 画出局部 ER 图。3、综合成 ER 图(1)局部 ER 图的合
11、并。为了减小合并工作的复杂性,先两两合并。合并从公共实体类型开始,最后再加入独立的局部结构。(2)消除冲突。一般有 3 种类型的冲突,即属性冲突、命名冲突、结构冲突。具体调整手段可以考虑以下几种: 对同一个实体的属性取各个分 ER 图相同实体属性的并集; 根据综合应用的需要,把属性转变为实体,或者把实体变为属性; 实体联系要根据应用语义进行综合调整。4、用 ER 图来设计学生选课概念模型实例学生有学号、姓名、性别、年龄、系别属性;课程有课程号、课程名称、学分属性。学生和课程之间有选择课关系,该关系是一个多对多的关系。学生关系 ER 图如图 1-3 所示。学 生学 号性 别姓 名班 级年 龄图
12、1-3 学生关系 E-R 图1.2 数据库开发的基本步骤数据库技术作为当前一项衡量国家信息化程度的标准被大力推行,尤其在我国信息化刚刚赴的阶段,数据库更是被大力发展。目前在我国从事信息事业的人员中有 70%的人员从事着与数据库相关的工作。由此可见数据库在我国的发展前景。数据库是集数据库基本知识和数据库设计技术、计算机基础知识和程度设计方法、软7件工程的原理和方法及应用领域的知识为一身的一项综合的学科,涉及了多学科、多领域。计算机在其中只是作为工具出现的,这在一定程度上使得科学地设计数据库与实现数据库及其应用成为了日益引人注目的课题。从全局出发,数据库的开发过程分为以下 6 个阶段:(1) 需求
13、分析;(2) 概念结构设计;(3) 逻辑结构设计;(4) 物理结构设计;(5) 数据库实施;(6) 数据库运行和维护。下面就分别简要介绍各个部分的基本工作和其作用,使读者对数据库的开发有一个整体的把握。1. 需要分析阶段进行数据库设计首先必须准确了解与分析用户的需求(包括数据与处理) 。对于初学者来讲,可能认为数据库就是用语言来编程,在计算机上编程是数据库设计的关键。其实不然,需求分析才是整个设计过程的基础,是最困难、最耗费时间的一步。它是数据库开发的基础,这方面工作的充分与否决定了在构造上的构造速度与质量。需求分析做得不好,甚至会导致后续工作无法进行而使整个数据库设计失败。2. 概念结构设计
14、阶段概念结构设计是整个数据库设计的又一个关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体 DBMS 的概念模型。3. 逻辑结构设计阶段逻辑结构设计是将概念结构转换为 DBMS 所支持的数据模型,并对其进行优化。4. 数据库物理结构设计阶段数据库物理结构设计是为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存储方法) 。5. 数据库实施阶段在数据库实施阶段,设计人员运用 DBMS 提供的数据语言及其宿主语言,依据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据库,并进行试运行。6. 数据库运行的维护阶段数据库应用系统经过试运行后即可投入正式运行。在数据
15、库系统运行过程中必须不断地对其进行评价、修改和调整。8第二章 访问 visual basic 数据库常见的访问数据库的方法有使用 ADO、DAO、RDO 控件等。目前,由于 ADO 具有灵活而又有效的访问数据库的方式,故成为比较常用的访问数据库的方法和手段。在 visual basic 与数据库连接后,就可以使用数据库查询语言 SQL 对数据库进行增加、删除、查询等操作了。2.1 ADO 的对象模型ACTIVE DATA OBJECTS,简称 ADO,是微软软件体系中处理关系数据库和非关系数据库的常用技术,ADO 技术方式是 DAO 和 RDO 方式的继承者。 ADO 的对象模型如图2-1 所
16、示,它可以轻松地实现本地和远程数据库的访问过程,并且可以把数据对象绑定到指定的内置控件和 ACTIVEX 控件上,创建 DHTML 应用程序等。error parameters fieldsparameter field图 2-1 ADO 的对象模型从图 2-1 中可以看出,ADO 中对象的组成一共有 3 个,它们是 ADO 顶层的对象,具体的功能如表 2-1 所示。表 2-1 ADO 顶层对象功能对象名称 功能Connection 连接数据库的对象,指定对象的数据源,建立数据库的连接Command 操作数据库的指令,可以接收 SQL 指令、表的操作指令和存储过程的指令,一般用来执行 SQL
17、查询,增加、删除和在线更新数据recordset 得到表中的结果或者 COMMAND 操作后的结果,通常是一个表或者是几个记录的集合总而言之,ADO 技术在实际的应用中有如下的很多优点:(1) 毫不费力地定位记录,并使用过滤器和书签;connectioncommand recordseterrors9(2) 提供排序、自动分页和持久性等功能,并能在与数据源断开时工作;(3) 可在多层之间相当高效地汇集记录集,不过只有 COM 对象才能使用 ADO 记录集。2.2 基本数据库管理SQL 的英文全称是 STRUCTURE QUERY LANGUAGE,即结构化查询语言。作为一种数据库的查询和编程语
18、言,它可以对数据库中的数据进行组织、管理和检索。它集数据查询(DATA QUERY) 、数据操纵(DATA MANIPULATION) 、数据定义(DATA DEFINIITION)和数据控制(DATA CONTROL )等功能于一言已经为广大的用户所接受,成为一种通用的数据库语言。针对数据库的基本管理进行分析,基本数据库管理包括表管理、记录管理、索引管理和视图管理。下面分别介绍与 SQL 语言有关的技术,并用 VISUAL BASIC.NET 实现这些技术。2.2.1 自制的实现工具对于数据库的实现,VISUAL BASIC.NET 可以有多种方法。比如用 VISUAL BASIC.NET
19、中自带的查询工具。这里用到的是我们自己制作的一个小程序,程序虽小,但是功能还是比较全的。它可以实现基本数据库管理的诸多操作,也可以丰富大家的编程经验。下面介绍它的制作方法。1. 界面设计首先向窗体中添加以下控件:BUTTON 控件COMBOBOX 控件TEXTBOX 控件LABEL 控件向 COMBOBOX 控件中添加项目,单击属性对话框的 ITEMS 属性后面的 ,显示添加对话框,并添加几个 ITEM。这里所添加的项目都是后面要讲到的。修改其他控件的属性,如表 2-2 所示。表 2-2 控件属性控件名称 属性 属性值text “SQL 语言的基本操作 ”FormAcceptbutton Cn
20、dgoText (空)TextboxName TxtsqlcomLabel Text “现已成功地连接到数据库,您可以使用 SQL 语句了”10Combobox Name CmbtypeName CmdgobuttonText “执行”技巧:每个窗体都有一个 ACCEPTBUTTON 和一个 CANCELBUTTON。执行时,按 ENTER键可以自动触发 ACCEPTBUTTON,按 ESC 键可以自动触发 CANCELBUTTON。2. 代码实现下面添加代码。(1)引入名称空间。Imports system.data.oledb(2)在类中定义与数据库的连接。Private conn as
21、new oledbconnection()(3)建立数据库连接。将 LABEL 控件的 TEXT 属性设置为 “现已成功地连接到数据库,您可以使用 SQL 语句了” 。之所以这样设置,是因为打算在窗体一经显示就已经连接到了数据库上。出于这个目的,将连接数据库的任务交给了 form_load 事件。在事件中添加代码:Private sub form1_load(by val sender as system.object, by val e as system.eventargs)Handles_my base.load连接到数据库Conn.connectionstring=_“provider
22、=Microsoft.jet.oledb.4.0;daga source=sql test.mdb”为 combobox 设定初始状态Cmb type.selectedindex=0为文本框设定初始状态Txtsqlcom.text=”create table(约束条件, )”End sub说明:运行这个程序要求先在同级目录下建立一个数据库,名字为 SQLTEST.MDB。(4)实现 TEXTBOX 中的内容与 COMBOBOX 中的内容的随机变化。这个功能是在事件 cmbtype_selectedindexchanged 中实现的。实现的代码如下:Private sub cmbtype_sel
23、ectedindexchanged(by val sender as system.object,11By val e as_system.eventargs)handles cmbtype.selectedindexchangedWith txtsqlcomSelect case cmbtype.selectedindexCase 0建立新的表.text=”create table(约束条件)”Case 1对表进行修改.text=”alter tableadd完整性约束dropmodify;”Case 2删除基本表.text=”drop table”Case 3添加新的记录.text=”in
24、sert into(属性列,)values(常量,)”Case 4更新数据.text=”updateset=,where 条件”Case 5删除记录.text=”delete fromwhere 条件”Case 6新建索引.text=”create uniquecluster indexon(,)”Case 7删除索引.text=”drop indexon”注意:在 SQL 的标准语法中,删除索引为 DROP INDEX但在 ODBC 中,语法如上Case 8新建一个视图.text=”create view(, )aswith check ooption”Case 912删除视图.text=”
25、drop view”End selectEnd withEnd sub注意:在文本框中所加的文本都是在后面要讲到的基本数据库管理的命令格式。为了方便用户,我们将操作的格式与 COMBOBOX 中的功能匹配地显示到文本框中。(5)数据库的基本管理是通过单击“执行”按钮来控制的。 “执行”按钮的主要功能是启动操作。下面添加“执行”按钮代码:Dim com as new oledbcommand()Com.connection=connCmandtext=txtsqlcom.textConn.open()打开连接Com.executenonquery()执行 SQL 语句的操作Conn.close(
26、)关闭连接对于用户的操作,不可能所有命令的格式和内容都正确或被系统接受,还有可能会出现各种各样的错误。出于纠错的考虑,我们加入了异常处理。也就是说,运行可执行的命令,将返回成功信息;执行不可执行的命令,则返回错误信息。修改上面的代码:Private sub cmdgo_click(by val sender as system.object,by val e as system.eventargs)_handles cmdgo.clickTry如果发生异常则弹出对话框显示Dim com as new oledbcommand()Com.connection=connCmandtext=txtS
27、QLcom.textConn.open()打开连接Com.executenonquery()执行语句的操作13Conn.close()关闭连接Messagebox.show(_“您的操作已经成功地执行!” , “恭喜!”,_Messageboxbuttons.ok,messageboxicon.information_)CatchConn.close()此时连接一定要关闭Messagebox.show(_Err.description,”警告”,_Messageboxbuttons.ok,messageboxicon.warning)Exit subEnd tryEnd sub技巧:ERR 对
28、象有一个属性 DESCRIPTION,它可以描述错误发生的类型,这在程序中可以很大地方使用户,也减少了编程者大量的工作。为了检验异常处理代码的效果,我们运行程序,直接“执行”按钮,就会看到错误信息显示。3. 源代码下面是自制小软件完整的源代码,供大家参考。Imports system.data.oledb引入对数据库进行操纵的名字空间Public class form1Inherits system.windows.forms.form以下省略 windows form designer 产生的代码Windows form designer generated codePrivate conn
29、 as new oledbconnection()定义与数据库的连接Private sub form 1_load(by val sender as system.object,by val e as system.eventargs)Handles mybase.load连接到数据库14Conn.connectionstring=_“provider=Microsoft.jet.oledb.4.0;data source=sqltest.mdb”为 combobox 设定初始状态Cmbtype.selectedindex=0为文本框设定初始状态Txtsqlcom.text=”create t
30、able(约束条件,)”End subPrivate sub cmdgo_click(byval sender as system.object,byval e as system.eventargs)Handles cmdgo.clickTry如果发生异常则弹出对话框显示Dim com as new oledbcommand()Com.connection=connCmandtext=txtsqlcom.textConn.open()打开连接Com.executenonquery()执行 SQL 语句的操作Conn.close()关闭连接Messagebox.show(_“您的操作已经成功地
31、执行!” , “恭喜!” ,_Messageboxbuttons.ok,messageboxicon.information_)CatchConn.close()此时连接一定要关闭Messagebox.show(_Err.description,“警告” ,_Messageboxbuttons.ok,messageboxicon.warning)Exit subEnd tryEnd subPrivage sub cmbtype_selectedindexchanged(bybal sender as system.object,byval e as system.eventargs)handl
32、es cmbtype.selectedindexchanged15With txtsqlcomSelect case cmbtype.selectedindexCase 0.text=”create table(约束条件,)”Case 1对表进行修改.text=”alter tableadd完整性约束 dropmodify;”Case 2删除基本表.text=”drop table”Case 3添加新的记录.text=”insert into( 属性列,)values(常量,)”Case 4更新数据.text=”updateset=,where 条件”Case 5删除记录.text=”dele
33、te fromwhere 条件”Case 6新建索引.text=”createuniqueclusterindexon(,)”Case 7删除索引.text=”drop indexon”注意:在 SQL 的标准语法中,删除索引为 drop index但在 ODBC 中,语法如上Case 8新建一个视图.text=”create vies(,)aswith check optionCase 9删除视图.text=”drop view”16End selectEnd withEnd subEnd class第三章 数据库建立3.1 数据库的设计在这个安全中,设计了一个名称为 Purchaseand
34、Sale 的数据库。根据系统功能的需要,在其中总共设计了 6 个数据表,分别如下: Products 表 用于存储产品的基本信息以及相应的库存数量; Supplier 表 用于存储供应商的基本信息; Customer 表 用于存储客户的基本信息; Users 表 用于存储系统用户的基本信息; Purchase 表用于存储采购的记录的基本信息; Sale 表 用于存储销售记录的基本信息。1Productort 数据表结构Product 数据 表主要用于存储企业的产品或原材料信息,比如物品的名称、产地、规格、单位等。另外,根据销售记录和采购记录计算得出的每种商品的库存数量也存放在Products
35、数据表库存字段。Products 数据表的结构如表 3-1 所示。表 3-1 Product 数据表结构字段名 数据类型 长度 是否允许为空 说明商品名称 Nvarchar 255 否 主键 ,惟一标识产品记录产地 Nvarchar 40 是规格 Nvarchar 50 是包装 Nvarchar 50 是单位 Nchar 19 是库存 Int 4 是 产品库存量,系统计算得出,默认为 02.Supplier 数据表结构 Suppliers 数据表主要用于存储企业的供应商信息,比如供应商的编号、供应商的名称、供应商的地址、联系方式、开户银行和银行账号等。表 3-2Suppliers 数据表结构字
36、段名 数据类型 长度 是否允许为空 说明供应商简称 nvarchar 10 否 主键,惟一标识供应商记录供应商全称 nvarchar 100 是 供应商单位全称地址 nvarchar 100 是邮政编码 Nchar 6 是电话 numeric 9 是传真 Numeric 9 是17联系人 Nvarchar 30 是联系人电话 Numeric 9 是开户银行 Nvarchar 100 是银行账号 Numeric 13 是企业网址 Nvarchar 50 是3.1.1 各数据表的关系实际进销存业务的一些数据是在多个业务活动中共享的,比如采购单中的商品必须在Product 数据表中有相关记录,所以在
37、本课题中也对上述的 6 个数据表设置了对应的关系 。具体关系主要表现在以下几个方面: 采购单、销售单中的经手人必须是企业中的合法员工,本课题中要求经手人必须是在 Users 数据表中有相应记录; 采购单、销售单中的产品必须在 Products 数据表中有相应的记录。如果采购一种新商品,必须先在 Products 数据表中增加这种商品的信息; 采购单中的供应商必是 Suppliers 数据表中的有相应的记录。如果采购中发展了新供应商,必须先在 Suppliers 数据表中增加这家供应商的信息; 销售中的客户必须是 Customer 数据表中有相应的记录。如果销售中发展了新客户,必须 先在 Cus
38、tomer 数据表中增加这家客户的信息。这些关系可以在 SQL Server 中用关系图工具设计和查看,结果如图 4-1 所示。3.1.2 数据表的创建下面介绍在 Microsoft SQL Server2000 中如何创建数据库 PurchaseandSale。具体操作步骤如下 :(1)打开 Microsoft SQL Server2000 企业管理器,单击左窗格中的加号图标,一直将树形结构展开,直到出现数据库服务上的文件夹列表,如图 3-2 所示。(2)用鼠标右键单击“数据库”图标,在出现的快捷菜单中选择“新建数据库”项,出现如图 3-3 所示的“数据库属性“对话框。(3)在“名称“文本框
39、中输入需要新建的数据库的名称,这里是 PurchaseandSale,然18后单击”确定“按钮。这样就创建了一个新的数据库,但是这只是建立了一个空的数据表。这一步需要在这个数据库中创建需要的 6 个数据表。为了演示创建数据表的方法,这里用两种不同的方法创建数据表 Product,其他的表可以用类似的方法创建。1、利用数据表设计工具创建数据表 ProductsMicrosoft SQL Server2000 提供了数据表设计窗口,来帮助用户快捷地创建需要的数据表。创建 Products 数据表的步骤如下:(1)在 Microsoft SQL Server 2000 窗口在左侧空格中用鼠标右键单击
40、“数据库“列表项下面的”PurchaseandSale“图标,在弹出的快捷落单中依次选择”新建“”表“选项,出现如图 3-4 所示的窗口。(2)在“列名“文本框中输入数据库的字段名,第一个字段名为”商品名称“;在”数据类型“下拉列表框中选择或输入需要的数据类型,这里是”nvarchar”;在“长度”文本框中输入需要的字条长度,这里输入 255;在“允许空”复选框中选择是否允许这个字段为空,此处因为商品名称是商品记录的主键,所以不允许此字段为空,取消对这个复选框的选择。(3)按照上一步的方法设定其他字段。(4)单击工具栏上的保存图标按钮,弹出如图 3-5 所示的“选择名称”出对话框。这个对话框要
41、求输入新建数据表的名称。此时输入“Product“,然后单击”确定“。这样,就通过数据表设计工具窗口建立了一个数据表 Product。2、利用 SQL 脚本创建数据表 Products19另外还有一种更快速建立数据表的方法,就是利用 Microsoft SQL Server 2000 提供的查询分析器打开建表的 SQL 脚本,然后直接运行这个脚本,系统会自动按照脚本的要求建立数据库中的所有数据表。具体的操作步骤如下;(1)打开 Microsoft SQL Server 2000 提供的 SQL 查询分析器,界面如图 3-6 所示。(2)在查询分析器的菜单中依次选择“文件“”打开“选项,出现如图
42、 3-7 所示的”打开查询文件“对话框。(3)在对话框中选择光盘中提供的 PurchaseandSale 数据库对应的脚本文件PurchaseandSale。sql,然后单击“打开“按钮,返回 SQL 查询分析器,如图 3-8 所示。(4)这时,SQL 查询分析器中就装载了生成 PurchaseandSale 数据库中数据表的 SQL 脚本文件。单击工具栏上的“执行查询”命令图标,或者使用快捷键 F5,系统会开(5)自动按照 SQL 脚本文件的要求建立数据库中的所在脯。数据表创建完成后,SQL 查询分析器的下方窗格会提示“命令已成功完成” 。这样,用户不需要自己设置数据库和数据表的任何属性和字
43、段,就可以通过 SQL 脚本文件生成需要的数据库和数据表。203.1.3 主键和外键的创建在用光盘中提供的 SQL 脚本生成数据表的时候,SQL 脚本中包含了数据表之间的关系和主键及外键的信息,所以这种方法创建的数据表就不再需要自行创建主键和外键了。在用数据表设计窗口设计的数据表中,并不会自动包含这些信息,所以需要用户手动创建。1、主键的创建根据数据表的结构清单,product 数据表主键的步骤如下:(1)在 SQL Serevr 企业管理器中用鼠标右键单击“Product”数据表,在弹出的快捷菜单中选择“设计表”命令,打开数据表设计窗口。(2)选择 Product 数据表的“商品名称”字段,
44、然后单击工具栏上的设置主键图标按钮“商品名称”字段就被设置为数据表的主键,同时自动取消对“允许空”复选框的选取。其他几个数据表的主键也赖以按照类似的方法创建。2、外键的创建Purchase 数据表中的商品名称、经手人和供应商字段都是这个数据表的外键。所谓的外键,就是这个字段是另一个数据表的主键。外键字段的聚会是受限制的,只有两种可能:一个是主键所在的表中已经有的记录;另一个为空,表示这个字段的值未知或现在不确定。Purchase 数据表中的商品名称字段为这个数据表的外键,对应于 Products 数据表中的主键商品的名称字段已经存在的取值,或者取空值。设置外键的方法和设置主键的方法不太一样。下
45、面用设置 Purchase 数据表的商品名称字段为例来说明设置方法。(1)在 Purchase 数据表的数据表设计窗口中选择商品名称字段,然后单击工具栏的“管理关系”工具图标按钮,弹出如图 4-9 所示的“属性”对话框,并且默认为“关系”选项卡。(2)在对话框的“选定的关系”下拉列表中列出了数据表中当前存在的主键外键关系。如果需要新建一个关系,单击“新建”按钮,然后在“关系名”文本框中输入关系名称,这里输入“FK_purchase_product” ,然后在”主键表“下拉列表中选择”Products“数据表的”商品名称“字段,这是主键表中的主键字段。在“外键表“下拉列表中选择“Purchase
46、”数据表的”商品名称“字段,这是外键对应的表和字段,如图 4-10 所示。(3)在下面的复选框中根据需要设置,一般都采用默认设置,然后单击“关闭“按钮即可。这样,每次在 Purchase 数据表中插入记录时,系统都会自动在 Products 数据表中商品名称字段,以决定是否接受输入的记录。数据表清单中设计的其他几个外键也可以按照类似的方法创建完成。3.2 系统功能设计进销存管理系统充分发挥信息技术的优势,通过集中式的信息数据库,将企业的进、销、存等经营业务有机地结合起来,达到数据共享、降低成本、提高效率、改进服务的目的,进而提高企业的生产效率和管理水平。根据需求分析,设计的进销存管理系统的模块
47、组织结构如图 3-11 所示。21进销存管理系统日常业务 库存管理 统计查询 基础信息 系统设置 退出系统采购单供应商管理产品管理客户管理库存查询密码设置采购查询关于系统销售查询销售单库存盘点下面对各模块的设计功能进行说明。 采购单:日常业务中需要频繁使用的功能,主要是对每笔采购入库进行记录,自动生成对应的采购凭证。采购单中的商品名称、供应商务经手人字段分别对应Products、数据表、Suppliers 数据表和 Users 数据表的相关字段,所以这里需要检验用户输入的合法性。为了管理的方便和规范,每笔采购单对应一个唯一采购单票号。某时刻界面如图 3-12 所示。 销售单:日常业务中需要频繁使用的功能,主要是对每笔销售出库业务进行记录,自动生成对应的销售凭证。销售单中的商品名称、客户和经手人字段分别对应Product 数据表、Customer 数据表和 Users 数据表中的相关字段,所以这里需要检验用户输入的合法性。为了管理的方便和规范,每笔销售单对应一个唯一采销售单票号。 库存盘点:管理中的重要业务活动,主要是根据采