A lightweight Java console application that manages telecom customer billing, call usage tracking, and revenue analytics with secure role-based access control. Built for learning, quick deployments, and as a foundation for extending into a GUI or web service.
This project provides the core features required by a small telecom project:
- Customer management (create, update, view)
- Call detail record (CDR) tracking and processing
- Bill generation (monthly invoicing) with configurable plans and rates
- Basic revenue and usage analytics (total revenue, top users, usage distribution)
- Secure role-based access (Admin, Manager, User) with permission checks
- Designed using clean separation of concerns (DAO, Service, UI, Models, Utilities)
- Console-driven menu with role-based options
- Normalized data storage (lightweight file-based or JDBC + MySQL option)
- Configurable tariff plans and discounts
- Reports: monthly revenue, top callers, average call duration
- Export bills to plain text or CSV
- Custom exceptions and robust input validation
- Language: Java (8+ compatible)
- Build: Maven (or use simple
javac+javafor small setups) - Persistence: Plain files / JDBC (MySQL) — pluggable DAO layer
- Testing: JUnit (recommended but optional)
src/main/java/
├─ models/ # POJOs: Customer, CallRecord, Bill, Tariff, User, Role
├─ dao/ # Interfaces + implementations (FileDao, JdbcDao)
├─ services/ # Business logic: BillingService, AnalyticsService, AuthService
├─ ui/ # Console menus and input handling
├─ util/ # Helpers: DateUtil, CsvExporter, InputValidator
├─ exceptions/ # Custom exceptions
└─ App.java # Main entry (bootstraps services and UI)
- Java 8+ (JDK)
- Maven (optional, recommended for builds)
- MySQL (optional, only if using JDBC DAO)
# Build
mvn clean packagejava -jar target/telecom-billing-1.0.jar
Run with javac/java (simple)
javac -d out $(find src -name "*.java")
java -cp out com.yourpackage.App
Admin: Full access (manage users, tariffs, run all reports)
Manager: Access analytics, billing run, view and correct invoices
User: View own usage and invoices
Role checks should be enforced by AuthService and validated at each menu/action.
Add an HTTP REST API layer using Spring Boot
Replace file storage with a proper RDBMS or embedded DB (H2)
Add unit and integration tests for billing rules
Add scheduled billing (cron-like) and email notifications
Contributions, bug reports, and suggestions are welcome. Please open an issue or submit a pull request with a clear description of the change and tests if applicable.
