Streamlining Education through Technology
A comprehensive desktop application for managing academic assignments, courses, and grading.
Developed for Object Oriented Programming (Semester 2)
- Overview
- Key Features
- Technology Stack
- Architecture
- Getting Started
- Project Configuration
- Project Structure
- Database Schema
- Contributing
- License
AMS (Assignment Management System) is a robust desktop application designed to bridge the gap between students, teachers, and administrators. Built with a focus on Object-Oriented principles, this system automates assignment distribution, submission tracking, and grading workflows in an educational environment.
This project was developed as a core coursework requirement for the Object Oriented Programming module (2nd Semester), demonstrating practical application of inheritance, encapsulation, polymorphism, and abstraction.
- Role-Based Access Control - Secure login for Admins, Teachers, and Students.
- Dynamic Course Management - flexible assignment and course allocation.
- Integrated Grading System - seamless feedback loop from teacher to student.
- Portable Database - Embedded MS Access database for easy deployment.
- Modern Java Swing UI - User-friendly forms and dashboards.
- Dashboard: personalized view of academic progress.
- Course Registration: Browse and self-register for available modules.
- Assignment Hub:
- Download assignment briefs/resources.
- Upload submissions (assignments) directly within the app.
- View submission deadlines.
- Gradebook: View grades and feedback for completed work.
- Course Administration: Overview of taught courses.
- Assignment Management:
- Create new assignments with descriptions and due dates.
- Attach resource files for students.
- Grading Portal:
- View list of student submissions.
- Assign grades and feedback.
- Student Tracking: Monitor enrollment in your courses.
- User Management: Add, update, or remove Students and Teachers.
- System Oversight:
- View all registered users.
- Manage global course list.
- Assign teachers to courses.
| Technology | Version | Purpose |
|---|---|---|
| Java JDK | 22 | Core Language & Runtime |
| Java Swing | - | Graphical User Interface (GUI) |
| Maven | 3.x | Dependency Management & Build Tool |
| MS Access | 2010+ | Relational Database System |
| Library | Version | Description |
|---|---|---|
| UCanAccess | 5.0.1 | JDBC Driver for MS Access |
| SLF4J | 2.0.7 | Logging Facade |
| Logback | 1.4.11 | Logging Implementation |
The project follows a layered architecture pattern to separate concerns and ensure maintainability.
graph TB
Client["📱 GUI Layer<br/>Swing Forms"]
Mgmt["⚙️ Management Layer<br/>Business Logic & Facades"]
DAO["💾 DAO Layer<br/>Data Access Objects"]
DB[("🗄️ MS Access Database<br/>AMS. accdb")]
Client --> Mgmt
Mgmt --> DAO
DAO --> DB
style Client fill:#e1f5ff,stroke:#01579b,stroke-width:2px
style Mgmt fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style DAO fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
style DB fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
| Layer | Package | Responsibility |
|---|---|---|
| GUI Layer | GUIForms |
JFrame classes for user interaction (SignIn, Dashboard, etc.) |
| Management Layer | ManagementClasses |
Business logic and validation; acts as facade/controller |
| DAO Layer | DAO |
Direct database operations using SQL queries |
| Entity Layer | EntityClasses |
POJOs representing domain models (User, Course, Assignment, etc.) |
| Database Layer | Database |
Connection management and configuration |
| Security Layer | Security |
Authentication and authorization utilities |
- Separation of Concerns: Each layer has a distinct responsibility.
- Dependency Inversion: Higher layers depend on abstractions, not concrete implementations.
- Encapsulation: Data access logic is isolated in the DAO layer.
- Facade Pattern: Management classes provide simplified interfaces to complex subsystems.
Ensure you have the following installed on your machine:
- Java Development Kit (JDK) 22 (or compatible newer version)
- Maven
- Git
-
Clone the Repository
git clone https://github.com/CodeWithFarhn/AMS.git cd AMS -
Build the Project
mvn clean compile
-
Run the Application
mvn exec:java
Alternatively, run the
GUIForms.SignInclass directly from your IDE.
The application uses an embedded Microsoft Access database (AMS.accdb) located in the project root.
Configuration is managed in src/main/resources/application.properties:
db.url=jdbc:ucanaccess://./AMS.accdb;newDatabaseVersion=V2010Note: A pre-configured
AMS.accdbfile is included in the repository, so the application runs out-of-the-box. If you wish to reset the data, you can recreate the database using the provided schema.
AMS/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── DAO/ # SQL & Database Interaction
│ │ │ ├── Database/ # Connection Handler
│ │ │ ├── EntityClasses/ # Data Models (User, Course, etc.)
│ │ │ ├── GUIForms/ # User Interface Screens
│ │ │ ├── ManagementClasses/ # Business Logic
│ │ │ └── Security/ # Auth Utilities
│ │ └── resources/
│ │ ├── images/ # Icons and Logos
│ │ ├── application.properties
│ │ └── logback.xml
├── target/ # Build Artifacts
├── database_schema.sql # SQL Schema Definition
├── pom.xml # Project Dependencies
└── README.md # Documentation
The database consists of 7 relational tables designed to minimize redundancy.
| Table | Description |
|---|---|
| Users | Base table for all user credentials (Admin, Teacher, Student). |
| Student | Extension of Users, specific to student attributes. |
| Teachers | Extension of Users, specific to teacher attributes. |
| Courses | Academic modules managed by teachers. |
| Assignments | Tasks created within a course. |
| Submissions | Student work uploaded for an assignment. |
| StudentCourses | Junction table for course enrollment. |
See database_schema.sql for the full DDL.
Since this is an academic project, direct contributions to the main branch may be restricted. However, suggestions are welcome!
- Fork the repository.
- Create a feature branch (
git checkout -b feature/NewFeature). - Commit your changes.
- Push to the branch.
- Open a Pull Request.
This project is open-source and available under the MIT License.
Built using Java, Maven, and MS Access