JAVA언어를 사용한 미니 프로젝트를 하나 만들어보자라는 생각에 떠올린 프로그램은 자판기 프로그램이다.
내가 생각한 프로그램의 확장 과정은 다음과 같다.
1. 입출력을 이용한 간단한 상호작용 프로그램(print, scanner을 이용하여 문장 주고 받기(?))
2. 배열 및 리스트를 이용하여 재고 개수를 고려한 판매가 이뤄지도록 변경
3. 관리자 접근 기능을 추가하여 재고를 추가할 수 있도록 기능 추가
4. 데이터베이스를 연동시켜 기록되도록 기능 추가(실 자판기가 아니므로 음료의 잔여 개수 등은 저장되어야 판단 가능)
위 과정을 순차적으로 해본 후 어쩌면 비슷할 수도 있고, 확장 기능이 더 많은 POS 시스템을 만들어보려고 한다.
먼저 처음 구성한 프로그램은 다음과 같다. 단일 클래스로 이루어져 있으며, 별다른 메소드 및 필드 없이 메인메소드만 쭉 진행되는 형식이다.
import java.util.*;
public class Main {
public static void main(String[] args) {
int money = 0;
while(true) {
System.out.println("--------------------------------------------------------");
System.out.println("자판기입니다. 돈을 넣고 원하시는 품목을 번호를 입력하십시오.");
System.out.println("1. 콜라(1,200원)");
System.out.println("2. 사이다(1,200원)");
System.out.println("3. 환타(1,100원)");
System.out.println("4. 밀키스(1,100원)");
System.out.println("금액 투입은 +, 거스름을 받으시려면 -를 입력하세요. 현재잔액 " + money + "원");
System.out.println("--------------------------------------------------------");
System.out.print("원하시는 작업을 입력하세요 >> ");
Scanner in = new Scanner(System.in);
String req = in.nextLine();
먼저 메뉴판이 출력되듯 구성하였으며 출력되는 문구를 보고 사용자가 필요한 것을 입력하는 방식이다. 현실에서 돈을 넣는 것은 '+'를 입력하는 것으로, 잔액을 받고 구매를 종료하는 것은 '-'를 입력하는 것으로 하였다.
사용자가 프로그램을 실행시킬 시 '-' 입력이 들어오기 전까지는 메뉴출력과 입력을 계속 받도록 while 무한루프 문으로 구성하였으며 자판기에 투입된 금액은 money라는 변수에 저장시켜 처리되도록 구성하였다.
다음은 실제 사용자의 입력을 받는 부분이다.
if(req.equals("+")) {
System.out.print("얼마를 투입하시겠습니까? >> ");
int put_money = in.nextInt();
money += put_money;
System.out.print("\n\n");
}
else if(req.equals("-")) {
System.out.println(money + "원이 거슬러집니다. 이용해주셔서 감사합니다.");
break;
}
else if(req.equals("1")) {
if(money > 1200) {
System.out.println("콜라가 나옵니다. 상품을 수령해주세요.\n\n");
money -= 1200;
}
else {
System.out.println("잔액이 부족합니다. 돈을 더 투입하십시오.\n\n");
continue;
}
}
사용자의 입력이 들어온 후 처리하는 과정은 크게 4부분으로 구분할 수 있다. 첫번째는 '+'를 입력한 경우, 두번째는 '-'를 입력한 경우, 세번째는 상품번호를 입력한 경우, 마지막으로 보기에는 없는 번호를 입력한 경우이다.
1. 첫번째 '+'를 입력한 경우에는 사용자에게 얼마를 투입할 지(실제에서는 1,000원 단위로 투입하지만...) 물어본 후 입력 받은 금액을 money변수에 증가시킨다.
2. 두번째 '-'를 입력한 경우에는 잔액을 거스른다고 출력한 후 프로그램을 종료시킨다. 이 때 break문을 이용하여 무한루프를 탈출시킬 수 있도록 하였다.
3. 세번째는 상품 번호를 입력 받았을 때이다. 이때는 해당 상품 금액과 잔액을 비교한 후 잔액이 충분하면 나온다는 문구와 함께 잔액 감소를, 충분치 않다면 부족하다는 문구를 출력한 후 무한루프문으로 돌아간다(지금 보니 continue문도 필요 없는데 괜히 넣었다...).
지금 프로그램에선 입력을 1, 2, 3, 4로 구분해서 각 상품을 구분했는데 이후에는 배열 또는 리스트를 이용하여 굳이 else-if문을 과도하게 넣을 필요 없이 하나로 끝낼 수 있도록 바꿔야겠다.
else {
System.out.println("잘못된 번호를 입력하셨습니다. 다시 입력하세요.");
}
4. 마지막으로 '+', '-', 1, 2, 3, 4 외 다른 문구를 입력하였다면 위와 같이 잘못된 문구를 입력하였다는 메세지를 내보낸다.
이렇게 프로그램을 작성하면 다음과 같은 실행결과를 볼 수 있다.
다음 번 수정 때는 상품들을 단순히 출력하고 사용자에게 입력받는 것이 아닌 자료구조를 통해 입/출력하고 if문도 간단하게 바꿔보겠다.
'Language > JAVA' 카테고리의 다른 글
[JAVA] 미니프로젝트 - 자판기 프로그램(2) (0) | 2023.04.09 |
---|---|
[JAVA]요일 계산 프로그램 (0) | 2023.01.20 |
[JAVA]반복문(1) - for문 (0) | 2022.10.01 |
[JAVA]조건문 - if, if-else문 (0) | 2022.09.27 |