from student import Student from fag import Fag class Studentsystem: # 1.1 def __init__(self): self._alleStudenter = [] self._alleFag = [] # 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() # 1.3 def finnStudent(self, navn): for student in self._alleStudenter: if student.hentStudentNavn() == navn: return student return None # 1.4 def finnFag(self, navn): for fag in self._alleFag: if fag.hentFagNavn() == navn: return fag return None # 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() # 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() # 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.") # 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.") # 3.1 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.") # 3.2 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.") # 4 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") #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) # 5 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: # 7 def fjernStudent(self, student): self._studenter.remove(student) def fjernFag(self, fag): self._fag.remove(fag) 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)