BugDIARY
[JAVA]커피 구매 내역 작성 및 확인 기능 만들기 본문
* 해당하는 작업을 위해 필요한 기능들을 기술(기록용) *
- 커피 구매 내역 작성 기능
- 커피 구매 내역들을 저장하는 기능
- 커피 구매 내역을 출력하는 기능
- 프로그램을 종료
커피 정보를 관리하는 코드
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