from fag import Fag
from student import Student
class StudentSystem:
def __init__(self):
self._studenter = []
self._fag = {}
def skrivUtInfoOmStudenter(self):
for student in self._studenter:
student.skrivUtFagPaaStudent()
def skrivUtInfoOmFag(self):
for fagNavn in self._fag:
self._fag[fagNavn].skrivStudenterVedFag()
def leggTilStudent(self, student):
self._studenter.append(student)
def leggTilFag(self, fag):
self._fag[fag.hentFagNavn()] = fag
#Antar at man skal legge til studenter/fag hvis de ikke er lagt til fra f?r av
def leggTilStudentIFag(self, student, fag):
if not student in self._studenter:
self.leggTilStudent(student)
if not fag in self._fag:
self.leggTilFag(fag)
student.leggTilFag(fag)
fag.leggTilStudent(student)
def hentFagMedFlestStudenter(self):
flestStudFag = self._fag[list(self._fag.keys())[0]]
for fagNavn in self._fag:
fag = self._fag[fagNavn]
if fag.hentAntallStudenter() > flestStudFag.hentAntallStudenter():
flestStudFag = fag
return fag
def hentStudentMedFlestFag(self):
flestFagStud = self._studenter[0]
for student in self._studenter:
if student.hentAntallFag() > flestFagStud.hentAntallFag():
flestFagStud = student
return flestFagStud
def lesFraFil(self, filNavn):
fil = open(filNavn)
fag = None
for linje in fil:
if linje[0] == "*":
fag = Fag(linje.strip().strip("*"))
self.leggTilFag(fag)
else:
student = Student(linje.strip())
self.leggTilStudent(student)
self.leggTilStudentIFag(student, fag)
fil.close()
#hjelpe metode
def _leggTilFagPaaStudentNavn(self,studentNavn, fag):
for student in self._studenter:
if student.hentStudentNavn() == studentNavn:
self.leggTilStudentIFag(student, fag)
def _printUtOprasjoner(self):
print("---Operasjoner---")
print("F: les inn fra fil")
print("SF: student med flest fag")
print("FS: fag med flest studenter")
print("LS: legg til student")
print("LF: legg til fag")
print("IF: skriv ut info om fag")
print("IS: skriv ut info om student")
print("STF: legg til student i fag")
print("A: avslutt")
def interaktiv(self):
self._printUtOprasjoner()
oprasjon = input("Hva vil du gj?re? ").lower()
while(oprasjon != "a"):
if oprasjon == "f":
fil = input("Hvilken fil vil du lese fra ?")
self.lesFraFil(fil)
elif oprasjon == "sf":
student = self.hentStudentMedFlestFag()
print("Student med flest fag:", student.hentStudentNavn())
elif oprasjon == "fs":
fag = self.hentFagMedFlestStudenter()
print("Fag med flest studenter:", fag.hentFagNavn())
elif oprasjon =="ls":
navn = input("Hva heter studenten:")
student = Student(navn)
self.leggTilStudent(navn)
elif oprasjon =="lf":
navn = input("Hva heter faget:")
student = Fag(navn)
self.leggTilFag(navn)
elif oprasjon == "if":
self.skrivUtInfoOmFag()
elif oprasjon == "is":
self.skrivUtInfoOmStudenter()
elif oprasjon == "stf": #antar at hvis flere studenter heter det samme saa skal alle med det navnet ta faget
fagNavn = input("Hva heter faget? ")
studentNavn = input("Hva heter studenten? ")
print(self._fag)
if fagNavn in self._fag:
self._leggTilFagPaaStudentNavn(studentNavn, self._fag[fagNavn])
else:
print(fagNavn, " eksisterer ikke i vaart system.")
else:
print(oprasjon, "er ikke tilgjenglig")
self._printUtOprasjoner()
oprasjon = input("Hva vil du gj?re? ").lower()