Looking for Plagiarism-Free Answers for Your US, UK, Singapore, New Zealand, and Ireland College/University Assignments?
Talk to an Expert| Category | Assignment | Subject | Computer Science |
|---|---|---|---|
| University | London Metropolitan University (LMU) | Module Title | CS4001NT Programming |
| Academic Year | 2026/27 |
|---|

| Coursework Type | Individual |
|---|---|
| Coursework Weight | This coursework accounts for 50% of the overall module grades. |
| Coursework given out | Week 11 (Jan 12, 2026) |
| Submission Date | Milestone 1: Week 18 (Mar 06, 2026) Milestone 2: Week 24 (Apr 17, 2026) Final Submission: Week 28 (May 15, 2026) |
| Submission Instructions | Submit the following to the Islington College’s MST portal before 06:00 PM on the due date: • A report (document) in .pdf format in the MST portal or through any medium which the module leader specifies. |
| Warning | London Metropolitan University and Itahari International College take plagiarism very seriously. Offenders will be dealt with sternly. |
The aim of this assignment is to implement a real-world problem scenario using object- oriented concepts in Java. You will create a class to represent an AIModel, along with two subclasses: PersonalPlan and ProPlan. Additionally, you will prepare a report that provides detailed information about your program.
The GUI part of the coursework focuses on expanding the project by integrating a new class to implement a graphical user interface (GUI). The goal is to create a system that stores AlModel details within an ArrayList. This class will contain the main method and will be executed via the terminal. Additionally, you are required to submit a report explaining the functionality and structure of your program.
Create a new project in BlueJ and define four classes within it: A/Model, Personal Plan, ProPlan, and SubscriptionGUI. Both PersonalPlan and ProPlan are subclasses of AlModel.
SubscriptionGUI class should contain the implementation of Graphical User Interface (GUI). Once your solution is complete, submit the SubscriptionGUI.java file along with the three other mentioned java source files. Ensure that no other files from the project are included. Additionally, submit your report in PDF format.
Imagine that you are a software developer working on contract with a technology company based in Itahari that provides subscription services of the Al models to individual and team customers. The organisation provides personal plans targeting recreational users who need only a limited number of prompts and pro plans targeting teams, which offer new functions, including specific slots of team members. The work to be done is to create and implement the Java application to manage the subscriptions to Al models, track quotas, and perform plan-specific actions- say enrolment of extra prompts or adding team members. It should be possible that the system can determine differentiation between personal and pro plans, verify all entered data (such as model names, prices of subscriptions, and index numbers), and enforce the rules (such as monthly prompt limits and available team slots). In addition to these tasks, such an application is to provide a user-friendly interface allowing the staff to plan new plans, estimate any rest quotas, organize teamwork, and import/export data in file formats. By completing this project, you will become familiar with object-oriented programming features, inheritance, polymorphism, abstraction and encapsulation and will fully validate the data and create a practical GUI that would meet the requirements of the real world of managing subscriptions.
Get Solution of CS4001NT Programming Coursework before Deadline
Chat With ExpertsThe program should consist of the following classes (with no additional methods or attributes)
The AIModel class is a parent class which has the following structure:
Attributes
The AlModel class has the following four attributes: modelName, price (in Nepali Rupee(s) per 1 Lakh tokens), the model parameter count (in billions), and the context window size (e.g. 64 thousand (64K) tokens). The pricing is a decimal value, the number of parameter count is an integer, context window and model names are text values.
Constructor
The constructor of this class accepts four parameters that correspond to attributes of the given class. Each attribute of the class is initialized with the parameters passed through the mentioned constructor.
Accessor Methods
Each attribute of the class has a corresponding accessor/getter method. Methods
A display method will output the value of attributes mentioned above i.e. name of the ai model, pricing, parameters count and the context window size. Return the value as String.
The PersonalPlan class is a child class of the AlModel. It has the following structure: Attributes
This class has only one attribute which represents the number of prompts remaining in monthly quota (Let's say 500 prompts per month). The number of prompts must be counted as integer value.
Constructor
The value of this class attribute is initialized in the constructor using one of five parameters passed to the constructor. Other parameters of the constructor are initialized with the value of parameter passed as model name, price, parameter count, and context window respectively. Values of four parameters mentioned are passed to the constructor of its parent, the AlModel class.
Accessor Methods
The attribute of this class has an accessor method.
Methods
The PersonalPlan class has a method which allows users to purchase additional prompts (using parameters) so that prompts can be added to the monthly quota of the user. Prevent users to enter the number of prompts to less than zero. If the number of prompts is less than zero, return a message saying that user must enter positive value or user must upgrade to pro plan. When the value of prompt is positive, add it to the monthly prompts quota.
There should be another method that represents the user entering a prompt. The user provides prompt text and the expected output length in tokens. If the number of prompts are sufficient in the quota then the message should be returned with prompt details and token usage and the remaining prompt is reduced by one. A message is returned informing the user that the monthly plan has been reached.
There should also be a method that displays the details of PersonalPlan. This method should have the same signature as its parent class and it will also call the method in the parent class (AIModel class). This method then returns the model name, pricing. parameters count, context window and the number of prompts remaining in the monthly quota (suitably annotated).
The PersonalPlan class is another child class of the AlModel. When a personal plan is not enough then the user chooses this plan. The pro plan is for teams. It has the following structure:
Attributes
This class has just one attribute which represents the slot for collaborating with available team members.
Constructor
The attribute mentioned in this class is initialized in the constructor by assigning the value of one of the five parameters of the constructor. The other four parameters represent the attributes of the parent class.
These four parameters are passed to the constructor of its parent class.
Methods
The ProPlan class has a method for adding team members which takes a parameter representing the team member name and if there are enough available slots in the pro plan, decreases the available team slots accordingly. Error message is returned otherwise.
There is another method that removes the team members which takes a parameter representing the team member name to remove and increase the available team slots accordingly.
Another method to display the details of the pro plan is required and this method has the same signature as its parent class method. It also makes a call to the parent class method (suitably annotated) to display attributes provided in the parent as well as the attribute of this (ProPlan class).
This class should store an ArrayList of the type AIModel to hold the Al model plans. Example:
The SubscriptionGUI class should store an array list (not an array) of type AlModel to hold the Al subscription plans. An example GUI should contain fields for Model
Name, Pricing, Parameters, Context Window, along with buttons for "Add Personal Plan", "Add Pro Plan", "Display All", "Clear", and sections for managing entering prompts and team collaboration.
ArrayList<AlModel> <reference-variable-name>= new ArrayList():
Text Fields
There should be text fields for entering:
1. The model name
2. The pricing (per 1 Lakh tokens)
3. The parameter count (in billions)
4. The context window
5. The initial prompts quota (when adding a Personal Plan) 6. The initial team member slots (when adding a Pro Plan)
7. The prompt text (when making an API call)
8. The response length (when making enter a prompt)
9. The team member name (when adding/removing team members)
10.The index number of an object in an arraylist
The input method for the index number differs from the input methods used for other text fields. This method follows a specific validation process:
Buttons
Add Personal Plan
The model name, pricing, parameter count, context window and prompt quota are input via the GUI. When this button is pressed, the methods to get these values are called, and they are used to create a new object of type Personal Plan, which is added to the array list of Al subscription plans.
Add Pro Plan
The model name, pricing, parameter count, context window and team member slots are input via the GUI. When this button is pressed, the methods to get these values are called, and they are used to create a new object of type ProPlan, which is added to the array list of Al subscription plans.
Display All
When this button is pressed, the index number is printed and the method to display the details of the Al subscription plan is called, for each plan in the array list. Note: When displaying data, you are free to choose JTextArea or JTable.
Clear
When this button is pressed, the text is cleared from each of the given text fields.
The report should contain the following:
A class diagram including AlModel class and other 3 classes. The class diagram should display the name of the class, the data types and name of the instance variables, return type and signatures of all constructor(s) and method(s).
There should be a combined class diagram showing IS-A relationship between classes. The relationship diagram must follow the correct notation.
Provide a pseudocode for the following button-handling methods in GUI (for actionListener):
1. Adding a personal plan
2. Adding a pro plan
3. Making a prompt
4. Getting the index number from GUI
5. Checking a plan type
6. Exporting data to a file and loading data from a file
A short description of each method you have written inside AlModel.java, PersonalPlan.java, ProPlan.java Every Method descriptions should include the following:
Method name
Type of parameter Return type
Brief description of the method
Give evidences using appreciate screenshots for the following (Table 1) testing on program you have developed:
Test Case
Test 1
Test 2
Test 3
Test 4
Test 5
Test 6
Description
Compile and run program using CLI
Add personal and pro plan to the array
list
Make a prompt
Add team member
Show message dialog for invalid index value entered
Show successful file writing and loading of file created earlier and display data in a table or textarea
Table 1: Test Cases
The report should include a section on error detection and error correction where you give examples and evidence of three errors encountered in your implementation.
It should have following errors and should be distinctive and not of the same type.
Description of the error
• Steps taken to identify the error
Solution implemented
• Evidence (screenshot of the error message, or code snippet)
• At least one syntax error and one runtime error must be included.
Note: Total three errors (not to be confused with three errors of each type)
The report should contain a conclusion, where you evaluate your work, reflecting on what you learnt from the assignment.
Include all the references in this section. The references included here must be cited properly.
Include all code listings in the appendix section. Include code listing for parent class as well as child classes.
Table 2 illustrates the assessment criteria and weight.
| No. | Criterion | Weight | Explanation |
|---|---|---|---|
| 1 | Class diagram | 10% | You need to provide a class diagram as described in section 5.1. This likely includes classes, attributes, and relationships. |
| 2 | Pseudocode for button-handling methods | 6% | Write pseudocode for methods that handle button actions, as described in section 5.2. |
| 3 | Descriptions of all methods in given classes | 15% | Give detailed explanations for all methods, including parameters, return values, and functionality (section 5.3). |
| 4 | Test cases | 6% | Provide test cases to show how your methods work, as in Table 1. |
| 5 | Error detection and correction | 2% | Describe any errors in your program and how they are handled or corrected (section 5.5). |
| 6 | Conclusion | 3% | Summarize your report and findings (section 5.6). |
| 7 | Report quality | 3% | Make sure your report has a proper title page, is properly formatted, includes a table of contents/list of figures, and is presented neatly. |
Achieve Higher Grades of CS4001NT Programming Coursework & Raise Your Grades
Order Non Plagiarized AssignmentStruggling with your CS4001NT Programming Coursework 2 at London Metropolitan University (LMU)? Get expert-guided Assignment Help UK tailored to your needs. We provide reliable Programming Assignment Help with clear explanations of residential construction concepts, design principles, and assessment requirements. Our resources include a free list of assignment sample answers to help you understand structure, formatting, and key topics with ease. Achieve better grades with well-researched, plagiarism-free support designed to boost your confidence and academic performance. Start your journey toward success with trusted academic assistance today.
Hire Assignment Helper Today!
Let's Book Your Work with Our Expert and Get High-Quality Content