上面的一段代码就是连接数据库的。上用到了三个变量conn,Dbpath,rs。其中有两个变量要定义为公用的变量,因为这段代码是放在一个模块中的,为了在每一个窗体中能够使用这个变量,所以必须要声明为公用变量。声明公用变量的方法如下:
Public conn
Public rs
上面就是声明为公用变量,上面的声明一定要放在模块的最上面。如果声明在下面,那就成了局部变量,那么作用范围就会不同了,作用就更不同,而且在其它窗体中使用到了这个变量,程序会出错。
3.4数据库设计
上面提到的各种功能的实现都离不开数据库的支持,因此数据库设计作为本系统设计的一部分不可缺少。开发本系统中使用的数据库系统是Windows Access 2000 。从上面的功能分析不难看出本系统需要建立以下几个数据表:buy表(进货表)、goods表(现存商品表)、sell表(销售表)、retreat表(退货表)、employee表(员工表)、manufacturer表(进货商表)。由于数据量比较小,所以这些数据表都存在一个数据库下:sellsystem.mdb
下面对各个数据表的结构做一下简单介绍:
在系统的数据库设计中,进货表、销货表、商品库存表和退货表涉及了交易管理三个子菜单的绝大部分数据,是本系统数据库的核心,所以将对其部分表的设置列表显示。
Manufacturer表(进货商表)中包括有厂商编号、厂商名称、联系人姓名、电话、厂商地址等字段,表略。
employee(员工表)中包括有员工编号、员工姓名、员工密码、员工电话、员工地址等字段,表略。
buy表(进货表)中包括有进货编号、商品编号、商品名称、生产厂商、型号、数量、进货价、进货年、进货月、进货日、总金额、业务员编号等。设计该数据表的主要目的是方便管理员的查看,使系统的数据管理能够更加层次化。具体设置如表3-1所示。
表3-1 buy表
字段名 |
数据类型 |
说明 |
进货编号 |
文本 |
字段大小为20 |
商品名称 |
文本 |
字段大小为20 |
生产厂商 |
文本 |
字段大小为20 |
型号 |
文本 |
字段大小为20 |
数量 |
数字 |
长整型 |
进货价 |
货币 |
货币 |
进货年 |
数字 |
整型 |
进货月 |
数字 |
整型 |
进货日 |
数字 |
整型 |
业务员编号 |
文本 |
字段大小为20 |
总金额 |
货币 |
货币 |
goods表(现存商品表)中包括有商品编号、生产厂商、商品名称、型号、进货价、销货价、数量、进货年、进货月、进货日、业务员编号、总金额等字段。具体设置如表3-2所示。
表3-2 goods表
字段名 |
数据类型 |
说明 |
商品编号 |
文本 |
字段大小为20 |
商品名称 |
文本 |
字段大小为20 |
生产厂商 |
文本 |
字段大小为20 |
型号 |
文本 |
字段大小为20 |
数量 |
数字 |
长整型 |
进货价 |
货币 |
货币 |
销货价 |
货币 |
货币 |
sell表(销货表)中包括有销货编号、商品编号、商品名称、生产厂商、型号、数量等字段,由于篇幅有限,其表略。
retreat表(退货表)中包括有退货编号、销货编号、生产厂商、商品名称、型号、单价、数量、总金额、退货年、退货月、退货日、业务员编号等。具体设置如表3-3所示。
表3-3 retreat表
字段名 |
数据类型 |
说明 |
退货编号 |
文本 |
字段大小为20 |
销货编号 |
文本 |
字段大小为20 |
商品名称 |
文本 |
字段大小为20 |
生产厂商 |
文本 |
字段大小为20 |
型号 |
文本 |
字段大小为20 |
单价 |
货币 |
货币 |
数量 |
数字 |
长整型 |
总金额 |
货币 |
货币 |
退货年 |
数字 |
整型 |
退货月 |
数字 |
整型 |
退货日 |
数字 |
整型 |
业务员编号 |
文本 |
字段大小为20 |
第四章 系统总体规划
4.1 系统功能
1.可以进行文本操作;
2.添加一个数据库项目;
3.删除一个数据库项目;
4.修改一个数据库项目;
5.查询信息;
主窗体的建立十分简单,只需将所要实现的功能编辑成菜单即可。该窗体的运行过程为:用户首先进入登陆窗体,如果是管理员登陆,则先进入初始化窗体,经过判断是否需要初始化后,进入主窗体。其权限为:销货统计、进货统计、查看数据表和系统管理。其权限的设置使管理员能够方便的查看任何时间段内的所有信息,还可以对员工表进行管理。如果是普通用户登陆,则直接进入主窗体,其授予的权限只有交易管理和系统管理,也就是说员工只能负责对商品进行如库登记、销货登记和退货登记,另外在一个员工对本系统使用的整个期间内,进货登记、销货登记和退货登记三个窗体中的显示的业务员编号都由系统自动给出的该员工的员工编号。
进货登记窗体
本窗体用来实现商品进货功能,将进货信息添加到buy表,再将该信息选择性的加入goods表。如果是新的进货厂商,可以在此入库登记。其具体实现过程如下所述:先在窗体级变量中定义三个记录集:rs_buy,rs_goods,rs_manufacture用来控制三个数据表:buy表,goods表,manufacturer表。在用户点击添加商品中的添加入库操作之前,程序先会检查是否有用户是否有个别属性为空,并做出提示。然后将商品添加到buy表中,再添加到goods表。在添加到goods表时,程序会先判断该商品编号是否已经存在,如果存在则直接将该添加信息的数量加到goods表中相应的记录上。为此,进货编号、商品编号是buy表、goods表中不可重复的属性。为方便用户操作,程序特在商品编号的文本框:text2的Change事件中做了一个判断,即如果该商品编号存在的话直接显示该商品的其他属性。另外,对于总金额文本框也是由数量和进货价两个文本框的Change事件计算入内的。如果是新的进货商,可以将它的信息添加到进货商表。其过程和上面所说的添加到buy表基本相同,这里就不做介绍了。
(5) 销货登记窗体 本窗体主要功能是对商品进行销售,首先对员工输入的销货信息进行完整条件的判断,条件符合后进行销售。然后将销售信息存入sell表,并对goods表的数量做相应修改。具体实现过程为:先在窗体集中定义两个记录集:rs_sell,rs_goods,用来控制两个数据表:sell表和goods表。在销货窗体中,如果用户输入的商品编号已经存在,则该商品的其它属性将随着text2(即商品编号)的Change事件出现在其对应的位置上。而销售日期和业务员编号已经是程序默认给出的系统时间和登陆员工的编号。在判断没有空缺属性后该商品将顺利添加如库,而且该商品在goods表中的数量也将随之做相应的改变,使goods表和sell表的总和保持原来goods表中的数量值。