#from oblig import Oblig class Emne: def __init__(self, emnekode, studenter, rettere): self._emnekode = emnekode self._studenter = studenter self._rettere = rettere self._obliger = {} def administrer(self): print("Dette er emnet", self._emnekode) print("Du har f?lgende kommandoer ? velge mellom;\n") bruker_input = input("O: Ny oblig\nF: Frist ute, start retting\nL: Lag eksamensliste\nA: Avslutt").strip().upper() while (bruker_input != "A"): if bruker_input == "O": self._opprettOblig() elif bruker_input == "F": self._startRetting() elif bruker_input == "L": self._skrivEksamensListe() else: print("Kommandoen ble ikke gjenkjent.\nPr?v igjen.") bruker_input = input("Ny kommando:").strip().upper() def _opprettOblig(self): tall = len(self._obliger) + 1 obligID = "oblig" + str(tall) fristen = int(input("Skriv dato for frist ('??MMDD')")) self._obliger[obligID] = Oblig(obligID, fristen) def _startRetting(self): dagensDato = int(input("Skriv dagens dato('??MMDD'):")) for oblig in self._obliger: oblig_objekt = self._obliger[oblig] if oblig_objekt.klarForRetting(dagensDato): besvarelser = oblig_objekt.hentBesvarelser(oblig+".txt") resultater = oblig_objekt.fordelRetting(besvarelser, self._rettere) for student in resultater: finne_student = self._studenter[student] finne_student.registrer(oblig, resultater[student]) def _skrivEksamensListe(self): eksamensliste = [] for stud in self._studenter: studenten = self._studenter[stud] if studenten.altGodkjent(len(self._obliger)): eksamensliste.append(stud) print("Dette er alle studentene som f?r g? opp til eksamen:") for stud in eksamensliste: print(stud) class Student: def __init__(self, brukernavn, fullt_navn): self._brukernavn = brukernavn self._navn = fullt_navn self._resultater = {} def registrer(self, oblig, resultat): self._resultater[oblig] = resultat def altGodkjent(self, antObliger): if antObliger > len(self._resultater): return False for oblig in self._resultater: if self._resultater[oblig] != 1: return False return True class Retter: def __init__ (self, navn): self._navn = navn def vurder(self, filnavn): return 1 class Oblig: def __init__(self, id, frist): self._id = id self._frist = frist self._erRettet = False def klarForRetting(self, dagensDato): return dagensDato > self._frist and not self._erRettet def hentBesvarelser(self, filnavn): besvarelser = {} fil = open(filnavn, "r") for line in fil: line = line.strip().split() besvarelser[line[0]] = line[1] fil.close() return besvarelser #Jeg g?r utifra at rettere aldri er 0 def fordelRetting(self, besvarelsene, rettere): resultater = {} antall_rettere = len(rettere) ret_teller = 0 for bes in besvarelsene: retter = rettere[ret_teller] #rettere[0] resultat = retter.vurder(besvarelsene[bes]) resultater[bes] = resultat ret_teller += 1 if ret_teller == antall_rettere: ret_teller = 0 return resultater