#Oppgave 4a -> 4e
class Gruppe:
def __init__(self, krav):
self._krav = krav
self._navn = []
def legg_til_personer(self, personnavn):
for i in personnavn:
self._navn.append(i)
def legg_til_personer2(self, personnavn):
self._navn += personnavn
def hent_personer(self):
return self._navn
def hent_krav(self):
return self._krav
class Rom:
def __init__(self, romnummer, antall_senger, fasisliter):
self._romnummer = romnummer
self._antall_senger = antall_senger
self._fasiliteter = fasisliter #liste
self._gjester = []
self._utleid = False
def reserver(self, angi_navn):
self._gjester = angi_navn
self._utleid = True
def hent_ant_senger(self):
return self._antall_senger
def passer(self, fasiliteter): #vi antar at fasiliteter er en liste med strenger
if self._utleid:
return False
for fasilitet in fasiliteter:
if fasilitet not in self._fasiliteter:
return False
return True
def passer2(self, fasiliteter):
if self._utleid:
return False
if set(fasiliteter) in set(self._fasiliteter):
return True
return False
def __str__(self):
s = f"romnummer: {self._romnummer}. Antall senger: {self._hent_ant_senger()}. Fasiliteter: {self._fasiliteter} "
return s
class Hotell:
def __init__(self, hotellnavn):
self._hotellnavn = hotellnavn
self._rom = self._les_fra_fil()
#self._les_fra_fil2()
def _les_fra_fil(self):
midlertidig_ordbok = {}
with open(self._hotellnavn + "txt", "r") as fil:
for linje in fil:
linje = linje.split()
romnr = int(linje[0])
ant_senger = int(linje[1])
if(len(linje) > 2): #dette kan sl? ut feil hvis det ikke er fasiliteter tilh?rende rommet.
fasiliteter = linje[2:]
rom = Rom(romnr,ant_senger, fasiliteter)
midlertidig_ordbok[romnr] = rom
return midlertidig_ordbok
def _les_fra_fil2(self):
with open(self._hotellnavn + "txt", "r") as fil:
for linje in fil:
linje = linje.split()
romnr = int(linje[0])
ant_senger = int(linje[1])
if(len(linje) > 2): #dette kan sl? ut feil hvis det ikke er fasiliteter tilh?rende rommet.
fasiliteter = linje[2:]
rom = Rom(romnr,ant_senger, fasiliteter)
self._rom[romnr] = rom
def reserver_rom(self, romnr, gjester):
rom_reserveres = self._rom[romnr]
rom_reserveres.reserver(gjester)
def finn_passende_rom(self,krav): #krav er en liste
liste = []
for rom in self._rom.values():
if rom.passer(krav):
liste.append(rom)
return liste
def hent_hotellnavn(self):
return self._hotellnavn
class Reservasjonssystem:
def __init__(self, hotellnavn_liste):
self._hoteller = {}
for hotellnavn in hotellnavn_liste:
hotell = Hotell(hotellnavn)
self._hoteller[hotellnavn] = hotell
def reserver_rom_i_hotell(self, hotellnavn, romnr, gjester):
hotell = self._hoteller[hotellnavn]
hotell.reserver_rom(romnr, gjester)
#4e
def _finn_alle_passende_rom(self, krav_liste):
hotell_rom = {}
for hotell in self._hoteller.values():
passende_rom_liste = hotell.finn_passende_rom(krav_liste)
if passende_rom_liste != []:
hotell_rom[hotell.hent_hotellnavn()] = passende_rom_liste
return hotell_rom