이전에 만들었던 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 |