Public Class Form1
Structure Data
Dim name As String
Dim volume As String
End Structure
Dim drinkData(49) As Data
Dim FILE_NAME As String = "SOFT_DRINK_DATA.TXT"
Dim numLines As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetData()
End Sub
Private Sub submitNewData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles submitNewData.Click
Dim objWriter As New System.IO.StreamWriter(FILE_NAME, True)
If numLines >= 49 Then
MsgBox("No more than 50 entries can be inputted!")
ElseIf numLines < 49 Then
objWriter.WriteLine(softDrink.Text)
objWriter.WriteLine(changeInVolume.Text)
End If
objWriter.Close()
softDrink.Text = ""
changeInVolume.Text = ""
GetData()
End Sub
Sub GetData()
Dim readFile As IO.StreamReader = IO.File.OpenText(FILE_NAME)
numLines = 0
Do While readFile.Peek <> -1
drinkData(numLines).name = readFile.ReadLine
drinkData(numLines).volume = readFile.ReadLine
numLines += 1
Loop
readFile.Close()
SortData(numLines)
ShowData()
End Sub
Sub ShowData()
Dim fmtStr As String = "{0,-14}{1, 14:N1}"
showGainers.Items.Clear()
showLosers.Items.Clear()
showGainers.Items.Add(String.Format(fmtStr, "Brand", "% Change in Volume"))
showGainers.Items.Add("")
showLosers.Items.Add(String.Format(fmtStr, "Brand", "% Change in Volume"))
showLosers.Items.Add("")
For i As Integer = 0 To numLines
If drinkData(i).volume > 0 Then
showGainers.Items.Add(String.Format(fmtStr, drinkData(i).name, drinkData(i).volume))
Else
showLosers.Items.Add(String.Format(fmtStr, drinkData(i).name, drinkData(i).volume))
End If
Next
End Sub
Sub SortData(ByVal numPasses As Integer)
For passNum As Integer = 1 To (numPasses - 1)
For index As Integer = 1 To numPasses - passNum
If (drinkData(index - 1).volume < drinkData(index).volume) Then
SwapData(index)
End If
Next
Next
End Sub
Sub SwapData(ByVal index As Integer)
Dim temp As Data
temp = drinkData(index - 1)
drinkData(index - 1) = drinkData(index)
drinkData(index) = temp
End Sub
End Class