- System description (overview of problem):
You are asked to write a program in Java to simulate a University Paper Offering System
The School of Mathematical and Computational Sciences (SMCS) provides several Information Science related majors to undergraduate students. These majors are: Computer Science (CS), Information Technology (IT), Information Systems (IS), Software Engineering (SE), and Data Science (DS).
Each paper offered belongs to one or more majors and has a paper number (such as 159234) and a name.
Each paper may include up to three assessment types (tests, assignments, exam), and each assessment type carries a particular weighting. Each paper is offered in all three of the following modes: internal Auckland, internal Palmerston North (PN), and distance. Each mode must be delivered by one lecturer.
Each lecturer is located at one of two campuses (Auckland or PN). A lecturer can only deliver an internal offering if it is located on his/her campus – but can deliver any distance offering. Each lecturer may deliver a minimum of zero offerings and a maximum of four offerings. Each lecturer’s biographical details (first name, last name, ID number, and campus) must be recorded.
- Sample class diagram:
A simplified class diagram based on the above system description is provided below to help you get started with your assignment. It includes the names of the potential classes and their associations. To complete your program design, you will need to identify the attributes and methods for each class.
Please also note that this is just a sample class diagram but not the only correct solution. Feel free to make any changes (such as add/reduce classes) that you think are appropriate.
- Programming tasks to complete by your java code:
1) Add to your system test data regarding papers and lecturers (use the test data provided on page 3 of this document).
2) Add yourself to the system as a lecturer. You MUST record your real name and your real Student ID number. You can choose either Auckland or PN as your campus.
3) Randomly assign lecturers to every paper offering based on the rules specified in the system description above (using Java library java.util.Random or Math.random()).
4) When your program runs, it should display the following output in the same order as below, from Task 1 to Task 8:
Task 1: Full name of school
Task 2: All papers’ details (including paper number, name, and majors it belongs to)
Task 3: All papers belong to your real major at Massey (such as ‘CS’)
Task 4: All papers that have an exam
Task 5: All papers whose assignments weigh more than 50% in total
Task 6: All paper offerings including paper number, offering mode, and lecturer
Task 7: The paper offerings that you teach
Task 8: The lecturer’s name of Auckland offering 159234
- Design and Implementation Guideline
Note: You will receive credit for correctness, completeness, no code duplication, clear on-screen output display. Also, the following OOP and general software design concepts will be checked while marking your program:
1) Class design and implementation
- Data fields
2) Encapsulation and implementation – proper use of modifiers
3) Information storage and implementation
- Use Array (or Java collection if you already know how) to store information
- Must make use of getters and/or setters wherever appropriate
- Other Specifications
You must follow the next five specifications when completing this assignment:
1) Create the method displayInfo as shown below to provide appropriate information.
The content of displayInfo should be the first thing that displays on screen.
2) Place appropriate comments in your program – e.g.:
/** explain what the program file is doing . . . */
// explain what a part/method of the program is doing…
3) DO NOT hard-code any output for tasks 1 – 8 (If you use hard-coded output like the one in the displayInfo method mentioned above, you will not receive any credit)
4) DO NOT add any package name (for example ‘package Assignment1;’) to the beginning of your .java file (for marking purpose)
5) DO NOT use any function to clean the screen at any stage of a program