diff --git a/Folder/.idea/.gitignore b/Folder/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/Folder/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/Folder/.idea/MovieDatabaseApp.iml b/Folder/.idea/MovieDatabaseApp.iml new file mode 100644 index 0000000..909438d --- /dev/null +++ b/Folder/.idea/MovieDatabaseApp.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Folder/.idea/inspectionProfiles/profiles_settings.xml b/Folder/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/Folder/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Folder/.idea/misc.xml b/Folder/.idea/misc.xml new file mode 100644 index 0000000..a6218fe --- /dev/null +++ b/Folder/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/Folder/.idea/modules.xml b/Folder/.idea/modules.xml new file mode 100644 index 0000000..784f752 --- /dev/null +++ b/Folder/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Folder/Instructions b/Folder/Instructions deleted file mode 100644 index b0f1c34..0000000 --- a/Folder/Instructions +++ /dev/null @@ -1 +0,0 @@ -Submit your code here diff --git a/Folder/MovieDatabaseApp/.idea/.gitignore b/Folder/MovieDatabaseApp/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/Folder/MovieDatabaseApp/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/Folder/MovieDatabaseApp/.idea/MovieDatabaseApp.iml b/Folder/MovieDatabaseApp/.idea/MovieDatabaseApp.iml new file mode 100644 index 0000000..909438d --- /dev/null +++ b/Folder/MovieDatabaseApp/.idea/MovieDatabaseApp.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Folder/MovieDatabaseApp/.idea/inspectionProfiles/profiles_settings.xml b/Folder/MovieDatabaseApp/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/Folder/MovieDatabaseApp/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Folder/MovieDatabaseApp/.idea/misc.xml b/Folder/MovieDatabaseApp/.idea/misc.xml new file mode 100644 index 0000000..a6218fe --- /dev/null +++ b/Folder/MovieDatabaseApp/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/Folder/MovieDatabaseApp/.idea/modules.xml b/Folder/MovieDatabaseApp/.idea/modules.xml new file mode 100644 index 0000000..784f752 --- /dev/null +++ b/Folder/MovieDatabaseApp/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Folder/MovieDatabaseApp/__pycache__/movie.cpython-311.pyc b/Folder/MovieDatabaseApp/__pycache__/movie.cpython-311.pyc new file mode 100644 index 0000000..a722cd5 Binary files /dev/null and b/Folder/MovieDatabaseApp/__pycache__/movie.cpython-311.pyc differ diff --git a/Folder/MovieDatabaseApp/__pycache__/review.cpython-311.pyc b/Folder/MovieDatabaseApp/__pycache__/review.cpython-311.pyc new file mode 100644 index 0000000..fc3a5e0 Binary files /dev/null and b/Folder/MovieDatabaseApp/__pycache__/review.cpython-311.pyc differ diff --git a/Folder/MovieDatabaseApp/movie.py b/Folder/MovieDatabaseApp/movie.py new file mode 100644 index 0000000..89a41c2 --- /dev/null +++ b/Folder/MovieDatabaseApp/movie.py @@ -0,0 +1,6 @@ +class Movie: + def __init__(self, title, director, genre, release_year): + self.title = title + self.director = director + self.genre = genre + self.release_year = release_year diff --git a/Folder/MovieDatabaseApp/movie_database.py b/Folder/MovieDatabaseApp/movie_database.py new file mode 100644 index 0000000..a8c5970 --- /dev/null +++ b/Folder/MovieDatabaseApp/movie_database.py @@ -0,0 +1,163 @@ +#group members +# Divine UDOH 20231712 +# Blair Nwokike 20230050 +#Edeoga Chukwuemeka 20230941 + +import tkinter as tk +from tkinter import simpledialog, messagebox +from sqlalchemy import create_engine, Column, Integer, String, Float, ForeignKey +from sqlalchemy.orm import sessionmaker, relationship, declarative_base +from movie import Movie +from review import Review + +# SQLAlchemy setup +Base = declarative_base() + +class MovieModel(Base): + __tablename__ = 'movies' + id = Column(Integer, primary_key=True) + title = Column(String, unique=True) + director = Column(String) + genre = Column(String) + release_year = Column(Integer) + reviews = relationship("ReviewModel", back_populates="movie", cascade="all, delete") + + def average_rating(self): + if not self.reviews: + return 0 + return sum(r.rating for r in self.reviews) / len(self.reviews) + +class ReviewModel(Base): + __tablename__ = 'reviews' + id = Column(Integer, primary_key=True) + reviewer_name = Column(String) + rating = Column(Float) + comment = Column(String) + movie_id = Column(Integer, ForeignKey('movies.id')) + movie = relationship("MovieModel", back_populates="reviews") + +# DB engine +engine = create_engine('sqlite:///movies.db', echo=False) +Session = sessionmaker(bind=engine) +session = Session() +Base.metadata.create_all(engine) + +class MovieDatabaseApp: + def __init__(self, root): + self.root = root + self.root.title("🎬 Movie Database") + self.root.geometry("500x400") + self.root.configure(bg="#2e2e2e") + + title_label = tk.Label(root, text="Movie Database", font=("Arial", 18, "bold"), bg="#2e2e2e", fg="#ffffff") + title_label.pack(pady=20) + + button_frame = tk.Frame(root, bg="#2e2e2e") + button_frame.pack(pady=10) + + self.create_button(button_frame, "Add Movie", self.add_movie).pack(pady=5) + self.create_button(button_frame, "Delete Movie", self.delete_movie).pack(pady=5) + self.create_button(button_frame, "View Movies", self.view_movies).pack(pady=5) + self.create_button(button_frame, "Search Movies", self.search_movies).pack(pady=5) + self.create_button(button_frame, "Exit", root.quit).pack(pady=5) + + def create_button(self, parent, text, command): + return tk.Button(parent, text=text, width=20, height=2, bg="#4CAF50", fg="white", + font=("Arial", 12), command=command, relief="raised", bd=2) + + def add_movie(self): + title = simpledialog.askstring("Movie Title", "Enter the movie title:") + if not title : + return + director = simpledialog.askstring("Director", "Enter the director:") + genre = simpledialog.askstring("Genre", "Enter the genre:") + year = simpledialog.askinteger("Release Year", "Enter the release year:") + + if session.query(MovieModel).filter_by(title=title).first(): + messagebox.showwarning("Duplicate", "This movie already exists.") + return + + movie = MovieModel(title=title, director=director, genre=genre, release_year=year) + session.add(movie) + session.commit() + messagebox.showinfo("Success", "Movie added successfully.") + + def delete_movie(self): + title = simpledialog.askstring("Delete Movie", "Enter the title of the movie to delete:") + if not title: + return + movie = session.query(MovieModel).filter_by(title=title).first() + if not movie: + messagebox.showerror("Error", "Movie not found.") + return + confirm = messagebox.askyesno("Confirm Delete", f"Are you sure you want to delete '{title}'?") + if confirm: + session.delete(movie) + session.commit() + messagebox.showinfo("Deleted", f"'{title}' has been deleted.") + + def view_movies(self): + top = tk.Toplevel(self.root) + top.title("All Movies") + top.geometry("600x500") + top.configure(bg="#1e1e1e") + + movies = session.query(MovieModel).all() + reviews = session.query(ReviewModel).all() + for movie in movies: + rating = round(movie.average_rating(), 2) + movie_description = f"{movie.title} ({movie.release_year}) - {movie.genre}, Dir: {movie.director} | ⭐ {rating}" + + tk.Label(top, text=movie_description, bg="#1e1e1e", fg="white", font=("Arial", 14)).pack(anchor="w", padx=10, pady=2) + tk.Label(top, text="Reviews:", bg="#1e1e1e", fg="white", font=("Arial", 13)).pack(anchor="w", padx=10, pady=2) + + for review in reviews: + if review.movie_id == movie.id: + text = (f"{review.reviewer_name} {review.rating}⭐\n " + f"{review.comment}") + tk.Label(top, text=text, bg="#1e1e1e", fg="white", font=("Times New Roman", 11)).pack(anchor="w", padx=10, pady=2) + + tk.Button(top, text="Add Review", command=lambda m=movie: self.add_review(m), bg="#2196F3", fg="white").pack(pady=2) + + def search_movies(self): + query = simpledialog.askstring("Search", "Enter title, director, or genre:") + if not query: + return + + results = session.query(MovieModel).filter( + (MovieModel.title.ilike(f"%{query}%")) | + (MovieModel.genre.ilike(f"%{query}%")) | + (MovieModel.director.ilike(f"%{query}%")) + ).all() + + top = tk.Toplevel(self.root) + top.title("Search Results") + top.geometry("600x500") + top.configure(bg="#1e1e1e") + + if not results: + tk.Label(top, text="No results found.", font=("Arial", 12), fg="red", bg="#1e1e1e").pack(pady=20) + return + + for movie in results: + rating = round(movie.average_rating(), 2) + info = f"{movie.title} ({movie.release_year}) - {movie.genre}, Dir: {movie.director} | ⭐ {rating}" + tk.Label(top, text=info, bg="#1e1e1e", fg="white", font=("Arial", 11)).pack(anchor="w", padx=10, pady=2) + + def add_review(self, movie): + reviewer = simpledialog.askstring("Reviewer", "Enter your name:") + rating = simpledialog.askfloat("Rating", "Enter rating (0-5):") + comment = simpledialog.askstring("Comment", "Enter your comment:") + + if not reviewer or rating is None: + return + + review = ReviewModel(reviewer_name=reviewer, rating=rating, comment=comment, movie=movie) + session.add(review) + session.commit() + messagebox.showinfo("Success", "Review added successfully!") + +if __name__ == "__main__": + root = tk.Tk() + app = MovieDatabaseApp(root) + root.mainloop() diff --git a/Folder/MovieDatabaseApp/review.py b/Folder/MovieDatabaseApp/review.py new file mode 100644 index 0000000..3bee460 --- /dev/null +++ b/Folder/MovieDatabaseApp/review.py @@ -0,0 +1,5 @@ +class Review: + def __init__(self, reviewer_name, rating, comment): + self.reviewer_name = reviewer_name + self.rating = rating + self.comment = comment diff --git a/Folder/guest.py b/Folder/guest.py deleted file mode 100644 index e1a8097..0000000 --- a/Folder/guest.py +++ /dev/null @@ -1,23 +0,0 @@ -class Guest: - def __init__(self, name, contact_info): - self.name = name - self.contact_info = contact_info - self.checked_in = False - - def checkIn(self): - """Checks a guest into the hotel""" - self.checked_in = True - return f"{self.name} has checked in" - - def checkOut(self): - """Checks a guest out of the hotel""" - if self.checked_in: - self.checked_in = False - return f"{self.name} has checked out." - return f"{self.name} is not checked in." - - def __str__(self): - """"Returns a clean/sanitized string represantation of a guest""" - status = "Checked in" if self.checked_in else "Not checked in" - return f"Guest: {self.name}, Contact: {self.contact_info}, Status: {status}" - \ No newline at end of file diff --git a/Folder/hotel_management.py b/Folder/hotel_management.py deleted file mode 100644 index 5a03a6c..0000000 --- a/Folder/hotel_management.py +++ /dev/null @@ -1,347 +0,0 @@ -from pydoc import text -from sqlite3 import Date -from tkinter import messagebox -from turtle import width -from guest import Guest -from reservation import Reservation -from room import HotelRoom -import json -import tkinter as tk -from tkinter import * -from tkinter import simpledialog -from tkinter import Tk -from tkinter import ttk -import datetime - -import room - -### Important notes -# Docstrings give relevant information on functions so when you hover over them with your mouse you can see the information given -# they are defined with triple quotes """Information here""" - -class HotelManagement: - def __init__(self, root): - self.root = root - self.root.title("Hotel Management System") - self.root.geometry("600x600") - self.create_widgets() - self.database = self.load_from_file() - self.rooms = self.database.get('rooms', []) - self.reservations = self.database.get('reservations', {}) - self.configure_tree_view() - self.room_tree_view.bind("<>", self.on_tree_select) # Binds the on_tree_select function to the main tree view - self.selected_room_number = None - - def create_widgets(self): - """Handles the initial creation of all the gui elements.""" - self.create_room_button = ttk.Button(self.root, text="Add Room", width=60, command=self.request_room_info) - self.book_reservation_button = ttk.Button(self.root, text="Book Reservation", width=60, command=self.request_reservation_info) - self.check_in_guest_button = ttk.Button(self.root, text="Check In", width=60, command=self.request_check_in_info) - self.check_out_guest_button = ttk.Button(self.root, text="Check Out", width=60, command=self.request_check_out_info) - self.cancel_reservation_button = ttk.Button(self.root, text="Cancel Reservation", width=60, command=self.request_cancel_info) - self.room_tree_view = ttk.Treeview(self.root, selectmode='browse') - - self.create_room_button.grid(row=1, column=0,padx=5, pady=5) - self.book_reservation_button.grid(row=2, column=0, padx=5, pady=5) - self.cancel_reservation_button.grid(row=3, column=0, padx=5, pady=5) - self.check_in_guest_button.grid(row=4, column=0, padx=5, pady=5) - self.check_out_guest_button.grid(row=5, column=0, padx=5, pady=5) - - - self.room_tree_view.grid(row=0, column=0, padx=5, pady=5) - - self.room_tree_view["columns"] = ("1", "2", "3", "4") - self.room_tree_view['show'] = 'headings' - - self.room_tree_view.column("1", width=90, anchor='c') - self.room_tree_view.column("2", width=90, anchor='se') - self.room_tree_view.column("3", width=90, anchor='se') - self.room_tree_view.column("4", width=90, anchor='se') - - self.room_tree_view.heading("1", text="Number") - self.room_tree_view.heading("2", text="Type") - self.room_tree_view.heading("3", text="Price") - self.room_tree_view.heading("4", text="Available") - - def configure_tree_view(self): - for room in self.rooms: - self.room_tree_view.insert("", 0, text="L10", values=(room['room_number'], room['room_type'], room['price'], room['availibility'],)) - - def on_tree_select(self, event): - selected_items = self.room_tree_view.selection() - if selected_items: - selected_item = selected_items[0] - room_values = self.room_tree_view.item(selected_item, 'values') - if room_values: - self.selected_room_number = int(room_values[0]) - room = self.get_room(self.selected_room_number) - if room: - pass - else: - self.selected_room_number = None - else: - self.selected_room_number = None - - - def load_from_file(self): - try: - with open("database.json", "r") as file: - return json.load(file) - except FileNotFoundError: - return {'rooms': [], 'reservations': {}} # Return an empty list if the file doesn't exist yet to prevent a crash. - except json.JSONDecodeError: - return {'rooms': [], 'reservations': {}} # Return an empty list if the file is corrupted to prevent a crash. - - def save_to_file(self): - self.database['rooms'] = self.rooms - self.database['reservations'] = self.reservations - try: - with open("database.json", "w") as file: - json.dump(self.database, file) - except IOError as e: - messagebox.showerror("File Error", f"Could not save data: {e}") # Log the error - pass - - def parse_date(self, date_str): - """Parses a string in DD/MM/YYYY formate to a datetime object to avoid issues""" - try: - day, month, year = map(int, date_str.split('/')) - return datetime.date(year, month, day) - except ValueError: - return None - - def date_to_str(self, date_obj): - """Converts a date object to a string""" - if isinstance(date_obj, datetime.date): - return date_obj.strftime("%d/%m/%Y") - return str(date_obj) - - def request_reservation_info(self): - if self.selected_room_number is None: - messagebox.showerror("Error", "Please select a room first.") - return - else: - check_in_date = Date.today() - guest_name = simpledialog.askstring("Guest Info", "Enter the guests name.") - if guest_name is None: - messagebox.showerror("Invalid Input", "Guest name can only be a string.") - return - - guest_contact_info = simpledialog.askstring("Guest Info", "Enter the guests contact info.") - if guest_contact_info is None: - messagebox.showerror("Invalid Input", "Contact info can only be a int.") - return - - check_out_date = simpledialog.askstring("Guest Info", "When will the guest be checking out" - "Please input a valid date in the format DD/MM/YYYY. ") - if check_out_date is None: - messagebox.showerror("Invalid Input", "Please input a valid date in the format DD/MM/YYYY.") - return - - current_guest = { - "name": guest_name, - "contact_info": guest_contact_info, - "checked_in": False - } - self.book_room(self.selected_room_number, current_guest, check_in_date, check_out_date) - - def request_check_in_info(self): - """Request information needed to check a guest in.""" - if self.selected_room_number is None: - messagebox.showerror("Error", "Please select a room first.") - return - - # Check if the reservation exists - reservation_id = None - for res_id, res in self.reservations.items(): - if res["room_number"] == self.selected_room_number: - reservation_id = res_id - break - - if not reservation_id: - messagebox.showerror("Error", f"No reservation found for room{self.selected_room_number}") - return - - if self.reservations[reservation_id]["checked_in"]: - messagebox.showerror("Error", f"Guest already checked in to room {self.selected_room_number}.") - return - - # Get guest information - guest_name = simpledialog.askstring("Guest Info", "Enter the guest's name") - if guest_name is None: - messagebox.showerror("Error", "Please input a guest name.") - return - - guest_contact_info = simpledialog.askstring("Guest Info", "Enter the guest's contact info") - if guest_contact_info is None: - messagebox.showerror("Error", "Please input guest contact information.") - return - - guest = { - "name": guest_name, - "contact_info": guest_contact_info - } - - self.check_in_guest(self.selected_room_number, guest) - - def request_check_out_info(self): - """Requests information needed to check out a guest.""" - if self.selected_room_number is None: - messagebox.showerror("Error", "Please select a room first.") - return - - confirm = messagebox.askyesno("Confirm Check-out", f"Are your sure you want to check out the guest form room {self.selected_room_number}?") - - if confirm: - self.check_out_guest(self.selected_room_number) - - def request_cancel_info(self): - """Requests information needed to cancel a reservation.""" - if self.selected_room_number is None: - messagebox.showerror("Error", "Please select a room first.") - return - - confirm = messagebox.askyesno("Confirm Cancellation", f"Are you sure you want to cancel the reservation for room {self.selected_room_number}?") - - if confirm: - self.cancel_reservation(self.selected_room_number) - - def request_room_info(self): - """Opens dialogs to get room details from the user using tkinter gui and adds the room to the json database.""" - - room_number = simpledialog.askinteger("Add Room", "Enter room number") - if room_number is None: - return - - room_type = simpledialog.askstring("Add Room", "Enter room type (e.g., Single, Double, Suite):") - if room_type is None: #Throws an error if one of the valid room types is not provided. - return - - price = simpledialog.askfloat("Add Room", "Enter price per night: ") - if price is None: - return - - self.add_room(room_number, room_type, price) - self.room_tree_view.delete(*self.room_tree_view.get_children()) - self.configure_tree_view() - - def add_room(self, room_number, room_type, price): - """Adds a new room to the hotel database.""" - room_exists = any(room['room_number'] == room_number for room in self.rooms) - - if room_exists: - messagebox.showerror("Error", f"Room {room_number} already exists.") - else: - new_room = { - "room_number": room_number, - "room_type": room_type, - "price": price, - "availibility": True - } - self.rooms.append(new_room) - self.save_to_file() - messagebox.showinfo("Success", f"Room {room_number} added successfully!") - - def get_room(self, room_number): - """Retrieves a room by its number""" - for room in self.rooms: - if room["room_number"] == room_number: - return room - return None - - def book_room(self, room_number: int, guest, check_in_date, check_out_date): - room = self.get_room(room_number) - if not room: - messagebox.showerror("Error", f"Room {room_number} does not exist.") - return - - if not room["availibility"]: - messagebox.showerror("Error", f"Room {room_number} has already been booked.") - return - - room["availibility"] = False - guest_dict = guest.__dict__ if hasattr(guest, "__dict__") else guest - - reservation_id = f"{room_number}_{self.date_to_str(check_in_date)}" - - self.reservations[reservation_id] = { - "room_number": room_number, - "guest": guest_dict, - "check_in_date": self.date_to_str(check_in_date), - "check_out_date": self.date_to_str(check_out_date), - "checked_in": False - } - - self.save_to_file() - messagebox.showinfo("Success", f"Room {room_number} has been booked successfully!") - - self.room_tree_view.delete(*self.room_tree_view.get_children()) - self.configure_tree_view() - - def cancel_reservation(self, room_number: int): - reservation_id = None - for res_id, res in self.reservations.items(): - if res["room_number"] == room_number: - reservation_id = res_id - break - - if not reservation_id: - messagebox.showerror("Error", f"No reservation found for room {room_number}.") - return - - room = self.get_room(room_number) - if room: - room["availibility"] = True - - del self.reservations[reservation_id] # Delete the reservation found using the reservation id - self.save_to_file() - messagebox.showinfo("Success", f"Reservation for room {room_number} cancelled!") - - self.room_tree_view.delete(*self.room_tree_view.get_children()) - self.configure_tree_view() - - def check_in_guest(self, room_number, guest): - reservation_id = None - for res_id, res in self.reservations.items(): - if res["room_number"] == room_number: - reservation_id = res_id - break - - if reservation_id is None: - messagebox.showerror("Error", f"No reservation found for room {room_number}.") - return - - self.reservations[reservation_id]["checked_in"] = True - - if guest: - guest_dict = guest.__dict__ if hasattr(guest, "__dict__") else guest - self.reservations[reservation_id]["guest"] = guest_dict - - self.save_to_file() - messagebox.showinfo("Success", f"Guest checked into room {room_number}!") - - def check_out_guest(self, room_number): - reservation_id = None - for res_id, res in self.reservations.items(): - if res["room_number"] == room_number: - reservation_id = res_id - break - - if not reservation_id or not self.reservations[reservation_id]["checked_in"]: - messagebox.showerror("Error", f"No checked-in guest found for room {room_number}.") - return - - room = self.get_room(room_number) - if room: - room["availibility"] = True - - del self.reservations[reservation_id] - self.save_to_file() - messagebox.showinfo("Success", f"Guest checked out from room {room_number}") - - self.room_tree_view.delete(*self.room_tree_view.get_children()) - self.configure_tree_view() - -root = Tk() -app = HotelManagement(root) -root.mainloop() \ No newline at end of file diff --git a/Folder/reservation.py b/Folder/reservation.py deleted file mode 100644 index 89b90ea..0000000 --- a/Folder/reservation.py +++ /dev/null @@ -1,25 +0,0 @@ -from room import HotelRoom -from guest import Guest - -class Reservation(object): - def __init__(self, room: HotelRoom, guest: Guest,check_in_date, check_out_date): - self.room = room - self.guest = guest - self.check_in_date = check_in_date - self.check_out_date = check_out_date - self.active = True - - def __str__(self): - return f"Reservation for {self.guest.name} in room {self.room.room_number} from {self.check_in_date} to {self.check_out_date}" - - def book_reservation(self): - self.room.availibility = True - pass - - - def cancel_reservation(self): - if self.active: - self.active = False - self.room.availibility = True - return f"The reservation for {self.guest.name} in {self.room.room_number} at {self.check_in_date} has been canceled" - return f"This reservation has already been canceled." diff --git a/Folder/room.py b/Folder/room.py deleted file mode 100644 index 1cb6735..0000000 --- a/Folder/room.py +++ /dev/null @@ -1,27 +0,0 @@ -class HotelRoom(object): - room_number = 0 - room_type = "" - price = 0 - availibility = True - - def __init__(self, room_number: int, room_type: str, price: int, availibility: bool): - self.room_number = room_number - self.room_type = room_type - self.price = price - self.availibility = availibility - - def __repr__(self): - return f"Room(room_number='{self.room_number}', room_type={self.room_number}, price={self.price})" - - def getRoomNumber(self): - return self.room_number - - def getRoomPrice(self): - return self.price - - def getRoomType(self): - return self.room_type - - def getRoomAvailibility(self): - return self.availibility -