From 5bc2aea935d36894152a1a70488f876b094424db Mon Sep 17 00:00:00 2001
From: Annukka Heinonen <annukka.h.heinonen@utu.fi>
Date: Thu, 21 Dec 2023 12:25:06 +0000
Subject: [PATCH] Upload New File
---
elokuvateatteri.py | 301 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 301 insertions(+)
create mode 100644 elokuvateatteri.py
diff --git a/elokuvateatteri.py b/elokuvateatteri.py
new file mode 100644
index 0000000..cf6382f
--- /dev/null
+++ b/elokuvateatteri.py
@@ -0,0 +1,301 @@
+
+elokuvalista = {}
+naytosajat = {}
+elokuva_lista = naytosajat.keys()
+varaukset = {}
+oikea = ""
+
+def nouda_salasana():
+ with open("salasana.txt", "r") as tiedosto:
+ for rivi in tiedosto:
+ oikea = rivi.strip()
+ return oikea
+
+def nouda_elokuvalista():
+ with open("elokuvalista.txt", "r") as tie:
+ for rivi in tie:
+ kasa=rivi.strip().split(",")
+ elokuvalista[kasa[0]] = (kasa[1], kasa[2])
+ return elokuvalista
+
+def nouda_naytokset():
+ with open("naytosajat.txt", "r") as tied:
+ for rivi in tied:
+ joukko = rivi.strip().split(":")
+ joukko2 = joukko[1].strip().split(";")
+ arvo = []
+ for i in joukko2:
+ joukko3 = i.strip().split(",")
+ arvo.append(joukko3)
+ arvo.pop()
+ naytosajat[joukko[0]] = arvo
+ return naytosajat
+
+def lisaa_elokuva(nimi: str, kesto: str, ikaraja: int):
+ with open("elokuvalista.txt", "a") as t:
+ t.write(nimi + ", " + kesto + ", " + ikaraja + "\n")
+ nouda_elokuvalista()
+
+def lisaa_naytos(naytosajat: dict, nimi: str, paiva: str, kello: str, sali: str):
+ with open("naytosajat.txt", "a") as naytokset:
+ naytos = [paiva, kello, sali] #uusi näytös listan
+ if not nimi in naytosajat.keys():
+ naytosajat[nimi] = naytos
+ naytokset.write(nimi + ": " + paiva + ", " + kello + "," + sali + "; " "\n")
+ else:
+ with open("naytosajat.txt", "r") as naytokset:
+ rivit = naytokset.readlines()
+ for i in rivit:
+ if i.split(":")[0] == nimi:
+ rivit[rivit.index(i)] = i.strip() + paiva + "," + kello + "," + sali + "\n"
+ with open("naytosajat.txt", "w") as tie:
+ tie.writelines(rivit)
+ nouda_naytokset()
+
+def selaa_varauksia():
+ with open("varaukset.txt", "r") as tiedosto:
+ print("Varaukset:")
+ for rivi in tiedosto:
+ lista = rivi.strip().split(",")
+ print(f"Varaaja: {lista[0]}, Elokuva: {lista[1]}, Näytös: {lista[2]}, {lista[3]}, {lista[4]}, Paikka: {lista[5]} ")
+
+def salasanan_vaihtaminen():
+ while True:
+ vanha = input("Anna vanha salasana: ")
+ if vanha == nouda_salasana():
+ while True:
+ uusi1 = input("Anna uusi salasana: ")
+ uusi2 = input("Anna uusi salasana uudelleen: ")
+ if uusi1 == uusi2:
+ with open("salasana.txt", "w") as tiedosto:
+ tiedosto.write(uusi1)
+ print("Salasanan vaihto onnistui!")
+ break
+ else:
+ print("Uudet salasanat eivät olleet samoja.")
+ jatko = input("Jos haluat yrittää uudelleen paina 1, jos haluat palata ylläpitoon paina 2.")
+ if jatko == 2:
+ break
+ break
+ else:
+ print("Vanha salasana ei ollut oikein.")
+
+def admin():
+ nouda_elokuvalista()
+ nouda_naytokset()
+ while True:
+ print("1 lisää elokuva")
+ print("2 lisää näytös")
+ print("3 selaa varauksia")
+ print("0 palaa etusivulle")
+ arvo = int(input("Anna toiminto: "))
+ if arvo == 1:
+ nimi = input("Anna elokuvan nimi: ")
+ kesto = input("Anna elokuvan kesto (0h 0min): ")
+ ikaraja = input("Anna elokuvan ikäraja (K16): ")
+ lisaa_elokuva(nimi, kesto, ikaraja)
+ elif arvo == 2:
+ print(f"Ohjelmistossa nyt: {elokuvalista.keys()}")
+ nimi = input("Mihin elokuvaan haluta lisätä näytöksen? ")
+ #!!!!!!!!lisää varmistus, jolla ohjelma ei kaadu vain funktio loppuu jos nimi on väärin
+ paiva = input("Minä päivänä näytös on? (dd.mm.) ")
+ kello = input("Mihin aikaan näytös on? (hh.mm) ")
+ sali = input("Missä salissa näytös on? ")
+ lisaa_naytos(naytosajat, nimi, paiva, kello, sali)
+ elif arvo == 3:
+ selaa_varauksia()
+ if arvo == 0:
+ break
+
+def salaus():
+ indeksi = 3
+ while True:
+ salaus = input(f"Anna salasana: ")
+ if salaus == nouda_salasana():
+ print("Oikea salasana!")
+ admin()
+ break
+ elif salaus != nouda_salasana() and indeksi > 1:
+ indeksi -= 1
+ print(f"Väärä salasana! Yrityksiä jäljellä {indeksi}.")
+ else:
+ print("Salasana väärä! (palaa etusivulle)")
+ break
+
+
+def elokuvien_tiedot(elokuva: tuple):
+ ikaraja, kesto = elokuva
+ print(f"{ikaraja}, {kesto}")
+ #Yritin tehdä sen listan ja siihen liittyvän sanakirjan, että pystyis tarkasteelee niitä elokuvia erikseen
+
+def varaus():
+ nouda_elokuvalista()
+ nouda_naytokset()
+
+ eka_sali = [[1,2,3,4,5,6,7,8,9,10],
+ [11,12,13,14,15,16,17,18,19,20],
+ [21,22,23,24,25,26,27,28,29,30],
+ [31,32,33,34,35,36,37,38,39,40],
+ [41,42,43,44,45,46,47,48,49,50],
+ [51,52,53,54,55,56,57,58,59,60],
+ [61,62,63,64,65,66,67,68,69,70],
+ [71,72,73,74,75,76,77,78,79,80],
+ [81,82,83,84,85,86,87,88,89,90],
+ [91,92,93,94,95,96,97,98,99,100]]
+
+ toka_sali = [[1,2,3,4,5,6,7],
+ [8,9,10,11,12,13,14],
+ [15,16,17,18,19,21,22],
+ [23,24,25,26,27,28,29],
+ [30,31,32,33,34,35,36],
+ [37,38,39,40,41,42,43],
+ [44,45,46,47,48,49,50]]
+
+ kolmas_sali = [[1,2,3,4,5,],
+ [6,7,8,9,10],
+ [11,12,13,14,15],
+ [16,17,18,19,20],
+ [21,22,23,24,25]]
+
+
+ salit={"1 sali":eka_sali, "2 sali": toka_sali, "3 sali":kolmas_sali}
+
+
+ def tallennavaraus(varaaja, elokuva, aika, paiva, saliNimi, paikka):
+ global varaukset#tallentaa uuden varauksen varaukset.txt tiedostoon
+ with open("varaukset.txt", "a") as tiedosto:
+ rivi = f"{varaaja},{elokuva},{aika},{paiva},{saliNimi},{paikka}" + "\n"
+ tiedosto.write(rivi)
+ varaukset[varaaja]=f"{varaaja},{elokuva},{aika},{paiva},{saliNimi},{paikka}"
+
+ def haevaraukset(): #hakee varaukset varaukset.txt tiedostosta
+ global varaus
+ varaukset.clear()
+ with open("varaukset.txt", "r") as tiedosto:
+ for rivi in tiedosto:
+ if rivi == "":
+ return
+ tiedot=rivi.strip().split(",")
+ varaukset[tiedot[0]]=",".join(tiedot[1:])
+
+ def tulosta_naytokset(elokuva): #tulostaa elokuvan kaikki näytökset
+ nouda_naytokset()
+ for i in range(len(naytosajat[elokuva])):
+ print(naytosajat[elokuva][i][0], naytosajat[elokuva][i][1], naytosajat[elokuva][i][2])
+
+ def tulosta_sali(salit):
+ for rivi in salit:
+ print(rivi)
+
+
+ def varaa_paikka(sali, paikka):
+ for rivi in sali:
+ for penkki in rivi:
+ if penkki == paikka:
+ penkki == "X"
+
+ def on_varattavissa(sali, paikka):
+ for rivi in sali:
+ for penkki in rivi:
+ if penkki == paikka:
+ if penkki == "X":
+ return False
+ return True
+
+ def tee_varaus(elokuva,naytos): #paikan varaamninen tehdään tällä funktiolla
+ onVarannut = False
+ salikartta = naytosajat[elokuva][naytos][2]
+
+ paikka = int(input("Anna paikan numero: "))
+ if on_varattavissa(salikartta, paikka):
+ varaa_paikka(salikartta, paikka)
+ onVarannut = True
+ else:
+ print("Varaa toinen paikka.")
+ return paikka
+
+ def tulostaVaratut(paiva,aika,sali):
+ global varaukset#funktio, joka tulostaa varatut paikat X:nä salikartassa1
+ paikat = []
+ for varaus in varaukset:
+ jaettu=varaukset[varaus].split(",")
+ time=jaettu[1]
+ date=jaettu[2]
+ if date==paiva and time==aika:
+ paikat.append(jaettu[-1])
+ for rivi in salit[sali]:
+ for paikka in rivi:
+ if str(paikka) in paikat:
+ print("X",end=" ")
+ else:
+ print(paikka,end=" ")
+ print()
+
+ def varaa_elokuva(): #itse elokuvan ja paikan varaaminen on tämän funktion alla
+ elokuvaValittu = False
+ while not elokuvaValittu:
+ for i in elokuva_lista:
+ print(i) #listaa elokuvat, mitä nähtävissä
+ elokuva = input("Valitse haluamasi elokuva: ")#syötetään haluttu elokuvan nimi
+ if elokuva in naytosajat: #käy läpi onko elokuva näytosajat sanakirjassa
+ elokuvaValittu = True
+ else:
+ print("Elokuva ei ole ohjelmistossa.") #jos elokuva ei ole näytösajoissa, kertoo että elokuva ei ole nähtävissä
+ tulosta_naytokset(elokuva)
+ elokuvan_indexi = list(naytosajat.keys()).index(elokuva)
+ naytos = int(input("Valitse haluamasi näytös: "))# 1 eka näytös, 2 toinen näytös, 3 kolmas näytös
+
+ ajat=naytosajat.get(elokuva)
+ sali=ajat[naytos-1][2]
+ print(sali)
+
+ #tulostaa salin, jossa näytös on
+ paiva,aika,salinro=naytosajat[elokuva][naytos]
+ tulostaVaratut(paiva, aika, sali) #tulostaa salikartan, jossa näkyy näkyy varatut paikat X:llä
+
+ nimi = input("Anna nimi, jolle varaus tehdään: ") #kysyy nimen, jolle varaus tehdään
+ paikka = tee_varaus(elokuva,naytos) #tee_varaus funktio kysy halutun istumapaikan ja varaa sen
+ tallennavaraus(nimi,elokuva,aika,paiva,salinro,paikka) #tallentaa varauksen tiedot varaukset.txt tiedostoon
+
+ print("Kiitos varauksesta!")
+ main_varaus()
+
+ def main_varaus(): #varaamisen valikko, josta pääsee varaamaan tai takaisin etusivulle
+ print("1 varaa elokuva")
+ print("2 palaa etusivulle")
+ arvo = int(input("Anna toiminto: "))
+ nouda_elokuvalista()
+ nouda_naytokset()
+ haevaraukset()
+ if arvo == 1:
+ varaa_elokuva()
+ elif arvo == 2:
+ print("Kiitos ja hei!")
+ main()
+ main_varaus()
+
+def main():
+ nouda_elokuvalista()
+ nouda_naytokset()
+ print("1 Varaaminen")
+ print("2 ylläpito")
+ print("3 Elokuvat ja niiden tiedot") # lisäsin sen elokuvien tarkasstelun tähän alotukseen
+ print("0 sulkee järjestelmän")
+
+ while True:
+ arvo = int(input("Anna toiminto: "))
+ if arvo == 1:
+ varaus()
+ elif arvo == 2:
+ salaus()
+ elif arvo == 3:
+ print(elokuvalista.keys())
+ elokuva = input("Syötä haluamasi elokuvan nimi katsoaksesi sen tiedot: ")
+ elokuvien_tiedot(elokuvalista[elokuva])
+ main()
+ elif arvo == 0:
+ print("Kiitos ja hei!")
+ break
+
+main()
+
--
GitLab