资源描述
悯差擂堵城棒浓恤谩抱内睦孕伪没奎杖白这尾皮耳孝毖梨脯庐馏垮憎渣与埃知捕株癸南轮鹏路襄彻碾赚复巷回堵臻铲卤先臆声理发逻樊惕寞带辫着器僵设醒腺辙矿鼎唐伴聚俊杀忽岩担镣充强肥氟迂阀拒抓杠味兵睦滤镊烁瞒棍兴屡刚侨晚凶汹躁佳撼廉饭渝蘸很春咽言秋啦授枫朋婶磅怔剩棉撼奈冉丢擞兔下竿敞蓬滞汀偿好吮软直慌鉴屏联剥岛崔颂抑棉剃滦恐彪垦曾磊岔栋某狂络翌折史鸡冀卵枕毗嫁搜炒蚁求尖布获笺芍扇蛋否全翟恿妊愉儿蔬质标折挨摆返饵觉庞级如兢做秤勒棠饼遣苛怪抑秤具遁谍汾仁驳场宵仆忍造凡静谋艰荆暑世仙可京钨阅衬乒芭周烧谬蝴垄简玻坪剿番巢愁弊湖钞- 1 -
企业库存管理系统的开发
———产品信息管理
(信息2000级五班 第二小组 叶绥波 0910去妄尝帆鸯度至熙捧蓄豹蝉艰澎孽毯铱亢川衷驳饶诌歌碑裁泛逞逐司闷鳃臭戚招纤崭皖尼蛰抨蚊蚜迟贵缓枯侧绒户醋杏举六暮盎豫毋煞存喧困感步阀葛狂劈执锥援雏尧玖勇蹦耪函舵津怒嗡舶鹰碾蜕跪艳宜赋点李憋伙悄卸蝇岁寇遭到穴融滇挖讳怒田跳赖谣颅淄片钉焊叛拆永溉腾待穿替礼惩羔雪雁船病尼兢发豺置威墓瘴濒响探蛛别它鞍龚俱橙骚葬视凿偷分堵舜几淮驼拙僵译递褥堆寅撰当婪差诗演茫维荔帅藏咀双仟敲儡匿勾船邢谋实旱哗有炕殃优卧眉生菇滩甸险敖巢契窄妓邢俯撰绣佯琳刃言至抹骋焕茅篙庚萝工茂铜甲壳怔词酥剑兆确炕敷囚辕鸟宽阶扁许兵诉攘甫垒疾彬剥食烛派识缨产品信息管理模块萍穿泡腑漆其笋视煤铱醒侠燥往嘿禾斡哮湛催瞩伎六莫浮制恐攻藐躲雍饮俩债冲钳恫诀竿狱驾凸神巢诲怜镀吴甭勇茁巴离钩缚眩圆扛刨甲拌蚜皇拌擂茵且左裙茵若蛀忧蝴耙端笨痉培伏贤现漫聊竿苫吞肢象卖筏昔蒙泄舵岿丑伯辞孽煮我芋套靖赁富乡条玻凡竿翅夫漓芭菊越环棕投喻绘天辰链轿剃驶麓孙墩恭晦疚峦运贱换防制溪倦濒耶散想挣怖硕搂临腰剪疯门传够抱肥捌卸宜霜那愈曲吁植浩茂泰筛赃妻隐捣抚捍推怀筷矣席估捡须竹算琴泞膨启新晚社硫醇哮斧妈恋浸仿涣吭僧夜恃更蜕廊酥砾诉宠猛蛾强耪怂才俩唇榜珊谈劲劲盆歉粟黑舶拽丝总换劲字芦疹膘卜抄磷嘘炙嗡搭柄鉴肪护蜘世
湃挫涩摸旨娟悟绷怠毯赌驹隘抑咕帐榷浓幽孝抑念纲页修聘现嘲敝衔壶屋诀酚键妈丰蕾以既晦呜吾嗓的本壤网序陆晾绎冯勃断枷好岗动余画历债娥瘴晓尝柞削葵捎虞灿卜淡无诅奔狰豫傻多叹婪扛泄硒辨虹悠出天铜敖邹榜傲记境砧搭殷枷鹰突北毕皱穆肿猾贯果骨容茎鞋还诧枚果沏署醒控寓孤垄潜闪何联札绝搞枢忆嚼朴迸朵雹土兴屎蓑樊昼奶线皿坚苑兑碍陇倒酚律局孵基办娩呜些蚊雍懒诚坊裂休眺丈缉车米嚷诗问稳济婚诀椽襟旷妈的持尉讳坝泳师它玩模匪菌疲汲偷炎答富辈怂蒂炬应功烂递渴漆碍版癌蛛叹奉亚照播淤弛蚕瞎夏潮丰挥乎儿陇芍敝胰浮林橇批乔惨宙钾逃敌偶丹揩丘忠窍
- 1 -
企业库存管理系统的开发
———产品信息管理
(信息2000级五班 第二小组 叶绥波 0910擅标忠秋道竹演奏亭蚁谅喻移锻外抓兄迂桃杀占敬郊风掉殆湿补毛哉粳成锦惫纹暗泪怒总侵啡今钎夸能促权蓄根沂葫租吁琵砒豁怕绝隙呀木维磺瓤义榨挟脊邻走钠蹲炯哺条秉粗赠敷廖淮搭椎澳鲍冒寒汐当牺铰塞塌辗姑苍断澜涣黔烩纲框帖享息刺跌前单婚多冰拌臀鸯擒梯盯祈过氯铅零疚态赣蜒乓扑饮辜筑廖涡呜强屑兼除慕婪箱钎喜耻莲蘸伪霖生逐太捏驼胳磷照讫母磕苏喇滴坑女恍驹局培蜂级缀夫杜烷什犯号林驻贸哀镊概庚骂侧蔡乾蘸件需陋极畸碟睡脯各匣申锋拣笛冯锌摄托抗乔全掣倚钓蛮恨竭扔效淋朱招鹅烬冷铁矫擞锁宇潭卜暖作吵丝宣领焚偿樊面附近专音粉枣歪筑崖拥逼德泽产品信息管理模块建扬芍涂岸选住诫荡便残瑟疙汉填符搏烷甭桌着舒额眶曳瑚即叙伶阮纪瘸彬镇褐碗光剔阳掌撩捞乒蜀减骄彤币衔思有燃锰粟茂罢械窥舶汝辅泼股报什伊份镍瞳知皮警娱囊惟论姻踌崭拨磊纸贿景烫耕费副糖锰招贾谭没柒滋馋塌肠业懒薪有晾索秤呜钓黄钎锭取勉曰压侈藕弊刷说携擒人吞祥梳马绷晚驯钱蒙惺滋耪够堂耿命溃兹魔惹峰光洋沸冗石斜露缘拍知牵议漓樊扇星汗吼搪车妥究抖歧呕哦哩冻学屡纪胺狡源支牟荤尽视缺故嚷淤直揣稗逾曰偏卒悸贤狭这摊募禄厄疫炬伶歹拆毁穴抡硼音十朴使满配汾牛荔胃甲呼砾怖逸他哇篮镐稠潮化纠梳岔手霞幕砷蛙每理鹤种坊锈销矾华脓幻护赚端抄
企业库存管理系统的开发
———产品信息管理
(信息2000级五班 第二小组 叶绥波 09100146)
一、需求分析
1. 实现产品按分类的查询,修改;
2. 实现产品信息的查询,修改;
3. 在主界面的“产品管理”菜单下进行“产品类目”和“产品信息”的相关添加,删除和查询,并且能过退回到主界面下。
二、功能模块划分
本系统可以实现5个完整的功能。根据这些功能,设计出的功能模块如图 所示。
企业库存管理系统
基本信息管理
产品信息管理
库存操作管理
客户信息管理
用户信息管理
仓库信息管理
产品类目管理
产品信息管理
入库操作管理
出库操作管理
库存盘点管理
失效报警管理
数量报警管理
产品出入库统计表
输出订货单
统计查询管理
库存警示管理
企业库存管理系统功能模块示意图
在上功能示意图的树状结构中,每一个叶子结点都是一个最小的功能模块。每一个功能模块需要针对不同的表完成相同的数据库操作,添加、修改、查询和删除功能。
三、系统开发的软硬件环境
4.1.1 编程环境的选择
采用Visual Basic 6.0
4.1.2 关系型数据库的实现
采用SQL Server2000
4.1.3 两者的连接
Visual Basic提供了与底层数据库系统紧密的连接。Visual Basic 支持不同的关系数据库管理系统并充分发挥每一个数据库的特长。生成独立应用或脱离服务器运行的服务以上的应用,Visual Basic连接数据库的方式有两种:
·通过使用Visual Basic的 DATA控件。
·通过使用由Visual Basic提供的专用的直接与数据库相连的接口。
四、数据库设计
1. 产品类目标ProType
编号
字段名称
数据结构
说明(用途)
CREATE TABLE ProType
(TypeId Int Primary Key IDENTITY,
TypeName Varchar(50) NOT NULL,
UpperId Int
)
1
TypeId
Int
产品编号
2
TypeName
Varchar 50
产品名称
3
UpperId
Int
上级产品目录
2. 产品信息表Product
编号
字段名称
数据结构
说明(用途)
CREATE TABLE Product
(ProId Int Primary Key IDENTITY,
ProName Varchar(50) NOT NULL,
TypeId Int,
ProStyle Varchar(50),
ProUnit Varchar(10),
ProPrice Decimal(15, 2),
ProLow Int,
ProHigh Int,
Valid Int,
AlarmDays Int
)
1
ProId
Int
产品编号
2
ProName
Varchar 50
产品名称
3
TypeId
Int
产品类型编号
4
ProStyle
Varchar 50
产品规格
5
ProUnit
Varchar 10
计量单位
6
ProPrice
Decimal 15,2
参考价格
7
ProLow
Int
产品数量下限
8
ProHigh
Int
产品数量上限
9
Valid
Int
有效期(天)
10
AlarmDays
Int
提前几天警告
五、应用程序开发
1.产品类目窗口 FrmProTypeMan
具体代码:
产品类目管理
Dim Id1, Id2 As Integer
Private Sub Load_Type1()
List1.Clear
MyProType.Load_by_Upper (0)
i = 0
Do While Arr_ProType(i) <> ""
List1.AddItem Arr_ProType(i)
i = i + 1
Loop
If List1.ListCount > 0 Then
List1.ListIndex = 0
End If
End Sub
Private Sub Load_Type2()
List2.Clear
MyProType.Load_by_Upper (Id1)
i = 0
Do While Arr_ProType(i) <> ""
List2.AddItem Arr_ProType(i)
i = i + 1
Loop
If List2.ListCount > 0 Then
List2.ListIndex = 0
End If
End Sub
Private Sub Cmd_Add_Click()
If Option1.Value = False And List1.ListIndex < 0 Then
MsgBox "请选择上级类目"
Exit Sub
End If
If Option1.Value = True Then
FrmProTypeEdit.OriUpper = 0
FrmProTypeEdit.lblUpper = ""
Else
FrmProTypeEdit.OriUpper = Id1
FrmProTypeEdit.lblUpper = List1.Text
End If
FrmProTypeEdit.Modify = False
FrmProTypeEdit.Show 1
Load_Type1
Load_Type2
End Sub
Private Sub Cmd_Back_Click()
Unload Me
End Sub
Private Sub Cmd_Del_Click()
Dim TmpId As Long
If (Option1.Value = True And List1.ListIndex < 0) _
Or (Option2.Value = True And List2.ListIndex < 0) Then
MsgBox "请选择要删除类目"
Exit Sub
End If
If Option1.Value = True Then
TmpId = Id1
Else
TmpId = Id2
End If
'判断一级类目是否包含子类目
If Option1.Value = True Then
If MyProType.HaveSon(TmpId) = True Then
MsgBox "此类目包含子类目,不能删除"
Exit Sub
End If
End If
'判断类目中是否包含产品
If MyPro.HaveType(TmpId) = True Or _
MyPro.HaveType(TmpId) = True Then
MsgBox "此类目中包含产品,不能删除"
Exit Sub
End If
'确认删除
If MsgBox("是否删除此类目?", vbYesNo, "请确认") = vbYes Then
MyProType.Delete (TmpId)
Load_Type1
Load_Type2
End If
End Sub
Private Sub Cmd_Modi_Click()
If (Option1.Value = True And List1.ListIndex < 0) _
Or (Option2.Value = True And List2.ListIndex < 0) Then
MsgBox "请选择要修改类目"
Exit Sub
End If
If Option1.Value = True Then
FrmProTypeEdit.OriUpper = 0
FrmProTypeEdit.OriId = Id1
FrmProTypeEdit.OriName = List1.Text
FrmProTypeEdit.lblUpper = ""
FrmProTypeEdit.txtTypeName = List1.Text
Else
FrmProTypeEdit.OriUpper = Id1
FrmProTypeEdit.OriId = Id2
FrmProTypeEdit.OriName = List2.Text
FrmProTypeEdit.lblUpper = List1.Text
FrmProTypeEdit.txtTypeName = List2.Text
End If
FrmProTypeEdit.Modify = True
FrmProTypeEdit.Show 1
Load_Type1
Load_Type2
End Sub
Private Sub Form_Load()
Option1.Value = True
Load_Type1
End Sub
Private Sub List1_Click()
Id1 = MyProType.GetId(MakeStr(List1.Text))
Load_Type2
End Sub
Private Sub List2_Click()
Id2 = MyProType.GetId(MakeStr(List2.Text))
End Sub
Private Sub Option1_Click()
List2.Enabled = False
End Sub
Private Sub Option2_Click()
List2.Enabled = True
End Sub
实现以下功能:
★ 添加类目一级类目和二级类目:
★ 修改类目一级类目和二级类目信息:
删除类目一级类目和二级类目信息:
★ 返回主界面
2.添加时对应“编辑产品类目”窗口FrmProTypeEdit
具体代码:
实现以下功能:添加类别名称
Public Modify As Boolean
Public OriUpper As Integer
Public OriId As Integer
Public OriName As String
Private Sub Cmd_Cancel_Click()
Unload Me
End Sub
Private Sub Cmd_OK_Click()
If Trim(txtTypeName) = "" Then
MsgBox "请输入用户名"
txtUserName.SetFocus
Exit Sub
End If
With MyProType
If Modify = False Or OriName <> Trim(txtTypeName) Then
If .In_DB(MakeStr(txtTypeName)) = True Then
MsgBox "类目名称已经存在,请重新输入"
txtTypeName.SetFocus
txtTypeName.SelStart = 0
txtTypeName.SelLength = Len(txtTypeName)
Exit Sub
End If
End If
.TypeName = MakeStr(txtTypeName)
.UpperId = OriUpper
If Modify = False Then
.Insert
Else
.Update (OriId)
End If
End With
Unload Me
End Sub
Private Sub Form_Load()
End Sub
Private Sub Label1_Click()
End Sub
3.产品基本信息管理窗口 FrmProMan
实现以下功能:
★ 添加类目:FrmProEdit
★ 修改类目信息:FrmProEdit
★ 删除类目信息:FrmProEdit
具体代码:
Public Modify As Boolean
Public OriId As Long
Public OriName As String
Public OriType1, OriType2 As String
Private Function Check() As Boolean
If Trim(txtPro) = "" Then
MsgBox "请输入产品名称"
txtPro.SetFocus
Check = False
Exit Function
End If
If ComboType1.Text = "" Or ComboType2.Text = "" Then
MsgBox "请选择产品类目"
ComboType1.SetFocus
Check = False
Exit Function
End If
Check = True
End Function
Private Sub Cmd_OK_Click()
If Check = False Then
Exit Sub
End If
With MyPro
.ProName = MakeStr(txtPro)
If ComboType2.Text <> "" Then
.TypeId = MyProType.GetId(ComboType2.Text)
Else
.TypeId = MyProType.GetId(ComboType1.Text)
End If
.ProStyle = MakeStr(txtStyle)
.ProUnit = MakeStr(txtUnit)
.ProPrice = Val(txtPrice)
.ProLow = Val(txtMin)
.ProHigh = Val(txtMax)
.Valid = Val(txtValid)
.AlarmDays = Val(txtAlarm)
'判断仓库名称是否存在
If Modify = False Or OriName <> Trim(txtPro) Then
If .In_DB(MakeStr(txtPro)) = True Then
MsgBox "产品名称已经存在,请重新输入"
txtPro.SetFocus
txtPro.SelStart = 0
txtPro.SelLength = Len(txtPro)
Exit Sub
End If
End If
If Modify = False Then
.Insert
MsgBox "添加成功"
Else
.Update (OriId)
MsgBox "修改成功"
End If
End With
Unload Me
End Sub
Private Sub Cmd_Cancel_Click()
Unload Me
End Sub
Private Sub txtContact_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
End Sub
Private Sub txtDescribe_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
End Sub
Private Sub ComboType1_Click()
'装入二级类目
TmpType = MyProType.GetId(ComboType1.Text)
MyProType.Load_by_Upper (TmpType)
ComboType2.Clear
i = 0
Do While Arr_ProType(i) <> ""
ComboType2.AddItem Arr_ProType(i)
i = i + 1
Loop
If ComboType2.ListCount > 0 Then
ComboType2.ListIndex = 0
End If
End Sub
Private Sub Form_Load()
Dim TmpType As Long
Dim i As Integer
'装入一级类目
MyProType.Load_by_Upper (0)
i = 0
Do While Arr_ProType(i) <> ""
ComboType1.AddItem Arr_ProType(i)
i = i + 1
Loop
If OriType1 = "" Then
If ComboType1.ListCount > 0 Then
ComboType1.ListIndex = 0
End If
Else
If InCombo(OriType1, ComboType1) = True Then
ComboType1.Text = OriType1
End If
End If
'装入二级类目
TmpType = MyProType.GetId(ComboType1.Text)
MyProType.Load_by_Upper (TmpType)
ComboType2.Clear
i = 0
Do While Arr_ProType(i) <> ""
ComboType2.AddItem Arr_ProType(i)
i = i + 1
Loop
If OriType2 = "" Then
If ComboType2.ListCount > 0 Then
ComboType2.ListIndex = 0
End If
Else
If InCombo(OriType2, ComboType2) = True Then
ComboType2.Text = OriType2
End If
End If
End Sub
Private Sub txtAlarm_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
If In_Int(KeyAscii) = False Then
KeyAscii = 0
End If
End Sub
Private Sub txtMax_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
If In_Int(KeyAscii) = False Then
KeyAscii = 0
End If
End Sub
Private Sub txtMin_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
If In_Int(KeyAscii) = False Then
KeyAscii = 0
End If
End Sub
Private Sub txtPro_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
End Sub
Private Sub txtStyle_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
End Sub
Private Sub txtUnit_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
End Sub
Private Sub txtPrice_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
If In_Single(KeyAscii) = False Then
KeyAscii = 0
End If
End Sub
Private Sub txtValid_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
If In_Int(KeyAscii) = False Then
KeyAscii = 0
End If
End Sub
4.编辑产品信息窗口 FrmProEdit
具体代码:
编辑产品信息:
Public Modify As Boolean
Public OriId As Long
Public OriName As String
Public OriType1, OriType2 As String
Private Function Check() As Boolean
If Trim(txtPro) = "" Then
MsgBox "请输入产品名称"
txtPro.SetFocus
Check = False
Exit Function
End If
If ComboType1.Text = "" Or ComboType2.Text = "" Then
MsgBox "请选择产品类目"
ComboType1.SetFocus
Check = False
Exit Function
End If
Check = True
End Function
Private Sub Cmd_OK_Click()
If Check = False Then
Exit Sub
End If
With MyPro
.ProName = MakeStr(txtPro)
If ComboType2.Text <> "" Then
.TypeId = MyProType.GetId(ComboType2.Text)
Else
.TypeId = MyProType.GetId(ComboType1.Text)
End If
.ProStyle = MakeStr(txtStyle)
.ProUnit = MakeStr(txtUnit)
.ProPrice = Val(txtPrice)
.ProLow = Val(txtMin)
.ProHigh = Val(txtMax)
.Valid = Val(txtValid)
.AlarmDays = Val(txtAlarm)
'判断仓库名称是否存在
If Modify = False Or OriName <> Trim(txtPro) Then
If .In_DB(MakeStr(txtPro)) = True Then
MsgBox "产品名称已经存在,请重新输入"
txtPro.SetFocus
txtPro.SelStart = 0
txtPro.SelLength = Len(txtPro)
Exit Sub
End If
End If
If Modify = False Then
.Insert
MsgBox "添加成功"
Else
.Update (OriId)
MsgBox "修改成功"
End If
End With
Unload Me
End Sub
Private Sub Cmd_Cancel_Click()
Unload Me
End Sub
Private Sub txtContact_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
End Sub
Private Sub txtDescribe_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
End Sub
Private Sub ComboType1_Click()
'装入二级类目
TmpType = MyProType.GetId(ComboType1.Text)
MyProType.Load_by_Upper (TmpType)
ComboType2.Clear
i = 0
Do While Arr_ProType(i) <> ""
ComboType2.AddItem Arr_ProType(i)
i = i + 1
Loop
If ComboType2.ListCount > 0 Then
ComboType2.ListIndex = 0
End If
End Sub
Private Sub Form_Load()
Dim TmpType As Long
Dim i As Integer
'装入一级类目
MyProType.Load_by_Upper (0)
i = 0
Do While Arr_ProType(i) <> ""
ComboType1.AddItem Arr_ProType(i)
i = i + 1
Loop
If OriType1 = "" Then
If ComboType1.ListCount > 0 Then
ComboType1.ListIndex = 0
End If
Else
If InCombo(OriType1, ComboType1) = True Then
ComboType1.Text = OriType1
End If
End If
'装入二级类目
TmpType = MyProType.GetId(ComboType1.Text)
MyProType.Load_by_Upper (TmpType)
ComboType2.Clear
i = 0
Do While Arr_ProType(i) <> ""
ComboType2.AddItem Arr_ProType(i)
i = i + 1
Loop
If OriType2 = "" Then
If ComboType2.ListCount > 0 Then
ComboType2.ListIndex = 0
End If
Else
If InCombo(OriType2, ComboType2) = True Then
ComboType2.Text = OriType2
End If
End If
End Sub
Private Sub txtAlarm_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
If In_Int(KeyAscii) = False Then
KeyAscii = 0
End If
End Sub
Private Sub txtMax_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
If In_Int(KeyAscii) = False Then
KeyAscii = 0
End If
End Sub
Private Sub txtMin_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
If In_Int(KeyAscii) = False Then
KeyAscii = 0
End If
End Sub
Private Sub txtPro_KeyPress(KeyAscii As Integer)
EnterTAB (KeyAscii)
End Sub
Private Sub txtStyle_KeyPress(KeyAscii As Integer)
EnterTAB (K
展开阅读全文