OBJECT ORIENTED PROGRAMMING USING JAVA
Mid Semester Individual Assignment
Student Management System Plus
JavaFX, SQLite, JDBC, Testing, and Professional Delivery
Weighting: 20 percent of Continuous Assessment
Duration: Four weeks
Code submission deadline: 23 February 2026
Online presentation date: 3 March 2026
Platform: Windows, Offline First
1. Background and problem scenario
Many departments still manage student records with spreadsheets. This creates problems such as
duplicate IDs, missing fields, inconsistent reports, and poor decision making. Your task is to
build an offline desktop application that helps a department manage student records, validate
inputs, store data safely, and generate useful reports.
The final product must run on a Windows machine without internet access. However, you must
use GitHub for version control and submission of your code.
2. Assignment type and rules
• This is an individual assignment
• You must write your own code and your own report
• You must use GitHub and share your repository with the lecturer
• Your repository must show meaningful commits across the four week period
• Your final submission includes a release zip and a report, plus an online presentation
3. Learning objectives
• Apply object oriented programming using classes, encapsulation, and clean architecture
• Build a JavaFX GUI with clear layout and good user experience
• Use SQLite with JDBC safely using prepared statements
• Validate input and enforce data integrity rules
• Write unit tests and run them with Maven
• Generate reports and export to CSV
• Package and document the project professionally
• Use GitHub properly with commits, branches if needed, and clear README
documentation
4. Technical requirements
• Language: Java
• User interface: JavaFX
• Database: SQLite using JDBC
• Build: Maven is recommended
• Run setup: Plain JavaFX SDK with manual VM options
• Platform: Windows
5. Functional requirements
5.1 Student record management
1. Add a new student
2. View all students in a table
3. Update an existing student
4. Delete a student with confirmation
5. Search students by student ID or full name
6. Filter students by level, programme, and status
7. Sort students by GPA and by full name
5.2 Student fields
• Student ID
• Full name
• Programme
• Level
• GPA
• Email
• Phone number
• Date added
• Status: Active or Inactive
5.3 Reports and analytics
Your system must provide a Reports screen with at least the reports below.
1. Top performers: top 10 students by GPA with filters for programme and level
2. At risk students: students with GPA below a threshold that can be changed in the UI.
Default is 2.0
3. GPA distribution summary: count how many students fall into each GPA band
4. Programme summary: total students per programme and average GPA per programme
5.4 Export
• Export full student list to CSV
• Export top performers report to CSV
• Export at risk report to CSV
• All exports must be saved inside a project controlled folder named data
5.5 Import
• Import student records from a CSV file with validation
• Invalid rows must not crash the app
• Invalid rows must be skipped and recorded in an import error report
• Duplicate student IDs must be rejected and reported
6. Data validation rules
You must implement validation in both the UI layer and the service layer.
• Student ID is required, 4 to 20 characters, letters and digits only, must be unique
• Full name is required, 2 to 60 characters, must not contain digits
• Programme is required
• Level must be one of: 100, 200, 300, 400, 500, 600, 700
• GPA must be between 0.0 and 4.0
• Email must contain an at sign and a dot
• Phone number must be 10 to 15 digits, digits only
If validation fails, show a clear message to the user and do not save.
7. Database requirements
• Use SQLite and JDBC
• Student ID must be a primary key
• Use NOT NULL constraints for required fields
• Use CHECK constraints for level and GPA
• Use prepared statements for all queries and updates
• Do not build SQL by concatenating user input
8. Architecture requirements
Your project must follow a layered design.
• UI: JavaFX controllers and views
• domain: Student and other core models
• service: business rules, validation, and reporting
• repository: interfaces plus SQLite implementations
• util: logging, safe file handling, helpers
Controller rules
• Controllers must not contain SQL
• Controllers must not contain heavy business logic
• Controllers must call services only
9. GUI requirements
Your GUI must be clear and consistent. Minimum screens are required.
9.1 Dashboard
• Total students
• Active students count
• Inactive students count
• Average GPA
• Quick buttons to open Students, Reports, Import, Export, Settings
9.2 Students screen
• Table view of students
• Search bar
• Filters: programme, level, status
• Buttons: Add, Edit, Delete, Refresh
• Form panel for add and edit
9.3 Reports screen
• Tabs or dropdown to select report type
• Table to show results
• Export report button
• Filter controls for each report
9.4 Import and Export screen
• Import CSV button
• Import results summary with success count and error count
• Save import error report to CSV inside data
• Export options list
9.5 Settings screen
• Configure at risk GPA threshold
• Optional: manage programme list
9.6 UI quality rules
• All buttons must be labelled clearly
• Use dialogs for confirmation and errors
• Do not freeze the UI during import or heavy operations
• Use background threads for long tasks and update UI safely
10. JavaFX run requirements on Windows
Include a file named RUN_VM_OPTIONS.txt in your release folder.
VM options example
• --module-path "C:\javafx\javafx-sdk-21\lib" --add-modules [Link],[Link]
Your RUN_VM_OPTIONS.txt must also state the JDK version you used.
11. Testing requirements
• At least 12 unit tests
• Tests must cover validation logic, report calculations, and repository methods
• Tests must run using mvn test
• Include test output as a text file inside the evidence folder
12. Logging requirements
• Write logs to a file inside data
• Log: app start and close, add update delete, import summary, export completion, database
failures
• Do not log full personal records
13. GitHub requirements and setup guide
13.1 What you must do
• Create one GitHub repository for this assignment
• Make it private, unless the lecturer requests a public repository
• Share access with the lecturer by adding them as a collaborator, or by sharing the
repository link if public
• Commit regularly. A minimum of 12 meaningful commits is expected across the four
week period
• Use clear commit messages that describe what changed
13.2Step by step GitHub setup
1. Create a GitHub account if you do not already have one
2. Create a new repository named: student management system plus your index number
3. Choose Private and tick Add a README file
4. Clone the repository to your Windows machine using GitHub Desktop or Git
5. Open the project folder in your IDE and begin development inside the cloned folder
6. Commit small changes frequently and push to GitHub
13.3 GitHub Desktop recommended workflow
• Install GitHub Desktop on Windows
• Sign in with your GitHub account
• Clone the assignment repository
• After each milestone, commit and push
• Use the History tab to confirm your commits are visible
13.4 Recommended commit message style
• Use present tense verbs: Add, Fix, Refactor, Test, Document
• Examples: Add student validation rules, Fix duplicate ID import handling, Refactor
repository layer, Add tests for GPA bands
13.5 Repository structure expectation
• Root contains [Link], README, and src folder if you are using Maven
• Do not commit the target folder
• Store database and exports in data, but do not commit large generated files
• Include a short section in README that explains how to run the app on Windows
13.6 Sharing your repository with the lecturer
• Private repository option: Settings, Collaborators, Add people, enter the lecturer GitHub
username or email
• Public repository option: send the repository link
• If you are unsure, ask during class and do not wait until the last day
14. Timeline and milestones
This is a four week assignment. Use the plan below.
Week 1
• Create GitHub repository and push initial project structure
• Create database schema and repository layer
• Build Students screen skeleton with table and form
• Implement add and view actions
• Minimum 3 commits this week
Week 2
• Complete CRUD: add, edit, delete
• Add validation in service layer
• Add search, filter, sort
• Add at least 6 unit tests
• Minimum 3 commits this week
Week 3
• Build Reports screen with top performers and at risk reports
• Implement export to CSV
• Implement import from CSV with error report
• Improve logging and error handling
• Minimum 3 commits this week
Week 4
• Finish remaining reports and settings
• Finalise tests to at least 12 and capture mvn test output
• Prepare release folder and perform fresh folder test
• Write the final report and prepare presentation slides
• Minimum 3 commits this week
15. Submission and presentation
15.1 Code submission deadline
Your GitHub repository must be fully pushed by: 23 February 2026.
15.2 Final project presentation
You will present online on: 3 March 2026.
• Presentation duration: 7 to 10 minutes
• You must demonstrate key features and one failure handling case
• You must show your GitHub repository commit history briefly
16. Deliverables
Submit these items.
A Release zip
• One zip file named: StudentManagementSystemPlus YourName YourIndexNumber
• Release folder with app, source, evidence, and documentation
• README and RUN_VM_OPTIONS.txt
• CHANGELOG and version number
• Sample exports and sample log file
• If SQLite used: include a sample database with records
B Final report
• Word or PDF report with problem statement, requirements, design, screenshots,
testing, security, limitations, and references
C Presentation
• Slides or a structured demo script used for the online presentation
17. Marking scheme
Total: 100 marks. This project contributes 20 percent to Continuous Assessment.
Functionality 40
• CRUD works correctly: 15
• Search, filter, sort: 10
• Reports correct and usable: 10
• Import and export work: 5
Code quality and object oriented design 20
• Clean architecture and separation of concerns: 10
• Good modelling and encapsulation: 10
Database, security, and integrity 15
• SQLite schema and constraints: 7
• Prepared statements and safe queries: 8
GUI and usability 10
• Layout and consistency: 6
• Error handling and responsiveness: 4
Testing and reliability 10
• Number and quality of tests: 7
• mvn test evidence: 3
GitHub usage and professionalism 5
• Regular commits with clear messages: 3
• Readable README with run instructions and project overview: 2
18. Academic integrity
• Plagiarism is not allowed
• Do not copy code from classmates
• If you use any external reference, cite it in the report
• If you use AI tools for support, you must disclose it in the report and explain what you
used it for
19. Notes for students
• Start early. Do not wait until the last week
• Commit your work regularly to GitHub
• Test your release in a fresh folder before you submit
• Make your user interface simple and clear