JavaSE

28일차_ArrayList 클래스를 이용한 회원 관리_관리자 로그인, 회원 삭제 기능

알 수 없는 사용자 2015. 6. 21. 07:17

-----------------------------------
ArrayList 클래스를 이용한 회원 관리

실행예)
--- 회원 관리(컬렉션 자료구조 사용) ---
1. 회원 가입 (ID, PW, NAME, TEL, EMAIL)
2. 회원 명단 출력 (ID, NAME, TEL, EMAIL)
3. 회원 검색 (ID, NAME, TEL)
4. 관리자 모드 (admin 로그인 필요)
선택(1~4, 0 종료)?1


-------------------------
요구 분석

1. 회원 정보 저장소 -> ArrayList 컬렉션 사용 (크기 자동 관리, null 데이터 제외, size() 메소드)
2. 입력, 출력, 검색, 삭제 기능. 로그인 과정 필요. 예외 처리.
3. 검색은 서브 메뉴 운영. ID, NAME, TEL 기준 제시.
4. 관리자 모드는 로그인 과정을 통해서 회원 삭제 기능 운영.

-------------------------

//Member.java -> 자료형 정의 클래스. ID, PW, NAME, TEL, EMAIL 멤버로 구성.
//MemberDAO.java -> 자료 저장용 객체로서 ArrayList<Member> 클래스 사용. 자료 입출력 액션 메소드. 로그인 메소드.
//MenuAction.java -> 서브 메뉴, 메뉴 액션 클래스.
//Main.java -> 메인 메뉴 구성용 클래스.

-------------------------


//Member.java
package com.test;

//자료형 클래스
public class Member {
 
 //멤버변수, getter, setter
 
 //멤버변수
 //-> 입력, 출력에 관련된 모든 데이터 항목
 //-> ID, PW, NAME, TEL, EMAIL
 private String id, pw, name, tel, email;
 
 //번호(컬렉션 내부의 인덱스) 저장을 위한 멤버 변수 추가
 private int num;
 public int getNum() {
  return num;
 }
 public void setNum(int num) {
  this.num = num;
 }
 
 //등급 저장용 멤버 변수 추가
 //grade -> 관리자 0, 일반 회원 1
 private int grade;
 public int getGrade() {
  return grade;
 }
 public void setGrade(int grade) {
  this.grade = grade;
 }

 //getter, setter
 public String getId() {
  return id;
 }

 public void setId(String id) {
  this.id = id;
 }

 public String getPw() {
  return pw;
 }

 public void setPw(String pw) {
  this.pw = pw;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getTel() {
  return tel;
 }

 public void setTel(String tel) {
  this.tel = tel;
 }

 public String getEmail() {
  return email;
 }

 public void setEmail(String email) {
  this.email = email;
 }
 
 
 //문제)
 //toString() 메소드 오버라이딩 처리
 //ID, NAME, TEL, EMAIL 출력 전용 -> String.format()
 //반환자료형 String
 

}

 

 

//MemberDAO.java
package com.test;

import java.util.*;

public class MemberDAO {
 
 //회원 저장용 저장소 준비
 //-> ArrayList 컬렉션 클래스
 //-> Generic 표현 사용
 private ArrayList<Member> members;
 
 //생성자 준비
 //-> 컬렉션 객체 생성 및 초기화
 public MemberDAO() {
  this.members = new ArrayList<Member>();
  this.init();
 }
 
 private void init() {
  //문제)
  //관리자(admin) 정보 사전 등록->필수
  //샘플 사용자 정보 사전 등록->선택
  //등급(grade) 지정
  //->관리자 0, 일반회원 1
  
  
 }
 
 
 //회원 정보 입력용 메소드 추가
 //->외부에서 전달된 회원 정보(Member 자료형)를 가지고 저장소에 저장하는 액션
 public int add(Member member) {
  int result = 0;

  //문제)
  //저장소(컬렉션)에 저장하는 액션 추가
  //-> 저장된 후에는 결과값 1 반환
  
  return result;
 }
 
 
 //회원 정보 출력용 메소드 추가
 //반환자료형은 회원 정보 전체를 저장(컬렉션 권장)할 수 있는 자료형을 지정한다.
 //회원 정보 전체를 반환하는 경우
 //특정한 항목(ID)을 기준으로 정렬시킨 후 반환하도록 추가
 //->Collections.sort(컬렉션, 정렬기준)
 public ArrayList<Member> list() {
  ArrayList<Member> result;
  
  result = this.members;
  
  //문제) 정렬 액션 추가

  
  
  return result;
 }
 
 //회원 정보 검색 결과용 메소드 추가
 public ArrayList<Member> searchList(String key, String value) {
  ArrayList<Member> result = new ArrayList<Member>();
  
  //문제)
  //key는 검색 기준. 예를 들어 "ID"
  //value는 검색 단어. 예를 들어 "hong"
  //원본 컬렉션인 members 에서 검색 진행
  //검색 결과(Member 객체)만 result 컬렉션에 저장하는 액션
  
  return result;
 }
 
 
 
 //관리자 로그인 액션 메소드
 public boolean adminLogin(String id, String pw) {
  boolean result = false;
  
  //저장소(컬렉션)에 들어있는 id(중복없음), pw, grade(0) 검사
  //관리자가 맞는 경우->true
  //관리자가 아닌 경우->false
  
  return result;
 }
 
 
 
 //회원 정보 삭제용 메소드 추가
 public int remove(int num) {
  int result = 0;
  
  //외부에서 전달받은 번호(컬렉션 내부의 인덱스)를
  //기준으로 삭제 진행
  //->컬렉션에서 특정 요소 삭제
  
  return result;
 }

}

 

 


//MenuAction.java
package com.test;

import java.util.Scanner;

public class MenuAction {
 
 //MemberDAO 클래스의 객체를 멤버변수로 등록
 private MemberDAO dao;
 
 public MenuAction() {
  //멤버변수 dao에 대한 초기화
  this.dao = new MemberDAO();
 }
 
 //1. 회원 가입 (ID, PW, NAME, TEL, EMAIL)
 public void menuInsert(Scanner sc) {
  
  //문제)
  //콘솔 환경에서 외부 데이터 입력.
  //입력 항목->ID, PW, NAME, TEL, EMAIL
  //신규 Member 객체에 입력 데이터를 저장
  //MemberDAO 객체의 add() 메소드 호출
  //"회원정보가 추가되었습니다." 메시지 출력
  
 }
 
 //2. 회원 명단 출력
 public void menuSelect() {
  //문제)
  //저장소로부터 회원 정보 전체를 반환하는 메소드 호출
  //->list()->ArrayList<Member>
  //->컬렉션에 들어있는 회원 정보(Member 자료형-ID, NAME, TEL, EMAIL)를 순차적으로 출력
  //->향상된 for문 이용
  
  
  
 }

 //3. 회원 검색
 public void menuSearch(Scanner sc) {
  //서브메뉴 운영
  do {
   System.out.println("--- 회원 검색 서브 메뉴 ---");
   System.out.println("1. ID");
   System.out.println("2. NAME");
   System.out.println("3. TEL");
   System.out.print("선택(1~3, 0 종료)?");
   int m = sc.nextInt();
   if (m == 0) {
    break;
   }
   
   //문제)
   //1-> ID 기준 검색 액션 -> private 메소드 처리 -> key
   //2-> NAME 기준 검색 액션 -> private 메소드 처리 -> key
   //3-> TEL 기준 검색 액션 -> private 메소드 처리 -> key
   
   
  }while(true);
 }

 //검색 액션 전용 private 메소드
 private void searchList(Scanner sc, String key) {

  //문제)
  //검색 단어(value) 외부 입력
  //검색 액션 메소드 호출 -> MemberDAO 클래스의 검색 메소드 호출 ->key, value

  //결과값은 ArrayList<Member> 자료형
  //->컬렉션에 들어있는 회원 정보(Member 자료형-ID, NAME, TEL, EMAIL)를 순차적으로 출력
  //->향상된 for문 이용
  
  //결과가 없는 경우 "검색 결과가 없습니다." 메시지 출력
  
 }
 
 
 
 //4. 관리자 모드
 public void menuAdmin(Scanner sc) {
  
  //문제)
  //로그인 액션
  //ID(admin), PW 외부 입력
  //->MemberDAO 클래스의 login() 메소드 호출
  //->id, pw 매개변수에 전달
  //->결과가 true인 경우 로그인 성공->삭제 액션 진행->private 메소드
  //->결과가 false인 경우 로그인 실패->예외 발생
  
 }
 
 private void adminDelete(Scanner sc) {
  
  //문제)
  //삭제 액션
  //삭제 대상 검색 진행 -> ID, NAME 기준 -> 서브 메뉴 운영
  //->private 메소드 추가
  
  
  //검색 결과 출력후 삭제 대상 확인 및 삭제 여부 확인
  //->(NAME 기준인 경우) 동명이인 처리
  //->번호(컬렉션 내부의 인덱스) 출력 및 번호 선택 과정 추가
  
  //->삭제는 번호(컬렉션 내부의 인덱스)를 기준으로 삭제 액션 진행.
  //->MemberDAO 클래스에서 remove() 메소드 호출
  //->번호(컬렉션 내부의 인덱스)를 매개변수에 전달
  
  
 }
 
 
}

 

 

 

//Main.java
package com.test;

import java.util.Scanner;

public class Main {

 public static void main(String[] args) {

  //MenuAction 클래스의 객체 생성 과정 추가
  MenuAction menu = new MenuAction();
  Scanner sc = new Scanner(System.in);
  
  do {
   System.out.println("--- 회원 관리(컬렉션 자료구조 사용) ---");
   System.out.println("1. 회원 가입");
   System.out.println("2. 회원 명단 출력");
   System.out.println("3. 회원 검색");
   System.out.println("4. 관리자 모드");
   System.out.print("선택(1~4, 0 종료)?");
   int m = sc.nextInt();
   //문제)
   //0->프로그램 종료
   //1->회원 가입 액션->menuInsert() 메소드 호출
   //2->회원 명단 출력->menuSelect() 메소드 호출
   //3->회원 검색->menuSearch() 메소드 호출
   //4->관리자 모드->menuAdmin() 메소드 호출
   if (m==0) {
    break;
   }
   
   //예외 처리 -> try~catch
   
   
   
  }while(true);
  
  sc.close();
  
  
 }

}

 

 

---------------------------------------
회원관리 관리자 로그인, 회원 삭제 액션 기능 구현