from student import Student from fag import Fag class StudentSystem: def __init__(self): self._alleFag = [] self._alleStudenter = [] def lesFraFil(self, filnavn): fil = open(filnavn, "r") fag = None for linje in fil: if linje[0] == "*": #fag = Fag(linje.strip().strip("*")) fag = Fag(linje[1:-1]) self._alleFag.append(fag) else: stud = self.hentStudent(linje.strip()) if stud == None: stud = Student(linje.strip()) self._alleStudenter.append(stud) stud.leggTilFag(fag) fag.leggTilStudent(stud) fil.close() def hentStudent(self, navn): for stud in self._alleStudenter: if stud.hentStudentNavn() == navn: return stud return None def hentFag(self, navn): for fag in self._alleFag: if fag.hentFagNavn() == navn: return fag return None def skrivInfoStudent(self): navn = input("Skriv navn på student: ") stud = self.hentStudent(navn) if stud == None: print("Det finnes ingen student med navnet", navn) else: stud.skrivFagPaaStudent() def skrivInfoFag(self): fagnavn = input("Oppgi fagnavn:\n") fag = self.hentFag(fagnavn) if fag == None: print("Fant ikke faget", fagnavn, "i systemet!") else: fag.skrivStudenterVedFag() def skrivInfo(self): # for å teste print("Studenter") for stud in self._alleStudenter: print(stud.hentStudentNavn()) print("Fag") for fag in self._alleFag: print(fag.hentFagNavn()) def studentMedFlestFag(self): antallFag = 0 studenten = None for stud in self._alleStudenter: if stud.hentAntallFag() >= antallFag: antallFag = stud.hentAntallFag() studenten = stud if studenten == None: print("Fant ingen studenter") else: print(studenten.hentStudentNavn(), "tar flest fag med", antallFag, "fag.") def fagMedFlestStudenter(self): antallStudenter = 0 faget = None for fag in self._alleFag: if fag.hentAntallStudenter() >= antallStudenter: antallStudenter = fag.hentAntallStudenter() faget = fag if faget == None: print("Fant ingen fag") else: print(faget.hentFagNavn(), "har flest studenter med", antallStudenter, "studenter.") def leggTilNyStudent(self): navn = input("Oppgi navn på ny student: \n") if self.hentStudent(navn) == None: student = Student(navn) self._alleStudenter.append(student) print("Studenten", navn, "er lagt inn i systemet") else: print("Studenten", navn, "finnes allerede i systemet") def leggTilNyttFag(self): fagnavn = input("Oppgi navn på nytt fag: \n") if self.hentFag(fagnavn) == None: fag =Fag(fagnavn) self._alleFag.append(fag) print("Faget", fagnavn, "er lagt inn i systemet") else: print("Faget", fagnavn, "finnes allerede i systemet") def registererStudentVedFag(self): print("Registrere studenten ved fag") studentnavn = input("Oppgi navn på student: ") fagnavn = input("Oppgi faget: ") studenten = self.hentStudent(studentnavn) faget = self.hentFag(fagnavn) if faget == None: print(fagnavn, "finnes ikke i systemet") elif studenten == None: print(studentnavn, "finnes ikke i systemet") else: if studenten.tarFag(faget): print(studentnavn, "er allerede registrert ved", fagnavn) else: studenten.leggTilFag(faget) faget.leggTilStudent(studenten) print(studentnavn, "er nå registrert ved", fagnavn) def fjernStudentFraFag(self): print("Avmelde studenten fra fag") studentnavn = input("Oppgi navn på student: ") fagnavn = input("Oppgi faget: ") studenten = self.hentStudent(studentnavn) faget = self.hentFag(fagnavn) if faget == None: print(fagnavn, "finnes ikke i systemet") elif studenten == None: print(studentnavn, "finnes ikke i systemet") else: if studenten.tarFag(faget): print(studentnavn, "er nå avmeldt", fagnavn) studenten.fjernFag(faget) faget.fjernStudent(studenten) else: print(studentnavn, "tar ikke", fagnavn) def skrivMeny(self): print("""---------- Studentsystem ---------- 1 - legg til ny student 2 - legg til nytt fag 3 - registrer student ved fag 4 - skriv ut alle studenter ved fag 5 - skriv ut alle fag en student tar 6 - hvilket fag blir tatt av flest studenter 7 - hvilken student tar flest fag 8 - avmelde student av fag q - avslutt ---------- ********* ---------- """) def ordrelokke(self): self.skrivMeny() inp = input("> ") while inp != "q": if inp == "1": self.leggTilNyStudent() elif inp == "2": self.leggTilNyttFag() elif inp == "3": self.registererStudentVedFag() elif inp == "4": self.skrivInfoFag() elif inp == "5": self.skrivInfoStudent() elif inp == "6": self.fagMedFlestStudenter() elif inp == "7": self.studentMedFlestFag() elif inp == "8": self.fjernStudentFraFag() self.skrivMeny() inp = input("> ") def hovedprogram(): system = StudentSystem() system.lesFraFil("emnestudenter.txt") system.ordrelokke() hovedprogram()