Question: Using java. The RegistrationSystem will hold information (in collections) on university students, faculty, courses, their prerequisites, and course sections. Complete the implementations for the following

Using java.

The RegistrationSystem will hold information (in collections) on university students, faculty, courses, their prerequisites, and course sections. Complete the implementations for the following operations supplied in the RegistrationSystem class:

  1. Constructor: initialize all fields and ensure that the RegistrationSystem object is in a valid initial state.
  2. addStudent : Add student to the student collection. Throw appropriate exceptions.
  3. addFaculty : Add faculty to the faculty collection. Throw appropriate exceptions.
  4. addCourse : Add course to the faculty collection. Throw appropriate exceptions.
  5. addPrerequisite : Add prerequisite to an existing course in the course collection. Throw appropriate exceptions.
  6. addSection : Add a section for an existing course in the course collection. Throw appropriate exceptions.

In addition, you will need to implement functionality and add fields in the following classes:

  1. Faculty : Implement the constructor and add the following fields:
    • first name: the first name of the faculty
    • last name: the last name of the faculty
    • suid: the school (i.e. NYU) identification number -- must be unique
    • status: the status of the faculty (see PersonStatus enum)
    • faculty type: the type of faculty (see FacultyType enum)
    • office: includes building (i.e. ENGR) and room number (i.e 000)
    • email: the school (i.e. NYU) email address
  2. Student : Implement the constructor and add the following fields:
    • first name: the first name of the student
    • last name: the last name of the student
    • suid: the school (i.e. NYU) identification number -- must be unique
    • status: the status of the student (see PersonStatus enum)
    • student type: a student can only be assigned a single student type (see StudentType enum)
    • student program: a student can only be assigned to a single program at a point of time, but can switch from one program to another (i.e. when they've graduated from a program (see StudentProgram enum)
    • student year: only relevant for undergraduates (see StudentYear enum)
    • faculty advisor: students are assigned a faculty advisor, but may switch advisors (i.e. faculty leaves or on sabbatical); may not be assigned an advisor for a period of time when first enrolled as a student
    • start term: associated with the quarter and year a student starts a particular program; for example, a single student may start the CERT in RQ17 and then continue the MSCS in FQ18 (see Quarter enum)
    • email: the school (i.e. NYU) email address
  3. Course : Implement the constructor and add the following fields:
    • For example, CPSC 5011: Object-Oriented Concepts
      • subject code: CPSC
      • course number: 5011
      • course name: Object-Oriented Concepts
      • credit number: 3
      • prerequisite(s): CPSC 5003 (can have multiple prerequisites or none)
  4. Section : Implement the constructor and add the following fields:
    • For example, CPSC 5011-02: Object-Oriented Concepts
      • course: CPSC 5011
      • section: 01
      • instructor: SImon Smith
      • quarter/year: WQ21
      • capacity: 30
      • building/room: ZOOM 100

Notes:

  • You may include additional classes to promote good design.
  • You may include additional public functionality in RegistrationSystem, Faculty, Student, Course, and Section classes. Do not include any functionality that is not necessary.
  • Feel free to add private helper function(s) to the RegistrationSystem, Faculty, Student, Course, and Section classes; however, please confirm with the instructor before attempting to add any fields not specified in these classes.

Class Requirements

  1. Download the HW.zip file attached with this homework.
    • Additional documentation on classes may be found on the provided starter code.
  2. No changes should be made to the Driver (except the TODO) or any classes in enums/ or exception/.
  3. Implement all 17 TODOs in the RegistrationSystem, Faculty, Student, Course, and Section classes. You can view these in Eclipse by going to Window > Show View > Tasks.
  4. You will only be throwing exceptions in the non-Driver classes you create. The driver will be responsible for handling (i.e. catching) exceptions. You may create additional exceptions, if necessary. If included, be sure to include the throws keyword and the exception name in the function signature.
  5. Your project should have the following structure:
HW4 > src > driver > enums > exceptions > person > registration > system 

Driver Requirements

Driver.java has been given. Do not make any changes to this file beyond the TODO - the printSystem(RegistrationSystem system) method (though you can create helper method(s) to help print the RegistrationSystem collections).

Sample Output

-- FACULTY LIST -- Faculty: Name=Roshanak Roshandel, SUID=100015, Email=roshanak@nyu.edu, Status=ACTIVE, Type=ASSOCPROF, Office=ENGR 508 Faculty: Name=James Obare, SUID=100012, Email=obarej@nyu.edu, Status=ACTIVE, Type=INSTRUCT, Office=ENGR 502 Faculty: Name=Kevin Spacey, SUID=100009, Email=ksopacey@nyu.edu, Status=ACTIVE, Type=INSTRUCT, Office=ENGR 519 Faculty: Name=Ali Wong, SUID=100016, Email=wongja@nyu.edu, Status=ACTIVE, Type=INSTRUCT, Office=ENGR 526 Faculty: Name=Susan Ramboo, SUID=100014, Email=sramboo@nyu.edu, Status=ACTIVE, Type=SEN_INSTRUCT, Office=ENGR 505 Faculty: Name=John Smith, SUID=100010, Email=jsmith@nyu.edu, Status=ACTIVE, Type=LECTURE, Office=ENGR 519 Faculty: Name=Aditya Mishra, SUID=100011, Email=mishraa@nyu.edu, Status=ACTIVE, Type=ASSTPROF, Office=ENGR 507 Faculty: Name=Pejman Khadivi, SUID=100003, Email=khadivip@nyu.edu, Status=ACTIVE, Type=ASSTPROF, Office=ENGR 521 Faculty: Name=Richard LeBlanc, SUID=100006, Email=leblanc@nyu.edu, Status=ACTIVE, Type=PROF, Office=ENGR 527 Faculty: Name=Lin Li, SUID=100007, Email=lil@nyu.edu, Status=ACTIVE, Type=ASSTPROF, Office=ENGR 529 Faculty: Name=Eric Larson, SUID=100005, Email=elarson@nyu.edu, Status=ACTIVE, Type=PROF, Office=ENGR 528 Faculty: Name=David Lillethun, SUID=100008, Email=lillethd@nyu.edu, Status=ACTIVE, Type=ASSTPROF, Office=ENGR 506 Faculty: Name=Adair Dingle, SUID=100001, Email=dingle@nyu.edu, Status=ACTIVE, Type=PROF, Office=ENGR 531 Faculty: Name=Steven Hanks, SUID=100002, Email=hankssteven@nyu.edu, Status=ACTIVE, Type=LECTURE, Office=ENGR 511 Faculty: Name=Michael Koenig, SUID=100004, Email=koenigm@nyu.edu, Status=ACTIVE, Type=LECTURE, Office=ENGR 520 Faculty: Name=Yingwu Zhu, SUID=100017, Email=zhuy@nyu.edu, Status=ACTIVE, Type=ASSOCPROF, Office=ENGR 530 Faculty: Name=Sheila Oh, SUID=100013, Email=ohsh@nyu.edu, Status=ACTIVE, Type=SEN_INSTRUCT, Office=ENGR 504 -- STUDENT LIST -- Student: Name=Katherine Johnson, SUID=100031, Email=katherinejohnson@nyu.edu, Status=ACTIVE, Type=GRAD, Program=MSCS, Term=FQ 2018, Advisor=Aditya Mishra Student: Name=Maeby Funke, SUID=100024, Email=maebyfunke@nyu.edu, Status=ACTIVE, Type=UNDERGRAD, Program=BSCS, Term=SQ 2017, Advisor=Roshanak Roshandel, Year=JUNIOR Student: Name=Marie Curie, SUID=100029, Email=mariecurie@nyu.edu, Status=ACTIVE, Type=GRAD, Program=CERT, Term=FQ 2017, Advisor=John Smith Student: Name=Alan Turing, SUID=100030, Email=alanturing@nyu.edu, Status=ACTIVE, Type=GRAD, Program=CERT, Term=RQ 2017, Advisor=Richard LeBlanc Student: Name=Buster Bluth, SUID=100020, Email=busterbluth@nyu.edu, Status=ACTIVE, Type=UNDERGRAD, Program=BSCS, Term=WQ 2018, Advisor=John Smith, Year=SOPHOMORE Student: Name=Gob Bluth, SUID=100019, Email=gobbluth@nyu.edu, Status=ACTIVE, Type=UNDERGRAD, Program=BACS, Term=SQ 2018, Advisor=David Lillethun, Year=SOPHOMORE Student: Name=Lindsay Funke, SUID=100022, Email=lindsayfunke@nyu.edu, Status=ACTIVE, Type=UNDERGRAD, Program=BACS, Term=FQ 2018, Advisor=Ali Wong, Year=SOPHOMORE Student: Name=Kitty Sanchez, SUID=100025, Email=kittysanchez@nyu.edu, Status=ACTIVE, Type=UNDERGRAD, Program=UNDECIDED, Term=FQ 2018, Advisor=Adele Singer, Year=SOPHOMORE Student: Name=Lucille Bluth, SUID=100021, Email=lucillebluth@nyu.edu, Status=ACTIVE, Type=UNDERGRAD, Program=BSCS, Term=WQ 2017, Advisor=Susan Ramboo, Year=JUNIOR Student: Name=Edsger Dijkstra, SUID=100026, Email=edsgerdijkstra@nyu.edu, Status=ACTIVE, Type=GRAD, Program=CERT, Term=RQ 2018, Advisor=David Lillethun Student: Name=Michael Bluth, SUID=100018, Email=michaelbluth@nyu.edu, Status=ACTIVE, Type=UNDERGRAD, Program=BSCS, Term=FQ 2018, Advisor=Jason Wong, Year=SOPHOMORE Student: Name=Ada Lovelace, SUID=100027, Email=adalovelace@nyu.edu, Status=ACTIVE, Type=GRAD, Program=CERT, Term=FQ 2018, Advisor=Michael Koenig Student: Name=Grace Hopper, SUID=100028, Email=gracehopper@nyu.edu, Status=ACTIVE, Type=GRAD, Program=MSCS, Term=WQ 2017, Advisor=Adele Singer Student: Name=Tobias Funke, SUID=100023, Email=tobiasfunke@nyu.edu, Status=ACTIVE, Type=UNDERGRAD, Program=BACS, Term=FQ 2017, Advisor=Susan Ramboo, Year=JUNIOR -- SUBJECT LIST -- Subject: Biology (BIOL) Subject: Chemistry (CHEM) Subject: Mathematics (MATH) Subject: Computer Science (CPSC) -- COURSE LIST -- Course: Name=CPSC-2600: Foundations of Computer Science, Credits=5, Prerequisites=[Name=CPSC-1430: Programming and Problem Solving II] Course: Name=CPSC-5800: Ethics and Professional Issues in Computing, Credits=2, Prerequisites=[] Course: Name=CPSC-5610: Artificial Intelligence, Credits=5, Prerequisites=[Name=CPSC-5031: Data Structures and Algorithms] Course: Name=CPSC-3500: Computing Systems, Credits=5, Prerequisites=[Name=CPSC-2430: Data Structures, Name=CPSC-2500: Computer Organization] Course: Name=CPSC-5600: Parallel Computing, Credits=5, Prerequisites=[Name=CPSC-5031: Data Structures and Algorithms, Name=CPSC-5042: Computing Systems Principles II] Course: Name=CPSC-3300: Fundamentals of Databases, Credits=5, Prerequisites=[Name=CPSC-2430: Data Structures] Course: Name=CPSC-5031: Data Structures and Algorithms, Credits=3, Prerequisites=[] Course: Name=CPSC-5240: Software as a Service, Credits=5, Prerequisites=[Name=CPSC-5042: Computing Systems Principles II] Course: Name=CPSC-5051: Fundamentals of Software Engineering, Credits=3, Prerequisites=[] Course: Name=CPSC-2430: Data Structures, Credits=5, Prerequisites=[Name=CPSC-1430: Programming and Problem Solving II] Course: Name=CPSC-5041: Computing Systems Principles I, Credits=3, Prerequisites=[] Course: Name=CPSC-5042: Computing Systems Principles II, Credits=3, Prerequisites=[Name=CPSC-5041: Computing Systems Principles I] Course: Name=CPSC-5300: Physical Database Design & Optimization, Credits=5, Prerequisites=[Name=CPSC-5021: Database Systems] Course: Name=CPSC-5001: Programming Boot Camp I, Credits=3, Prerequisites=[] Course: Name=CPSC-3400: Languages and Computation, Credits=5, Prerequisites=[Name=CPSC-2430: Data Structures, Name=CPSC-2600: Foundations of Computer Science] Course: Name=CPSC-5003: Programming Boot Camp III, Credits=3, Prerequisites=[Name=CPSC-5002: Programming Boot Camp II] Course: Name=CPSC-5002: Programming Boot Camp II, Credits=3, Prerequisites=[Name=CPSC-5001: Programming Boot Camp I] Course: Name=CPSC-1420: Programming and Problem Solving I, Credits=5, Prerequisites=[] Course: Name=CPSC-3200: Object-Oriented Development, Credits=5, Prerequisites=[Name=CPSC-2430: Data Structures] Course: Name=CPSC-5250: Mobile Software Development, Credits=5, Prerequisites=[Name=CPSC-5011: Object-Oriented Concepts] Course: Name=CPSC-2500: Computer Organization, Credits=5, Prerequisites=[Name=CPSC-1430: Programming and Problem Solving II] Course: Name=CPSC-4100: Design and Analysis of Algorithms, Credits=5, Prerequisites=[Name=CPSC-2430: Data Structures, Name=CPSC-2600: Foundations of Computer Science] Course: Name=CPSC-5700: Computer Graphics, Credits=5, Prerequisites=[Name=CPSC-5031: Data Structures and Algorithms] Course: Name=CPSC-5510: Computer Networks, Credits=5, Prerequisites=[Name=CPSC-5042: Computing Systems Principles II] Course: Name=CPSC-5400: Complier Principles and Techniques, Credits=5, Prerequisites=[] Course: Name=CPSC-6666: Database Systems, Credits=3, Prerequisites=[Name=CPSC-5003: Programming Boot Camp III] Course: Name=CPSC-5200: Software Architecture and Design, Credits=5, Prerequisites=[Name=CPSC-5011: Object-Oriented Concepts, Name=CPSC-5051: Fundamentals of Software Engineering] Course: Name=CPSC-5520: Distributed Systems, Credits=5, Prerequisites=[Name=CPSC-5042: Computing Systems Principles II] Course: Name=CPSC-5011: Object-Oriented Concepts, Credits=3, Prerequisites=[Name=CPSC-5003: Programming Boot Camp III] Course: Name=CPSC-1430: Programming and Problem Solving II, Credits=5, Prerequisites=[Name=CPSC-1420: Programming and Problem Solving I] -- SECTION LIST -- Section: Course=CPSC-6000-02: Data Structures, Faculty=Adele Singer, Term=FQ 2018, Capacity=30, Room=SING 207 Section: Course=CPSC-7000-01: Database Systems, Faculty=John Smith, Term=FQ 2018, Capacity=30, Room=JPPV 401 Section: Course=CPSC-6666-02: Database Systems, Faculty=John Smith, Term=FQ 2018, Capacity=30, Room=LIAM 122 Section: Course=CPSC-3444-01: Data Structures, Faculty=Susan Reeder, Term=FQ 2018, Capacity=15, Room=SAMM 207 Section: Course=CPSC-2222-02: Parallel Computing, Faculty=Kevin Spacey, Term=FQ 2018, Capacity=20, Room=SOUT 402 Section: Course=CPSC-3333-01: Object-Oriented Concepts, Faculty=Tom Pool, Term=FQ 2018, Capacity=20, Room=ADMN 203 Section: Course=CPSC-5510-01: Computer Networks, Faculty=Dave Smithson, Term=FQ 2018, Capacity=30, Room=EAST 304 Section: Course=CPSC-4100-01: Design and Analysis of Algorithms, Faculty=Lin Chao, Term=FQ 2018, Capacity=34, Room=EAST 102 Section: Course=CPSC-5011-02: Object-Oriented Concepts, Faculty=Sean Canne, Term=FQ 2018, Capacity=30, Room=WEST 122 Section: Course=CPSC-2600-01: Foundations of Artificial Intelligence, Faculty=Barack Ohama, Term=FQ 2018, Capacity=30, Room=WEST 122 

Implement the constructor and add the designated fields for the Course and Section classes. Additional classes and public functionality are acceptable. Be sure to justify any design decisions in your Report. (10 marks)

Implement Person classes

Implement the constructor and add the designated fields for the Student and Faculty classes. Additional classes and public functionality are acceptable. Be sure to justify any design decisions in your Report. (20 marks)

Implement RegistrationSystem class

Complete the implementations for constructor and addStudent, addFaculty, addCourse, addPrerequisite, addSection methods in the RegistrationSystem class. Throw appropriate exceptions. (45 marks)

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!