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.
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