Java Day 17 회원관리 프로그램 구현
23 Dec 2020 | JavaJava Day 17 회원관리 프로그램 구현
-
회원관리 프로그램
-
GUI 없이 DOS창 내에서 회원을 관리하는 프로그램을 구현해보자!
-
기본적으로 이름, 나이, 전화번호, 주소의 데이터를 사용한다. 회원 가입, 정보 수정, 탈퇴, 전체 회원 보기 기능이 있는데 수정과 탈퇴를 위해서는 우선 회원 검색을 해야한다. 회원 정보 수정에서는 전화번호와 주소를 수정 할 수 있다.
-
자 그럼 순서도를 만들자.
-
회원 객체 생성 (이름, 나이, 전화번호, 주소)
-
매니저 객체 생성
- 입력은 BufferedReader와 InputStreamReader를 사용
- 회원을 ArrayList에 넣어 관리
- 시작 메소드로 프로그램 실행 - 메뉴 선택 받아 switch문으로 각 메소드 호출
- 가입 메소드 구현
- 검색 메소드 구현 - index값을 저장
- 정보 수정 메소드 구현 - 메뉴 선택
- 탈퇴 메소드 구현 - 정말 탈퇴? 묻기
- 전체 보기 메소드 구현
- 종료 메소드 구현 - 정말 종료? 묻기
-
Test 클래스의 메인 메소드에서 실행
-
-
-
코딩
-
회원 객체
package kg.eduone.co; public class Customer { //멤버 private String name; private String age; private String tel; private String address; //생성자 public Customer() {} public Customer(String name, String age, String tel, String address) { this.name = name; this.age = age; this.tel = tel; this.address = address; } //메소드 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
-
매니저 객체
package kg.eduone.manage; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import kg.eduone.co.Customer; public class CustomerManager { // 멤버 private boolean isStop; private BufferedReader br; private ArrayList<Customer> member; int index; // 생성자 public CustomerManager() { isStop = false; br = new BufferedReader(new InputStreamReader(System.in)); member = new ArrayList<Customer>(); index = -1; } // 메소드 public void start() throws IOException { while (!isStop) { int menu = -1; // 메뉴판 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("0. 종료 하기"); System.out.print("메뉴 선택 : "); // 입력값이 숫자가 아닐시 리턴 try { menu = Integer.parseInt(br.readLine()); } catch (NumberFormatException nfe) { menu = -1; } System.out.println(); switch (menu) { case 0: stop();break; case 1: addMember();break; case 2: searchMember();break; case 3: updateMember();break; case 4: deleteMember();break; case 5: showAllMember();break; default: System.out.println("올바른 메뉴를 선택하세요"); System.out.println(); break; }// end switch } // end while }// end start public void addMember() throws IOException { // 기본 정보 입력 System.out.print("이름 입력 : "); String name = br.readLine(); System.out.print("나이 입력 : "); String age = br.readLine(); System.out.print("전화 번호 : "); String tel = br.readLine(); System.out.print("주소 입력 : "); String address = br.readLine(); // 입력받은 기본 정보를 갖는 회원 객체 생성 Customer customer = new Customer(name, age, tel, address); // 멤버 리스트에 객체 추가 member.add(customer); System.out.println(); System.out.println("회원가입에 성공하였습니다"); System.out.println(); } public void searchMember() throws IOException { // 검색할 이름 입력 System.out.println("검색할 회원 이름을 입력하세요"); String findName = br.readLine(); index = -1; //리스트를 순회하며 입력값과 동일한 객체의 index를 저장 for (int i = 0; i < member.size(); i++) { Customer customer = (Customer) member.get(i); if (customer.getName().equals(findName)) { index = i; break; } } // end for if (index < 0) { System.out.println(findName + "님은 가입된 회원이 아닙니다"); } else { System.out.println(findName + "님의 검색에 성공하였습니다"); } System.out.println(); } public void updateMember() throws IOException { boolean isLoop = false; int menu = -1; if (index < 0) { System.out.println("회원 검색을 먼저 실행해주세요"); return; } Customer customer = member.get(index); while (!isLoop) { // 메뉴 선택 System.out.println("수정할 메뉴 선택"); System.out.println("1. 전화번호 수정"); System.out.println("2. 주소 수정"); System.out.println("0. 수정 취소"); System.out.print("매뉴 선택 : "); try { menu = Integer.parseInt(br.readLine()); } catch (NumberFormatException e) { menu = -1; } System.out.println(); // 메뉴 구현 switch (menu) { case 1: System.out.print("수정할 전화번호 입력 : "); String tempTel = br.readLine(); customer.setTel(tempTel); System.out.println("전화번호 수정 완료"); System.out.println(); isLoop = false; break; case 2: System.out.print("수정할 주소 입력 : "); String tempAddress = br.readLine(); customer.setAddress(tempAddress); System.out.println("주소 수정 완료"); System.out.println(); isLoop = false; break; case 0: System.out.println("수정을 취소합니다"); System.out.println(); isLoop = true; break; default: System.out.println("올바른 메뉴를 선택하세요"); System.out.println(); isLoop = false; } } // end while } public void deleteMember() throws IOException { if (index < 0) { System.out.println("회원 검색을 먼저 실행해주세요"); return; } Customer customer = member.get(index); System.out.println(customer.getName() + "님의 정보를 삭제하시겠습니까? (y/n)"); String menu = br.readLine(); if (menu.equals("y") || menu.equals("Y")) { System.out.println(customer.getName() + "님의 정보를 성공적으로 삭제하였습니다"); System.out.println(); member.remove(index); index = -1; } else { System.out.println(customer.getName() + "님의 정보 삭제를 취소합니다"); System.out.println(); } } public void showAllMember() { // 멤버 리스트의 회원을 순회하면서 정보 출력 for (int i = 0; i < member.size(); i++) { Customer customer = (Customer) member.get(i); System.out.println((i + 1) + "번 회원"); System.out.println("이름 : " + customer.getName()); System.out.println("나이 : " + customer.getAge()); System.out.println("전화 : " + customer.getTel()); System.out.println("주소 : " + customer.getAddress()); System.out.println(); } // end for } public void stop() throws IOException { System.out.print("정말로 종료하시겠습니까? (y/n)"); String menu = br.readLine(); if (menu.equals("Y") || menu.equals("y")) { isStop = true; } else { System.out.println("종료를 취소합니다"); isStop = false; } }// end stop }
-
Test 클래스
package kg.eduone.manage; import java.io.IOException; public class CustomerTest { public static void main(String[] args) throws IOException { CustomerManager cm = new CustomerManager(); cm.start(); //실행 } }
-
-
실행 화면
-
회원 가입
-
전체 보기
-
회원 검색
-
정보 수정
-
회원 탈퇴
-
종료 하기
-
-
마치며
숙련자의 입장에서는 아주 간단한 프로그램이겠지만 처음 객체지향을 접하고서 마구잡이로(?) 처음 만들었을때는 모듈화도 전혀 안되어있었고 한 클래스에 모든 것을 다 때려넣을려고 했었다.ㅋㅋ
어찌어찌 구동은 됐지만 아주 좋지 않은 코드라는 것을 스스로도 느꼈었다.
수업을 듣고나서 아! 객체지향을 이렇게 사용하는구나 하고 조금은 감을 잡은 후에 다시 도전했다.
다시 처음부터 코딩을 하면서 분리시킬 수 있는 것은 따로 모듈로 나눠서 한 곳에서 조립한다는 느낌이 뭔지 이해가 갔다. 😎
참고 자료
KG아이티뱅크 자바 강의자료