PROJECT
Your task is to program a management system in Python for a small car rental company.
Files
Your system will rely on four text files that contain the data needed to run the company. You can find models of these files in Moodle under “Files for project.” The idea is that while running your program, the content of these files will change. If you manage to corrupt the content of your files, you can always start again by downloading the files from Moodle.
vehicles.txt: This file contains information about the cars that the company owns. The details of each car are provided in a single row. Rows look like this:
AMG-111,Toyota Yaris,65,Air Conditioning,Hybrid,Automatic Transmission
The data is given in comma-separated form. First, there is the registration plate number (AMG-111), which identifies the car. Then, there is the model of the car (Toyota Yaris). The number following the model (65) is the daily rate of this car. This information is needed when the rental price is computed. After that, come the properties: Air Conditioning, Hybrid, Automatic Transmission. There can be several properties, but always at least one. Different properties are separated by a comma. The newline symbol "\n" ends each row in every file. The content of this file does not change, your program should only read information from it.
customers.txt: This file contains information about the clients who rent cars. The details of each client are provided in a single line, with different values separated by commas. A line looks like this: 09/09/1999,Tom,Shark,Tom.Shark@gmail.com First, there is the birthdate (09/09/1999), which serves as the identifier of the customer. There cannot be two customers with the same birthdate. Of course, this is not a realistic assumption, but in our "small world", this assumption holds. Next are the person’s first name (Tom) and last name (Shark). The fourth value is the customer’s email address (Tom.Shark@gmail.com). The content of this file may change: if a new customer rents a car, their information is appended to the file. Customers are never removed. rentedVehicles.txt: This file contains information about the rented vehicles. Each row looks like this: CHF-337,22/02/1961,25/10/2024 12:33 First, there is the register plate number (CHF-337) of the rented car, followed by the birthdate (17/08/1978) of the customer who rented the car. The third value is the time (25/10/2024 12:33) when the rental started. The three values are separated by commas. The content of this file may change in two ways: (a) When a car is rented, a new line is appended to the file; (b) When a car is returned, the corresponding line is removed from the file. The file contains only "open" rentals.
transActions.txt: This file contains information about “ended” rentals. Each transaction is on its own line, and a line looks like this:
BMC-69,17/04/1997,15/10/2024 14:01,19/10/2024 22:20,5,210.00
First, there is the register plate number (BMC-69) of the rented car, followed by the birthdate (17/04/1997) of the customer who rented the car. The third value is the time (15/10/2024 14:01) when the rental started, followed by the time (19/10/2024 22:20) when the car was returned. The fourth value is the duration in days (5). Note that each starting day is billed as a rental day. The last value is the price (210.00) of the rental, using two decimal places. When a car is returned and the price is computed, the corresponding information is appended to this file
Operation of the system
The program needs to be menu-based. The operation of the program is described in the following five videos:
Video 1: Menu
Video 2: List available cars
Video 3: Rent a car
Video 4: Rent a car, returning customer
Video 5: Return a car
Video 6: Count the money
Submission
The project must be submitted to CodeGrade by the deadline 2024-11-18 23:59. There is no autograde, but CodeGrade will perform some checks, which include:
Files check: Exactly two files must be submitted. The file project.py should contain the Python code of the project, and ai.txt describes what AI tools (if any) are used in this project and how.
Code structure check: This test checks that only structures taught in the course are used.
After you have submitted your files, please press the button: "Click here to see the Final Result for your submission".
If you see the text: "Your submission has successfully passed the preliminary tests. Next, the Teaching Assistant (TA) will review and grade your project by December 2nd", then everything is in order.
If your work does not pass the preliminary test, you will see the message: "Unfortunately, your submission did not pass the preliminary tests. Please review the feedback, make the necessary corrections, and resubmit your project. The Teaching Assistant (TA) will be able to review it only after all tests are passed." Note that you can resubmit as many times as you want until the deadline. However, each submission needs to contain two files.
If you do not pass the preliminary tests by the deadline, your project will be rejected in this round.
Declaration of AI usage
The file ai.txt needs to list the following:
Name all AI systems that were used in the development of the project work, and for each
Explain how and where they were used, or
Clearly state that no AI assistance or tools were used in this assignment.
This ai.txt is mandatory part of the submission and leaving it out means that the work is incomplete and is not graded.
Grading
TAs will review the works. You can see your grade and comments given by the TA in the Feedback section of your submission.
The grade is determined by the following table:
| Points | Grade
| >= 50 | 1|
| >= 60 | 2 |
|>= 70| 3 |
| >= 80 | 4|
| >= 90| 5|
The maximum number of points is 100. If you score less than 50 points, your project is rejected in the first round. TAs will grade the work according to a checklist containing the essential features of the program.
Resubmission
Rejected projects must be corrected/completed and resubmitted by 9/12.
The maximum grade for resubmitted projects is 3.
Projects that received a grade of 1 or 2 in the first round can also be resubmitted.
Plagiarism
Plagiarism is the act of presenting someone else's work, ideas, code, or solutions as your own without providing proper credit.
Plagiarism is considered unethical and a violation of academic or professional integrity.
All projects are carefully examined using CodeGrade's plagiarism detection tool, which compares each submitted work against all other projects."
Note that renaming variables and functions does not mislead plagiarism detection.
If plagiarism is detected, the project work is rejected in this round, and the authorities at LUT are promptly notified.
As the system cannot determine the origin of the copied content, all submissions with high plagiarism score are treated equally and rejected in that round.
Last modified: Tuesday, 29 October 2024, 8:40 AM