직원관리 콘솔 버전
- 입력과정 이후 작업 진행중..
--------------------------------------
직원 관리_콘솔 버전
-> 새 프로젝트 생성(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();
}
}
-----------------------------------------------
'Java > JDBC' 카테고리의 다른 글
[20121102] 3일차(학생점수 콘솔 최종버전, 직원관리 콘솔 최종버전) (0) | 2012.11.06 |
---|---|
[20121101] 2일차 (JDBC 사용하여 JAVA와 Oracle 연동하기, 클래스 분산작업) (0) | 2012.11.01 |
[20121031] 1일차 (예외처리, try~catch, throws, JDBC사용, JAVA와Oracle연동) (0) | 2012.11.01 |
WRITTEN BY