Create Table - Score
CREATE TABLE score (
num NUMBER PRIMARY KEY,
name VARCHAR2(30) NOT NULL,
korean NUMBER(3)NOT NULL,
english NUMBER(3) NOT NULL,
math NUMBER(3) NOT NULL,
sum NUMBER(3) NOT NULL,
avg NUMBER(3) NOT NULL,
grade CHAR(1) NOT NULL,
reg_date DATE NOT NULL
);
CREATE SEQUENCE score_seq;
ScoreDAO
package kr.s38.jdbc.score;
import java.sql.*;
import kr.util.DBUtil;
public class ScoreDAO {
public void insertScore (String name, int korean , int english , int math,
int sum, int avg, String grade) {
Connection conn = null;
PreparedStatement pstmt= null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "INSERT INTO score (num, korean, english, math, sum, avg, grade, reg_date) VALUES(score_seq.nextval,?,?,?,?,?,?,?,SYSDATE)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setInt(2, korean);
pstmt.setInt(3, english);
pstmt.setInt(4, math);
sum = korean+english+math;
pstmt.setInt(5, sum);
avg = sum / 3;
pstmt.setInt(6, avg);
pstmt.setString(7, grade);
int count = pstmt.executeUpdate();
System.out.println(count + "개의 행을 삽입했습니다.");
}catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
public void selectScore() {
Connection conn = null;
PreparedStatement pstmt= null;
String sql = null;
ResultSet rs = null;
try {
conn = DBUtil.getConnection();
sql = "SELECT * FROM score ORDER BY num";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
System.out.println("==========");
if (rs.next()) {
System.out.println("번호\t이름\t총점\t평균\t등급");
do {
System.out.print(rs.getInt("num"));
System.out.print("\t");
System.out.print(rs.getString("name"));
System.out.print("\t");
System.out.print(rs.getInt("sum"));
System.out.print("\t");;
System.out.print(rs.getInt("avg"));
System.out.print("\t");
System.out.println(rs.getString("grade"));
}
while(rs.next());
}
else {
System.out.println("등록된 데이터가 없습니다.");
}
}catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.executeClose(rs, pstmt, conn);
}
}
public void selectDetailScore(int num) {
Connection conn = null;
PreparedStatement pstmt= null;
String sql = null;
ResultSet rs = null;
try {
conn = DBUtil.getConnection();
sql = "SELECT * FROM score WHERE num = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,num);
rs = pstmt.executeQuery();
System.out.println("==========");
if (rs.next()) {
System.out.println("번호 : " + rs.getInt("num"));
System.out.println("이름 : " + rs.getString("name"));
System.out.println("국어 : " + rs.getInt("korean"));
System.out.println("영어 : " + rs.getInt("english"));
System.out.println("수학 : " + rs.getInt("math"));
System.out.println("총점 : " + rs.getInt("sum"));
System.out.println("평균 : " + rs.getInt("avg"));
System.out.println("등급 : " + rs.getString("grade"));
System.out.println("등록 날짜 : " + rs.getDate("reg_date"));
}
else {
System.out.println("등록된 데이터가 없습니다.");
}
}catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.executeClose(rs, pstmt, conn);
}
}
public void updateScore(int num, String name, int korean, int english, int math,
int sum, int avg, String grade) {
Connection conn = null;
PreparedStatement pstmt= null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "UPDATE score SET name = ?, korean = ?, english = ?, math=?, sum=?,avg=?,grade=? WHERE num =?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setInt(2, korean);
pstmt.setInt(3, english);
pstmt.setInt(4, math);
pstmt.setInt(5, sum);
pstmt.setInt(6, avg);
pstmt.setString(7, grade);
pstmt.setInt(8, num);
int count = pstmt.executeUpdate();
System.out.println(count + "개의 행이 수정되었습니다.");
}catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
public void deleteScore(int num) {
Connection conn = null;
PreparedStatement pstmt= null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "DELETE FROM score WHERE num = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,num);
int count = pstmt.executeUpdate();
System.out.println(count + "개 행이 삭제되었습니다.");
}catch (Exception e) {
e.printStackTrace();
}finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
}
ScoreMain
package kr.s38.jdbc.score;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ScoreMain {
private BufferedReader br;
private ScoreDAO score;
public ScoreMain() {
try {
br = new BufferedReader(new InputStreamReader(System.in));
score = new ScoreDAO();
callMenu();
}catch (Exception e) {
e.printStackTrace();
} finally {
if(br != null) try {br.close();} catch(IOException e) {}
}
}
public void callMenu() throws IOException {
while(true) {
System.out.print("1. 성적 입력 | 2. 성적 목록 | 3. 성적 상세 보기 | 4. 성적 수정 | 5. 성적 삭제 | 6. 종료 > ");
try {
int no = Integer.parseInt(br.readLine());
if (no == 1) {
System.out.print("이름 : ");
String name = br.readLine();
int korean = parseInputData("국어 : ");
int english = parseInputData("영어 : ");
int math = parseInputData("수학 : ");
int sum = makeSum(korean, english, math);
int avg = makeAvg(sum);
String grade = makeGrade(avg);
score.insertScore(name, korean, english, math, sum, avg, grade);
}
else if (no == 2) {
score.selectScore();
}
else if (no == 3) {
System.out.print("성적 번호 : ");
int num = Integer.parseInt(br.readLine());
score.selectDetailScore(num);
}
else if (no == 4) {
System.out.print("수정할 학생의 번호 : ");
int num = Integer.parseInt(br.readLine());
score.selectDetailScore(num);
System.out.println("===========");
System.out.print("이름 : ");
String name = br.readLine();
int korean = parseInputData("국어 : ");
int english = parseInputData("영어 : ");
int math = parseInputData("수학 : ");
int sum = makeSum(korean, english, math);
int avg = makeAvg(sum);
String grade = makeGrade(avg);
score.updateScore(num, name, korean, english, math, sum, avg, grade);
}
else if (no == 5) {
score.selectScore();
System.out.println("===========");
System.out.print("삭제하려는 학생 번호 : ");
int num = Integer.parseInt(br.readLine());
score.deleteScore(num);
}
else if (no == 6) {
System.out.println("프로그램을 종료하겠습니다.");
break;
}
else {
System.out.println("잘못 입력하셨습니다.");
}
}
catch(NumberFormatException e) {
System.out.println("숫자만 입력 가능합니다.");
}
}
}
public int makeSum(int korean, int english, int math) {
return korean+english+math;
}
public int makeAvg(int sum) {
return sum / 3;
}
public String makeGrade(int avg) {
String grade;
switch (avg / 10) {
case 10:
case 9:
grade = "A"; break;
case 8:
grade = "B"; break;
case 7:
grade = "C"; break;
case 6:
grade = "D"; break;
default:
grade = "F";
}
return grade;
}
public int parseInputData(String course) throws IOException {
while(true) {
System.out.print(course);
try {
int num = Integer.parseInt(br.readLine());
if(num<0 || num > 100) {
throw new ScoreValueException("0부터 100사이만 입력 가능");
}
return num;
}
catch (NumberFormatException e) {
System.out.println("숫자만 입력 가능");
}
catch (ScoreValueException e) {
System.out.println(e.getMessage());
}
}
}
public static void main(String[] args) {
new ScoreMain();
}
}
ScoreValueException
package kr.s38.jdbc.score;
public class ScoreValueException extends Exception {
public ScoreValueException(String message) {
super(message);
}
}
Create Tables - SHOP
CREATE TABLE sitem (
item_num NUMBER PRIMARY KEY,
item_name VARCHAR2(30) NOT NULL,
item_price NUMBER(9) NOT NULL,
item_date DATE DEFAULT SYSDATE NOT NULL
);
CREATE SEQUENCE sitem_seq;
CREATE TABLE customer(
cust_id VARCHAR2(30) PRIMARY KEY,
cust_name VARCHAR2(30) NOT NULL,
cust_address VARCHAR2(90) NOT NULL,
cust_tel VARCHAR2(20) NOT NULL,
cust_date DATE DEFAULT SYSDATE NOT NULL
);
CREATE TABLE sorder (
order_num NUMBER PRIMARY KEY,
cust_id VARCHAR2(30) REFERENCES customer(cust_id),
item_num NUMBER REFERENCES sitem(item_num),
order_date DATE DEFAULT SYSDATE NOT NULL
);
CREATE SEQUENCE sorder_seq;
ShopDAO
package kr.s39.jdbc.shop;
import java.sql.*;
import kr.util.DBUtil;
public class ShopDAO {
public void insertItem (String item_name , int item_price) {
Connection conn = null;
PreparedStatement pstmt= null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "INSERT INTO sitem VALUES(sitem_seq.nextval,?,?,SYSDATE)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, item_name);
pstmt.setInt(2, item_price);
int count = pstmt.executeUpdate();
System.out.println(count + "개 행을 삽입했습니다.");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
public void selectItems () {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
try {
conn = DBUtil.getConnection() ;
sql = "SELECT * FROM sitem ORDER BY item_num DESC";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
System.out.println("======================");
if ( rs.next() ) {
System.out.println("번호\t상품명\t상품가격\t등록일");
do {
System.out.print(rs.getInt("item_num"));
System.out.print("\t");
System.out.print(rs.getString("item_name"));
System.out.print("\t");
System.out.printf("%,d" , rs.getInt("item_price"));
System.out.print("\t");
System.out.println(rs.getDate("item_date"));
} while(rs.next());
}
else {
System.out.println("등록된 상품이 없습니다.");
}
System.out.println("======================");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
}
public void selectCustomers() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
try {
conn = DBUtil.getConnection() ;
sql = "SELECT * FROM customer ORDER BY cust_id";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
System.out.println("======================");
if(rs.next()) {
System.out.println("아이디\t\t이름\t전화번호\t\t\t주소");
do {
System.out.print(rs.getString("cust_id"));
System.out.print("\t");
System.out.print(rs.getString("cust_name"));
System.out.print("\t");
System.out.print(rs.getString("cust_tel"));
System.out.print("\t");
System.out.println(rs.getString("cust_address"));
} while(rs.next());
}
else {
System.out.println("등록된 회원이 없습니다.");
}
System.out.println("======================");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
}
public void selectOrders() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
try {
conn = DBUtil.getConnection() ;
sql = "SELECT * FROM sorder JOIN sitem USING(item_num) JOIN customer USING(cust_id) ORDER BY order_num DESC";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
System.out.println("======================");
if(rs.next()) {
System.out.println("주문번호\t주문자ID\t\t이름\t\t상품명\t상품 가격\t주문일자");
do {
System.out.print(rs.getInt("order_num"));
System.out.print("\t");
System.out.print(rs.getString("cust_id"));
System.out.print("\t\t");
System.out.print(rs.getString("cust_name"));
System.out.print("\t\t");
System.out.print(rs.getString("item_name"));
System.out.print("\t");
System.out.print(rs.getInt("item_price"));
System.out.print("\t");
System.out.println(rs.getDate("order_date"));
} while(rs.next());
}
else {
System.out.println("구매 내역이 없습니다.");
}
System.out.println("======================");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
}
public void insertCustomer(String cust_id, String cust_name , String cust_address, String cust_tel) {
Connection conn = null;
PreparedStatement pstmt= null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "INSERT INTO customer VALUES(?,?,?,?,SYSDATE)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, cust_id);
pstmt.setString(2, cust_name);
pstmt.setString(3, cust_address);
pstmt.setString(4, cust_tel);
pstmt.executeUpdate();
System.out.println("회원가입이 완료되었습니다");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
public void selectDetailCustomer(String cust_id) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
ResultSet rs = null;
try {
conn = DBUtil.getConnection();
sql = "SELECT * FROM customer WHERE cust_id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, cust_id);
rs = pstmt.executeQuery();
System.out.println("======================");
if(rs.next()) {
System.out.println("아이디 : " + rs.getString("cust_id"));
System.out.println("이름 : " + rs.getString("cust_name"));
System.out.println("주소 : " + rs.getString("cust_address"));
System.out.println("전화번호 : " + rs.getString("cust_tel"));
System.out.println("가입일 : " + rs.getDate("cust_date"));
}
else {
System.out.println("검색된 회원 정보가 없습니다.");
}
System.out.println("======================");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
}
public void insertOrder(String cust_id, int item_num) {
Connection conn = null;
PreparedStatement pstmt= null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "INSERT INTO sorder VALUES(sorder_seq.nextval,?,?,SYSDATE)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, cust_id);
pstmt.setInt(2, item_num);
int count = pstmt.executeUpdate();
System.out.println("구매 완료하였습니다.");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
public void selectOrdersById(String cust_id) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
ResultSet rs = null;
try {
conn = DBUtil.getConnection();
sql = "SELECT * FROM sorder JOIN sitem USING (item_num) WHERE cust_id = ? ORDER BY order_num DESC";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, cust_id);
rs = pstmt.executeQuery();
System.out.println("-----------------------------------------");
System.out.println(cust_id + "님의 구매 내역");
System.out.println("-----------------------------------------");
if(rs.next()) {
System.out.println("주문번호\t아이디\t상품번호\t주문일자");
do {
System.out.print(rs.getInt("order_num"));
System.out.print("\t");
System.out.print(rs.getString("cust_id"));
System.out.print("\t");
System.out.print(rs.getInt("item_num"));
System.out.print("\t");
System.out.println(rs.getDate("order_date"));
} while(rs.next());
}
else {
System.out.println("구매 내역이 없습니다.");
}
System.out.println("======================");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
}
}
ShopAdminMain
package kr.s39.jdbc.shop;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ShopAdminMain {
private BufferedReader br;
private ShopDAO shop;
public ShopAdminMain() {
try {
br = new BufferedReader(new InputStreamReader(System.in));
shop = new ShopDAO();
callMenu();
}catch (Exception e) {
e.printStackTrace();
} finally {
if(br != null) try {br.close();} catch(IOException e) {}
}
}
public void callMenu() throws IOException {
while(true) {
System.out.print(" 1. 상품 등록 | 2. 상품 목록 | 3. 회원 목록 | 4. 구매 목록 | 5. 종료 > ");
try {
int no = Integer.parseInt(br.readLine());
if (no == 1) {
System.out.print("상품명 : ");
String item_name = br.readLine();
System.out.print("상품 가격 : ");
int item_price = Integer.parseInt(br.readLine());
shop.insertItem(item_name, item_price);
}
else if( no == 2) {
shop.selectItems();
}
else if( no == 3) {
shop.selectCustomers();
}
else if( no == 4) {
shop.selectOrders();
}
else if ( no == 5) {
System.out.println("관리자 프로그램을 종료하겠습니다.");
break;
}
else {
System.out.println("잘못 입력하셨습니다.");
}
} catch(NumberFormatException e) {
System.out.println("숫자만 입력해주세요.");
}
}
}
public static void main(String[] args) {
new ShopAdminMain();
}
}
ShopUserMain
package kr.s39.jdbc.shop;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ShopUserMain {
private BufferedReader br;
private ShopDAO shop;
public ShopUserMain() {
try {
br = new BufferedReader(new InputStreamReader(System.in));
shop = new ShopDAO();
callMenu();
}catch (Exception e) {
e.printStackTrace();
} finally {
if(br != null) try {br.close();} catch(IOException e) {}
}
}
public void callMenu() throws IOException {
while(true) {
System.out.print(" 1. 회원 등록 | 2. 회원 상세 | 3. 상품 구매 | 4. 구매 내역 | 5. 종료 > ");
try {
int no = Integer.parseInt(br.readLine());
if (no == 1) {
System.out.print("회원 아이디 : ");
String cust_id = br.readLine();
System.out.print("회원 이름 : ");
String cust_name = br.readLine();
System.out.print("회원 주소 : ");
String cust_address = br.readLine();
System.out.print("전화번호 : ");
String cust_tel = br.readLine();
shop.insertCustomer(cust_id, cust_name, cust_address, cust_tel);
}
else if( no == 2) {
System.out.print("회원 아이디 : ");
String cust_id = br.readLine();
shop.selectDetailCustomer(cust_id);
}
else if( no == 3) {
System.out.print("회원 아이디 : ");
String cust_id = br.readLine();
System.out.print("상품 번호 : ");
int item_num = Integer.parseInt(br.readLine());
shop.insertOrder(cust_id, item_num);
}
else if (no == 4) {
System.out.print("회원 아이디 : ");
String cust_id = br.readLine();
shop.selectOrdersById(cust_id);
}
else if ( no == 5) {
System.out.println("사용자 프로그램을 종료하겠습니다.");
break;
}
else {
System.out.println("잘못 입력하셨습니다.");
}
} catch(NumberFormatException e) {
System.out.println("숫자만 입력해주세요.");
}
}
}
public static void main(String[] args) {
new ShopUserMain();
}
}
Create Tables - BOOK
CREATE TABLE member (
me_id VARCHAR2(10) PRIMARY KEY,
me_passwd VARCHAR2(10) NOT NULL,
me_name VARCHAR2(30) NOT NULL,
me_phone VARCHAR2(13) NOT NULL,
me_regdate DATE DEFAULT SYSDATE NOT NULL
);
CREATE TABLE sbook(
bk_num NUMBER PRIMARY KEY,
bk_name VARCHAR2(20) NOT NULL,
bk_category VARCHAR2(30) NOT NULL,
bk_regdate DATE DEFAULT SYSDATE NOT NULL
);
CREATE SEQUENCE sbook_seq;
CREATE TABLE reservation(
re_num NUMBER PRIMARY KEY,
re_status NUMBER(1) NOT NULL,
bk_num NUMBER REFERENCES sbook(bk_num),
me_id VARCHAR2(10) REFERENCES member(me_id),
re_date DATE DEFAULT SYSDATE NOT NULL,
re_modifydate DATE
);
CREATE SEQUENCE reservation_seq;
BookDAO
package kr.s40.jdbc.book;
import java.sql.*;
import kr.util.DBUtil;
public class BookDAO {
public void insertBook(String bk_name , String bk_category) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "INSERT INTO sbook VALUES (sbook_seq.nextval,?,?,SYSDATE)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,bk_name);
pstmt.setString(2,bk_category);
pstmt.executeUpdate();
System.out.println("책 정보를 추가하였습니다.");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
public void selectListBook() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "SELECT * FROM sbook ORDER BY bk_num DESC";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
System.out.println("======================");
System.out.println("도서번호\t도서명\t도서분류\t등록일");
if(rs.next()) {
do {
System.out.print(rs.getInt("bk_num"));
System.out.print("\t");
System.out.print(rs.getString("bk_name"));
System.out.print("\t");
System.out.print(rs.getString("bk_category"));
System.out.print("\t");
System.out.println(rs.getDate("bk_regdate"));
} while(rs.next());
}
else {
System.out.println("등록된 책 정보가 없습니다.");
}
System.out.println("======================");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
}
public void selectListMember() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "SELECT * FROM member ORDER BY me_regdate DESC";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
System.out.println("======================");
System.out.println("ID\tPW\t이름\t전화번호\t\t\t가입일");
if(rs.next()) {
do {
System.out.print(rs.getString("me_id"));
System.out.print("\t");
System.out.print(rs.getString("me_passwd"));
System.out.print("\t");
System.out.print(rs.getString("me_name"));
System.out.print("\t");
System.out.print(rs.getString("me_phone"));
System.out.print("\t");
System.out.println(rs.getDate("me_regdate"));
} while(rs.next());
}
else {
System.out.println("등록된 회원이 없습니다.");
}
System.out.println("======================");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
}
public void selectListReservation(){
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
ResultSet rs = null;
try {
conn = DBUtil.getConnection();
sql ="SELECT * FROM reservation JOIN sbook USING(bk_num) "
+ "JOIN member USING(me_id) ORDER BY re_num DESC";
pstmt = conn.prepareStatement(sql);;
rs = pstmt.executeQuery();
System.out.println("===================================================");
System.out.println("대출번호\tID\t도서명\t분류\t대출상태\t\t대출일\t\t반납일");
while(rs.next()) {
System.out.print(rs.getInt("re_num"));
System.out.print("\t");
System.out.print(rs.getString("me_id"));
System.out.print("\t");
System.out.print(rs.getString("bk_name"));
System.out.print("\t");
System.out.print(rs.getString("bk_category"));
System.out.print("\t");
if(rs.getInt("re_status") == 0) {
System.out.print("대출가능\t\t");
}
else {
System.out.print("대출중\t\t");
}
System.out.print(rs.getDate("re_date"));
System.out.print("\t");
if (rs.getDate("re_modifydate") == null) {
System.out.println(" ");
}
else {
System.out.println(rs.getDate("re_modifydate"));
}
}
System.out.println("===================================================");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
public int checkId(String me_id) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
ResultSet rs = null;
int count = 0;
try {
conn = DBUtil.getConnection();
sql = "SELECT me_id FROM member WHERE me_id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, me_id);
rs = pstmt.executeQuery();
if(rs.next()) {
count = 1;
}
} catch (Exception e) {
count = 2;
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
return count;
}
public void insertMember(String me_id , String me_passwd, String me_name, String me_phone) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "INSERT INTO member VALUES (?,?,?,?,SYSDATE)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, me_id);
pstmt.setString(2, me_passwd);
pstmt.setString(3, me_name);
pstmt.setString(4, me_phone);
pstmt.executeUpdate();
System.out.println("회원가입이 완료되었습니다.");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
public boolean loginCheck(String me_id, String me_passwd) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
ResultSet rs = null;
boolean flag = false;
try {
conn = DBUtil.getConnection();
sql = "SELECT * FROM member WHERE me_id = ? AND me_passwd = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, me_id);
pstmt.setString(2, me_passwd);
rs = pstmt.executeQuery();
if(rs.next()) {
flag = true;
}
else {
System.out.println("ID 또는 PW에 오류가 발생했습니다.");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
return flag;
}
public int getStatusReservation(int bk_num) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
ResultSet rs = null;
int count = 0;
try{
conn = DBUtil.getConnection();
sql = "SELECT re_status FROM sbook LEFT OUTER JOIN (SELECT * FROM reservation WHERE re_status = 1) "
+ "USING (bk_num) WHERE bk_num = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, bk_num);
rs = pstmt.executeQuery();
if(rs.next()) {
count = rs.getInt("re_status");
} else {
count = -1;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
return count;
}
public int getStatusBack(int re_num , String me_id) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
ResultSet rs = null;
int count = 0;
try {
conn = DBUtil.getConnection();
sql = "SELECT re_status FROM reservation WHERE bk_num = ? AND me_id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, me_id);
pstmt.setInt(2, re_num);
rs = pstmt.executeQuery();
count = rs.getInt("re_satus");
if(count == 1) {
System.out.println("반납 가능");
} else {
System.out.println("반납 불가능");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
return count;
}
public void insertReservation (int bk_num, String me_id) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;;
try {
int status = getStatusReservation(bk_num);
if (status == 1) {
System.out.println("이 책은 현재 대출이 불가능합니다.");
return;
}
conn = DBUtil.getConnection();
sql ="INSERT INTO reservation (re_num, bk_num, me_id, re_status) VALUES(reservation_seq.nextval,?,?,1)";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, bk_num);
pstmt.setString(2, me_id);
pstmt.executeUpdate() ;
System.out.println("대출이 완료되었습니다.");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
public void selectMyList(String me_id){
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
ResultSet rs = null;
try {
conn = DBUtil.getConnection();
sql ="SELECT * FROM reservation JOIN sbook USING(bk_num) "
+ "JOIN member USING(me_id) WHERE me_id = ? ORDER BY re_num DESC ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, me_id);
rs = pstmt.executeQuery();
System.out.println("-----------------------------------------------------------------");
System.out.println("대출번호\tID\t도서명\t분류\t대출상태\t대출일\t\t반납일");
while(rs.next()) {
if(rs.getInt("re_status") == 1) {
System.out.print(rs.getInt("re_num"));
System.out.print("\t");
System.out.print(rs.getString("me_id"));
System.out.print("\t");
System.out.print(rs.getString("bk_name"));
System.out.print("\t");
System.out.print(rs.getString("bk_category"));
System.out.print("\t");
if(rs.getInt("re_status") == 0) {
System.out.print("대출가능\t");
}
else {
System.out.print("대출중\t");
}
System.out.print(rs.getDate("re_date"));
System.out.print("\t");
if (rs.getDate("re_modifydate") == null) {
System.out.println("");
}
else {
System.out.println("대출 내역이 존재하지 않습니다.");
}
}
}
System.out.println("-----------------------------------------------------------------");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
public void updateReservation(int re_num) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
try {
conn = DBUtil.getConnection();
sql = "UPDATE reservation SET re_status = 0, re_modifydate = SYSDATE WHERE re_num = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, re_num);
int count = pstmt.executeUpdate();
System.out.println(count + "개의 도서가 반납 처리 되었습니다.");
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(null, pstmt, conn);
}
}
public void deleteMember(String me_id, String me_passwd) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = null;
ResultSet rs = null;
try {
conn = DBUtil.getConnection();
sql = "SELECT * FROM member WHERE me_id = ? AND me_passwd = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, me_id);
pstmt.setString(2, me_passwd);
rs = pstmt.executeQuery();
if (rs.next()) {
sql = "DELETE FROM member WHERE me_id = ? AND me_passwd = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, me_id);
pstmt.setString(2, me_passwd);
int rowsAffected = pstmt.executeUpdate();
if (rowsAffected > 0) {
System.out.println("탈퇴 처리가 완료되었습니다.");
} else {
System.out.println("회원 정보를 찾을 수 없습니다.");
}
} else {
System.out.println("회원 정보를 찾을 수 없습니다.");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DBUtil.executeClose(rs, pstmt, conn);
}
}
}
BookAdminMain
package kr.s40.jdbc.book;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BookAdminMain {
private BufferedReader br;
private BookDAO book;
public BookAdminMain() {
try {
br = new BufferedReader(new InputStreamReader(System.in));
book = new BookDAO();
callMenu();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(br != null) try { br.close();} catch (IOException e) { }
}
}
public void callMenu() throws IOException{
while(true) {
System.out.print("1. 도서 등록 | 2. 도서 목록 | 3. 회원 목록 | 4. 대출 목록 | 5. 종료 > ");
try {
int no = Integer.parseInt(br.readLine());
if (no == 1) {
System.out.print("도서명 : ");
String bk_name = br.readLine();
System.out.print("분류 : ");
String bk_category = br.readLine();
book.insertBook(bk_name, bk_category);
}
else if(no == 2) {
book.selectListBook();
}
else if(no == 3) {
book.selectListMember();
}
else if(no == 4) {
book.selectListReservation();
}
else if(no == 5) {
System.out.println("관리자 프로그램을 종료합니다.");
break;
}
else {
System.out.println("잘못 입력하셨습니다.");
}
} catch (NumberFormatException e) {
System.out.println("숫자만 입력하세요.");
}
}
}
public static void main(String[] args) {
new BookAdminMain();
}
}
BookUserMain
package kr.s40.jdbc.book;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BookUserMain {
private BufferedReader br;
private BookDAO book;
private String me_id;
private boolean login;
public BookUserMain(){
try {
br = new BufferedReader(new InputStreamReader(System.in));
book = new BookDAO();
callMenu();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(br != null) try { br.close();} catch (IOException e) { }
}
}
public void callMenu() throws IOException{
while(true) {
System.out.print("1. 로그인 | 2. 회원 가입 | 3. 회원 탈퇴 | 4. 종료 >");
try {
int no = Integer.parseInt(br.readLine());
if(no == 1) {
System.out.print("ID : ");
me_id = br.readLine();
System.out.print("PW : ");
String me_passwd = br.readLine();
login = book.loginCheck(me_id, me_passwd);
if(login == true) {
System.out.println(me_id+"님 로그인되었습니다.");
break;
}
}
else if(no == 2) {
System.out.print("ID : ");
me_id = br.readLine();
int check = book.checkId(me_id);
if(check>=1) {
System.out.println("아이디가 중복되었습니다.");
}else {
System.out.print("PW : ");
String me_passwd = br.readLine();
System.out.print("이름 : ");
String me_name = br.readLine();
System.out.print("전화번호 : ");
String me_phone = br.readLine();
book.insertMember(me_id, me_passwd, me_name, me_phone);
}
} else if(no == 3) {
System.out.print("ID : ");
me_id = br.readLine();
System.out.print("PW : ");
String me_passwd = br.readLine();
book.deleteMember(me_id, me_passwd);
}
else if(no == 4) {
System.out.println("사용자 프로그램을 종료합니다.");
break;
}else {
System.out.println("잘못 입력했습니다.");
}
}catch(NumberFormatException e) {
System.out.println("숫자만 입력 가능!");
}
}
while(login) {
System.out.print("1. 도서 대출 | 2. MY대출 목록 | 3. 대출도서 반납 | 4. 종료 > ");
try {
int no2 = Integer.parseInt(br.readLine());
if(no2 == 1) {
book.selectListBook();
System.out.print("도서번호 : ");
int bk_num = Integer.parseInt(br.readLine());
System.out.print("ID : ");
String me_id = br.readLine();
book.insertReservation(bk_num, me_id);
}
else if(no2 == 2) {
System.out.print("ID : ");
me_id = br.readLine();
book.selectMyList(me_id);
}
else if(no2 == 3) {
System.out.print("ID : ");
me_id = br.readLine();
book.selectMyList(me_id);
System.out.print("대출 번호 : ");
int re_num = Integer.parseInt(br.readLine());
book.updateReservation(re_num);
}
else if(no2 == 4) {
System.out.println("회원 프로그램을 종료합니다.");
break;
} else {
System.out.println("잘못 입력하셨습니다.");
}
} catch (NumberFormatException e) {
System.out.println("숫자만 입력하세요.");
}
}
}
public static void main(String[] args) {
new BookUserMain();
}
}