최적화된 주차 배치는 교통 관리의 혼잡을 크게 완화하는 실용적이고 안전하며 생태적으로 배려하는 솔루션입니다. 이상적으로 계획된 주차 설정은 차량 이동을 줄이고, 공간을 효율적으로 활용하며, 수입을 창출하고, 향상된 사용자 경험을 제공할 수 있는 잠재력을 가지고 있습니다.

자바는 개인이 데이터베이스를 통합하고, 검증 조치를 구현하고, 일상적인 활용에 적합한 그래픽 사용자 인터페이스를 만들어서 나중에 개선할 수 있는 실용적인 주차 관리 시스템을 구축할 수 있는 기회를 제공합니다.

자바를 활용한 주차 시스템 구축 방법

깃허브의 리포지토리에는 자바를 활용한 주차 관리 시스템 구축에 필요한 소스코드가 포함되어 있습니다.

다목적이며 동적으로 크기를 조정할 수 있는 배열인 ArrayList를 활용할 예정입니다. 인덱스를 통해 요소를 조작하고 CRUD 연산을 실행하는 기능 및 기타 기능을 활용할 것입니다. 프로젝트에 ArrayList를 통합하려면 Java 표준 라이브러리에서 클래스를 임포트해야 합니다. 또한 입출력 작업을 처리하기 위해 Scanner 클래스를 임포트합니다. 시스템의 기본 클래스 역할을 할 VehicleParkingSystem이라는 공용 클래스를 만듭니다.

`main()` 함수는 프로그램의 시작점 역할을 하며 코드 실행을 시작하는 역할을 담당합니다. 이 함수 내에서 사용자로부터 입력을 받는 데 사용되는 `Scanner` 클래스의 인스턴스를 생성해야 합니다. Scanner` 객체는 사용자에게 총 주차 공간 수를 입력하라는 메시지를 표시해야 하며, 이 값은 `totalSlots` 변수에 저장됩니다. 또한 사용 가능한 주차 공간의 초기 상태는 총 주차 공간 수와 일치하도록 설정되어야 하므로 `availableSlots`는 `totalSlots` 값으로 초기화되어야 합니다.

 import java.util.ArrayList;
import java.util.Scanner;

public class VehicleParkingSystem {

    static int totalSlots, availableSlots;
    static ArrayList<String> parkedCars = new ArrayList<String>();

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the total number of parking slots in the facility:");
        totalSlots = sc.nextInt();
        availableSlots = totalSlots;

을 눌러 차량을 주차하거나, 차량을 빼거나, 주차된 차량을 보거나, 프로그램을 종료할 수 있습니다. 사용자의 선택에 따라 네 가지 방법 중 어떤 방법을 실행할지 결정됩니다. 사용자가 프로그램을 종료하기로 결정하면 System.exit() 메서드가 사용되어 프로그램 작동이 즉시 종료됩니다.

         while (true) {
            System.out.println("\n What would you like to do?");
            System.out.println("Park a car");
            System.out.println("Remove a car");
            System.out.println("View parked cars");
            System.out.println("Exit");
            int choice = sc.nextInt();

            switch (choice) {
                case 1:
                    parkCar();
                    break;
                case 2:
                    removeCar();
                    break;
                case 3:
                    viewParkedCars();
                    break;
                case 4:
                    System.exit(0);
                default:
                    System.out.println("Invalid choice. Please try again.");
            }
        }
    }

ParkingLot 클래스는 Java에서 주차 공간을 관리하는 효율적인 구현의 예입니다. ParkCar() 메서드는 반환 유형이 없는 공용 정적 메서드로 설계되었습니다. 이 접근 방식을 사용하면 사용자는 반환에 대해 걱정할 필요 없이 같은 프로젝트 내의 다른 클래스나 메서드에서 이 메서드를 간단히 호출할 수 있습니다. ParkCar() 메서드 내부의 첫 번째 단계는 사용 가능한 슬롯이 남아 있는지 확인하는 것입니다.없는 경우 메서드는 인쇄문을 통해 사용자에게 즉시 알린 다음 반환문을 사용하여 종료합니다. 반면에 사용 가능한 슬롯이 남아 있는 경우 시스템은 사용자에게 차량 번호 입력을 요청합니다. 차량 번호가 입력되면 add() 메서드를 사용하여 입력된 문자열을 Car 배열 목록에 추가합니다.

     public static void parkCar() {
        if (availableSlots == 0) {
            System.out.println("Sorry, there are no available parking slots.");
            return;
        }

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the license plate number of the car:");
        String licensePlate = sc.nextLine();
        parkedCars.add(licensePlate);
        availableSlots--;
        System.out.println("Car is parked successfully. The current available slots are: " + availableSlots);
    }

주차된 차량이 있는지 여부를 확인하기 위해 removeCar() 메서드가 정의됩니다. 먼저 사용 가능한 주차 슬롯의 수가 전체 슬롯 수와 일치하는지 확인합니다. 일치하면 주차된 차량이 없음을 표시하고 반환합니다. 하지만 일치하지 않으면 사용자에게 차량 번호 입력을 요청합니다. 그런 다음, 입력된 차량 번호가 포함() 메서드를 사용하여 ArrayList에 존재하는지 여부를 확인합니다.

이 글도 확인해 보세요:  Rust의 제네릭 형식 알아보기

이 작업이 완료되면 remove() 메서드를 사용하여 해당 차량을 ArrayList에서 제거하는 동시에 사용 가능한 주차 공간의 수를 하나(1) 늘립니다. 차량이 제거되었음을 나타내는 알림과 현재 이용 가능한 공간 수가 표시됩니다. 차량 번호를 찾을 수 없는 경우 사용자에게 시설에 차량이 없음을 알리는 메시지가 표시됩니다.

     public static void removeCar() {
        if (availableSlots == totalSlots) {
            System.out.println("There are no parked cars.");
            return;
        }

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the license plate number of the car to be removed:");
        String licensePlate = sc.nextLine();

        if (parkedCars.contains(licensePlate)) {
            parkedCars.remove(licensePlate);
            availableSlots++;
            System.out.println("Car removed successfully. The current available slots are: " + availableSlots);
        } else {
            System.out.println("The car is not parked here.");
        }
    }

viewParkedCars() 메서드는 주차된 차량이 있는지 여부를 확인하는 데 사용됩니다. 차량이 있는 경우, ArrayList의 요소를 순회하는 동봉된 반복 루프를 사용하여 주차된 각 차량의 번호판 번호를 차례로 표시합니다.

     public static void viewParkedCars() {
        if (availableSlots == totalSlots) {
            System.out.println("There are no parked cars.");
            return;
        }

        System.out.println("Parked cars:");

        for (String licensePlate : parkedCars) {
            System.out.println(licensePlate);
        }
    }
}

앞서 설명한 단계를 통해 기능적인 주차 관리 시스템을 배포할 준비가 완료됩니다.

주차 프로그램의 출력 예

차량 주차, 주차된 차량 제거, 현재 주차된 모든 차량 검토 또는 프로그램 종료. 사용자가 첫 번째 옵션을 선택하면 주차하려는 차량의 차량 번호판을 입력해야 하며, 그 후 프로그램에서 사용 가능한 주차 공간이 하나씩 줄어듭니다.

대안 3을 선택하면 최근에 주차한 차량의 등록 번호판을 조회할 수 있습니다. 대안 2를 선택하고 등록 번호판을 입력하면 소프트웨어가 차량을 제거하고 사용 가능한 공간이 하나씩 증가합니다.

기타 구축 가능한 관리 시스템

자바 기반 관리 시스템을 활용하면 데이터베이스 관리, 보안 프로토콜, 시스템 통합 등 다양한 소프트웨어 개발 기술을 습득할 수 있습니다.수행될 수 있는 일부 프로젝트에는 데이터 모델링, 읽기-쓰기 작업, 재고 모니터링 및 주문 이행 프로세스를 탐색할 수 있는 재고 관리 시스템이 포함됩니다.

도서관 관리 시스템은 데이터 구성 및 사용자 인증을 이해하기 위한 목적으로 활용될 수 있습니다. 직원 또는 학생 관리 시스템의 기능은 매우 유사하며 역할 기반 액세스 제어 및 출석 추적과 같은 개념을 익히는 데 유용할 수 있습니다.

By 박준영

업계에서 7년간 경력을 쌓은 숙련된 iOS 개발자인 박준영님은 원활하고 매끄러운 사용자 경험을 만드는 데 전념하고 있습니다. 애플(Apple) 생태계에 능숙한 준영님은 획기적인 솔루션을 통해 지속적으로 기술 혁신의 한계를 뛰어넘고 있습니다. 소프트웨어 엔지니어링에 대한 탄탄한 지식과 세심한 접근 방식은 독자에게 실용적이면서도 세련된 콘텐츠를 제공하는 데 기여합니다.