1

列「キャンパス」と「gpa」を含む学生の詳細でいっぱいのテーブルがあります。グループには、A と B の 2 種類があります。

グループ A は複雑なプロジェクト用で、グループ B は複雑でないプロジェクト用です。これらのプロジェクトは、「projectdetails」というテーブルで指定されます。

学生をキャンパス別に並べ替え、GPA に基づいてグループ (A または B) に割り当てる必要があります。1 グループにつき最大 5 人の学生が参加できます。

グループ A グループの数は、複雑なプロジェクトの数に基づいています。そのため、上位 x (x= 複雑なプロジェクトの n * 5 人の学生) の学生を A クラスのグループに選択し、ランダムにグループに割り当てる必要があります。残りの生徒は、ランダムに B グループに割り当てられます。

学生をグループに割り当てる関数の背後にあるロジックを実装する方法を理解するのに少し苦労しています。手を貸してくれる人はいますか?

これは私がそれがどのように機能するかを想像する方法です-しかし、私は提案を受け入れています...

Sort by campus
Sort by gpa

Put each campus in separate array

for each campus {

Get the number of complex projects

x = complex projects * 5
select top x students {
            they are type a
            randomly assign to group (Max number of groups = number of  complex projects)
        }

select students that aren't type a {
            they are type b
            randomly assign to group (Max number of groups = number of  type b students / 5)
        }

前もって感謝します!

4

1 に答える 1

0

私は .NET (vb.net) で作業しており、EntityFramework を使用してデータベースをセットアップし、キャンパス、学生、および学生グループのオブジェクト (テーブル) を持つことができるようにします。

Public Class assignStudents

Public Sub assignStudentsToGroups()
          Dim campList As New List(Of String)() From {"camp1", "camp2", "camp3"}
    Dim stuList As New List(Of stu)
    '  stuList  = select * stu's from database order by highest gpa first. pass in campusID
    Dim qtyComplex As Integer = 10
    Dim grpList As New List(Of grp)
    '  grpList = select * groups from db & qty of users in each grp.
    Dim qtyStudentsComplexGroup As Integer = qtyComplex * 5
    Dim count As Integer = 0

    '   for each campus
    For Each c As String In campList

        '   For each student in this campus
        For Each s As stu In stuList

            '   only loop round number of stu's that you want.
            '   i.e. the amount of complex projects * 5
            If count < qtyStudentsComplexGroup Then

                '   These are clever kids, need to go in Type A. 
                '   Loop through the list of all available groups

                For Each g As grp In grpList

                    '   Check to see if that group is full (student count = 5)
                    If g.qty = 5 Then
                        '   it's full. Don't add them to this.
                    Else
                        '   it's not full, add student to this group.
                        '   add sql insert statement.
                        '   pass in student ID, grpID. GrpType A
                    End If
                Next
            Else
                For Each g As grp In grpList

                    '   Check to see if that group is full (student count = 5)
                    If g.qty = 5 Then
                        '   it's full. Don't add them to this.
                    Else
                        '   it's not full, add student to this group.
                        '   add sql insert statement.
                        '   pass in student ID, grpID. GrpType B
                    End If
                Next
            End If

            '   increment the loop
            count += 1
        Next
    Next
End Sub
End Class
Public Class stu
Private _name As String = ""
Public Property name() As String
    Get
        Return _name
    End Get
    Set(ByVal Value As String)
        _name = Value
    End Set
End Property
Private _gpa As String = ""
Public Property gpa() As Integer
    Get
        Return _gpa
    End Get
    Set(ByVal Value As Integer)
        _gpa = Value
    End Set
End Property
End Class
Public Class grp
Private _name As String = ""
Public Property name() As String
    Get
        Return _name
    End Get
    Set(ByVal Value As String)
        _name = Value
    End Set
End Property
Private _qty As Integer
Public Property qty() As Integer
    Get
        Return _qty
    End Get
    Set(ByVal Value As Integer)
        _qty = Value
    End Set
End Property
End Class
于 2013-11-07T11:18:09.613 に答える