WIA1002/WIB1002 Data Structure Semester 2 2018/2019
Assignment
Read the instruction carefully, form your group, and complete the given task.
Group formation
1. Form a group of not more than 4 members. All the members must be from the same tutorial group.
2. Each of the groups will be given one of the listed projects randomly.
3. Every group member must contribute to the project, including certain amount of coding. 4. The role played by and contribution of each member to the project must be included in the
managerial report.
Submission
Your group has to submit the softcopy of the items listed below:
1. A technical report explaining the assigned task, the requirements of the task, the approach taken to solve the task, a detail description of your solution (including the flowchart, modules, etc.), sample snapshot of your program output.
2. Amanagerialreportexplainingtheformationofthegroup,roleandassignedworkforeach of the members, the project timeline, the problems faced in accomplishing this assignment and your solutions, and other issues encountered.
3. The complete source code.
For softcopy, the group leader will submit them in one .zip file to Spectrum. The name of the zip
file should be TutorialGroupNumber-GroupLeaderName.zip. Important dates
1. Submission: (week 13th) 12:00pm on Friday, 24th May 2018 2. Viva/demo: (week 14th) during tutorial & lab
Marking scheme: (20 marks)
1. Source code/Program. (16 marks)
a. Meeting the basic task requirements, i.e. identify the requirements of the task and produce a workable solution – 10 marks
b. Extra features/functionalities that are not included in the task specification – 6 marks.
2. Reports (4 marks)
In your technical report and during viva, justify the design of your solution and the choice of data structures being used, it may include technical difficulties* that are impossible to achieve or any other valid reasons.
* Subjected to your lecturer’s judgement based on your justifications Warning: Plagiarism is prohibited, should there be any evidence found,
it will result in a heavy penalty on your assignment grades! Good luck and have fun!
Topic 1: CrabFood Introduction
Citizens in Crabby Island (known as the Crabbians) do have a crabby culture, you can never imagine how large are their loves towards crab dishes. The most recent statistics showed that every citizen in Crabby Island orders at least 3 crab dishes every day. Your company, Crab has seen this as a golden business opportunity and decides to come up with an evolutionary CrabFood to provide crab delivery service for the Crabbians. Now, you are the selected programmers to develop this CrabFood system. Make sure that you come up with an amazing product that can help improve the Crabbians¡¯ lives.
Problem Statement
Your team is given this CrabFood project for 10,000 CrabCoins (currency of Crabby Island, CC). After analyzing the Crabbians¡¯ feedback, as well as having some serious meetings with the top management, your team finally finalized the requirements for CrabFood. CrabFood is defined as a Desktop application that manages and keeps track of daily delivery order for crabs to ensure the efficiency of delivery services, just think about GrabFood.
To shorten your work, your team has come up with a checklist for the requirements:
1. Make a Java console application that shows the delivery process.
2. Make a logging system that shows the entire process when CrabFood is up.
3. Make a reporting system that displays daily order information for every restaurant. This is
explicitly mentioned by the restaurants that partner with CrabFood for them to improve
their services.
4. You will be given sample input files to help in your development, utilize them wisely.
Sample Input
Customer.txt
Input.txt
Sample Output
Example log file
Assumption you can make
1. All the users are at the same position (0, 0).
2. All the restaurants are scattered around on the map.
3. Each user will order one dishes per time.
4. All dishes have the same preparation time. (You may set it yourselves or follow the input file) 5. User will specify which restaurant he/she wants, but not the specific branch.
6. After a user places an order, the order will be processed by CrabFood, and sent to the branch
that can complete the order in shortest time. (total duration = time to complete previous order if
exists + time to prepare the order + time to deliver to the customer)
7. Time to deliver to the customer is calculated based on the distance from the branch to customer.
(e.g. time from A to customer based on above map is 0 + 3 = 3)
8. All restaurants must not reject an order assigned.
9. Logging system must show the timestamp of actions.
10. Reporting system must show the start time, end time and duration of delivery in daily basis.
Some crazy idea
1. There are only a limited amount of the food deliveryman. So the customers need to wait until their turn to get their food delivered.
2. Different starting point of customer? And the customer will choose the nearest shop available first to order dishes.
3. GUI?
4. The customers are able to order multiple dishes?
5. The shops can prepare multiple dishes at the same time, but they cannot prepare 2 same type of
dishes at the same time.
6. Larger Map? More shops? More branches? More dishes?
7. Customer can cancel the order and the shop can keep the dishes they order for next customer (if
any customer want that dishes), but if the dish wait for too long it is no longer fresh and need to
be dumped
8. Customer can have special requirement
9. The delivery point is not necessarily same location with where the customer is. 10. Traffic jam issue occur, so shorter distance doesn¡¯t mean shorter time.