Module Student


module Student: sig .. end
The student data type.

module H: Assoc.H

type resp =
| Capt
| Secr
| Prog
| Zero

type s_team = {
   proj : Base.paddress;
   n : int;
   r : resp;
   a : int;
   c : float;
   g : float;
}
val make_steam : ?proj:Base.paddress ->
?n:int ->
?r:resp -> ?a:int -> ?c:float -> ?g:float -> unit -> s_team
val empty_team : s_team
val update_coeff : s_team -> float -> s_team
val update_grade : s_team -> float -> s_team

type student = {
   name : string;
   pren : string;
   login : string;
   group : int;
   teams : (Base.paddress, s_team) H.t;
   mutable numt : int;
   mutable numc : int;
   mutable nums : int;
   mutable team : int;
}
val new_teams : unit -> (Base.paddress, s_team) H.t
val new_student : string -> string -> string -> int -> student
val student_list : student list ref
val num_to_color : int -> string
val _resp : student -> Base.paddress -> resp
val _team : student -> Base.paddress -> int
val _absc : student -> Base.paddress -> int
val student_absc : student -> Base.paddress -> int
val student_resp : student -> Base.paddress -> resp
val student_team : student -> Base.paddress -> int
val student_grade : student -> Base.paddress -> float
val resp_to_string : resp -> string
val resp_to_full_string : resp -> string
val string_to_resp : string -> resp
val string_to_sort : string -> Base.sort
val string_of_sort : Base.sort -> string
val set_resp : student ->
Base.paddress ->
int -> resp -> ?abs:int -> ?grad:float -> unit -> unit
val find_student : student list -> String.t -> student
val give_mark_to_team : int -> Base.paddress -> int -> float -> unit
val give_mark_to_student : String.t -> Base.paddress -> float -> unit
val sort_student_list : Base.sort -> unit
val get_multip_resp : resp ->
student list -> int -> Base.paddress -> int -> student list
val get_unique_resp : resp ->
student list -> int -> Base.paddress -> int -> student
val get_captains : student list -> int -> Base.paddress -> int -> student list
val get_secretaries : student list -> int -> Base.paddress -> int -> student list
val get_progs : student list -> int -> Base.paddress -> int -> student list
val get_team : student list -> int -> Base.paddress -> int -> student list
val get_all_project_addresses_for : student list -> Base.paddress list

type compar =
| Superior of int
| Inferior of int
| Between of (int * int)
type valid = (resp * compar) list 
val ref_validity : valid ref
val valid_to_string : (resp * compar) list -> string
val string_to_valid : string -> (resp * compar) list
val is_team_valid : valid ->
student list -> int -> Base.paddress -> int -> bool * string
val valid_base : (resp * compar) list
val valid_resp : (resp * compar) list
val project_mean : student list -> int -> Base.paddress -> float
val belong_to_same_team_as : student -> student -> Base.paddress -> bool
val student_mean : student -> float
val group_mean : int -> float
val update_student_coeffs : student list -> student -> Base.paddress list -> unit
val student_corrected_mean : student -> float
val next_value : int list -> int -> int option
val next_counter : int list -> int list -> int list
val find_all_counters : int list -> int -> int list list
val select : ('a -> bool) -> 'a list -> 'a list
val apply_goal : Base.goal -> (int * 'a) list -> int * 'a
val find_team_numbers : Base.goal -> int list -> int -> (int * int) list
type criterion = student -> int -> int -> Base.paddress -> bool 
val crit_base : student -> 'a -> int -> Base.paddress -> bool
val crit_secr : student -> int -> int -> Base.paddress -> bool
val crit_capt : student -> int -> int -> Base.paddress -> bool
val find_random_member_by_group : criterion ->
student list -> int -> Base.paddress -> student
val find_resp_by_group_project : student list ->
int ->
Base.paddress ->
resp -> criterion -> (int * int) list -> unit
val find_members_of_group_project : student list -> int -> Base.paddress -> unit
val update_groups_size : student list -> unit