Guest User

Untitled

a guest
Nov 4th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.79 KB | None | 0 0
  1. # coding: utf-8
  2.  
  3. # ## Food Delivery System
  4.  
  5. # MODULES COMPLETED:
  6. # MEMBERS:
  7. # -> Register
  8. # -> Login
  9. # -> View Menu
  10. # -> Add Items To Cart
  11. # -> Modify Cart
  12. # -> Add / Manage Address
  13. # -> Payment Modes (Online / COD)
  14. # -> Add Balance
  15. # -> Place Order
  16. # -> View Order History
  17. # -> Cancel Order
  18. # -> Track Order
  19.  
  20. # Admin:
  21. # -> Register
  22. # -> Login
  23. # -> View Menu
  24. # -> Modify Menu
  25. # -> Add Items To User Cart
  26. # -> Modify User Cart
  27. # -> Add / Manage User Address
  28. # -> Modify Payment Modes (Online / COD)
  29. # -> Modify Balance
  30. # -> Place User Order
  31. # -> View User Order History
  32. # -> Cancel User Order
  33. # -> Track User Order
  34.  
  35.  
  36. # 1. Register / Login (Admin & Users)
  37. # 2.
  38.  
  39. # In[51]:
  40.  
  41.  
  42. import time as tm
  43. import random
  44.  
  45.  
  46. # In[52]:
  47.  
  48.  
  49. # local databases
  50.  
  51. # menu = {index : [name, price, prepare time, availability]}
  52. menu = {1 : ['Shahi Mushroom', 150, 2, "YES"], 2 : ['Kashmiri Aloo', 250, 3, "YES"], 3 : ['Dal Makhani', 200, 2.5, "YES"], 4 : ['Chana Masala', 100, 1.5, "YES"]}
  53. menuFlag = 5
  54.  
  55. # cust = {usrName : [name, username, password, credit]}
  56. cust = {'test' : ['testUser', 'test', 'test123', 0]}
  57.  
  58. #admin
  59. admin = {'admin' : ['testAdmin', 'admin', 'admin123']}
  60.  
  61. # custAddress = {username : [[]]}
  62. custAdd = {}
  63.  
  64. # cust transaction history = {username : [[menuIndex, date, paymentMode, status]]}
  65. custHist = {}
  66.  
  67. #custCart
  68. custCart = {}
  69.  
  70.  
  71. # In[ ]:
  72.  
  73.  
  74. def adminReg():
  75. name = input("Admin Registration\n\nEnter Your Name : ")
  76. usrName = input("Enter Prefered Username : ")
  77. usrPass = input("Enter Password : ")
  78.  
  79. while True:
  80. if usrName in admin:
  81. usrName = ("\nSorry! Username not available!\nEnter New Username : ")
  82. else:
  83. break
  84.  
  85. admin[usrName] = [name, usrName, usrPass]
  86. print("\nCongratulations! Admin Account has been created!")
  87.  
  88.  
  89. # In[53]:
  90.  
  91.  
  92. def adminLogin():
  93. usrName = input("\nLog-In To Sikkim Treats Admin Panel\nEnter Username : ")
  94. usrPass = input("Enter Password : ")
  95.  
  96. if usrName in cust:
  97. if usrPass == admin[usrName][2]:
  98. print("\nLog-In Successful!")
  99. adminPortal(usrName)
  100. else:
  101. print("\nWrong Password!")
  102. else:
  103. print("\nAdmin Not Found!")
  104.  
  105.  
  106. # In[54]:
  107.  
  108.  
  109. def memReg():
  110. name = input("Registration\n\nEnter Your Name : ")
  111. usrName = input("Enter Prefered Username : ")
  112. usrPass = input("Enter Password : ")
  113.  
  114. while True:
  115. if usrName in cust:
  116. usrName = ("\nSorry! Username not available!\nEnter New Username : ")
  117. else:
  118. break
  119.  
  120. cust[usrName] = [name, usrName, usrPass, 0]
  121. custHist[usrName] = []
  122. custAdd[usrName] = []
  123. custCart[usrName] = []
  124.  
  125. print("\nCongratulations! Account has been created!")
  126.  
  127.  
  128. # In[55]:
  129.  
  130.  
  131. def memLogin():
  132. usrName = input("\nLog-In To Sikkim Treats\nEnter Username : ")
  133. usrPass = input("Enter Password : ")
  134.  
  135. if usrName in cust:
  136. if usrPass == cust[usrName][2]:
  137. print("\nLog-In Successful!")
  138. userPortal(usrName)
  139. else:
  140. print("\nWrong Password!")
  141. else:
  142. print("\nUser Not Found!")
  143.  
  144.  
  145. # In[56]:
  146.  
  147.  
  148. def addAddress(usrName):
  149. try:
  150. street = input("\nAdd New Address\nEnter Street Name : ")
  151. landmark = input("Enter Landmark : ")
  152. pincode = int(input("Enter Pincode : "))
  153. time = random.randint(1, 3)
  154.  
  155. custAdd[usrName].append([street, landmark, pincode, time])
  156. print("\nNew Address Has Been Added!")
  157.  
  158. except:
  159. print("Enter Valid pincode")
  160.  
  161.  
  162. # In[57]:
  163.  
  164.  
  165. def addMenu():
  166. try:
  167. nameRecipe = input("Add Menu\nEnter Recipe Name : ")
  168. price = int(input("Enter Price : "))
  169. time = float(input("Enter prepare time : "))
  170. avail = input("Enter Availability : ")
  171.  
  172. menu[menuFlag] = [nameRecipe, price, time, avail]
  173. menuFlag += 1
  174.  
  175. except:
  176. print("Error In Adding Recipe!")
  177.  
  178.  
  179. # In[58]:
  180.  
  181.  
  182. def addCredit(usrName):
  183. try:
  184. print("\nManage Balance\nCurrent Balance : {}" .format(cust[usrName][3]))
  185. amount = int(input("Enter Amount To Add : "))
  186. cust[usrName][3] += amount
  187. print("\n{} Added Successfully!\nNew Balance : {}" .format(amount, cust[usrName][3]))
  188.  
  189. except:
  190. print("\nEnter Valid Amount!")
  191.  
  192.  
  193. # In[59]:
  194.  
  195.  
  196. def viewAddress(usrName):
  197. try:
  198. if len(custAdd[usrName]) == 0:
  199. print("\nNo Address Yet!")
  200.  
  201. else:
  202. flag = 1
  203. for i in custAdd[usrName]:
  204. print("\nAddress : {}\nStreet Name : {}\nLandmark : {}\nPincode : {}\nDelivery Time : {} minutes\n" .format(flag, i[0], i[1], i[2], i[3]))
  205. flag += 1
  206. except:
  207. print("\nError In Displaying Address\n")
  208.  
  209.  
  210. # In[60]:
  211.  
  212.  
  213. def viewProfile(usrName):
  214. try:
  215. print("\nProfile\nName : {}\nUsername : {}\nPassword : {}\nBalance : {}" .format(cust[usrName][0], cust[usrName][1], cust[usrName][2], cust[usrName][3]))
  216. except:
  217. print("\nError in loading Profile!\n")
  218.  
  219.  
  220. # In[61]:
  221.  
  222.  
  223. def viewMenu():
  224. try:
  225. print("\n\nMENU\n\nSl.No.\tName\t\t\tPrice\t\tPrepare Time\n")
  226.  
  227. for i in menu:
  228. if(menu[i][3] == "YES"):
  229. print("\n{}\t{}\t\t₹ {}\t\t{} minutes" .format(i, menu[i][0], menu[i][1], menu[i][2]))
  230. except:
  231. print("\nError in loading menu!\n")
  232.  
  233.  
  234. # In[78]:
  235.  
  236.  
  237. def addItems(usrName):
  238. try:
  239. viewMenu()
  240. choice = int(input("\n100 : Back\nEnter Sl. No. To Add Items : "))
  241.  
  242. if (choice == 100):
  243. pass
  244. else:
  245. if menu[choice][3] == "YES":
  246. custCart[usrName].append(choice)
  247. print("\nItem Has Been Added To Cart!")
  248. addItems(usrName)
  249. else:
  250. print("\nSorry, Item Not Available!")
  251. except:
  252. print("\nError in adding items!")
  253.  
  254.  
  255. # In[63]:
  256.  
  257.  
  258. def viewCart(usrName):
  259. try:
  260. if len(custCart[usrName]) == 0:
  261. print("\nCart is empty!")
  262. else:
  263. total = 0
  264. totalWait = 0
  265. print("\n\nCART\n\nSl.No.\tName\t\t\tPrice\t\tPrepare Time\n")
  266. for i in custCart[usrName]:
  267. print("\n{}\t{}\t\t₹ {}\t\t{} minutes" .format(i, menu[i][0], menu[i][1], menu[i][2]))
  268. total += menu[i][1]
  269. totalWait += menu[i][2]
  270.  
  271. print("\n","-"*65, "\n\t\t\t\t\tWaiting Time : {} minutes\n\n\t\t\t\t\tAmount Payable : ₹ {}" .format(totalWait, total))
  272. except:
  273. print("\nError in loading cart!")
  274.  
  275.  
  276. # In[64]:
  277.  
  278.  
  279. def editCart(usrName):
  280. try:
  281.  
  282. if len(custCart[usrName]) == 0:
  283. print("\nCart is empty!")
  284.  
  285. else:
  286. viewCart(usrName)
  287. choice = int(input("\nBack : 100\nSl. No. To Remove Items : "))
  288.  
  289. if choice == 100:
  290. pass
  291. else:
  292. if choice in custCart[usrName]:
  293. custCart[usrName].remove(choice)
  294. print("\nItem Removed Successfully!")
  295. editCart(usrName)
  296. else:
  297. print("\nInvalid Item")
  298.  
  299. except:
  300. print("\nError in cart! Please Try Later!")
  301.  
  302.  
  303.  
  304. # In[65]:
  305.  
  306.  
  307. def paymentMode(usrName, amount):
  308. try:
  309. choice = int(input("\nSelect Payment Mode\n1. Credit\n2. Cash On Delivery\n3. BackChoice : "))
  310.  
  311. if choice == 1:
  312. if cust[usrName][3] >= amount:
  313. cust[usrName][3] -= amount
  314. print("\nPayment Successful!\nOrder Confirmed!\n")
  315. return "Online"
  316. else:
  317. print("\nInsufficient Balance!")
  318. paymentMode(usrName, amount)
  319. elif choice == 2:
  320. print("\nPlease pay ₹ {} at time of delivery\nOrder Confirmed!\n" .format(amount))
  321. return "COD"
  322.  
  323. elif choice == 3:
  324. return False
  325.  
  326. else:
  327. print("\nInvalid Input")
  328.  
  329. except:
  330. print("\nError in payment! Try Again Later!")
  331. return False
  332.  
  333.  
  334.  
  335. # In[66]:
  336.  
  337.  
  338. def placeOrder(usrName, method, address):
  339. try:
  340.  
  341. if len(custCart[usrName]) == 0:
  342. print("\nEmpty Cart!")
  343.  
  344. else:
  345. total = 0
  346. totalWait = 0
  347.  
  348. for i in custCart[usrName]:
  349. total += menu[i][1]
  350. totalWait += menu[i][2]
  351.  
  352. totalWait += custAdd[usrName][address-1][3]
  353.  
  354. order = custCart[usrName].copy()
  355. temp = []
  356. temp.append(total)
  357. temp.append(totalWait)
  358. temp.append(method)
  359. temp.append(tm.time())
  360.  
  361. custHist[usrName].append([order, temp])
  362. custCart[usrName] = []
  363. print("\nOrder Has Been Placed!\n")
  364.  
  365. except:
  366. print("\nError in loading cart!")
  367.  
  368.  
  369. # In[67]:
  370.  
  371.  
  372. def viewOrder(usrName):
  373. try:
  374.  
  375. if (len(custHist[usrName]) == 0):
  376. print("\nNo Order Has Been Made!")
  377.  
  378. else:
  379.  
  380. flag = 0
  381. for i in custHist[usrName]:
  382. print("\n\nOrder : {}\n\nSl.No.\tName\t\t\tPrice\t\tPrepare Time\n" .format(flag))
  383. for j in i[0]:
  384. print("\n{}\t{}\t\t₹ {}\t\t{} minutes" .format(j, menu[j][0], menu[j][1], menu[j][2]))
  385.  
  386. if i[1][3] == None:
  387. status = "Cancelled"
  388. elif (tm.time() - i[1][3]) < i[1][1]*60:
  389. status = "Delivery in {0:0.2f} minutes" .format(((i[1][1]*60) - (tm.time()-i[1][3]))/60)
  390. elif (tm.time() - i[1][3]) >= i[1][1]*60:
  391. status = "Delivered!"
  392. else:
  393. status = "Unknown"
  394.  
  395. print("\n", "-"*65, "\nTotal Amount : ₹ {}\nTotal Wait Time : {} minutes\nPayment Mode : {}\nStatus : {}\n" .format(i[1][0], i[1][1], i[1][2], status))
  396. flag += 1
  397. except:
  398. print("\nEror in view order!")
  399.  
  400.  
  401.  
  402. # In[68]:
  403.  
  404.  
  405. def cancelOrder(usrName):
  406. try:
  407. print("\nCANCEL ORDER")
  408. viewOrder(usrName)
  409. choice = int(input("\n100 : Back\nEnter Order No. To Cancel : "))
  410.  
  411. if choice == 100:
  412. pass
  413. elif choice >= len(custHist[usrName]) and choice != 100:
  414. print("\nInvalid Input!")
  415.  
  416. else:
  417.  
  418. if custHist[usrName][choice][1][3] == None:
  419. print("\nOrder Already Has Been Cancelled!")
  420. elif (tm.time() - custHist[usrName][choice][1][3]) < custHist[usrName][choice][1][1] * 60 :
  421. custHist[usrName][choice][1][3] = None
  422. if custHist[usrName][choice][1][2] == "Online":
  423. cust[usrName][3] += custHist[usrName][choice][1][0]
  424. print("\nOrder cancelled!\nCredit has been Refunded!")
  425.  
  426. else:
  427. print("\nOrder cancelled!")
  428.  
  429. else:
  430. print("\nOrder has been delivered!")
  431.  
  432. except:
  433. print("\nError in cancel order!")
  434.  
  435.  
  436.  
  437. # In[69]:
  438.  
  439.  
  440. def trackOrder(usrName):
  441.  
  442. try:
  443. flag = 0
  444. for i in custHist[usrName]:
  445.  
  446. if i[1][3] == None:
  447. status = "Cancelled"
  448. elif (tm.time() - i[1][3]) < i[1][1]*60:
  449. status = "Delivery in {0:0.2f} minutes" .format(((i[1][1]*60) - (tm.time()-i[1][3]))/60)
  450.  
  451. print("\n\nTrack Order : {}\n\nSl.No.\tName\t\t\tPrice\t\tPrepare Time\n" .format(flag))
  452. for j in i[0]:
  453. print("\n{}\t{}\t\t₹ {}\t\t{} minutes" .format(j, menu[j][0], menu[j][1], menu[j][2]))
  454.  
  455. print("\n", "-"*65, "\nTotal Amount : ₹ {}\nTotal Wait Time : {} minutes\nPayment Mode : {}\nStatus : {}\n" .format(i[1][0], i[1][1], i[1][2], status))
  456. flag += 1
  457.  
  458. elif (tm.time() - i[1][3]) >= i[1][1]*60:
  459. status = "Delivered!"
  460. else:
  461. status = "Unknown"
  462.  
  463. if (flag == 0):
  464. print("\nNo Active Order!")
  465. except:
  466. print("\nError in tracking order!")
  467.  
  468.  
  469. # In[70]:
  470.  
  471.  
  472. def homepage():
  473. try:
  474. while True:
  475. choice = int(input("\nWELCOME TO SIKKIM TREATS\n\n1. Admin Register \n2. Admin Log-In\n3. User Register\n4. User Log-In\n5. Exit\nChoice : "))
  476.  
  477. if choice == 1:
  478. adminReg()
  479. elif choice == 2:
  480. adminLogin()
  481. elif choice == 3:
  482. memReg()
  483. elif choice == 4:
  484. memLogin()
  485. elif choice == 5:
  486. print("\nHave A Good Day!")
  487. break
  488. else:
  489. print("\nInvalid Input!")
  490.  
  491. except:
  492. print("\nError in homepage!")
  493.  
  494.  
  495. # In[71]:
  496.  
  497.  
  498. def userPortal(usrName):
  499. try:
  500. while True:
  501. choice = int(input("\nWELCOME {} TO SIKKIM TREATS\n1. View Profile\n2. View Menu\n3. View Cart\n4. Manage Cart\n5. Place Order\n6. View Orders\n7. Track Order\n8. Cancel Order \n9. Manage Balance\n10. Manage Address\n11. Log Out\nChoice : " .format(cust[usrName][0])))
  502.  
  503. if choice == 1:
  504. viewProfile(usrName)
  505. elif choice == 2:
  506. addItems(usrName)
  507. elif choice == 3:
  508. viewCart(usrName)
  509. elif choice == 4:
  510. editCart(usrName)
  511. elif choice == 5:
  512. # calculating cart value
  513. total = 0
  514.  
  515. for i in custCart[usrName]:
  516. total += menu[i][1]
  517.  
  518. mode = paymentMode(usrName, total)
  519.  
  520. # selecting address
  521. viewAddress(usrName)
  522. address = int(input("\nSelect a address : "))
  523.  
  524. if mode == 'Online' or mode == 'COD':
  525. placeOrder(usrName, mode, address)
  526. else:
  527. print("\nOrder Unsuccessful!")
  528.  
  529. elif choice == 6:
  530. viewOrder(usrName)
  531. elif choice == 7:
  532. trackOrder(usrName)
  533. elif choice == 8:
  534. cancelOrder(usrName)
  535. elif choice == 9:
  536. while True:
  537. bal = int(input("\nManage Balance\n1. Add Credit\n2. View Balance\n3. Back\nChoice : "))
  538.  
  539. if bal == 1:
  540. print("\nManage Balance\nCurrent Balance : {}" .format(cust[usrName][3]))
  541. elif bal == 2:
  542. addCredit(usrName)
  543. elif bal == 3:
  544. break
  545. else:
  546. print("\nInvalid Input")
  547.  
  548. elif choice == 10:
  549. while True:
  550. add = int(input("\nManage Address\n1. View Address\n2. Add Address\n3. Back\n Choice : "))
  551.  
  552. if add == 1:
  553. viewAddress(usrName)
  554. elif add == 2:
  555. addAddress(usrName)
  556. elif add == 3:
  557. break
  558. else:
  559. print("\nInvalid Input!")
  560. elif choice == 11:
  561. print("\nBye!")
  562. break
  563. except:
  564. print("\nError in User Portal")
  565.  
  566.  
  567.  
  568. # In[72]:
  569.  
  570.  
  571. def adminPortal(adminName):
  572. try:
  573. while True:
  574. choice = int(input("\nWELCOME {} TO SIKKIM TREATS\n1. View User Profile\n2. Manage Menu\n3. View User Cart\n4. Manage User Cart\n5. Place User Order\n6. View User Orders\n7. Track User Order\n8. Cancel User Order \n9. Manage User Balance\n10. Manage User Address\n11. Log Out\nChoice : " .format(admin[adminName][0])))
  575.  
  576. if choice == 1:
  577. usrName = input("\nEnter username to member : ")
  578. if usrName in cust:
  579. viewProfile(usrName)
  580. else:
  581. print("\nUser Not Found")
  582.  
  583. elif choice == 2:
  584. menuChoice = int(input("\nManage Menu\n1. View Menu\n2. Add Menu\nChoice : "))
  585.  
  586. if menuChoice == 1:
  587. viewMenu()
  588. elif menuChoice == 2:
  589. addMenu()
  590. else:
  591. print("\nInvalid Input!")
  592.  
  593. elif choice == 3:
  594. usrName = input("\nEnter username to member : ")
  595. if usrName in cust:
  596. viewCart(usrName)
  597. else:
  598. print("\nUser Not Found")
  599.  
  600. elif choice == 4:
  601. usrName = input("\nEnter username to member : ")
  602. if usrName in cust:
  603. editCart(usrName)
  604. else:
  605. print("\nUser Not Found")
  606.  
  607.  
  608. elif choice == 5:
  609. usrName = input("\nEnter username to member : ")
  610. if usrName in cust:
  611. # calculating cart value
  612. total = 0
  613.  
  614. for i in custCart[usrName]:
  615. total += menu[i][1]
  616.  
  617. mode = paymentMode(usrName, total)
  618.  
  619. # selecting address
  620. viewAddress(usrName)
  621. address = int(input("\nSelect a address : "))
  622.  
  623. if mode == "Online" or "COD":
  624. placeOrder(usrName, mode, address)
  625.  
  626. else:
  627. print("\nOrder Unsuccessful!")
  628.  
  629. else:
  630. print("\nUser Not Found")
  631.  
  632.  
  633.  
  634. elif choice == 6:
  635. usrName = input("\nEnter username to member : ")
  636. if usrName in cust:
  637. viewOrder(usrName)
  638. else:
  639. print("\nUser Not Found")
  640.  
  641. elif choice == 7:
  642. usrName = input("\nEnter username to member : ")
  643. if usrName in cust:
  644. trackOrder(usrName)
  645. else:
  646. print("\nUser Not Found")
  647.  
  648. elif choice == 8:
  649. usrName = input("\nEnter username to member : ")
  650. if usrName in cust:
  651. cancelOrder(usrName)
  652. else:
  653. print("\nUser Not Found")
  654.  
  655.  
  656. elif choice == 9:
  657. usrName = input("\nEnter username to member : ")
  658. if usrName in cust:
  659. while True:
  660. bal = int(input("\nManage Balance\n1. Add Credit\n2. View Balance\n3. Back\nChoice : "))
  661.  
  662. if bal == 1:
  663. print("\nManage Balance\nCurrent Balance : {}" .format(cust[usrName][3]))
  664. elif bal == 2:
  665. addCredit(usrName)
  666. elif bal == 3:
  667. break
  668. else:
  669. print("\nInvalid Input")
  670. else:
  671. print("\nUser Not Found")
  672.  
  673.  
  674. elif choice == 10:
  675. usrName = input("\nEnter username to member : ")
  676. if usrName in cust:
  677. while True:
  678. add = int(input("\nManage Address\n1. View Address\n2. Add Address\n3. Back\n Choice : "))
  679.  
  680. if add == 1:
  681. viewAddress(usrName)
  682. elif add == 2:
  683. addAddress(usrName)
  684. elif add == 3:
  685. break
  686. else:
  687. print("\nInvalid Input!")
  688. else:
  689. print("\nUser Not Found")
  690.  
  691. elif choice == 11:
  692. print("\nBye!")
  693. break
  694.  
  695.  
  696. except:
  697. print("\nError In Admin Panel!")
  698.  
  699.  
  700.  
  701. # In[80]:
  702.  
  703.  
  704. homepage()
Add Comment
Please, Sign In to add comment