需要协助写入CSV文件并保存条目

时间:2017-02-24 11:29:44

标签: vb.net csv streamwriter

我正在创建一个学生考试成绩应用程序,该应用程序显示学生平均成绩,班级平均成绩(我尚未完成此部分),并且可以搜索显示在文本框中的特定学生。

有人可以告诉我如何将测试成绩和输入文本框的学生姓名写入Excel CSV文件吗?

当我点击它时,保存按钮会一直清除CSV文件中的所有企业。如果有人能告诉我那里有什么,那就太好了。

Imports System.IO

Public Class Form1

Structure Students
    Dim StudentName As String
    Dim Test1 As Double
    Dim Test2 As Double
    Dim Test3 As Double
    Dim Test4 As Double
    Dim Test5 As Double
End Structure
Dim StudentCounter As Integer = 0
Dim MyStudentArray(StudentCounter) As Students


Private Sub LoadDataFromFileToArray()
    Dim TextFile As New System.IO.StreamReader(“..\..\StudentDataFile.csv”)
    Dim strStudentData As String
    strStudentData = TextFile.ReadLine()
    Do Until strStudentData Is Nothing
        lstAllStudentData.Items.Add(strStudentData)
        WriteToArray(strStudentData)
        strStudentData = TextFile.ReadLine()
    Loop
    TextFile.Close()


End Sub


Private Sub WriteToArray(ByVal CurrentLine)

    Dim Values() As String = Split(CurrentLine, ",")

    ReDim Preserve MyStudentArray(StudentCounter)

    MyStudentArray(StudentCounter).StudentName = Values(0)
    MyStudentArray(StudentCounter).Test1 = (Values(1))
    MyStudentArray(StudentCounter).Test2 = (Values(2))
    MyStudentArray(StudentCounter).Test3 = (Values(3))
    MyStudentArray(StudentCounter).Test4 = (Values(4))
    MyStudentArray(StudentCounter).Test5 = (Values(5))
    StudentCounter += 1

End Sub



Private Sub btnAddStudent_Click(sender As Object, e As EventArgs) Handles btnAddStudent.Click
    ReDim Preserve MyStudentArray(StudentCounter)
    MyStudentArray(StudentCounter).Test1 = CDbl(txtTest1.Text)
    MyStudentArray(StudentCounter).Test2 = CDbl(txtTest1.Text)
    MyStudentArray(StudentCounter).Test3 = CDbl(txtTest1.Text)
    MyStudentArray(StudentCounter).Test4 = CDbl(txtTest1.Text)
    MyStudentArray(StudentCounter).Test5 = CDbl(txtTest1.Text)
    MyStudentArray(StudentCounter).StudentName = (txtStudentName.Text)
    StudentCounter += 1

End Sub

Private Sub CalculateIndividual()

    Dim AverageScore As Double = 0
    Dim Test1 As Double = CDbl(txtTest1.Text) 
    Dim Test2 As Double = CDbl(txtTest2.Text)
    Dim Test3 As Double = CDbl(txtTest3.Text)
    Dim Test4 As Double = CDbl(txtTest4.Text)
    Dim Test5 As Double = CDbl(txtTest5.Text)
    Dim AverageGrade As String 

    AverageScore = (Test1 + Test2 + Test3 + Test4 + Test5) / 5
    lblScoreOutput.Text = AverageScore 
    lblScoreOutput.Visible = True

    Select Case AverageScore 
        Case > 90
            AverageGrade = "A+"

        Case 80 To 90
            AverageGrade = "A"

        Case 70 To 80
            AverageGrade = "B"

        Case 60 To 70
            AverageGrade = "C"

        Case 50 To 60
            AverageGrade = "D"

        Case 35 To 50
            AverageGrade = "E"

        Case Else
            AverageGrade = "UG"


    End Select
    lblLetterOutput.Text = AverageGrade
    lblLetterOutput.Visible = True




End Sub



Private Sub Form_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    Dim response As MsgBoxResult
    response = MsgBox("Do you want to close Student Calculator", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Confirm")
    If response = MsgBoxResult.Yes Then
        Me.Dispose()
    ElseIf response = MsgBoxResult.No Then
        e.Cancel = True
        Exit Sub
    End If
End Sub

Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
    Dim response As MsgBoxResult
    response = MsgBox("Do you want to close Student Calculator?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Confirm")
    If response = MsgBoxResult.Yes Then
        Me.Dispose()
    ElseIf response = MsgBoxResult.No Then
        Exit Sub
    End If
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    lstAllStudentData.Items.Clear()

    LoadDataFromFileToArray()

    lstAllStudentData.Items.Clear()
    LoadDataFromFileToArray()

    Dim MySource As New AutoCompleteStringCollection()

    For StudentCounter = 0 To StudentCounter - 1
        MySource.Add(MyStudentArray(StudentCounter).StudentName)
    Next
    With txtSearch
        .AutoCompleteCustomSource = MySource
        .AutoCompleteMode = AutoCompleteMode.SuggestAppend
        .AutoCompleteSource = AutoCompleteSource.CustomSource
        .Visible = True
        Me.Controls.Add(txtSearch)
    End With
End Sub

Private Sub lstAllStudentData_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstAllStudentData.SelectedIndexChanged

    txtStudentName.Text = MyStudentArray(lstAllStudentData.SelectedIndex).StudentName
    txtTest1.Text = MyStudentArray(lstAllStudentData.SelectedIndex).Test1
    txtTest2.Text = MyStudentArray(lstAllStudentData.SelectedIndex).Test2
    txtTest3.Text = MyStudentArray(lstAllStudentData.SelectedIndex).Test3
    txtTest4.Text = MyStudentArray(lstAllStudentData.SelectedIndex).Test4
    txtTest5.Text = MyStudentArray(lstAllStudentData.SelectedIndex).Test5
    CalculateIndividual()

End Sub

Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
    Dim SearchField As String = txtSearch.Text
    For StudentCounter = 0 To StudentCounter
        If rdbStudent.Checked = True Then
            If UCase(SearchField) = UCase(MyStudentArray(StudentCounter).StudentName) Then
                lstAllStudentData.SelectedIndex = StudentCounter
                Exit For
            End If
        End If
        If rdbStudent.Checked = True Then
            If UCase(SearchField) = UCase(MyStudentArray(StudentCounter).StudentName) Then
                lstAllStudentData.SelectedIndex = StudentCounter
                Exit For
            End If
        End If
    Next
End Sub



Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click


    Dim StudentFile As New System.IO.StreamWriter("..\..\StudentDataFile.csv")

    For StudentCounter = 0 To MyStudentArray.Length - 1
        StudentFile.Write(MyStudentArray(StudentCounter).StudentName)
        StudentFile.Write(",")
        StudentFile.Write(MyStudentArray(StudentCounter).Test1)
        StudentFile.Write(",")
        StudentFile.Write(MyStudentArray(StudentCounter).Test3)
        StudentFile.Write(",")
        StudentFile.Write(MyStudentArray(StudentCounter).Test4)
        StudentFile.Write(",")
        StudentFile.Write(MyStudentArray(StudentCounter).Test4)
        StudentFile.Write(",")
        StudentFile.WriteLine(MyStudentArray(StudentCounter).Test5)

    Next
    StudentFile.Close()
End Sub


End Class

0 个答案:

没有答案