Skip to content
kostenarovPublic

About

Java-based delivery management system with order tracking

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Speedy - Delivery System

A comprehensive Java-based delivery management system designed to handle orders, packages, addresses, and users with role-based access control.

Overview

Speedy is a delivery system that allows users to manage orders and packages for delivery. The system supports user authentication, role-based permissions, order tracking, and package management with different delivery sizes and pricing.

Features

  • User Management

    • User registration and login
    • Role-based access control (Administrator, User)
    • Secure authentication system
  • Order Management

    • Create and manage delivery orders
    • Track order status (CREATED, DELIVERING, DELIVERED)
    • Add multiple packages to a single order
  • Package Management

    • Support for different package sizes (S, M, L, XL)
    • Automatic delivery price calculation based on package size
    • Unique package identification
  • Address Management

    • Store and manage delivery addresses
    • Associate addresses with orders
  • Delivery Operations

    • Assign random orders for delivery
    • Retrieve specific orders for delivery
    • Calculate total delivery costs per order

Project Structure

Speedy/
├── src/
│   ├── main/
│   │   └── java/
│   │       ├── Main.java                 # Main entry point with CLI interface
│   │       ├── DeliverySystem/
│   │       │   └── DeliverySystem.java  # Core delivery system logic
│   │       ├── Order/
│   │       │   ├── Order.java           # Order model
│   │       │   └── Status.java          # Order status enum
│   │       ├── Package/
│   │       │   ├── Package.java         # Package model
│   │       │   └── Size.java            # Package size enum
│   │       └── UserInfo/
│   │           ├── User.java            # User model
│   │           ├── UserDetails.java     # User details
│   │           ├── Role.java            # User role enum
│   │           └── Address.java         # Address model
│   └── test/
│       └── java/
│           └── DeliverySystemTest.java  # Unit tests
└── README.md

Getting Started

Prerequisites

  • Java JDK 11 or higher
  • IntelliJ IDEA (or any Java IDE)

Running the Application

  1. Open the project in your Java IDE
  2. Navigate to Main.java
  3. Run the Main class

The application will display a menu with the following options:

  • 1. Login/Logout - Authenticate or log out from the system
  • 2. Register - Create a new user account (Admin only)
  • 3. Add address - Register a new delivery address
  • 4. Add order - Create a new delivery order
  • 5. Add package to order - Add packages to an existing order
  • 6. Get random order to deliver - Retrieve a random order for delivery
  • 7. Get order to deliver - Retrieve a specific order for delivery
  • 0. Exit - Close the application

Default Admin Account

The system comes with a default administrator account:

  • Username: Admin
  • Password: Admin123

Key Classes

DeliverySystem

The core system class that manages:

  • User authentication and registration
  • Order creation and retrieval
  • Package management
  • Address management
  • Delivery operations

Order

Represents a delivery order containing:

  • Unique order ID
  • Associated address ID
  • Collection of packages
  • Current delivery status
  • Method to calculate total delivery price

Package

Represents a deliverable package with:

  • Unique package ID
  • Package size (S, M, L, XL)
  • Delivery price based on size

User

Represents a system user with:

  • Username and password
  • Role (Administrator or User)
  • Associated addresses and details

Status Codes

Orders can have the following statuses:

  • CREATED - Order has been created but not yet dispatched
  • DELIVERING - Order is currently being delivered
  • DELIVERED - Order has been successfully delivered

Package Sizes

The system supports four package sizes:

  • S - Small
  • M - Medium
  • L - Large
  • XL - Extra Large

Each size has an associated delivery price.

Error Handling

The application provides informative error messages when:

  • Invalid credentials are provided
  • Unauthorized operations are attempted
  • Invalid data is entered
  • System constraints are violated

The application continues running even when errors occur and does not terminate unexpectedly.

Notes

  • All operations require an authenticated user (except login and registration)
  • Only administrators can register new users
  • The system validates all input to ensure data integrity
  • The system is designed to support CSV file storage for persistence (future implementation)

License

This project is provided as-is for educational purposes.

About

Java-based delivery management system with order tracking

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages