From 31df253da46a521f7007daa2bc73b145c99b92ff Mon Sep 17 00:00:00 2001 From: Annukka Heinonen <annukka.h.heinonen@utu.fi> Date: Mon, 18 Dec 2023 13:02:16 +0000 Subject: [PATCH] Upload New File --- elokuvateatteri.py | 294 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 294 insertions(+) create mode 100644 elokuvateatteri.py diff --git a/elokuvateatteri.py b/elokuvateatteri.py new file mode 100644 index 0000000..fbd6a65 --- /dev/null +++ b/elokuvateatteri.py @@ -0,0 +1,294 @@ + +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) + 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 sulkee järjestelmän") + 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(): + + 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 + 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 elokuvalista: + 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: ")) + 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(elokuva_lista) + elokuva = input("Syötä haluamasi elokuvan nimi katsoaksesi sen tiedot: ") + elokuvien_tiedot(elokuvalista[elokuva]) + main() + elif arvo == 0: + print("Kiitos ja hei!") + + +main() -- GitLab