JAVA개념&실습

JDBC : 05. MemberDTO/MemberDAO/Statement/직원관리 실습

u_SZero 2023. 5. 23. 23:56

! 현재 배워가고 있는 주인장이 쓴 글이니 정보의 정확성에 유의하시기 바랍니다 !


[실습 개요]

 

○ 직원 관리 프로그램을 구현한다.
   - 데이터베이스 연동 프로그램으로 작성한다.
   - 메뉴 구성 및 기능을 구현한다. → Process
   
실행 예)

===[ 직원 관리 ] ===
1. 직원 정보 입력
2. 직원 전체 출력
   - 사번 정렬
   - 이름 정렬
   - 부서 정렬
   - 직위 정렬
   - 급여 내림차순 정렬
3. 직원 검색 출력
   - 사번 검색
   - 이름 검색
   - 부서 검색
   - 직위 검색
4. 직원 정보 수정
5. 직원 정보 삭제
====================
>> 메뉴 선택(1~5), -1 종료) : 1

직원 정보 입력--------------------------------------------------------------
이름 : 김나다
주민등록번호(yymmdd-nnnnnnn) : 900202-12345657
입사일(yyyy-mm-dd) : 2019-06-08
지역(강원/경기/경남/경북/부산/서울/인천/전남/전북/제주/충남/충북) : 경기
전화번호 : 010-1212-3434
부서(개발부/기획부/영업부/인사부/자재부/총무부/홍보부) : 개발부
직위(사장/전무/상무/이사/부장/차장/과장/대리/사원) : 대리
기본급(최소 1800000원 이상) : 4000000
수당 : 1000000

직원 정보 입력 완료~!!!
---------------------------------------------------------------직원 정보 입력

===[ 직원 관리 ] ===
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 종료) : 

 


 

MemberDTO.java

String name, ssn, ibsadate, tel, city, buseo, jikwi
int       empId, basicpay, sudang, pay

package com.test;

public class MemberDTO
{
	private String name, ssn, ibsadate, tel, city, buseo, jikwi;
	private int empId, basicpay, sudang, pay;
	
	
	public String getName()
	{
		return name;
	}
	public void setName(String name)
	{
		this.name = name;
	}
	public String getSsn()
	{
		return ssn;
	}
	public void setSsn(String ssn)
	{
		this.ssn = ssn;
	}
	public String getIbsadate()
	{
		return ibsadate;
	}
	public void setIbsadate(String ibsadate)
	{
		this.ibsadate = ibsadate;
	}
	public String getTel()
	{
		return tel;
	}
	public void setTel(String tel)
	{
		this.tel = tel;
	}
	public String getCity()
	{
		return city;
	}
	public void setCity(String city)
	{
		this.city = city;
	}
	public String getBuseo()
	{
		return buseo;
	}
	public void setBuseo(String buseo)
	{
		this.buseo = buseo;
	}
	public String getJikwi()
	{
		return jikwi;
	}
	public void setJikwi(String jikwi)
	{
		this.jikwi = jikwi;
	}
	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;
	}
}

 

 

 

MemberDAO.java

 

Connection connection() : 데이터베이스 연결 담당 메소드

int count() : 전체 인원 count 메소드

 

1.

int add(MemberDTO dto) : 직원 정보 입력 메소드

int search_city(String city) : cityid 찾는 메소드

int search_buseo(String buseo) : buseoid찾는 메소드

int search_jikwi(String jikwi) : jikwiid찾는 메소드

2.

ArrayList<MemberDTO> lists_by_empId() : 직원 전체 출력 메소드(사번 정렬)

ArrayList<MemberDTO> lists_by_empName() : 직원 전체 출력 메소드(이름 정렬)

ArrayList<MemberDTO> lists_by_buseo() : 직원 전체 출력 메소드(부서 정렬)

ArrayList<MemberDTO> lists_by_jikwi() : 직원 전체 출력 메소드(직위 정렬)

ArrayList<MemberDTO> lists_by_pay() : 직원 전체 출력 메소드(급여 내림차순 정렬)

3.

ArrayList<MemberDTO> lists_empId(int emp_id) : 직원 검색 출력 메소드(사번 검색)

ArrayList<MemberDTO> lists_empName(String name) : 직원 검색 출력 메소드(이름 검색)

ArrayList<MemberDTO> lists_buseoName(String buseo) : 직원 검색 출력 메소드(부서명 검색)

ArrayList<MemberDTO> lists_jikwi(String jikwi) : 직원 검색 출력 메소드(직위 검색)

4.

int modify(MemberDTO dto) : 직원 정보 수정

5.

int remove(int sid) : 직원 정보 삭제

 

보기 출력문.

ArrayList<String> select_city() : 지역

ArrayList<String> select_buseo() : 부서

ArrayList<String> select_jikwi() : 직위

 

int search_basicpay(string jikwi) : 직위별 기본급 찾기 메소드

 

void close() : DBConn 종료 메소드

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;
	}
	
	// 전체 인원 count
	public int count() throws SQLException
	{
		int result=0;
		
		Statement stmt = conn.createStatement();
		
		String sql = "SELECT COUNT(*) AS COUNT FROM TBL_EMP";
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			result = rs.getInt("COUNT");
		}
		
		return result;
	}
	
	// 1. 직원 정보 입력
	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', '%s', %d, '%s', %d, %d, %d , %d)"
									, dto.getName(), dto.getSsn(), dto.getIbsadate(), search_city(dto.getCity()), dto.getTel(), search_buseo(dto.getBuseo())
									, search_jikwi(dto.getJikwi()) , dto.getBasicpay(), dto.getSudang());

		result = stmt.executeUpdate(sql);
		
		stmt.close();
		
		return result;
	}
	
	// CITYID 찾는 메소드
	public int search_city(String city) throws SQLException
	{
		int result = 0;
		
		Statement stmt = conn.createStatement();
		
		String sql = String.format("SELECT CITY_ID FROM TBL_CITY WHERE CITY_NAME = '%s'", city);
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			result = rs.getInt("CITY_ID");
		}
		

		return result;
	}
	
	// BUSEOID 찾는 메소드
	public int search_buseo(String buseo) throws SQLException
	{
		int result = 0;
		
		Statement stmt = conn.createStatement();
		
		String sql = String.format("SELECT BUSEO_ID FROM TBL_BUSEO WHERE BUSEO_NAME = '%s'", buseo);
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			result = rs.getInt("BUSEO_ID");
		}

		return result;
	}
	
	// JIKWIID 찾는 메소드
	public int search_jikwi(String jikwi) throws SQLException
	{
		int result = 0;
		
		Statement stmt = conn.createStatement();
		
		String sql = String.format("SELECT JIKWI_ID FROM TBL_JIKWI WHERE JIKWI_NAME = '%s'", jikwi);
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			result = rs.getInt("JIKWI_ID");
		}
		
		return result;
	}
	
	// 2. 직원 전체 출력 담당 메소드 - 사번 정렬
	public ArrayList<MemberDTO> lists_by_empId() throws SQLException
	{
		ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
		
		Statement stmt = conn.createStatement();
		
		String sql = "SELECT E.EMP_ID \"사원번호\", E.EMP_NAME \"사원명\", E.SSN \"주민번호\", TO_CHAR(E.IBSADATE, 'YYYY-MM-DD') \"입사일\", C.CITY_NAME \"도시명\""
					+ ", E.TEL \"전화번호\", B.BUSEO_NAME \"부서명\", J.JIKWI_NAME \"직위\", E.BASICPAY \"기본급\", E.SUDANG \"수당\", (E.BASICPAY + E.SUDANG) \"급여\""
					+ " FROM TBL_EMP E JOIN TBL_CITY C ON E.CITY_ID = C.CITY_ID"
					+ " JOIN TBL_BUSEO B ON E.BUSEO_ID = B.BUSEO_ID"
					+ " JOIN TBL_JIKWI J ON E.JIKWI_ID = J.JIKWI_ID"
					+ " ORDER BY E.EMP_ID";
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			MemberDTO dto = new MemberDTO();
			
			dto.setEmpId(rs.getInt("사원번호"));
			dto.setName(rs.getString("사원명"));
			dto.setSsn(rs.getString("주민번호"));
			dto.setIbsadate(rs.getString("입사일"));
			dto.setCity(rs.getString("도시명"));
			dto.setTel(rs.getString("전화번호"));
			dto.setBuseo(rs.getString("부서명"));
			dto.setJikwi(rs.getString("직위"));
			dto.setBasicpay(rs.getInt("기본급"));
			dto.setSudang(rs.getInt("수당"));
			dto.setPay(rs.getInt("급여"));
		
			result.add(dto);
		}
		
		rs.close();
		stmt.close();
		
		return result;
	}
	
	// 2. 직원 전체 출력 담당 메소드 - 이름 정렬
	public ArrayList<MemberDTO> lists_by_empName() throws SQLException
	{
		ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
		
		Statement stmt = conn.createStatement();
		
		String sql = "SELECT E.EMP_ID \"사원번호\", E.EMP_NAME \"사원명\", E.SSN \"주민번호\", TO_CHAR(E.IBSADATE, 'YYYY-MM-DD') \"입사일\", C.CITY_NAME \"도시명\""
				+ ", E.TEL \"전화번호\", B.BUSEO_NAME \"부서명\", J.JIKWI_NAME \"직위\", E.BASICPAY \"기본급\", E.SUDANG \"수당\", (E.BASICPAY + E.SUDANG) \"급여\""
				+ " FROM TBL_EMP E JOIN TBL_CITY C ON E.CITY_ID = C.CITY_ID"
				+ " JOIN TBL_BUSEO B ON E.BUSEO_ID = B.BUSEO_ID"
				+ " JOIN TBL_JIKWI J ON E.JIKWI_ID = J.JIKWI_ID"
				+ " ORDER BY E.EMP_NAME";
	
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			MemberDTO dto = new MemberDTO();
			
			dto.setEmpId(rs.getInt("사원번호"));
			dto.setName(rs.getString("사원명"));
			dto.setSsn(rs.getString("주민번호"));
			dto.setIbsadate(rs.getString("입사일"));
			dto.setCity(rs.getString("도시명"));
			dto.setTel(rs.getString("전화번호"));
			dto.setBuseo(rs.getString("부서명"));
			dto.setJikwi(rs.getString("직위"));
			dto.setBasicpay(rs.getInt("기본급"));
			dto.setSudang(rs.getInt("수당"));
			dto.setPay(rs.getInt("급여"));
		
			result.add(dto);
		}
		
		rs.close();
		stmt.close();
		
		return result;
	}
	
	// 2. 직원 전체 출력 담당 메소드 - 부서 정렬
	public ArrayList<MemberDTO> lists_by_buseo() throws SQLException
	{
		ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
		
		Statement stmt = conn.createStatement();
		
		String sql = "SELECT E.EMP_ID \"사원번호\", E.EMP_NAME \"사원명\", E.SSN \"주민번호\", TO_CHAR(E.IBSADATE, 'YYYY-MM-DD') \"입사일\", C.CITY_NAME \"도시명\""
				+ ", E.TEL \"전화번호\", B.BUSEO_NAME \"부서명\", J.JIKWI_NAME \"직위\", E.BASICPAY \"기본급\", E.SUDANG \"수당\", (E.BASICPAY + E.SUDANG) \"급여\""
				+ " FROM TBL_EMP E JOIN TBL_CITY C ON E.CITY_ID = C.CITY_ID"
				+ " JOIN TBL_BUSEO B ON E.BUSEO_ID = B.BUSEO_ID"
				+ " JOIN TBL_JIKWI J ON E.JIKWI_ID = J.JIKWI_ID"
				+ " ORDER BY B.BUSEO_NAME";
	
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			MemberDTO dto = new MemberDTO();
			
			dto.setEmpId(rs.getInt("사원번호"));
			dto.setName(rs.getString("사원명"));
			dto.setSsn(rs.getString("주민번호"));
			dto.setIbsadate(rs.getString("입사일"));
			dto.setCity(rs.getString("도시명"));
			dto.setTel(rs.getString("전화번호"));
			dto.setBuseo(rs.getString("부서명"));
			dto.setJikwi(rs.getString("직위"));
			dto.setBasicpay(rs.getInt("기본급"));
			dto.setSudang(rs.getInt("수당"));
			dto.setPay(rs.getInt("급여"));
		
			result.add(dto);
		}
		
		rs.close();
		stmt.close();
		
		return result;
	}
	
	// 2. 직원 전체 출력 담당 메소드 - 직위 정렬
	public ArrayList<MemberDTO> lists_by_jikwi() throws SQLException
	{
		ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
		
		Statement stmt = conn.createStatement();
		
		String sql = "SELECT E.EMP_ID \"사원번호\", E.EMP_NAME \"사원명\", E.SSN \"주민번호\", TO_CHAR(E.IBSADATE, 'YYYY-MM-DD') \"입사일\", C.CITY_NAME \"도시명\""
				+ ", E.TEL \"전화번호\", B.BUSEO_NAME \"부서명\", J.JIKWI_NAME \"직위\", E.BASICPAY \"기본급\", E.SUDANG \"수당\", (E.BASICPAY + E.SUDANG) \"급여\""
				+ " FROM TBL_EMP E JOIN TBL_CITY C ON E.CITY_ID = C.CITY_ID"
				+ " JOIN TBL_BUSEO B ON E.BUSEO_ID = B.BUSEO_ID"
				+ " JOIN TBL_JIKWI J ON E.JIKWI_ID = J.JIKWI_ID"
				+ " ORDER BY J.JIKWI_NAME";
	
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			MemberDTO dto = new MemberDTO();
			
			dto.setEmpId(rs.getInt("사원번호"));
			dto.setName(rs.getString("사원명"));
			dto.setSsn(rs.getString("주민번호"));
			dto.setIbsadate(rs.getString("입사일"));
			dto.setCity(rs.getString("도시명"));
			dto.setTel(rs.getString("전화번호"));
			dto.setBuseo(rs.getString("부서명"));
			dto.setJikwi(rs.getString("직위"));
			dto.setBasicpay(rs.getInt("기본급"));
			dto.setSudang(rs.getInt("수당"));
			dto.setPay(rs.getInt("급여"));
		
			result.add(dto);
		}
		
		rs.close();
		stmt.close();
		
		return result;
	}
	
	// 2. 직원 전체 출력 담당 메소드 - 급여 내림차순 정렬
	public ArrayList<MemberDTO> lists_by_pay() throws SQLException
	{
		ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
		
		Statement stmt = conn.createStatement();
		
		String sql = "SELECT E.EMP_ID \"사원번호\", E.EMP_NAME \"사원명\", E.SSN \"주민번호\", TO_CHAR(E.IBSADATE, 'YYYY-MM-DD') \"입사일\", C.CITY_NAME \"도시명\""
				+ ", E.TEL \"전화번호\", B.BUSEO_NAME \"부서명\", J.JIKWI_NAME \"직위\", E.BASICPAY \"기본급\", E.SUDANG \"수당\", (E.BASICPAY + E.SUDANG) \"급여\""
				+ " FROM TBL_EMP E JOIN TBL_CITY C ON E.CITY_ID = C.CITY_ID"
				+ " JOIN TBL_BUSEO B ON E.BUSEO_ID = B.BUSEO_ID"
				+ " JOIN TBL_JIKWI J ON E.JIKWI_ID = J.JIKWI_ID"
				+ " ORDER BY \"급여\" DESC";
	
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			MemberDTO dto = new MemberDTO();
			
			dto.setEmpId(rs.getInt("사원번호"));
			dto.setName(rs.getString("사원명"));
			dto.setSsn(rs.getString("주민번호"));
			dto.setIbsadate(rs.getString("입사일"));
			dto.setCity(rs.getString("도시명"));
			dto.setTel(rs.getString("전화번호"));
			dto.setBuseo(rs.getString("부서명"));
			dto.setJikwi(rs.getString("직위"));
			dto.setBasicpay(rs.getInt("기본급"));
			dto.setSudang(rs.getInt("수당"));
			dto.setPay(rs.getInt("급여"));
		
			result.add(dto);
		}
		
		rs.close();
		stmt.close();
		
		return result;
		
	}
	
	// 3. 직원 검색 출력 - 사번 검색
	public ArrayList<MemberDTO> lists_empId(int emp_id) throws SQLException
	{
		ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
		
		Statement stmt = conn.createStatement();
		
		String sql = String.format("SELECT E.EMP_ID \"사원번호\", E.EMP_NAME \"사원명\", E.SSN \"주민번호\", TO_CHAR(E.IBSADATE, 'YYYY-MM-DD') \"입사일\", C.CITY_NAME \"도시명\", E.TEL \"전화번호\", B.BUSEO_NAME \"부서명\", J.JIKWI_NAME \"직위\", E.BASICPAY \"기본급\", E.SUDANG \"수당\", (E.BASICPAY + E.SUDANG) \"급여\""
									+ " FROM TBL_EMP E JOIN TBL_CITY C ON E.CITY_ID = C.CITY_ID JOIN TBL_BUSEO B ON E.BUSEO_ID = B.BUSEO_ID JOIN TBL_JIKWI J ON E.JIKWI_ID = J.JIKWI_ID"
									+ " WHERE E.EMP_ID = %d"
									, emp_id);
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			MemberDTO dto = new MemberDTO();
			
			dto.setEmpId(rs.getInt("사원번호"));
			dto.setName(rs.getString("사원명"));
			dto.setSsn(rs.getString("주민번호"));
			dto.setIbsadate(rs.getString("입사일"));
			dto.setCity(rs.getString("도시명"));
			dto.setTel(rs.getString("전화번호"));
			dto.setBuseo(rs.getString("부서명"));
			dto.setJikwi(rs.getString("직위"));
			dto.setBasicpay(rs.getInt("기본급"));
			dto.setSudang(rs.getInt("수당"));
			dto.setPay(rs.getInt("급여"));
		
			result.add(dto);
		}
		
		rs.close();
		stmt.close();
		
		return result;
	}
	
	// 3. 직원 검색 출력 - 이름 검색
	public ArrayList<MemberDTO> lists_empName(String name) throws SQLException
	{
		ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
		
		Statement stmt = conn.createStatement();
		
		String sql = String.format("SELECT E.EMP_ID \"사원번호\", E.EMP_NAME \"사원명\", E.SSN \"주민번호\", TO_CHAR(E.IBSADATE, 'YYYY-MM-DD') \"입사일\", C.CITY_NAME \"도시명\", E.TEL \"전화번호\", B.BUSEO_NAME \"부서명\", J.JIKWI_NAME \"직위\", E.BASICPAY \"기본급\", E.SUDANG \"수당\", (E.BASICPAY + E.SUDANG) \"급여\""
									+ " FROM TBL_EMP E JOIN TBL_CITY C ON E.CITY_ID = C.CITY_ID JOIN TBL_BUSEO B ON E.BUSEO_ID = B.BUSEO_ID JOIN TBL_JIKWI J ON E.JIKWI_ID = J.JIKWI_ID"
									+ " WHERE E.EMP_NAME = '%s'"
									, name);
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			MemberDTO dto = new MemberDTO();
			
			dto.setEmpId(rs.getInt("사원번호"));
			dto.setName(rs.getString("사원명"));
			dto.setSsn(rs.getString("주민번호"));
			dto.setIbsadate(rs.getString("입사일"));
			dto.setCity(rs.getString("도시명"));
			dto.setTel(rs.getString("전화번호"));
			dto.setBuseo(rs.getString("부서명"));
			dto.setJikwi(rs.getString("직위"));
			dto.setBasicpay(rs.getInt("기본급"));
			dto.setSudang(rs.getInt("수당"));
			dto.setPay(rs.getInt("급여"));
		
			result.add(dto);
		}
		
		rs.close();
		stmt.close();
		
		return result;
	}
	
	// 3. 직원 검색 출력 - 부서명 검색
	public ArrayList<MemberDTO> lists_buseoName(String buseo) throws SQLException
	{
		ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
		
		Statement stmt = conn.createStatement();
		
		String sql = String.format("SELECT E.EMP_ID \"사원번호\", E.EMP_NAME \"사원명\", E.SSN \"주민번호\", TO_CHAR(E.IBSADATE, 'YYYY-MM-DD') \"입사일\", C.CITY_NAME \"도시명\", E.TEL \"전화번호\", B.BUSEO_NAME \"부서명\", J.JIKWI_NAME \"직위\", E.BASICPAY \"기본급\", E.SUDANG \"수당\", (E.BASICPAY + E.SUDANG) \"급여\""
									+ " FROM TBL_EMP E JOIN TBL_CITY C ON E.CITY_ID = C.CITY_ID JOIN TBL_BUSEO B ON E.BUSEO_ID = B.BUSEO_ID JOIN TBL_JIKWI J ON E.JIKWI_ID = J.JIKWI_ID"
									+ " WHERE B.BUSEO_NAME = '%s'"
									, buseo);
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			MemberDTO dto = new MemberDTO();
			
			dto.setEmpId(rs.getInt("사원번호"));
			dto.setName(rs.getString("사원명"));
			dto.setSsn(rs.getString("주민번호"));
			dto.setIbsadate(rs.getString("입사일"));
			dto.setCity(rs.getString("도시명"));
			dto.setTel(rs.getString("전화번호"));
			dto.setBuseo(rs.getString("부서명"));
			dto.setJikwi(rs.getString("직위"));
			dto.setBasicpay(rs.getInt("기본급"));
			dto.setSudang(rs.getInt("수당"));
			dto.setPay(rs.getInt("급여"));
		
			result.add(dto);
		}
		
		rs.close();
		stmt.close();
		
		return result;
	}
	
	// 3. 직원 검색 출력 - 직위 검색
	public ArrayList<MemberDTO> lists_jikwi(String jikwi) throws SQLException
	{
		ArrayList<MemberDTO> result = new ArrayList<MemberDTO>();
		
		Statement stmt = conn.createStatement();
		
		String sql = String.format("SELECT E.EMP_ID \"사원번호\", E.EMP_NAME \"사원명\", E.SSN \"주민번호\", TO_CHAR(E.IBSADATE, 'YYYY-MM-DD') \"입사일\", C.CITY_NAME \"도시명\", E.TEL \"전화번호\", B.BUSEO_NAME \"부서명\", J.JIKWI_NAME \"직위\", E.BASICPAY \"기본급\", E.SUDANG \"수당\", (E.BASICPAY + E.SUDANG) \"급여\""
									+ " FROM TBL_EMP E JOIN TBL_CITY C ON E.CITY_ID = C.CITY_ID JOIN TBL_BUSEO B ON E.BUSEO_ID = B.BUSEO_ID JOIN TBL_JIKWI J ON E.JIKWI_ID = J.JIKWI_ID"
									+ " WHERE J.JIKWI_NAME = '%s'"
									, jikwi);
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			MemberDTO dto = new MemberDTO();
			
			dto.setEmpId(rs.getInt("사원번호"));
			dto.setName(rs.getString("사원명"));
			dto.setSsn(rs.getString("주민번호"));
			dto.setIbsadate(rs.getString("입사일"));
			dto.setCity(rs.getString("도시명"));
			dto.setTel(rs.getString("전화번호"));
			dto.setBuseo(rs.getString("부서명"));
			dto.setJikwi(rs.getString("직위"));
			dto.setBasicpay(rs.getInt("기본급"));
			dto.setSudang(rs.getInt("수당"));
			dto.setPay(rs.getInt("급여"));
		
			result.add(dto);
		}
		
		rs.close();
		stmt.close();
		
		return result;
	}
	
	
	// 4. 직원 정보 수정
	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 = %d, TEL = '%s', BUSEO_ID = %d, JIKWI_ID = %d, BASICPAY = %d, SUDANG = %d WHERE EMP_ID = %d"
									,dto.getName(), dto.getSsn(), dto.getIbsadate(), search_city(dto.getCity()), dto.getTel(), search_buseo(dto.getBuseo()), search_jikwi(dto.getJikwi()), dto.getBasicpay(), dto.getSudang(), dto.getEmpId());
		
		result = stmt.executeUpdate(sql);
		
		return result;
	}
	
	// 5. 직원 정보 삭제
	public int remove(int sid) throws SQLException
	{
		int result = 0;
		
		Statement stmt = conn.createStatement();
		
		String sql = String.format("DELETE FROM TBL_EMP WHERE EMP_ID = %d", sid);
		
		result = stmt.executeUpdate(sql);
		
		stmt.close();
		
		return result;
	}
	
	// 보기 출력문 (지역)
	public ArrayList<String> select_city() throws SQLException
	{
		ArrayList<String> result = new ArrayList<String>();
		
		Statement stmt = conn.createStatement();
		
		String sql = "SELECT CITY_NAME AS CITY_NAME FROM TBL_CITY";
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			result.add(rs.getString("CITY_NAME"));
		}
		
		return result;
	}
	
	// 보기 출력문 (부서)
	public ArrayList<String> select_buseo() throws SQLException
	{
		ArrayList<String> result = new ArrayList<String>();
		
		Statement stmt = conn.createStatement();
		
		String sql = "SELECT BUSEO_NAME AS BUSEO_NAME FROM TBL_BUSEO";
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			result.add(rs.getString("BUSEO_NAME"));
		}
		
		return result;
	}
	
	// 보기 출력문 (직위)
	public ArrayList<String> select_jikwi() throws SQLException
	{
		ArrayList<String> result = new ArrayList<String>();
		
		Statement stmt = conn.createStatement();
		
		String sql = "SELECT JIKWI_NAME AS JIKWI_NAME FROM TBL_JIKWI";
		
		ResultSet rs = stmt.executeQuery(sql);
		
		while (rs.next())
		{
			result.add(rs.getString("JIKWI_NAME"));
		}
		
		return result;
	}
	
	// 직위별 기본급 찾기
	public int search_basicpay(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");
		}
		
		return result;
	}
	
	public void close() throws SQLException
	{
		DBConn.close();
		
	}
}

 

 

MemberProcess.java

: MemberDAO.java를 활용한 필요 기능 구현

package com.test;

import java.util.ArrayList;
import java.util.Scanner;

public class MemberProcess
{
	private MemberDAO dao;
	
	public MemberProcess()
	{
		dao = new MemberDAO();
	}
	
	// 1. 직원 정보 입력
	public void memberInsert()
	{
		try
		{
			dao.connection();
			
			int count = dao.count();
			
			Scanner sc = new Scanner(System.in);
			
			do
			{
				System.out.println("\n직원 정보 입력--------------------------------------------------------------");
				
				System.out.print("이름 : ");
				String name = sc.next();
				
				if (name.equals("."))
					break;
				
				System.out.print("주민등록번호(yymmdd-nnnnnnn) : ");
				String ssn = sc.next();
				
				System.out.print("입사일(yyyy-mm-dd) : ");
				String ibsadate = sc.next();
				
				System.out.print("지역(");
				for(String city : dao.select_city())
				{
					System.out.printf("%s\\", city);
				}
				System.out.print(") : ");
				String city = sc.next();
				
				System.out.print("전화번호 : ");
				String tel = sc.next();
				
				System.out.print("부서(");
				for(String buseo : dao.select_buseo())
				{
					System.out.printf("%s\\", buseo);
				}
				System.out.print(") : ");
				String buseo = sc.next();
				
				System.out.print("직위(");
				for(String jikwi : dao.select_jikwi())
				{
					System.out.printf("%s\\", jikwi);
				}
				System.out.print(") : ");
				String jikwi = sc.next();
				
				System.out.print("기본급(");
				System.out.print("최소 " + dao.search_basicpay(jikwi) + "원 이상) : ");
				int basicpay = sc.nextInt();
				
				System.out.print("수당 : ");
				int sudang = sc.nextInt();
				
				MemberDTO dto = new MemberDTO();
				
				dto.setName(name);
				dto.setSsn(ssn);
				dto.setIbsadate(ibsadate);
				dto.setCity(city);
				dto.setTel(tel);
				dto.setBuseo(buseo);
				dto.setJikwi(jikwi);
				dto.setBasicpay(basicpay);
				dto.setSudang(sudang);
				
				int result = dao.add(dto);
				
				if (result > 0)
				{
					System.out.println("직원 정보 입력 완료~!!!");
				}
				else
				{
					System.out.println("직원 정보 입력 실패...ㅠ");
				}
				
				System.out.println("---------------------------------------------------------------직원 정보 입력");
				
			} while (true);
			
			dao.close();
		} 
		catch (Exception e)
		{
			System.out.println(e.toString());
		}
	}
	
	// 2. 직원 전체 출력
	public void memberSelectAll()
	{
		try
		{
			dao.connection();
			
			Scanner sc = new Scanner(System.in);
			
			System.out.println("\n1. 사번 정렬");
			System.out.println("2. 이름 정렬");
			System.out.println("3. 직위 정렬");
			System.out.println("4. 부서 정렬");
			System.out.println("5. 급여 내림차순 정렬\n");
			System.out.print(">> 선택(1~5, -1 종료) :");
			int choose = sc.nextInt();
			
			int count = dao.count();
			
			System.out.println();
			System.out.printf("전체인원 : %d명\n", count);
			System.out.println("사번   이름  주민번호        입사일       지역    전화번호       부서      직위   기본급     수당     급여");
			
			if (choose == -1)
			{
				return;
			}
			
			switch (choose)
			{
				case 1 :
					for(MemberDTO dto : dao.lists_by_empId())
					{
						System.out.printf("%3s %3s %16s %10s %4s %15s %5s %5s %8s %8d %9d \n"
										  , dto.getEmpId(), dto.getName(), dto.getSsn(), dto.getIbsadate(), dto.getCity()
										  , dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay(), dto.getSudang(), dto.getPay());
					}
					System.out.println();
					break;
				case 2 :
					for(MemberDTO dto : dao.lists_by_empName())
					{
						System.out.printf("%3s %3s %16s %10s %4s %15s %5s %5s %8s %8d %9d \n"
								  , dto.getEmpId(), dto.getName(), dto.getSsn(), dto.getIbsadate(), dto.getCity()
								  , dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay(), dto.getSudang(), dto.getPay());
					}
					System.out.println();
					break;
				case 3 : 
					for(MemberDTO dto : dao.lists_by_jikwi())
					{
						System.out.printf("%3s %3s %16s %10s %4s %15s %5s %5s %8s %8d %9d \n"
								  , dto.getEmpId(), dto.getName(), dto.getSsn(), dto.getIbsadate(), dto.getCity()
								  , dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay(), dto.getSudang(), dto.getPay());
					}
					System.out.println();
					break;
				case 4 : 
					for(MemberDTO dto : dao.lists_by_buseo())
					{
						System.out.printf("%3s %3s %16s %10s %4s %15s %5s %5s %8s %8d %9d \n"
								  , dto.getEmpId(), dto.getName(), dto.getSsn(), dto.getIbsadate(), dto.getCity()
								  , dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay(), dto.getSudang(), dto.getPay());
					}
					System.out.println();
					break;
				case 5 : 
					for(MemberDTO dto : dao.lists_by_pay())
					{
						System.out.printf("%3s %3s %16s %10s %4s %15s %5s %5s %8s %8d %9d \n"
								  , dto.getEmpId(), dto.getName(), dto.getSsn(), dto.getIbsadate(), dto.getCity()
								  , dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay(), dto.getSudang(), dto.getPay());
					}
					System.out.println();
					break;
			}
			
			dao.close();
		} 
		catch (Exception e)
		{
			System.out.println(e.toString());
		}
	}
	
	// 3. 직원 검색 출력
	public void memberSearch()
	{
		try
		{
			ArrayList<MemberDTO> arrayList;
			
			dao.connection();
			
			Scanner sc = new Scanner(System.in);
		
			System.out.println("\n1. 사번 검색");
			System.out.println("2. 이름 검색");
			System.out.println("3. 부서 검색");
			System.out.println("4. 직위 검색\n");
			System.out.print(">> 선택(1~4, -1 종료) :");
			
			int choose = sc.nextInt();
			
			if (choose == -1)
			{
				return;
			}
			
			switch (choose)
			{
				case 1 :
					System.out.print("검색하실 사번을 입력해주세요. : ");
					int empId = sc.nextInt();
					System.out.println();
					arrayList = dao.lists_empId(empId);
					
					
					if (arrayList.size()>0)
					{
						System.out.println(">> 검색결과 인원 : " + arrayList.size());
						System.out.println();
						
						System.out.println("사번   이름  주민번호        입사일       지역    전화번호       부서      직위   기본급     수당     급여");

						for(MemberDTO dto : arrayList)
						{
							System.out.printf("%3s %3s %16s %10s %4s %15s %5s %5s %8s %8d %9d \n"
											  , dto.getEmpId(),dto.getName(), dto.getSsn(), dto.getIbsadate(), dto.getCity()
											  , dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay(), dto.getSudang(), dto.getPay());
						}
						System.out.println();
					}
					else
						System.out.println("검색할 항목이 존재하지 않습니다.\n");
					break;
				case 2 :
					System.out.print("검색하실 이름을 입력해주세요. : ");
					String name = sc.next();
					System.out.println();
					arrayList = dao.lists_empName(name);
					
					
					
					if (arrayList.size()>0)
					{
						System.out.println(">> 검색결과 인원 : " + arrayList.size());
						System.out.println();
						
						System.out.println("사번   이름  주민번호        입사일       지역    전화번호       부서      직위   기본급     수당     급여");
						for(MemberDTO dto : arrayList)
						{
							System.out.printf("%3s %3s %16s %10s %4s %15s %5s %5s %8s %8d %9d \n"
											  , dto.getEmpId(),dto.getName(), dto.getSsn(), dto.getIbsadate(), dto.getCity()
											  , dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay(), dto.getSudang(), dto.getPay());
						}
						System.out.println();
					}
					else
						System.out.println("검색할 항목이 존재하지 않습니다.\n");
					break;
				case 3 : 
					System.out.print("검색하실 부서명을 입력해주세요. : ");
					String buseo = sc.next();
					System.out.println();
					arrayList = dao.lists_buseoName(buseo);
					
					
					if (arrayList.size()>0)
					{
						System.out.println(">> 검색결과 인원 : " + arrayList.size());
						System.out.println();
						
						System.out.println("사번   이름  주민번호        입사일       지역    전화번호       부서      직위   기본급     수당     급여");
						for(MemberDTO dto : arrayList)
						{
							System.out.printf("%3s %3s %16s %10s %4s %15s %5s %5s %8s %8d %9d \n"
											  , dto.getEmpId(),dto.getName(), dto.getSsn(), dto.getIbsadate(), dto.getCity()
											  , dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay(), dto.getSudang(), dto.getPay());
						}
						System.out.println();
					}
					else
						System.out.println("검색할 항목이 존재하지 않습니다.\n");
					break;
				case 4 : 
					System.out.print("검색하실 직위를 입력해주세요 : ");
					String jikwi = sc.next();
					System.out.println();
					arrayList = dao.lists_jikwi(jikwi);
					
					
					
					if (arrayList.size()>0)
					{
						System.out.println(">> 검색결과 인원 : " + arrayList.size());
						System.out.println();
						
						System.out.println("사번   이름  주민번호        입사일       지역    전화번호       부서      직위   기본급     수당     급여");
						for(MemberDTO dto : arrayList)
						{
							System.out.printf("%3s %3s %16s %10s %4s %15s %5s %5s %8s %8d %9d \n"
											  , dto.getEmpId(),dto.getName(), dto.getSsn(), dto.getIbsadate(), dto.getCity()
											  , dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay(), dto.getSudang(), dto.getPay());
						}
						System.out.println();
					}
					else
						System.out.println("검색할 항목이 존재하지 않습니다.\n");
					break;
			}
			
			dao.close();
			
		} catch (Exception e)
		{
			System.out.println(e.toString());
		}
		
	}
	
	// 4. 직원 정보 수정
	public void memberUpdate()
	{
		try
		{
			Scanner sc = new Scanner(System.in);
			System.out.print("수정할 직원의 사번을 입력하세요 : ");
			int empId = sc.nextInt();
			
			dao.connection();
			
			ArrayList<MemberDTO> arrayList = dao.lists_empId(empId);
			
			if (arrayList.size() > 0)
			{
				System.out.println();
				System.out.println("사번   이름  주민번호        입사일       지역    전화번호       부서      직위   기본급     수당     급여");
				for (MemberDTO dto : arrayList)
				{
					System.out.printf("%3s %3s %16s %10s %4s %15s %5s %5s %8s %8d %9d \n"
							  , dto.getEmpId(),dto.getName(), dto.getSsn(), dto.getIbsadate(), dto.getCity()
							  , dto.getTel(),dto.getBuseo(), dto.getJikwi(), dto.getBasicpay(), dto.getSudang(), dto.getPay());
				}
				System.out.println();
				
				System.out.println("직원 수정 정보 입력-----------------------------------------------------------");
				
				System.out.print("이름 : ");
				String name = sc.next();
				
				System.out.print("주민등록번호(yymmdd-nnnnnnn) : ");
				String ssn = sc.next();
				
				System.out.print("입사일(yyyy-mm-dd) : ");
				String ibsadate = sc.next();
				
				System.out.print("지역(");
				for(String city : dao.select_city())
				{
					System.out.printf("%s\\", city);
				}
				System.out.print(") : ");
				String city = sc.next();
				
				System.out.print("전화번호 : ");
				String tel = sc.next();
				
				System.out.print("부서(");
				for(String buseo : dao.select_buseo())
				{
					System.out.printf("%s\\", buseo);
				}
				System.out.print(") : ");
				String buseo = sc.next();
				
				System.out.print("직위(");
				for(String jikwi : dao.select_jikwi())
				{
					System.out.printf("%s\\", jikwi);
				}
				System.out.print(") : ");
				String jikwi = sc.next();
				
				System.out.print("기본급(");
				System.out.print("최소 " + dao.search_basicpay(jikwi) + "원 이상) : ");
				int basicpay = sc.nextInt();
				
				System.out.print("수당 : ");
				int sudang = sc.nextInt();
				
				MemberDTO dto = new MemberDTO();
				
				dto.setName(name);
				dto.setSsn(ssn);
				dto.setIbsadate(ibsadate);
				dto.setCity(city);
				dto.setTel(tel);
				dto.setBuseo(buseo);
				dto.setJikwi(jikwi);
				dto.setBasicpay(basicpay);
				dto.setSudang(sudang);
				dto.setEmpId(empId);
				
				int result = dao.modify(dto);
				
				if (result > 0)
				{
					System.out.println("직원 정보 수정 완료~!!!");
				}
				else
				{
					System.out.println("직원 정보 수정 실패...ㅠ");
				}
				
				System.out.println("------------------------------------------------------------직원 수정 정보 입력");
			}
			else
			{
				System.out.println(">> 수정 대상이 존재하지 않습니다. \n");
			}
			dao.close();
		} 
		catch (Exception e)
		{
			System.out.println(e.toString());
		}
	}
	
	// 5. 직원 정보 삭제
	public void memberDelete()
	{
		try
		{
			Scanner sc = new Scanner(System.in);
			System.out.print("삭제할 사번을 입력하세요 : ");
			int empId = sc.nextInt();
			
			dao.connection();
			
			ArrayList<MemberDTO> arrayList = dao.lists_empId(empId);
			
			if (arrayList.size() > 0)
			{
				System.out.println();
				System.out.println("사번   이름  주민번호        입사일       지역    전화번호       부서      직위   기본급     수당     급여");
				for (MemberDTO dto : arrayList)
				{
					System.out.printf("%3s %3s %14s %10s %4s %10s %5s %4s %8d %8d %9d\n"
							  , dto.getEmpId(),dto.getName(), dto.getSsn(), dto.getIbsadate(), dto.getCity()
							  , dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay(), dto.getSudang(), dto.getPay());
				}
				System.out.println();
				
				
				// 삭제 여부 확인
				System.out.print(">> 정말 삭제하시겠습니까?(Y/N) : ");
				String response = sc.next();
				
				if (response.equals("Y") || response.equals("y"))
				{
					int result = dao.remove(empId);
					
					if (result > 0)
					{
						System.out.println(">> 삭제가 완료되었습니다. \n");
					}
				}
				else
				{
					System.out.println(">> 취소되었습니다. \n");
				}
			}
			else
			{
				System.out.println(">> 삭제할 대상이 존재하지 않습니다.\n");
			}
			
			dao.close();
		} 
		catch (Exception e)
		{
			System.out.println(e.toString());
		}
	}
}

 

MemberMain.java

: 최종 기능을 수행하는 페이지 구성

/*===========================
   MemeberMain.java
===========================*/


package com.test;

import java.util.Scanner;

public class MemberMain
{
	public static void main(String[] args)
	{
		MemberProcess prc = new MemberProcess();
		Scanner sc = new Scanner(System.in);
		
		do
		{
			System.out.println("\n===[ 직원 관리 ] ===");
			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("====================\n");
			System.out.print(">> 메뉴 선택(1~5), -1 종료) : ");
	
			String menus = sc.next();
			
			try
			{
				int menu = Integer.parseInt(menus);
				
				if (menu==-1)
				{
					System.out.println();
					System.out.println(">> 프로그램이 종료되었습니다.");
					return;
				}
				
				switch (menu)
				{ 
					case 1 :
						prc.memberInsert();
						break;
					case 2 : 
						prc.memberSelectAll();
						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);
	}
}

 


 

! 현재 배워가고 있는 주인장이 쓴 글이니 정보의 정확성에 유의하시기 바랍니다 !