본문 바로가기

자바 수업 정리

수업정리 14일차.

Map

- 값을 2개 쌍으로 저장. key / value 
- key : 중복불가능, value : 중복가능 
- key가 index 대용
- index가 없으면 정렬 X, 중복 X
- HashMap을 가장 많이 사용


Map <클래스,클래스> map = new HashMap<클래스, 클래스>();
- map은 값이 2개이기 때문에 향상된 for문 / iterator 사용불가 
- map => key만 분리 후 set으로 구성 후 출력


- list, set => add() : 추가
- map => put() : 추가
- keySet() : 키를 기준으로 값을 가져오는 것이 가능
- get(key) : key에 해당하는 value를 리턴
- remove(Object key) : key의 값을 삭제하면서 value를 리턴
- remove(Object key, Object value) : true / false 리턴


 

TreeSet = 정렬이 가능한 Set

이진탐색트리 중 레드 블랙트리  ( 값이 들어오면 작으면 왼쪽, 크면 오른쪽으로 배치 )

first() / last() : TreeSet의 가장 앞에있는 값 / 가장 뒤에 있는 값 추출

descendingSet() : 내림차순

headSet(value) : value값 보다 작은값

tailSet(value) : value값 보다 큰 값

 


키오스크만들기

menu
 1.메뉴추가 | 2.메뉴삭제 | 3.메뉴수정(가격) | 4.메뉴보기(전체메뉴보기) | 5.주문 | 6.주문내역출력(영수증) | 7.전체판매내역 | 8.종료

menu Class 생성  (제품ID 제품명 가격)

order Class 생성 Menu 상속해주고 (주문번호 제품ID 제품명 수량 가격 총금액)

SaleController 생성 
Menu List => List<Menu> menu = new ArrayList<>();
Order List => List<Order> order = new ArrayList<>(); 필요

 

public class Menu {

	protected int productID;
	protected String productName;
	protected int price;
	
	public Menu() {
		
	}
	
	
	public Menu(String productName, int price) {
		
		this.productName = productName;
		this.price = price;
	}


	@Override
	public String toString() {
		return "Menu [productName=" + productName + ", price=" + price + "]";
	}

 

 

필요한 요소들 선언해주고 생성자 생성과 toString 구현까지 해줌 처리는 컨트롤러에서 다 할거기때문에 굳이 추가할건없음. getter / setter 는 넣었는데 길어지니 생략

 

public class Order extends Menu {

	private int orderNum;
	private int orderAmount;
	private int salePrice;
	
	public Order() {
		
	}

	public Order(String productName, int price, int orderAmount, int salePrice) {
		super(productName, price);
		this.orderAmount = orderAmount;
		this.salePrice = price * orderAmount;
		
	}
	
	
	

	@Override
	public String toString() {
		return "Order [orderNum=" + orderNum + " productName=" + productName + ", orderAmount=" + orderAmount + ", salePrice=" + salePrice + "]";
	}

 

상속해주고 추가로 필요한 요소들만 선언해줌

똑같이 생성자와 toString을 넣어주고 끝.

 

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

public class SaleController {
	
	private List<Menu> menuList = new ArrayList<>();
	private List<Order> orderList = new ArrayList<>();
	private int cnt;
	private int num;

	public void addMenu(Scanner scan) {
		
		String name = null;
		int price = 0;
		
		System.out.println("제품명과 가격을 입력해주세요.");
		
		name = scan.next();
		price = scan.nextInt();
				
		Menu m = new Menu(name, price);
		
		cnt++;
		
		m.setProductID(cnt);
		
		menuList.add(m);
			
	}

	public void delMenu(Scanner scan) {
		
		String name = null;
		
		boolean have = false;
		
		System.out.println("삭제할 제품명을 입력해주세요.");
		
		name = scan.next();

		
		for(Menu m : menuList) {
			if(m.getProductName().equals(name)) {
				menuList.remove(m);
				have = true;
				break;
			}
		}
		
		
		
		if(have == false) {
			System.out.println(" 삭제할 제품이 존재하지 않습니다.");
		}
		
		
	}

	public void modifyMenu(Scanner scan) {
		
		String modiName = null;
		
		boolean have = false;
		
		
		System.out.println(" 수정할 제품명믈 입력해주세요.");
		
		modiName = scan.next();
		
		
		for(Menu m : menuList) {
			if(m.getProductName().equals(modiName)) {
				System.out.println("수정할 가격을 입력해주세요");
				int modiPrice = scan.nextInt();
				m.setPrice(modiPrice);	
				have = true;
				break;
			}
		}
		
		if(have == false) {
			System.out.println("수정할 제품이 존재하지 않습니다.");
		}
		
	}

	public void printMenu() {
		
		for(Menu m : menuList) {
			System.out.println(m);
		}
		
	}

	public void orderMenu(Scanner scan) {
		
		int num2 = 0;
		String name = null;
		int price = 0;
		int amount = 0;
		int salePrice = 0;
		boolean have = false;

		System.out.println(" 주문 할 제품넘버와, 갯수를 적어주세요 ");

		num2 = scan.nextInt();
		amount = scan.nextInt();

		for (Menu m : menuList) {
			if (m.getProductID() == num2) {
				name = m.getProductName();
				price = m.getPrice();
				have = true;
				break;
			}
		}

		if (have == false) {
			System.out.println(" 찾으신 제품넘버는 존재하지 않습니다.");
		} else {

			salePrice = price * amount;

			Order o = new Order(name, price, amount, salePrice);

			num++;

			o.setOrderNum(num);

			orderList.add(o);
		}
		
		
	}

	public void orderPrint(Scanner scan) {
		
		System.out.println(" 출력할 내역의 주문번호를 입력해주세요 ");
		
		int num2 = 0;
		
		num2 = scan.nextInt();
		
		for(Order o : orderList) {
			if(o.getOrderNum() == num2) {
				System.out.println(o);
			}
		}
		
		
	}

	public void salePrint() {
		
		System.out.println("-- 전체 판매 내역 --");

		for(Order o : orderList) {
			System.out.println(o);
		}
		
	}

 

메뉴리스트와 오더리스트를 구현해줘서 메뉴와 주문을 넣어줄 수 있게함.

cnt와 num은 각각 제품넘버와 오더넘버로 쓸려고 선언함.

메뉴 추가 / 삭제 / 수정 / 출력 구현

 

메뉴 추가는 만들어둔 생성자에 맞게 이름과 가격을 입력받아서 Menu 객체를 생성할 수 있게 해주고 제품넘버를 늘려주면서 메뉴리스트에 추가 할 수 있도록 구현.

 

메뉴 삭제는 삭제할 상품명을 입력받을 수 있게하고, 메뉴리스트안에 향상된 for문을 이용해서 메뉴객체를 하나씩 가져와 안에 contains 를 이용해서 입력한 상품명이 포함되어있으면 삭제할 수있도록 구현.

또, have라는 boolean 변수를 선언해주어 포함되어있다면 ture 아니면 false로 false 라면 삭제 상품이 없을 시 출력구문을 출력

 

메뉴 수정도 메뉴삭제와 동일한구조로 구현, 입력한 이름이 포함되어있다면 setPrice로 수정할 금액을 입력받아 바꿔줄 수 있도록 함.

 

메뉴 출력은 메뉴리스트를 향상된 for문으로 toString만들어둔것으로 출력 할 수 있도록 함.

 

주문 추가 / 각 주문 출력 / 총 주문 출력 

 

주문 추가는 제품 넘버를 입력받아서 메뉴리스트에 제품넘버와 같은 제품이름과 가격을 가져올 수 있도록하고 ,

만들어둔 생성자에 맞게  제품넘버( 제품이름,가격) , 갯수를 입력받고 총금액은 가격 * 갯수로 받을 수 있도록 구현

오더넘버를 늘려주고 오더리스트에 추가해줌.

 

각 주문 출력은 각 주문객체에 있는 고유오더넘버를 비교해서 내가 입력한 오더넘버와 일치하면 출력할 수 있도록 구현

 

총 주문 출력은 향상된 for문을 이용해서 toStirng 만들어둔것으로 출력 할  수 있도록 함.

 

'자바 수업 정리' 카테고리의 다른 글

수업정리 16일차.  (3) 2024.10.14
수업정리 15일차.  (1) 2024.10.11
수업정리 13일차.  (2) 2024.10.08
수업정리 12일차.  (5) 2024.10.07
수업정리 11일차.  (0) 2024.10.04