我正在更新我所写的用于我的雇主,大学的申请,以允许学生注册他们想要的宿舍。
我正在开发一项新功能,允许学生与另一名学生“合作” - 这样当一个或另一个注册一个房间时,另一个学生也将被注册。
现在,让我们说我们有John Doe和James Doe - 他们彼此合作进行房间登记。学生根据他们目前的班级水平错开的时间。我需要一种方法来确定(没有十亿IF..THEN语句)哪个学生具有较低的班级水平。课程级别的值是FR,SO,JR,SR,5SR(从大多数初级到最高级)。
在上面的例子中,John Doe可能是FR,而James Doe可能是SR。在FR被允许注册之前,詹姆斯和约翰都不应该被允许注册 - 因为这是伙伴关系“基础”级别。
基本上我想做类似的事情:
IF John_Doe_Class_Level < James_Doe_Class_Level Then
Partnership_Class_Level = John_Doe_Class_Level
Else
Partnernship_Class_Level = James_Doe_Class_Level
End If
知道如何有效地实现这一目标吗?
答案 0 :(得分:3)
您在哪里定义班级?如果它在代码中,请使用带有关联数值的枚举。
Public Enum ClassLevel As Integer
FR = 0
SO = 1
JR = 2
End Enum
Public Class Student
Public Property Name As String
Public Property Level As ClassLevel
End Class
Public Sub TestIt(ByVal studentA As Student, ByVal studentB As Student)
If studentA.Level > studentB.Level Then
' dostuff
End If
End Sub
答案 1 :(得分:2)
我知道我显然遗漏了一些东西,但是如果你把这些课程级别分配给一个枚举,为什么上面的工作没有呢?
public enum ClassLevel
{
FR=1,
SO=2,
JR=2,
SR=3,
5SR=4
}
etc
IF John_Doe.ClassLevel < JamesDoe.Class_Level Then
Partnership.Class_Level = John_Doe.ClassLevel
Else
Partnernship.Class_Level = James_Doe.ClassLevel
End If
答案 2 :(得分:1)
我会通过返回数字的函数运行值,然后将这些值相互比较。有点像...
IF numericClassLevel(John_Doe_Class_Level) < numericClassLevel(John_Doe_Class_Level) Then
Partnership_Class_Level = John_Doe_Class_Level
Else
Partnernship_Class_Level = James_Doe_Class_Level
End If
public function numericClassLevel(strClassLevel) as integer
select case strLevel
case "FR"
return 1
etc.
end select
end function