JAVA ShoppingMall Project

조혜진·2022년 4월 19일
0

java 코딩테스트

목록 보기
5/7

📌 java ShoppingMall Project

📌 쇼핑몰 코드 짜기 전 설계도

📌 관리자 메뉴 클래스

package project;

import java.util.Scanner;

public class Manager {
	
	Scanner sc = new Scanner(System.in);
	
	private boolean start = true; // start라는 변수를 생성해줌으로 써 주문하기 클래스에서도 사용
	// 비밀번호를 int로 설정할 경우 맨앞자리에 0이 들어갔을때 컴퓨터가 인식이 안될수도 있기 때문에 string으로 설정
	final private String PASSWORD = "8520"; // 관리자 메뉴 비밀번호 설정
	

	// getter, setter 생성
	public boolean isStart() {
		return start;
	}

	public void setStart(boolean start) {
		this.start = start;
	}

	public void ManagerShop(){
		while(isStart()) {
			System.out.println("비밀번호를 입력해주세요 : ");
			String num = sc.nextLine(); 
			// 비밀번호가 맞을때
			if(num.equals(PASSWORD)) {
				System.out.println("비밀번호가 일치합니다");
				System.out.println("준비된 수량이 마감되어 오늘 하루 주문을 마감하겠습니다.");
				// 비밀번호가 일치하였을 때 while문 종료
				break;
			// 비밀번호가 틀렸을때	
			}else {
				System.out.println("비밀번호가 불일치합니다 다시 입력바랍니다.");
			}
		}
	}		
}

📌 주문하기 메뉴 클래스

package project;

import java.util.Random;
import java.util.Scanner;

// start 라는 변수를 사용하기 위해 Manager 클래스 상속
public class Order extends Manager {
	
	Scanner sc = new Scanner(System.in);
	// 주문번호를 랜덤으로 받기위한 랜덤메소드 호출
	Random r = new Random();
	
	private int jeanCnt = 0; // 청바지 갯수
	private int outerCnt = 0; // 가디건 갯수
	private int neatCnt = 0; // 니트 갯수
	private int skirtCnt = 0; // 치마갯수
	
	public void OrderShop(){
		
		// 다음 손님을 위한 장바구니 리셋
		jeanCnt = 0; 
		outerCnt = 0; 
		neatCnt = 0; 
		skirtCnt = 0; 
		
	while(isStart()) {
		// 상품번호 설명하는 출력
		System.out.println("원하시는 상품번호를 입력하시면 장바구니에 추가 됩니다");
		System.out.println("1. 청바지 : 15000원");
		System.out.println("2. 가디건 : 25000원");
		System.out.println("3. 니트 : 20000원");
		System.out.println("4. 치마 : 10000원");
		System.out.println("5. 결제하기");
		System.out.println("6. 장바구니 비우기");
		System.out.print("번호 입력 : ");
		
		// 관리자 메뉴에서 nextLine을 사용해야 하기때문에 nextInt가 여기서 쓰이면 문제가 발생할 수 있기 때문에
		// 대신 Integer.parseInt를 사용하여 nextLine을 int타입으로 바꿔주기 
		int choice = Integer.parseInt(sc.nextLine());
		if(choice == 1) {
			jeanCnt++;
			System.out.println("청바지 한개가 추가되었습니다.");
		}else if(choice == 2) {
			outerCnt++;
			System.out.println("가디건 한개가 추가되었습니다.");
		}else if(choice == 3) {
			neatCnt++;
			System.out.println("니트 한개가 추가되었습니다.");
		}else if(choice == 4) {
			skirtCnt++;
			System.out.println("치마 한개가 추가되었습니다.");
		}else if(choice == 5) {
			// 결제하기
			int totalCost = jeanCnt*15000 + outerCnt*25000
					 + neatCnt*20000 + skirtCnt*10000;
			
			System.out.println("총 금액은 " + totalCost + "원 입니다");
			System.out.println("결제를 시작하시겠습니까 ? ");
			System.out.println("1. YES // 2. NO");
			// 결제 여부를 위한 변수선언
			int money = Integer.parseInt(sc.nextLine()); // 위와같은 이유로 Line사용
			
			while(isStart()) {
				if(money == 1) {// 1. YES를 입력했을때
					System.out.println("카드결제 하시려면 카드를 입력하시고, 무통장입금은 무통장입금을 입력해주세요");
					String input = sc.nextLine();
					if(input.equals("카드")) {
						System.out.println("주소를 입력해 주세요 : ");
						String home = sc.nextLine();
						System.out.printf("주문번호는 " + "%06d번 입니다\n", r.nextInt(999999)+1);
						System.out.println(home + "으로 배달 예정입니다 주문해주셔서 감사합니다.");
						return; // 주문이 끝낫으므로 메인메뉴로 이동
						// %06d 는 랜덤 숫자를 6자리로 받기 위해 printf를 사용 
						// r.nextInt(999999)+1 는 0부터가 아닌 1부터의 숫자를 받아오기 위해서 +1을 해줌
					}else if(input.equals("무통장입금")) {
						System.out.println("주소를 입력해 주세요 : ");
						String home = sc.nextLine();
						System.out.printf("주문번호는 " + "%06d번 입니다\n", r.nextInt(999999)+1);
						System.out.println("3333-12-123-1234로 " + totalCost + "원 입금부탁드리겠습니다");
						System.out.println(home + "으로 배달 예정입니다 주문해주셔서 감사합니다.");
						System.out.println("-----------------------------------------------------");
						return;
					}else {
						System.out.println("정확하게 다시 입력해주세요");
						// 주문하기 창으로 돌아가는데 입력칸으로 돌아가려면 생각해보기
					}		
				}if(money == 2){// 2. NO를 입력했을때
					System.out.println("다시 주문화면으로 돌아갑니다");
					break; // 맨처음 while문으로 즉시 간다
				}
			}
		// 장바구니 비우기 	
		}else if(choice == 6) {
			System.out.println("장바구니를 비우겠습니까?");
			System.out.println("1. YES || 2. NO");
			int el = Integer.parseInt(sc.nextLine());
			switch(el) {
				case 1:
					jeanCnt = 0;
					outerCnt = 0;
					neatCnt = 0;
					skirtCnt = 0;
				default:	
			}
		}else {
			System.out.println("다시 입력해주세요."); // 처음 주문란에서 번호 잘못 입력
		}
		// 장바구니
		System.out.println("---------------------------------------");
		System.out.println("==고객님의 장바구니==");
		System.out.println("청바지 : " + jeanCnt + "개 = 총 " + jeanCnt*15000 + "원");
		System.out.println("가디건 : " + outerCnt + "개 = 총 " + outerCnt*25000 + "원");
		System.out.println("니트 : " + neatCnt + "개 = 총 " + neatCnt*20000 + "원");
		System.out.println("치마 : " + skirtCnt + "개 = 총 " + skirtCnt*10000 + "원");
		System.out.println("총 금액 : " + (jeanCnt*15000 + 
				outerCnt*25000 + neatCnt*20000 + skirtCnt*10000 + "원 입니다"));
		System.out.println("---------------------------------------");

	}
	

}
}

📌 메인메뉴 클래스

package project;

import java.util.Scanner;

public class main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		// 주문화면 객체생성 
		Order or = new Order();
		// 관리자메뉴 객체생성
		Manager ma = new Manager();
		
		while(true) {
			System.out.println("===== 메인화면 =====");
			System.out.println("1. 주문하기");
			System.out.println("2. 관리자모드");
			System.out.print("원하시는 번호를 입력하세요 : ");
			
			int choice = Integer.parseInt(sc.nextLine());
			
			if(choice == 1) {
				or.OrderShop();
			}else if(choice == 2) {
				ma.ManagerShop();
				break;
			}else {
				System.out.println("번호를 잘못입력하셧습니다.");
				System.out.println("다시 입력 바랍니다.");
			}
			
		}
	}
	
}

📌 출력 값

👉 주문하기 출력해보기
장바구니에 담고싶은 물건의 각 번호(1~4)를 입력 -> 자동으로 장바구니에 담깁니다. 장바구니를 비우고 싶을땐 6번을 입력 -> 장바구니안에 있는 모든 상품들이 초기화됩니다. 결제하기 5번 입력 -> 카드/무통장입금 중 결제할 수단을 입력 후 주소를 입력하면 자동으로 랜덤 주문번호, 주소, 계좌번호(무통장입금만 해당)이 출력된 후 다시 메인메뉴로 돌아갑니다.

👉 관리자메뉴 출력해보기
미리 설정한 비밀번호인 "8520" 이외의 번호를 입력하였을 때에는비밀번호가 불일치합니다 다시 입력바랍니다 출력 후 , 다시 비밀번호 입력칸으로 돌아가게끔 코드작성을 해보았습니다**

profile
안녕하세요

0개의 댓글