JDBC 직원 관리 프로그램
○ 직원 관리 프로그램을 구현한다.
- 데이터베이스 연동 프로그램으로 작성
- MemberDTO, MemberDAO 를 활용한다.
- 메뉴 구성 및 기능을 구현한다 → Process
실행 예)
=======================
=====[ 직원 관리 ]=====
1. 직원 정보 입력
2. 직원 전체 출력
- 사번 정렬
- 이름 정렬
- 부서 정렬
- 직위 정렬
- 급여 내림차순 정렬
3. 직원 검색 출력
- 사번 검색
- 이름 검색
- 부서 검색
- 직위 검색
4. 직원 정보 수정
5. 직원 정보 삭제
=======================
>> 메뉴 선택(1~5, -1:종료) : 1
직원 정보 입력 ---------------------------------------------------------- (정적인 데이터들이 아님)
이름 : 김정용
주민등록번호(yymmdd-nnnnnn) : 960608-2234567
입사일(yyyy-mm-dd) : 2019-06-08
지역(강원/경기/경남/경북/부산/서울/인천/전남/전북/제주/충남/충북/) : 경기
전화번호 : 010-2731-3153
부서(개발부/기획부/영업부/인사부/자재부/총무부/홍보부/) : 개발부
직위 (사장/전무/상무/이사/부장/차장/과장/대리/사원/) : 대리
기본급(최소 1800000 이상) : 5000000
수당 : 2000000
직원 정보 입력 완료
---------------------------------------------------------- 직원 정보 입력
=====[ 직원 관리 ]=====
1. 직원 정보 입력
2. 직원 전체 출력
- 사번 정렬
- 이름 정렬
- 부서 정렬
- 직위 정렬
- 급여 내림차순 정렬
3. 직원 검색 출력
- 사번 검색
- 이름 검색
- 부서 검색
- 직위 검색
4. 직원 정보 수정
5. 직원 정보 삭제
=======================
>> 메뉴 선택(1~5, -1:종료) : 2
1. 사번 정렬
2. 이름 정렬
3. 부서 정렬
4. 직위 정렬
5. 급여 내림차순 정렬
>> 선택(1~5, -1:종료) : -1
=====[ 직원 관리 ]=====
1. 직원 정보 입력
2. 직원 전체 출력
- 사번 정렬
- 이름 정렬
- 부서 정렬
- 직위 정렬
- 급여 내림차순 정렬
3. 직원 검색 출력
- 사번 검색
- 이름 검색
- 부서 검색
- 직위 검색
4. 직원 정보 수정
5. 직원 정보 삭제
=======================
>> 메뉴 선택(1~5, -1:종료) : 2
1. 사번 정렬
2. 이름 정렬
3. 부서 정렬
4. 직위 정렬
5. 급여 내림차순 정렬
>> 선택(1~5, -1:종료) : 1
전체 인원 : xx명
사번 이름 주민번호 입사일 지역 전화번호 부서 직위 기본급 수당 급여
1001
1002
1003
: ...
1060
=====[ 직원 관리 ]=====
1. 직원 정보 입력
2. 직원 전체 출력
- 사번 정렬
- 이름 정렬
- 부서 정렬
- 직위 정렬
- 급여 내림차순 정렬
3. 직원 검색 출력
- 사번 검색
- 이름 검색
- 부서 검색
- 직위 검색
4. 직원 정보 수정
5. 직원 정보 삭제
=======================
>> 메뉴 선택(1~5, -1:종료) : 3
1. 사번 검색
2. 이름 검색
3. 부서 검색
4. 직위 검색
>> 선택(1~4, -1:종료) : 1
검색할 사번 입력 : ...
=====[ 직원 관리 ]=====
1. 직원 정보 입력
2. 직원 전체 출력
- 사번 정렬
- 이름 정렬
- 부서 정렬
- 직위 정렬
- 급여 내림차순 정렬
3. 직원 검색 출력
- 사번 검색
- 이름 검색
- 부서 검색
- 직위 검색
4. 직원 정보 수정
5. 직원 정보 삭제
=======================
>> 메뉴 선택(1~5, -1:종료) : -1
프로그램이 종료되었습니다.
DBConn.java
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBConn
{
private static Connection dbConn;
public static Connection getConnection()
{
if (dbConn == null)
{
try
{
String url = "jdbc:oracl:thin:@localhost:1521:xe";
String user = "scott";
String pwd = "tiger";
Class.forName("oracle.jdbc.driver.OracleDriver");
dbConn = DriverManager.getConnection(url, user, pwd);
} catch (Exception e)
{
System.out.println(e.toString());
}
}
return dbConn;
}
public static Connection getConnection(String url, String user, String pwd)
{
if (dbConn == null)
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
dbConn = DriverManager.getConnection(url, user, pwd);
} catch (Exception e)
{
System.out.println(e.toString());
}
}
return dbConn;
}
public static void close()
{
if (dbConn != null)
{
try
{
if (!dbConn.isClosed())
{
dbConn.close();
}
} catch (Exception e)
{
System.out.println(e.toString());
}
}
dbConn = null;
}
}
MemberDTO
/*
EMP_ID NOT NULL NUMBER(5)
EMP_NAME VARCHAR2(30)
SSN CHAR(14)
IBSADATE DATE
CITY_ID NUMBER(5)
TEL VARCHAR2(20)
BUSEO_ID NUMBER(5)
JIKWI_ID NUMBER(5)
BASICPAY NUMBER(10)
SUDANG NUMBER(10)
*/
package com.test;
public class MemberDTO
{
// 주요 속성 구성
//-- 사번, 이름, 주민번호, 입사일, 지역, 전화번호
// , 부서, 직위, 기본급, 수당, 급여
private int empId, basicPay, sudang, pay;
private String empName, ssn, cityName, tel, buseoName, jikwiName;
private String ibsaDate;
// ※ 입사일은 오라클에서는 날짜 형식으로 처리되지만 자바에서는 문자열로 구성하는게 일반적
// getter / setter 구성
public int getEmpId()
{
return empId;
}
public void setEmpId(int empId)
{
this.empId = empId;
}
public int getBasicPay()
{
return basicPay;
}
public void setBasicPay(int basicPay)
{
this.basicPay = basicPay;
}
public int getSudang()
{
return sudang;
}
public void setSudang(int sudang)
{
this.sudang = sudang;
}
public int getPay()
{
return pay;
}
public void setPay(int pay)
{
this.pay = pay;
}
public String getEmpName()
{
return empName;
}
public void setEmpName(String empName)
{
this.empName = empName;
}
public String getSsn()
{
return ssn;
}
public void setSsn(String ssn)
{
this.ssn = ssn;
}
public String getCityName()
{
return cityName;
}
public void setCityName(String cityName)
{
this.cityName = cityName;
}
public String getTel()
{
return tel;
}
public void setTel(String tel)
{
this.tel = tel;
}
public String getBuseoName()
{
return buseoName;
}
public void setBuseoName(String buseoName)
{
this.buseoName = buseoName;
}
public String getJikwiName()
{
return jikwiName;
}
public void setJikwiName(String jikwiName)
{
this.jikwiName = jikwiName;
}
public String getIbsaDate()
{
return ibsaDate;
}
public void setIbsaDate(String ibsaDate)
{
this.ibsaDate = ibsaDate;
}
}
MemberDAO
- 데이터베이스 액션 처리 전용 클래스
package com.test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import com.util.DBConn;
public class MemberDAO
{
//주요 속성 구성
private Connection conn;
// 데이터베이스 연결
public Connection connection()
{
conn = DBConn.getConnection();
return conn;
}
// 데이터베이스 연결 종료
public void close()
{
DBConn.close();
}
// 직원 데이터 입력
public int add(MemberDTO dto) throws SQLException
{
int result = 0;
Statement stmt = conn.createStatement();
String sql = String.format("INSERT INTO TBL_EMP"
+ "(EMP_ID, EMP_NAME, SSN, IBSADATE, CITY_ID"
+ ", TEL, BUSEO_ID, JIKWI_ID, BASICPAY, SUDANG)"
+ " VALUES(EMPSEQ.NEXTVAL, '%s', '%s', TO_DATE('%s', 'YYYY-MM-DD')"
+ ", (SELECT CITY_ID FROM TBL_CITY WHERE CITY_NAME='%s')"
+ ", '%s'"
+ ", (SELECT BUSEO_ID FROM TBL_BUSEO WHERE BUSEO_NAME='%s')"
+ ", (SELECT JIKWI_ID FROM TBL_JIKWI WHERE JIKWI_NAME='%s')"
+ ", %d, %d)"
, dto.getEmpName(), dto.getSsn(), dto.getIbsaDate()
, dto.getCityName(), dto.getTel(), dto.getBuseoName(), dto.getJikwiName()
, dto.getBasicPay(), dto.getSudang());
result = stmt.executeUpdate(sql);
stmt.close();
return result;
}//end add()
//전체 직원 수 조회
public int memberCount() throws SQLException
{
int result = 0;
Statement stmt = conn.createStatement();
String sql = "SELECT COUNT(*) AS COUNT FROM TBL_EMP";
// 쿼리문 실행 (select) -> executeQuery -> ResultSet 반환
ResultSet rs = stmt.executeQuery(sql);
// ResultSet 처리 -> 반복문 구성(단일값의 경우 if 문도 가능)
while (rs.next())
result = rs.getInt("COUNT");
//리소스반납
rs.close();
stmt.close();
return result;
}// end memberCount
// 검색 결과 직원 수 조회(메소드오버로딩)
// EMP_ID = 1001; -> key:EMP_ID / value:1001
// EMP_NAME = '이호석'; -> key:EMP_NAME / value:'이호석'
// BUSEO_NAME = '개발부'; -> key:BUSEO_NAME / value:'개발부'
// JIKWI_NAME = '대리'; -> key:JIKWI_NAME / value:'대리'
public int memberCount(String key, String value) throws SQLException
{
int result = 0;
Statement stmt = conn.createStatement();
String sql = "";
if (key.equals("EMP_ID"))
{
sql = String.format("SELECT COUNT(*) AS COUNT FROM EMPVIEW WHERE %s = %s", key, value);
}
else
{
sql = String.format("SELECT COUNT(*) AS COUNT FROM EMPVIEW WHERE %s = '%s'", key, value);
}
ResultSet rs = stmt.executeQuery(sql);
while (rs.next())
{
result = rs.getInt("COUNT");
}
return result;
}//end memberCount()
// 직원 데이터 전체 조회 (사번/이름/부서/직위/급여내림차순)
public ArrayList<MemberDTO> lists(String key) throws SQLException
{
//반환할 결과값 선언 및 초기화
ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
Statement stmt = conn.createStatement();
String sql = String.format("SELECT EMP_ID, EMP_NAME, SSN, IBSADATE"
+ ", CITY_NAME, TEL, BUSEO_NAME, JIKWI_NAME, BASICPAY"
+ ", SUDANG, PAY"
+ " FROM EMPVIEW"
+ " ORDER BY %s", key);
ResultSet rs = stmt.executeQuery(sql);
while (rs.next())
{
MemberDTO dto = new MemberDTO();
dto.setEmpId(rs.getInt("EMP_ID"));
dto.setEmpName(rs.getString("EMP_NAME"));
dto.setSsn(rs.getString("SSN"));
dto.setIbsaDate(rs.getString("IBSADATE"));
dto.setCityName(rs.getString("CITY_NAME"));
dto.setTel(rs.getString("TEL"));
dto.setBuseoName(rs.getString("BUSEO_NAME"));
dto.setJikwiName(rs.getString("JIKWI_NAME"));
dto.setBasicPay(rs.getInt("BASICPAY"));
dto.setSudang(rs.getInt("SUDANG"));
dto.setPay(rs.getInt("PAY"));
result.add(dto);
}
rs.close();
stmt.close();
//최종 결과값 반환
return result;
}
// 직원 데이터 검색 조회(사번/이름/부서/직위)
public ArrayList<MemberDTO> searchLists(String key, String value) throws SQLException
{
ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
Statement stmt = conn.createStatement();
String sql = "";
if (key.equals("EMP_ID"))
{
sql = String.format("SELECT EMP_ID, EMP_NAME, SSN, IBSADATE"
+ ", CITY_NAME, NVL(TEL, '번호없음') AS TEL"
+ ", BUSEO_NAME, JIKWI_NAME"
+ ", BASICPAY, SUDANG, PAY"
+ " FROM EMPVIEW"
+ " WHERE %s=%s"
, key, value); // %s → 사번
} else
{
sql = String.format("SELECT EMP_ID, EMP_NAME, SSN, IBSADATE"
+ ", CITY_NAME, NVL(TEL, '번호없음') AS TEL"
+ ", BUSEO_NAME, JIKWI_NAME"
+ ", BASICPAY, SUDANG, PAY"
+ " FROM EMPVIEW"
+ " WHERE %s='%s'"
, key, value); //'%s' → 사번을 제외한 이름 부서 직위는 문자열이므로
}
ResultSet rs = stmt.executeQuery(sql);
while (rs.next())
{
MemberDTO dto = new MemberDTO();
dto.setEmpId(rs.getInt("EMP_ID"));
dto.setEmpName(rs.getString("EMP_NAME"));
dto.setSsn(rs.getString("SSN"));
dto.setIbsaDate(rs.getString("IBSADATE"));
dto.setCityName(rs.getString("CITY_NAME"));
dto.setTel(rs.getString("TEL"));
dto.setBuseoName(rs.getString("BUSEO_NAME"));
dto.setJikwiName(rs.getString("JIKWI_NAME"));
dto.setBasicPay(rs.getInt("BASICPAY"));
dto.setSudang(rs.getInt("SUDANG"));
dto.setPay(rs.getInt("PAY"));
result.add(dto);
}
rs.close();
stmt.close();
return result;
}// end searchLists()
// 지역 리스트 조회 반환하는 값 : 지역"들" 이므로 arraylist
public ArrayList<String>searchCity() throws SQLException
{
ArrayList<String> result = new ArrayList<String>();
Statement stmt = conn.createStatement();
String sql = "SELECT CITY_NAME FROM TBL_CITY";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next())
{
result.add(rs.getString("CITY_NAME"));
}
rs.close();
stmt.close();
return result;
}
// 부서 리스트 조회
public ArrayList<String> searchBuseo() throws SQLException
{
ArrayList<String> result = new ArrayList<String>();
Statement stmt = conn.createStatement();
String sql = "SELECT BUSEO_NAME FROM TBL_BUSEO";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next())
{
result.add(rs.getString("BUSEO_NAME"));
}
rs.close();
stmt.close();
return result;
}
// 직위 리스트 조회
public ArrayList<String> searchjikwi() throws SQLException
{
ArrayList<String> result = new ArrayList<String>();
Statement stmt = conn.createStatement();
String sql = "SELECT JIKWI_NAME FROM TBL_JIKWI";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next())
{
result.add(rs.getString("JIKWI_NAME"));
}
rs.close();
stmt.close();
return result;
}
// 직위에 따른 최소 기본급 검색
public int searchBasicPay(String jikwi) throws SQLException // 직위를 넘겨주면 금액을 반환
{
int result = 0;
Statement stmt = conn.createStatement();
String sql = String.format("SELECT MIN_BASICPAY FROM TBL_JIKWI WHERE JIKWI_NAME ='%s'", jikwi);
ResultSet rs = stmt.executeQuery(sql);
while (rs.next())
{
result = rs.getInt("MIN_BASICPAY");
}
rs.close();
stmt.close();
return result;
}
// 직원 데이터 수정
public int modify(MemberDTO dto) throws SQLException
{
int result = 0;
Statement stmt = conn.createStatement();
String sql = String.format("UPDATE TBL_EMP SET EMP_NAME='%s'"
+ ", SSN='%s'"
+ ", IBSADATE=TO_DATE('%s', 'YYYY-MM-DD')"
+ ", CITY_ID=(SELECT CITY_ID FROM TBL_CITY WHERE CITY_NAME='%s')"
+ ", TEL = '%s'"
+ ", BUSEO_ID=(SELECT BUSEO_ID FROM TBL_BUSEO WHERE BUSEO_NAME='%s')"
+ ", JIKWI_ID=(SELECT JIKWI_ID FROM TBL_JIKWI WHERE JIKWI_NAME='%s')"
+ ", BASICPAY=%d"
+ ", SUDANG=%d"
+ " WHERE EMP_ID = %d"
, dto.getEmpName(), dto.getSsn(), dto.getIbsaDate()
, dto.getCityName(), dto.getTel(), dto.getBuseoName()
, dto.getJikwiName(), dto.getBasicPay(), dto.getSudang()
, dto.getEmpId());
result = stmt.executeUpdate(sql);
stmt.close();
return result;
}// end modify()
// 직원 데이터 삭제
public int remove(int empId) throws SQLException
{
int result = 0;
Statement stmt = conn.createStatement();
String sql = String.format("DELETE FROM TBL_EMP WHERE EMP_ID = %d", empId);
result = stmt.executeUpdate(sql);
stmt.close();
return result;
}//end remove()
}
MemberProcess.java
- 콘솔 기반 서브 메뉴 입출력 전용 클래스
package com.test;
import java.util.ArrayList;
import java.util.Scanner;
public class MemberProcess
{
// 주요 속성 구성
private MemberDAO dao;
// 생성자 정의
public MemberProcess()
{
dao = new MemberDAO();
}
// 직원 정보 입력 메소드 정의
public void memberInsert()
{
Scanner sc = new Scanner(System.in);
try
{
//데이터베이스 연결
dao.connection();
// 지역 리스트 구성
ArrayList<String> citys = dao.searchCity();
StringBuilder cityStr = new StringBuilder();
for (String city : citys)
{
cityStr.append(city + "/");
// "강원/경기/경남/경북/부산/서울/인천/전남/전북/제주/충남/충북/"
}
// 부서 리스트 구성
ArrayList<String> buseos = dao.searchBuseo();
StringBuilder buseoStr = new StringBuilder();
for (String buseo : buseos)
{
buseoStr.append(buseo + "/");
// "개발부/기획부/영업부/인사부/자재부/총무부/홍보부/"
}
// 직위 리스트 구성
ArrayList<String> jikwis = dao.searchjikwi();
StringBuilder jikwiStr = new StringBuilder();
for (String jikwi : jikwis)
{
jikwiStr.append(jikwi + "/");
// "사장/전무/상무/이사/부장/차장/과장/대리/사원/"
}
// 위의 것들을 가지고 난 다음에야 사용자에게 보여지는 화면 처리가 가능해짐
// 사용자에게 보여지는 화면 처리
System.out.println();
System.out.println("직원 정보 입력 ----------------------------------------------------------");
System.out.print("이름 : ");
String empName = sc.next();
System.out.print("주민등록번호(yymmdd-nnnnnn) : ");
String ssn = sc.next();
System.out.print("입사일(yyyy-mm-dd) : ");
String ibsaDate = sc.next();
System.out.printf("지역(%s) : ", cityStr.toString());
String cityName = sc.next();
System.out.print("전화번호 : ");
String tel = sc.next();
System.out.printf("부서(%s) : ", buseoStr.toString());
String buseoName = sc.next();
System.out.printf("직위 (%s) : ", jikwiStr.toString());
String jikwiName = sc.next();
System.out.printf("기본급(최소 %d원 이상) : ", dao.searchBasicPay(jikwiName));
int basicPay = sc.nextInt();
System.out.print("수당 : ");
int sudang = sc.nextInt();
System.out.println("");
MemberDTO dto = new MemberDTO();
dto.setEmpName(empName);
dto.setSsn(ssn);
dto.setIbsaDate(ibsaDate);
dto.setCityName(cityName);
dto.setTel(tel);
dto.setBuseoName(buseoName);
dto.setJikwiName(jikwiName);
dto.setBasicPay(basicPay);
dto.setSudang(sudang);
int result = dao.add(dto);
if (result > 0)
{
System.out.println("직원 정보 입력 완료");
}
System.out.println("---------------------------------------------------------- 직원 정보 입력");
} catch (Exception e)
{
System.out.println(e.toString());
}
finally
{
try
{
dao.close();
} catch (Exception e)
{
System.out.println(e.toString());
}
}
} // end memberInsert()
// 직원 전체 출력 메소드 정의
public void memberLists()
{
Scanner sc = new Scanner(System.in);
// 서브 메뉴 출력(안내)
System.out.println("");
System.out.println("1. 사번 정렬"); // EMP_ID
System.out.println("2. 이름 정렬"); // EMP_NAME
System.out.println("3. 부서 정렬"); // BUSEO_NAME
System.out.println("4. 직위 정렬"); // JIKWI_NAME
System.out.println("5. 급여 내림차순 정렬"); // PAY DESC
System.out.print(">> 항목 선택(1~5, -1:종료) : ");
String menuStr = sc.next();
try
{
int menu = Integer.parseInt(menuStr);
if (menu == -1)
{
return; // MemberProcess 종료
}
String key = "";
switch (menu)
{
case 1:
key = "EMP_ID";
break;
case 2:
key = "EMP_NAME";
break;
case 3:
key = "BUSEO_NAME";
break;
case 4:
key = "JIKWI_NAME";
break;
case 5:
key = "PAY DESC";
break;
default:
break;
}
dao.connection();
System.out.println();
System.out.printf("전체 인원 : %d명\n", dao.memberCount());
System.out.println("사번 이름 주민번호 입사일 지역 전화번호 부서 직위 기본급 수당 급여");
ArrayList<MemberDTO> memList = dao.lists(key); // 전체인원 출력을 위한 memList 변수 선언
for (MemberDTO dto : memList)
{
System.out.printf("%5d %4s %14s %10s %4s %12s %4s %3s %8d %8d %8d\n"
, dto.getEmpId(), dto.getEmpName(), dto.getSsn(), dto.getIbsaDate(), dto.getCityName(), dto.getTel(), dto.getBuseoName()
, dto.getJikwiName(), dto.getBasicPay(), dto.getSudang(), dto.getPay());
}
} catch (Exception e)
{
System.out.println(e.toString());
}
finally
{
try
{
dao.close();
} catch (Exception e)
{
System.out.println(e.toString());
}
}
} // end memberLists()
// 직원 검색 출력 메소드 정의
public void memberSearch()
{
Scanner sc = new Scanner(System.in);
// 서브 메뉴 구성
System.out.println();
System.out.println("1. 사번 검색"); // EMP_ID
System.out.println("2. 이름 검색"); // EMP_NAME
System.out.println("3. 부서 검색"); // BUSEO_NAME
System.out.println("4. 직위 검색"); // JIKWI_NAME
System.out.print(">> 항목 선택(1~4, -1:종료) : ");
String menuStr = sc.next();
try
{
int menu = Integer.parseInt(menuStr); // int 형태가 아니라면 예외처리
if (menu == -1)
{
return;
}
String key = "";
String value = "";
switch (menu)
{
case 1:
key = "EMP_ID";
System.out.print("검색할 사원번호 입력 : ");
value = sc.next();
break;
case 2:
key = "EMP_NAME";
System.out.print("검색할 이름 입력 : ");
value = sc.next();
break;
case 3:
key = "BUSEO_NAME";
System.out.print("검색할 부서 입력 : ");
value = sc.next();
break;
case 4:
key = "JIKWI_NAME";
System.out.print("검색할 직위 입력 : ");
value = sc.next();
break;
}
// 데이터베이스 연결
dao.connection();
// 검색 결과 출력
System.out.println();
System.out.printf("검색 인원 : %d\n", dao.memberCount(key, value));
System.out.println(" 사번 이름 주민번호 입사일 지역 전화번호 부서 직위 기본급 수당 급여");
ArrayList<MemberDTO> memList = dao.searchLists(key, value);
for (MemberDTO dto : memList)
{
System.out.printf("%5d %4s %14s %10s %4s %12s %4s %3s %8d %8d %8d\n"
, dto.getEmpId(), dto.getEmpName(), dto.getSsn(), dto.getIbsaDate(), dto.getCityName(), dto.getTel(), dto.getBuseoName()
, dto.getJikwiName(), dto.getBasicPay(), dto.getSudang(), dto.getPay());
}
} catch (Exception e)
{
System.out.println(e.toString());
}
finally
{
try
{
dao.close();
} catch (Exception e)
{
System.out.println(e.toString());
}
}
} // end memberSearch
// 직원 정보 수정 메소드 정의
public void memberUpdate()
{
Scanner sc = new Scanner(System.in);
try
{
// 수정할 대상 입력받기
System.out.print("수정할 직원의 사원번호 입력 : ");
String value = sc.next();
// 데이터베이스 연결
dao.connection();
ArrayList<MemberDTO> memList = dao.searchLists("EMP_ID", value);
if (memList.size() > 0)
{
// 수정 대상을 찾은 경우
// 지역 리스트 구성
ArrayList<String> citys = dao.searchCity();
StringBuilder cityStr = new StringBuilder();
for (String city : citys)
{
cityStr.append(city + "/");
// "강원/경기/경남/경북/부산/서울/인천/전남/전북/제주/충남/충북/"
}
// 부서 리스트 구성
ArrayList<String> buseos = dao.searchBuseo();
StringBuilder buseoStr = new StringBuilder();
for (String buseo : buseos)
{
buseoStr.append(buseo + "/");
// "개발부/기획부/영업부/인사부/자재부/총무부/홍보부/"
}
// 직위 리스트 구성
ArrayList<String> jikwis = dao.searchjikwi();
StringBuilder jikwiStr = new StringBuilder();
for (String jikwi : jikwis)
{
jikwiStr.append(jikwi + "/");
// "사장/전무/상무/이사/부장/차장/과장/대리/사원/"
}
// 사용자에게 보여지는 화면 처리
/*
직원 정보 수정 ----------------------------------------------------------
기존 이름 : 김정용
수정 이름 : -
기존 주민등록번호(yymmdd-nnnnnn) : 960608-2234567
수정 주민등록번호(yymmdd-nnnnnn) : -
기존 입사일(yyyy-mm-dd) : 2019-06-08
수정 입사일(yyyy-mm-dd) : -
기존 지역 : 경기
수정 지역(강원/경기/경남/경북/부산/서울/인천/전남/전북/제주/충남/충북/) : -
기존 전화번호 : 010-2731-3153
수정 전화번호 : -
기존 부서 : 개발부
수정 부서(개발부/기획부/영업부/인사부/자재부/총무부/홍보부/) : -
기존 직위 : 대리
수정 직위 (사장/전무/상무/이사/부장/차장/과장/대리/사원/) : -
기존 기본급 : 5000000
수정 기본급(최소 1800000 이상) : -
기존 수당 : 2000000
수정 수당 :
직원 정보 수정 완료
---------------------------------------------------------- 직원 정보 입력
*/
MemberDTO mMember = memList.get(0);
int mEmpId = mMember.getEmpId();
String mEmpName = mMember.getEmpName();
String mSsn = mMember.getSsn();
String mIbsaDate = mMember.getIbsaDate();
String mCityName = mMember.getCityName();
String mTel = mMember.getTel();
String mBuseoName = mMember.getBuseoName();
String mJikwiName = mMember.getJikwiName();
int mBasicPay = mMember.getBasicPay();
int mSudang = mMember.getSudang();
System.out.println();
System.out.println("직원 정보 수정 ----------------------------------------------------------");
System.out.printf("기존 이름 : %s\n", mEmpName);
System.out.print("수정 이름 : ");
String empName = sc.next();
if (empName.equals("-"))
empName = mEmpName;
System.out.printf("기존 주민등록번호(yymmdd-nnnnnn) : %s\n", mSsn);
System.out.print("수정 주민등록번호(yymmdd-nnnnnn) : ");
String ssn = sc.next();
if (ssn.equals("-"))
ssn = mSsn;
System.out.printf("기존 입사일(yyyy-mm-dd) : %s\n", mIbsaDate);
System.out.print("수정 입사일(yyyy-mm-dd) : ");
String ibsaDate = sc.next();
if (ibsaDate.equals("-"))
ibsaDate = mIbsaDate;
System.out.printf("기존 지역 : %s\n ", mCityName);
System.out.printf("수정 지역(%s) : ", cityStr.toString());
String cityName = sc.next();
if (cityName.equals("-"))
cityName = mCityName;
System.out.printf("기존 전화번호 : %s\n", mTel);
System.out.print("수정 전화번호 : ");
String tel = sc.next();
if (tel.equals("-"))
tel = mTel;
System.out.printf("기존 부서 : %s\n", mBuseoName);
System.out.printf("수정 부서(%s) : ", buseoStr);
String buseoName = sc.next();
if (buseoName.equals("-"))
buseoName = mBuseoName;
System.out.printf("기존 직위 : %s\n", mJikwiName);
System.out.printf("수정 직위 (%s) : ", jikwiStr);
String jikwiName = sc.next();
if (jikwiName.equals("-"))
jikwiName = mJikwiName;
System.out.printf("기존 기본급 : %d\n", mBasicPay);
System.out.printf("수정 기본급(최소 %d원 이상) : ", dao.searchBasicPay(jikwiName));
String basicPayStr = sc.next();
int basicPay = 0;
if (basicPayStr.equals("-"))
basicPay = mBasicPay;
else
basicPay = Integer.parseInt(basicPayStr);
System.out.printf("기존 수당 : %d\n", mSudang);
System.out.print("수정 수당 : ");
String sudangStr = sc.next();
int sudang = 0;
if (sudangStr.equals("-"))
sudang = mSudang;
else
sudang = Integer.parseInt(sudangStr);
// 새로 입력받은(수정한) 내용을 통해 DTO 구성
MemberDTO member = new MemberDTO();
member.setEmpId(mEmpId); // check~!! 꼭 넘겨줘야함
member.setEmpName(empName);
member.setSsn(ssn);
member.setIbsaDate(ibsaDate);
member.setCityName(cityName);
member.setTel(tel);
member.setBuseoName(buseoName);
member.setJikwiName(jikwiName);
member.setBasicPay(basicPay);
member.setSudang(sudang);
int result = dao.modify(member);
if (result > 0)
System.out.println("직원 정보 수정 완료");
System.out.println("---------------------------------------------------------- 직원 정보 수정");
}
else
{
System.out.println("수정 대상을 검색하지 못했습니다.");
}
} catch (Exception e)
{
System.out.println(e.toString());
}
finally
{
try
{
dao.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
} // end memberUpdate()
// 직원 정보 삭제 메소드 정의
public void memberDelete()
{
Scanner sc = new Scanner(System.in);
try
{
System.out.print("삭제할 직원의 사원번호 입력 : ");
String value = sc.next();
// 사용자가 입력한 직원의 사원번호에 대한 유효성 검사 가능~!
// 직원 정보 확인 후 삭제여부 결정
dao.connection();
ArrayList<MemberDTO> members = dao.searchLists("EMP_ID", value);
if (members.size() > 0)
{
System.out.println();
System.out.println(" 사번 이름 주민번호 입사일 지역 전화번호 부서 직위 기본급 수당 급여");
for (MemberDTO dto : members)
{
System.out.printf("%5d %4s %14s %10s %4s %12s %4s %3s %8d %8d %8d\n"
, dto.getEmpId(), dto.getEmpName(), dto.getSsn(), dto.getIbsaDate(), dto.getCityName()
, dto.getTel(), dto.getBuseoName()
, dto.getJikwiName(), dto.getBasicPay(), dto.getSudang(), dto.getPay());
}
System.out.print("\n정말 삭제하시겠습니까?(Y/N) : ");
String response = sc.next();
if (response.equals("Y") || response.equals("y"))
{
int result = dao.remove(Integer.parseInt(value));
if (result > 0)
System.out.println("직원 정보가 정상적으로 삭제되었습니다.");
}
}
else
{
System.out.println("삭제 대상을 찾지 못했습니다.");
}
} catch (Exception e)
{
System.out.println(e.toString());
}
finally
{
try
{
dao.close();
} catch (Exception e)
{
System.out.println(e.toString());
}
}
}// end memberDelete()
}// end class MemberProcess
MemberMain
package com.test;
import java.util.Scanner;
public class MemberMain
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
MemberProcess prc = new MemberProcess();
// 직원 정보 입력 메소드 호출
//prc.memberInsert();
// 직원 전체 출력 메소드 호출
//prc.memberLists();
// 직원 검색 메소드 호출
//prc.memberSearch();
// 직원 정보 수정 메소드
//prc.memberUpdate();
// 직원 정보 삭제 메소드
//prc.memberDelete();
do
{
System.out.println();
System.out.println("======================");
System.out.println("=====[ 직원 관리 ]===== ");
System.out.println("1. 직원 정보 입력");
System.out.println("2. 직원 전체 출력");
System.out.println(" - 사번 정렬");
System.out.println(" - 이름 정렬");
System.out.println(" - 부서 정렬");
System.out.println(" - 직위 정렬");
System.out.println(" - 급여 내림차순 정렬");
System.out.println("3. 직원 검색 출력");
System.out.println(" - 사번 검색");
System.out.println(" - 이름 검색");
System.out.println(" - 부서 검색");
System.out.println(" - 직위 검색");
System.out.println("4. 직원 정보 수정");
System.out.println("5. 직원 정보 삭제");
System.out.println("======================");
System.out.print(">> 메뉴 선택(1~5, -1:종료) : ");
String menuStr = sc.next();
try
{
int menu = Integer.parseInt(menuStr);
if (menu == -1)
{
break;
}
switch (menu)
{
case 1:
//직원 정보 입력 메소드 호출
prc.memberInsert();
break;
case 2:
//직원 전체 출력 메소드 호출
prc.memberLists();
break;
case 3:
//직원 검색 출력 메소드 호출
prc.memberSearch();
break;
case 4:
//직원 정보 수정 메소드 호출
prc.memberUpdate();
break;
case 5:
//직원 정보 삭제 메소드 호출
prc.memberDelete();
break;
}
} catch (Exception e)
{
System.out.println(e.toString());
}
} while (true);
System.out.println();
System.out.println("프로그램이 종료되었습니다.");
}
}
Author And Source
이 문제에 관하여(JDBC 직원 관리 프로그램), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cseon230/JDBC-직원-관리-프로그램저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)