백엔드/Java

Java로 상품 관리 시스템 구현(2)

짱뚱짱 2024. 10. 10. 09:00

상품을 등록하고, 삭제하며, 수정할 수 있는 기능(키오스크 처럼)

 

package day05;

public class Product {
    private int num;
    private String name;
    private int price;
    private static int idx = 0;
    
    public Product() {}
    
    public Product(String name, int price) {
        this.name = name;
        this.price = price;
        idx++;
        this.num = idx;
    }
    
    public void insertProduct(String name, int price) {
        this.name = name;
        this.price = price;
        idx++;
        this.num = idx;
    }
    
    @Override
    public String toString() {
        return num + "." + name + ":" + price;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public int getPrice() {
        return price;
    }
    
    public void setPrice(int price) {
        this.price = price;
    }
}

상품의 정보를 저장. 상품의 번호, 이름, 가격을 멤버변수로 가지고 있으며, 번호는 정적(static) 멤버변수로로 관리.(자동증가)

 

package day05;

import java.util.Scanner;

public class ProductController {
    private Product menu[] = new Product[2];
    private int cnt;

    public void printProduct() {
        if (cnt == 0) {
            System.out.println("등록된 상품이 없습니다.");
            return;
        }
        System.out.println("-- 등록된 상품 리스트 --");
        for (int i = 0; i < cnt; i++) {
            System.out.print(menu[i].toString() + "  ");
        }
        System.out.println();
    }

    public void insertProduct(Scanner scan) {
        if (cnt == menu.length) {
            Product[] tmp = new Product[menu.length + 5];
            System.arraycopy(menu, 0, tmp, 0, cnt);
            menu = tmp;
        }

        System.out.println("상품명 >");
        String name = scan.next();
        System.out.println("가격>");
        int price = scan.nextInt();
        Product p = new Product();
        p.insertProduct(name, price);
        menu[cnt] = p;
        cnt++;
    }

    public void deleteProduct(Scanner scan) {
        System.out.println("삭제할 상품명>");
        String deleteName = scan.next();
        int index = -1;
        for (int i = 0; i < cnt; i++) {
            if (menu[i].getName().equals(deleteName)) {
                index = i;
                break;
            }
        }

        if (index == -1) {
            System.out.println("찾는 상품이 없습니다.");
            return;
        }

        int copyCnt = menu.length - index - 1;
        System.arraycopy(menu, index + 1, menu, index, copyCnt);
        menu[cnt - 1] = null;
        cnt--;
        printProduct();
    }

    public void modifyProduct(Scanner scan) {
        System.out.println("수정할 상품명>");
        String searchName = scan.next();
        for (int i = 0; i < cnt; i++) {
            if (menu[i].getName().equals(searchName)) {
                System.out.println("수정금액>");
                int price = scan.nextInt();
                menu[i].setPrice(price);
                return;
            }
        }
        System.out.println("찾는 상품이 없습니다.");
    }

    public void setMenu(Product[] menu) {
        this.menu = menu;
    }

    public Product[] getMenu() {
        return menu;
    }
}

상품을 등록, 삭제, 수정하고 전체 리스트를 출력하는 컨트롤러

 

package day05;

import java.util.Scanner;

public class ProductMain {
    public static void main(String[] args) {
        ProductController productController = new ProductController();
        Scanner scan = new Scanner(System.in);
        int menu = 0;

        do {
            System.out.println("1.전체 상품리스트 | 2.상품등록 | 3.상품삭제 | 4.상품수정 | 5.종료 ");
            System.out.print("menu > ");
            menu = scan.nextInt();
            switch(menu) {
                case 1: productController.printProduct(); break;
                case 2: productController.insertProduct(scan); break;
                case 3: productController.deleteProduct(scan); break;
                case 4: productController.modifyProduct(scan); break;
                case 5: System.out.println("키오스크 종료!!"); break;
                default: System.out.println("잘못된 메뉴입니다.");
            }
        } while(menu != 5);
        
        scan.close();
    }
}

메뉴를 통해 상품 리스트를 출력, 등록, 삭제, 수정하는 기능을 호출

'백엔드 > Java' 카테고리의 다른 글

Java로 로또 추첨기 만들기  (1) 2024.10.12
Java 인터페이스  (0) 2024.10.11
Java로 상품 관리 시스템 구현(1)  (0) 2024.10.08
Java 추상 클래스(abstract)  (0) 2024.10.08
Java 상속(Extends)  (2) 2024.10.07