What am I required to do in this assignment?
Scenario
Taxi Booking System
Consider the following scenario:
You are tasked with developing a Taxi Booking System using Python, leveraging principles of computational thinking and designing the system using UML
diagrams. This assignment will encourage you to apply decomposition, pattern recognition, abstraction, and algorithm design to solve the problem effectively while
demonstrating your system design with UML. You have the option to complete this assignment individually or in a group of up to 2 people. If you’re feeling
confident and want to go beyond, consider adding a Graphical User Interface (GUI) using a library like Tkinter. This isn’t required but can help you gain extra marks.
System Requirements
The system must have three types of users: customers, drivers, and administrators. All the roles have access to the system after
successful login.
1. Customer Functions:
• Register by providing their name, address, phone number, and email.
• Book a taxi by entering a pickup location, drop-off location, date, and time.
• View and cancel their bookings.
2. Driver Functions:
• View a list of their assigned trips.
3. Administrator Functions:
• Assign a driver to a customer’s bookings.
• Ensure no two bookings overlap for the same driver.
Instructions
1. Text-Based Menu: Create a simple text-based menu in Python for users to interact with (e.g., customers, drivers, and administrators).
2. File Handling:
• Store all the system data in text files. For example, use one file for customer data (name, contact details), another for trip details (pickup, drop-off,
date), and a third for driver assignments. Alternatively, you can use SQLite for data storage.
• Ensure data is saved when the system closes and reloaded when it starts.
3. Basic Features:
• Allow customers to register, book a trip, and view/cancel their bookings.
• Allow drivers to view their upcoming trips.
• Allow the administrator to view all bookings and assign drivers.
Design Tasks
Computational Thinking
1. Decomposition: Break down the problem into smaller tasks (e.g., registering, booking, viewing trips).
2. Pattern Recognition: Reuse code for similar tasks like login for both customers and drivers.
3. Abstraction: Store only essential data (customer info, trip details).
4. Algorithm Design: Create steps for booking trips, assigning drivers and file handling.
System Design with UML
1. Use Case Diagram: Draw a diagram showing the interactions between customers, drivers, and administrators.
2. Activity Diagram: Show how a customer books a taxi step-by-step.
3. Class Diagram: Use class diagrams for system design and implementation.
Testing
1. Test your system by registering customers, booking trips, assigning drivers, and cancelling trips.
2. Include screenshots or notes of your test results in the report.
Submission Requirements:
• Report:
o Explain your design decisions and include diagrams.
o Write about your coding process and the problems you solved.
o Provide testing evidence (with screenshots or test logs).
o Don’t include the code in the report. Any code should go into the appendix, except core classes that you may explain in the main text.
• Video Presentation:
o Prepare a brief video to explain your work. In the video:
▪ Showcase your system works.
▪ Walk through the key processes of login, booking a trip, assigning a driver, viewing trips etc
▪ Showcase your technical understanding of your design process
Final Submission
• Zip all your coding files (Python code, test cases, and diagrams). Submit through the Zip upload link
• Submit the Final Report through the Report Upload link
• Submit the Video Presentation through the Video upload link