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