Block of Code

Practical Examples for Programmers

  • Home
  • C++
  • Java
  • Visual Basic
  • Discrete Math
  • Ask a Question

Student Data

Using Visual Basic, create a project called Student Data. Add a new class “Student.vb” to the project. The Student class should contain four member variables (LastName, FirstName, StudentId, and TestAverage). Next add a constructor to the class that initializes the private member variables. Set up four property procedures for the above four member variables. Set up a read-only property procedure for student grade using the variable name “TestGrade”. The grade will have one of the values “A”, “B”, “C”, “D”, or “F”. Based on the TestAverage, a letter should be assigned to the student grade.

Student Data Screenshot

Create an instance of the class “Student” named objStudent”. Write a user-defined sub-procedure that gets data from the text boxes (shown below), and stores it in the object referenced by “objStudent”. Name the sub-procedure “GetData” and define it with only one parameter in the parameter list (objStudent As Student). Within this sub-procedure, you are assigning values from textboxes on the form to the object class members.

Next, you need to save the student’s record to a text file “Students.txt”. Write another sub-procedure (name it SaveRecord) that will save student data to the text file. Remember to write the code to handle any exceptions (ie File Not Found, file is spelled wrong). Write the code for the “Save” button event-handler, to get the data by calling the GetData sub-procedure, and display the grade for the student on the form. Call the “SaveRecord” procedure to save student record. Display a message stating that the student record was saved. Write the appropriate event-handler for the “Exit” button.

Suggested Control Names and Attributes:

Name Property Text Property Control Type Notes
frmStudentData  Student Data Form Holds Controls
GroupBox1 Student Data GroupBox Passive object to contain controls
txtLastName TextBox Captures last name
txtFirstName TextBox Captures first name
txtIdNumber TextBox Captures identification number
txtTestAverage TextBox Captures test average
lblGrade Label Displays letter grade

Hints:

  • Be sure to declare the member variables of the class with a private access specifier.
  • The constructor should use the empty string (“”) for the first three class members and 0.0 for TestAverage.
  • Use a Select-Case statement to assign the letter grade to TestGrade, based on the value of TestAverage.
  • Be sure to write the appropriate code for data validation to handle any exceptions. Use a Try Catch block for this.
  • Save the text file in the bin/Debug folder of your project.

Write the Code for frmStudentData:

' Project:  Student Data
' Description:  Program receives input from the user and assigns the values to an object of type student.
'   That data is saved into a text file.

Imports System.IO

Public Class frmStudentData
    Dim objStudent As Student ' objStudent is an object of class Student
    Dim valid As Boolean = False

    Sub GetData(objStudent As Student)
        ' Assigns values from the form to the instance of Student
        valid = False ' initialize valid in case of prior use
        objStudent.LastName = txtLastName.Text
        objStudent.FirstName = txtFirstName.Text
        objStudent.StudentID = txtIdNumber.Text
        Try
            objStudent.TestAverage = CDbl(txtTestAverage.Text)
            If (CDbl(txtTestAverage.Text) <= 100) And (CDbl(txtTestAverage.Text) >= 0) Then
                valid = True
            Else
                MessageBox.Show("Text Average must be a number between 0 and 100.")
                txtTestAverage.Text = ""
            End If
        Catch ex As Exception
            MessageBox.Show("Please enter a number between 0 and 100 for Test Average.")
        End Try

    End Sub

    Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
        ' Obtain input from user, assign it to the Student object and write it to a file.
        If (txtLastName.Text = "") Or (txtFirstName.Text = "") Or
            (txtIdNumber.Text = "") Or (txtTestAverage.Text = "") Then
            MessageBox.Show("One or more fields is blank.  Please try again.")
        Else
            objStudent = New Student() ' create an instance of Student
            GetData(objStudent)
            If valid Then
                lblGrade.Text = objStudent.TestGrade
                SaveRecord()
                MessageBox.Show("Record has been saved.")
                ClearForm()
            End If
        End If
    End Sub

    Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
        ' Ends the program when the user clicks on the Exit button
        End
    End Sub

    Sub SaveRecord()
        ' Save the student information to a text file
        Dim sw As StreamWriter = File.AppendText("Students.txt")
        sw.WriteLine(objStudent.LastName)
        sw.WriteLine(objStudent.FirstName)
        sw.WriteLine(objStudent.StudentID)
        sw.WriteLine(CStr(objStudent.TestAverage))
        sw.WriteLine(objStudent.TestGrade)
        sw.Close()
    End Sub

    Sub ClearForm()
        ' Clears the form after the input has been saved
        txtLastName.Text = ""
        txtFirstName.Text = ""
        txtIdNumber.Text = ""
        txtTestAverage.Text = ""
        lblGrade.Text = ""
    End Sub
End Class

Write the Code for Student class:

' Project:  Student Data
' Description:  This is the code for the Student class

Public Class Student
    Private m_LastName As String
    Private m_FirstName As String
    Private m_StudentID As String
    Private m_TestAverage As Double

    Public Sub New()
        m_LastName = ""
        m_FirstName = ""
        m_StudentID = ""
        m_TestAverage = 0.0
    End Sub

    Public Property LastName As String
        Get
            Return m_LastName
        End Get
        Set(value As String)
            m_LastName = value
        End Set
    End Property

    Public Property FirstName As String
        Get
            Return m_FirstName
        End Get
        Set(value As String)
            m_FirstName = value
        End Set
    End Property

    Public Property StudentID As String
        Get
            Return m_StudentID
        End Get
        Set(value As String)
            m_StudentID = value
        End Set
    End Property

    Public Property TestAverage As Double
        Get
            Return m_TestAverage
        End Get
        Set(value As Double)
            m_TestAverage = value
        End Set
    End Property

    ReadOnly Property TestGrade() As String
        Get
            Dim grade As String
            Select Case m_TestAverage
                Case Is >= 90
                    grade = "A"
                Case Is >= 80
                    grade = "B"
                Case Is >= 70
                    grade = "C"
                Case Is >= 60
                    grade = "D"
                Case Else
                    grade = "F"
            End Select
            Return grade
        End Get
    End Property

End Class

Secondary Sidebar

This is the secondary sidebar

Copyright © 2025 · Metro Pro Theme on Genesis Framework · WordPress · Log in