i have not started my assignment yet, i need help from start to finish
BIT106/ DIP215 Assignment Semester 1, 2022 Release date: 17th March 2022 Due Date: Value: 7th April 2022 15% Assessment Mode: Individual Assessment The assignment assesses the following learning outcomes: CLO1: use the fundamental control structures and data types to write programs in the Java language CLO2: demonstrate the use of objects and classes, both standard library classes and user defined classes CLO3: apply the structured, and object-oriented approach to solve computing problems using Java Important Notes · You must submit this assignment as a single word document to LMS Turnitin. · The source code (all java files) should be in a package. Package name should follow the format StudentIDStudentName (B10001Alice). This needs to be separately submitted to LMS (source code section). · You must work on this assignment on your own. Any two or more programs which are found to be similar will receive zero (0) marks. · Students may be asked to explain about the work they submitted. · For any queries/clarifications, revert as soon as possible. Any queries made close to the deadline may not be possible to entertain. Overview You need to implement a Student Management System that can store various information related to undergraduate and postgraduate students and allows various operations like registering courses for an undergraduate student, update status of postgraduate student, displaying various information of all registered students etc. The requirements for this assignment spans across three levels. You should complete and test a solution to Level 1 requirements before attempting the additional Level 2 requirements. Similarly, you should complete the Level 2 before attempting Level 3. Higher levels will not be marked unless the lower level is completed correctly. SECTION A (75) Level -1: Class Providers [ 40 marks] Create the following class providers based on the class diagram. The main attributes and methods are provided for each class. 1. Course: Source code provided 2. UnderGrad: Attributes: courseList – a collection of courses (maximum 4) Constructor: 4 parameter Constructor – name ,studentId, programme, creditsCompleted · Initializes attributes · Creates courseList array [ size 4] Methods: registerCourse(Course) - registers a course · Maximum of 4 courses can be registered. · Should not allow to add course beyond maximum size (return false) toString() – returns the information that includes all the attributes 3. Academic: Source code provided 4. PostGrad: Attributes: status : · allowed values – “AUDIT”, “RESEARCH” and “THESIS WRITING” · Upon instantiation, status is “AUDIT” Constructor: 4 parameter constructor: name, studentId, programme, supervisor · Initializes attributes · Status is set to “AUDIT” Methods: setStatus(String) - sets the status · Can be set to “RESEARCH” and “THESIS WRITING” only. · any other values, no change in status (returns false) toString() – returns the information that includes all the attributes 5. Registration (Driver class) a. Create various instances of both the classes. b. Register courses for UnderGrad students. c. Set status to appropriate values for PostGrad students. d. Display information of each object. Sample output: Sample output 1: Student: Ali ID: 1 pursuing BIT has completed 10 credits The student has registered for the following 4 courses this semester BIT210: Web Pro BIT106: Java BIT110: Operating System BIT208: Data Structures Sample output 2: Student: Alice ID: 2 pursuing BCS has completed 70 credits The student has not registered for any courses this semester Sample output 3: Student: Adil ID: 8 pursuing Ph.D ( RESEARCH ) is under the supervision of Prof. Abdul Wahab Sample output 4: Student: Sally ID: 7 pursuing MIT ( THESIS WRITING ) is under the supervision of Assoc. Prof. Xi Ping Sample output 5: Course cannot be registered : (Maximum reached) Level -2: Inheritance [ 40 + 20 = 60 marks] PostGrad and UnderGrad classes have some common attributes and behavior. You are required to implement inheritance where in the common attributes and behavior are defined in abstract class Student. PostGrad and UnderGrad classes will inherit the attributes and behavior from Student class and define any specific attributes and behavior in their own classes. Student (abstract class): Source code is provided. Modify the UnderGrad and PostGrad classes as per the class diagram. Instance variables: Each class should define its specific attributes. Constructors: The constructors need to be modified. Constructors must invoke the parent constructor before initializing its attributes. Fee calculation : calculateSemFee() Each of the classes must override calculateSemFee() method. For Undergrad: The semester fee should be calculated based on: Fee = number of courses * credit hours per course * fee per credit hour Each course has 4 credit courses and fee per credit hour 500. Example if a student registers 3 courses fee = 3 * 4 * 500 = 6000 For PostGrad: Based on programme For Masters, fee is 6000 per semester For PhD, fee is 8000 per semester. Note: Master’s programmes start with M ( Eg. MIT, MSC, MA etc.) PhD programmes start with P ( Eg., PhD IT , PhD CS, etc.) toString() Each classes need to modify the toString() method – returns information (general and specific) about the class . Registration (Driver class) 1. Creating Student Objects Student can be either a PostGrad or an UnderGrad. Create various instances of each class. 2. Set status of a PostGrad students to appropriate values. 3. Register courses for Undergrad students. 4. Display information related to each object. Sample output 6: Student: Ali ID: 1 pursuing BIT has completed 10 credits The student has registered for the following 4 courses this semester BIT210: Web Pro BIT106: Java BIT110: Operating System BIT208: Data Structures and has semester tuition fee: 8000.0RM Sample output 7: Student: Alice ID: 2 pursuing BCS has completed 70 credits The student has not registered for any courses this semester and has semester tuition fee: 0.0RM Sample output 8: Student: Adil ID: 8 pursuing Ph.D ( RESEARCH ) is under the supervision of Prof. Abdul Wahab and has semester tuition fee: 8000.0RM Sample output 9: Student: Sally ID: 7 pursuing MIT (THESIS WRITING) is under the supervision of Assoc. Prof. Xi Ping and has semester tuition fee: 6000.0RM Level -3: Container Class [ 60 + 15 = 75 marks] You are provided partial implementation (source code) for StudentList (container) class. You are required to update StudentList class. Attributes: · a Student array instance that will have a collection of PostGrad and UnderGrad objects Constructor: · sets the Student array to user defined size · sets noOfStudents to 0 Methods: addStudent(Student student) · should be able to add student to the studentList, if list not full setStatus(String studentId, String status) · given studentId, sets the status of PostGrad student to appropriate value registerCourse(String studentId, Course course) · given studentId, registers the course for the given UnderGrad student Registration (Driver class) You program should ask for the size of the list from the user and then provide a menu to perform various operations 1. Add PostGrad student to the list 2. Add UnderGrad student to the list 3. Set status of a PostGrad students to appropriate values. 4. Register courses for Undergrad students. 5. Display information of all students 6. Quit Sample Output 10:Enter size of the list: 5 1 --> Add Undergrad student 2 --> Add Postgrad Student 3 --> Set Status 4 --> Register course 5 --> All Registered Students Q/q --> Quit Enter your choice: 1 Enter Name: Lim Yi Enter Id: 1 Enter Programme: BIT Enter Credits completed: 40 1 --> Add Undergrad student 2 --> Add Postgrad Student 3 --> Set Status 4 --> Register course 5 --> All Registered Students Q/q --> Quit Enter your choice: 2 Enter Name: Yunus Enter Id: 3 Enter Programme: PhD Enter Supervisor Name: Ali Enter Supervisor Designation: Assoc. Prof. 1 --> Add Undergrad student 2 --> Add Postgrad Student 3 --> Set Status 4 --> Register course 5 --> All Registered Students Q/q --> Quit Enter your choice: 1 Enter Name: Ben Enter Id: 8 Enter Programme: BCS Enter Credits completed: 48 1 --> Add Undergrad student 2 --> Add Postgrad Student 3 --> Set Status 4 --> Register course 5 --> All Registered Students Q/q --> Quit Enter your choice: 4 Enter Id: 8 Enter Course Name: Web Programming Enter Course Code: BIT210 1 --> Add Undergrad student 2 --> Add Postgrad Student 3 --> Set Status 4 --> Register course 5 --> All Registered Students Q/q --> Quit Enter your choice: 4 Enter Id: 8 Enter Course Name: Operating Systems Enter Course Code: BIT110 1 --> Add Undergrad student 2 --> Add Postgrad Student 3 --> Set Status 4 --> Register course 5 --> All Registered Students Q/q --> Quit Enter your choice: 2 Enter Name: Sameer Enter Id: 32 Enter Programme: MIT Enter Supervisor Name: Adam Enter Supervisor Designation: Assoc. Prof. 1 --> Add Undergrad student 2 --> Add Postgrad Student 3 --> Set Status 4 --> Register course 5 --> All Registered Students Q/q --> Quit Enter your choice: 3 Enter Id: 32 R -> RESEARCH T -> THESIS WRITING Enter Choice: T 1 --> Add Undergrad student 2 --> Add Postgrad Student 3 --> Set Status 4 --> Register course 5 --> All Registered Students Q/q --> Quit Enter your choice: 5 Student: Lim Yi ID: 1 pursuing BIT has completed 40 credits The student has not registered for any courses this semester and has semester tuition fee: 0.0RM ------------------------------- Student: Yunus ID: 3 pursuing PhD ( AUDIT ) is under the supervision of Assoc. Prof. Ali and has semester tuition fee: 8000.0RM ------------------------------- Student: Ben ID: 8 pursuing BCS has completed 48 credits The student has registered for the following 2 courses this semester BIT210: Web Programming BIT110: Operating Systems and has semester tuition fee: 4000.0RM ------------------------------- Student: Sameer ID: 32 pursuing MIT ( THESIS WRITING ) is under the supervision of Assoc. Prof. Adam and has semester tuition fee: 6000.0RM ------------------------------- 1 --> Add Undergrad student 2 --> Add Postgrad Student 3 --> Set Status 4 --> Register course 5 --> All Registered Students Q/q --> Quit Enter your choice: q ************ END OF PROGRAM************* SECTION B (15) Question: You are required to identify and discuss about application of Object Oriented Principles in your solution (Section A). Your discussion should include: · Abstraction · Encapsulation · Inheritance · Polymorphism · Overriding Code efficiency and Documentation (10 marks) · Document all classes and its methods. · Use meaningful variable names and add comments wherever necessary. · The code should be properly indented. · Your sample output should cover all the requirements. · Avoid any redundant code. · Refer to the marking scheme for further details. SUBMIT ON LMS Assignment section A single Word file that includes the following (in order). · Assignment Cover Sheet · Program source code, formatted with Courier New size 10 · Sample Output · Assignment Marking Scheme · Late submissions will be penalized 5 marks per working day. Source Code section Export your project