商品资料表(商品编号,条形码,商品名称,计量单位,供应商编号,供应商地址,
商品说明);
客户资料表(客户编号,客户名称,地址,电话,传真,信誉等级,所需商品,简介); 销售单表(销售单号,客户编号,销售日期,销售员,是否核销,操作人员,总共金
额,不含税价,税额);
销售明细表(编号ID,销售单号,商品编号,销售数量,成本单价,销售单价,总
共金额,不含税价,税额);
3、物理结构设计 (1)设计原则如下:
a进行规范化设计,尽可能地减少数据冗余和重复。 b结构设计与操作设计相结合。 c数据结构具有相对的稳定性。
基于以上三条设计原则,本系统中关于数据库表结构设计如下: 字段名称
供应商编号 供应商名称 地址 电话 传真 信誉等级 提供商品 简介 字段名称 商品编号 商品名称 条形码 计量单位 供应商编号 供应商地址 商品说明 字段名称 客户编号 客户名称 地址 电话 传真
供应商资料表
数据类型 可否为空 Char(4) 主键
Not null Nvarchar(50)
Null Nvarchar(50)
Null Nvarchar(50)
Null Nvarchar(50)
Null Char(2)
Null Text(16)
Null Text(16) 商品资料表
数据类型 可否为空 Char(6) 主键
Not null Nvarchar(50)
Null Char(10)
Not Null Char(10)
Char(4) 外键
Null Nvarchar(50)
Null Text(16)
客户资料表
数据类型 可否为空 Char(4) 主键
Not null Nvarchar(50)
Null Nvarchar(50)
Null Nvarchar(50)
Null Nvarchar(50)
说明
供应商编号为4位,以GY开头 供应商名称 供应商地址 供应商电话 供应商传真
信誉等级:优、良、差 供应商提供的商品 供应商简介 说明
商品编号为6位,以SP开头 商品名称
商品条形码为10位 计量商品的单位 父表为供应商资料表 供应商地址 商品说明
说明
客户编号为4位,以KH开头 客户名称 客户地址 客户电话 客户传真
19
信誉等级 所需商品 简介 字段名称 销售单号 客户编号 销售日期 销售员 是否核销 操作人员 总共金额 不含税价 税价 字段名称 编号ID 销售编号 商品编号 销售数量 成本单价 销售单价 总共金额 不含税价 税额
Char Text(16) Text(16) Null Null Null
信誉等级:优、良、差 客户要求的商品 客户简介
销售单表
数据类型 可否为空 Char(6) 主键 Char(4) 外键
Null Datetime(8)
Null Nvarchar(50)
Not Null Char(6)
Not Null Char(4)
Null Float(8)
Null Float(8)
Null Float(8)
销售单明细表 可否为空 主键 外键 外键 Not Null Not Null Not Null Not Null Not Null Not Null 说明
销售单号为6,以XS开头 父表为客户资料表 销售日期 销售员
是否核销:未核销、已核销 操作人员
销售单的总金额 不含税价 税额
数据类型 Numeric Char(6) Char(6) Float(8) Float(8) Float(8) Float(8) Float(8) Float(8) 说明 标识种子1、自增1 父表为销售单表 父表为商品资料表 商品的销售数量 商品的成本单价 商品的销售单价 销售单明细的总金额 不含税价=总共金额-税额 税额=总共金额*税率
五、系统实施
(一)开发工具的选择
1、 SQL介绍
SQL全称是“结构化查询语言(Structured Query Language)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE
20
语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle、Sybase、Informix、SQL server这些大型的数据库管理系统,还是像Visual Foxporo、PowerBuilder这些微机上常用的数据库开发系统,都支持SQL语言作为查询语言。 2、Visual basic编程语言简介
Visual Basic 简称VB,是微软公司推出的一种可视化编程工具,是当今世界上应用最广泛的编程语言之一,它也被公认为是编程效率最高的一种编程方法。它开发速度快捷,具有语法简单易学的开发环境,是初学者的首选。VB提供可视化的开发环境,使用者可以像搭积木一样构建出程序的界面,而且它提供丰富的控件组,省去了自己编写代码的实现这些效果的麻烦,这样就可以把更多的精力放在程序功能方面的实现上。本系统中使用的是Microsoft Visual Basic 6.0 中文企业版。 3、SQL Server 数据库简介
Microsoft SQL Server 2000是新一代大型电子商务、数据仓库和数据库解决方案。SQL Server 2000在分析服务、数据转换服务、数据仓库等方面引入了大量新特性。它为Web标准提供了强劲的支持,并为系统管理和调整提供了许多有力的工具。
SQL Server 2000在SQL Server 7.0基础上对以下两个方面进行了极大的增强: (1)数据仓库
? 分析服务。使用联机分析处理和数据开采工具满足了用户所有的商业分析需求。 ? 索引化视图。通过把查询结果存储在数据库中,以减少查询响应时间,大大改善了系统的性能。
(2)电子商务
? 对XML支持的增强。使用XML简化了对后端系统和数据转换的整合。
? Web数据访问。通过使用Web,而不需要额外的编程工作就可以建立SQL Server 2000数据库和OLAP立方体的连接。
? 分布式分区视图。将用户的数据存储在多个服务器上,从而增大了数据库的规模。 ? 安全性。SQL Server 2000为你的应用提供了更高的安全策略。
? 简化数据库管理。SQL Server 2000提供了大量的监视和管理工具,从而大大减少了管理员的工作量。
? 数据库复制。使用SQL Server 2000可以在不同的系统之间进行合并、事务和快照复制。
21
(二)源程序清单
1、VB源代码 供应商资料模块: Option Explicit
Dim rs As ADODB.Recordset Dim SQL As String Dim msg As String Dim Index As Integer
Dim flag As String 'Private Sub Command1_Click()
Call LoadData ' Call ShowData End Sub
Private Sub Form_Load() '初始化查询条件ComboBox cboquery.AddItem (\供应商编号\ cboquery.AddItem (\供应商名称\
cboquery.ListIndex = 0 '
'初始化信誉等级ComboBox cboxy.AddItem (\优\ cboxy.AddItem (\良\ cboxy.AddItem (\差\
cboxy.ListIndex = 0 '
Call LoadData ' Call ShowData 'End Sub
Private Sub LoadData() '装载数据
Dim colName As String '判断是新增记录还是修改记录 装载数据 默认查询条件为供应商编号 默认信誉等级为优 装载数据 显示数据 保存所选择的查询条件
22
Dim colValue As String '保存所要查询具体的值 Dim strWhere As String '得到查询条件
colName = cboquery.Text '取出条件的值 colValue = txtquery.Text '取出所要查询的值 '构建条件
strWhere = \ Set rs = Nothing '查询供应商资料
SQL = \供应商资料表 \供应商编号 \ Set rs = SelectSQL(SQL, msg) Set Me.DataGrid1.DataSource = rs DataGrid1.Refresh
If rs.RecordCount = 0 Then '如果不存在记录 '编辑控件可用性
cmdadd.Enabled = True: cmdmodify.Enabled = False: cmddelete.Enabled = False cmdcancel.Enabled = False: cmdsave.Enabled = False '移动控件不可用 For Index = 0 To 3
cmdmove(Index).Enabled = False Next Index Else
'编辑控件可用性
cmdadd.Enabled = True: cmdmodify.Enabled = True: cmddelete.Enabled = True cmdcancel.Enabled = False: cmdsave.Enabled = False '移动控件可用 For Index = 0 To 3
cmdmove(Index).Enabled = True Next Index End If
'设置控件Enable值 Call ControlEnable(False) End Sub
Private Sub ControlEnable(flag As Boolean)
23