de
Char
4
PrimaryKey
NotNull
供应商编码
FirmName
Varchar
16
NotNull
供应商名称
Link
Varchar
12
联系人
LinkTell
Varchar
11
联系电话
City
Varchar
8
所在城市
表3-3药品销售主表
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
SaleNo
int
4
PrimaryKey
NotNull
销售编码
WorkNo
Char
2
Foreignkey
NotNull
销售员编码
SaleDate
DateTime
8
销售日期
Amount
Money
8
总金额
表3-4药品销售子表
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
SaleNo
int
4
PrimaryKey
NotNull
销售编码
Medicinecode
Char
6
Foreignkey
NotNull
药品编码
MedicineName
Varchar
32
NotNull
药品名称
Price
Money
8
售价
Number
Int
4
数量
Unit
Char
2
单位
Amount
Money
8
金额
表3-5药品类别索引信息
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
MedKindCode
Char
1
PrimaryKey
NotNull
药品类别代码
KindExplanation
Varchar
16
NotNull
类别说明
表3-6用户信息
字段名
字段类型
长度
主键或外键
字段值约束
对应中文属性名
WorkNo
Char
2
PrimaryKey
NotNull
职工号
Name
Varchar
12
姓名
UserRegName
Char
3
NotNull
用户登录名
Password
Money
3
NotNull
用户口令
Position
Money
10
用户身份
Power
Int
10
用户权限
第四章实现
4.1数据库实现
根据3.3数据表设计的设计结果,运用DBMSSQLServer2000的企业管理器建立数据库表。
药品信息表(MedInfor)设置药品编码(MedicineCode)为主码,药品类别索引表(MedKindInfor)设置药品类别代码(MedKindCode)为主码,销售主表(SaleMainTable)设置销售编码(Saleno)及销售日期(SaleDate)共同作为主码,销售子表(SaleChildTable)设置销售编码(SaleNo)、销售日期(SaleDate)和药品编码(MedcineCode)共同作为主码,用户信息表(UserInfor)设置职工号(WorkNo)作为主码,供应商信息表(FirmInfor)设置供应商编码(FirmCode)为主码。属性的字符类型及长度参照3.3数据表设计结果进行设置
每类药品可以有好多种药,每种药只有一个类别,所以药品类别索引表与药品信息表存在一对多的关系,以MedKindInfor的主码MedKindCode作主键,MedInfor的MedKindCode作外键建立关系。销售子表内的药品编码药参照药品信息表内的药品编码,即销售子表与药品信息表存在参照关系,以MedInfor的MedicineCode作主键,SaleChildTable的MedicineCode作外键建立关系。销售主表与销售子表存在依赖关系,以SaleMainTable的Saleno和SaleDate作为主键,SaleChildTable的Saleno和SaleDate作为外键建立关系。销售主表内的职工号药参照用户信息表的职工号,即销售主表与用户信息表存在参照关系,以SaleMainTable的Workno为主键,UserInfor的WorkNo为外键建立关系。
数据库的最终关系图如下:
图4.1数据库表关系图
4.2系统功能结构
系统根据用户身份的不同分为三个功能模块:销售管理模块,仓库管理模块和日常管理模块。
在销售管理模块,销售员可以根据顾客要求查询相关药品的部分信息,主要是库存量和售价的查询;还可以完成药品的销售,根据顾客所买药品的代码和数量存储销售信息,主要是对销售数量和销售总额的记录,并在销售完成后实现当前库存的更新。
在仓库管理模块,仓库管理员可以查看药品的全部信息,对药品信息进行维护,盘点库存信息,清除过期药品等。
在日常管理模块,管理者可以查看药品信息、销售记录,并对供应商信息和用户信息进行管理维护。
具体功能模块图如下:
图4.2系统功能图
4.3模块功能介绍
该系统共三个功能模块:销售管理、仓库管理和日常管理。不同的用户可以进入不同的模块进行相应操作。如:销售人员凭借用户名和密码只能进入销售管理系统,进入后可以进行药品的销售和查询;仓库管理员凭借用户名和密码只能进入仓库管理系统,进行药品信息的查询和维护;管理者也要通过身份验证进入日常管理界面进行用户信息和供应商信息的维护即查询及药品信息和销售信息的查询。系统主界面如下:
图4.3系统主界面
4.3.1销售管理模块
该模块主要完成前台药品销售及前台查询功能:销售过程要将销售信息自动存储到销售信息主表及子表内,便且为了维护数据的一致性,药品库存量要随销售量动态更新,若购药量大于库存时应拒绝销售操作;查询功能主要查询顾客所需药品大概信息,可以根据药品名称或所属类别进行查询。
如下是销售管理模块的实现界面:
1.销售员登录界面
图4.4销售管理模块登录界面
该界面通过如下代码跟数据库内用户信息表连接,具体实现代码见附录
PrivateSubForm_Load()
Adodc1.RecordSource="select*fromuserinforwhereuserregname='"&Text1&"'"
Adodc1.Refresh
EndSub
2.前台查询
(1)输入药品名称"盖中盖"所得查询结果如下
图4.5查询结果(一)
(2)选择药品类别"非处方药"所得查询结果如下
图4.6查询结果(二)
系统通过如下主要代码实现药品查询功能
按药品名查询
Adodc1.RecordSource="selectmedicinecode药品编码,medicinename药品名称,price售价,stocknum库存量,unit单位,usefullife有效期至fromMedInforwheremedicinename='"&Text1&"'"
Adodc1.Refresh
按药品类别查询
SelectCaseCombo1.Text
Case"处方药"
Adodc1.RecordSource="selectmedicinecodeas药品编码,medicinename药品名称,priceas售价,stocknumas库存量,unitas单位,usefullifeas有效期至fromMedInforwheremedkindcode='1'"
Adodc1.Refresh
Case"非处方药"
Adodc1.RecordSource="selectmedicinecodeas药品编码,medicinenameas药品名称,priceas售价,stocknumas库存量,unitas单位,usefullifeas有效期至fromMedInforwheremedkindcode='2'"
Adodc1.Refresh
.
.
.
3.前台销售
(1)101003号药品,销售量为13时的销售界面
图4.7销售结果界面
(2)销售量大于库存时的界面
图4.8库存提示界面
系统主要通过如下主要代码实现销售功能
更新库存
Adodc1.Recordset.Update
Text11.Text=Val(Text11.Text)-Val(Text2.Text)
Adodc1.Recordset.Update
Adodc1.Recordset.MoveLast
计算总额
Text17.Text=Val(Text9.Text)*Val(Text2.Text)
x=x+Val(Text17.Text)
Text6.Text=x
4.3.2仓库管理模块
该模块主要完成药品信息的维护和查询,其中查询功能可以分别按药品代码、药品名称、药品类别或过期药品来查询。
如下是仓库管理模块的实现界面:
1.仓库管理员登录界面
图4.9管理员登录界面
2.药品信息查询
(1)输入代码"101003"的查询结果界面
图4.10按药品编码的查询结果结果界面
(2)输入药品名称"白加黑"的查询结果界面
图4.11按药品名称的查询结果界面
(3)选择药品类别"处方药"的查询结果界面
图4.12按药品类别的查询结果界面
(4)按过期药品查询的结果界面
图4.13按过期药品的查询结果界面
系统主要通过如下主要代码实现查询功能
Adodc1.RecordSource="selectmedicinecodeas药品编码,medicinenameas药
上一篇:
vb试题库自动组卷系统(论文和程序)
下一篇:
哈弗F7 VS名爵HS,谁更懂得年轻人的心?