상세 컨텐츠

본문 제목

고급 자바_0110-1

자바

by 정재화니 2023. 1. 11. 09:08

본문

이전에 만들었던 MYMEMBER테이블을 이용하여 회원관리하는 프로그램을 작성해보겠습니다.


 아래 메뉴의 기능을 모두 구현하시오. (CRUD기능 구현하기)
   메뉴 예시)
   ----------------------
   1. 자료 추가         --> C
   2. 자료 삭제         --> D
   3. 자료 수정         --> U
   4. 전체 자료 출력      --> R
   0. 프로그램 종료.
   ---------------------
   조건
   1) 자료 추가에서 '회원ID'는 중복되지 않는다.(중복되면 다시 입력받는다.)
   2) 자료 삭제는 '회원ID'를 입력 받아서 처리한다.
   3) 자료 수정에서 '회원ID'는 변경되지 않는다.


public class JdbcTest06TT {
   private Scanner scan = new Scanner(System.in);
   
   public static void main(String[] args) {
      new JdbcTest06TT().startMember();
   }
   
   // 시작 메서드
   public void startMember() {
      System.out.println();
      System.out.println("*********************************");
      System.out.println("      회   원   관   리   프   로  그   램");
      System.out.println("*********************************");
      System.out.println();
      
      while(true) {
         int choice = displayMenu();
         switch(choice){
            case 1 :      // 자료 추가 
               insertMember(); break;
            case 2 :       // 자료 삭제
               deleteMember(); break;
            case 3 :       // 자료 수정
               updateMember(); break;
            case 4 :       // 전체 자료 출력
               displayAllMember(); break;
            case 5 :       // 자료 수정2
               updateMember2(); break;               
            case 0 :       // 프로그램 종료
               System.out.println("작업을 마칩니다");
               return;
            default :
               System.out.println("작업 번호를 잘못 입력했습니다. 다시 입력하세요...");
         }
      }
   }
   
   // 회원 정보를 수정하는 메서드 ==> 원하는 항목만 수정하기
   private void updateMember2() {
	   System.out.println();
	      System.out.println("수정할 회원 정보를 입력하세요...");
	      
	      System.out.print("회원ID >> ");
	      String id = scan.next();
	      
	      int count = getMemberCount(id);
	      
	      if(count==0) {  // 없는 회원이면...
	         System.out.println(id + "은(는) 등록되지 않은 회원ID 입니다.");
	         System.out.println("수정 작업을 마칩니다...");
	         return;
	      }
	      
	      String updateFiled = null;	// 수정할 컬럼명이 저장될 변수
	      int num;						// 수정할 컬럼명을 선택할 때 사용할 변수
	      String updateTitle = null;	// 수정할 값을 입력 받을때 나타낼 제목이 저장될 변수
	      
	      do {
	    	  System.out.println();
	    	  System.out.println("수정할 항목을 선택하세요...");
	    	  System.out.println(" 1.비밀번호  2.회원이름  3.전화번호  4.회원주소");
	    	  System.out.println("------------------------------------------------");
	    	  System.out.print(" 수정할 항목 선택 >> ");
	    	  num = scan.nextInt();
	    	  
	    	  switch (num) {
	    	  	case 1: updateFiled = "mem_pass"; updateTitle = "비밀번호";break;
	    	  	case 2: updateFiled = "mem_name"; updateTitle = "회원이름";break;
	    	  	case 3: updateFiled = "mem_tel"; updateTitle = "전화번호";break;
	    	  	case 4: updateFiled = "mem_addr"; updateTitle = "회원주소";break;
	    	  	default : System.out.println("수정할 번호를 잘못 입력했습니다. 다시 입력하세요...");
	    	  }
	    	  
	      }while(num < 1 || num > 4);
	      scan.nextLine(); // 입력 버퍼비우기 
	      System.out.println();
	      System.out.println("수정할 내용을 입력하세요...");
	      System.out.print("새로운 "+ updateTitle + " >> ");
	      String updateData = scan.nextLine();
	      
	      Connection conn = null;
	      PreparedStatement pstmt = null;
	      
	      try {
			conn = DBUtil.getConnection();
			
			String sql = "update mymember set "+ updateFiled +" = ? where mem_id = ? ";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, updateData);
			pstmt.setString(2, id);
			
			int cnt = pstmt.executeUpdate();
			
			if(cnt > 0) {
				System.out.println("수정 작업 성공");
			}else {
				System.out.println("수정 작업 실패");
			}
	    	  
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			 if(pstmt!=null) try { pstmt.close(); } catch(SQLException e) {}
	         if(conn!=null) try { conn.close(); } catch(SQLException e) {}
		}
   }
   
   
   // 전체 회원 정보를 출력하는 메서드
   private void displayAllMember() {
      Connection conn = null;
      Statement stmt = null;
      ResultSet rs = null;
      try {
         System.out.println();
         System.out.println("-----------------------------------------");
         System.out.println(" 회원ID    비밀번호     회원이름    전화번호      회원주소");
         System.out.println("-----------------------------------------");
         
         conn = DBUtil.getConnection();
         String sql = "select * from mymember";
         stmt = conn.createStatement();
         
         rs = stmt.executeQuery(sql);
         
         while(rs.next()) {
            String id = rs.getString("mem_id");
            String pass = rs.getString("mem_pass");
            String name = rs.getString("mem_name");
            String tel = rs.getString("mem_tel");
            String addr = rs.getString("mem_addr");
            
            System.out.println(id + "\t" + pass + "\t" + name + "\t" + tel + "\t" + addr);
            
         }
         System.out.println("-----------------------------------------");
         
      } catch (SQLException e) {
         e.printStackTrace();
      } finally {
         if(rs!=null) try { rs.close(); } catch(SQLException e) {}
         if(stmt!=null) try { stmt.close(); } catch(SQLException e) {}
         if(conn!=null) try { conn.close(); } catch(SQLException e) {}
      }
      
   }
   
   
   // 회원 정보를 수정하는 메서드 ==> 전체 항목 수정하기
   private void updateMember() {
      System.out.println();
      System.out.println("수정할 회원 정보를 입력하세요...");
      
      System.out.print("회원ID >> ");
      String id = scan.next();
      
      int count = getMemberCount(id);
      
      if(count==0) {  // 없는 회원이면...
         System.out.println(id + "은(는) 등록되지 않은 회원ID 입니다.");
         System.out.println("수정 작업을 마칩니다...");
         return;
      }
      
      System.out.println("수정할 내용을 입력하세요...");
      System.out.print("새로운 비밀번호 >> ");
      String newPass = scan.next();
      
      System.out.print("새로운 회원이름 >> ");
      String newName = scan.next();
      
      System.out.print("새로운 전화번호 >> ");
      String newTel = scan.next();
      
      scan.nextLine();
      System.out.print("새로운 회원주소 >> ");
      String newAddr = scan.nextLine();
      
      Connection conn = null;
      PreparedStatement pstmt = null;
      
      try {
         conn = DBUtil.getConnection();
         
         String sql = "update mymember set mem_pass = ?, mem_name = ?, "
               + " mem_tel = ?, mem_addr = ? where mem_id = ?";
         pstmt = conn.prepareStatement(sql);
         pstmt.setString(1, newPass);
         pstmt.setString(2, newName);
         pstmt.setString(3, newTel);
         pstmt.setString(4, newAddr);
         pstmt.setString(5, id);
         
         int cnt = pstmt.executeUpdate();
         
         if(cnt>0){
            System.out.println("수정 작업 성공!!!");
         }else {
            System.out.println("수정 작업 실패~~~");
         }
         
      } catch (SQLException e) {
         e.printStackTrace();
      } finally {
         if(pstmt!=null) try { pstmt.close(); } catch(SQLException e) {}
         if(conn!=null) try { conn.close(); } catch(SQLException e) {}
      }
      
   }
   
   // 회원 정보를 삭제하는 메서드
   private void deleteMember() {
      System.out.println();
      System.out.println("삭제할 회원 정보를 입력하세요...");
      System.out.print("회원ID >> ");
      String id = scan.next();
      
      Connection conn = null;
      PreparedStatement pstmt = null;
      
      try {
         conn = DBUtil.getConnection();
         String sql = "delete from mymember where mem_id = ?";
         pstmt = conn.prepareStatement(sql);
         pstmt.setString(1, id);
         
         int cnt = pstmt.executeUpdate();
         
         if(cnt>0) {
            System.out.println("회원ID가 " + id + "인 회원 정보 삭제 성공!!");
         }else {
            System.out.println("회원ID가 " + id + "인 회원은 없는 회원이거나 삭제에 실패했습니다...");
         }
         
      } catch (Exception e) {
         e.printStackTrace();
      } finally {
         if(pstmt!=null) try { pstmt.close(); } catch(SQLException e) {}
         if(conn!=null) try { conn.close(); } catch(SQLException e) {}
      }
      
   }
   
   
   // 회원 정보를 추가하는 메서드
   private void insertMember() {
      Connection conn = null;
      PreparedStatement pstmt = null;
      
      System.out.println();
      System.out.println("추가할 회원 정보를 입력하세요...");
      int count = 0;      // 회원ID의 개수가 저장될 변수
      String id = null;   // 입력한 회원ID가 저장될 변수
      
      do {
         System.out.print("회원ID >> ");
         id = scan.next();
         count = getMemberCount(id);
         if(count>0) {
            System.out.println("입력한 " + id + "은(는) 이미 등록된 회원ID입니다.");
            System.out.println("다른 회원ID를 입력하세요...");
            System.out.println();
         }
         
      }while(count>0);
      
      System.out.print("비밀번호 >> ");
      String pass = scan.next();
      
      System.out.print("회원이름 >> ");
      String name = scan.next();
      
      System.out.print("전화번호 >> ");
      String tel = scan.next();
      
      scan.nextLine();   // 입력 버퍼 비우기...
      System.out.print("회원주소 >> ");
      String addr = scan.nextLine();
      
      try {
         conn = DBUtil.getConnection();
         
         String sql = "insert into mymember(mem_id, mem_pass, mem_name, mem_tel, mem_addr) "
               + " values(?, ?, ?, ?, ?)";
         pstmt = conn.prepareStatement(sql);
         
         pstmt.setString(1, id);
         pstmt.setString(2, pass);
         pstmt.setString(3, name);
         pstmt.setString(4, tel);
         pstmt.setString(5, addr);
         
         int cnt = pstmt.executeUpdate();
         
         if(cnt>0) {
            System.out.println("회원 등록 성공!!!");
         }else {
            System.out.println("회원 등록 실패~~~");
         }
         
      } catch (SQLException e) {
         e.printStackTrace();
      } finally {
         if(pstmt!=null) try { pstmt.close(); } catch(SQLException e) {}
         if(conn!=null) try { conn.close(); } catch(SQLException e) {}
      }
      
   }  // insertMember메서드 끝...
   
   // '회원ID'를 인수값으로 받아서 해당 '회원ID'의 개수를 반환하는 메서드
   private int getMemberCount(String memid) {
      Connection conn = null;
      PreparedStatement pstmt = null;
      ResultSet rs = null;
      
      int count = 0;    // 반환값이 저장될 변수
      
      try {
         conn = DBUtil.getConnection();
         
         String sql = "select count(*) cnt from mymember where mem_id = ?";
         pstmt = conn.prepareStatement(sql);
         pstmt.setString(1, memid);
         
         rs = pstmt.executeQuery();
         if(rs.next()) {
            count = rs.getInt("cnt");
         }
         
      } catch (SQLException e) {
         e.printStackTrace();
      } finally {
         if(rs!=null) try { rs.close(); } catch(SQLException e) {}
         if(pstmt!=null) try { pstmt.close(); } catch(SQLException e) {}
         if(conn!=null) try { conn.close(); } catch(SQLException e) {}
      }
      
      return count;
   }
   
   // 메뉴를 출력하고 작업번호를 입력 받아 반화하는 메서드
   private int displayMenu() {
      System.out.println();
      System.out.println("----------------");
      System.out.println("1. 자료 추가   ");
      System.out.println("2. 자료 삭제   ");
      System.out.println("3. 자료 수정   ");
      System.out.println("4. 전체 자료 출력");
      System.out.println("5. 자료 수정2   ");
      System.out.println("0. 프로그램 종료.");
      System.out.println("----------------");
      System.out.print("작업 선택 >> ");
      return scan.nextInt();
   }

}

 

'자바' 카테고리의 다른 글

고급 자바_0117-1  (0) 2023.01.17
고급 자바_0111-1  (0) 2023.01.11
고급 자바_0109-1  (0) 2023.01.09
고급 자바_0106-1  (0) 2023.01.06
고급 자바_0105-1  (0) 2023.01.05

관련글 더보기