Test 3
Test 3
def create_main_menu(self):
menu_frame = Frame(self.root, bg="white", padx=10, pady=10)
menu_frame.pack(fill=BOTH, expand=True)
def view_tickets(self):
view_window = Toplevel(self.root)
view_window.title("View Tickets")
view_window.geometry("900x400")
conn = connect_db()
cursor = conn.cursor()
cursor.execute('SELECT * FROM Bookings WHERE Username=?', (self.username,))
bookings = cursor.fetchall()
conn.close()
def book_tickets(self):
self.booking_window = Toplevel(self.root)
self.booking_window.title("Book Tickets")
self.booking_window.geometry("600x600")
self.passenger_details_frame = Frame(self.booking_window)
self.passenger_details_frame.grid(row=6, column=0, columnspan=3)
self.passenger_entries = []
self.add_passenger_fields()
def search_trains(self):
search_window = Toplevel(self.root)
search_window.title("Search Trains")
search_window.geometry("600x400")
result_frame = Frame(search_window)
result_frame.grid(row=3, column=0, columnspan=2, padx=10, pady=10)
for train in trains:
Label(result_frame, text=f"Train No: {train[0]}, Train Name:
{train[1]}").pack()
def search_available_trains(self):
start_station = self.start_station.get()
destination_station = self.destination_station.get()
travel_date = self.date_var.get()
cursor.execute('''
SELECT TrainName, TrainNo, StartingStation, Destination, StartingTime,
ReachingTime
FROM Trains
WHERE StartingStation = ? AND Destination = ?
''', (start_station, destination_station))
trains = cursor.fetchall()
conn.close()
def add_passenger_fields(self):
for widget in self.passenger_details_frame.winfo_children():
widget.destroy()
self.passenger_entries = []
for i in range(int(self.passenger_count.get())):
row = []
for j in range(4):
if j == 2: # Gender
gender_var = StringVar()
gender_menu = ttk.Combobox(self.passenger_details_frame,
textvariable=gender_var, values=["Male", "Female", "Other"], state='readonly')
gender_menu.grid(row=i + 1, column=j, padx=10, pady=5)
row.append(gender_menu)
elif j == 3: # Berth Preference
berth_var = StringVar()
berth_menu = ttk.Combobox(self.passenger_details_frame,
textvariable=berth_var, values=["Lower", "Middle", "Upper", "Side Lower", "Side
Upper"], state='readonly')
berth_menu.grid(row=i + 1, column=j, padx=10, pady=5)
row.append(berth_menu)
else:
entry = Entry(self.passenger_details_frame)
entry.grid(row=i + 1, column=j, padx=10, pady=5)
row.append(entry)
self.passenger_entries.append(row)
def show_booking_summary(self):
# Gather all data
train_no = self.selected_train.get()
travel_date = self.date_var.get()
passenger_data = []
for row in self.passenger_entries:
name = row[0].get()
age = row[1].get()
gender = row[2].get()
berth_pref = row[3].get()
passenger_data.append((name, age, gender, berth_pref))
# Here, implement the logic to show the booking summary and confirm booking
summary_window = Toplevel(self.root)
summary_window.title("Booking Summary")
summary_window.geometry("400x400")
conn.commit()
conn.close()
def select_date(self):
def on_date_selected():
self.date_var.set(cal.get_date())
cal_window.destroy()
cal_window = Toplevel(self.booking_window)
cal_window.title("Select Date")
cal = Calendar(cal_window, selectmode='day')
cal.pack(pady=20)
Button(cal_window, text="Select", command=lambda:
on_date_selected()).pack(pady=10)
if __name__ == "__main__":
root = ctk.CTk()
app = RailwayReservationApp(root, username="user123")
root.mainloop()