from fag import Fag from student import Student class Studentsystem: def __init__(self): self._studentene = [] # liste som holder alle studentene self._fagene = [] # liste som holder alle fagene def lesFil(self, filnavn): fil = open(filnavn, "r") fag = None # trenger ikke for linje in fil: linje = linje.rstrip("\n") # fjerner newline # sjekk om forste tegn er * if linje[0] == "*": fag = Fag(linje[1:]) self._fagene.append(fag) else: #student stud = self.finnStudent(linje) if stud is None: # student finnes ikke fra før stud = Student(linje) self._studentene.append(stud) fag.leggTilStudent(stud) # legger til student i fag stud.leggTilFag(fag) # legger fag til hos student fil.close() def finnStudent(self, navn): # henter student med navn ut fra studentliste om finnes for stud in self._studentene: if stud.hentStudentNavn() == navn: return stud return None # om student ikke i liste def finnFag(self, navn): # henter ut fag på navn fra faglisten for fag in self._fagene: if fag.hentFagNavn() == navn: return fag return None def skrivStudent(self): # skriver ut informasjon om student navn = input("Hvilken student vil du se informasjon om?\n> ") stud = self.finnStudent(navn) if stud is None: print("Fant ikke", navn, "i systemet") else: stud.skrivFagPaaStudent() def skrivFag(self): # skriver ut informasjon om et fag navn = input("Hvilket fag vil du se informasjon om?\n> ") fag = self.finnFag(navn) if fag is None: print("Fant ikke", navn, "i systemet") else: fag.skrivStudenterVedFag() def finnStudentMedFlestFag(self): # finner den studenten med flest fag superstudent = None flest_fag = 0 for stud in self._studentene: if stud.hentAntallFag() > flest_fag: flest_fag = stud.hentAntallFag() superstudent = stud if superstudent is None: print("Fant ikke studenten med flest fag, sjekk at studenter er meldt opp til fag") else: print("Studenten med flest fag er", superstudent.hentStudentNavn(), "med", flest_fag, "fag" ) def finnFagMedFlestStudenter(self): # finner det faget med flest studenter mest_pop_fag = None antall_stud = 0 for fag in self._fagene: if fag.hentAntallStudenter() > antall_stud: antall_stud = fag.hentAntallStudenter() mest_pop_fag = fag if mest_pop_fag is None: print("Fant ikke studenten med flest fag, sjekk at studenter er meldt opp til fag") else: print("Faget med flest studenter er ", mest_pop_fag.hentFagNavn(), "med", antall_stud, "studenter") def leggTilStudent(self): # legger til en ny student navn = input("Hva heter studenten du vil legge til? \n> ") if self.finnStudent(navn) == None: stud = Student(navn) self._studentene.append(stud) else: print(navn, "er allerede registrert som student") def leggTilFag(self): # legger til et nytt fag navn = input("Hva heter faget du vil legge til? \n> ") if self.finnFag(navn) == None: self._fagene.append(Fag(navn)) else: print(navn, "er allerede registrert") def registererStudentVedFag(self): # registrer en student ved et fag studentnavn = input("Hvilken student vil du registrere i et fag?\n> ") fagnavn = input("Hvilket fag vil du registrere studenten på?\n> ") student = self.finnStudent(studentnavn) fag = self.finnFag(fagnavn) if student is None: print(studentnavn.capitalize(), "er ikke registrert som student") elif fag is None: print(fagnavn, "finnes ikke som fag") else: if student.tarFag(fag): print(studentnavn, "er allerede registrert ved", fagnavn) else: student.leggTilFag(fag) fag.leggTilStudent(student) print(studentnavn, "er nå registrert ved", fagnavn) def skrivMeny(self): print("\n"*5) print("*********** Studentsystem ***********") print(" 1 - legg til student") print(" 2 - legg til fag") print(" 3 - legg student til fag") print(" 4 - skriv ut studenter ved et fag") print(" 5 - skriv ut alle fagene til en student") print(" 6 - fag med flest studenter") print(" 7 - student med flest fag") print(" q - avslutt") def ordrelokke(self): valg = "" while valg != "q": self.skrivMeny() valg = input("> ") print("") if valg == "1": self.leggTilStudent() elif valg == "2": self.leggTilFag() elif valg == "3": self.registererStudentVedFag() elif valg == "4": self.skrivFag() elif valg == "5": self.skrivStudent() elif valg == "6": self.finnFagMedFlestStudenter() elif valg == "7": self.finnStudentMedFlestFag() elif valg == "q": print("Avslutter") else: print("Ugyldig valg!") # tester: system = Studentsystem() system.lesFil("fagliste.txt") system.ordrelokke()