For this individual assessment, you are tasked with completing a mid-semester test based on the content covered in the first six lectures.  Only one attempt is permitted, and the midterm test will be accessible for one

Instructions for Mid Semester Test 

In this individual assessment, you are required to appear in mid-semester test based on contents covered from 1 to 6 sessions. The  weightage of the test is 20%, comprising descriptive questions related to Java programming. The allotted time is 60 minutes, with 5 minutes  designated for preparation, 45 minutes for completing the test paper, and 10 minutes for submission. 

For this individual assessment, you are tasked with completing a mid-semester test based on the content covered in the first six lectures.  Only one attempt is permitted, and the midterm test will be accessible for one hour during week 7 (April 15th – April 20th) within your  tutorial session. 

Assessment Details for Assessment Item 3: 

Overview 

Note: * denotes ‘Hurdle Assessment Item’ that students must achieve at least 40% in this item to pass the unit.s

Assessment tasks 

Learning Outcome Mapping

Assessment ID 

Assessment Item 

When due 

Weighting 

ULO# 

CLO# for  

MITS

3* 

Application Development  (Group) 

Part A –Design Part 

Session 8 

20% 

1,2

Application Development  (Group) 

Part B –Implementation.

Session 12 

30%

1, 2,3,4 

1, 2, 3,4

ASSESSMENT ITEM 3: This is a group assessment (Group Size-5). You will design and implement an application after analyzing requirements given in a case study. You are required to apply basic constructs and  OO programming principles in developing this software system. 
Introduction (Part A) 
INSTRUCTIONS: 

Design a VIT Ride Management System using UML(class )diagram. 
The system should allow administrators to manage users, drivers, and ride requests. The
1. User: 
Design a class representing the user entity in the system. Include attributes such as user ID, name, contact information, and any other relevant information. Methods: Constructors, getters, and
2. Driver: 

Design a class representing the driver entity. Include attributes like driver ID, name, license number, vehicle information, and availability  status. Methods: Constructors, getters, and setters. Methods for driver-related functionalities  (e.g., registering, removing, displaying). 
3. Ride: Design a class representing a ride request or allocation. Include attributes such as ride ID, user  ID, driver ID, pickup location, destination, and status. Methods: Constructors, getters, and  setters, Methods for ride-related functionalities (e.g., requesting, allocating, displaying). 
4.RideManager: Design a class to manage users, drivers, ongoing rides, and ride history. Include appropriate  methods for registering, removing, and displaying users and drivers. Include methods for ride  management, such as requesting rides, allocating drivers, and displaying ride history. Methods  for ride management (e.g., requesting rides, allocating drivers, displaying ride history).
5. Main: 
Contains the main method for testing the functionalities. Creates an instance of the Ride Manager class and provides a menu system to allow administrators to interact with the system.Create Relationships: User-Driver Relationship: 
Define the relationship between the User and Driver classes to represent the association  between users and drivers. 
Ride-User-Driver Relationship: 
Establish relationships between the Ride, User, and Driver classes to represent the associations  between ride requests, users, and drivers. You may add some more relationships from your  understanding. 
The classes should be designed using object-oriented principles such as inheritance, encapsulation, and polymorphism. The application should allow to perform the following tasks:1. Register New Users: Implement a method to register new users for the ride service, including details such as  name, student ID, and contact information. 
2. Remove Users: 

Implement a feature to remove users from the system based on their student ID.
3 Display All Users:
 Implement a feature to register new drivers for the ride service, including details such as  name, driver’s license number, and vehicle information. 
5. Remove Drivers:
Develop functionality to remove drivers from the system based on their driver’s license  number. 6. Display All Drivers: 
Implement a method to display a list of all registered drivers available for rides.
7. Request a Ride: Design functionality that allows users to request a ride by providing their current  location and desired destination. 
8. Allocate Drivers to Rides: 
Implement a method to allocate available drivers to ride requests based on factors such  as proximity and availability. 
9. Display Ongoing Rides: 
Develop a feature to display a list of all ongoing rides, including details about the user,  driver, and current status. 
10. Display Ride History: 
Implement functionality to display a list of all completed rides, including information  such as starting point, destination, and feedback. Requirement for design 
1. Utilize appropriate access modifiers for class attributes and methods. 2. Consider generalization, aggregation, Composition or dependencies, multiplicity etc.
3. Use inheritance or interfaces where applicable to promote code reuse and  maintainability. 
4. Consider any additional classes or interfaces that may be necessary to support the  outlined functionalities. 5. Format the report as per IEEE format including following headings: 
All Figures included must have captions and Figure numbers and be referenced within the document. Captions for figures placed below the figure, captions for tables placed above the table. Include a footer with the page number. Your report should use 1.5 spacing with a 12-point Times New Roman font. Include references where appropriate

a. Title Page 

b. Table of Contents 

c. Introduction 

d. System Description 

e. Requirement Specifications 

i. Functional Requirements 

ii. Non-functional Requirements 

iii. Others 

f. Assumptions / Constraints 

g. Class Diagram 

h. References

Submission Instructions 

Submission: The report Application Development Design report of not excessing 2000 words must be submitted in the pdf file through  the Moodle submission link for assignment 3 Part A.  

Note: All work is due by the due date and time. Late submissions will be penalized at 20% of the assessment final grade per day, including weekends. 

Marking Criteria/Rubric 

You will be assessed on the following marking criteria/Rubric: 

Assessment criteria 

Exceptional >=80% 

Admirable 70% – 79% 

Creditable 60% – 69% 

Acceptable 50% – 59% 

Unsatisfactory <=49

Class Design(5)

The class diagram is  exceptionally clear,  

comprehensive, and  anticipates future  

enhancements.

The class diagram is  admirable in clarity,  completeness, and  

understanding of  

entities.

The class diagram is  creditable, providing a  clear representation  but with minor gaps.

The class diagram is  acceptable, capturing  the fundamental  

elements.

The class diagram is  unsatisfactory, lacking  clarity and  

completeness.

Relationships(5)

Relationships are  

accurately defined,  

demonstrating a deep  understanding and  

foresight.

Basic relationships are  present with potential  inaccuracies or areas for  improvement.

Relationships are  

correctly defined,  

showing a clear  

understanding of  

entity interactions.

Relationships are  

acceptable, capturing  the basic interactions  but with noticeable  gaps.

Relationships are  

unsatisfactory,  

hindering the  

understanding of entity  interactions.

Attributes and  

Methods(5)

Attributes and methods  are well-defined,  

showcasing a keen  

understanding of best  practices.

Basic attributes and  

methods are present but  with room for  

improvement in  

completeness.

Attributes and  

methods are  

creditable, providing  effective functionality  but lacking some  

completeness.

Attributes and methods  are acceptable,  

capturing fundamental  functionalities but with  noticeable gaps.

Attributes and methods are unsatisfactory,  

hindering effective  functionality.

Inheritance/Interfaces(5)

Inheritance/interfaces  are used optimally,  

reflecting a deep  

understanding and  

forward-thinking.

Limited or unclear use of  inheritance/interfaces,  with potential for  

improvement.

Appropriate use of  inheritance/interfaces,  contributing to a well organized class  

hierarchy.

Inheritance/interfaces  are acceptable,  

providing some level of  code reuse but with  room for improvement.

Inheritance/interfaces  are unsatisfactory,  

causing confusion in  system design.

Introduction (Part B) 
This assignment will be completed in groups.
INSTRUCTIONS:
This assignment is an extension of assignment 3 Part A, that is the team is working on the same case study  as in assignment 3 Part A, and
Using the feedback provided by the teaching instructor, update the requirements of the VIT Ride application. Based on the of the whole system showing all classes and relationships, you are expected to develop software application in Java implementing
The system should allow administrators to manage users, drivers, and ride requests. The
1. User: 

Instance Variables :name (String): User’s name., user ID (String): User’s ID, contact Information  (String): User’s contact information. Methods: Constructors, getters, and setters. Methods for user-related functionalities (e.g.,  registering, removing, displaying). 
2. Driver: 
Instance Variables: name (String): Driver’s name, license Number (String): Driver’s license
Methods: Constructors, getters, and setters. Methods for driver-related functionalities (e.g.,
3. Ride: 
Instance Variables: user (User): User associated with the rid, driver (Driver): Driver assigned to the ride, current Location (String): Current location for the ride, destination (String): DesiredMethods: Constructors, getters, and setters, Methods for ride-related functionalities (e.g.,  requesting, allocating, displaying). 
4.RideManager:
Instance Variables: users (List<User>): List of registered users. drivers, (List<Driver>): List of registered drivers., ongoing Rides (List<Ride>): List of ongoing rides., ride History (List<Ride>): List
Methods: Constructors., Methods for registering, removing, and displaying users and drivers. Methods for ride management (e.g., requesting rides, allocating drivers, displaying ride history). 
5. Main: Contains the main method for testing the functionalities. Creates an instance of the Ride Manager class and provides a menu system to allow administrators to interact with the system.
11. Register New Users: 
a. Implement a method to register new users for the ride service, including details  such as name, student ID, and contact information. 
12. Remove Users: 
Implement a feature to remove users from the system based on their student ID. 13. Display All Users: 
Develop a method to display a list of all users registered for the ride service. 14. Register New Drivers: 
Implement a feature to register new drivers for the ride service, including details such as name, driver’s license number, and vehicle information. 
15. Remove Drivers: 
Develop functionality to remove drivers from the system based on their driver’s license  number. 
16. Display All Drivers: 
Implement a method to display a list of all registered drivers available for rides.
17. Request a Ride: 
Design functionality that allows users to request a ride by providing their current  location and desired destination.
18. Allocate Drivers to Rides: 
Implement a method to allocate available drivers to ride requests based on factors such  as proximity and availability. 
19. Display Ongoing Rides: 
Develop a feature to display a list of all ongoing rides, including details about the user,  driver, and current status. 
20. Display Ride History: 
Implement functionality to display a list of all completed rides, including information  such as starting point, destination, and feedback. 
The classes should be designed using object-oriented principles such as inheritance, encapsulation, and polymorphism. The program should use a graphical user interface (GUI) but should instead use a command-line interface.
Second part Video demonstrationThe whole group will be present in the video with face visible (Camera on). The whole group must introduce themselves and present their contributions. Then the team should discuss design and  demonstrate the running of the system (VIT Ride Application). The video must not exceed more  than 10 minutes Workplan / Work breakdown Agreement (WBA) You are expected to work as a group on this assignment and contribute very closely to  approximately an equal amount of work (unless the special consideration policy outlined  applies). In your workplan you must provide details about the contributions and how the work is  organised and managed. In most cases, if this is followed, students will receive equal marks on  those aspects to their teammates. The Workplan section must include the following information: 
Student Name: Contribution Description: 
%age of Contribution: I [NAME OF THE STUDENT] hereby accept the Work breakdown/contribution as agreed.
[DATE] 
NOTE: We will take into account your WBA while marking your assessments and the marks will  be adjusted based on the WBA. MARKING SCHEME / GUIDE 
The assessment will be marked on the following criteria 
Task1: Implementation (15 Marks)
1. Design in the code matches the design in the class diagram. 2. Coding standards. Applies to any code that has been touched by human hands (e.g.  meaningful variable and method names, commenting, layout). We will look for meaningful  identifier names (variable, classes, methods), inline comments, method header comments,  class/module comments, layout. 
3. Functional Completeness: All features are fully implemented, and snapshots are included inTask2: System Demonstrations (15 Marks) 
1. Please start the video by discussing the contribution of each team member (i.e., which team2. Students demonstrate understanding of the system, the relationship between the code and  the design documents of the system.  
3. Students should point out where in their code the constructs shown in their design
Submission InstructionsWhat You Have to Submit Team leader to Submit: 1. A document detailing the design of your solution in as much detail. It should include an  updated UML diagram of the inheritance hierarchy as well as the component hierarchy of  the system. 2. The code for each class in your design. Each class listing should be fully documented  commencing with a heading that includes your name, student number, date written, and lecturer’s name, along with a brief description of the class. At the start of each  method, there should be a comment clearly describing what the method does. This should  be done in NetBeans only. Other IDE will not be accepted. 3. A readme.doc file with information on how to run your program. Include any extra  information about your design and program that you wish the marker to know. 4. A Word document with evidence of trial runs of your program, i.e., screen printouts of  the results where you have tested all the features of your code. 5. NetBeans project folder. 
6. Your Recorded
7. Combine 1, 2, and 4 into ONE word document. 
Put 3, 5,6 and 7 together in one zipped folder. Submit the zipped folder via LMS. 
Note:

Marking Criteria/Rubric 

You will be assessed on the following making criteria/Rubric:

Assessment 

criteria

Exceptional >=80% 

Admirable 70% – 79% 

Creditable 60% – 69% 

Acceptable 50% – 59% 

Unsatisfactory <=49

Design-Matching  Implementation 

(5 Marks)

Code design aligns seamlessly  with the class diagram.

Design and code  mostly align with minor  discrepancies.

Adequate alignment  with some noticeable  design/code  

mismatches.

Limited alignment,  significant design/code  discrepancies.

Poor alignment,  major design/code  inconsistencies.

Coding  

Standards (5  

Marks)

Exceptional adherence to coding  standards, including meaningful  variable/method names,  thorough commenting, and  consistent layout.

Very good adherence  to coding standards  with minor lapses.

Adequate adherence  with noticeable lapses  in coding standards.

Limited adherence,  several lapses in coding  standards.

Poor adherence,  numerous lapses,  impacting code  readability.

Functional  

Completeness (5  Marks)

Report consists Implementation  of the all modules, bug-free, and  aligns with requirements.

Report consists Mostly  complete  

implementation with  minor bugs.

Adequate completion of modules in report ,  some notable bugs.

Limited completion,  significant bugs  impacting functionality.

Incomplete  

implementation,  

major bugs,  significant  

functionality issues.

Individual  

Contribution  

Presentation (5  Marks)

Clear and comprehensive  presentation of each team  member’s contribution.

Mostly clear  presentation with  minor omissions.

Adequate presentation,  some gaps or lack of  clarity.

Limited presentation,  significant gaps in  individual contributions.

Poor presentation,  major omissions or  unclear contributions.

Working System  Demonstration (5  Marks)

A fully functional system, is  demonstrated effectively.

Mostly functional  system with minor  glitches.

Adequate  

demonstration with  some noticeable issues.

Limited demonstration,  significant issues  affecting functionality.

Incomplete or non functional system  demonstration.

Understanding of  Code-Design  

Relationship (5  

Marks)

Demonstrates a deep  

understanding of how the code  implements the design  

documents.

Shows good  

understanding, with  

minor gaps or  

inaccuracies.

Adequate  

understanding, with  

noticeable gaps or  

inaccuracies.

Limited understanding,  significant gaps in  

linking code to design.

Poor understanding,  major gaps, inability  to link code to  

design.