资源描述
管理信息系统课程设计报告超市门店进销存管理系统
41
2020年5月29日
文档仅供参考
目 录
1. 系统背景资料………………………………………………………………1
(1)组织结构………………………………………………………………….1
(2)业务功能………………………………………………………………….1
(3)管理功能………………………………………………………………….1
(4)业务功能与组合结构的关系……………………………………………..1
(5)前台销售处理流程………………………………………………………..1
(6)后台进货、库存、销售管理流程………………………………………..2
2.目标系统需求分析………………………………………………………….2
(1)系统目标………………………………………………………………….2
(2)系统输入、输出信息分析……………………………………………….2
(3)进销存数据处理流程…………………………………………………….2
(4)数据类需求分析………………………………………………………….3
3.目标系统设计………………………………………………………………4
(1)系统功能结构设计………………………………………………………4
(2)系统数据库设计…………………………………………………………..4
(3)系统主要功能模块设计………………………………………………….6
4.系统实施…………………………………………………………………….7
(1)系统运行环境说明………………………………………………………..7
(2)系统主要功能模块界面和代码……………………………………………7
5.系统操作说明…………………………………………………………………23
(1)系统运行环境………………………………………………………………23
(2)系统安装文件………………………………………………………………23
(3)系统功能说明………………………………………………………………23
附录:课程设计分工说明………………………………………………………..24
1.系统背景资料
本系统应用背景为一家中小超市门店。
(1)组织结构
该门店规模较小,其组织结构关系如图:
店长
销售部门
店长助理
图1 组织结构关系图
(2)业务功能
业务功能主要包括:进货、销售和库存/盘点管理。
(3)管理功能
门店管理
进货
销售
库存管理
前台
后台
图2 管理功能结构图
(4)业务功能与组合结构的关系
业务功能与组织结构的关系如表所示。
进货
销售
库存/盘点
店长
★
★
★
店长助理
▲
▲
▲
销售部门
▲
▲
表1 业务功能与组织结构的关系表
注:表中”★”表示该项业务是对应组织的主要业务;”▲”表示该组织是参加协调该项业务的。
(5)前台销售处理流程
图3 POS前台销售处理流程
(6)后台进货、库存、销售管理流程
图4 后台进货、库存、销售管理流程
2.目标系统需求分析
(1)系统目标
本仿真系统的设计目标是:
① 能经过键盘录入当前的销售商品和实收金额、采购清单、验货单;
② 自动结算应收金额和找零金额;
③ 打印购物小票并更新库存;
④ 能查询商品销售信息、采购清单、库存信息、验货单;
⑤ 能根据验货单确认采购清单并更新库存。
(2)系统输入、输出信息分析
输入信息有:当前销售商品信息、实收金额、入库商品信息。
输出信息有:购物小票、销售情况表和库存情况表。
(3)进销存数据处理流程
图5 进销存数据处理流程图(顶层)
图6 进销存数据处理流程图(第二层)
(4)数据类需求分析
数据类需求分析步骤如下:
第一,依据系统实体确定基本数据类;
第二,依据新系统数据处理流程补充数据类。
系统包括的主要实体有:顾客、收款员、POS机、小票、商店、商品、购物篮、仓库。
实体联系图(E-R图)如图所示:
图7 POS系统实体联系图
得到系统的关系结构如下:
①当前销售商品信息表(商品代号,商品名称,单价,数量,金额,总计,实收,找零,时间,收款员代号,单据号);
②基本信息表(商店号,机号,礼貌语1,礼貌语2,提示语1,提示语2);
③历史销售商品信息表(商品代号,商品名称,单价,数量,金额,总计,实收,找零,时间,收款员代号,单据号);
④商品词典表(商品代号,商品名称,单价);
⑤收款员表(收款员代号,收款员姓名,口令);
⑥运行参数表(单据号);
⑦出库表(出库单编号,商品编号,数量,录入,审核,客户,出库时间);
⑧历史出库表(出库单编号,商品编号,数量,录入,审核,客户,出库时间);
⑨入库表(入库单编号,商品编号,供应商,数量,单价,录入,审核,入库时间);
⑩历史入库表(入库单编号,商品编号,供应商,数量,单价,录入,审核,入库时间);
库存表(商品编号,商品名称,分类,单位,数量,库存底线,备注)。
3.目标系统设计
(1)系统功能结构设计
图8 系统功能结构设计
(2)系统数据库设计
根据E-R图得到系统基本关系如下:
顾客(顾客代号);
收款员(收款员代号,收款员姓名,口令);
POS机(机号,品名,厂家)
小票(单句号,日期,时间,收款员代号,机号,商店名称,购物信息,礼貌语,提示语);
商店(商店号,商店名称);
商品(商品代号,商品名称,单价);
购物篮(顾客代号,商品代号,数量,金额);
付款结算(顾客代号,实收,应收,找零);
仓库(仓库代号,仓库名称)。
根据数据处理流程得到补充关系:销售情况表(历史购物信息)。
系统需要构建的数据表主要有出库表、入库表、库存表、基本信息表、商品词典表、收款员表、运行参数表、销售商品表(历史商品、当前商品)具体参数设置如下:
字段名
类型
宽度
小数位数
索引
说明
入库单号
字符型
10
有
商品编号
字符型
13
采用标准型EAN代码
供应商
字符型
8
数量
数值
整型
单价
货币
8
自动
录入
字符型
8
审核
字符型
8
入库时间
日期/时间
8
表2入库表的数据结构
字段名
类型
宽度
小数位数
收款员代号
字符型
3
收款员姓名
字符型
8
口令
字符型
6
表3 收款员表的数据结构
字段名
类型
宽度
小数位数
单据号
字符型
8
表4 运行参数表的数据结构
字段名
类型
宽度
小数位数
索引
说明
出库单编号
字符型
10
有
商品编号
字符型
13
采用标准型EAN代码
数量
数值
整型
录入
字符型
8
审核
字符型
8
客户
字符型
8
出库时间
日期/时间
8
表5出库表的数据结构
字段名
类型
宽度
小数位数
商品代号
字符型
10
商品名称
字符型
20
单价
数值型
12
2
表6 商品词典表的数据结构
字段名
类型
宽度
小数位数
商品代号
字符型
10
商品名称
字符型
20
单价
数值型
12
2
数量
整型
4
金额
数值型
12
2
总计
数值型
12
2
实收
数值型
12
2
找零
数值型
12
2
时间
日期时间型
8
收款员代号
字符型
3
单据号
字符型
8
表7 当前销售商品信息表的数据结构
字段名
类型
宽度
小数位数
商品号
字符型
4
商店名称
字符型
30
机号
字符型
2
礼貌语1
字符型
30
礼貌语2
字符型
30
提示语1
字符型
30
提示语2
字符型
30
表8 基本信息表的数据结构
字段名
类型
宽度
小数位数
索引
说明
商品编号
字符型
13
有
采用标准型EAN代码
商品名称
字符型
50
分类
字符型
1
A.B.C分类
单位
单位
8
计量单位
数量
数值
整型
库存底线
数值
整型
备注
文本
50
表9 库存表的数据结构
(3) 系统主要功能模块设计
² 总控模块程序结构
图9 总控模块程序结构图
图10 系统菜单结构图
² 商品销售模块程序结构
图11 商品销售模块程序结构图
² 小票样式
图12 小票样式
² 库存管理模块程序结构
图13 验收到货模块程序结构图
4.系统实施
(1)系统运行环境说明
操作系统:Windows /XP/Vista
数据管理系统:ACCESS
编程语言:VB 6.0
(2)系统主要功能模块界面和代码
1. 总控制模块程序设计
² 系统总控模块程序
1)窗体对象 FrmInit
属性:
Name: FrmInit
Borderstyle:0-Zone
Picture:D:\Pos System\享受大自然风景宽屏壁纸
StarUpPosition:2-屏幕中心
代码:
Public COVER As Boolean
Private Sub Form_Initialize()
Me.Label1.Top = Me.Height - 400
Me.Label1.Left = (Me.Width - Me.Label1.Width) / 2
Me.Label2.Top = (Me.Height + 800)
Me.Label2.Left = (Me.Width - Me.Label2.Width) / 2
Me.Label1.Visible = False
Me.Label2.Visible = False
End Sub
Private Sub Form_Load()
Dim nobtime As Integer
nobtime = 0
End Sub
2)计时器对象Timer1
属性:Interval:60
代码:
Private Sub Timer1_Timer()
If nobtime = 0 Then
nobtime = 1
Me.Label1.Visible = True
Me.Label2.Visible = True
End If
If Me.Label1.Top - 1500 > 0 Then
Me.Label1.Top = Me.Label1.Top - 20
Me.Label2.Top = Me.Label2.Top - 20
Else
Unload Me
COVER = True
End If
End Sub
² 系统封面表单设计
系统封面表单界面,如图所示,运行时字幕由下向上慢慢上升。
图14 系统封面
² 系统登录表单设计
系统登录表单界面,如图所示:
图15 系统登录界面
代码:
Option Explicit '强制变量声明
Public OK As Boolean
Dim txtSQL As String
Dim mrc As ADODB.Recordset
Dim MsgText As String
Private Sub Form_Load()
Dim i As Integer
i = 0
txtSQL = "select * from 收款员表"
Set mrc = ExecuteSQL(txtSQL, MsgText)
With txtUserName
Do While Not mrc.EOF
i = i + 1
.AddItem Trim(mrc.Fields("收款员姓名"))
mrc.MoveNext
Loop
.ListIndex = 0
End With
mrc.Close
OK = False
End Sub
Private Sub cmdCancel_Click()
OK = False
Me.Hide
End Sub
Private Sub cmdOK_Click()
txtSQL = "select * from 收款员表 where 收款员姓名 = '" & txtUserName.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = True Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
If Trim(mrc.Fields("口令")) = Trim(txtPassword.Text) Then
OK = True
Me.Hide
UserName = Trim(txtUserName.Text)
UserOrder = mrc.Fields("收款员代号")
mrc.Close
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
End If
End If
End Sub
Private Sub txtPassword_Change()
End Sub
Private Sub txtUserName_Click()
txtPassword.Text = ""
End Sub
² 系统菜单设计
系统菜单采用菜单编辑器来完成:
图16-1 系统菜单编辑器
图16-2 系统菜单
代码:
Private Sub MDIForm_Load()
StatusBar1.Panels.Item(1) = "正在运行中"
End Sub
Private Sub munbasic_Click()
基本信息库.Show
End Sub
Private Sub munbillquery_Click()
按单据号查询.Show
End Sub
Private Sub muncodequery_Click()
按商品代号查询.Show
End Sub
Private Sub mundictionary_Click()
商品词典.Show
End Sub
Private Sub munparameter_Click()
运行参数.Show
End Sub
Private Sub munpos_Click()
收款员库.Show
End Sub
Private Sub munquit_Click()
End
End Sub
Private Sub munsale_Click()
商品销售.Show
End Sub
Private Sub 出库表_Click()
frm出库表.Show
End Sub
Private Sub 库存查询_Click()
Form1.Show
End Sub
Private Sub 入库表_Click()
frm入库表.Show
End Sub
2. 初始化模块设计
² 基本信息表单运行界面,如图所示:
图17 基本信息表
² 收款员表单运行界面
如图所示:
图18 收款员表
² 商品词典表单运行界面
如图所示:
图19 商品词典表
² 运行参数表单运行界面
如图20所示:
图20 运行参数表
3. 商品销售模块设计
² 商品销售表单
商品销售表单如图21所示:
图21 商品销售
代码:
Dim txtSQL As String
Dim mrc As ADODB.Recordset
Dim rec As ADODB.Recordset
Dim MsgText As String
Private Sub Combo1_Click()
txtSQL = "select * from 商品词典表 where 商品代号 = '" & Combo1.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText) '执行查询语句
With MSHFlexGrid1 '将查询内容显示在表格控件中
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = mrc.Fields(0) & ""
.TextMatrix(.Rows - 1, 1) = mrc.Fields(1) & ""
.TextMatrix(.Rows - 1, 2) = mrc.Fields(2) & ""
End With
Text3.Text = mrc.Fields(2)
mrc.Close '关闭数据集
End Sub
Private Sub Command1_Click()
Dim Order As Integer
If Text5 = "" Then
MsgBox "实收不能为空!", vbOKOnly, "提示"
Text5.SetFocus
Exit Sub
End If
If Text1 = "" Then
MsgBox "总计不能为空!", vbOKOnly, "提示"
Exit Sub
End If
txtSQL = "select 单据号 from 运行参数表"
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.MoveLast
Order = mrc.Fields("单据号")
mrc.AddNew
mrc.Fields(0) = Order + 1
Order = mrc.Fields(0)
mrc.Update
mrc.Close
txtSQL = "select 商品代号,商品名称,单价,数量,金额,总计,实收,找零,时间,收款员代号,单据号 from 当前销售商品信息表"
Set mrc = ExecuteSQL(txtSQL, MsgText)
With MSHFlexGrid1
For i = 2 To .Rows - 1
mrc.AddNew
mrc.Fields(0) = .TextMatrix(i, 0)
mrc.Fields(1) = .TextMatrix(i, 1)
mrc.Fields(2) = .TextMatrix(i, 2)
mrc.Fields(3) = .TextMatrix(i, 3)
mrc.Fields(4) = .TextMatrix(i, 4)
mrc.Fields(5) = Text1.Text
mrc.Fields(6) = Text5.Text
mrc.Fields(7) = Text6.Text
mrc.Fields(8) = Date
mrc.Fields(9) = UserOrder
mrc.Fields(10) = Order
mrc.Update
'将当前销售商品信息表复制到历史销售商品信息表
txtSQL = "select 商品代号,商品名称,单价,数量,金额,总计,实收,找零,时间,收款员代号,单据号 from 历史销售商品信息表"
Set rec = ExecuteSQL(txtSQL, MsgText)
rec.AddNew
For j = 0 To 10
rec.Fields(j) = mrc.Fields(j)
Next j
rec.Update
Next i
rec.Close
mrc.Close
MSHFlexGrid1.Clear
Text1 = ""
Text3 = ""
Text4 = ""
Text5 = ""
Text6 = ""
End With
End Sub
Private Sub Command2_Click()
'打印单据报表
DataReport1.Show
'清空当前销售商品信息表
txtSQL = "select 商品代号,商品名称,单价,数量,金额,总计,实收,找零,时间,收款员代号,单据号 from 当前销售商品信息表"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Do While Not mrc.EOF
mrc.Delete
mrc.MoveNext
Loop
mrc.Close
End Sub
Private Sub Command3_Click()
Unload Me
End Sub
Private Sub Form_Load()
Dim i As Integer
i = 0
txtSQL = "select * from 商品词典表"
Set mrc = ExecuteSQL(txtSQL, MsgText)
With Combo1
Do While Not mrc.EOF
i = i + 1
.AddItem Trim(mrc.Fields("商品代号"))
mrc.MoveNext
Loop
End With
mrc.Close
With MSHFlexGrid1
.Rows = 2
.CellAlignment = 5
.ColWidth(0) = 1500
.ColWidth(1) =
.ColWidth(2) = 1200
.ColWidth(3) = 1200
.ColWidth(4) = 1500
.TextMatrix(1, 0) = "商品代号"
.TextMatrix(1, 1) = "商品名称"
.TextMatrix(1, 2) = "单价"
.TextMatrix(1, 3) = "数量"
.TextMatrix(1, 4) = "金额"
End With
Text1.Enabled = False
Text3.Enabled = False
Text6.Enabled = False
End Sub
Private Sub Text4_Change()
If Text4 <> "" Then
With MSHFlexGrid1
.TextMatrix(.Rows - 1, 3) = Text4.Text
.TextMatrix(.Rows - 1, 4) = Text3.Text * Text4.Text
Text1.Text = Val(Text1.Text) + Val(.TextMatrix(.Rows - 1, 4))
End With
End If
End Sub
Private Sub Text5_Change()
If Text5 <> "" Then
Text6.Text = Text5.Text - Text1.Text
End If
End Sub
² 单据表单
小票样式,如图所示:
图22 单据表单
4. 销售商品信息查询模块设计
² 按商品代号查询表单
如图所示:
图23 按商品代号查询表单
代码:
Dim txtSQL As String
Dim mrc As ADODB.Recordset
Dim MsgText As String
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_Load()
With MSHFlexGrid1
.Rows = 2
.CellAlignment = 7
.ColWidth(0) = 1500
.ColWidth(1) =
.ColWidth(2) = 1200
.ColWidth(3) = 1200
.ColWidth(4) = 1500
.ColWidth(5) = 2500
.ColWidth(6) = 1200
End With
End Sub
Private Sub Text1_Change()
MSHFlexGrid1.Clear
txtSQL = "select 商品代号,商品名称,单价,数量,金额,时间,收款员代号 from 历史销售商品信息表"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Do While Not mrc.EOF
If mrc.Fields("商品代号") = Text1.Text Then
With MSHFlexGrid1 '将查询内容显示在表格控件中
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = mrc.Fields(0) & ""
.TextMatrix(.Rows - 1, 1) = mrc.Fields(1) & ""
.TextMatrix(.Rows - 1, 2) = mrc.Fields(2) & ""
.TextMatrix(.Rows - 1, 3) = mrc.Fields(3) & ""
.TextMatrix(.Rows - 1, 4) = mrc.Fields(4) & ""
.TextMatrix(.Rows - 1, 5) = mrc.Fields(5) & ""
.TextMatrix(.Rows - 1, 6) = mrc.Fields(6) & ""
.TextMatrix(1, 0) = "商品代号"
.TextMatrix(1, 1) = "商品名称"
.TextMatrix(1, 2) = "单价"
.TextMatrix(1, 3) = "数量"
.TextMatrix(1, 4) = "金额"
.TextMatrix(1, 5) = "时间"
.TextMatrix(1, 6) = "收款员代号"
End With
End If
mrc.MoveNext
Loop
mrc.Close
End Sub
² 按单据号查询表单
如图所示:
图24 按单据号查询表单
代码:
Private Sub Text1_Change()
MSHFlexGrid1.Clear
txtSQL = "select 商品代号,商品名称,单价,数量,金额,时间,单据号 from 历史销售商品信息表"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Do While Not mrc.EOF
If mrc.Fields("单据号") = Text1.Text Then
With MSHFlexGrid1 '将查询内容显示在表格控件中
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = mrc.Fields(0) & ""
.TextMatrix(.Rows - 1, 1) = mrc.Fields(1) & ""
.TextMatrix(.Rows - 1, 2) = mrc.Fields(2) & ""
.TextMatrix(.Rows - 1, 3) = mrc.Fields(3) & ""
.TextMatrix(.Rows - 1, 4) = mrc.Fields(4) & ""
.TextMatrix(.Rows - 1, 5) = mrc.Fields(5) & ""
.TextMatrix(.Rows - 1, 6) = mrc.Fields(6) & ""
.TextMatrix(1, 0) = "商品代号"
.TextMatrix(1, 1) = "商品名称"
.TextMatrix(1, 2) = "单价"
.TextMatrix(1, 3) = "数量"
.TextMatrix(1, 4) = "金额"
.TextMatrix(1, 5) = "时间"
.TextMatrix(1, 6) = "单据号"
End With
End If
mrc.MoveNext
Loop
mrc.Close
End Sub
5. 库存管理模块设计
² 商品入库
图25 商品入库
代码:
Private Sub cmdAdd_Click()
Data1.Recordset.AddNew
End Sub
Private Sub cmdDelete_Click()
'如果删除记录集的最后一条记录
'记录或记录集中唯一的记录
Data1.Recordset.Delete
Data1.Recordset.MoveNext
End Sub
Private Sub cmdRefresh_Click()
'这仅对多用户应用程序才是需要的
Data1.Refresh
End Sub
Private Sub cmdUpdate_Click()
Data1.UpdateRecord
Data1.Recordset.Bookmark = Data1.Recordset.LastModified
End Sub
Private Sub cmdClose_Click()
Unload Me
End Sub
Private Sub Data1_Error(DataErr As Integer, Response As Integer)
'这就是放置错误处理代码的地方
'如果想忽略错误,注释掉下一行代码
'如果想捕捉错误,在这里添加错误处理代码
MsgBox "数据错误事件命中错误:" & Error$(DataErr)
Response = 0 '忽略错误
End Sub
Private Sub Data1_Reposition()
Screen.MousePointer = vbDefault
On Error Resume Next
'这将显示当前记录位
展开阅读全文