A Java Swing desktop application for academic management — handling classes, modules, assessments, grading, submissions, and feedback across four user roles. A coursework project.
- User CRUD across all roles (Admin, Academic Leader, Lecturer, Student)
- Approve or reject student registration requests
- Manage classes and assign lecturers to modules
- Configure the grading system (grade boundaries, letter grades)
- CRUD modules and assign lecturers to module classes
- Monitor class enrollment and lecturer assignments
- Generate and export reports: module-level, class-level, and overall statistics
- Design assessments (assignments, quizzes, exams, projects) with weightage caps
- Enter and update student grades with automatic letter-grade calculation
- Provide per-assessment feedback to students
- Live student search and grade overview per class
- Register for and drop classes (with module-level duplicate prevention)
- Submit assessments with optional notes
- View grades, lecturer feedback, and GPA breakdown
- Respond to feedback with comments
- Export personal performance reports
- Profile management (name, email, password)
- Dashboard with role-specific statistics
| Layer | Technology |
|---|---|
| Language | Java 21 (SE, no external dependencies) |
| UI | Swing (JFrame, JPanel, CardLayout) |
| Persistence | Flat pipe-delimited text files under data/ |
| Build | NetBeans Ant project |
| Auth | SHA-256 + per-user salt password hashing |
| Concurrency | ReentrantLock on file writes |
Presentation (Swing UI) → Services (business logic) → Models (domain entities) → FileManager (persistence)
| |
Constants (enums) Validator (input validation)
- 18 UI panels organized by role under
ui/admin/,ui/academic/,ui/lecturer/,ui/student/ - 10 service classes mediating between UI and file-based storage
- 12 model classes representing domain entities
- Shared utilities:
UserParser,PasswordHasher,FileManager,Validator
- Java 17 or higher
Windows — double-click run.bat
Terminal:
cd aftereditingmanageclassfinal
javac -encoding UTF-8 -d build/classes -sourcepath src src/main/Main.java
java -cp build/classes main.Main| Role | Username | Password |
|---|---|---|
| Admin Staff | admin |
admin123 |
Other test accounts are preloaded in data/users.txt.
src/
├── constants/ # Enums and file path constants
├── main/ # Entry point (Main.java)
├── models/ # Domain entities (User, Module, Class, Assessment, etc.)
├── services/ # Business logic layer
├── ui/ # Swing UI
│ ├── admin/ # Admin dashboard and panels
│ ├── academic/ # Academic Leader dashboard and panels
│ ├── lecturer/ # Lecturer dashboard and panels
│ ├── student/ # Student dashboard and panels
│ └── common/ # Shared UI components
└── utils/ # FileManager, Validator, PasswordHasher, UserParser
data/ # Pipe-delimited flat-file persistence
- Flat-file persistence was chosen to eliminate external database dependencies — the system is fully self-contained and runs immediately after clone
- Cascading deletes ensure referential integrity when modules, classes, or assessments are removed
- Password hashing uses SHA-256 with a 16-byte random salt per user; legacy plain-text passwords are auto-upgraded on first login
- Weightage enforcement prevents assessment total from exceeding 100% per module; GPA calculation requires exactly 100% to include a module