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 |