رفع الملفات إلى "/"
هذا الالتزام موجود في:
145
project.py
Normal file
145
project.py
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
|
||||||
|
from tabulate import tabulate
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
Table1 = { "BookingName":"", "BookState":False, "PeopleNumber":0}
|
||||||
|
Table2 = { "BookingName":"", "BookState":False, "PeopleNumber":0}
|
||||||
|
Table3 = { "BookingName":"", "BookState":False, "PeopleNumber":0}
|
||||||
|
Table4 = { "BookingName":"", "BookState":False, "PeopleNumber":0}
|
||||||
|
Table5 = { "BookingName":"", "BookState":False, "PeopleNumber":0}
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
print(" \nWelcome to our restaurante ")
|
||||||
|
while True:
|
||||||
|
process_menu()
|
||||||
|
try:
|
||||||
|
num = int(input("Choose the number for your process: "))
|
||||||
|
except ValueError:
|
||||||
|
print("Enter a number (1-4)")
|
||||||
|
|
||||||
|
match num:
|
||||||
|
case 1:
|
||||||
|
Table_menu()
|
||||||
|
TableNum = take_table_num()
|
||||||
|
name,PeopleNumber = take_inputing()
|
||||||
|
print(Booking(TableNum,name,PeopleNumber))
|
||||||
|
case 2:
|
||||||
|
Name = get_Name()
|
||||||
|
print(Change_the_book(Name))
|
||||||
|
case 3:
|
||||||
|
Name = get_Name()
|
||||||
|
check_cancel_Name(Name)
|
||||||
|
if check_cancel_Name(Name) != f"\nname: {Name} Not Found":
|
||||||
|
Name, x = check_cancel_Name(Name)
|
||||||
|
sure = check_sure()
|
||||||
|
print(Cancel_the_book(sure,x))
|
||||||
|
else: print(f"\nname: {Name} Not Found")
|
||||||
|
case 4:
|
||||||
|
Exiting()
|
||||||
|
case _:
|
||||||
|
print("Enter a valid number")
|
||||||
|
|
||||||
|
def take_table_num():
|
||||||
|
while True :
|
||||||
|
try :
|
||||||
|
TableNum = int(input("Choose a table via number: "))
|
||||||
|
if TableNum > 5 or TableNum < 1 :
|
||||||
|
raise ValueError
|
||||||
|
x = eval(f"Table{str(TableNum)}")
|
||||||
|
if x["BookState"] == True:
|
||||||
|
raise Exception("this table isn't free")
|
||||||
|
return TableNum
|
||||||
|
except ValueError :
|
||||||
|
print("there is no table with this number\n")
|
||||||
|
except Exception as e :
|
||||||
|
print(str(e))
|
||||||
|
|
||||||
|
def take_inputing():
|
||||||
|
|
||||||
|
while True :
|
||||||
|
name = get_Name()
|
||||||
|
if name != None:
|
||||||
|
break
|
||||||
|
|
||||||
|
while True :
|
||||||
|
try :
|
||||||
|
PeopleNumber = int(input("Number of people who are coming: "))
|
||||||
|
if PeopleNumber > 0 :
|
||||||
|
break
|
||||||
|
except ValueError:
|
||||||
|
print("Enter a number")
|
||||||
|
return (name,PeopleNumber)
|
||||||
|
|
||||||
|
def get_Name():
|
||||||
|
|
||||||
|
while True:
|
||||||
|
is_valid = True
|
||||||
|
Name = input("Enter book name: ").title()
|
||||||
|
for i in Name.split(" ") :
|
||||||
|
if not i.isalpha():
|
||||||
|
is_valid = False
|
||||||
|
print("Enter a name without numbers")
|
||||||
|
break
|
||||||
|
|
||||||
|
if is_valid:
|
||||||
|
return Name
|
||||||
|
|
||||||
|
def Booking(TableNum,name,PeopleNumber):
|
||||||
|
|
||||||
|
x = eval(f"Table{str(TableNum)}")
|
||||||
|
x["BookingName"] = name
|
||||||
|
x["BookState"] = True
|
||||||
|
x["PeopleNumber"] = PeopleNumber
|
||||||
|
return("================\nSuccessful book\n================")
|
||||||
|
|
||||||
|
def Change_the_book(Name):
|
||||||
|
|
||||||
|
for i in range(1,6):
|
||||||
|
x = eval(f"Table{str(i)}")
|
||||||
|
if x["BookingName"] == Name :
|
||||||
|
print("\nEnter your changes : ")
|
||||||
|
BookingName,People_Number = take_inputing()
|
||||||
|
|
||||||
|
x["BookingName"] = BookingName
|
||||||
|
x["PeopleNumber"] = People_Number
|
||||||
|
return("================\nSuccessful change\n================")
|
||||||
|
|
||||||
|
return(f"\nname: {Name} Not Found")
|
||||||
|
|
||||||
|
def check_cancel_Name(Name):
|
||||||
|
for i in range(1,6):
|
||||||
|
x = eval(f"Table{str(i)}")
|
||||||
|
if x["BookingName"] == Name:
|
||||||
|
return Name,x
|
||||||
|
|
||||||
|
return(f"\nname: {Name} Not Found")
|
||||||
|
|
||||||
|
def check_sure():
|
||||||
|
sure = input("\nare you sure you want to cancel? (Y/N) ").upper()
|
||||||
|
while sure not in ("Y","YES","NO","N"):
|
||||||
|
print("Enter 'Y' or 'N': ")
|
||||||
|
return sure
|
||||||
|
|
||||||
|
def Cancel_the_book(sure,x):
|
||||||
|
if sure in ("Y","YES"):
|
||||||
|
x["BookingName"] = " "
|
||||||
|
x["BookState"] = False
|
||||||
|
x["PeopleNumber"] = 0
|
||||||
|
return("===================\nCanceled Successfully\n===================")
|
||||||
|
else: return ""
|
||||||
|
|
||||||
|
def Exiting():
|
||||||
|
sys.exit("\n===================================\nThank you for choose our restaurante\n===================================\n")
|
||||||
|
|
||||||
|
def process_menu():
|
||||||
|
verbs = [["1","book a table"], ["2","change the book"], ["3","cancel the book"], ["4","Exit"]]
|
||||||
|
print(f"\n{tabulate(verbs,headers='firstrow',tablefmt='grid')}")
|
||||||
|
|
||||||
|
def Table_menu():
|
||||||
|
tables = [["1","table1"],["2","table2"],["3","table3"],["4","table4"],["5","table5"]]
|
||||||
|
print(f"\n{tabulate(tables,headers='firstrow',tablefmt='grid')}")
|
||||||
|
|
||||||
|
if __name__ == "__main__" :
|
||||||
|
main()
|
||||||
19
test_project.py
Normal file
19
test_project.py
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
from project import Table1,Table2,Table3,Table4,Table5,Booking, Change_the_book, Cancel_the_book,check_cancel_Name
|
||||||
|
|
||||||
|
def test_booking():
|
||||||
|
assert Booking(1,"MMM",4) == "================\nSuccessful book\n================"
|
||||||
|
assert Booking(5,"Mr john",6) == "================\nSuccessful book\n================"
|
||||||
|
|
||||||
|
|
||||||
|
def test_change_the_book_unSuccesslly():
|
||||||
|
assert Change_the_book("Man") == "\nname: Man Not Found"
|
||||||
|
assert Change_the_book("John") == "\nname: John Not Found"
|
||||||
|
|
||||||
|
def test_check_cancel_Name():
|
||||||
|
check_cancel_Name("MMM") == "MMM","Table1"
|
||||||
|
check_cancel_Name("Mr john") == "Mr john", "Table5"
|
||||||
|
|
||||||
|
def test_cancel_the_book_Successlly():
|
||||||
|
assert Cancel_the_book("Y",Table1) == "===================\nCanceled Successfully\n==================="
|
||||||
|
assert Cancel_the_book("Y",Table5) == "===================\nCanceled Successfully\n==================="
|
||||||
المرجع في مشكلة جديدة
حظر مستخدم