This assignment is about writing a C# application that creates a minimal student enrolment system. The application will display lists of papers and students. The user can enrol students into papers. The main focus of this assignment is on working with classes and objects. Additionally, you will need to use collections for storing and displaying objects. Please check out the attached marking rubric for additional guidance on what is required and on how many marks are available for the various parts of the task. Please use the Stream forum to seek clarification on this task if required.
The application you write for this assignment has to provide the following functionality:
- Papers: A paper has a name and a numeric credit value. All papers are displayed as a list. The credit value of a paper can be changed. The details of a paper (name and credit value) are displayed when the paper is selected.
- Students: A student has a name. A student can be enrolled in up to 5 papers. The details of a student (name, which papers enrolled in, total credit value of these papers) are displayed when the student is selected.
- Enrolling: The user enrols students in papers. A student can only be enrolled once in each paper.
The screenshot shows you how this application could look and what kind of data it is supposed to deal with.
How to implement this application
You need to create two new classes for this application, one for students and one for papers. The lecture slides on Classes show you how to do this (check out slide 8 and the following slides that give you the code for the Balloon class example). You could implement the creation of objects for students and papers in various ways (e.g., reading the data from a file or asking our user to enter the data via the user interface). To keep things simple I suggest you enter the data for creating the objects directly into your code (see lecture slide 11 on ArrayLists as example of how objects are created: 'new Car (...)'). Use ArrayLists for both students and papers. ArrayLists are very suitable for this as they allow us to store objects, as we can link them to list boxes for display and selection of elements by the user (see again lecture slide 11 on ArrayLists for how to connect an ArrayList and a ListBox). To capture which papers a student is enrolled in, each student object needs to keep references to the relevant paper objects. Because these instructions give you a maximum number of papers per student you can use an array for this (lecture slide 12 on Arrays shows you how to make an array that will contain objects, in the example of type Person; be careful, there are two important differences to this example: first, the paper objects you add to your array will have already been created; second, the code to add the papers will not be located in your Form class but in your Student class). Make your application robust, as you cannot rely on the user behaving as intended by you. If you rely on using selected items from a list make sure such items are selected (see slide 5 on ListBoxes for an example). If you are expecting a number from the user make sure that the user has given you a number.
Please make sure your application fulfils the following requirements: - The use of proper object-oriented design, in particular you need to create classes for papers and students.
- Create a clear user interface layout and a well-structured interaction of the user with the program.
- Your program should not 'crash' (e.g., in response to unsuitable user input).
- You need to follow of C# style guidelines or as used in the program examples in lecture slides and sample programs (e.g., use suitable names for variables).
You can start working on the assignment as soon as you have studied the 'Classes' material. You can initially focus on just the classes Student and Paper and simplify, e.g., by saying that each student is enrolled in only one paper. This allows you to get started before studying ListBoxes, arrays and ArrayLists.