//성적 처리 _ 메뉴 버전 (콘솔 기반 최종)
전날에 이어서~ 문제) 성적 처리. 메뉴 구성 추가. 새 프로젝트에서 구성할 것.
DBConn.java, ScoreDTO, ScoreDAO, Process, Oralce10 클래스 이용.
여러명의 이름, 국어, 영어, 수학 입력 받아서 총점, 평균, 판정, 등수 계산해서 출력. 출력시 이름 오름차순 정렬해서 출력.
실행 예)
======== 성적 처리 ==============
1. 성적 입력
2. 성적 전체 출력
3. 이름 검색 출력
4. 성적 수정
5. 성적 삭제
선택(1~5, -1 종료)->1
성적 입력(이름 국어 영어 수학)?park 80 75 60
성적 입력(이름 국어 영어 수학)?hong 100 90 80
성적 입력(이름 국어 영어 수학)?kim 80 85 80
성적 입력(이름 국어 영어 수학)?-1
======== 성적 처리 ==============
1. 성적 입력
2. 성적 전체 출력
3. 이름 검색 출력
4. 성적 수정
5. 성적 삭제
선택(1~5, -1 종료)->2
번호 이름 국어 영어 수학 총점 평균 판정 등수
2 hong 100 90 80 XXX XXX.X 합격 1
3 kim 80 85 80 XXX XXX.X 합격 2
1 park 80 75 60 XXX XXX.X 합격 3
======== 성적 처리 ==============
1. 성적 입력
2. 성적 전체 출력
3. 이름 검색 출력
4. 성적 수정
5. 성적 삭제
선택(1~5, -1 종료)->3
검색하려는 이름?kim
번호 이름 국어 영어 수학 총점 평균 판정 등수
3 kim 80 85 80 XXX XXX.X 합격 2
======== 성적 처리 ==============
1. 성적 입력
2. 성적 전체 출력
3. 이름 검색 출력
4. 성적 수정
5. 성적 삭제
선택(1~5, -1 종료)->3
검색하려는 이름?choi
검색 결과가 없습니다.
======== 성적 처리 ==============
1. 성적 입력
2. 성적 전체 출력
3. 이름 검색 출력
4. 성적 수정
5. 성적 삭제
선택(1~5, -1 종료)->4
수정하고자하는 자료의 번호?3
번호 이름 국어 영어 수학 총점 평균 판정 등수
3 kim 80 85 80 XXX XXX.X 합격 2
수정할 데이터(이름 국어 영어 수학)?kim 80 90 80
1개의 행이 수정됨.
======== 성적 처리 ==============
1. 성적 입력
2. 성적 전체 출력
3. 이름 검색 출력
4. 성적 수정
5. 성적 삭제
선택(1~5, -1 종료)->5
삭제하고자하는 자료의 번호?3
번호 이름 국어 영어 수학 총점 평균 판정 등수
3 kim 80 85 80 XXX XXX.X 합격 2
이 자료를 삭제하시겠습니까(Y/N)?y
1개의 행이 삭제됨.
======== 성적 처리 ==============
1. 성적 입력
2. 성적 전체 출력
3. 이름 검색 출력
4. 성적 수정
5. 성적 삭제
선택(1~5, -1 종료)->-1
프로그램이 종료되었습니다.
------------------------------------------------------------------------
INSERT INTO score (sid, name, kor, eng, mat) VALUES (scoreSeq.nextval, '%s', %d, %d, %d)
SELECT sid, name, kor, eng, mat, (kor+eng+mat) as tot, (kor+eng+mat)/3 as ave, case when ((kor+eng+mat)/3 >= 60) and (kor<40 or eng<40 or mat<40) then '과락' when ((kor+eng+mat)/3 >= 60) then '합격' else '불합격' end as grade, rank() over(order by (kor+eng+mat) desc) as rank FROM score ORDER BY name asc
-- VIEW 생성 및 select 쿼리 등록
create or replace view scoreView
as
SELECT sid, name, kor, eng, mat, (kor+eng+mat) as tot, (kor+eng+mat)/3 as ave
, case
when ((kor+eng+mat)/3 >= 60) and (kor<40 or eng<40 or mat<40) then '과락'
when ((kor+eng+mat)/3 >= 60) then '합격' else '불합격'
end as grade
, rank() over(order by (kor+eng+mat) desc) as rank
FROM score
ORDER BY name asc;
select sid, name, kor, eng, mat, tot, ave, grade, rank
from scoreView
--인원수 출력 쿼리 샘플
select count(*) as count from score;
--검색 결과 select 쿼리 샘플
select sid, name, kor, eng, mat, tot, ave, grade, rank
from scoreView
where name = 'kim'
--수정 update 쿼리
select sid, name, kor, eng, mat, tot, ave, grade, rank
from scoreView
where sid=1
update score
set name='kim', kor=90 , eng=90 , mat=90
where sid =1
--삭제 delete 쿼리
delete score
where sid =1
------------------------------------------------------------------------
//새 프로젝트 생성(Score_Console)
//DBConn.java -> 오라클 데이터베이스 접속 클래스.
//ScoreDTO.java -> 멤버변수, getter, setter. 등수 관련 멤버 추가.
//ScoreDAO.java -> 연결, 입력, 출력, 검색, 수정, 삭제 메소드.
//Process.java -> 입력, 출력, 검색, 수정, 삭제 관련 인터페이스
//Oralce10.java -> main() 메소드. 주메뉴 무한실행
------------------------------------------------------------------------
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, scity 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, tel, buseo, jikwi, basicpay, sudang, pay
FROM empView
ORDER BY emp_id ASC
--전체 직원수 출력 쿼리 (emp 테이블이나 empView나 결과 동일함)
SELECT COUNT(*) AS count
FROM emp
------------------------------------
//DBConn.java
//연결 전용 클래스 작성
//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) { // 이미 getConnection 을 호출하여 성공한적이 있으면 dbConn 을 그냥 리턴.
// Singleton pattern은 이것을 의미함.
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 city_id, buseo_id, jikwi_id, min_basicpay, emp_id, basicpay, sudang, pay;
private String city, buseo, jikwi, name, ssn, tel;
private String ibsadate; //날짜지만 문자열로 취급.
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 getEmp_id() {
return emp_id;
}
public void setEmp_id(int emp_id) {
this.emp_id = emp_id;
}
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 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 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 getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getIbsadate() {
return ibsadate;
}
public void setIbsadate(String ibsadate) {
this.ibsadate = ibsadate;
}
}
//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();
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);
}
}
'Java > JDBC' 카테고리의 다른 글
[20121105] 4일차(직원관리 최종버전, 방명록 팀 프로젝트) (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