직원관리 콘솔 버전

- 입력과정 이후 작업 진행중..


--------------------------------------

직원 관리_콘솔 버전

-> 새 프로젝트 생성(Employee_Console)

-> 메뉴 구성 추가

-> DBConn, EmployeeDTO, EmployeeDAO, Process, Oracle11 클래스 이용.

-> emp.sql 쿼리를 먼저 실행해서 환경 구성할 것.



실행 예)

======== 직원 관리 (데이터베이스 이용) ==============

1. 직원 입력

2. 직원 전체 출력

- 사번 정렬

- 이름 정렬

- 부서 정렬

- 직위 정렬

- 급여 내림차순 정렬

3. 직원 검색 출력

- 사번 검색

- 이름 검색

- 부서 검색

- 직위 검색

4. 직원 수정

5. 직원 삭제

선택(1~5, -1 종료)->1


직원 정보 입력 --------------

(입력하는 과정에서 -1 입력시 입력 중단)

이름?박길동

주민등록번호(YYMMDD-NNNNNNN)?800110-1234567

입사일(YYYY-MM-DD)?2010-10-10

지역번호 종류(1-강원 2-경기 3-경남 4-경북 5-부산 6-서울 7-인천 8-전남 9-전북 10-제주 11-충남 )

지역번호?6

전화번호?010-345-6789

부서번호 종류(1-개발부 2-기획부 3-영업부 4-인사부 5-자재부 6-총무부 7-홍보부 )

부서번호?7

직위번호 종류(1-사장 2-전무 3-상무 4-이사 5-부장 6-차장 7-과장 8-대리 9-사원)

직위번호?9

기본급(최소 840000원 이상)?1000000

수당?100000

직원 정보 입력 완료!



======== 직원 관리 (데이터베이스 이용) ==============

1. 직원 입력

2. 직원 전체 출력

- 사번 정렬

- 이름 정렬

- 부서 정렬

- 직위 정렬

- 급여 내림차순 정렬

3. 직원 검색 출력

- 사번 검색

- 이름 검색

- 부서 검색

- 직위 검색

4. 직원 수정

5. 직원 삭제

선택(1~5, -1 종료)->2


직원 전체 출력(서브 메뉴)-------------

1.사번 정렬

2.이름 정렬

3.부서 정렬

4.직위 정렬

5.급여 내림차순 정렬

선택(1~5, -1 종료)->1


전체 인원: 62명

------------------------------------------------------------------

사번 이름   주민번호       입사일     지역 전화번호      부서   직위 기본급  수당   급여

1001 홍길동 771212-1022432 1998-10-11 서울 011-2356-4528 기획부 부장 2610000 200000 2810000

1002 이순신 801007-1544236 2000-11-29 경기 010-4758-6532 총무부 사원 1320000 200000 1520000

...



======== 직원 관리 (데이터베이스 이용) ==============

1. 직원 입력

2. 직원 전체 출력

- 사번 정렬

- 이름 정렬

- 부서 정렬

- 직위 정렬

- 급여 내림차순 정렬

3. 직원 검색 출력

- 사번 검색

- 이름 검색

- 부서 검색

- 직위 검색

4. 직원 수정

5. 직원 삭제

선택(1~5, -1 종료)->3


직원 검색 출력(서브 메뉴)-------------

1.사번 검색

2.이름 검색

3.부서 검색

4.직위 검색

선택(1~4, -1 종료)->1


검색할 사번?1001


------------------------------------------------------------------

사번 이름   주민번호       입사일     지역 전화번호      부서   직위 기본급  수당   급여

1001 홍길동 771212-1022432 1998-10-11 서울 011-2356-4528 기획부 부장 2610000 200000 2810000



======== 직원 관리 (데이터베이스 이용) ==============

1. 직원 입력

2. 직원 전체 출력

- 사번 정렬

- 이름 정렬

- 부서 정렬

- 직위 정렬

- 급여 내림차순 정렬

3. 직원 검색 출력

- 사번 검색

- 이름 검색

- 부서 검색

- 직위 검색

4. 직원 수정

5. 직원 삭제

선택(1~5, -1 종료)->4


수정하고자하는 자료의 사번?1001


------------------------------------------------------------------

사번 이름   주민번호       입사일     지역 전화번호      부서   직위 기본급  수당   급여

1001 홍길동 771212-1022432 1998-10-11 서울 011-2356-4528 기획부 부장 2610000 200000 2810000


직원 정보 수정 --------------

(입력하는 과정에서 -1 입력시 기존 데이터 재입력)

이름?-1

주민등록번호(YYMMDD-NNNNNNN)?-1

입사일(YYYY-MM-DD)?-1

지역번호 종류(1-강원 2-경기 3-경남 4-경북 5-부산 6-서울 7-인천 8-전남 9-전북 10-제주 11-충남 )

지역번호?-1

전화번호?-1

부서번호 종류(1-개발부 2-기획부 3-영업부 4-인사부 5-자재부 6-총무부 7-홍보부 )

부서번호?1

직위번호 종류(1-사장 2-전무 3-상무 4-이사 5-부장 6-차장 7-과장 8-대리 9-사원 )

직위번호?8

기본급(최소 840000원 이상)?1200000

수당?200000

직원 정보 수정 완료!



======== 직원 관리 (데이터베이스 이용) ==============

1. 직원 입력

2. 직원 전체 출력

- 사번 정렬

- 이름 정렬

- 부서 정렬

- 직위 정렬

- 급여 내림차순 정렬

3. 직원 검색 출력

- 사번 검색

- 이름 검색

- 부서 검색

- 직위 검색

4. 직원 수정

5. 직원 삭제

선택(1~5, -1 종료)->5


삭제하고자하는 자료의 사번?1001


------------------------------------------------------------------

사번 이름   주민번호       입사일     지역 전화번호      부서   직위 기본급  수당   급여

1001 홍길동 771212-1022432 1998-10-11 서울 011-2356-4528 기획부 부장 2610000 200000 2810000


이 자료를 삭제하시겠습니까(Y/N)?y

1개의 행이 삭제됨.



======== 직원 관리 (데이터베이스 이용) ==============

1. 직원 입력

2. 직원 전체 출력

- 사번 정렬

- 이름 정렬

- 부서 정렬

- 직위 정렬

- 급여 내림차순 정렬

3. 직원 검색 출력

- 사번 검색

- 이름 검색

- 부서 검색

- 직위 검색

4. 직원 수정

5. 직원 삭제

선택(1~5, -1 종료)->-1


프로그램이 종료되었습니다.


--------------------------------------

--지역 검색 쿼리

SELECT city_id, city FROM city ORDER BY city_id


--부서 검색 쿼리

SELECT buseo_id, buseo FROM buseo ORDER BY buseo_id


--직위 검색 쿼리

SELECT jikwi_id, jikwi FROM jikwi ORDER BY jikwi_id


--직위별 최소 기본급 검색 쿼리

SELECT min_basicpay FROM jikwi WHERE jikwi_id=9


--입력 쿼리

INSERT INTO emp (emp_id, name, ssn, ibsadate, city_id, tel, buseo_id, jikwi_id, basicpay, sudang) 

VALUES (empSeq.nextval

, '홍길동'

, '771212-1022432'

, '1998-10-11'

, 6

, '011-2356-4528'

, 7

, 9

, 2610000

, 200000)


--직원 명단 출력 쿼리(emp 테이블이 아니라 empView 이용)

SELECT emp_id, name, ssn, TO_CHAR(ibsadate, 'YYYY-MM-DD') AS ibsadate

, city_id, city, tel, buseo_id, buseo, jikwi_id, jikwi, basicpay, sudang, pay 

FROM empView 

ORDER BY emp_id ASC


--전체 직원수 출력 쿼리 (emp 테이블이나 empView나 결과 동일함)

SELECT COUNT(*) AS count 

FROM emp


--검색 쿼리(emp테이블이 아니라 empView이용)


SELECT emp_id, name, ssn, TO_CHAR(ibsadate, 'YYYY-MM-DD') AS ibsadate

, city_id, city, tel, buseo_id, buseo, jikwi_id, jikwi, basicpay, sudang, pay 

FROM empView 

WHERE emp_id = 1001

ORDER BY emp_id ASC


--수정 쿼리

UPDATE emp

SET name = '새로운이름'

,ssn='새로운 주민번호'

,ibsadate='새로운 입사일'

,city_id=1

,tel='새로운 전화번호'

,buseo_id=1

,jikwi_id=1

,basicpay=1

,sudang=1

WHERE emp_id = 1001


--삭제 쿼리

DELETE emp

WHERE emp_id = 1001


------------------------------------

//DBConn.java

package com.test;


import java.sql.*;


public class DBConn {

//Singleton pattern

private static Connection dbConn;

public static Connection getConnection()

throws SQLException, ClassNotFoundException {

if (dbConn == null) {


String url = "jdbc:oracle:thin:@localhost:1521:xe";

String user = "scott";

String pw = "tiger";

Class.forName("oracle.jdbc.driver.OracleDriver");

dbConn = DriverManager.getConnection(url, user, pw);


}

return dbConn;

}

public static void close()

throws SQLException {

if (dbConn != null) {

if (!dbConn.isClosed()) {

dbConn.close();

}

}

dbConn = null;

}

}




//EmployeeDTO.java

package com.test;


public class EmployeeDTO {

//멤버변수

private int emp_id, city_id, buseo_id, jikwi_id;

private int min_basicpay, basicpay, sudang, pay;

private String ibsadate; //날짜지만 문자열로 취급

private String name, ssn, city, buseo, jikwi, tel;

//getter, setter

public int getEmp_id() {

return emp_id;

}

public void setEmp_id(int emp_id) {

this.emp_id = emp_id;

}

public int getCity_id() {

return city_id;

}

public void setCity_id(int city_id) {

this.city_id = city_id;

}

public int getBuseo_id() {

return buseo_id;

}

public void setBuseo_id(int buseo_id) {

this.buseo_id = buseo_id;

}

public int getJikwi_id() {

return jikwi_id;

}

public void setJikwi_id(int jikwi_id) {

this.jikwi_id = jikwi_id;

}

public int getMin_basicpay() {

return min_basicpay;

}

public void setMin_basicpay(int min_basicpay) {

this.min_basicpay = min_basicpay;

}

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 getIbsadate() {

return ibsadate;

}

public void setIbsadate(String ibsadate) {

this.ibsadate = ibsadate;

}

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 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 String getTel() {

return tel;

}

public void setTel(String tel) {

this.tel = tel;

}


}




//Oracle11.java

package com.test;


import java.util.Scanner;


public class Oracle11 {


public static void main(String[] args) {

Process obj = new Process();

Scanner sc = new Scanner(System.in);

do {

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.print("선택(1~5, -1 종료)->");

int menu = sc.nextInt();

if (menu == -1) {

System.out.println("프로그램 종료됨.");

break;

}

switch(menu) {

case 1: obj.menuInsert(); break;

case 2: obj.menuSelect(); break;

case 3: obj.menuSearch(); break;

case 4: obj.menuUpdate(); break;

case 5: obj.menuDelete(); break;

}

}while(true);

}


}





//EmployeeDAO.java

package com.test;


import java.sql.*;

import java.util.*;



public class EmployeeDAO {


private Connection conn;

public void connect() throws SQLException, ClassNotFoundException{

conn = DBConn.getConnection();

}

public void close() throws SQLException {

DBConn.close();

conn = null;

}

//입력되어 있는 도시명 전체 리스트를 컬렉션으로 반환

public ArrayList<EmployeeDTO> cityList() throws SQLException {

ArrayList<EmployeeDTO> list = new ArrayList<EmployeeDTO>();

String sql = String.format("SELECT city_id, city FROM city ORDER BY city_id");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

EmployeeDTO dto = new EmployeeDTO();

dto.setCity_id(rs.getInt("city_id"));

dto.setCity(rs.getString("city"));

list.add(dto);

}

rs.close();

return list;

}


//입력되어 있는 부서명 전체 리스트를 컬렉션으로 반환

public ArrayList<EmployeeDTO> buseoList() throws SQLException {

ArrayList<EmployeeDTO> list = new ArrayList<EmployeeDTO>();

String sql = String.format("SELECT buseo_id, buseo FROM buseo ORDER BY buseo_id");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

EmployeeDTO dto = new EmployeeDTO();

dto.setBuseo_id(rs.getInt("buseo_id"));

dto.setBuseo(rs.getString("buseo"));

list.add(dto);

}

rs.close();

return list;

}

//입력되어 있는 직위명 전체 리스트를 컬렉션으로 반환

public ArrayList<EmployeeDTO> jikwiList() throws SQLException {

ArrayList<EmployeeDTO> list = new ArrayList<EmployeeDTO>();

String sql = String.format("SELECT jikwi_id, jikwi FROM jikwi ORDER BY jikwi_id");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

EmployeeDTO dto = new EmployeeDTO();

dto.setJikwi_id(rs.getInt("jikwi_id"));

dto.setJikwi(rs.getString("jikwi"));

list.add(dto);

}

rs.close();

return list;

}

//직위아이디를 입력받은 후 해당 직위의 최저급여액을 int형으로 반환

public int minBasicpay(int jikwi_id) throws SQLException {

int result = 0;

String sql = String.format("SELECT min_basicpay FROM jikwi WHERE jikwi_id=%d", jikwi_id);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

result = rs.getInt("min_basicpay");

}

rs.close();

return result;

}

public int add(EmployeeDTO dto)

throws SQLException {

int result =0;


String sql = String.format("INSERT INTO emp (emp_id, 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()

, dto.getCity_id()

, dto.getTel()

, dto.getBuseo_id()

, dto.getJikwi_id()

, dto.getBasicpay()

, dto.getSudang());


Statement stmt = conn.createStatement();

result = stmt.executeUpdate(sql);


return result;

}

public ArrayList<EmployeeDTO> lists(String orders) throws SQLException{

ArrayList<EmployeeDTO> arrayList = new ArrayList<EmployeeDTO>();

String sql = String.format("SELECT emp_id, name, ssn, TO_CHAR(ibsadate, 'YYYY-MM-DD') AS ibsadate, city, tel, buseo, jikwi, basicpay, sudang, pay FROM empView %s", orders);

Statement stmt = conn.createStatement();

ResultSet rs =stmt.executeQuery(sql);

while(rs.next()) {

EmployeeDTO dto = new EmployeeDTO();

dto.setEmp_id(rs.getInt("emp_id"));

dto.setName(rs.getString("name"));

dto.setSsn(rs.getString("ssn"));

dto.setIbsadate(rs.getString("ibsadate"));

dto.setCity(rs.getString("city"));

dto.setTel(rs.getString("tel"));

dto.setBuseo(rs.getString("buseo"));

dto.setJikwi(rs.getString("jikwi"));

dto.setBasicpay(rs.getInt("basicpay"));

dto.setSudang(rs.getInt("sudang"));

dto.setPay(rs.getInt("pay"));

arrayList.add(dto);

}

rs.close();

return arrayList;

}

public int count() throws SQLException{

int result = 0;

String sql = String.format("SELECT COUNT(*) AS count FROM emp");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

result = rs.getInt("count");

}

return result;

}

public ArrayList<EmployeeDTO> searchLists(String wheres) throws SQLException {

ArrayList<EmployeeDTO> arrayList = new ArrayList<EmployeeDTO>();

String sql = String.format("SELECT emp_id, name, ssn, TO_CHAR(ibsadate, 'YYYY-MM-DD') AS ibsadate, city_id, city, tel, buseo_id, buseo, jikwi_id, jikwi, basicpay, sudang, pay FROM empView %s ORDER BY emp_id ASC", wheres);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

EmployeeDTO dto = new EmployeeDTO();

dto.setEmp_id(rs.getInt("emp_id"));

dto.setName(rs.getString("name"));

dto.setSsn(rs.getString("ssn"));

dto.setIbsadate(rs.getString("ibsadate"));

dto.setCity_id(rs.getInt("city_id"));

dto.setCity(rs.getString("city"));

dto.setTel(rs.getString("tel"));

dto.setBuseo_id(rs.getInt("buseo_id"));

dto.setBuseo(rs.getString("buseo"));

dto.setJikwi_id(rs.getInt("jikwi_id"));

dto.setJikwi(rs.getString("jikwi"));

dto.setBasicpay(rs.getInt("basicpay"));

dto.setSudang(rs.getInt("sudang"));

dto.setPay(rs.getInt("pay"));

arrayList.add(dto);

}

return arrayList;

}

public int modify (EmployeeDTO dto) throws SQLException {

int result = 0;

String sql = String.format("UPDATE emp SET name = '%s', ssn='%s', ibsadate='%s', 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(), dto.getCity_id(), dto.getTel(), dto.getBuseo_id(), dto.getJikwi_id(), dto.getBasicpay(), dto.getSudang(), dto.getEmp_id());

Statement stmt = conn.createStatement();

result = stmt.executeUpdate(sql);

return result;

}


public int remove (String wheres) throws SQLException {

int result = 0;

String sql = String.format("DELETE emp %s", wheres);

Statement stmt = conn.createStatement();

result = stmt.executeUpdate(sql);

return result;

}

}







//Process.java

package com.test;


import java.util.*;


public class Process {


private EmployeeDAO dao;

public Process() {

dao = new EmployeeDAO();

}

public void menuInsert(){

Scanner sc = new Scanner(System.in);

try {

dao.connect();


//--------------------------------

//외부입력과정

//지역, 부서, 직위의 경우 종류 출력

//직위별 최소 급여 검색 및 출력

//입력과정에서 -1입력시 입력 중단 -> 강제 예외(Exception)발생

//무한실행문이 아니므로 break 안됨. return 구문으로 사용하면 void이므로 반환없이 메소드 종료.

//return 사용시 close() 메소드 실행안되므로 finally 처리.

System.out.println("직원 정보 입력 --------------");

System.out.println("(입력하는 과정에서 -1 입력시 입력 중단)");

System.out.print("이름?");

String name = sc.next();

if (name.equals("-1")) { // 강제예외발생시켜서 메소드 종료와 함께 catch와 finally를 실행시킬수 있도록 함.

throw new Exception("입력 중단됨.");

}

System.out.print("주민등록번호(YYMMDD-NNNNNNN)?");

String ssn = sc.next();

if (ssn.equals("-1")) {

throw new Exception("입력 중단됨.");

}

System.out.print("입사일(YYYY-MM-DD)?");

String ibsadate = sc.next();

if (ibsadate.equals("-1")) {

throw new Exception("입력 중단됨.");

}

//지역번호와 지역명을 -> 메세지로 -> 출력하는 과정 추가

System.out.println(this.cityList()); // this 는 빼도됨

System.out.print("지역번호?");

int city_id = sc.nextInt();

if (city_id == -1) {

throw new Exception("입력 중단됨.");

}

System.out.print("전화번호?");

String tel = sc.next();

if (tel.equals("-1")) {

throw new Exception("입력 중단됨.");

}

System.out.println(this.buseoList());

System.out.print("부서번호?");

int buseo_id = sc.nextInt();

if (buseo_id == -1) {

throw new Exception("입력 중단됨.");

}

System.out.println(this.jikwiList());

System.out.print("직위번호?");

int jikwi_id = sc.nextInt();

if (jikwi_id == -1) {

throw new Exception("입력 중단됨.");

}

System.out.print(String.format("기본급(최소 %d원 이상)?", dao.minBasicpay(jikwi_id)));

int basicpay = sc.nextInt();

if (basicpay == -1) {

throw new Exception("입력 중단됨.");

}

System.out.print("수당?");

int sudang = sc.nextInt();

if (sudang == -1) {

throw new Exception("입력 중단됨.");

}

//--------------------------------

//--------------------------------

//입력된 데이터를 데이터베이스에 입력하는 과정

EmployeeDTO dto = new EmployeeDTO();

dto.setName(name);

dto.setSsn(ssn);

dto.setIbsadate(ibsadate);

dto.setCity_id(city_id);

dto.setTel(tel);

dto.setBuseo_id(buseo_id);

dto.setJikwi_id(jikwi_id);

dto.setBasicpay(basicpay);

dto.setSudang(sudang);


dao.add(dto);

System.out.printf("%n직원 정보 입력 완료!%n");

//--------------------------------

} catch(Exception e) {

System.out.println(e.toString());

} finally { // 예외 발생 유무와 관계없이 finally 구문에 있는 실행문은 반드시 실행된다.

try {

dao.close();

} catch(Exception e) {

}

}

}

public void menuSelect(){

try {

dao.connect();

//서브메뉴 출력 부분 추가

System.out.println();

System.out.println("직원 전체 출력(서브 메뉴)-------------");

System.out.println("1.사번 정렬");

System.out.println("2.이름 정렬");

System.out.println("3.부서 정렬");

System.out.println("4.직위 정렬");

System.out.println("5.급여 내림차순 정렬");

System.out.print("선택(1~5, -1 종료)->");

Scanner sc = new Scanner(System.in);

int submenu = sc.nextInt();

if (submenu == -1){

return; //무한루프 안이 아니고 메소드 안에서 종료이므로 리턴.

}

//서브메뉴 선택 단계 추가

String orders = "";

switch (submenu) {

case 1 : orders = "ORDER BY emp_id ASC"; break;

case 2 : orders = "ORDER BY name ASC"; break;

case 3 : orders = "ORDER BY buseo ASC"; break;

case 4 : orders = "ORDER BY jikwi ASC"; break;

case 5 : orders = "ORDER BY pay ASC"; break;

}

//정렬 기준에 따라서 출력 메소드(lists()) 호출

//리턴 받은 컬렉션 데이터를 화면에 출력.

System.out.println();

System.out.printf("전체 인원: %d명%n", dao.count());

System.out.println("--------------------------------------------------------------------------------------------");

System.out.println("사번 이름   주민번호       입사일     지역 전화번호      부서   직위  기본급    수당    급여");

for (EmployeeDTO dto : dao.lists(orders)) {

System.out.printf("%4d %3s %14s %s %s %13s %s %s %7d %7d %7d%n", dto.getEmp_id(), dto.getName(), dto.getSsn(), dto.getIbsadate()

           , dto.getCity(), dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay()

           , dto.getSudang(), dto.getPay());

}

dao.close();

} catch(Exception e) {

System.out.println(e.toString());

}

}

public void menuSearch(){

try {

dao.connect();

System.out.println();

//서브 메뉴 출력

System.out.println("직원 검색 출력(서브 메뉴)-------------");

System.out.println("1.사번 검색");

System.out.println("2.이름 검색");

System.out.println("3.부서 검색");

System.out.println("4.직위 검색");

System.out.print("선택(1~4, -1 종료)->");


Scanner sc = new Scanner(System.in);

int submenu = sc.nextInt();

if (submenu == -1) {

return;

}

//서브 메뉴 선택

String wheres = "";

System.out.println();

switch (submenu) {

case 1: 

System.out.print("검색할 사번?");

String emp_id = sc.next();

wheres = String.format("WHERE emp_id=%s", emp_id);

break;

case 2:

System.out.print("검색할 이름?");

String name = sc.next();

wheres = String.format("WHERE name='%s'", name);

break;

case 3:

System.out.print("검색할 부서?");

String buseo = sc.next();

wheres = String.format("WHERE buseo='%s'", buseo);

break;

case 4:

System.out.print("검색할 직위?");

String jikwi = sc.next();

wheres = String.format("WHERE jikwi='%s'", jikwi);

break;

}

System.out.println();

//검색 기준에 따라서 검색 메소드(searchLists()) 호출

//리턴 받은 컬렉션 데이터를 화면에 출력

//경우에 따른 검색 결과 없음 메시지 출력

ArrayList<EmployeeDTO> arrayList = dao.searchLists(wheres);

if (arrayList.size() > 0) {

System.out.println("--------------------------------------------------------------------------------------------");

System.out.println("사번 이름   주민번호       입사일     지역 전화번호      부서   직위  기본급    수당    급여");

for (EmployeeDTO dto : arrayList) {

System.out.printf("%4d %3s %14s %s %s %13s %s %s %7d %7d %7d%n", dto.getEmp_id(), dto.getName(), dto.getSsn(), dto.getIbsadate()

           , dto.getCity(), dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay()

           , dto.getSudang(), dto.getPay());

}

} else {

System.out.println("검색 결과가 없습니다.");

}

dao.close();

} catch(Exception e) {

System.out.println(e.toString());

}

}

public void menuUpdate(){

try {

dao.connect();

//수정 대상 검색 과정(사번 기준) 추가

//검색 결과 출력

//검색 결과 있는 경우만 수정 화면 진행

//EmployeeDTO 객체에 수정 데이터 작성

//수정 메소드(modify()) 호출

System.out.println();

System.out.print("수정하고자하는 자료의 사번?");

Scanner sc = new Scanner(System.in);

int emp_id = sc.nextInt();

String wheres = String.format("WHERE emp_id = %d", emp_id);

ArrayList<EmployeeDTO> arrayList = dao.searchLists(wheres);

if (arrayList.size() > 0) {

//검색결과 출력

EmployeeDTO dto = arrayList.get(0); // get(0)는 arrayList가 가진 맨 처음 가진 값을 가져오게함.

System.out.println("--------------------------------------------------------------------------------------------");

System.out.println("사번 이름   주민번호       입사일     지역 전화번호      부서   직위  기본급    수당    급여");

System.out.printf("%4d %3s %14s %s %s %13s %s %s %7d %7d %7d%n", dto.getEmp_id(), 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("(입력하는 과정에서 -1 입력시 기존 데이터 재입력)");

System.out.print("이름?");

String name = sc.next();

if(name.equals("-1")) {

name = dto.getName();

}

System.out.print("주민등록번호(YYMMDD-NNNNNNN)?");

String ssn = sc.next();

if (ssn.equals("-1")) {

ssn = dto.getSsn();

}

System.out.print("입사일(YYYY-MM-DD)?");

String ibsadate = sc.next();

if (ibsadate.equals("-1")) {

ibsadate = dto.getIbsadate();

}

//지역번호와 지역명을 -> 메세지로 -> 출력하는 과정 추가

System.out.println(this.cityList()); // this 는 빼도됨

System.out.print("지역번호?");

int city_id = sc.nextInt();

if (city_id == -1) {

city_id = dto.getCity_id();

}

System.out.print("전화번호?");

String tel = sc.next();

if (tel.equals("-1")) {

tel = dto.getTel();

}

System.out.println(this.buseoList());

System.out.print("부서번호?");

int buseo_id = sc.nextInt();

if (buseo_id == -1) {

buseo_id = dto.getBuseo_id();

}

System.out.println(this.jikwiList());

System.out.print("직위번호?");

int jikwi_id = sc.nextInt();

if (jikwi_id == -1) {

jikwi_id = dto.getJikwi_id();

}

System.out.print(String.format("기본급(최소 %d원 이상)?", dao.minBasicpay(jikwi_id)));

int basicpay = sc.nextInt();

if (basicpay == -1) {

basicpay = dto.getBasicpay();

}

System.out.print("수당?");

int sudang = sc.nextInt();

if (sudang == -1) {

sudang = dto.getSudang();

}

if (name.equals("-1") && ssn.equals("-1") && ibsadate.equals("-1") && city_id == -1 && tel.equals("-1") && buseo_id == -1 && jikwi_id == -1 && basicpay == -1 && sudang == -1) {

System.out.println("모든 항목을 수정하지 않고, 메인메뉴로 돌아갑니다.");

} else {

EmployeeDTO newDto = new EmployeeDTO();

newDto.setEmp_id(emp_id);

newDto.setName(name);

newDto.setSsn(ssn);

newDto.setIbsadate(ibsadate);

newDto.setCity_id(city_id);

newDto.setTel(tel);

newDto.setBuseo_id(buseo_id);

newDto.setJikwi_id(jikwi_id);

newDto.setBasicpay(basicpay);

newDto.setSudang(sudang);

int result = dao.modify(newDto);

if (result == 1) {

System.out.println("직원 정보 수정 완료!");

}

}

} else {

System.out.println("검색 결과가 없습니다.");

}

dao.close();

} catch(Exception e) {

System.out.println(e.toString());

}

}

public void menuDelete(){

try {

dao.connect();

System.out.println();

System.out.print("수정하고자하는 자료의 사번?");

Scanner sc = new Scanner(System.in);

int emp_id = sc.nextInt();

String wheres = String.format("WHERE emp_id = %d", emp_id);

ArrayList<EmployeeDTO> arrayList = dao.searchLists(wheres);

if (arrayList.size() > 0) {

//검색결과 출력

EmployeeDTO dto = arrayList.get(0); // get(0)는 arrayList가 가진 맨 처음 가진 값을 가져오게함.

System.out.println("--------------------------------------------------------------------------------------------");

System.out.println("사번 이름   주민번호       입사일     지역 전화번호      부서   직위  기본급    수당    급여");

System.out.printf("%4d %3s %14s %s %s %13s %s %s %7d %7d %7d%n", dto.getEmp_id(), dto.getName(), dto.getSsn(), dto.getIbsadate()

           , dto.getCity(), dto.getTel(), dto.getBuseo(), dto.getJikwi(), dto.getBasicpay()

           , dto.getSudang(), dto.getPay());

//삭제 여부 물어보는 과정 추가

//삭제 메소드(remove) 호출

System.out.print("이 자료를 삭제하시겠습니까(Y/N)?");

String answer = sc.next();

if (answer.equals("y") || answer.equals("Y")) {

int result = dao.remove(wheres);

if (result == 1) {

System.out.println("1개의 행이 삭제됨.");

}

}

} else {

System.out.println("검색 결과가 없습니다.");

}

dao.close();

} catch(Exception e) {

System.out.println(e.toString());

}

}

public String cityList() {

StringBuilder result = new StringBuilder();

//지역번호 종류(1-강원 2-경기 3-경남 4-경북 5-부산 6-서울 7-인천 8-전남 9-전북 10-제주 11-충남)

try{

result.append(String.format("지역번호 종류("));

for (EmployeeDTO dto : dao.cityList()) {

result.append(String.format("%d-%s ", dto.getCity_id(), dto.getCity()));

}

result.append(String.format(")"));

} catch(Exception e) {

System.out.println(e.toString());

}

return result.toString();

}

public String buseoList() {

StringBuilder result = new StringBuilder();

//부서번호 종류(1-개발부 2-기획부 3-영업부 4-인사부 5-자재부 6-총무부 7-홍보부 )

try{

result.append(String.format("부서번호 종류("));

for (EmployeeDTO dto : dao.buseoList()) {

result.append(String.format("%d-%s ", dto.getBuseo_id(), dto.getBuseo()));

}

result.append(String.format(")"));

} catch(Exception e) {

System.out.println(e.toString());

}

return result.toString();

}

public String jikwiList() {

StringBuilder result = new StringBuilder();

//직위번호 종류(1-사장 2-전무 3-상무 4-이사 5-부장 6-차장 7-과장 8-대리 9-사원 )

try{

result.append(String.format("부서번호 종류("));

for (EmployeeDTO dto : dao.jikwiList()) {

result.append(String.format("%d-%s ", dto.getJikwi_id(), dto.getJikwi()));

}

result.append(String.format(")"));

} catch(Exception e) {

System.out.println(e.toString());

}

return result.toString();

}

}




-----------------------------------------------



WRITTEN BY
빨강꼬마

,