A complete console-based complaint management solution featuring secure authentication, role-based access control, persistent storage, controlled complaint workflows, SLA tracking, automatic escalation, audit logging, analytics, feedback management, and automated testing.
Features • Architecture • Installation • Usage • Testing • Documentation
The Online Complaint Management System is an industry-oriented Core Java application designed to manage the complete lifecycle of complaints in a secure, structured, and transparent manner.
The system provides separate User and Administrator roles.
Users can register securely, log in, submit complaints, receive unique complaint IDs, track complaint progress, view status history, and provide feedback after resolution.
Administrators can manage complaints through assignment, priority updates, status transitions, resolution handling, filtering, SLA monitoring, escalation, closure, and analytics.
Unlike a basic CRUD application, this project focuses on real-world software engineering concepts including:
- Layered architecture
- Secure password management
- Authentication and authorization
- Business workflow validation
- Persistent application data
- SLA-based complaint monitoring
- Auditability and status history
- Automated unit testing
- Secure user registration
- User authentication
- Unique user ID generation
- Password hashing using PBKDF2
- Random password salts
- Role-Based Access Control
- Complaint ownership validation
- Submit new complaints
- Automatic unique complaint ID generation
- Multiple complaint categories
- Priority-based classification
- Track complaint status
- View personal complaints
- View complete complaint history
- Persistent complaint storage
- View all complaints
- Search complaints by ID
- Assign complaints
- Update complaint status
- Change complaint priority
- Add resolution details
- Filter complaints
- Close resolved complaints
- View complaint analytics
The system automatically associates an SLA target with each priority.
| Priority | SLA Target |
|---|---|
| 🔵 LOW | 72 Hours |
| 🟢 MEDIUM | 48 Hours |
| 🟠 HIGH | 24 Hours |
| 🔴 CRITICAL | 4 Hours |
The system can identify complaints that are:
- Within SLA
- Near deadline
- SLA breached
- Escalated
- PBKDF2 with HMAC-SHA256 password hashing
- Random cryptographic salts
- No plain-text password storage
- Role-based authorization
- Complaint ownership protection
- Input validation
- Controlled complaint state transitions
- Complaint status history
- User feedback and ratings
- Administrative analytics
- Automatic escalation support
- Audit logging
- Persistent file-based storage
- Custom exception handling
- JUnit 5 automated tests
The primary complaint workflow follows:
┌──────────┐
│ OPEN │
└────┬─────┘
│
▼
┌────────────┐
│ ASSIGNED │
└─────┬──────┘
│
▼
┌────────────────┐
│ IN_PROGRESS │
└───────┬────────┘
│
▼
┌────────────┐
│ RESOLVED │
└─────┬──────┘
│
▼
┌──────────┐
│ CLOSED │
└──────────┘
The system also supports controlled alternative transitions such as reopening a resolved complaint when additional work is required.
Invalid transitions are blocked through business rules and custom exception handling.
The project follows a layered architecture:
┌─────────────────────────────────────────┐
│ USER / ADMIN │
└────────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ PRESENTATION LAYER │
│ Main.java │
│ Menus • Input • Output │
└────────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ SERVICE LAYER │
│ │
│ UserService • ComplaintService │
│ │
│ Authentication • Authorization │
│ Workflow • SLA • Analytics │
└────────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ REPOSITORY LAYER │
│ │
│ FileRepository<T> │
└────────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ DATA LAYER │
│ │
│ users.dat • complaints.dat │
└─────────────────────────────────────────┘
This architecture provides:
- Separation of concerns
- Better maintainability
- Improved testability
- Reusable components
- Easier database migration
- Future REST API integration support
Online-Complaint-Management-System-Java/
│
├── src/
│ ├── main/
│ │ └── java/
│ │ └── com/
│ │ └── complaintmanagement/
│ │ │
│ │ ├── enums/
│ │ ├── exception/
│ │ ├── model/
│ │ ├── repository/
│ │ ├── service/
│ │ ├── utility/
│ │ └── Main.java
│ │
│ └── test/
│ └── java/
│ └── com/
│ └── complaintmanagement/
│ └── ComplaintServiceTest.java
│
├── data/
├── docs/
│ ├── ARCHITECTURE.md
│ ├── PROJECT_DOCUMENTATION.md
│ ├── TESTING.md
│ └── USER_GUIDE.md
│
├── logs/
├── outputs/
├── screenshots/
│ ├── user-registration.png
│ ├── user-login-dashboard.png
│ ├── complaint-submitted.png
│ ├── complaint-tracking.png
│ ├── admin-dashboard.png
│ ├── complaint-assigned.png
│ ├── complaint-in-progress.png
│ ├── complaint-resolved.png
│ ├── complaint-history.png
│ ├── feedback-submitted.png
│ ├── complaint-closed.png
│ └── analytics-dashboard.png
│
├── .gitignore
├── pom.xml
└── README.md
| Technology | Usage |
|---|---|
| Java | Core application development |
| OOP | Modular application design |
| Java Collections | In-memory data management |
| Java Streams | Filtering and analytics |
| Java Serialization | Persistent file storage |
| PBKDF2 | Secure password hashing |
| JUnit 5 | Automated unit testing |
| Apache Maven | Build and dependency management |
| Git | Version control |
| GitHub | Source-code hosting and project portfolio |
| VS Code | Development environment |
This project demonstrates practical implementation of:
- Object-Oriented Programming
- Encapsulation and abstraction
- Layered software architecture
- Java Collections Framework
- Java Stream API
- Generic programming
- Java Serialization
- File handling
- Authentication and authorization
- Password hashing and salting
- Role-Based Access Control
- Input validation
- Custom exception handling
- State transition management
- SLA monitoring
- Audit logging
- Unit testing
- Maven project management
Ensure the following are installed:
- Java JDK 17 or later
- Apache Maven
- Git
- VS Code with Extension Pack for Java
Verify the installations:
java --version
javac --version
mvn --version
git --versiongit clone https://github.com/Vayu-143/Online-Complaint-Management-System-Java.gitNavigate to the project:
cd Online-Complaint-Management-System-Javamvn clean compilemvn testmvn exec:javaRegister Account
↓
Secure Login
↓
Submit Complaint
↓
Receive Unique Complaint ID
↓
Track Complaint
↓
View Status History
↓
View Resolution
↓
Submit Feedback
Admin Login
↓
View/Search Complaints
↓
Assign Complaint
↓
Update to IN_PROGRESS
↓
Add Resolution
↓
Mark as RESOLVED
↓
User Provides Feedback
↓
Close Complaint
↓
View Analytics
The project uses JUnit 5 for automated testing.
Run:
mvn clean testCurrent test result:
Tests run: 5
Failures: 0
Errors: 0
Skipped: 0
BUILD SUCCESS
- Password validation
- Feedback rating validation
- Default complaint status
- Critical-priority SLA configuration
- Automatic complaint history creation
Additional manual testing covers:
- User registration
- Duplicate account prevention
- Authentication
- Complaint submission
- Complaint ownership
- Administrator operations
- Status transitions
- Resolution workflow
- Feedback submission
- Complaint closure
- Persistent storage
Application data is stored locally using Java object serialization.
data/
├── users.dat
└── complaints.dat
The repository layer is designed separately from the business logic, making future migration to technologies such as JDBC, MySQL, PostgreSQL, or Spring Data JPA easier.
Runtime
.datfiles are excluded from version control to prevent local user and complaint records from being committed to the repository.
User Password
│
▼
Random Salt Generation
│
▼
PBKDF2WithHmacSHA256
│
▼
Derived Password Hash
│
▼
Store Hash + Salt
Passwords are never intentionally stored as plain text.
Authenticated Account
│
▼
Role Check
/ \
USER ADMIN
│ │
▼ ▼
Personal System-Wide
Complaints Management
The administrator analytics module provides information such as:
- Total number of complaints
- Complaint count by status
- Critical complaint count
- Escalated complaint count
- User feedback statistics
- Average complaint rating
This demonstrates how operational complaint data can be transformed into useful management insights.
Detailed project documentation is available inside the docs/ directory:
| Document | Description |
|---|---|
PROJECT_DOCUMENTATION.md |
Complete project explanation and technical overview |
ARCHITECTURE.md |
System architecture, package structure, and data flow |
TESTING.md |
Automated and manual testing strategy |
USER_GUIDE.md |
Installation and complete application usage guide |
The current version is designed as a Core Java portfolio and learning project.
Current limitations include:
- Console-based interface
- Local file-based persistence
- Single-machine execution
- No external relational database
- No real-time email or SMS notifications
- No web-based frontend
These limitations provide clear opportunities for future development.
Planned and possible improvements include:
- MySQL/PostgreSQL database integration
- JDBC persistence layer
- Spring Boot backend
- REST API development
- JWT-based authentication
- React or Angular frontend
- JavaFX desktop interface
- Email and SMS notifications
- Automated complaint assignment
- Scheduled SLA monitoring
- AI-based complaint categorization
- Sentiment analysis
- Duplicate complaint detection
- PDF report generation
- Advanced analytics dashboard
- Docker containerization
- Cloud deployment
- CI/CD with GitHub Actions
Through this project, I strengthened my understanding of:
- Building structured applications with Core Java
- Designing maintainable layered architectures
- Implementing real-world business workflows
- Applying OOP concepts in practical applications
- Designing secure authentication mechanisms
- Implementing role-based authorization
- Managing persistent application data
- Designing controlled state transitions
- Implementing SLA-based business rules
- Writing automated tests using JUnit
- Managing Java projects using Maven
- Using Git and GitHub for version control
Electronics and Communication Engineering (ECE) student with an interest in Java development, software engineering, IoT, embedded systems, AI, and emerging technologies.
I enjoy building practical, industry-oriented projects that strengthen my understanding of programming, system design, problem-solving, and real-world technology applications.
This project was developed as part of my continuous learning journey and portfolio development.
Contributions, suggestions, and improvements are welcome.
If you would like to contribute:
- Fork the repository.
- Create a new feature branch.
- Make your changes.
- Commit your improvements.
- Push the branch.
- Open a Pull Request.
If you find this project useful or interesting, consider giving the repository a ⭐ Star.
Your support encourages continued learning and development of more practical engineering and software projects.










