在Visual Basic(2010)赋值中使用数组

时间:2012-10-06 18:01:50

标签: arrays vb.net visual-studio arraylist

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

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

这是作业:

申请标题:库存控制

目的:

此Windows MDI应用程序允许用户显示整个库存并计算销售价格,或以库存价格显示库存中的选定商品。

步骤:

从主文档中,用户将从菜单中选择“全部”或“选择”。相应的表单将显示在MDI窗口中。如果用户已选择全部,则只会显示库存项目,并按最后一列中的销售价格排列。如果用户选择了选择,则会出现一个选中的列表框,允许用户选择她希望看到的库存项目。然后,所选项目将显示在最后一列中具有售价的列中。然后,用户应该可以使用File Exit菜单项退出程序。

算法,处理和条件:

  1. 用户从显示菜单
  2. 中选择他们想要显示广告资源的方式
  3. 将适当的表格加载到MDI
  4. 程序从文件中读取数据
  5. 该程序通过将成本时间乘以加上加价百分比来计算销售价格。
  6. 程序会格式化标题和明细行,并在列表框的列中显示信息。
  7. 计划要求:

    1. 必须使用多文档界面
    2. 必须使用类库存项目
    3. 必须使用“父MDI表单”上的菜单
    4. 必须使用至少1个数组,而不是您在读入记录时使用的strRec数组。
    5. 可以使用arraylist和list来处理数据。
    6. 这是我到目前为止的代码:

      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
      

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

1 个答案:

答案 0 :(得分:0)

使用Option Strict On

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