我目前正在做一項輸入學生姓名、英語分數、數學分數和科學分數的作業。我使用串列框作為下面的代碼。然后我還需要顯示最高得分者和最低得分者。我已經嘗試過了,但我不知道該怎么做。有人可以幫我嗎?
另一件事是,如何對齊串列框專案?
Public Class StudentsGradeForm
Dim StdDetails As String = "{0, -10}{1, -20}{2, -20}{3, -20}{4, -20}{5, -20}"
Dim num1integer, num2integer, num3integer As Integer
Dim resultdouble As Double
Dim grade As String
Private Sub exitbtn_Click(sender As Object, e As EventArgs) Handles exitbtn.Click
Dim iExit As DialogResult
iExit = MessageBox.Show("Confirm you want to exit the system", "Exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If iExit = DialogResult.Yes Then
Application.Exit()
End If
End Sub
Private Sub Calcbtn_Click(sender As Object, e As EventArgs) Handles Calcbtn.Click
num1integer = num1txt.Text
num2integer = num2txt.Text
num3integer = num3txt.Text
resultdouble = (num1integer num2integer num3integer) / 3
outlbl.Text = resultdouble
If resultdouble >= 80 And resultdouble <= 100 Then
grade = "A"
ElseIf resultdouble >= 70 And resultdouble <= 79 Then
grade = "B"
ElseIf resultdouble >= 60 And resultdouble <= 69 Then
grade = "C"
ElseIf resultdouble >= 50 And resultdouble <= 59 Then
grade = "D"
ElseIf resultdouble >= 40 And resultdouble <= 49 Then
grade = "E"
Else
grade = "F"
End If
outgradelbl.Text = grade
End Sub
Private Sub StudentsGradeForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ListBox1.Items.Add(String.Format(StdDetails, "Name", "Eng", "Math", "Sci", "Average", "Grade"))
End Sub
Private Sub updatebtn_Click(sender As Object, e As EventArgs) Handles updatebtn.Click
Dim StudentName, EnglishMark, MathMark, ScienceMark As String
Dim Average As Double
Dim Grade As Char
StudentName = nametxt.Text
EnglishMark = num1txt.Text
MathMark = num2txt.Text
ScienceMark = num3txt.Text
Average = outlbl.Text
Grade = outgradelbl.Text
ListBox1.Items.Add(String.Format(StdDetails, StudentName, EnglishMark, MathMark, ScienceMark, Average, Grade))
End Sub
Private Sub clrbtn_Click(sender As Object, e As EventArgs) Handles clrbtn.Click
nametxt.Clear()
num1txt.Clear()
num2txt.Clear()
num3txt.Clear()
ListBox1.Items.Clear()
End Sub
End Class
uj5u.com熱心網友回復:
創建班級學生:
Public Class Student
Dim _Name as String
Dim _Eng as Integer
etc...
然后你在你的類中撰寫你的屬性:
Property Name as String
Get
Return _Name
End Get
Set(value As String)
_Name = value
End Set
End Property
您對其他五個欄位執行相同操作。然后你必須將你的字串轉換/決議為一個數值(我假設你會使用整數)。所以你可以這樣做:
CInt(myString)
Integer.TryParse(myString)
當您想轉換回字串時,您只需執行以下操作:
myInteger.ToString()
如果您想將值存盤到您的學生物件中:
Dim myStudent As New Student
myStudent.Name = Field1txt.Text 'the string that should represent the student name
長話短說,如果您需要做一些數學運算,將值存盤為整數而不是字串會更容易和更快。如果您將兩者混合使用,并且希望將它們放在一個物體中,只需創建一個自定義類。
uj5u.com熱心網友回復:
打開選項嚴格。專案屬性 -> 編譯選項卡。同樣對于未來的專案工具 -> 選項 -> 專案和解決方案 -> VB 默認值 這應該始終打開。(實際上有極少數情況需要關閉)
Public Class StudentGrade
Public Property StudentName As String
Public Property EnglishMark As Integer
Public Property MathMark As Integer
Public Property ScienceMark As Integer
Public Property Average As Double
Public Property Grade As String
Public Sub New(Name As String, EngMark As Integer, MthMark As Integer, SciMark As Integer)
StudentName = Name
EnglishMark = EngMark
MathMark = MthMark
ScienceMark = SciMark
CalculateAverage()
CalculateGrade()
End Sub
Private Sub CalculateAverage()
Dim resultdouble = (EnglishMark MathMark ScienceMark) / 3
Average = resultdouble
End Sub
Private Sub CalculateGrade()
Select Case Average
Case >= 80
Grade = "A"
Case >= 70
Grade = "B"
Case >= 60
Grade = "C"
Case >= 50
Grade = "D"
Case >= 40
Grade = "E"
Case Else
Grade = "F"
End Select
End Sub
End Class
首先,讓我們考慮一下類。類可以有屬性和方法等等。類資料(如Name或MathMark)包含在屬性中。這些方法作用于這些資料。該類是餅干切割機,而該類的一個實體是餅干。要創建 的實體StudentGrade,請呼叫Sub New。這Sub New具有用于設定多個屬性值的引數。它還呼叫Private設定其他屬性的方法(僅在類中可見)。現在我們有一個完全充實的StudentGrade類實體。
平均值的值可以介于 79 - 80、69 - 70、59 - 60 和 49 - 50 之間。您的代碼會遺漏這些值并導致學生失敗 我將代碼更改為 Select Case 以提高可讀性。
回到 Form 類。我們有一個表單級變數 StuList 來保存我們創建的 StudentGrade 類的實體。
Private StuList As New List(Of StudentGrade)
表單加載設定 a 的DataSource屬性DataGridView。這應該比嘗試排列 ListBox 容易得多。您用適當的資料填充文本框,然后單擊 Button1 以創建一個新學生。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DataGridView1.DataSource = StuList
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
CreateNewStudent()
End Sub
在該CreateNewStudent方法中,我們首先驗證用戶輸入。該TryParse方法檢查第一個引數以查看它是否可以轉換為指示的型別。它回傳True或False。如果它回傳,True則用轉換后的值填充第二個引數。如果它回傳 False 我們不想繼續這個方法所以我們通知用戶并退出子。
我們呼叫該New方法Dim stu As New StudentGrade并傳遞所需的引數來填充此實體的屬性。將這個類的實體添加到串列中。您可以使用 的屬性StudentGrade顯示在您的標簽中。
最后,我們洗掉DataSource的DataGridView并將其重置為新增加的名單。這是一種笨拙的方法,但它無需引入更復雜的方法即可作業。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim max = StuList.Max(Function(stu) stu.Average)
MessageBox.Show($"The highest average is {max:N0}")
Dim min = StuList.Min(Function(stu) stu.Average)
MessageBox.Show($"The lowest average is {min:N0}")
End Sub
創建學生后,您要顯示最小和最大平均值。您可以使用 List(Of T) 類的擴展方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/376589.html
標籤:网络
