[JAVA] MINI PROJECT - 은행 새해 선물 관리 프로그램

JoJo·2023년 7월 11일
0
post-custom-banner

💡 개요

은행에서 예금 금액을 기준으로 새해 선물을 확인할 수 있는 프로그램 만들기


💡 예금 금액별 선물

예금 금액선물세트
~ 1000만원 이하참치 선물세트
1000만원 ~ 1억원고급 한과 선물세트
1억원 ~ 10억원홍삼 선물세트
10억원 ~1++ 한우 선물세트

💡 프로그램 메인 메뉴


  1. 고객 정보 입력하기 (이름, 회사, 직급, 연락처, 주소, 예금 금액)

  2. 고객 정보 이름으로 조회하기

  3. 고객 정보 전체 출력하기

  4. 고객 정보 수정하기

  5. 고객 선물 조회하기

  6. 등록 된 고객 정보 삭제하기



✔️ class 소스코드

package com.kh.BankGiftProgram;

public class Member {
	// ===========================> 멤버변수
	// 
	private String name;
	private String company;
	private String position;
	private String phone;
	private String address;
	private long money;
	
	// ===========================> 생성자
	public Member() {}
	public Member(String name, String company, String position, String phone, String address, long money) {
		this.name = name;
		this.company = company;
		this.position = position;
		this.phone = phone;
		this.address = address;
		this.money = money;
	}
	
	// ===========================> 메소드
	
	// getter 메소드
	public String getName() {
		return this.name;
	}
	
	public String getCompany() {
		return this.company;
	}
	
	public String getPosition() {
		return this.position;
	}
	
	public String getPhone() {
		return this.phone;
	}
	
	public String getAddress() {
		return this.address;
	}
	
	public long getMoney() {
		return this.money;
	}
	
	// setter 메소드
	public void setName(String name) {
		this.name = name;
	}
	
	public void setCompany(String company) {
		this.company = company;
	}
	
	public void setPosition(String position) {
		this.position = position;
	}
	
	public void setPhone(String phone) {
		this.phone = phone;
	}
	
	public void setAddress(String address) {
		this.address = address;
	}
	
	public void setMoney(long money) {
		this.money = money;
	}
}

✔️ 메소드 소스코드

package com.kh.BankGiftProgram;

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

public class MemberFunction {
	
	List<Member> memList;
	
	public MemberFunction() {
		memList = new ArrayList<Member>();
	}
	
	// 객체 배열 선언
//	private Member [] memArrs;
	
	// 인덱스 변수 선언
//	static int index;
	
	// 메인 메뉴
	public int printMenu() {
		Scanner sc = new Scanner(System.in);
		System.out.println("=====================================================================================");
		System.out.println("                        [KH은행] 새해 선물 등급 관리 프로그램                        ");
		System.out.println("=====================================================================================");
		System.out.println("1. 고객 정보 입력");
		System.out.println("2. 고객 정보 이름 조회");
		System.out.println("3. 고객 정보 출력");
		System.out.println("4. 고객 정보 수정");
		System.out.println("5. 고객 선물 조회");
		System.out.println("6.고객 정보 삭제");
		System.out.println("0. 종료");
		System.out.print("메뉴 선택 : ");
		int choice = sc.nextInt();
		System.out.println();
		return choice;
	}
	// 고객 정보 입력
	public void  inputInfo() {
		Scanner sc = new Scanner(System.in);
		System.out.println("=====================================================================================");
		System.out.println("                                   고객 정보 입력                                    ");
		System.out.println("=====================================================================================");
		System.out.print("이름 : ");
		String name = sc.next();
		System.out.print("회사 : ");
		String company = sc.next();
		System.out.print("직급 : ");
		String position = sc.next();
		System.out.print("연락처 : ");
		String phone = sc.next();
		System.out.print("주소 : ");
		sc.nextLine();
		String address = sc.nextLine();
		System.out.print("예금 금액 : ");
		int money = sc.nextInt();
		Member member = new Member(name, company, position, phone, address, money);
		memList.add(member);
		System.out.println();
		System.out.println("[서비스 성공] : 입력 성공!");
		System.out.println();
	}
	// 이름으로 고객 정보 조회
	public void searchInfoByName() {
		System.out.println("=====================================================================================");
		System.out.println("                                 고객 정보 이름 조회                                 ");
		System.out.println("=====================================================================================");
		Scanner sc = new Scanner(System.in);
		System.out.println("고객 정보 이름 검색");
		System.out.print("조회할 고객 : ");
		String searchName = sc.next();
		System.out.println();
		for(Member mem : memList) {
			if(mem.getName().equals(searchName)) {
				System.out.printf("이름 : %s\n회사 : %s\n직급 : %s\n연락처 : %s\n주소 : %s \n예금 금액 : %s\n"
						, mem.getName(), mem.getCompany(), mem.getPosition(), mem.getPhone(), mem.getAddress(), mem.getMoney());
				System.out.println();
				System.out.println("[서비스 성공] : 조회 성공!");
				break;
			} else {
				System.out.println("등록되지 않은 고객님입니다. 고객님의 성함을 정확히 입력해주세요.");
				System.out.println();
				System.out.println("[서비스 실패] : 조회 실패!");
				break;
			}
		}
		System.out.println();
	}
	// 고객 전체 정보 출력
	public void printInfo() {
		Scanner sc = new Scanner(System.in);
		System.out.println("=====================================================================================");
		System.out.println("                                    고객 정보 출력                                   ");
		System.out.println("=====================================================================================");
		for(int i = 0; i < memList.size(); i++) {
			System.out.println();
			Member mem = memList.get(i);
			System.out.printf((i+1) + "번째 고객 \n이름 : %s\n회사 : %s\n직급 : %s\n연락처 : %s\n주소 : %s \n예금 금액 : %s\n"
					, mem.getName(), mem.getCompany(), mem.getPosition(), mem.getPhone(), mem.getAddress(), mem.getMoney());
		}
		System.out.println();
		System.out.println("[서비스 성공] : 출력 성공!");
		System.out.println();
	}
	// 고객 정보 이름으로 수정
	public void modifyInfo() {
		Scanner sc = new Scanner(System.in);
		System.out.println("=====================================================================================");
		System.out.println("                                    고객 정보 수정                                   ");
		System.out.println("=====================================================================================");
		System.out.println();
		System.out.print("수정할 고객 이름 입력 : ");
		String Name = sc.next();
		System.out.print("수정할 정보 입력(이름) : ");
		String modName = sc.next();
		System.out.print("수정할 정보 입력(회사) : ");
		String modCompany = sc.next();
		System.out.print("수정할 정보 입력(직급) : ");
		String modPosition = sc.next();
		System.out.print("수정할 정보 입력(연락처) : ");
		String modPhone = sc.next();
		System.out.print("수정할 정보 입력(주소) ");
		sc.nextLine();
		String modAddress = sc.nextLine();
		System.out.print("수정할 정보 입력(예금 금액) : ");
		int modMoney = sc.nextInt();
		Member modMember = new Member(modName, modCompany, modPosition, modPhone, modAddress, modMoney);
		for (int i = 0; i < memList.size(); i++) {
			if(modMember.getName().equals(modName)) {
				memList.set(i, modMember);
				break;
			}
		}
	}
	// 고객 선물 확인
	public void CheckGift() {
		Scanner sc = new Scanner(System.in);
		System.out.println("=====================================================================================");
		System.out.println("                                    고객 선물 조회                                   ");
		System.out.println("=====================================================================================");
		System.out.print("조회할 고객 : ");
		String searchName = sc.next();
		System.out.println();
		for(Member mem : memList) {
			if(mem.getName().equals(searchName)) {
				if(mem.getMoney() <= 10000000) {
					System.out.println(searchName + "님의 2024년 새해 선물은 참치 선물세트입니다.");
				} else if(mem.getMoney() > 10000000 && mem.getMoney() <= 100000000) {
					System.out.println(searchName + "님의 2024년 새해 선물은 고급 한과 선물세트입니다.");
				} else if(mem.getMoney() > 100000000 && mem.getMoney() <= 1000000000) {
					System.out.println(searchName + "님의 2024년 새해 선물은 홍삼 선물세트입니다.");
				} else if(mem.getMoney() > 1000000000) {
					System.out.println(searchName + "님의 2024년 새해 선물은 1++ 한우 선물세트입니다.");
				}
			}
		}
		System.out.println();
		System.out.println("[서비스 성공] : 조회 성공!");
		System.out.println();
	}
	// 등록 된 고객정보 삭제
	public void DeleteInfo() {
		Scanner sc = new Scanner(System.in);
		System.out.println("=====================================================================================");
		System.out.println("                                    고객 정보 삭제                                   ");
		System.out.println("=====================================================================================");
		System.out.print("삭제할 고객 : ");
		String searchName = sc.next();
		System.out.println();
		for(int i = 0; i < memList.size(); i++) {
			Member mem = memList.get(i);
			if(mem.getName().equals(searchName)) {
				memList.remove(i);
				System.out.println("[서비스 성공] : 삭제 성공!");
				break;
			} 
			else {
				System.out.println("등록되지 않은 고객님입니다. 고객님의 성함을 정확히 입력해주세요.");
				System.out.println();
				System.out.println("[서비스 실패] : 삭제 실패!");
				break;
			}
		}
		System.out.println();
	}
	
	public void ShowEnd() {
		System.out.println("프로그램이 종료되었습니다.");
	}
	
	public void WorngChoice() {
		System.out.println("잘못 선택하셨습니다. 메뉴를 다시 선택해주세요.");
	}	
}

✔️ 실행 소스코드

package com.kh.BankGiftProgram;

import java.util.Scanner;

public class MemberRun {
	public static void main(String[] args) {
		int index = 0;
		MemberFunction memFunc = new MemberFunction();
		
		finish :
		while(true) {
			int choice = memFunc.printMenu();
			
			switch(choice) {
				case 1 : 
					memFunc.inputInfo();
					break;
				case 2 : 
					memFunc.searchInfoByName();
					break;
				case 3 : 
					memFunc.printInfo();
					break;
				case 4 : 
					memFunc.modifyInfo();
					break;
				case 5 : 
					memFunc.CheckGift();
					break;
				case 6 : 
					memFunc.DeleteInfo();
					break;
				case 0 : 
					memFunc.ShowEnd();
					break finish;
				default : 
					memFunc.WorngChoice();
					break;
			}
		}
	}

}

📌 문제점

1. 고객 등록 시 중복등록이 가능함
2. 고객 정보 수정, 고객 선물 조회, 고객 정보 삭제 메뉴에서 없는 고객의 정보를 입력했을 때
	다시 입력해달라는 문구를 추가해야하는데, else 문으로 제대로 구현이 안되었음
3. 고객 정보 삭제 시 첫 번째 고객만 삭제 됨

- 파악한 문제점 수정하기!


📌 느낀 점

혼자 하는 프로젝트고, 굉장히 단순한 작업이였지만 그래도 아직 버벅이고 벅찬게 있는것같아서 프로그램 로직을 짜고, 코드를 직접 만들어보는걸 많이 해봐야겠다는 생각을 했습니다.

1. 코드 짜기 전 구제척인 로직 짜기

마감 기한 내에 내가 코드를 다 짤 수 있을까 하는 의심하는 마음에 주제를 정하고 큰 틀을 정한 뒤 일단 코드를 짜기 시작했는데, 중간에 로직을 수정하고 디테일을 넣으려니까 정말 머리가 터지는 줄 알았습니다..!

앞으로 코드 짤 때에는 중간에 수정을 최소화 할 수 있도록 계획을 세우고, 코드를 짤 생각입니다.

2. 메소드 정확히 이해하기

국비 수업 진도가 빠르다보니 메소드의 종류와 사용법을 정확히 이해하지 못하고 넘어갔던게 많아서, 내 프로젝트를 하면서 적용하는게 조금 어려웠습니다.

복습하고, 필요할 시점에 사용할 수 있도록 정리해놔야겠다는 생각이 들어서 프로그램을 MVC 디자인패턴으로 바꿔서 다시 만들어볼건데 작업하면서 사용했던 메소드들을 다시 한번 정리하는 시간을 가질겁니다!

📌 프로그램 수정 계획

오늘 수업시간에 MVC디자인 패턴으로 구조를 나누고 코드를 짜는 연습을 시간했는데, 강사님께서 앞으로 협업과 실전에 나설때 MVC 디자인 패턴으로 코드를 만든다고 말씀해주셔서 일단 제일 먼저 이번에 만든 프로그램을 MVC 디자인 패턴으로 변경해서 코드를 작성해보려고합니다.

github에 계속 커밋하면서 복습해보고, 이번에 만든 은행 새해선물 관리 프로그램에서 사용한 메소드가 많지 않아서 난수를 사용하는 게임 프로그램을 만드려고 생각중에 있습니다!

추가로 만드는 프로그램은 처음부터 MVC 디자인 패턴으로 만들며 복습하면서 구조에 익숙해지려고합니다.

profile
꾸준히
post-custom-banner

0개의 댓글