from fag import Fag from student import Student class Studentsystem: #11-1.1 def __init__(self): self._alle_studenter = [] self._alle_fag = [] #11-1.2 def les_fil(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._alle_fag.append(fag) else : #ellers er det student stud = self.finn_student(linje[:-1]) #prover aa hente ut studenten if stud == None: #hvis den ikke finnes lager vi den stud = Student(linje[:-1]) self._alle_studenter.append(stud) #legger studentn til i faget og faget til i studenten fag.legg_til_student(stud) stud.legg_til_fag(fag) fil.close() #11-1.3 def finn_student(self, navn): for student in self._alle_studenter: if student.hent_student_navn() == navn: return student return None #11-1.4 def finn_fag(self, navn): for fag in self._alle_fag: if fag.hent_fag_navn() == navn: return fag return None #11-2.1 def skriv_student(self): navn = input("Hva heter personen du vil se oversikten til?") student = self.finn_Student(navn) if student == None: print(navn + " finnes ikke i studentsystemet.") else: student.skriv_fag_paa_student() #11-2.2 def skriv_fag(self): navn = input("Hva heter faget du vil se oversikt over?") fag = self.finn_fag(navn) if fag == None: print(navn + " finnes ikke i studentsystemet.") else: fag.skriv_studenter_ved_fag() #11-2.3 def finn_student_med_flest_fag(self): stud_m_flest = None ant = 0 for stud in self._alle_studenter: if stud.hent_antall_fag() > ant: student_m_flest = stud ant = stud.hent_antall_fag() print("Student med flest fag: " + stud_m_flest.hent_student_navn() + ", har " + str(ant)+ " fag.") #11-2.4 def finn_fag_med_flest_studenter(self): fag_m_flest = None ant = 0 for fag in self._alle_fag: if fag.hent_antall_studenter() > ant: fag_m_flest = fag ant = fag.hent_antall_studenter() print("Fag med flest studenter: " + fag_m_flest.hent_fag_navn() + ", har " + str(ant) + " studenter.") #11-3.1 def legg_til_student(self): #TODO navn = input("Hva heter studenten du vil legge til?") if self.finn_student(navn) == None: self._alle_studenter.append(Student(navn)) print(navn + " lagt til.") else: print(navn + " finnes allerede.") #11-3.2 def legg_til_fag(self): #TODO navn = input("Hva heter faget du vil legge til?") if self.finn_fag(navn) == None: self._alle_fag.append(Fag(navn)) print(navn + " lagt til.") else: print(navn + " finnes allerede.") #11-4.1 def legg_til_student_fag(self): navn = input("Hva heter studenten du vil legge til i faget?") stud = self.finn_student(navn) if stud == None: print(navn + " finnes ikke. Registrer studenten forst for aa legge til i fag.") return fag_navn = input("I hvilket fag vil du legge til " + navn +"?") fag = self.finn_fag(fag_navn) if fag is None: print(fag_navn + " finnes ikke i systemet, registrer faget f?rst") return #ellers er alt ok, da sjekker vi om studenten allerede tar faget(!) if stud.tarFag(fag): print(navn + " tar allerede " + fag_navn) else: #hvis studenten finnes, faget finnes, og studenten ikke allerede er registrert, saa legger vi den til! stud.legg_til_fag(fag) fag.legg_til_student(stud) print(navn + " er lagt til i " + fag_navn) def ordrelokke(self): inntast = "" while inntast != "q": self.skriv_meny() inntast = input("Skriv inn ditt valg: ") if inntast == "1": self.legg_til_student() elif inntast == "2": self.legg_til_fag() elif inntast == "3": self.legg_til_student_fag() elif inntast == "4": self.skriv_fag() elif inntast == "5": self.skriv_student() elif inntast == "6": self.finn_fag_med_flest_studenter() elif inntast == "7": self.finn_student_med_flest_fag() #elif inntast == "8": #self.fjernStudentFraFag() elif inntast == "9": self.skriv_alt() elif inntast != "q": print("Ugylig input.\n") print("Avslutter programmet") def skriv_meny(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 skriv_alt(self): for fag in self._alle_fag: fag.skriv_studenter_ved_fag() #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)