! 현재 배워가고 있는 주인장이 쓴 글이니 정보의 정확성에 유의하시기 바랍니다 !
[실습 개요]
○ 직원 관리 프로그램을 구현한다.
- 데이터베이스 연동 프로그램으로 작성한다.
- 메뉴 구성 및 기능을 구현한다. → 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);
}
}
! 현재 배워가고 있는 주인장이 쓴 글이니 정보의 정확성에 유의하시기 바랍니다 !
'JAVA개념&실습' 카테고리의 다른 글
JDBC : 08. CallableStatement - SQL 구문 전송 실습 (0) | 2023.05.24 |
---|---|
JDBC : 07. ScoreDTO/ScoreDAO/PreparedStatement/성적처리 실습 (0) | 2023.05.24 |
JDBC : 04. ScoreDTO/ScoreDAO/Statement/성적처리 실습 (0) | 2023.05.23 |
JDBC : 03. MemberDTO/MemberDAO/Statement/회원정보 실습 (0) | 2023.05.23 |
JDBC : 02. DB연결 실습 (0) | 2023.05.23 |