'το αρχικό module
Module main
    Dim fileName As String = "studenData.dat"

    Sub Main()
        Dim choice As Integer
        'Η εμφάνιση του μενού 
        Do
            Console.Clear()
            Console.WriteLine("Καλώς ήρθατε στο μενού του σχολείου")
            Console.WriteLine("Πατήστε ")
            Console.WriteLine("1 για να εμφανίσετε τις βαθμολογίες ")
            Console.WriteLine("2 για να εισάγετε περισσότερες βαθμολογίες")
            Console.WriteLine("3 για να διαγραφούν όλα τα στοιχεία και να εισάγετε καινούργια")
            Console.WriteLine("0 για έξοδο")

            'Προσέχουμε να μην κρασάρει το πρόγραμμα αν εισάγει μη αριθμητική τιμή ο χρήστης
            Try
                choice = Console.ReadLine()
            Catch ex As Exception
                Console.WriteLine("παρακαλώ εισάγετε μία αριθμητική τιμή.")
                choice = 4
            End Try
            choose(choice)
            'Μέχρι να πατήσει 0 ο χρήστης
        Loop While choice <> 0
        Console.ReadKey()
    End Sub

    Sub choose(ByVal c As Integer)
        Select Case c
            Case 1
                'Για εμφάνιση του αρχείου
                results.print(fileName)
            Case 2
                'Για να εισάγει ο χρήστης περισσότερες βαθμολογίες
                FileIO.addMore(fileName)
            Case 3
                'Για να διαγραφούν τα περιεχόμενα του αρχείου και να εισάγουμε νεα
                FileIO.addNew(fileName)
        End Select

    End Sub
End Module
'-----------------------------------------------------------------------------------------


Imports Microsoft.VisualBasic.FileIO
'το module από όπου θα εμφανίζουμε τα δεδομένα.
Module results
    Sub print(ByVal nameOfFile As String)
        Dim input As IO.StreamReader
        Dim dataFile As TextFieldParser
        Dim row() As String

        If IO.File.Exists(nameOfFile) Then
            input = IO.File.OpenText(nameOfFile)
            dataFile = New TextFieldParser(nameOfFile)
            dataFile.TextFieldType = FieldType.Delimited
            dataFile.SetDelimiters(",")
            Console.WriteLine("Όνομα" + vbTab + "Μάθημα" + vbTab + "Βαθμός")
            While Not dataFile.EndOfData
                row = dataFile.ReadFields()
                For Each item As String In row
                    Console.Write(item + vbTab)
                Next
                Console.WriteLine()
            End While

            input.Close()
            Console.ReadKey()
        End If
    End Sub
End Module
'-----------------------------------------------------------------------------------------

'το module που θα χειριζόμαστε τα αρχεία
Module FileIO
    Sub addNew(ByVal nameOfFile As String)
        Dim output As IO.StreamWriter
        output = IO.File.CreateText(nameOfFile)
        add(output)
    End Sub

    Sub addMore(ByVal nameOfFile As String)
        Dim output As IO.StreamWriter
        output = IO.File.AppendText(nameOfFile)
        add(output)
    End Sub

    Sub add(ByVal output As IO.StreamWriter)
        Dim more As Char
        Dim student As String
        Dim lesson As String
        Dim grade As Double
        Do
            Console.Write("Εισάγετε το όνομα του μαθητή: ")
            student = Console.ReadLine()
            Console.Write("εισάγετε το μάθημα")
            lesson = Console.ReadLine()
            Console.Write("Εισάγετε το βαθμό για το μαθητή" + student + ": ")
            grade = Console.ReadLine()
            output.WriteLine(student + "," + lesson + "," + grade.ToString)
            Console.Write("Εισαγωγή περισσότερων στοιχείων (Ν)αι/(Ο)χι")
            more = Console.ReadLine()
        Loop While more <> "ο" And more <> "Ο"
        output.Close()

    End Sub
End Module
