from fag import Fag from student import Student class Studentsystem: def __init__(self): self._alleStudenter = [] self._alleFag = [] def lesFraFil(self, filnavn): # Lese fra fil fil = open(filnavn, "r") fag = None for linje in fil: # Fjerner linjeskift linje = linje.strip() # Sjekker om forste tegn er * - da er det navnet p? et fag if linje[0] == "*": # Fjerner * fra fagnavnet fagnavn = linje.strip("*") # Oppretter et fag med fagnavnet fag = Fag(fagnavn) # Legger til faget i listen over fag self._alleFag.append(fag) else: studentnavn = linje # Sjekker om det allerede finnes en student med samme # navn i studentsystemet student = self.finnStudent(studentnavn) # Hvis det ikke finnes en student med samme navn fra f?r # s? oppretter vi en student med det navnet if student is None: # Opprett student student = Student(studentnavn) # Legg til student i listen over studenter self._alleStudenter.append(student) # Legg til faget hos studenten og studenten hos faget fag.leggTilStudent(student) student.leggTilFag(fag) def finnStudent(self, studentnavn): for student in self._alleStudenter: # Sjekk om student har samme navn som parameteren if student.hentStudentNavn() == studentnavn: # I saa fall returnerer vi studenten (Student-objekt) return student # Hvis vi ikke finner en student med samme navn returnerer vi None return None def finnFag(self, fagnavn): for fag in self._alleFag: if fag.hentFagNavn() == fagnavn: return fag return None def skrivStudent(self): studentnavn = input("Hva heter studenten du vil se oversikten til? ") student = self.finnStudent(studentnavn) if student is None: print(studentnavn + " finnes ikke i studentsystemet.") else: student.skrivFagPaaStudent() def skrivFag(self): navn = input("Hva heter faget du vil se oversikt over?") fag = self.finnFag(navn) if fag == None: print(navn + " finnes ikke i studentsystemet.") else: fag.skrivStudenterVedFag() def finnStudentMedFlestFag(self): studMFlest = None antallFlest = 0 for stud in self._alleStudenter: if stud.hentAntallFag() > antallFlest: studMFlest = stud antallFlest = stud.hentAntallFag() print("Student med flest fag: " + studMFlest.hentStudentNavn() + ", har " + str(antallFlest) + " fag.") def finnFagMedFlestStudenter(self): fagMFlest = None antallFlest = 0 for fag in self._alleFag: if fag.hentAntallStudenter() > antallFlest: fagMFlest = fag antallFlest = fag.hentAntallStudenter() print("Fag med flest studenter: " + fagMFlest.hentFagNavn() + ", har " + str(antallFlest) + " studenter.") def leggTilStudent(self): navn = input("Hva heter studenten du vil legge til? ") if self.finnStudent(navn) == None: self._alleStudenter.append(Student(navn)) print(navn + " lagt til.") else: print(navn + " finnes allerede.") def leggTilFag(self): navn = input("Hva heter faget du vil legge til? ") if self.finnFag(navn) == None: self._alleFag.append(Fag(navn)) print(navn + " lagt til.") else: print(navn + " finnes allerede.") def leggTilStudentIFag(self): navn = input("Hva heter studenten du vil legge til i faget? ") stud = self.finnStudent(navn) # Sjekker om studenten finnes if stud == None: print(navn + " finnes ikke. Registrer studenten forst for aa legge til i fag.") return fagNavn = input("I hvilket fag vil du legge til " + navn +"? ") fag = self.finnFag(fagNavn) # Sjekker om faget finnes if fag == None: print(fagNavn + " finnes ikke. Registrer faget foer du legger til t(!)") # Sjekker om studenten allerede tar faget/er registrert if stud.tarFag(fag): print(navn + " tar allerede " + fagNavn) else: # Hvis studenten finnes, faget finnes, og studenten ikke allerede er registrert, saa legger vi den til! stud.leggTilFag(fag) fag.leggTilStudent(stud) print(navn + " er lagt til i " + fagNavn) def fjernStudentFraFag(self): navn = input("Hva heter studenten du vil fjerne fra faget? ") stud = self.finnStudent(navn) if stud == None: print(navn + " finnes ikke.") return fagNavn = input("Fra hvilket fag vil du fjerne " + navn +"? ") fag = self.finnFag(fagNavn) if fag == None: print(fagNavn + " finnes ikke.") return if not stud.tarFag(fag): print(navn + " tar ikke " + fagNavn) else: stud.fjernFag(fag) fag.fjernStudent(stud) print(navn + " fjernet fra " + fagNavn) def ordrelokke(self): inntast = "" while inntast != "q": self.skrivMeny() inntast = input("Skriv inn ditt valg: ") if inntast == "1": self.leggTilStudent() elif inntast == "2": self.leggTilFag() elif inntast == "3": self.leggTilStudentIFag() elif inntast == "4": self.skrivFag() elif inntast == "5": self.skrivStudent() elif inntast == "6": self.finnFagMedFlestStudenter() elif inntast == "7": self.finnStudentMedFlestFag() elif inntast == "8": self.fjernStudentFraFag() elif inntast == "9": self.skrivAlt() else: print("Ugylig input.\n") print("Avslutter programmet") def skrivMeny(self): print("--Meny--") print("1 - Legg til ny student") print("2 - Legg til nytt fag") print("3 - Legg til student i fag") print("4 - Skriv ut studenter ved fag") print("5 - Skriv ut alle fag til student") print("6 - Finn fag som blir tatt av flest") print("7 - Finn student som tar flest fag") print("8 - Fjern student fra fag") print("9 - Fullstendig oversikt") print("q - Avslutt") def skrivAlt(self): for fag in self._alleFag: fag.skrivStudenterVedFag()