from oppg4_emne import Emne from oppg4_dato import Dato from oppg4_student import Student from oppg4_aktivitet import Aktivitet #----------OPPGAVE 4E---------- class Undervisnigsadministrasjon: def __init__(self): self._emner = {} self._datoer = {} self._studenter = {} #----------OPPGAVE 4F---------- def lesInnEmnefil(self, filnavn): fil = open(filnavn) for linje in fil: biter = linje.strip().split() # Her representerer biter[0] emnekoden # Her representerer biter[1] aktivitetsnavn # Her representerer biter[2-4] dato # F?rst m? vi sjekke om emnet finnes fra f?r av if biter[0] not in self._emner: # Hvis det ikke gj?r det, oppretter vi et Emne-objekt # i tillegg til et Dato-objekt og Aktivitet-objekt # s? legger vi dem til i de riktige ordb?kene emne = Emne(biter[0]) dato = Dato(biter[4], biter[3], biter[2]) # Emne-objekter inneholder en liste av Aktivitet-objekter # som vi m? oppdatere for at alt skal v?re som det skal aktivitet = Aktivitet(emne, dato, 1, biter[1]) emne.leggTilAktivitet(aktivitet) # Legg til objektene i de riktige ordb?kene som er # instansvariabler i denne klassen self._emner[biter[0]] = emne self._datoer[dato.absoluttDato()] = dato else: # Hvis det gj?r det, oppretter vi ikke et Emne-objekt # istedenfor bruker vi bare det eksisterende objektet # som allerede ligger i ordboka fra f?r av emne = self._emner[biter[0]] dato = Dato(biter[4], biter[3], biter[2]) # Emne-objekter inneholder en liste av Aktivitet-objekter # som vi m? oppdatere for at alt skal v?re som det skal aktivitet = Aktivitet(emne, dato, 1, biter[1]) emne.leggTilAktivitet(aktivitet) # Legg til objektene i de riktige ordb?kene som er # instansvariabler i denne klassen self._datoer[dato.absoluttDato()] = dato #----------OPPGAVE 4G---------- def lesInnStudentfil(self, filnavn): fil = open(filnavn) for linje in fil: biter = linje.strip().split() # Her representerer biter[0] brukernavn # Her representerer biter[1] emnekode # Her representerer biter[2] aktivitetsnavn student = Student(biter[0]) # Student-objekter inneholder en liste av Emne-objekter # som vi m? oppdatere for at alt skal v?re som det skal emne = self._emner[biter[1]] student.leggTilEmne(emne) # Aktivitets-objekter inneholder en liste av Student-objekter # som vi m? oppdatere for at alt skal v?re som det skal aktivitet = emne.hentAktivitet(biter[2]) aktivitet.leggTilRegistrertStudent(student) #----------OPPGAVE 4H---------- # Oppgave 4h ber om forskjellige ting i forskjellige deler av oppgaveteksten... # Men det holder ? bare ta med en av metodene def skrivGrupperMedLavtOppmoete(self, antall): # Vi bruker emne-ordboka i denne klassen for ? g? igjennom alle emner for emnekode, emne in self._emner.items(): #Vi bruker aktivitet-lista i emne-klassen for ? g? igjennom alle aktiviteter for aktivitet in emne.hentAlleAktiviteter(): if aktivitet.oppmote() < antall: print(aktivitet.hentNavn() + " i " + emnekode + " har flere enn " + str(antall) + " oppm?tte studenter") def skrivGrupperMedHoytOppmoete(self, antall): # Vi bruker emne-ordboka i denne klassen for ? g? igjennom alle emner for emnekode, emne in self._emner.items(): #Vi bruker aktivitet-lista i emne-klassen for ? g? igjennom alle aktiviteter for aktivitet in emne.hentAlleAktiviteter(): if aktivitet.oppmote() > antall: print(aktivitet.hentNavn() + " i " + emnekode + " har flere enn " + str(antall) + " oppm?tte studenter") # Hjelpemetode for ? kunne teste klassen, trengs ikke skrives til eksamen def hentEmner(self): return self._emner # Hjelpemetode for ? kunne teste klassen, trengs ikke skrives til eksamen def hentDatoer(self): return self._datoer # Hjelpemetode for ? kunne teste klassen, trengs ikke skrives til eksamen def hentStudenter(self): return self._studenter