Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # methodsFile.py
- import random
- import string
- import csv
- import datetime
- lstUniqueNumbers = []
- lstGebruikersGegevens = [0,0,0]
- aantalStallingen = 50
- def uniqueNumber():
- 'genereert een uniek getal voor de gebruiker'
- uniekNummer = ''
- while True:
- uniekNummer = uniekNummer.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in range(10))
- if uniekNummer in lstUniqueNumbers:
- # exception voor een kans van n/839.299.365.868.340.224 met n=users
- uniekNummer = ''
- else:
- break
- # Moet nog uit de while loop kunnen gaan
- lstUniqueNumbers.append(uniekNummer)
- print(lstUniqueNumbers)
- return uniekNummer
- def registreren(voornaam, tussenvoegsel, achternaam, wachtwoordPara):
- 'vraagt gebruiker voor zijn/haar naam'
- gebruikersNummer = ''
- wachtwoord = ''
- noOfIntsInPass = 0
- for o in wachtwoordPara:
- wachtwoord += o
- try:
- int(o)
- noOfIntsInPass += 1
- except ValueError:
- pass
- while True:
- if len(wachtwoord) >= 6 and noOfIntsInPass >= 2:
- geldigWachtwoord = True
- break
- else:
- print('Incorrect wachtwoord. Probeer het opnieuw')
- geldigWachtwoord = False
- break
- # formatting is moeilijk
- if tussenvoegsel == '':
- naamUser = voornaam + ' ' + achternaam
- else:
- naamUser = voornaam + ' ' + tussenvoegsel + ' ' + achternaam
- # callt de functie uniqueNumber voor een random string als uniek nummer
- if naamUser != "" and geldigWachtwoord == True:
- gebruikersNummer = uniqueNumber()
- with open('Gebruikersbestand.csv', 'a', newline='') as CSV:
- writer = csv.writer(CSV, delimiter=';')
- writer.writerow((gebruikersNummer, naamUser, wachtwoord, ''))
- CSV.close()
- return gebruikersNummer
- def logineenmalig(unicode, wachtwooord):
- ingelogd = False
- with open('Gebruikersbestand.csv', 'r') as CSV:
- for o in CSV.readlines():
- if unicode == o.split(';')[0]:
- if o.split(';')[2] == wachtwooord:
- print('Ingelogd')
- global lstGebruikersGegevens
- lstGebruikersGegevens = o
- ingelogd = True
- break
- else:
- continue
- CSV.close()
- return ingelogd
- def openStalling(unicode):
- huidigeTijd = datetime.datetime.now()
- with open('Stallingsbestand.csv', 'a', newline='') as CSV:
- writer = csv.writer(CSV, delimiter=';')
- writer.writerow((unicode, huidigeTijd, 'stalling'))
- CSV.close()
- def algemeneInformatie():
- beschikbareStallingen = aantalStallingen - len(lstUniqueNumbers)
- return beschikbareStallingen
- def persoonlijkeInformatie():
- huidigeTijd = datetime.datetime.now()
- print('Welkom ', str(lstGebruikersGegevens).split(';')[1])
- print('Het is nu: ', huidigeTijd)
- def fietsOphalen(unicode):
- huidigeTijd = datetime.datetime.now()
- with open('Stallingsbestand.csv', 'a', newline='') as CSV:
- with open('Stallingsbestand.csv', 'a', newline='') as CSV:
- writer = csv.writer(CSV, delimiter=';')
- writer.writerow((unicode, huidigeTijd, 'opgehaald'))
- CSV.close()
- def returnUsername(input):
- if input == "unicode":
- return lstGebruikersGegevens[0]
- elif input == "username":
- return lstGebruikersGegevens[1]
- elif input == "password":
- return lstGebruikersGegevens[2]
- else:
- return "Error"
- print(len(lstUniqueNumbers))
- #GUI.py
- from tkinter import *
- from tkinter.messagebox import showinfo
- import methodsFile
- import datetime
- import random
- from PIL import Image, ImageTk
- lstCaptchaPictures = ["captcha_1.png", "captcha_2.png", "captcha_3.png", "captcha_4.png", "captcha_5.png",
- "captcha_6.png", "captcha_7.png", "captcha_8.png", "captcha_9.png", "captcha_10.png",
- "captcha_11.png", "captcha_12.png"]
- lstCaptchaValues = ["W93BX", "RBSKW", "TSMS9", "R84CH", "3M56R", "UXP4D", "JA3V8", "HJ9PV", "459CT", "D4TSH",
- "HAPK3", "6H3T8"]
- huidigeTijd = (str(datetime.datetime.now()).split(' ')[1]).split(':')[0], ':', (str(datetime.datetime.now()).split(' ')[1]).split(':')[1]
- unicode = ''
- naamUser = ''
- maxStallingen = 50
- counter = 0
- x = 0
- def randomizeCaptcha():
- global x, panel
- panel.destroy()
- x = random.randrange(0, len(lstCaptchaValues))
- img = ImageTk.PhotoImage(Image.open(lstCaptchaPictures[x]))
- panel = Label(master=captchaframe, image=img)
- panel.image = img
- panel.grid(row=1, column=2)
- def aantalStallingen():
- gebruikteStallingen = 0
- with open('Gebruikersbestand.csv', 'r') as CSV:
- for _ in CSV.readlines():
- gebruikteStallingen += 1
- beschikbareStallingen = maxStallingen - gebruikteStallingen
- return beschikbareStallingen
- def login():
- username = usernamefield.get()
- password = passwordfield.get()
- global unicode
- unicode = username
- ingelogd = methodsFile.logineenmalig(username, password)
- if ingelogd == False:
- showinfo(title="Error", message="Onjuiste gegevens. Probeer het nog eens")
- else:
- tooncaptchaframe()
- def register():
- if aantalStallingen() == 0:
- showinfo(title="Error", message="Alle stallingen zijn al in gebruik")
- else:
- voornaam = voornaamfield.get()
- tussenvoegsel = tussenvoegselfield.get()
- achternaam = achternaamfield.get()
- wachtwoord = wachtwoordfield.get()
- uniekeCode = methodsFile.registreren(voornaam, tussenvoegsel, achternaam, wachtwoord)
- if uniekeCode == "" and (voornaam == "" or achternaam == ""):
- showinfo(title="Error", message="Naam onvolledig")
- elif uniekeCode == "":
- showinfo(title="Error",
- message="Vul een geldig wachtwoord in (langer dan 6 karakters met 2 of meer getallen")
- else:
- uniekeCode = ('Unieke code: ' + uniekeCode)
- showinfo(title="Geregistreerd", message=uniekeCode)
- toonloginframe()
- def tryanswerCaptcha():
- global x, counter
- if counter == 2:
- showinfo(title="Error", message="3 slag = uit.")
- toonloginframe()
- counter = 0
- elif str(lstCaptchaValues[x]) == userinputfield.get():
- tooningelogdframe()
- else:
- counter += 1
- pogingenover = 3-counter
- showinfo(title="Error", message="Probeer het nog eens. Je hebt nog " + str(pogingenover) + " pogingen over.")
- def openStalling():
- methodsFile.openStalling(unicode)
- showinfo(title="Open", message="Fiets kan worden gestald.")
- def fietsOphalen():
- methodsFile.fietsOphalen(unicode)
- showinfo(title="Open", message="Fiets kan worden opgehaald.")
- def persoonlijkeinfo():
- methodsFile.persoonlijkeInformatie()
- def tooncaptchaframe():
- userinputfield.delete(0, END)
- loginframe.grid_forget()
- captchaframe.grid()
- def toonregisterframe():
- huidigeTijd = (str(datetime.datetime.now()).split(' ')[1]).split(':')[0], ':', \
- (str(datetime.datetime.now()).split(' ')[1]).split(':')[1]
- global tijdLabel
- tijdLabel["text"] = huidigeTijd
- tijdframe.grid_forget()
- tijdframe.grid()
- loginframe.grid_forget()
- registerframe.grid()
- voornaamfield.delete(0, END)
- tussenvoegselfield.delete(0, END)
- achternaamfield.delete(0, END)
- wachtwoordfield.delete(0, END)
- def toonloginframe():
- huidigeTijd = (str(datetime.datetime.now()).split(' ')[1]).split(':')[0], ':', \
- (str(datetime.datetime.now()).split(' ')[1]).split(':')[1]
- global tijdLabel
- tijdLabel["text"] = huidigeTijd
- tijdframe.grid_forget()
- captchaframe.grid_forget()
- tijdframe.grid()
- registerframe.grid_forget()
- loginframe.grid()
- labelAantalStallingen = Label(master=loginframe, text=("Aantal vrije stallingen: " + str(aantalStallingen())))
- labelAantalStallingen.place(y=100, x=0)
- usernamefield.delete(0, END)
- passwordfield.delete(0, END)
- def tooningelogdframe():
- with open('Gebruikersbestand.csv', 'r') as CSV:
- for o in CSV.readlines():
- if unicode == o.split(';')[0]:
- global naamUser
- naamUser = o.split(';')[1]
- break
- CSV.close()
- captchaframe.grid_forget()
- labelBericht = Label(master=ingelogdframe, text=('Welkom, ' + naamUser))
- labelBericht.grid(row=0, column=3)
- ingelogdframe.grid()
- def logout():
- huidigeTijd = (str(datetime.datetime.now()).split(' ')[1]).split(':')[0], ':', \
- (str(datetime.datetime.now()).split(' ')[1]).split(':')[1]
- global tijdLabel
- tijdLabel["text"] = huidigeTijd
- tijdframe.grid_forget()
- tijdframe.grid()
- loginframe.grid_forget()
- ingelogdframe.grid_forget()
- loginframe.grid()
- labelAantalStallingen = Label(master=loginframe, text=("Aantal vrije stallingen: " + str(aantalStallingen())))
- labelAantalStallingen.place(y=100, x=0)
- usernamefield.delete(0, END)
- passwordfield.delete(0, END)
- root = Tk()
- root.geometry("400x200")
- tijdframe = Frame(master=root)
- tijdframe.grid()
- tijdLabel = Label(master=tijdframe, text=huidigeTijd)
- tijdLabel.grid(row=0, column=3)
- #captchaframe zooi
- captchaframe = Frame(master=root)
- panel = Label(master=captchaframe)
- panel.grid()
- userinputfield = Entry(master=captchaframe)
- userinputfield.grid(row=1, column=0, sticky="EW")
- buttontry = Button(master=captchaframe, text="Try answer", command=tryanswerCaptcha)
- buttontry.grid(row=2, column=0, sticky="EW")
- buttonklik = Button(master=captchaframe, text="Change captcha", command=randomizeCaptcha)
- buttonklik.grid(row=3, column=0, sticky="EW")
- # loginframe zooi
- loginframe = Frame(master=root)
- loginframe.grid()
- labelUsername = Label(loginframe, text="Gebruikersnaam: ")
- labelUsername.grid(row=1, column=1, sticky="EW")
- labelPassword = Label(loginframe, text="Wachtwoord: ")
- labelPassword.grid(row=2, column=1, sticky="EW")
- usernamefield = Entry(loginframe)
- usernamefield.grid(row=1, column=2, sticky="EW")
- passwordfield = Entry(loginframe)
- passwordfield.grid(row=2, column=2, sticky="EW")
- buttonLogin = Button(loginframe, text="Inloggen", command=login)
- buttonLogin.grid(row=3, column=2, sticky="EW")
- buttonRegister = Button(loginframe, text="Registreren", command=toonregisterframe)
- buttonRegister.grid(row=3, column=0, sticky="EW")
- # registerframe zooi
- registerframe = Frame(master=root)
- labelVoornaam = Label(registerframe, text="Voornaam: ")
- labelVoornaam.grid(row=1, column=0, sticky="EW")
- labelTussenvoegsel = Label(registerframe, text="Tussenvoegsel: ")
- labelTussenvoegsel.grid(row=2, column=0, sticky="EW")
- labelAchternaam = Label(registerframe, text="Achternaam: ")
- labelAchternaam.grid(row=3, column=0, sticky="EW")
- labelWachtwoord = Label(registerframe, text="Wachtwoord: ")
- labelWachtwoord.grid(row=4, column=0, sticky="EW")
- voornaamfield = Entry(registerframe)
- voornaamfield.grid(row=1, column=1, sticky="EW")
- tussenvoegselfield = Entry(registerframe)
- tussenvoegselfield.grid(row=2, column=1, sticky="EW")
- achternaamfield = Entry(registerframe)
- achternaamfield.grid(row=3, column=1, sticky="EW")
- wachtwoordfield = Entry(registerframe)
- wachtwoordfield.grid(row=4, column=1, sticky="EW")
- buttonRegistreren = Button(registerframe, text="Registreren", command=register)
- buttonRegistreren.grid(row=5, column=0, sticky="EW")
- buttonTerug = Button(registerframe, text="Terug", command=toonloginframe)
- buttonTerug.grid(row=5, column=1, sticky="EW")
- # ingelogd frame
- ingelogdframe = Frame(master=root)
- buttonUitloggen = Button(master=ingelogdframe, text="Uitloggen", command=logout)
- buttonUitloggen.grid(row=3, column=3, sticky="EW")
- buttonOpenStalling = Button(master=ingelogdframe, text="Open stalling", command=openStalling)
- buttonOpenStalling.grid(row=2, column=2, sticky="EW")
- buttonFietsOphalen = Button(master=ingelogdframe, text="Fiets ophalen", command=fietsOphalen)
- buttonFietsOphalen.grid(row=2, column=3, sticky="EW")
- buttonPersoonlijkeInfo = Button(master=ingelogdframe, text="Persoonlijke informatie", command=persoonlijkeinfo)
- buttonPersoonlijkeInfo.grid(row=2, column=4, sticky="EW")
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement