我正在为我的 VB 课程做作业,我真的很难用它,我真的很感谢一些帮助、指示和/或示例。我不希望只给出确切的答案,但类似的例子会非常好。
该CSV
文件有 5 列,每列 25 行。主要的是我需要取最后两列并计算最后两行的标记,它们都是十进制整数,并将其放入输出中。换句话说,我有点需要合并这两列并将计算结果放在该列中。
这是作业:
应用程序标题:库存控制
目的:
此 Windows MDI 应用程序允许用户显示整个库存并计算售价,或显示库存中的选定项目及其售价。
程序:
从主文档中,用户将从菜单中选择 All 或 Select。相应的表格将显示在 MDI 窗口中。如果用户选择了所有,库存项目将简单地出现,按列排列,最后一列是售价。如果用户选择了选择,将出现一个选中的列表框,允许用户选择她希望查看的库存项目。然后,所选项目将显示在最后一列的售价中。然后,用户应该能够使用 File Exit 菜单项退出程序。
算法、处理和条件:
- 用户从“显示”菜单中选择他们想要显示库存的方式
- 将适当的表格加载到 MDI 中
- 程序从文件中读取数据
- 程序通过将成本乘以 1 加上加价百分比来计算售价。
- 该程序格式化标题和详细信息行,并在列表框中的列中显示信息。
程序要求:
- 必须使用多文档界面
- 必须为库存项目使用一个类
- 必须使用父 MDI 表单上的菜单
- 必须使用至少 1 个数组 OTHER,而不是您在读取记录时使用的 strRec 数组。
- 可以使用数组列表和列表来处理数据。
这是我到目前为止的代码:
Public Class frmMain
Private Sub mnuFileExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuFileExit.Click
'Close the program
Me.Close()
End Sub
Private Sub mnuHelpAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuHelpAbout.Click
'Simple help box
MessageBox.Show("Inventory control program. Version 1.0")
End Sub
Private Sub mnuInvenListAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuInvenListAll.Click
'Create the child form the form
Dim mdiChild1 As New frmAll
'Set form as parent.
mdiChild1.MdiParent = Me
'display the form as Show
mdiChild1.Show()
End Sub
Private Sub mnuInvenSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuInvenSelect.Click
'Create the child for the form
Dim mdiChild2 As New frmSelect
'Set form as parent.
mdiChild2.MdiParent = Me
'display the form as Show
mdiChild2.Show()
End Sub
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.LayoutMdi(MdiLayout.TileHorizontal)
End Sub
End Class
=-=-=-=-=
Imports System.IO
Imports System.Convert
Public Class frmAll
'Declare Streamreader
Private objReader As StreamReader
'Declare arrays to hold the information
Private strNumber(24) As String
Private strName(24) As String
Private strSize(24) As String
Private Sub frmAll_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Set objReader
objReader = New StreamReader("products.csv")
Call FillArray()
End Sub
Private Sub FillArray()
'Declare variables and arrays
Dim decCost(24, 1) As Decimal
Dim strFields() As String
Dim strRec As String
Dim intCount As Integer = 0
Dim chrdelim As Char = ToChar(",")
'Set strRec to read the lines
strRec = objReader.ReadLine
'Do while loop to fill array.
Do While strRec <> Nothing
strFields = strRec.Split(chrdelim)
strNumber(intCount) = strFields(0)
strName(intCount) = strFields(1)
strSize(intCount) = strFields(2)
decCost(intCount, 0) = ToDecimal(strFields(3))
decCost(intCount, 1) = ToDecimal(strFields(4))
'Set strRec to read the lines again
strRec = objReader.ReadLine
'increment the index
intCount += 1
Loop
Call Calculate(decCost)
End Sub
Private Sub Calculate(ByVal numIn(,) As Decimal)
'Define arrays to hold total cost
Dim decRowTotal(24) As Decimal
'Define variables to hold the counters for rows and columns
Dim intR As Integer
Dim intC As Integer
'Calcualte total cost
For intC = 0 To numIn.Length
For intR = 0 To decRowTotal.Length
decRowTotal(intR) += numIn(intR, intC) * 1
Next
Next
Call Output(numIn, decRowTotal)
End Sub
Private Sub Output(ByVal NumIn(,) As Decimal, ByVal RowTotalIn() As Decimal)
Dim strOut As String
Dim intR As Integer = 0
Dim intC As Integer = 0
strOut = "ID" & vbTab & "Item" & vbTab & "Size" & vbTab & "Total Price" & vbCrLf & vbCrLf
For intR = 0 To 24
strOut &= strNumber(intC) & vbTab
strOut &= strName(intC) & vbTab
strOut &= strSize(intC) & vbTab
For intC = 0 To 1
strOut &= NumIn(intR, intC).ToString
Next
strOut &= vbTab & RowTotalIn(intR) & vbCrLf
Next
rtbAll.Text = strOut
End Sub
End Class
-=-=-=-=-=
'Imports
Imports System.IO
Imports System.Convert
Public Class InventoryItems
'Declare ItemList Array
Private ItemList As New ArrayList
'IItem declared as new Object.
Private IItem As New Object
Public Function Reader() As ArrayList
'Declare variables for reading the file.
Dim chrDelim As Char = Convert.ToChar(",")
Dim strRec As String
Dim strFields() As String
Dim objReader As StreamReader
objReader = New StreamReader("products.csv")
strRec = objReader.ReadLine
'Declares a new instance of the InvenItems class
'and stores each of the items in their own instance
'of the class
Do While strRec <> Nothing
IItem = New InvenItems
strFields = strRec.Split(chrDelim)
IItem.Number = strFields(0)
IItem.Name = strFields(1)
IItem.Size = strFields(2)
IItem.Price = ToDecimal(strFields(3))
IItem.MarkUp = ToDecimal(strFields(4))
ItemList.Add(IItem)
strRec = objReader.ReadLine
Loop
Return ItemList
End Function
Public Class InvenItems
'Declare class variables.
Private strNumber As String
Private strName As String
Private strSize As String
Private decCost As Decimal
Private decMarkUp As Decimal
'Create constructor
Public Sub New()
End Sub
'Create override function
Public Overrides Function ToString() As String
Return strNumber
End Function
'Create property for Number.
Public Property Number As String
Set(ByVal value As String)
strNumber = value
End Set
Get
Return strNumber
End Get
End Property
'Create property for Name.
Public Property Name As String
Set(ByVal value As String)
strName = value
End Set
Get
Return strName
End Get
End Property
'Create property for size.
Public Property Size As String
Set(ByVal value As String)
strSize = value
End Set
Get
Return strSize
End Get
End Property
'Create property for cost.
Public Property Cost As Decimal
Set(ByVal value As Decimal)
decCost = value
End Set
Get
Return decCost
End Get
End Property
Public Property MarkUp As Decimal
Set(ByVal value As Decimal)
decMarkUp = value
End Set
Get
Return decMarkUp
End Get
End Property
End Class
End Class
感谢您提供任何指示、建议和示例。