from student import Student from fag import Fag class Studentsystem: #11-1.1 def __init__(self): self._alleStudenter = [] self._alleFag = [] #11-1.2 def lesFil(self, filnavn): fil = open(filnavn) fag = None for linje in fil: if linje[0] == "*": #hvis stjerne saa er det fag fag = Fag(linje[1:-1]) self._alleFag.append(fag) else : #ellers er det student stud = self.finnStudent(linje[:-1]) #prover aa hente ut studenten if stud == None: #hvis den ikke finnes lager vi den stud = Student(linje[:-1]) self._alleStudenter.append(stud) #legger studentn til i faget og faget til i studenten fag.leggTilStudent(stud) stud.leggTilFag(fag) fil.close() #11-1.3 def finnStudent(self, navn): for student in self._alleStudenter: if student.hentStudentNavn() == navn: return student return None #11-1.4 def finnFag(self, navn): for fag in self._alleFag: if fag.hentFagNavn() == navn: return fag return None #11-2.1 def skrivStudent(self): navn = input("Hva heter personen du vil se oversikten til?") student = self.finnStudent(navn) if student == None: print(navn + " finnes ikke i studentsystemet.") else: student.skrivFagPaaStudent() #11-2.2 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() #11-2.3 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.") #11-2.4 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.") #11-3.1 def leggTilStudent(self): #TODO 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.") #11-3.2 def leggTilFag(self): #TODO 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.") #11-4.1 def leggTilStudentIFag(self): navn = input("Hva heter studenten du vil legge til i faget?") stud = self.finnStudent(navn) 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) if fag == None: print(fagNavn + " finnes ikke. Registrer faget foer du legger til t(!) if stud.tarFag(fag):studenter.") return #ellers er alt ok, da sjekker vi om studenten allerede tar faget(!) 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 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() elif inntast != "q": 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") #HVIS TID: 9 - fullstendig oversikt def skrivAlt(self): for fag in self._alleFag: fag.skrivStudenterVedFag() #HVIS TID: #11-7 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 #sjekker om studenten tar faget, hvis den ikke tar det gjoer vi ikke noe. if not stud.tarFag(fag): print(navn + " tar ikke " + fagNavn) else: #hvis studenten finnes, faget finnes, og studenten faktisk tar faget, saa kan vi fjerne den! stud.fjernFag(fag) fag.fjernStudent(stud) print(navn + " fjernet fra " + fagNavn) #11-6 def hovedprogram(): system = Studentsystem() system.lesFil("fagliste.txt") system.ordrelokke() hovedprogram()