数据库原理与应用课程设计指导书ACCESS.docx
- 文档编号:26297327
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:37
- 大小:365.04KB
数据库原理与应用课程设计指导书ACCESS.docx
《数据库原理与应用课程设计指导书ACCESS.docx》由会员分享,可在线阅读,更多相关《数据库原理与应用课程设计指导书ACCESS.docx(37页珍藏版)》请在冰豆网上搜索。
数据库原理与应用课程设计指导书ACCESS
数据库原理与应用
实训指导书
交通信息学院
2011.09
库存管理系统
传统的库存管理,一批产品从入库到出库,要经过多个环节,而且具有如下几个弊端:
手工处理入库、出库造成产品供应效率低,影响企业发展;手工完成大量的入库、出库和库存统计,造成库存产品汇总困难,使库存结构难以掌握;仓库与管理部门之间信息交流少,造成库存积压,使资金周转缓慢。
建立计算机化的库存管理系统可以对解决这些问题提供有效地帮助。
一、数据库设计
根据库存管理系统分析,库存管理系统处理的数据涉及的表有入库表、出库表、库存表以及商品信息等。
要使所有表既无数据冗余,又无传递依赖,可将库存管理系统数据库定义为5张表,分别为商品入库表、商品出库表、库存表、商品信息表和仓库表。
各表结构如下:
表1商品入库表
字段名称
字段类型
长度
允许空值
备注
入库ID
数字
长整型
必填
主键
入库日期
日期/时间
长日期
商品代码
文本
20
必填
入库数量
数字
长整型
必填
单位
文本
4
组合框
仓库
文本
10
组合框
标志
文本
1
入库数量修改差
数字
长整型
表2商品出库表
字段名称
字段类型
长度
允许空值
备注
出库ID
数字
长整型
必填
主键
出库日期
日期/时间
长日期
商品代码
文本
20
必填
出库数量
数字
长整型
必填
单位
文本
4
组合框
仓库
文本
10
组合框
标志
文本
1
出库数量修改差
数字
长整型
表3库存表
字段名称
字段类型
长度
必填
备注
商品代码
数字
长整型
主键
商品名称
文本
50
仓库
文本
10
组合框
单位
文本
4
必填
组合框
库存数量
数字
长整型
必填
默认值:
0
最高储备
数字
长整型
必填
最低储备
数字
长整型
表4商品信息表
字段名称
字段类型
长度
允许空值
备注
商品代码
文本
20
必填
主键
商品名称
文本
50
必填
条形码
文本
20
必填
商品拼音编码
文本
10
必填
单位
文本
4
必填
规格
文本
10
必填
产地
文本
20
必填
类别
文本
10
必填
进货价
数字
单精度
必填
仓库
文本
10
必填
表5仓库表
字段名称
字段类型
长度
允许空值
备注
仓库ID
数字
长整型
必填
主键
仓库名称
文本
10
仓库位置
文本
50
仓库类型
文本
50
安全等级
文本
50
仓库用途
文本
50
仓库容量
数字
长整型
默认值:
0
二、模块设计
根据前面的分析,并依据系统设计,对整个系统进行模块设计,得到如图1所示功能模块。
图1库存管理系统功能模块
三、库存管理系统设计过程
1.创建新数据库
启动Access2003创建“库存管理系统.mdb”空数据库。
2.创建表
根据表1-表5的结构在“库存管理系统.mdb”中创建表。
3.设置各表间的关系
按图2所示的关系创建表间关系。
4.填写入库/出库单
入库/出库处理最基本的工作内容是填写入库/出库单,修改库存。
根据仓库管理的要求,应在填写完入库/出库单后立即修改库存,将入库数量加到库存量中,将出库数量从库存量中减去。
要完成这样的计算操作可以使用更新查询。
因此,在实现这个功能模块时,首先建立更新查询,然后创建填写入库/出库单窗体,并将更新查询与窗体连接起来,在关闭窗体时运行该查询,完成“库存表”的修改操作。
(1)创建更新库存查询
查询的功能是使用入库信息更新库存量和使用出库信息更新库存量。
查询名称分别为“更新库存量(入库)”和“更新库存量(出库)”。
创建“更新库存量(入库)”的步骤如下。
图2表间关系
①在数据库窗口中单击“查询”容器,然后双击“在设计视图中创建查询”,调出“查询设计视图”窗口,并显示一个“显示表”对话框,在“显示表”对话框中,单击“表”选项卡,然后分别双击“商品入库表”和“库存表”,单击【关闭】按钮,关闭“显示表”对话框。
如图3所示。
图3显示表对话框
②选择“查询”→“更新查询”菜单命令,在查询“设计网格”中显示一个“更新到”行。
将“库存表”中的“库存数量”字段拖动到“设计网格”的“字段”行的第1列中,将“商品入库表”中的“标志”字段拖动到“设计网格”的“字段”行的第2列中,再在“库存数量”字段的“更新到”单元格中输入更新表达式“[库存表]!
[库存数量]+[商品入库表]!
[入库数量]”。
在“标志”字段的“更新到”单元格中输入“1”,在“条件”单元格中输入条件“0”,如图4所示。
图4入库更新查询窗口
为了能够区分已经处理的入库单,在“商品入库表”中设置了一个“标志”字段,当该字段值为“0”时,表示该入库单的“入库数量”还未加到“库存表”中。
所以,在建立更新查询时,应只对“标志”字段值为“0”的“库存量”字段值进行更新。
更新后,应将“标志”字段值改为“1”,表示已经处理完毕。
③单击工具栏的【保存】按钮或选择“文件”→“保存”菜单命令保存该查询,并命名为“更新库存量(入库)”。
④“更新库存量(出库)”查询的创建步骤与上述步骤相同,结果如图5所示。
图5出库更新查询窗口
(2)创建填写入库/出库单窗体
①建立如图6所示的入库单窗体。
方便输入操作,设置“日期”字段的“输入掩码”为“0000-99-99;0;_;”,“默认值”设置为“=date()”。
图6入库单窗体
②设置窗体的“格式”属性和“数据”属性,如图7所示。
图7设置窗体属性
(3)入库单号查重:
在“商品入库表”中,每个入库记录对应一个入库单号,即“入库ID”值。
为了避免输入重复的入库单号,系统提供入库单号查重功能。
将输入的入库单号与表中的“入库ID”进行比较,如果两值相同,则显示提示信息。
在“入库单输入”窗体的设计视图中,单击选中“入库单号”文本框,右击调出快捷菜单,选择“属性”命令,在调出的“入库单号”文本框属性对话框中,选择“事件”选项卡,在“更新后”文本框中选中“事件过程”,如图8所示。
图8创建“更新后”事件
然后再单击其后的“…”按钮,调出“MicrosoftVisual编辑器”窗口,在光标处插入下列代码。
Privatesub入库单号_afterupdate()
WithCodeContextObject
rrr="[商品入库表]!
[入库ID]="&Me!
[入库单号]
DoCmd.ApplyFilter"uuu",rrr
If(.RecordestClone.RecordCount>0)Then
MsgBox"入库单号已存在,请重新输入!
",vbOKOnly,"提示框“
[入库单号].SetFocus
EndIf
EndWith
Endsub
(4)入库单保存:
输入入库单信息后,单击【保存】按钮即可将输入的数据添加到“商品入库表”中。
“保存”命令按钮的“单击”事件的代码如下。
Privatesub保存r_click()
DoCmd.GoToRecord,,acNewRec
Me!
[入库ID]=Me!
[入库单号]
Me!
[日期]=Me!
[日期r]
Me!
[商品代码]=Me!
[商品代码r]
Me!
[入库数量]=Me!
[入库数量r]
Me!
[标志]="0"
DoCmd.DoMenuItemacFromBar,acRecordsMenu,acSaveRecord,,acMenuVer70
Me!
[入库单号]=""
Me!
[日期r]=Date
Me!
[商品代码r]=""
Me!
[入库数量r]=0
Me.Refresh
Exit_保存r_click()
(5)入库单重填:
如果数据输入有误或希望放弃此次输入,可单击【重填】按钮。
该命令按钮的“单击”事件代码如下。
Privatesub重填r_click()
Me!
[入库单号]=""
Me!
[日期r]=Date
Me!
[商品代码r]=""
Me!
[入库数量r]=0
Endsub
(6)入库单取消:
这里的取消操作实质上是退出输入操作,即关闭输入窗口。
该命令按钮上的“单击”事件代码为:
Privatesub取消r_click()
DoCmd.Close
Endsub
(7)库存量修改:
本系统在输入完成所有入库单后,对“库存表”中的“库存数量”进行修改,即在关闭输入窗口时完成修改操作。
因此,可设置窗口的“关闭”事件,当发生该事件时运行已建立的“更新库存量(入库)”更新查询。
更新库存量代码如下:
Privatesubform_close()
DoCmd.OpenQuery"更新库存量(入库)",acViewNormal,acEdit
Endsub
出库单输入窗体的建立内容和方法与入库单输入相似。
5.维护入库/出库单信息
有时,输入的入库单或出库单数据在存盘后才发现错误,就需要对其进行修改。
修改数据与输入数据相似,修改完成后,应对“库存表”中“库存数量”作相应更新。
为了方便更新,在“商品入库表”和“商品出库表”中增加了一个记忆修改前和修改后差值的字段,分别是“入库数量修改差”和“出库数量修改差”,应用该字段来更新“库存数量”。
要完成这样的操作,需要建立更新查询。
(1)创建更新库存查询
建立更新库存查询的方法与上述相同。
当“商品入库表”或“商品出库表”中的“标志”字段值为“0”时,表示还未对“库存数量”进行修改,因此要用这些数量值更新“库存数量”值。
但应注意,更新完成后应将相应的“标志”字段值由“0”改为“1”。
“更新修改后的库存数量(入库)”的设计视图如图9所示。
图9更新修改后的库存数量(入库)”的设计视图
(2)创建维护入库/出库窗体
商品入库单维护窗体如图10所示。
该窗体分为3个部分:
上半部分为入库单信息显示区;中间部分为修改区,该区放置了3个文本框控件,用来修改制定的入库单;下半部分为查询区,该区有3个文本框和一个组合框,用来查找需要修改的入库单。
窗体最下方有3个命令按钮,实现查询、保存和退出等功能。
图10商品入库单维护窗体
1入库单保存:
修改数据时,即可以在修改区直接输入要修改的数据,也可以先查找要修改的入库单,然后在显示区修改。
当修改区输入了要修改的内容后,直接单击“保存”命令按钮,即可保存已输入的修改信息。
“保存”命令按钮的“单击”事件代码如下。
Privatesub命令1_click()
Me!
[入库ID].SetFocus
DoCmd.FindRecordMe!
[文本1],,True,,True
Me!
[入库ID]=Me!
[文本1]
Me!
[入库日期]=Me!
[文本2]
Me!
[入库数量修改差]=Me!
[文本3]-Me!
[入库数量]
Me!
[入库数量]=Me!
[文本3]
Me!
[标志]="0"
Me!
[文本1]=""
Me!
[文本2]=Date
Me!
[文本3]=0
Me.Refresh
Endsub
②入库单查询:
在查询区输入查询内容,然后单击【查询】按钮查找相应的内容,如果找到,信息显示区指针定位到该记录,此时可对该记录进行修改。
为了实现这样的查询,需要对每一输入框的“失去焦点”事件进行记录定位设置,然后通过“查询”命令按钮的“单击”事件完成实际定位。
4个输入控件的“失去焦点”事件的代码如下。
入库单号“失去焦点”事件代码:
Me!
[入库ID].SetFocus
DoCmd.FindRecordMe!
[文本4],,True,,True
Me!
[命令5].Visible=True
入库日期“失去焦点”事件代码:
Me!
[入库日期].SetFocus
DoCmd.FindRecordMe!
[文本5],,True,,True
Me!
[命令5].Visible=True
入库数量“失去焦点”事件代码:
Me!
[入库数量].SetFocus
DoCmd.FindRecordMe!
[文本6],,True,,True
Me!
[命令5].Visible=True
商品代码“失去焦点”事件代码:
Me!
[商品代码].SetFocus
DoCmd.FindRecordMe!
[组合1],,True,,True
Me!
[命令5].Visible=True
【查询】按钮的“单击”事件VBA代码:
Screen.PreviousControl.SetFocus
DoCmd.FindNext
【退出】按钮的功能是关闭窗体
(3)修改库存量:
与入库输入设计一样,修改入库单后对“库存数量”的修改也是在关闭输入窗口时完成,即设置窗口的“关闭”事件,当发生该事件时运行已建立的“更新修改后的库存数量(入库)”更新查询。
所设代码如下:
DoCmd.OpenQuery"更新修改后的库存数量(入库)",acViewNormal,acEdit
6.查询入库/出库单信息
对入库/出库信息的查询可按入库/出库单中的任意内容查询。
无论是查询入库信息,还是查询出库信息,其设计方法相同,只是窗体所用数据源不同。
因此,只介绍入库信息查询。
入库信息查询控制窗体如图11所示。
图11入库信息查询窗体
(1)高级查询
单击【高级查询】按钮,调出“入库信息高级查询”窗体,如图12所示。
在窗体中相应的文本框内输入要查询的内容,然后单击【查找记录】按钮,这时系统将在“商品入库表”中查找记录并显示在窗体中。
①使用向导创建以“商品入库表”为数据源的“表格”式窗体。
②调整窗体页眉区大小,并在页眉区上方放置1个标签、1个组合框和3个文本框。
3个文本框用来输入“入库单号”、“入库日期”、“入库数量”等内容,组合框用来选择“商品代码”。
③在窗体页脚区放置2个命令按钮,“查找记录”和“退出”。
④保存查询窗体,并命名为“入库信息高级查询”。
图12高级查询窗口
⑤编写查询代码,对每个文本框的“失去焦点”事件进行记录定位设置,然后通过“查找记录”命令按钮的“单击”事件完成实际定位。
4个输入控件的“失去焦点”事件的代码如下。
入库单号“失去焦点”事件代码:
PrivateSub文本21_LostFocus()
OnErrorGoToErr_文本21_LostFocus
Me!
[入库ID].SetFocus
DoCmd.FindRecordMe!
[文本21],,True,,True
Me!
[命令5].Visible=True
Exit_文本21_LostFocus:
ExitSub
Err_文本21_LostFocus:
MsgBoxErr.Description
ResumeExit_文本21_LostFocus
EndSub
入库日期“失去焦点”事件代码:
PrivateSub文本2_LostFocus()
OnErrorGoToErr_文本2_LostFocus
Me!
[入库日期].SetFocus
DoCmd.FindRecordMe!
[文本2],,True,,True
Me!
[命令5].Visible=True
Exit_文本2_LostFocus:
ExitSub
Err_文本2_LostFocus:
MsgBoxErr.Description
ResumeExit_文本2_LostFocus
EndSub
商品代码“失去焦点”事件代码:
PrivateSub组合25_LostFocus()
OnErrorGoToErr_组合25_LostFocus
Me!
[商品代码].SetFocus
DoCmd.FindRecordMe!
[组合25],,True,,True
Me!
[命令5].Visible=True
Exit_组合25_LostFocus:
ExitSub
Err_组合25_LostFocus:
MsgBoxErr.Description
ResumeExit_组合25_LostFocus
EndSub
入库数量“失去焦点”事件代码:
PrivateSub文本27_LostFocus()
OnErrorGoToErr_文本27_LostFocus
Me!
[入库数量].SetFocus
DoCmd.FindRecordMe!
[文本27],,True,,True
Me!
[命令5].Visible=True
Exit_文本27_LostFocus:
ExitSub
Err_文本27_LostFocus:
MsgBoxErr.Description
ResumeExit_文本27_LostFocus
EndSub
“查找记录”命令按钮的“单击”事件代码:
PrivateSub命令5_Click()
Screen.PreviousControl.SetFocus
DoCmd.FindNext
EndSub
(2)按条件查询
“按入库数量查询”和“按入库日期查询”,通过创建参数查询来实现查询。
在建立这两个查询之前先建立“所有入库信息查询”。
①创建“所有入库信息查询”。
可通过创建选择查询来完成该查询的创建。
创建结果如图13所示。
图13按所有入库信息查询
②创建“按入库数量查询”。
以“所有入库信息查询”为数据源,在设计视图中创建该查询,如图14所示。
图14按入库数量查询
在“入库数量”字段的“条件”行中输入:
>=[请输入入库数量下限值]And<=[请输入入库数量上限值]
③创建“按入库日期查询”。
与上一个查询一样,通过创建参数查询来创建“按入库日期查询”,如图15所示。
在设计视图中设置相应的“条件”行:
>=[请输入日期上限值(****-**-**)]And<=[请输入日期下限值(****-**-**)]
建立查询后,以所建查询为数据源,创建“按入库数量查询”和“按入库日期查询”窗体,以便更好显示查询结果。
图15按日期查询窗口
(3)创建查询控制窗体
①创建如图16所示的“入库查询控制窗体”。
该窗体主要有入库信息显示区和查询控制区。
查询控制区共有3个命令按钮。
图16入库信息查询窗口
②创建入库查询宏组,创建后的宏组如图17所示。
设置宏组中4个宏打开相对应的4个窗体“入库单查询主窗体”、“入库单信息高级查询”、“按入库数量查询”和“按入库日期查询”。
最后保存宏组为“查入库单”。
图17入库单查询宏窗口
③设置“入库单查询主窗体”窗体中命令按钮的“单击”事件,在设计视图中打开窗体“入库单查询主窗体”,如图17所示。
④单击选中“高级查询”命令按钮,调出“属性”对话框,单击“事件”选项卡,从“单击”下拉列表中选中“查入库单.打开入库信息高级查询窗体”,如图18所示。
⑤用同样的方法,将“按入库数量查询”和“按入库日期查询”命令按钮的“单击”事件分别设置为“查入库单.打开入库数量查询”和“查入库单.打开入库日期查询”。
图18设置按钮单击事件
7.报警处理
报警处理主要将“库存表”中的“库存数量”与“最高储备”进行比较,当“库存数量”高于“最高储备”时,显示这些需要报警商品的相关信息。
(1)建立报警查询
由于报警查询中需要计算“库存数量”与“最高储备”的差。
因此,可通过创建计算查询来建立报警查询。
①在数据库窗口的“对象”列表框中选中“查询”选项,双击“使用向导创建查询”。
②在“表/查询”下拉列表框中选择“表:
库存表”,选取除“最低储备”以外的全部字段,如图20所示。
图20建立报警查询
③单击【下一步】按钮两次,保存查询为“报警查询”,并选中“修改查询设计”单选按钮。
④单击【完成】按钮,在调出的“报警查询”设计视图中,添加一个计算字段“表达式1:
[库存表]!
[库存数量]-[库存表]!
[最高储量]”,在所加计算字段的“条件”行上输入条件“>0”,如图21所示保存查询。
图21报警查询设计视图
(2)创建报警报表
创建了报警查询后,以此查询为数据源创建一个报警报表,使其显示需要报警的消息。
①使用向导创建报表,调出“报表向导”窗口。
②在“表/查询”下拉列表框中选择“报警查询”,选取全部字段。
③单击【下一步】按钮,确认是否添加分组级别,该报表不分组。
④单击【下一步】按钮,以“库存数量”降序排序。
⑤单击【下一步】按钮,确定布局及方向为“表格”、“纵向”。
⑥单击【下一步】按钮,确定报表采用的样式为“组织”。
⑦单击【下一步】按钮,指定报表的名称,并选中“修改报表设计”单选按钮,单击【完成】按钮。
⑧在“报警表”设计视图中,修改报表设计,如图22所示。
图22报警表设计视图
(3)创建报警窗体
报警处理只要打开报警表,显示相应的报警信息就可以了。
在报警之前应判断查询结果是否有需要报警的商品。
实现这一功能的代码如下:
PrivateSubForm_Open(CancelAsInteger)
WithCodeContextObject
rrr="[报警查询]!
[商品代码]<>Null"
DoCmd.ApplyFilter"uuu",rrr
If(.RecordsetClone.RecordCount>0)Then
MsgBox"有需要报警的产品!
!
!
",vbOKOnly,"提示框"
DoCmd.Close
DoCmd.OpenReport"报警表",acViewPreview
Else
MsgBox"没有需要报警的产品!
",vbOKOnly,"提示框"
DoCmd.Close
EndIf
EndWith
EndSub
为了能够在打开报警表之前运行这一代码,建立一个报警临时窗体,将上述代码放到该窗体的“打开”事件中,如图23所示。
这样当打开该窗体时,就可以运行这段代码。
这里,报警临时窗体的作用就是运行该代码,窗体中无任何设置。
(4)催货处理
与报警处理相似,催货处理是将“库存表”中的“库存数量”与“最低储备”进行比较,当“库存数量”低于“最低储备”时,显示这些需要催货商品的相关信息。
实现催货处理功能的步骤如下。
①建立一个催货查询,设计结果如图24所示。
图23报警临时窗体
图24崔货查询
②使用向导创建一个催货报表,报表数据源为“催货查询”,如图25所
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 课程设计 指导书 ACCESS