from student import Student from fag import Fag class Studentsystem: def __init__(self): self._studentliste = [] self._fagliste = [] def lesFraFil(self, filnavn): fil = open(filnavn) fag = None for linje in fil: # Fjerner linjeskift/mellomrom linje = linje.strip() # Hvis linjen er et fagnavn: if linje[0] == "*": nyttFag = Fag(linje[1:]) self._fagliste.append(nyttFag) fag = nyttFag # Hvis ikke linjen er et fagnavn, er det en student: else: # Sjekker om studenten finnes fra før. student = self.finnStudent(linje) # Hvis studenten ikke finnes, oppretter vi et nytt objekt # og legger det til i listen. if student == None: student = Student(linje) self._studentliste.append(student) self.registrer(student, fag) fil.close() # Søker etter en student i studentlisten. # Returnerer referanse til objektet hvis det finnes, None hvis ikke. def finnStudent(self, navn): for student in self._studentliste: if navn == student.hentStudentNavn(): return student return None # Søker etter et fag i faglisten. # Returnerer referanse til objektet hvis det finnes, None hvis ikke. def finnFag(self, fagnavn): returverdi = None for fag in self._fagliste: if fag.hentFagnavn() == fagnavn: returverdi = fag return returverdi # Registrerer et student til et fag, og et fag til en student. def registrer(self, student, fag): student.leggTilFag(fag) fag.leggTilStudent(student) # Skriver informasjon om en student hentet fra bruker. def skrivStudent(self): navn = input("Hva heter studenten du vil se oversikten til?\n> ") student = self.finnStudent(navn) if student == None: print(navn + " finnes ikke i studentsystemet!") else: student.skrivFagPaaStudent() # Skriver informasjon om et fag hentet fra bruker. def skrivFag(self): navn = input("Hva heter faget du vil se oversikten til?\n> ") fag = self.finnFag(navn) if fag == None: print(navn + " finnes ikke i studentsystemet!") else: fag.skrivStudenterVedFag() # Skriver til terminal studenten som tar flest fag. Antar at det finnes # minst en student i systemet. def skrivStudentMedFlestFag(self): studMedFlestFag = self._studentliste[0] # Sammenligner hver student med topp-studenten. for student in self._studentliste: if student.hentAntallFag() > studMedFlestFag.hentAntallFag(): studMedFlestFag = student print("Student med flest fag: {}, har {} fag.".format(\ studMedFlestFag.hentStudentNavn(), \ studMedFlestFag.hentAntallFag())) # Skriver til terminal faget som har flest studenter. Antar at det finnes # minst ett fag i systemet def skrivFagMedFlestStudenter(self): mestPopFag = self._fagliste[0] # Sammenligner hvert fag med det mest populære for fag in self._fagliste: if fag.hentAntallStudenter() > mestPopFag.hentAntallStudenter(): mestPopFag = fag print("Fag med flest studenter: {}, har {} studenter.".format(\ mestPopFag.hentFagnavn(), \ mestPopFag.hentAntallStudenter()))