BugDIARY

[JAVA]커피 구매 내역 작성 및 확인 기능 만들기 본문

IT/Java

[JAVA]커피 구매 내역 작성 및 확인 기능 만들기

HEMON 2021. 9. 24. 16:02

* 해당하는 작업을 위해 필요한 기능들을 기술(기록용) *

- 커피 구매 내역 작성 기능

- 커피 구매 내역들을 저장하는 기능

- 커피 구매 내역을 출력하는 기능

- 프로그램을 종료

 

커피 정보를 관리하는 코드

package fastCompus;

import java.awt.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class cafeBuyController {
	
	/* 구입한 카페 이름 */
	private String cafeName;
	/* 구입한 사람 이름 */
	private String cafeUser;
	/* 구입한 커피 가격 */
	private Integer coffiePrice;
	
	/* 전체적인 정보를 저장 */
	private HashMap<String, HashMap<String, Integer>> saveUser = new HashMap<>();
	/* 사람 이름에 따라 정보를 저장 */
	private HashMap<String, Integer> userInfo;
	
	/* 구입한 카페 이름에 대한 setter */
	public void setCafeName(String cafeName) {
		this.cafeName = cafeName;
	}
	/* 구입한 카페 이름에 대한 getter. 불필요하므로 주석처리 */
	public String getCafeName() {
		return this.cafeName;
	}
	
	/* 구입한 사람 이름에 대한 setter */
	public void setCafeUser(String cafeUser) {
		this.cafeUser = cafeUser;
	}
	/* 구입한 사람 이름에 대한 getter. 불필요하므로 주석처리 */
	public String getCafeUser() {
		return cafeUser;
	}
	
	/* 구입한 커피 가격에 대한 setter */
	public void setCoffiePrice(Integer coffiePrice) {
		// 커피 가격을 coffiePrice변수에 저장
		this.coffiePrice = coffiePrice;

	}
	/* 구입한 커피 가격에 대한 getter. 불필요하므로 주석처리 */
	public Integer getCoffiePrice() {
		return coffiePrice;
	}
	
	/* 전체 정보를 취득하는 메소드 */
	public void setSaveUser(String cafeName, String cafeUser, int coffiePrice) {
		// userInfo에 유저의 정보를 저장함. user명을 key로, coffie가격을 value로 지정.
		/* 중복 방지를 위해 재정의 */
		userInfo = new HashMap<>();
		
		// user의 정보(user명, coffie가격)를 저장
		userInfo.put(getCafeUser(), getCoffiePrice());
		
		// 카페명과 user를 연결지어 정보(cafe명, user명, coffie가격)를 saveUser이라는 map변수에 저장. 
		this.saveUser.put(this.cafeName,userInfo);
		
	}
	
	public HashMap<String, HashMap<String, Integer>> getSaveUser() {
		return this.saveUser;
	}
}

 

 

메인 코드

package fastCompus;

import java.awt.List;
import java.util.HashMap;
import java.util.Scanner;

public class cafeBuyTest {

	public static void main(String[] args) {
		
		// cafe내역 관리 클래스
		cafeBuyController cafeInput = new cafeBuyController();
		// 사용자의 input을 위해 scan함수를 사용
		Scanner scan = new Scanner(System.in);
		
		while(true) {
			// 계속 반복되어 사용자가 원하는 때에 종료할 수 있도록 while문을 사용. 
			System.out.println("=====================");
			System.out.println("i : 커피 구매내역 작성");
			System.out.println("e : 입력 종료");
			System.out.println("※입력 종료 시, 지금까지의 내역이 출력됩니다.");
			System.out.println("=====================");
			
			// 사용자의 입력을 받는 변수를 정의 
			String userKey = scan.next();
			
			if(userKey.compareTo("e") == 0){
				System.out.println("지금까지의 입력입니다.");
				// for문을 이용하여 map의 정보를 추출한다.
				// 
				for(String key : cafeInput.getSaveUser().keySet()) {
					
					System.out.println("가게명 : " + key);
					for(String k : cafeInput.getSaveUser().get(key).keySet()) {
						System.out.println("구매자 : " + k + "\n가격 : " + cafeInput.getSaveUser().get(key).get(k));
						System.out.println("---------------");
					}
				}
				System.out.println("프로그램을 종료합니다.");
				break;
			}else if(userKey.compareTo("i") != 0){
				System.out.println("잘못된 입력입니다. 다시 입력해주세요");
			}else {
				// 사용자로부터 카페 이름을 입력받음
				System.out.print("카페 이름 : ");
				cafeInput.setCafeName(scan.next());
				// 사용자로부터 구입자 이름을 입력받음
				System.out.print("구입자 : ");
				cafeInput.setCafeUser(scan.next());
				// 사용자로부터 구매 가격을 입력받음
				System.out.print("가격 : ");
				cafeInput.setCoffiePrice(scan.nextInt());
				
				cafeInput.setSaveUser(cafeInput.getCafeName(),cafeInput.getCafeUser(), cafeInput.getCoffiePrice());
			}
		}
	}

}

 

수정이 필요한 부분

- HashMap을 재정의 해도 괜찮은가

- 사용자가 일일히 "i"를 누르지 않고 입력할 수 있는가

'IT > Java' 카테고리의 다른 글

[SpringBoot]뷰 화면 연결  (0) 2023.05.27
[SpringBoot]스프링부트 프로젝트 첫 시작 방법  (0) 2023.05.19
JAVA에서 MariaDB연동  (0) 2021.09.15
CloneCodding - Spring구축(1)  (0) 2021.09.08
Spring구축 중 겪은 에러(기록용)  (0) 2021.08.31
Comments