2

我正在为我的 VB 课程做作业,我真的很难用它,我真的很感谢一些帮助、指示和/或示例。我不希望只给出确切的答案,但类似的例子会非常好。

CSV文件有 5 列,每列 25 行。主要的是我需要取最后两列并计算最后两行的标记,它们都是十进制整数,并将其放入输出中。换句话说,我有点需要合并这两列并将计算结果放在该列中。

这是作业:

应用程序标题:库存控制

目的:

此 Windows MDI 应用程序允许用户显示整个库存并计算售价,或显示库存中的选定项目及其售价。

程序:

从主文档中,用户将从菜单中选择 All 或 Select。相应的表格将显示在 MDI 窗口中。如果用户选择了所有,库存项目将简单地出现,按列排列,最后一列是售价。如果用户选择了选择,将出现一个选中的列表框,允许用户选择她希望查看的库存项目。然后,所选项目将显示在最后一列的售价中。然后,用户应该能够使用 File Exit 菜单项退出程序。

算法、处理和条件:

  1. 用户从“显示”菜单中选择他们想要显示库存的方式
  2. 将适当的表格加载到 MDI 中
  3. 程序从文件中读取数据
  4. 程序通过将成本乘以 1 加上加价百分比来计算售价。
  5. 该程序格式化标题和详细信息行,并在列表框中的列中显示信息。

程序要求:

  1. 必须使用多文档界面
  2. 必须为库存项目使用一个类
  3. 必须使用父 MDI 表单上的菜单
  4. 必须使用至少 1 个数组 OTHER,而不是您在读取记录时使用的 strRec 数组。
  5. 可以使用数组列表和列表来处理数据。

这是我到目前为止的代码:

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

感谢您提供任何指示、建议和示例。

4

1 回答 1

1

使用Option Strict On

这将显示您需要Dim IItem = New InvenItems在 InventoryItems.Reader 中使用,这将显示另一个问题。

于 2012-10-06T20:00:25.653 回答