例如:超市某时间段销售流水记录如图 a 所示:
图a
在上表中关联次数最多的一对商品是“怡泉+C 柠檬味汽水330ml”和“统一ALKAQUA矿泉水570ml”,关联次数为2次。
编写 VB 程序,实现超市商品关联分析功能。运行程序,单击“读取销售数据”按钮 Cmd1, 从数据库文件中读取销售单号、商品编号、商品名称等信息,再单击“销售数据分析”按钮 Cmd2, 在文本框 Text1 中输出统计结果。程序运行界面如图b所示。
图b
请回答下列问题:
(1)如果同一单号中有5件不同商品,那么总共产生
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Const num = 100000'所有销售数据不超过 10 万条
Dim numk As Long'销售流水数据总条数 numk
Dim spmc(1 To 1000) As String'商品名称,不超过 1000 种
Dim dh(1 To num) As String ,bh(1 To num) As String'销售单号 dh,商品编号 bh
Dim n As Integer '商品种数n(n<1000)
Dim spgl(1 To num * 2) As Long'商品关联情况 spgl
Private Sub Cmd1_Click()
'从数据库文件中读入销售单号、商品编号、商品名称等信息,按销售单号升序分别保存在数组dh、bh、spmc 中,并统计出总销售数据数量 numk、商品种数 n,代码略
End Sub
Private Sub Cmd2_Click()
Dim i As Long, j As Long, k As Long, t As Long, p As Long, q As Long
Dim x As Integer, y As Integer, maxc As Integer, maxg As String, numc As Long
numc = 1001 : p = 1
numk = numk + 1 : dh(numk) = "00000"'结尾增加一单虚拟单号作为结束标记
For i = 2 To numk
If
q = i
If q - p > 1 Then
For j = p To q - 2
For k = j + 1 To q - 1
If bh(j) < bh(k) Then
x = Val(bh(j)) : y = Val(bh(k))
Else
y = Val(bh(j)) : x = Val(bh(k))
End If
If spgl(x) = 0 Then'该商品首次出现关联s
spgl(x) = numc
spgl(numc) = y: spgl(numc + 1) = 1: spgl(numc + 2) = 0
numc = numc + 3
Else
t = spgl(x)'查找该商品关联是否出现过
Do While
t = spgl(t + 2)
Loop
If spgl(t) = y Then
spgl(t + 1) = spgl(t + 1) + 1
Else
spgl(t + 2) = numc
spgl(numc) = y: spgl(numc + 1) = 1: spgl(numc + 2) = 0
numc = numc + 3
End If
End If
Next k
Next j
End If
p = q
End If
Next i
'查找并输出首次出现关联次数最多的一对商品及次数
maxc = 0
For i = 1 To n
t = spgl(i)
Do While t <> 0
If spgl(t + 1) > maxc Then
maxc = spgl(t + 1)
maxg = spmc(i) + "<-->" + spmc(spgl(t))
End If
Loop
Next i
Text1.Text = maxg + ",关联" + Str(maxc) + "次" End Sub
同类型试题
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2
y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2