module StudentManagement; export all; from gradeditems import Gradebook; from gradeditems import Student; from NewClass import Server; from NewClass import RawStudent; from network import ClassName; operation RemoveStudent inputs: student:Student, gdb:Gradebook; outputs: gdb':Gradebook; precondition: (exists (student in gdb)); postcondition: (not (exists (student in class'))); description: (* removes a student from the class*); end RemoveStudent; object UpdateGrades is components: Options and Server; operations: Update; description:(* UpdateGrades is the dialog to update the network grades *); end UpdateGrades; object Options is components: Option and ClassName and Login and Password and Save; description: (* Options allows the user to pick which server the login will apply to*); end Options; object Option is components: SIS and StudentViewing and Archive and View; description(* Option specifies which server will be used for which purpose *) end Option; object SIS is string; object StudentViewing is string; object Archive is string; object View is string; object Login is string; object Password is string; object Save is boolean; operation Update inputs: opt:Options; outputs: gdb:Gradebook, errors:Errors; precondition: gdb exists; postcondition: (server.gdb = gdb); description: (* sends information to the server *); end Update; object Errors is components: added:Error, dropped:Error, misspelled:Error; operations: apply; description:(*apply fixes the errors*); end Errors; object Error is selection:string; operation apply inputs: gdb:Gradebook; outputs: gdb':Gradebook; precondition: gdb exists and Errors exists; postcondition: gdb' exists; operation SaveRoster inputs: Path, Name; ouputs: RawStudent*; precondition: (Student exists); postcondition: (Path exists and Name exists); description: (* SaveRoster saves the list of students and IDs in a text file *); end SaveRoster;