Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pymysql
- from tkinter import *
- from tkinter import messagebox
- import re
- import random
- import time
- import datetime
- from datetime import timedelta
- import copy
- from datetime import datetime
- import re
- import urllib.request
- import json
- class Project():
- def __init__(self, rootWin):
- self.loginW=rootWin
- self.loginPage()
- self.studentEmail=""
- self.classCost=""
- def connect(self):
- try:
- db = pymysql.connect(host = 'academic-mysql.cc.gatech.edu',passwd = '_RlK9cnm', user = 'cs4400_Team_65', db='cs4400_Team_65')
- return(db)
- except:
- messagebox.showerror("Internet Connection", "Please check your internet connection!")
- def loginPage(self):
- self.l1 = Label(self.loginW, text="Login", fg="goldenrod", font=("Helventica","24"))
- self.l1.grid(row=1, column=2, padx=40,pady =7, sticky=W)
- self.l2 = Label(self.loginW, text="Username")
- self.l2.grid(row=2, column=0, columnspan=2,padx=40, pady=10, sticky=E)
- self.v1 = StringVar()
- self.e1 = Entry(self.loginW, textvariable = self.v1, state="normal")
- self.e1.grid(row=2, column=2, columnspan=3, padx=40,sticky=W)
- self.l3 = Label(self.loginW, text="Password")
- self.l3.grid(row=3, column=0, columnspan=2,padx=40, pady=10, sticky=E)
- self.v2 = StringVar()
- self.e2 = Entry(self.loginW, textvariable = self.v2, state="normal")
- self.e2.grid(row=3, column=2, columnspan=3, padx=40, pady=10,sticky=W)
- self.b1 = Button(self.loginW, text="Login")
- self.b1.grid(row=4, column=1,pady=10, sticky=E)
- self.b2 = Button(self.loginW, text="Register")
- self.b2.grid(row=4, column =2,padx=60, pady=10, sticky=W)
- ##
- ## self.l4 = Label(self.loginW, text="")
- ## self.l4.grid(row=9, column=0, columnspan=7, sticky=E+W)
- self.f4 = Entry(self.loginW, textvariable="")#, relief="raised")
- self.f4.grid(row=9, column=0, columnspan=7, sticky=E+W)
- self.f1 = Entry(self.loginW, textvariable="")#, relief="raised")
- self.f1.grid(row=0, column=0, columnspan=7, sticky=E+W)
- pic = PhotoImage(file='buzzpic.gif')
- pic1 = Label(self.loginW, image=pic)
- pic1.image = pic
- pic1.grid(row=8, column=4, columnspan=3, sticky=E)
- self.b1.configure(command=self.logincheck)
- self.b2.configure(command=self.register)
- def register(self):
- self.loginW.withdraw()
- self.registerW = Toplevel()
- self.registerW.title("New User Registration")
- l1 = Label(self.registerW, text="New User Registration", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=2, padx=40,pady =7, sticky=W)
- l2 = Label(self.registerW, text="Username")
- l2.grid(row=2, column=0, columnspan=2,padx=40, pady=10, sticky=E)
- self.v12 = StringVar()
- self.e12 = Entry(self.registerW, textvariable = self.v12, state="normal")
- self.e12.grid(row=2, column=2, columnspan=3, padx=40,sticky=W)
- self.l2 = Label(self.registerW, text="Email Address")
- self.l2.grid(row=3, column=0, columnspan=2,padx=40, pady=10, sticky=E)
- self.v22 = StringVar()
- self.e22 = Entry(self.registerW, textvariable = self.v22, state="normal")
- self.e22.grid(row=3, column=2, columnspan=3, padx=40, pady=10,sticky=W)
- self.l42 = Label(self.registerW, text="Password")
- self.l42.grid(row=4, column=0, columnspan=2,padx=40, pady=10, sticky=E)
- self.v32 = StringVar()
- self.e32 = Entry(self.registerW, textvariable = self.v32, state="normal")
- self.e32.grid(row=4, column=2, columnspan=3, padx=40, pady=10,sticky=W)
- self.l52 = Label(self.registerW, text="Confirm Password")
- self.l52.grid(row=5, column=0, columnspan=2,padx=40, pady=10, sticky=E)
- self.v42 = StringVar()
- self.e42 = Entry(self.registerW, textvariable = self.v42, state="normal")
- self.e42.grid(row=5, column=2, columnspan=3, padx=40, pady=10,sticky=W)
- self.b12 = Button(self.registerW, text="Create")
- self.b12.grid(row=7, column=2,pady=10, sticky=W
- )
- ## self.l4 = Label(self.loginW, text="")
- ## self.l4.grid(row=9, column=0, columnspan=7, sticky=E+W)
- self.f42 = Entry(self.registerW, textvariable="")#, relief="raised")
- self.f42.grid(row=9, column=0, columnspan=7, sticky=E+W)
- self.f12 = Entry(self.registerW, textvariable="")#, relief="raised")
- self.f12.grid(row=0, column=0, columnspan=7, sticky=E+W)
- pic = PhotoImage(file='buzzpic.gif')
- pic1 = Label(self.registerW, image=pic)
- pic1.image = pic
- pic1.grid(row=8, column=4, columnspan=3, sticky=E)
- self.b12.configure(command=self.create)
- def create(self):
- db=self.connect()
- self.username = self.v12.get()
- self.email = self.v22.get()
- self.password1 = self.v32.get()
- self.password2 = self.v42.get()
- if self.password1 != self.password2:
- messagebox.showerror("Password", "Password entries do not match. Please try again!")
- elif self.password1 == self.password2 and re.match("(?=.*[A-Z])", self.password1) and re.match("(?=.*[0-9])", self.password1):
- self.answerYN = 7
- else:
- messagebox.showerror("Password", "Password must contain at least one capital letter and at least one number!")
- if self.username =="":
- messagebox.showerror("Username", "Please enter a username!")
- cursor = db.cursor()
- sql = "SELECT Username FROM USER WHERE username = %s"
- userInput = self.username
- found = cursor.execute(sql, (self.username))
- allFound = cursor.fetchall()
- sql = "SELECT email FROM CUSTOMER WHERE email = %s" #was where email
- userInput2 = self.email #was email
- found2 = cursor.execute(sql, (self.email)) #was email
- allFound2 = cursor.fetchall()
- if found ==1:
- messagebox.showerror("Username", "Username already exists in database!")
- ##
- if found2 ==1:
- messagebox.showerror("Email", "Email already exists in database!")
- if found ==0 and self.username!="" and self.password1==self.password2 and re.match("(?=.*[A-Z])", self.password1) and re.match("(?=.*[0-9])", self.password1):
- cursor = db.cursor()
- sql = "INSERT INTO USER (username, password) VALUES (%s, %s)"
- cursor.execute(sql, (self.username, self.password1))
- cursor.close()
- db.commit()
- db.close()
- messagebox.showinfo("Registered!", "You are now registered!")
- self.goLogin()
- # self.goLogin()
- def goLogin(self):
- self.registerW.withdraw()
- self.loginW.deiconify()
- def logincheck(self):
- db = self.connect()
- self.usernameL = self.v1.get()
- self.passwordL = self.v2.get()
- cursor = db.cursor()
- sql = "SELECT username, password FROM USER WHERE username = %s and password= %s"
- userInput = self.usernameL, self.passwordL
- found = cursor.execute(sql, (self.usernameL, self.passwordL))
- db.close()
- allFound = cursor.fetchall()
- if found ==1:
- # messagebox.showinfo("Successful Login", "Congratulations!! You logged in successfully!")
- self.custCheck()
- # self.login()
- elif found==0:
- messagebox.showerror("Invalid username/password", "Sorry, you entered an unrecognizable username/password combination. Please try again!")
- # self.login()
- def custCheck(self):
- db = self.connect()
- cursor = db.cursor()
- sql = "SELECT username FROM MANAGER WHERE username = %s"
- userInput = self.usernameL, self.passwordL
- found = cursor.execute(sql, (self.usernameL))
- allFound = cursor.fetchall()
- if found==1:
- messagebox.showinfo("Successful Login", "Congratulations!! You're a Manager!!")
- self.managerLogin()
- else:
- messagebox.showinfo("Successful Login", "Congratulations!! You logged in successfully!")
- self.login()
- def managerLogin(self):
- self.loginW.withdraw()
- self.managerF = Toplevel()
- self.managerF.title("Successful Login: Manager")
- l1 = Label(self.managerF, text="Choose Functionality", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=2, columnspan=3, padx=60,pady =7)
- b24 = Button(self.managerF, text="View revenue report", underline=1, fg="steel blue")
- b24.grid(row=2, column=2, columnspan=2,padx=60, pady=5)
- b34 = Button(self.managerF, text="View popular route report", underline=1, fg="steel blue")
- b34.grid(row=3, column=2, columnspan=2,padx=60, pady=5)
- b84 = Button(self.managerF, text="Log out", relief="raised")
- b84.grid(row=11, column=3, padx=125,sticky=E)
- pic = PhotoImage(file='buzzpic.gif')
- pic1 = Label(self.managerF, image=pic)
- pic1.image = pic
- pic1.grid(row=10, column=3, rowspan=2, sticky=E)
- b24.configure(command=self.viewRev)
- b84.configure(command=self.logoutNow2)
- def logoutNow2(self):
- self.managerF.withdraw()
- def viewRev(self):
- self.managerF.withdraw()
- self.viewRevW = Toplevel()
- self.viewRevW.title("View Revenue Report")
- l1=Label(self.viewRevW, text="View Revenue Report", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=3, pady=30, sticky=E+W)
- l2 = Label(self.viewRevW, text="Month")
- l2.grid(row=2, column=0, padx=50)
- l3 = Label(self.viewRevW, text="Revenue",width=20)
- l3.grid(row=2, column=1, padx=50)
- db=self.connect()
- cursor=db.cursor()
- sql="SELECT resvID from RESV_RESERVES_TRAINROUTE WHERE departureDATE=0000-00-00"
- found=cursor.execute(sql)
- for record in cursor:
- print(record)
- cursor=db.cursor()
- sql="SELECT resvID, SUM(totalCOST) FROM RESERVATION WHERE isCancelled=%s"
- found=cursor.execute(sql, ("0"))
- for record in cursor:
- print(record)
- b1=Button(self.viewRevW, text="Back", relief="raised")
- b1.grid(row=6, column=0, pady=10)
- b1.configure(command=self.viewRevW)
- def viewRevW(self):
- pass
- def login(self):
- self.loginW.withdraw()
- self.functionW = Toplevel()
- self.functionW.title("Successful Login: Choose Functionality")
- l1 = Label(self.functionW, text="Choose Functionality", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=2, columnspan=3, padx=60,pady =7)
- ### I can't tell if below is underlining because it isn't doing so on Mac . . .
- self.b24 = Button(self.functionW, text="View Train Schedule", underline=1, fg="steel blue")
- self.b24.grid(row=2, column=2, columnspan=2,padx=60, pady=5)
- self.b34 = Button(self.functionW, text="Make a new reservation", fg="steel blue")
- self.b34.grid(row=3, column=2, columnspan=2,padx=60, pady=5)
- self.b44 = Button(self.functionW, text="Update a reservation", fg="steel blue")
- self.b44.grid(row=4, column=2, columnspan=2,padx=60,pady=5)
- self.b54 = Button(self.functionW, text="Cancel a reservation", fg="steel blue")
- self.b54.grid(row=5, column =2, columnspan=2,padx=60, pady=5)
- self.b64 = Button(self.functionW, text="Give review", fg="steel blue")
- self.b64.grid(row=6, column =2, columnspan=2,padx=60, pady=5)
- self.b74 = Button(self.functionW, text="Add school information (student discount)", fg="steel blue")
- self.b74.grid(row=7, column =2, columnspan=2,padx=60, pady=5)
- f4 = Entry(self.functionW, textvariable="")#, relief="raised")
- f4.grid(row=13, column=0, columnspan=5, sticky=E+W)
- f1 = Entry(self.functionW, textvariable="")#, relief="raised")
- f1.grid(row=0, column=0, columnspan=5, sticky=E+W)
- pic = PhotoImage(file='buzzpic.gif')
- pic1 = Label(self.functionW, image=pic)
- pic1.image = pic
- pic1.grid(row=10, column=3, rowspan=2, sticky=E)
- self.b84 = Button(self.functionW, text="Log out", relief="raised")
- self.b84.grid(row=11, column=3, padx=125,sticky=E)
- ## self.b1.configure(command=self.logincheck)
- ## self.b2.configure(command=self.register)
- self.b74.configure(command=self.addSchool)
- self.b24.configure(command=self.viewTrain)
- self.b34.configure(command=self.makeRes)
- self.b44.configure(command=self.updateRes)
- self.b84.configure(command=self.logoutNow)
- self.b64.configure(command=self.submitreview)
- # self.b64.configure(command=submit_review)
- def logoutNow(self):
- self.functionW.withdraw()
- def addSchool(self):
- self.functionW.withdraw()
- self.schoolW = Toplevel()
- self.schoolW.title("Add School Info")
- self.l15 = Label(self.schoolW, text= "Add School Info", fg="goldenrod", font=("Helventica","24"))
- self.l15.grid(row=1, column=1, columnspan=2, pady=30, sticky=E+W)
- self.l25 = Label(self.schoolW, text= "School Email Address", font=("Helventica", "22"))
- self.l25.grid(row=2, column=0, columnspan=2, padx=20, sticky=E+W)
- self.v15 = StringVar()
- self.e15 = Entry(self.schoolW, textvariable=self.v15)#relief="raised")
- self.e15.grid(row=2, column=2, columnspan=2,padx=20, sticky=E+W)
- self.l35 = Label(self.schoolW, text="Your school email address ends with .edu",font=("Helventica","10"))
- self.l35.grid(row=3, column=0, columnspan=3, padx=20, sticky=W)
- self.b15 = Button(self.schoolW, text="Back", relief="raised")
- self.b15.grid(row=4, column=0, padx=15, pady=50, sticky=E)
- self.b25 = Button(self.schoolW, text="Submit", relief="raised")
- self.b25.grid(row=4, column=1, pady=50, sticky=W)
- pic = PhotoImage(file='buzzpic.gif')
- pic1 = Label(self.schoolW, image=pic)
- pic1.image = pic
- pic1.grid(row=4, column=3, rowspan=2, sticky=E)
- self.b15.configure(command=self.logincheck)
- self.b25.configure(command=self.submitEmail)
- def submitEmail(self):
- db = self.connect()
- self.schoolEmail=self.v15.get()
- cursor = db.cursor()
- sql = "INSERT INTO CUSTOMER (email) VALUES (%s)"
- cursor.execute(sql, (self.schoolEmail))
- cursor.close()
- db.commit()
- db.close()
- self.goLogin2()
- def goLogin2(self):
- self.functionW.withdraw()
- self.loginW.deiconify()
- def viewTrain(self):
- self.functionW.withdraw()
- self.viewTrainW = Toplevel()
- self.viewTrainW.title("View Train Schedule")
- l1 = Label(self.viewTrainW, text="View Train Schedule", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=3, pady=30, sticky=E+W)
- l2 = Label(self.viewTrainW, text="Train Number")
- l2.grid(row=2, column=0, padx=50)
- self.v16 = StringVar()
- self.e16 = Entry(self.viewTrainW, textvariable = self.v16, state="normal")
- self.e16.grid(row=2, column=2)
- b1 = Button(self.viewTrainW, text="Search", relief="raised")
- b1.grid(row=5, column=0, padx=50, pady=50)
- pic = PhotoImage(file='buzzpic.gif')
- pic1 = Label(self.viewTrainW, image=pic)
- pic1.image = pic
- pic1.grid(row=4, column=2, rowspan=2, sticky=E)
- b1.configure(command=self.trainSchedule)
- def trainSchedule(self):
- self.viewTrainW.withdraw()
- self.trainScheduleW = Toplevel()
- self.trainNum = self.v16.get()
- self.arrivalTimeSched = []
- self.departureTimeSched = []
- self.stationSched = []
- l1 = Label(self.trainScheduleW, text="View Train Schedule", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=4, pady=30, sticky=E+W)
- l2 = Label(self.trainScheduleW, text="Train Number", width=40)
- l2.grid(row=2, column=0, sticky=W)
- l3 = Label(self.trainScheduleW, text="Arrival Time", width=40)
- l3.grid(row=2, column=1, sticky=W)
- l4 = Label(self.trainScheduleW, text="Departure Date", width=40)
- l4.grid(row=2, column=2, sticky=W)
- l5 = Label(self.trainScheduleW, text="Station", width=40)
- l5.grid(row=2, column=3, sticky=W)
- db = self.connect()
- cursor = db.cursor()
- sql = "SELECT arrivalTime, departureTime, stationName,trainNum FROM TRAIN_STOPBY_STATION WHERE trainNum=%s"
- found = cursor.execute(sql, (self.trainNum))
- for record in cursor:
- self.arrivalTimeSched.append(record[0])
- self.departureTimeSched.append(record[1])
- self.stationSched.append(record[2])
- self.trainNumFound = record[3]
- self.tracker1 = 2
- self.tracker2 = 2
- self.tracker3 = 2
- lTrainNum = Label(self.trainScheduleW, text=self.trainNumFound, width=40
- )
- lTrainNum.grid(row=3, column=0, sticky=W)
- for i in self.arrivalTimeSched:
- self.tracker1 = self.tracker1+1
- li = Label(self.trainScheduleW, text=i, width=40)
- li.grid(row=self.tracker1, column=1)
- for i in self.departureTimeSched:
- self.tracker2 = self.tracker2+1
- li = Label(self.trainScheduleW, text=i, width=40)
- li.grid(row=self.tracker2, column=2)
- for i in self.stationSched:
- self.tracker3 = self.tracker3+1
- li = Label(self.trainScheduleW, text=i, width=40)
- li.grid(row=self.tracker3, column=3)
- self.tracker1 = self.tracker1+1
- b1 = Button(self.trainScheduleW, text="Back")
- b1.grid(row=self.tracker1, column=0, pady=30)
- b1.configure(command= self.loginSchedule)
- def loginSchedule(self):
- self.trainScheduleW.withdraw()
- self.login()
- def makeRes(self):
- self.departFromSched = []
- self.arriveToSched = []
- self.departureDate = []
- self.functionW.withdraw()
- self.makeResW = Toplevel()
- l1 = Label(self.makeResW, text="View Train Schedule", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=5, pady=30, sticky=E+W)
- l2 = Label(self.makeResW, text="Departs From")
- l2.grid(row=2, column=0)
- l3 = Label(self.makeResW, text="Arrives At")
- l3.grid(row=3, column=0)
- l4 = Label(self.makeResW, text="Departure Date")
- l4.grid(row=4, column=0)
- db = self.connect()
- cursor = db.cursor()
- sql = "SELECT departFrom, arriveTo, departureDate FROM RESV_RESERVES_TRAINROUTE"
- found = cursor.execute(sql)
- for record in cursor:
- self.departFromSched.append(record[0])
- self.arriveToSched.append(record[1])
- self.departureDate.append(record[2])
- print(self.departureDate)
- ##
- ## var = StringVar()
- ## w = OptionMenu(self.makeResW, var, *self.arriveToSched)
- ## w.grid(row=2, column=2)
- for i in self.arriveToSched:
- # self.option1 = OptionMenu(
- pass
- for i in self.departFromSched:
- ## self.option2 = OptionMenu(self.makeResW, *self.departFromSched)
- ## self.option2.grid(row=2, column=1)
- pass
- ##
- self.stvar = StringVar()
- self.option = OptionMenu(self.makeResW, self.stvar, *self.departFromSched)
- self.option.grid(row=2, column=1)
- self.stvar2 = StringVar()
- self.option2 = OptionMenu(self.makeResW, self.stvar2, *self.arriveToSched)
- self.option2.grid(row=3, column=1)
- self.v18 = StringVar()
- self.e18 = Entry(self.makeResW, textvariable = self.v18,width=50)
- self.e18.grid(row=4, column=1)
- b1 = Button(self.makeResW, text="Find Trains")
- b1.grid(row=6, column=2, sticky=E+W)
- pic = PhotoImage(file='buzzpic.gif')
- pic1 = Label(self.makeResW, image=pic)
- pic1.image = pic
- pic1.grid(row=5, column=3, rowspan=2, sticky=E)
- l2=Label(self.makeResW, text="Type in the form of MM/DD/YYYY")
- l2.grid(row=5, column=1)
- #for i in range(0, len(self.arriveToSched)):
- #optionMenuWidget["menu"].addcommand(label=i, command=lambda temp=i: optionMenuWidget.setvar(optionMenuWidget.setvar(optionMenuWidget.cget("textvariable"), value=temp))
- b1.configure(command=self.findTrains)
- def findTrains(self):
- self.trainDate = datetime.strptime(self.v18.get(),'%m/%d/%Y')
- self.makeResW.withdraw()
- self.findTrainW = Toplevel()
- self.trainMatch = []
- self.trainMatch3 =[]
- self.trainNumMatch = []
- self.buyTicket=[]
- self.trainNumChoose=[""]
- self.classChoose1=[""]
- self.classChoose2=[""]
- # self.departTime =
- self.departStation = self.stvar.get()
- self.arrivalStation = self.stvar2.get()
- # print(self.arrivalStation)
- # print(self.departStation)
- db = self.connect()
- cursor = db.cursor()
- sql = "SELECT trainNum, departFrom, arriveTo, departureDate FROM RESV_RESERVES_TRAINROUTE"
- found = cursor.execute(sql)
- for record in cursor:
- temp=[]
- temp.append(record[0])
- temp.append(record[1])
- temp.append(record[2])
- temp.append(record[3])
- self.trainMatch.append(temp)
- cursor3 = db.cursor()
- sql3 = "SELECT trainNum, stationName, arrivalTime, departureTime FROM TRAIN_STOPBY_STATION"
- found3 = cursor3.execute(sql3)
- for record in cursor3:
- temp=[]
- temp.append(record[0])
- temp.append(record[1])
- temp.append(record[2])
- temp.append(record[3])
- self.trainMatch3.append(temp)
- # print(self.trainMatch)
- self.trackCost1 = 1
- self.trackCost2 = 1
- self.trackCost3 = 1
- # print("trainmatch")
- # print(self.trainMatch3)
- for i in range(len(self.trainMatch3)):
- for j in range(i+1, len(self.trainMatch3)):
- if self.trainMatch3[i][1]==self.departStation and self.trainMatch3[j][1]==self.arrivalStation and self.trainMatch3[i][0]==self.trainMatch3[j][0]:
- ## print("1")
- ## print(self.trainMatch3[i],self.trainMatch3[j])
- ## print("")
- ## print(self.trainMatch3[i])
- ## print(self.trainMatch3[j])
- self.trainNumMatch.append(self.trainMatch3[i][0])
- elif self.trainMatch3[i][1]==self.arrivalStation and self.trainMatch3[j][1]==self.departStation and self.trainMatch3[i][0]==self.trainMatch3[j][0]:
- ## print("2")
- ## print(self.trainMatch3[i],self.trainMatch3[j])
- ## print("")
- ## print(self.trainMatch3[i])
- ## print(self.trainMatch3[j])
- self.trainNumMatch.append(self.trainMatch3[i][0])
- # print("self.trainNumMatch")
- #print(self.trainNumMatch)
- for i in self.trainNumMatch:
- self.trackCost1 = self.trackCost1+1
- cursor3 = db.cursor()
- sql3 = "SELECT 1st_Class_Price, 2nd_Class_Price FROM TRAIN_ROUTE WHERE trainNum=%s"
- found3 = cursor3.execute(sql3, (i))
- for j in cursor3:
- ## li = Label(self.findTrainW, text=j[0])
- ## li.grid(row=self.trackCost1, column=2)
- self.vb=IntVar()
- bi = Radiobutton(self.findTrainW, text=j[0], variable=self.vb, value=1)
- bi.grid(row=self.trackCost1, column=2)
- self.val=j[0]
- self.numChosen=i
- self.trainNumChoose.append(i)
- self.classChoose1.append(j[0])
- self.classChoose2.append(j[1])
- ## lj= Label(self.findTrainW, text=j[1]
- ## )
- ## lj.grid(row=self.trackCost1, column=3)
- ##
- lk = Label(self.findTrainW, text=i)
- lk.grid(row=self.trackCost1, column=0)
- self.vb2=IntVar()
- bj = Radiobutton(self.findTrainW, text=j[1], variable=self.vb2, value=1)
- bj.grid(row=self.trackCost1, column=3)
- self.val2=j[1]
- ## if self.vb.get() ==0:
- ## # self.buyTicket = []
- ## self.buyTicket.append(i)
- ## self.buyTicket.append(j[0])
- ##
- ## elif seflf.vb2.get() ==0:
- ##
- ## # self.buyTicket = []
- ## self.buyTicket.append(i)
- ## self.buyTicket.append(j[0])
- ##
- ##
- ##
- ##
- ##
- ## print(self.buyTicket)
- track=self.trackCost1+1
- self.stvar3 = StringVar()
- self.option3 = OptionMenu(self.findTrainW, self.stvar3, *self.trainNumChoose)
- self.option3.grid(row=track, column=0)
- self.stvar4 = StringVar()
- self.option4 = OptionMenu(self.findTrainW, self.stvar4, *self.classChoose1)
- self.option4.grid(row=track, column=2)
- self.stvar5=StringVar()
- self.option5 = OptionMenu(self.findTrainW, self.stvar5, *self.classChoose2)
- self.option5.grid(row=track, column=3)
- l1 = Label(self.makeResW, text="Select Departure", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=0, column=0, columnspan=5, pady=30, sticky=E+W)
- l2 = Label(self.findTrainW, text="Train Number")
- l2.grid(row=1, column=0)
- l3 = Label(self.findTrainW, text="Time/Duration")
- l3.grid(row=1, column=1)
- l4 = Label(self.findTrainW, text="1st Class Price")
- l4.grid(row=1, column=2)
- l5 = Label(self.findTrainW, text="2nd Class Price")
- l5.grid(row=1, column=3)
- self.trackCost1=self.trackCost1+1
- bnext=Button(self.findTrainW, text="Next")
- bnext.grid(row=self.trackCost1, column=4)
- bnext.configure(command=self.goNext)
- def goNext(self):
- ##
- ## if self.vb.get()==1:
- ## self.classCost=self.val
- ## print(self.classCost)
- ##
- ## elif self.vb2.get() ==1:
- ## self.classCost=self.val2
- ## print(self.classCost)
- if self.stvar4.get() != "" and self.stvar5.get() != "":
- messagebox.showinfo("Pick Only One Class", "Please Pick only one class")
- self.findTrains()
- elif self.stvar3.get() == "":
- messagebox.showinfo("Train Number", "Please Pick a Train Number")
- elif self.stvar4.get() != "":
- self.classCost=self.stvar4.get()
- self.classNumb="1st Class"
- else:
- #elif self.stvar4.get() != "":
- self.classCost=self.stvar5.get()
- self.classNumb="2nd Class"
- print(self.stvar3.get())
- print(self.stvar4.get())
- print(self.stvar5.get())
- print(self.classCost)
- self.findTrainW.withdraw()
- self.extrasW=Toplevel()
- l1 = Label(self.extrasW, text="Travel Extras & Passenger Info", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=3, pady=30, sticky=E+W)
- l2 = Label(self.extrasW, text="Number of Baggage")
- l2.grid(row=2, column=0, padx=50)
- l3 = Label(self.extrasW, text="Every passenger can bring up to 4 baggage 2 free of charge, 2 for $30 per bag")
- l3.grid(row=3, column=0, padx=50)
- l4 = Label(self.extrasW, text="Passenger Name")
- l4.grid(row=4, column=0, padx=50)
- self.stvar6 = IntVar()
- self.option6 = OptionMenu(self.extrasW, self.stvar6, 1,2,3,4)
- self.option6.grid(row=2, column=1)
- self.var6 = StringVar()
- self.ent6 = Entry(self.extrasW, textvariable=self.var6, state="normal", width=50)
- self.ent6.grid(row=4, column=1)
- b=Button(self.extrasW, text="Next")
- b.grid(row=6, column=2)
- b.configure(command=self.goRes)
- def goRes(self):
- self.cardsFound=["None"]
- self.name = self.var6.get()
- self.numBag=self.stvar6.get()
- self.extrasW.withdraw()
- self.goResW=Toplevel()
- l1 = Label(self.goResW, text="Make Reservation", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=0, column=0, columnspan=7, pady=30, sticky=E+W)
- l2 = Label(self.goResW, text="Train Number")
- l2.grid(row=1, column=0)
- l3 = Label(self.goResW, text="Time/Duration")
- l3.grid(row=1, column=1)
- l4 = Label(self.goResW, text="Departs From")
- l4.grid(row=1, column=2)
- l5 = Label(self.goResW, text="Arrives At")
- l5.grid(row=1, column=3)
- l6 = Label(self.goResW, text="Class")
- l6.grid(row=1, column=4)
- l7 = Label(self.goResW, text="Price")
- l7.grid(row=1, column=5)
- l8 = Label(self.goResW, text="# of Baggage")
- l8.grid(row=1, column=6)
- l9 = Label(self.goResW, text="Passenger Name")
- l9.grid(row=1, column=7)
- l10 = Label(self.goResW, text="Remove")
- l10.grid(row=1, column=8)
- l11 = Label(self.goResW, text=self.stvar3.get())
- l11.grid(row=2, column=0)
- l12 = Label(self.goResW, text="time")
- l12.grid(row=2, column=1)
- l13 = Label(self.goResW, text=self.departStation)
- l13.grid(row=2, column=2)
- l14 = Label(self.goResW, text=self.arrivalStation)
- l14.grid(row=2, column=3)
- l15 = Label(self.goResW, text=self.classNumb)
- l15.grid(row=2, column=4)
- if self.studentEmail!="":
- l18=Label(self.goResW, text="Student Discount Applied")
- l17.grid(row=3, column=0)
- self.classCost=self.classCost*.8
- l16 = Label(self.goResW, text=self.classCost)
- l16.grid(row=2, column=5)
- self.classCost = float(self.classCost)
- if self.stvar6.get() ==3:
- self.classCost=self.classCost+30
- if self.stvar6.get() ==4:
- self.classCost=self.classCost+60
- l36=Label(self.goResW, text=self.stvar6.get())
- l36.grid(row=2, column=6)
- # l26= Label(self.goResW, text=
- l17 = Label(self.goResW, text=self.name)
- l17.grid(row=2, column=7)
- b18=Button(self.goResW, text="Remove")
- b18.grid(row=2, column=8)
- # b18.configure(command=self.cancelRes)
- l19 = Label(self.goResW, text="Total Cost")
- l19.grid(row=3, column=0)
- l20 = Label(self.goResW, text=self.classCost)
- l20.grid(row=3, column=1)
- l21 = Label(self.goResW, text="Use Card")
- l21.grid(row=4, column=0)
- db = self.connect()
- cursor = db.cursor()
- sql = "SELECT cardNum FROM PAYMENT_INFO WHERE username=%s"
- found = cursor.execute(sql,(self.usernameL))
- for record in cursor:
- self.cardsFound.append(record)
- self.stvar7 = StringVar()
- self.option7 = OptionMenu(self.goResW, self.stvar7, *self.cardsFound)
- self.option7.grid(row=5, column=1)
- b3 = Button(self.goResW, text="Add Card")
- b3.grid(row=5, column=4)
- b4 = Button(self.goResW, text="Continue adding a train")
- b4.grid(row=6, column=0)
- b5=Button(self.goResW,text= "Back")
- b5.grid(row=7, column=1)
- b6=Button(self.goResW, text="Submit")
- b6.grid(row=7, column=2)
- b6.configure(command=self.submitRes)
- # b4.configure(command=self.)
- b3.configure(command=self.addPayment)
- def submitRes(self):
- if self.stvar7.get() =="None":
- messagebox.showerror("Credit Card", "Please add a credit card number!")
- self.goRes()
- else:
- card = self.stvar7.get()
- self.newCard = ""
- for i in range(2,len(card)-3):
- self.newCard=self.newCard+card[i]
- self.classCost=str(self.classCost)
- print(self.classCost)
- print(card)
- print(self.newCard)
- num="0"
- print(self.classCost)
- print(num)
- print(self.usernameL)
- print(self.newCard)
- reservationID=random.randrange(0,10000000)
- reservatID=str(reservationID)
- self.reservationID = reservatID
- db=self.connect()
- cursor = db.cursor()
- sql = "INSERT INTO RESERVATION (resvID, totalCost, isCancelled, username, cardNum) VALUES (%s, %s, %s, %s, %s)"
- cursor.execute(sql, (reservatID, self.classCost, num, self.usernameL, self.newCard))
- cursor.close()
- db.commit()
- db.close()
- db=self.connect()
- cursor = db.cursor()
- sql = "INSERT INTO RESV_RESERVES_TRAINROUTE (resvID, trainNum, departureDate, departFrom, arriveTo, class, baggageNum,passengerName) VALUES (%s, %s, %s, %s, %s,%s,%s,%s)"
- cursor.execute(sql, (reservatID, self.stvar3.get(), self.trainDate, self.departStation, self.arrivalStation, self.classNumb, self.stvar6.get(), self.name))
- cursor.close()
- db.commit()
- db.close()
- # self.classCost, num, self.usernameL, self.newCard))
- self.confirmation()
- def confirmation(self):
- self.goResW.withdraw()
- self.confirmW=Toplevel()
- self.confirmW.title("Confirmation Number")
- l1 = Label(self.confirmW, text="Confirmation", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=0, column=0, columnspan=5, pady=30, sticky=E+W)
- l11=Label(self.confirmW, text="Reservation ID")
- l11.grid(row=1, column=0)
- l2 = Label(self.confirmW, text="Thank you for your purchase! Please save reservation ID for your records!")
- l2.grid(row=2, column=0)
- l3 = Label(self.confirmW, text=self.reservationID)
- l3.grid(row=1, column=3)
- b1 = Button(self.confirmW, text="Go Back to Choose Functionality")
- b1.grid(row=4, column=1, columnspan=2)
- b1.configure(command=self.goChoose)
- def goChoose(self):
- self.confirmW.withdraw()
- self.login()
- def addPayment(self):
- self.goResW.withdraw()
- self.payW =Toplevel()
- l1 = Label(self.payW, text="Payment Information", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=0, column=0, columnspan=5, pady=30, sticky=E+W)
- l11=Label(self.payW, text="Add Card")
- l11.grid(row=1, column=0)
- l2 = Label(self.payW, text="Name on Card")
- l2.grid(row=2, column=0)
- l3 = Label(self.payW, text="Card Number")
- l3.grid(row=3, column=0)
- l4 = Label(self.payW, text="CVV")
- l4.grid(row=4, column=0)
- l5 = Label(self.payW, text="Expiration Date")
- l5.grid(row=5, column=0)
- l6 = Label(self.payW, text="Delete Card")
- l6.grid(row=1, column=3)
- l7 = Label(self.payW, text="Card Number")
- l7.grid(row=2, column=3)
- self.var7 = StringVar()
- self.ent7=Entry(self.payW, textvariable=self.var7, state="normal", width=50)
- self.ent7.grid(row=2, column=1)
- self.var8 = StringVar()
- self.ent8=Entry(self.payW, textvariable=self.var8, state="normal", width=50)
- self.ent8.grid(row=3, column=1)
- self.var9 = StringVar()
- self.ent9=Entry(self.payW, textvariable=self.var9, state="normal")
- self.ent9.grid(row=4, column=1)
- self.var10 = StringVar()
- self.ent10=Entry(self.payW, textvariable=self.var10, state="normal")
- self.ent10.grid(row=5, column=1)
- self.stvar9 = StringVar()
- self.option9 = OptionMenu(self.payW, self.stvar9, *self.cardsFound)
- self.option9.grid(row=2, column=4)
- b1 = Button(self.payW, text="Submit")
- b1.grid(row=7, column=1)
- b2 = Button(self.payW, text="Submit")
- b2.grid(row=7, column=3)
- b3 =Button(self.payW, text="Back")
- b3.grid(row=9, column=0)
- b1.configure(command=self.addCard)
- b2.configure(command=self.deleteCard)
- b3.configure(command=self.goBackPay)
- def goBackPay(self):
- self.payW.withdraw()
- self.goResW.deiconify()
- def deleteCard(self):
- db=self.connect()
- cursor = db.cursor()
- card = self.stvar9.get()
- print(card)
- print(card[5])
- self.newCard = ""
- for i in range(2,len(card)-3):
- self.newCard=self.newCard+card[i]
- print(self.usernameL)
- print(self.newCard)
- sql = "DELETE FROM PAYMENT_INFO WHERE cardNum=%s AND username=%s"
- cursor.execute(sql, (self.newCard, self.usernameL))#)
- cursor.close()
- db.commit()
- db.close()
- def addCard(self):
- self.carddate = datetime.strptime(self.var10.get(),'%m/%d/%Y')
- db=self.connect()
- cursor = db.cursor()
- sql = "INSERT INTO PAYMENT_INFO (cardNum, cardName, cvv, expDate, username) VALUES (%s, %s, %s, %s, %s)"
- cursor.execute(sql, (self.var8.get(), self.var7.get(), self.var9.get(), self.carddate, self.usernameL))
- cursor.close()
- db.commit()
- db.close()
- def finalizeRes(self):
- l1 = Label(self.goResW, text="Make Reservation", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=0, column=0, columnspan=5, pady=30, sticky=E+W)
- l2 = Label(self.goResW, text="Train Number")
- l2.grid(row=1, column=0)
- l3 = Label(self.goResW, text="Time/Duration")
- l3.grid(row=1, column=1)
- l4 = Label(self.goResW, text="Departs From")
- l4.grid(row=1, column=2)
- l5 = Label(self.goResW, text="Arrives At")
- l5.grid(row=1, column=3)
- l6 = Label(self.goResW, text="Class")
- l6.grid(row=1, column=4)
- l7 = Label(self.goResW, text="Price")
- l7.grid(row=1, column=5)
- l8 = Label(self.goResW, text="# of Baggage")
- l8.grid(row=1, column=6)
- l9 = Label(self.goResW, text="Passenger Name")
- l9.grid(row=1, column=7)
- l10 = Label(self.goResW, text="Remove")
- l10.grid(row=1, column=8)
- l11 = Label(self.goResW, text=self.stvar3.get())
- l11.grid(row=2, column=0)
- l12 = Label(self.goResW, text="time")
- l12.grid(row=2, column=1)
- l13 = Label(self.goResW, text=self.departStation)
- l13.grid(row=2, column=2)
- l14 = Label(self.goResW, text=self.arrivalStation)
- l14.grid(row=2, column=3)
- l15 = Label(self.goResW, text=self.classNumb)
- l15.grid(row=2, column=4)
- cursor = db.cursor()
- sql = "SELECT isStudent FROM CUSTOMER WHERE Username = %s"
- userInput = self.username
- found = cursor.execute(sql, (self.usernameL))
- print(cursor)
- if self.studentEmail!="":
- l18=Label(self.goResW, text="Student Discount Applied")
- l17.grid(row=3, column=0)
- self.classCost=self.classCost*.8
- # if
- l16 = Label(self.goResW, text=self.classCost)
- l16.grid(row=2, column=5)
- l36=Label(self.goResW, text=self.stvar6.get())
- l36.grid(row=2, column=6)
- # l26= Label(self.goResW, text=
- l17 = Label(self.goResW, text=self.name)
- l17.grid(row=2, column=7)
- b18=Button(self.goResW, text="Remove")
- b18.grid(row=2, column=8)
- # b18.configure(command=self.cancelRes)
- l19 = Label(self.goResW, text="Total Cost")
- l19.grid(row=3, column=0)
- l20 = Label(self.goResW, text=self.classCost)
- l20.grid(row=3, column=3)
- l21 = Label(self.goResW, text="Use Card")
- l21.grid(row=4, column=0)
- db = self.connect()
- cursor = db.cursor()
- sql = "SELECT cardNum FROM PAYMENT_INFO WHERE username=%s"
- found = cursor.execute(sql,(self.usernameL))
- for record in cursor:
- self.cardsFound.append(record)
- self.stvar8 = StringVar()
- self.option8 = OptionMenu(self.goResW, self.stvar8, *self.cardsFound)
- self.option8.grid(row=5, column=3)
- b3 = Button(self.goResW, "Add Card")
- b3.grid(row=5, column=4)
- b5=Button(self.goResW, "Back")
- b5.grid(row=7, column=1)
- b6=Button(self.goResW, "Submit")
- b6.grid(row=7, column=2)
- ####
- ## self.stvar = StringVar()
- ## self.option = OptionMenu(self.makeResW, self.stvar, *self.departFromSched)
- ## self.option.grid(row=2, column=1
- # print(
- #### def updateRes(self):
- #### self.functionW.withdraw()
- #### self.updateResW = Toplevel()
- #### self.updateResW.title("Update Train Reservation")
- ####
- #### l1 = Label(self.updateResW, text="Update Reservation", fg="goldenrod", font=("Helventica","24"))
- #### l1.grid(row=1, column=0, columnspan=3, pady=30, sticky=E+W)
- ####
- #### l2 = Label(self.updateResW, text="Reservation ID")
- #### l2.grid(row=2, column=0, padx=50)
- ####
- #### self.v17 = StringVar()
- #### self.e17 = Entry(self.updateResW, textvariable = self.v17, state="normal")
- #### self.e17.grid(row=2, column=2)
- ####
- #### b1 = Button(self.updateResW, text="Back", relief="raised")
- #### b1.grid(row=5, column=0, padx=50, pady=50)
- ####
- #### b2 = Button(self.updateResW, text="Search", relief="raised")
- #### b2.grid(row=6, column=0, padx=50, pady=50)
- ####
- #### pic = PhotoImage(file='buzzpic.gif')
- #### pic1 = Label(self.updateResW, image=pic)
- #### pic1.image = pic
- #### pic1.grid(row=4, column=2, rowspan=2, sticky=E)
- ####
- #### b1.configure(command=self.login)
- #### b2.configure(command=self.updateRes1)
- ####
- #### def updateRes1(self):
- #### self.updateResW.withdraw()
- #### self.updateRes1W = Toplevel()
- ####
- #### self.reservationID = self.v17.get()
- #### self.trainNumber = []
- #### self.time = []
- #### self.departsFrom = []
- #### self.arrivesAt = []
- #### self.classStatus = []
- #### self.price = []
- #### self.numbOfBags = []
- #### self.passengerName = []
- ####
- ####
- ####
- #### l1 = Label(self.updateRes1W, text="Update Train Reservation", fg="goldenrod", font=("Helventica","24"))
- #### l1.grid(row=1, column=0, columnspan=4, pady=30, sticky=E+W)
- ####
- #### l2 = Label(self.updateRes1W, text="Train Number", width=20)
- #### l2.grid(row=2, column=0, sticky=W)
- ####
- #### l3 = Label(self.updateRes1W, text="Time (Duration)", width=20)
- #### l3.grid(row=2, column=1, sticky=W)
- ####
- #### l4 = Label(self.updateRes1W, text="Departs From", width=20)
- #### l4.grid(row=2, column=2, sticky=W)
- ####
- #### l5 = Label(self.updateRes1W, text="Arrives At", width=20)
- #### l5.grid(row=2, column=3, sticky=W)
- ####
- #### l6 = Label(self.updateRes1W, text="Class", width=20)
- #### l6.grid(row=2, column=4, sticky=W)
- ####
- #### l7 = Label(self.updateRes1W, text="Price", width=20)
- #### l7.grid(row=2, column=5, sticky=W)
- ####
- #### l8 = Label(self.updateRes1W, text="# of Bags", width=20)
- #### l8.grid(row=2, column=6, sticky=W)
- ####
- #### l9 = Label(self.updateRes1W, text="Passenger Name", width=20)
- #### l9.grid(row=2, column=7, sticky=W)
- ####
- #### db = self.connect()
- ####
- #### cursor = db.cursor()
- #### sql = "SELECT trainNumb, departureDate, departFrom, arriveTo, class, baggageNum, passengerName FROM RESV_RESERVES_TRAINROUTE WHERE resvID=%s"
- ####
- #### found = cursor.execute(sql, (self.reservationID))
- ####
- #### for record in cursor:
- #### self.trainNumb.append(record[0])
- #### self.departureDate.append(record[1])
- #### self.departFrom.append(record[2])
- #### self.arriveTo.append(record[3])
- #### self.classStatus.append(record[4])
- #### self.price.append(record[5])
- #### self.numbOfBags.append(record[6])
- #### self.passengerName.append(record[7])
- ####
- #### self.arrivalTimeSched.append(record[0])
- #### self.departureTimeSched.append(record[1])
- #### self.stationSched.append(record[2])
- ####
- ####
- #### self.tracker1 = 2
- #### self.tracker2 = 2
- #### self.tracker3 = 2
- #### self.tracker3 = 2
- #### self.tracker4 = 2
- #### self.tracker5 = 2
- #### self.tracker6 = 2
- #### self.tracker7 = 2
- #### self.tracker8 = 2
- ####
- #### for i in self.trainNum:
- #### self.tracker1 = self.tracker1+1
- ####
- #### li = Label(self.trainScheduleW, text=i, width=40)
- #### li.grid(row=self.tracker1, column=1)
- ####
- ####
- ####
- ####
- #### for i in self.departureTimeSched:
- #### self.tracker2 = self.tracker2+1
- ####
- #### li = Label(self.trainScheduleW, text=i, width=40)
- #### li.grid(row=self.tracker2, column=2)
- ####
- ####
- ####
- #### for i in self.stationSched:
- #### self.tracker3 = self.tracker3+1
- ####
- #### li = Label(self.trainScheduleW, text=i, width=40)
- #### li.grid(row=self.tracker3, column=3)
- ####
- #### self.tracker1 = self.tracker1+1
- ####
- #### b1 = Button(self.updateRes1W, text="Back")
- #### b1.grid(row=self.tracker1, column=0, pady=30)
- #### b2 = Button(self.updateResW, text="Next")
- #### b2.grid(row=self.tracker1, column=1, pady=30)
- ####
- #### b1.configure(command= self.updateRes)
- #### b2.configure(command= self.updateRes2)
- ####
- #### def updateRes2(self):
- #### self.updateRe1W.withdraw()
- #### self.updateRes2W = Toplevel()
- ####
- #### self.reservationID = self.v17.get()
- #### self.arrivalTimeSched = []
- #### self.departureTimeSched = []
- #### self.stationSched = []
- ####
- ####
- ####
- #### l1 = Label(self.updateRes1W, text="Update Train Reservation", fg="goldenrod", font=("Helventica","24"))
- #### l1.grid(row=1, column=0, columnspan=4, pady=30, sticky=E+W)
- ####
- #### l2 = Label(self.updateRes1W, text="Train Number", width=20)
- #### l2.grid(row=2, column=0, sticky=W)
- ####
- #### l3 = Label(self.updateRes1W, text="Time (Duration)", width=20)
- #### l3.grid(row=2, column=1, sticky=W)
- ####
- #### l4 = Label(self.updateRes1W, text="Departs From", width=20)
- #### l4.grid(row=2, column=2, sticky=W)
- ####
- #### l5 = Label(self.updateRes1W, text="Arrives At", width=20)
- #### l5.grid(row=2, column=3, sticky=W)
- ####
- #### l6 = Label(self.updateRes1W, text="Class", width=20)
- #### l6.grid(row=2, column=4, sticky=W)
- ####
- #### l7 = Label(self.updateRes1W, text="Price", width=20)
- #### l7.grid(row=2, column=5, sticky=W)
- ####
- #### l8 = Label(self.updateRes1W, text="# of Bags", width=20)
- #### l8.grid(row=2, column=6, sticky=W)
- ####
- #### l9 = Label(self.updateRes1W, text="Passenger Name", width=20)
- #### l9.grid(row=2, column=7, sticky=W)
- ####
- ####
- ####
- ####
- ####rootWin = Tk()
- ####app = Project(rootWin)
- ####rootWin.mainloop()
- def updateRes(self):
- self.functionW.withdraw()
- self.updateResW = Toplevel()
- self.updateResW.title("Update Train Reservation")
- l1 = Label(self.updateResW, text="Update Reservation", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=3, pady=30, sticky=E+W)
- l2 = Label(self.updateResW, text="Reservation ID")
- l2.grid(row=2, column=0, padx=50)
- self.v17 = StringVar()
- self.e17 = Entry(self.updateResW, textvariable = self.v17, state="normal")
- self.e17.grid(row=2, column=2)
- b1 = Button(self.updateResW, text="Back", relief="raised")
- b1.grid(row=5, column=0, padx=50, pady=50)
- b2 = Button(self.updateResW, text="Search", relief="raised")
- b2.grid(row=6, column=0, padx=50, pady=50)
- pic = PhotoImage(file='buzzpic.gif')
- pic1 = Label(self.updateResW, image=pic)
- pic1.image = pic
- pic1.grid(row=4, column=2, rowspan=2, sticky=E)
- b1.configure(command=self.login)
- b2.configure(command=self.updateRes1)
- def updateRes1(self):
- self.updateResW.withdraw()
- self.updateRes1W = Toplevel()
- self.reservationID = self.v17.get()
- self.trainNum = []
- self.departureDate = []
- self.departFrom = []
- self.arriveTo = []
- self.classStatus = []
- self.numbOfBags = []
- self.passengerName = []
- l1 = Label(self.updateRes1W, text="Update Train Reservation", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=4, pady=30, sticky=E+W)
- l2 = Label(self.updateRes1W, text="Train Number", width=20)
- l2.grid(row=2, column=0, sticky=W)
- l3 = Label(self.updateRes1W, text="Time (Duration)", width=20)
- l3.grid(row=2, column=1, sticky=W)
- l4 = Label(self.updateRes1W, text="Departs From", width=20)
- l4.grid(row=2, column=2, sticky=W)
- l5 = Label(self.updateRes1W, text="Arrives At", width=20)
- l5.grid(row=2, column=3, sticky=W)
- l6 = Label(self.updateRes1W, text="Class", width=20)
- l6.grid(row=2, column=4, sticky=W)
- l7 = Label(self.updateRes1W, text="Price", width=20)
- l7.grid(row=2, column=5, sticky=W)
- l8 = Label(self.updateRes1W, text="# of Bags", width=20)
- l8.grid(row=2, column=6, sticky=W)
- l9 = Label(self.updateRes1W, text="Passenger Name", width=20)
- l9.grid(row=2, column=7, sticky=W)
- db = self.connect()
- cursor = db.cursor()
- sql = "SELECT trainNum, departureDate, departFrom, arriveTo, class, baggageNum, passengerName FROM RESV_RESERVES_TRAINROUTE WHERE resvID=%s"
- found = cursor.execute(sql, (self.reservationID))
- for record in cursor:
- self.trainNum.append(record[0])
- self.departureDate.append(record[1])
- self.departFrom.append(record[2])
- self.arriveTo.append(record[3])
- self.classStatus.append(record[4])
- self.numbOfBags.append(record[5])
- self.passengerName.append(record[6])
- self.tracker1 = 2
- self.tracker2 = 2
- self.tracker3 = 2
- self.tracker3 = 2
- self.tracker4 = 2
- self.tracker5 = 2
- self.tracker6 = 2
- self.tracker7 = 2
- for i in self.trainNum:
- self.tracker1 = self.tracker1+1
- li = Label(self.updateRes1W, text=i, width=20)
- li.grid(row=self.tracker1, column=0)
- for i in self.departureDate:
- self.tracker2 = self.tracker2+1
- li = Label(self.updateRes1W, text=i, width=20)
- li.grid(row=self.tracker2, column=1)
- for i in self.departFrom:
- self.tracker3 = self.tracker3+1
- li = Label(self.updateRes1W, text=i, width=20)
- li.grid(row=self.tracker3, column=2)
- for i in self.arriveTo:
- self.tracker4 = self.tracker4+1
- li = Label(self.updateRes1W, text=i, width=20)
- li.grid(row=self.tracker4, column=3)
- for i in self.classStatus:
- self.tracker5 = self.tracker5+1
- li = Label(self.updateRes1W, text=i, width=20)
- li.grid(row=self.tracker5, column=4)
- if self.classStatus == 1:
- cursor = db.cursor()
- sql = "SELECT 1st_Class_Price FROM TRAINROUTE WHERE resvID=%s"
- found1 = cursor.execute(sql, (self.reservationID))
- li = Label(self.updateRes1W, text=i, width=20)
- li.grid(row=self.tracker5, column=5)
- elif self.classStatus == 0:
- cursor = db.cursor()
- sql = "SELECT 2nd_Class_Price FROM TRAINROUTE WHERE resvID=%s"
- found1 = cursor.execute(sql, (self.reservationID))
- li = Label(self.updateRes1W, text=i, width=20)
- li.grid(row=self.tracker5, column=5)
- for i in self.numbOfBags:
- self.tracker6 = self.tracker6+1
- li = Label(self.updateRes1W, text=i, width=20)
- li.grid(row=self.tracker6, column=6)
- for i in self.passengerName:
- self.tracker7 = self.tracker7+1
- li = Label(self.updateRes1W, text=i, width=20)
- li.grid(row=self.tracker7, column=7)
- b3 = Button(self.updateRes1W, text="Select")
- b3.grid(row=self.tracker7, column=8, pady=30)
- b3.configure(command= self.updateRes2)
- self.tracker1 = self.tracker1+1
- b1 = Button(self.updateRes1W, text="Back")
- b1.grid(row=self.tracker1, column=0, pady=30)
- b1.configure(command= self.updateRes)
- def updateRes2(self):
- self.updateRes1W.withdraw()
- self.updateRes2W = Toplevel()
- self.reservationID = self.v17.get()
- self.trainNum = []
- self.departureDate = []
- self.departFrom = []
- self.arriveTo = []
- self.classStatus = []
- self.numOfBags = []
- self.passengerName = []
- l1 = Label(self.updateRes2W, text="Update Train Reservation", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=4, pady=30, sticky=E+W)
- l2 = Label(self.updateRes2W, text="Train Number", width=20)
- l2.grid(row=2, column=0, sticky=W)
- l3 = Label(self.updateRes2W, text="Time (Duration)", width=20)
- l3.grid(row=2, column=1, sticky=W)
- l4 = Label(self.updateRes2W, text="Departs From", width=20)
- l4.grid(row=2, column=2, sticky=W)
- l5 = Label(self.updateRes2W, text="Arrives At", width=20)
- l5.grid(row=2, column=3, sticky=W)
- l6 = Label(self.updateRes2W, text="Class", width=20)
- l6.grid(row=2, column=4, sticky=W)
- l7 = Label(self.updateRes2W, text="Price", width=20)
- l7.grid(row=2, column=5, sticky=W)
- l8 = Label(self.updateRes2W, text="# of Bags", width=20)
- l8.grid(row=2, column=6, sticky=W)
- l9 = Label(self.updateRes2W, text="Passenger Name", width=20)
- l9.grid(row=2, column=7, sticky=W)
- db = self.connect()
- cursor = db.cursor()
- sql = "SELECT trainNum, departureDate, departFrom, arriveTo, class, baggageNum, passengerName FROM RESV_RESERVES_TRAINROUTE WHERE resvID=%s"
- found = cursor.execute(sql, (self.reservationID))
- for record in cursor:
- self.trainNum.append(record[0])
- self.departureDate.append(record[1])
- self.departFrom.append(record[2])
- self.arriveTo.append(record[3])
- self.classStatus.append(record[4])
- self.numbOfBags.append(record[5])
- self.passengerName.append(record[6])
- self.tracker1 = 2
- self.tracker2 = 2
- self.tracker3 = 2
- self.tracker3 = 2
- self.tracker4 = 2
- self.tracker5 = 2
- self.tracker6 = 2
- self.tracker7 = 2
- for i in self.trainNum:
- self.tracker1 = self.tracker1+1
- li = Label(self.updateRes2W, text=i, width=20)
- li.grid(row=self.tracker1, column=0)
- for i in self.departureDate:
- self.tracker2 = self.tracker2+1
- li = Label(self.updateRes2W, text=i, width=20)
- li.grid(row=self.tracker2, column=1)
- for i in self.departFrom:
- self.tracker3 = self.tracker3+1
- li = Label(self.updateRes2W, text=i, width=20)
- li.grid(row=self.tracker3, column=2)
- for i in self.arriveTo:
- self.tracker4 = self.tracker4+1
- li = Label(self.updateRes2W, text=i, width=20)
- li.grid(row=self.tracker4, column=3)
- for i in self.classStatus:
- self.tracker5 = self.tracker5+1
- li = Label(self.updateRes2W, text=i, width=20)
- li.grid(row=self.tracker5, column=4)
- if self.classStatus == 1:
- cursor = db.cursor()
- sql = "SELECT 1st_Class_Price FROM TRAINROUTE WHERE resvID=%s"
- found1 = cursor.execute(sql, (self.reservationID))
- li = Label(self.updateRes1W, text=i, width=20)
- li.grid(row=self.tracker5, column=5)
- elif self.classStatus == 0:
- cursor = db.cursor()
- sql = "SELECT 2nd_Class_Price FROM TRAINROUTE WHERE resvID=%s"
- found1 = cursor.execute(sql, (self.reservationID))
- li = Label(self.updateRes1W, text=i, width=20)
- li.grid(row=self.tracker5, column=5)
- for i in self.numbOfBags:
- self.tracker6 = self.tracker6+1
- li = Label(self.updateRes2W, text=i, width=20)
- li.grid(row=self.tracker6, column=6)
- for i in self.passengerName:
- self.tracker7 = self.tracker7+1
- li = Label(self.updateRes2W, text=i, width=20)
- li.grid(row=self.tracker7, column=7)
- def cancelRes(self):
- self.functionW.withdraw()
- self.cancelResW = Toplevel()
- self.cancelResW.title("Cancel Train Reservation")
- l1 = Label(self.cancelResW, text="Cancel Reservation", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=3, pady=30, sticky=E+W)
- l2 = Label(self.cancelResW, text="Reservation ID")
- l2.grid(row=2, column=0, padx=50)
- self.v18 = StringVar()
- self.e18 = Entry(self.cancelResW, textvariable = self.v18, state="normal")
- self.e18.grid(row=2, column=2)
- b1 = Button(self.cancelResW, text="Back", relief="raised")
- b1.grid(row=5, column=0, padx=50, pady=50)
- b2 = Button(self.cancelResW, text="Search", relief="raised")
- b2.grid(row=6, column=0, padx=50, pady=50)
- pic = PhotoImage(file='buzzpic.gif')
- pic1 = Label(self.cancelResW, image=pic)
- pic1.image = pic
- pic1.grid(row=4, column=2, rowspan=2, sticky=E)
- b1.configure(command=self.login)
- b2.configure(command=self.cancelRes1)
- def cancelRes1(self):
- self.cancelResW.withdraw()
- self.cancelRes1W = Toplevel()
- self.reservationID = self.v18.get()
- self.trainNum = []
- self.departureDate = []
- self.departFrom = []
- self.arriveTo = []
- self.classStatus = []
- self.numbOfBags = []
- self.passengerName = []
- l1 = Label(self.cancelRes1W, text="Cancel Train Reservation", fg="goldenrod", font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=4, pady=30, sticky=E+W)
- l2 = Label(self.cancelRes1W, text="Train Number", width=20)
- l2.grid(row=2, column=0, sticky=W)
- l3 = Label(self.cancelRes1W, text="Time (Duration)", width=20)
- l3.grid(row=2, column=1, sticky=W)
- l4 = Label(self.cancelRes1W, text="Departs From", width=20)
- l4.grid(row=2, column=2, sticky=W)
- l5 = Label(self.cancelRes1W, text="Arrives At", width=20)
- l5.grid(row=2, column=3, sticky=W)
- l6 = Label(self.cancelRes1W, text="Class", width=20)
- l6.grid(row=2, column=4, sticky=W)
- l7 = Label(self.cancelRes1W, text="Price", width=20)
- l7.grid(row=2, column=5, sticky=W)
- l8 = Label(self.cancelRes1W, text="# of Bags", width=20)
- l8.grid(row=2, column=6, sticky=W)
- l9 = Label(self.cancelRes1W, text="Passenger Name", width=20)
- l9.grid(row=2, column=7, sticky=W)
- db = self.connect()
- cursor = db.cursor()
- sql = "SELECT trainNum, departureDate, departFrom, arriveTo, class, baggageNum, passengerName FROM RESV_RESERVES_TRAINROUTE WHERE resvID=%s"
- found = cursor.execute(sql, (self.reservationID))
- for record in cursor:
- self.trainNum.append(record[0])
- self.departureDate.append(record[1])
- self.departFrom.append(record[2])
- self.arriveTo.append(record[3])
- self.classStatus.append(record[4])
- self.numbOfBags.append(record[5])
- self.passengerName.append(record[6])
- self.tracker1 = 2
- self.tracker2 = 2
- self.tracker3 = 2
- self.tracker3 = 2
- self.tracker4 = 2
- self.tracker5 = 2
- self.tracker6 = 2
- self.tracker7 = 2
- for i in self.trainNum:
- self.tracker1 = self.tracker1+1
- li = Label(self.cancelRes1W, text=i, width=20)
- li.grid(row=self.tracker1, column=0)
- for i in self.departureDate:
- self.tracker2 = self.tracker2+1
- li = Label(self.cancelRes1W, text=i, width=20)
- li.grid(row=self.tracker2, column=1)
- for i in self.departFrom:
- self.tracker3 = self.tracker3+1
- li = Label(self.cancelRes1W, text=i, width=20)
- li.grid(row=self.tracker3, column=2)
- for i in self.arriveTo:
- self.tracker4 = self.tracker4+1
- li = Label(self.cancelRes1W, text=i, width=20)
- li.grid(row=self.tracker4, column=3)
- for i in self.classStatus:
- self.tracker5 = self.tracker5+1
- li = Label(self.cancelRes1W, text=i, width=20)
- li.grid(row=self.tracker5, column=4)
- for i in self.numbOfBags:
- self.tracker6 = self.tracker6+1
- li = Label(self.cancelRes1W, text=i, width=20)
- li.grid(row=self.tracker6, column=6)
- for i in self.passengerName:
- self.tracker7 = self.tracker7+1
- li = Label(self.cancelRes1W, text=i, width=20)
- li.grid(row=self.tracker7, column=7)
- self.tracker1 = self.tracker1+1
- b1 = Button(self.cancelRes1W, text="Back")
- b1.grid(row=self.tracker1, column=0, pady=30)
- b2 = Button(self.cancelResW, text="Next")
- b2.grid(row=self.tracker1, column=1, pady=30)
- b1.configure(command= self.cancelRes)
- b2.configure(command= self.canelRes2)
- def get_reviews(trainNo):
- sql = "SELECT * FROM Review WHERE TrainNumber = %s ORDER by Rating"
- cursor = db.cursor(pymysql.cursors.DictCursor)
- cursor.execute(sql,(trainNo))
- res=cursor.fetchall()
- if len(res) == 0:
- return(jsonify(msg="Requested train does not exist or there's no review yet."))
- else:
- reviews.setReviews(res)
- res = Response(json.dumps(res), mimetype='application/json')
- return(res)
- def submit_review():
- data = urllib.request.get_json()
- trainNo = data['trainNo']
- rating = data['rating']
- comment = data['comment']
- userN = user.getUserName()
- reviewNo = idGenerator()
- sql = "SELECT * FROM TRAIN_ROUTE WHERE trainNum = %s"
- cursor = db.cursor()
- cursor.execute(sql,(trainNo))
- res = cursor.fetchall()
- if len(res) == 0:
- return(jsonify(msg="Train does not exist."))
- else:
- sql = "INSERT INTO REVIEW (reviewID, trainNum, rating, username, comment) VALUES (%s, %s, %s, %s, %s)"
- cursor.execute(sql,(reviewNo, trainNo, rating, userN, comment))
- return(jsonify(msg="Review submitted successfully!"))
- def getreviews(self):
- self.functionW.withdraw()
- self.getreviewsW = Toplevel()
- self.getreviewsW.title("View Review")
- l1 = Label(self.getreviewsW,text="View Review", fg="goldenrod",font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=3, pady=30, sticky=E+W)
- l2=Label(self.getreviewsW,text="Train Number")
- l2.grid(row=2, column=0, padx=50)
- self.v19=StringVar()
- self.e19 = Entry(self.getreviewsW,textvariable = self.v19,state="normal")
- self.e19.grid(row=2,column=1)
- b1 = Button(self.getreviewsW, text="Back", relief="raised")
- b1.grid(row=5, column=0, pady=10)
- b2 = Button(self.getreviewsW, text="Next", relief="raised")
- b2.grid(row=6, column=0, pady=10)
- b1.configure(command=self.login)
- b2.configure(command=self.getreviews1)
- def getreviews1(self):
- self.getreviewsW.withdraw()
- self.getreviews1W=Toplevel()
- self.trainNum = self.v19.get()
- self.rating = []
- self.comment = []
- l1 = Label(self.getreviews1W,text="View Review", fg="goldenrod",font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=4, pady=30, sticky=E+W)
- l2 = Label(self.getreviews1W, text="Rating", width=20)
- l2.grid(row=2, column=0, sticky=W)
- l3 = Label(self.getreviews1W, text="Comment", width=20)
- l3.grid(row=2, column=1, sticky=W)
- db = self.connect()
- cursor =db.cursor()
- sql = "SELECT rating, comment FROM REVIEW WHERE trainNum = %s"
- found = cursor.execute(sql,trainNum)
- for record in cursor:
- self.rating.append(record[0])
- self.comment.append(record[1])
- if record[0] == NULL:
- messagebox.showerror("There is no review for this train")
- self.getreviews()
- else:
- for i in self.rating:
- self.tracker1 = self.tracker1+1
- li = Label(self.getreviews1W, text=i, width=20)
- li.grid(row=self.tracker1, column=0)
- for i in self.comment:
- self.tracker2 = self.tracker2+1
- li = Label(self.getreviews1W, text=i, width=20)
- li.grid(row=self.tracker2, column=1)
- self.tracker1 = self.tracker1+1
- b1 = Button(self.getreviews1W, text="Back to Choose Functionality")
- b1.grid(row=self.tracker1, column=0, pady=30)
- b1.configure(command = self.submitreviews)
- def submitreviews(self):
- self.functionW.withdraw()
- self.submitreviewsW = Toplevel()
- self.getreviewsW.title("Give Review")
- l1 = Label(self.submitreviewsW,text="Give Review", fg="goldenrod",font=("Helventica","24"))
- l1.grid(row=1, column=0, columnspan=3, pady=30, sticky=E+W)
- l2=Label(self.submitreviewsW,text="Train Number")
- l2.grid(row=2, column=0, padx=50)
- l3 = Label(self.submitreviewsW, text="Rating", width=20)
- l3.grid(row=3, column=0, padx=50)
- l4 = Label(self.submitreviewsW, text="Comment", width=20)
- l4.grid(row=4, column=0, padx=50)
- ##sql = "SELECT * FROM TRAIN_ROUTE WHERE trainNum=%s"
- ##cursor = db.cursor()
- ##cursor.excute(sql,(trainNum))
- if self.v19.get() == "None":
- messagebox.showerror("Leave the review!")
- self.submitreview()
- else:
- db=self.connect()
- cursor = db.cursor()
- sql = "INSERT INTO `Review` (`Review_ID`, `Comment`, `Rating`, `Username`, `Train_Number`) VALUES (%s, %s, %s, %s, %s)"
- cursor.execute(sql,(self.v19.get(),self.rating,self.comment))
- cursor.close()
- b1 = Button(self.submitreviewsW, text="Submit")
- b1.grid(row=self.tracker1, column=0, pady=30)
- db.commit()
- db.close()
- rootWin = Tk()
- app = Project(rootWin)
- rootWin.mainloop()
Add Comment
Please, Sign In to add comment