# Det finnes mange løsninger, dette er bare mitt forslag from oblig import Oblig from student import Student from retter import Retter class Emne: def __init__(self, emnekode, studenter, rettere): self._emnekode = emnekode self._studenter = studenter self._rettere = rettere self._obliger = {} def administrer(self): print(self._emnekode) muligheter = ["O", "F", "L", "A"] valg = "" while valg != "A": print("Skriv O for å opprette en oblig") print("Skriv F for å starte å rette") print("Skriv L for å lage eksamensliste") print("Skriv A for å avslutte programmet") valg = input().strip().upper() if valg == "O": self._opprettOblig() elif valg == "F": self._startRetting() elif valg == "L": self._skrivEksamensliste() def _opprettOblig(self): frist = input("Når er fristen på obligen? ") id = "oblig" + str(len(self._obliger) + 1) oblig = Oblig(id, frist) self._obliger[id] = oblig #print(self._obliger) def _startRetting(self): dato = input("Hva er dagens dato? ") oblgier = self._obliger for id in self._obliger: oblig = self._obliger[id] if oblig.klarForRetting(dato): besvarelser = oblig.hentBesvarelser(id) resultater = oblig.fordelRetting(besvarelser, self._rettere) #print(besvarelser) #print(resultater) for brukernavn in resultater: resultat = resultater[brukernavn] self._studenter[brukernavn].registrer(id, resultat) def _skrivEksamensliste(self): navn = [] for brukernavn in self._studenter: student = self._studenter[brukernavn] if student.altGodkjent(len(self._obliger)): navn.append(brukernavn) print("Følgende studenter har fått godkjent alle obliger:") for n in navn: print(n) studenter = {"olanor": Student("olanor", "Ola Nordmann"), "karinor": Student("karinor", "Kari Nordmann")} rettere = [Retter("perask"), Retter("pålask")] emne = Emne("IN1000", studenter, rettere) emne.administrer() # Vi får testet alle metodene til alle klassene kun ved å kjøre administrer() # Det forutsetter såklart at vi som brukeren prøver alle valgmulighetene minst # en gang når vi kjører og tester programmet i terminalen # OBS! Hvis dere skal opprette mer enn en oblig må dere bare lage flere kopier av # filen oblig1.txt hvor dere øker tallet for hver gang # Dere kan også aktivere print-setningene i denne filen ved å avkommentere dem # for å sjekke at metodene faktisk har gjort det de skal # -> emne.administrer() # -> emne._opprettOblig() # -> emne._startRetting() # -> oblig.klarForRetting() # -> oblig.hentBesvarelser() # -> oblig.fordelRetting() # -> retter.vurder() # -> student.registrer() # -> emne._skrivEksamensliste() # -> student.altGodkjent()