from fag import Fag from student import Student class Studentsystem: def __init__(self): self._alleStudenter = [] self._alleFag = [] def lesFraFil(self, filnavn): fil = open(filnavn) for linje in fil: linje = linje.strip() if linje[0] == "*": fag = Fag(linje[1:]) self._alleFag.append(fag) else: stud = self.hentStudent(linje) if stud == None: stud = Student(linje) self._alleStudenter.append(stud) stud.leggTilFag(fag) fag.leggTilStudent(stud) fil.close() # Finn studenten som har 'navn' som instansvariabel. Dersom # ingen matcher, return None. def hentStudent(self, navn): for student in self._alleStudenter: if student.hentStudentNavn() == navn: return student return None # Finn faget med 'navn' som instansvariabel. Dersom ingen matcher, # return None. def hentFag(self, navn): for fag in self._alleFag: if fag.hentFagNavn() == navn: return fag return None # Be brukeren om et navn, og skriv ut alle # fagene til studenten med det navnet. Si ifra # dersom studenten ikke finnes. def skrivFagPaaStudent(self): navn = input("Hvilken student vil du se fag for?\n> ") stud = self.hentStudent(navn) if stud != None: stud.skrivFagPaaStudent() else: print(navn + " finnes ikke i dette systemet.") # Finn og print studenten med flest fag. def studentMedFlestFag(self): maks = 0 for stud in self._alleStudenter: if stud.hentAntallFag() > maks: maks = stud.hentAntallFag() s = stud print(s.hentStudentNavn() + " tar flest fag (" + str(maks) + ")") # Be brukeren om et navn, og legg til en student med det navnet # i systemet. Sjekker at ingen med det navnet allerede finnes. def leggTilStudent(self): navn = input("Skriv navn paa ny student:\n> ") stud = self.hentStudent(navn) if stud == None: stud = Student(navn) self._alleStudenter.append(stud) else: print("Studenten finnes allerede.") # Be om et navn på en student og navnet på et fag, og legg # studenten til i faget og faget til for studenten. Si ifra # dersom en av delene ikke finnes i systemet. def leggTilStudentIFag(self): navn = input("Hva heter studenten du vil legge til i faget?\n> ") stud = self.hentStudent(navn) if stud == None: print("Denne studenten finnes ikke!") return fagnavn = input("Hvilket fag vil du legge til studenten i?\n> ") fag = self.hentFag(fagnavn) if fag == None: print("Dette faget finnes ikke!") return if stud.tarFag(fag): print("Studenten tar allerede faget!") else: stud.leggTilFag(fag) fag.leggTilStudent(stud) print(stud, " lagt til i ", fag) # En menyløkke som lar brukeren bestemme hva de vil gjøre. def meny(self): svar = "" while svar != "q": self.skrivMeny() svar = input("> ") if svar == "1": self.leggTilStudent() elif svar == "2": self.leggTilFag() elif svar == "9": self.skrivMeny() elif svar != "q": print("Ulovlig input! Skriv et tall.") print("Avslutter programmet.") # En liten meny som printer alle mulighetene i menyløkken. def skrivMeny(self): print("Velkommen") print("1 - Legg til student") print("2 - Legg til fag") print("9 - Skriv menyen paa nytt") print("Skriv q for aa avslutte.")