휴먼교육센터 개발자과정 46,47일차

조하영·2022년 10월 11일
0

DB 접근 순서
드라이버 프로젝트에 로드 -> 드라이버 클래스에 로드-> 커넥션 -> 쿼리 -> 리턴 -> 자원 반납(클로즈)

1. 클래스 분석

전역변수, 메서드 분석

메서드는 호출될때 기능을 제공한다.
생성자는 객체로 생성될때 제일 먼저 실행되는 메서드
다른 메서드는 호출로 기능사용이 가능하지만 생성자는 호출이 불가.
객체로 생성될때만 제일 먼저 호출되고 한번만 호출된다.

2. 메서드 분석

정의, 호출

정의: 접근제어자 리턴타입 메서드명(매개변수){ 기능 }
리턴값: 메서드 실행 후 호출부로 전달하는 값
호출: 정의된 메서드의 기능을 사용

실습

기능
고객등록
고객목록보기
고객 수정 : 아이디로 검색하여 정보수정, 아이디는 수정불가
고객삭제: 아이디로 검색하여 삭제
고객 검색: 아이디로 검색 후 등록된 사용자면 수정, 아니면 종료
고객 검색은 검색어로 아이디나 이름이 검색어에 포함되는 모든 고객의 정보를 출력

업그레이드

메인메뉴는 고객관리/ 상품관이/쇼핑

상품관리는 상품등록, 수정, 삭제, 재고량 분석(평균보다 높은 수량을 가진 상품만 출력하는 기능)

상품은 물건아이디, 이름, 수량, 가격 판매자 이름, 날짜(자동등록)
소핑은 로그린을 먼저하고 로그인 성ㄷ공하면 쇼핑하기 장바구니 보기 메뉴로 이동
로그인 실패시 메인메뉴로 이동
쇼핑하기에서는 물건의 정보를 모두 보여준다.
물건의 아이디와 수량을 입력하고 구매한 날짜는 자동 저장
장바구니 보기 메뉴를 실행하면 물건이름, 물건 아이디, 판매자이름, 가격, 구매날짜, 구매수량, 구매자 주소가 보인다.

1. 디비 쿼리

회원 테이블 생성

create table member2(
id varchar2(10) primary key,
name varchar2(10),
pass varchar2(10),
addr varchar2(50),
point number default 0
);

상품테이블 생성
create table goods(
gid varchar2(10) primary key,
gname varchar2(20),
gprice number default 0,
gcnt number default 0,
selName varchar2(10),
gdate timestamp default sysdate
);

장바구니 테이블 생성
create table gbasket(
no number primary key,
id varchar2(10),
gid varchar2(10),
buyDate timestamp default sysdate,
buyCnt number,
foreign key(id) REFERENCES member2(id)
on delete set null,
foreign key(gid) REFERENCES goods(gid)
on delete set null
);

시퀀스 생성
create sequence no
increment by 1
start with 1
nocycle
;

트리거 생성(기본키 외래키 수정시 자동 수정)
create or replace trigger mem_bask
after update of id on member2
for each row
begin
update gbasket
set id=:new.id
where id=:old.id;
end;

create or replace trigger goods_bask
after update of gid on goods
for each row
begin
update gbasket
set gid=:new.gid
where gid=:old.gid;
end;

장바구니 보기 뷰 생성
create view goodsBasket as
select distinct g.gid, g.gname, g.selname, g.gprice, b.buydate, b.buycnt, m.id, m.addr
from goods g, member2 m, gbasket b
where g.gid = b.gid and m.id = b.id;

2. 자바 코딩

2.1메인 패키지

2.1.1 메인 클래스

package main;


public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("쇼핑몰 관리 프로그램 시작 ");
		new MainMenu();
		System.out.println("쇼핑몰 관리 프로그램 종료 ");
	}

}

2.1.2 메인 메뉴 클래스

package main;

import java.util.Scanner;

import goodsMRG.GoodsManager;
import memberMGR.MemberManager;
import shopping.Login;

public class MainMenu {
	Scanner in = new Scanner(System.in);

	MainMenu(){
	
		for(;;) {
			menu();
			System.out.println("메뉴를 선택해주세요 ");
			String selMenu = in.nextLine();
			if (selMenu.equals("1")) {
				new MemberManager();
			} else if (selMenu.equals("2")) {
				new GoodsManager();
			} else if (selMenu.equals("3")) {
				new Login();
			} else if (selMenu.equals("4")) {
				break;
			} else {
				System.out.println("잘못된 입력입니다.");
			}
		}
	}

	private void menu() {
		System.out.println("--------- ");
		System.out.println("1. 고객관리 ");
		System.out.println("2. 상품관리 ");
		System.out.println("3. 쇼핑하기 ");
		System.out.println("4. 프로그램종료 ");
	}
}

2.2 회원관리 패키지

2.2.1 회원 클래스

package memberMGR;

public class Member {
    private String id;
    private String name;
    private String pass;
    private String addr;
    private int point;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    public int getPoint() {
        return point;
    }

    public void setPoint(int point) {
        this.point = point;
    }

    public void prt() {
        System.out.println("-----------");
        System.out.println("ID: " + id);
        System.out.println("PW: " + pass);
        System.out.println("이름: " + name);
        System.out.println("주소: " + addr);
        System.out.println("포인트: " + point);
    }

}


2.2.2 회원 관리 클래스

package memberMGR;

import java.util.ArrayList;
import java.util.Scanner;

import dao_dto.M_DAO;
import dao_dto.M_DTO;

public class MemberManager {
    M_DAO mdao = new M_DAO();
    Scanner in = new Scanner(System.in);

    public MemberManager() {

        for (;;) {
            menu();
            System.out.println("메뉴를 선택해주세요 ");
            String selMenu = in.nextLine();
            if (selMenu.equals("1")) {
                addMem();
            } else if (selMenu.equals("2")) {
                showMem();
            } else if (selMenu.equals("3")) {
                modMem();
            } else if (selMenu.equals("4")) {
                searchMem();
            } else if (selMenu.equals("5")) {
                delMem();
            } else if (selMenu.equals("6")) {
                break;
            } else {
                System.out.println("잘못된 입력입니다.");
            }
        }

    }

    private void modMem() {
        M_DTO mdto = new M_DTO();
        System.out.println("수정할 ID를 입력해주세요. ");
        String modId = in.nextLine();
        mdto.setId(modId);
        if (!mdao.chkMem(mdto)) {
            System.out.println("고객명을 입력해주세요. ");
            String modName = in.nextLine();
            System.out.println("비밀번호를 입력하세요. ");
            String modPass = in.nextLine();
            System.out.println("주소를 입력하세요. ");
            String modAddr = in.nextLine();
            mdto.setName(modName);
            mdto.setPass(modPass);
            mdto.setAddr(modAddr);

            mdao.modyMem(mdto);
            System.out.println(modId + "(이/가) 수정되었습니다. ");
        } else {
            System.out.println(modId + "(이/가) 없습니다.");
        }
    }

    private void showMem() {
        ArrayList<Member> mList = mdao.allSelect();
        System.out.println("등록된 고객은 " + mList.size() + "명 입니다.");
        for (Member i : mList) {
            i.prt();
        }
    }

    private void searchMem() {
        M_DTO mdto = new M_DTO();
        System.out.println("검색어를 입력해주세요 ");
        String search = in.nextLine();
        mdto.setId(search);
        if (mdao.chkMem(mdto)) {
            ArrayList<Member> mList = mdao.schMem(search);
            for (Member i : mList) {
                i.prt();
            }
        } else {
            System.out.println(search + "(이/가) 없습니다.");
        }
    }

    private void delMem() {
        M_DTO mdto = new M_DTO();
        System.out.println("삭제할 ID를 입력하세요. ");
        String delId = in.nextLine();
        if (mdao.chkMem(mdto)) {
            mdto.setId(delId);
            mdao.deleteWord(mdto);
            System.out.println(delId + "(이/가) 삭제되었습니다. ");
        } else {
            System.out.println(delId + "(이/가) 없습니다.");
        }
    }

    private void addMem() {
        M_DTO mdto = new M_DTO();
        System.out.println("아이디를 입력하새요 ");
        String newId = in.nextLine();
        mdto.setId(newId);
        if (mdao.chkMem(mdto)) {
            System.out.println("고객명을 입력하세요. ");
            String newName = in.nextLine();
            System.out.println("비밀번호를 입력하세요. ");
            String newPass = in.nextLine();
            System.out.println("주소를 입력하세요. ");
            String newAddr = in.nextLine();
            mdto.setName(newName);
            mdto.setPass(newPass);
            mdto.setAddr(newAddr);

            mdao.insertMem(mdto);

            System.out.println(newId + "(이/가) 추가되었습니다.");
        } else {
            System.out.println("이미 등록된 아이디 입니다.");
        }

    }

    private void menu() {
        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.println("6. 이전메뉴 ");
    }
}

2.3 상품관리 패키지

2.3.1 상품 클래스

package goodsMRG;

import java.util.Date;

public class Goods {
    private String gid;
    private String gname;
    private String selName;
    private int gprice;
    private int gcnt;
    private Date gdate;

    public String getGid() {
        return gid;
    }

    public void setGid(String gid) {
        this.gid = gid;
    }

    public String getGname() {
        return gname;
    }

    public void setGname(String gname) {
        this.gname = gname;
    }

    public String getSelName() {
        return selName;
    }

    public void setSelName(String selName) {
        this.selName = selName;
    }

    public int getGprice() {
        return gprice;
    }

    public void setGprice(int gprice) {
        this.gprice = gprice;
    }

    public int getGcnt() {
        return gcnt;
    }

    public void setGcnt(int gcnt) {
        this.gcnt = gcnt;
    }

    public Date getGdate() {
        return gdate;
    }

    public void setGdate(Date gdate) {
        this.gdate = gdate;
    }

    public void prt() {
        System.out.println("-----------");
        System.out.println("ID: " + gid);
        System.out.println("상품명: " + gname);
        System.out.println("가격: " + gprice);
        System.out.println("수량: " + gcnt);
        System.out.println("판매자명: " + selName);
        System.out.println("등록일: " + gdate);
    }

}

2.3.2 상품 관리 클래스

package goodsMRG;

import java.util.ArrayList;
import java.util.Scanner;

import dao_dto.G_DAO;
import dao_dto.G_DTO;

public class GoodsManager {
    G_DTO gdto = new G_DTO();
    G_DAO gdao = new G_DAO();
    Scanner in = new Scanner(System.in);

    public GoodsManager() {

        for (;;) {
            menu();
            System.out.println("메뉴를 선택해주세요 ");
            String selMenu = in.nextLine();
            if (selMenu.equals("1")) {
                addGoods();
            } else if (selMenu.equals("2")) {
                cntChk();
            } else if (selMenu.equals("3")) {
                modGoods();
            } else if (selMenu.equals("4")) {
                searchGoods();
            } else if (selMenu.equals("5")) {
                delGoods();
            } else if (selMenu.equals("6")) {
                break;
            } else {
                System.out.println("잘못된 입력입니다.");
            }
        }

    }

    private void modGoods() {

        System.out.println("수정할 ID를 입력해주세요. ");
        String modId = in.nextLine();
        if (!gdao.chkG(modId)) {
            gdto.setGid(modId);
            System.out.println("상품명을 입력해주세요. ");
            String modName = in.nextLine();
            System.out.println("가격을 입력하세요. ");
            int modPrice = in.nextInt();
            in.nextLine();
            System.out.println("수량을 입력하세요. ");
            int modCnt = in.nextInt();
            in.nextLine();
            System.out.println("판매자명을 입력해주세요. ");
            String modSelName = in.nextLine();
            gdto.setGname(modName);
            gdto.setGprice(modPrice);
            gdto.setGcnt(modCnt);
            gdto.setSelName(modSelName);

            gdao.modyG(gdto);
            System.out.println(modId + "(이/가) 수정되었습니다. ");
        } else {
            System.out.println(modId + "(이/가) 없습니다.");
        }
    }

    private void cntChk() {
        ArrayList<Goods> gList = gdao.cntCheck();
        System.out.println("평균 재고량 보다 많은 상품은 " + gList.size() + "개 입니다.");
        for (Goods i : gList) {
            i.prt();
        }
    }

    private void searchGoods() {
        System.out.println("검색어를 입력해주세요(ID,상품명)");
        String search = in.nextLine();
        if (gdao.chkG(search)) {
            ArrayList<Goods> gList = gdao.schG(search);
            for (Goods i : gList) {
                i.prt();
            }
        } else {
            System.out.println(search + "(이/가) 없습니다.");
        }
    }

    private void delGoods() {
        System.out.println("삭제할 ID를 입력하세요. ");
        String delId = in.nextLine();
        if (!gdao.chkG(delId)) {
            gdao.deleteG(delId);
            System.out.println(delId + "(이/가) 삭제되었습니다. ");
        } else {
            System.out.println(delId + "(이/가) 없습니다.");
        }
    }

    private void addGoods() {
        System.out.println("상품의 아이디를 입력하새요 ");
        String newId = in.nextLine();
        if (gdao.chkG(newId)) {
            gdto.setGid(newId);
            System.out.println("상품의 이름을 입력하세요. ");
            String newName = in.nextLine();
            System.out.println("상품의 가격을 입력하세요. ");
            int newPrice = in.nextInt();
            in.nextLine();
            System.out.println("상품의 수량을 입력하세요. ");
            int newCnt = in.nextInt();
            in.nextLine();
            System.out.println("판매자의 이름을 입력하세요. ");
            String newSell = in.nextLine();
            gdto.setGname(newName);
            gdto.setGprice(newPrice);
            gdto.setGcnt(newCnt);
            gdto.setSelName(newSell);

            gdao.insertG(gdto);

            System.out.println(newId + "(이/가) 추가되었습니다.");
        } else {
            System.out.println("이미 등록된 아이디 입니다.");
        }

    }

    private void menu() {
        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.println("6. 이전메뉴 ");
    }
}

2.4 쇼핑 패키지

2.4.1 장바구니 상품 클래스

package shopping;

import java.util.Date;

public class Basket {
    private String gid;
    private String gname;
    private String selName;
    private int gprice;
    private Date buyDate;
    private int buyCnt;
    private String id;
    private String addr;

    public String getGname() {
        return gname;
    }

    public void setGname(String gname) {
        this.gname = gname;
    }

    public String getSelName() {
        return selName;
    }

    public void setSelName(String selName) {
        this.selName = selName;
    }

    public int getGprice() {
        return gprice;
    }

    public void setGprice(int gprice) {
        this.gprice = gprice;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getGid() {
        return gid;
    }

    public void setGid(String gid) {
        this.gid = gid;
    }

    public Date getBuyDate() {
        return buyDate;
    }

    public void setBuyDate(Date buyDate) {
        this.buyDate = buyDate;
    }

    public int getBuyCnt() {
        return buyCnt;
    }

    public void setBuyCnt(int buyCnt) {
        this.buyCnt = buyCnt;
    }

    public void prt() {
        System.out.println("-----------");
        System.out.println("상품ID: " + gid);
        System.out.println("상품명: " + gname);
        System.out.println("상품가격: " + gprice);
        System.out.println("구매수량: " + buyCnt);
        System.out.println("판매자명: " + selName);
        System.out.println("구매일: " + buyDate);
        System.out.println("배송지: " + addr);
    }

}


2.4.2 로그인 클래스

package shopping;

import java.util.Scanner;

import dao_dto.M_DAO;
import dao_dto.M_DTO;

public class Login {
    Scanner in = new Scanner(System.in);

    public Login(){
        M_DAO mdao = new M_DAO();
        M_DTO mdto = new M_DTO();

        System.out.println("회원 아이디를 입력하세요");
        String id = in.nextLine();
        mdto.setId(id);
        if(!mdao.chkMem(mdto)) {
            System.out.println("비밀번호를 입력하세요");
            String pass = in.nextLine();
            mdto.setPass(pass);
            if(!mdao.chkLogin(mdto)) {
                new ShoppingManager(id);
            }else {
                System.out.println("비밀번호를 확인하세요");
            }
        }else {
            System.out.println("등록된 아이디가 없습니다.");
        }
    }
}


2.4.3 쇼핑관리 클래스

package shopping;

import java.util.ArrayList;
import java.util.Scanner;

import dao_dto.B_DAO;
import dao_dto.B_DTO;
import dao_dto.G_DAO;
import goodsMRG.Goods;

public class ShoppingManager {
    Scanner in = new Scanner(System.in);
    G_DAO gdao = new G_DAO();
    B_DAO bdao = new B_DAO();
    B_DTO bdto = new B_DTO();
    String id;

    ShoppingManager(String id) {
        this.id = id;
        for (;;) {
            menu();
            System.out.println("메뉴를 선택해주세요 ");
            String selMenu = in.nextLine();
            if (selMenu.equals("1")) {
                shoppig();
            } else if (selMenu.equals("2")) {
                showBasket();
            } else if (selMenu.equals("3")) {
                break;
            } else {
                System.out.println("잘못된 입력입니다.");
            }
        }
    }

    private void showBasket() {
        ArrayList<Basket> bList = bdao.showB(id);
        for (Basket i : bList) {
            i.prt();
        }

    }

    private void shoppig() {
        ArrayList<Goods> gList = gdao.allSelect();
        for (Goods i : gList) {
            i.prt();
        }
        System.out.println("구매할 상품의 ID를 입력하세요.");
        String selId = in.nextLine();
        System.out.println("구매할 상품의 수량을 입력하세요.");
        int selCnt = in.nextInt();
        in.nextLine();
        bdto.setId(id);
        bdto.setGid(selId);
        bdto.setBuyCnt(selCnt);

        bdao.insertB(bdto);

    }

    private void menu() {
        System.out.println("--------- ");
        System.out.println("1. 쇼핑하기 ");
        System.out.println("2. 장바구니 보기 ");
        System.out.println("3. 이전메뉴 ");
    }
}

2.5 DAO_DTO 패키지

2.5.1 회원 DAO 클래스

package dao_dto;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import memberMGR.Member;

public class M_DAO {
    private Connection conn = null;

    public M_DAO() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public boolean connect() {
        try {
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "system", "11111111");
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

    public void insertMem(M_DTO mdto) {
        if (connect()) {
            String sql = "insert into member2 values(?,?,?,?,default)";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, mdto.getId());
                psmt.setString(2, mdto.getName());
                psmt.setString(3, mdto.getPass());
                psmt.setString(4, mdto.getAddr());
                psmt.executeUpdate();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
    }

    public void deleteWord(M_DTO mdto) {
        if (connect()) {
            String sql = "delete from member2 where id=?";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, mdto.getId());
                psmt.executeUpdate();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
    }

    public void modyMem(M_DTO mdto) {
        if (connect()) {
            String sql = "update member2 set name =?, pass=?, addr=? where id=?";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, mdto.getName());
                psmt.setString(2, mdto.getPass());
                psmt.setString(3, mdto.getAddr());
                psmt.setString(4, mdto.getId());
                psmt.executeUpdate();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
    }

    public ArrayList<Member> allSelect() {
        ResultSet rs;
        if (connect()) {
            String sql = "select * from member2";
            ArrayList<Member> mList = new ArrayList<>();
            try {
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    Member tempM = new Member();
                    tempM.setId(rs.getString("id"));
                    tempM.setName(rs.getString("name"));
                    tempM.setPass(rs.getString("pass"));
                    tempM.setAddr(rs.getString("addr"));
                    tempM.setPoint(rs.getInt("point"));

                    mList.add(tempM);
                }
                conn.close();
                return mList;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return null;
    }

    public boolean chkMem(M_DTO mdto) {
        ResultSet rs;
        boolean flag = true;
        if (connect()) {
            String sql = "select * from member2 where id =" + "'" + mdto.getId() + "'";
            try {
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    flag = false;
                }
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return flag;
    }

    public ArrayList<Member> schMem(String search) {
        ResultSet rs;
        if (connect()) {
            String sql = "select * from member2 where id like " + "'%" + search + "%' or name like " + "'%" + search
                    + "%'";
            ArrayList<Member> mList = new ArrayList<>();
            try {
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    Member tempM = new Member();
                    tempM.setId(rs.getString("id"));
                    tempM.setName(rs.getString("name"));
                    tempM.setPass(rs.getString("pass"));
                    tempM.setAddr(rs.getString("addr"));
                    tempM.setPoint(rs.getInt("point"));

                    mList.add(tempM);
                }
                conn.close();
                return mList;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return null;
    }

    public boolean chkLogin(M_DTO mdto) {
        ResultSet rs;
        boolean flag = true;
        if (connect()) {
            String sql = "select * from member2 where id =? and pass=?";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, mdto.getId());
                psmt.setString(2, mdto.getPass());
                rs = psmt.executeQuery();
                while (rs.next()) {
                    flag = false;
                }
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return flag;
    }

}

2.5.2 회원 DTO 클래스

package dao_dto;

public class M_DTO {
    private String id;
    private String name;
    private String pass;
    private String addr;
    private int point;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    public int getPoint() {
        return point;
    }

    public void setPoint(int point) {
        this.point = point;
    }

}

2.5.3 상품 DAO 클래스

package dao_dto;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import goodsMRG.Goods;

public class G_DAO {
    private Connection conn = null;

    public G_DAO() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public boolean connect() {
        try {
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "system", "11111111");
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

    public void insertG(G_DTO gdto) {
        if (connect()) {
            String sql = "insert into goods values(?,?,?,?,?,default)";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, gdto.getGid());
                psmt.setString(2, gdto.getGname());
                psmt.setInt(3, gdto.getGprice());
                psmt.setInt(4, gdto.getGcnt());
                psmt.setString(5, gdto.getSelName());
                psmt.executeUpdate();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
    }

    public void deleteG(String delId) {
        if (connect()) {
            String sql = "delete from goods where gid=?";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, delId);
                psmt.executeUpdate();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
    }

    public void modyG(G_DTO gdto) {
        if (connect()) {
            String sql = "update goods set gname =?, gprice=?, gcnt=? , selname=? where gid=?";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, gdto.getGname());
                psmt.setInt(2, gdto.getGprice());
                psmt.setInt(3, gdto.getGcnt());
                psmt.setString(4, gdto.getSelName());
                psmt.setString(5, gdto.getGid());
                psmt.executeUpdate();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
    }

    public ArrayList<Goods> cntCheck() {
        ResultSet rs;
        if (connect()) {
            String sql = "select * from goods where gcnt>(select avg(gcnt) from goods)";
            ArrayList<Goods> gList = new ArrayList<>();
            try {
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    Goods tempG = new Goods();
                    tempG.setGid(rs.getString("gid"));
                    tempG.setGname(rs.getString("gname"));
                    tempG.setGprice(rs.getInt("gprice"));
                    tempG.setGcnt(rs.getInt("gcnt"));
                    tempG.setSelName(rs.getString("selName"));
                    tempG.setGdate(rs.getDate("gdate"));

                    gList.add(tempG);
                }
                conn.close();
                return gList;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return null;
    }

    public boolean chkG(String search) {
        ResultSet rs;
        boolean flag = true;
        if (connect()) {
            String sql = "select * from goods where gid =?";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, search);
                rs = psmt.executeQuery();
                while (rs.next()) {
                    flag = false;
                }
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return flag;
    }

    public ArrayList<Goods> schG(String search) {
        ResultSet rs;
        if (connect()) {
            String sql = "select * from goods where gid like " + "'%" + search + "%' or gname like " + "'%" + search
                    + "%'";
            ArrayList<Goods> gList = new ArrayList<>();
            try {
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    Goods tempG = new Goods();
                    tempG.setGid(rs.getString("gid"));
                    tempG.setGname(rs.getString("gname"));
                    tempG.setGprice(rs.getInt("gprice"));
                    tempG.setGcnt(rs.getInt("gcnt"));
                    tempG.setSelName(rs.getString("selName"));
                    tempG.setGdate(rs.getDate("gdate"));
                    gList.add(tempG);
                }
                conn.close();
                return gList;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return null;
    }

    public ArrayList<Goods> allSelect() {
        ResultSet rs;
        if (connect()) {
            String sql = "select * from goods";
            ArrayList<Goods> gList = new ArrayList<>();
            try {
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    Goods tempG = new Goods();
                    tempG.setGid(rs.getString("gid"));
                    tempG.setGname(rs.getString("gname"));
                    tempG.setGprice(rs.getInt("gprice"));
                    tempG.setGcnt(rs.getInt("gcnt"));
                    tempG.setSelName(rs.getString("selName"));
                    tempG.setGdate(rs.getDate("gdate"));
                    gList.add(tempG);
                }
                conn.close();
                return gList;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return null;
    }

}

2.5.4 상품 DTO 클래스

package dao_dto;

import java.util.Date;

public class G_DTO {
    private String gid;
    private String gname;
    private String selName;
    private int gprice;
    private int gcnt;
    private Date gdate;

    public String getGid() {
        return gid;
    }

    public void setGid(String gid) {
        this.gid = gid;
    }

    public String getGname() {
        return gname;
    }

    public void setGname(String gname) {
        this.gname = gname;
    }

    public String getSelName() {
        return selName;
    }

    public void setSelName(String selName) {
        this.selName = selName;
    }

    public int getGprice() {
        return gprice;
    }

    public void setGprice(int gprice) {
        this.gprice = gprice;
    }

    public int getGcnt() {
        return gcnt;
    }

    public void setGcnt(int gcnt) {
        this.gcnt = gcnt;
    }

    public Date getGdate() {
        return gdate;
    }

    public void setGdate(Date gdate) {
        this.gdate = gdate;
    }
}


2.5.5 장바구니상품 DAO 클래스

package dao_dto;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import shopping.Basket;

public class B_DAO {
    private Connection conn = null;

    public B_DAO() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public boolean connect() {
        try {
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "system", "11111111");
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

    public void insertB(B_DTO bdto) {
        if (connect()) {
            String sql = "insert into gbasket values(no.nextval,?,?,default,?)";
            try {
                PreparedStatement psmt = conn.prepareStatement(sql);
                psmt.setString(1, bdto.getId());
                psmt.setString(2, bdto.getGid());
                psmt.setInt(3, bdto.getBuyCnt());
                psmt.executeUpdate();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
    }

    public ArrayList<Basket> showB(String search) {
        ResultSet rs;
        if (connect()) {
            String sql = "select * from goodsBasket where id =" + "'" + search + "'";
            ArrayList<Basket> bList = new ArrayList<>();
            try {
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    Basket tempB = new Basket();
                    tempB.setGid(rs.getString("gid"));
                    tempB.setGname(rs.getString("gname"));
                    tempB.setGprice(rs.getInt("gprice"));
                    tempB.setBuyCnt(rs.getInt("buyCnt"));
                    tempB.setSelName(rs.getString("selName"));
                    tempB.setBuyDate(rs.getDate("buyDate"));
                    tempB.setId(rs.getString("id"));
                    tempB.setAddr(rs.getString("addr"));
                    bList.add(tempB);
                }
                conn.close();
                return bList;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        } else {
            System.out.println("연결실패");
        }
        return null;
    }

}


2.5.6 장바구니상품 DTO 클래스

package dao_dto;

import java.util.Date;

public class B_DTO {
    private String id;
    private String gid;
    private Date buyDate;
    private int buyCnt;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getGid() {
        return gid;
    }

    public void setGid(String gid) {
        this.gid = gid;
    }

    public Date getBuyDate() {
        return buyDate;
    }

    public void setBuyDate(Date buyDate) {
        this.buyDate = buyDate;
    }

    public int getBuyCnt() {
        return buyCnt;
    }

    public void setBuyCnt(int buyCnt) {
        this.buyCnt = buyCnt;
    }

}

인터페이스

컨테이너 > 프레임(기본레이아웃 border), 패널(기본레이아웃 flow)
컴포넌트를 배치하는 판
컨테이너는 컴포넌트를 배치할 레이아웃이 있다.
레이아웃은 border Layout: 동서남북 지정하여 배치
flow Layout: 왼쪽부터 차례로 배치

컴포넌트 > 컨테이너에서 배치되어 사용하는 객체
버튼, 라벨 등이 있다.

*패널 객체는 컨테이너와 컴포넌트의 성격을 모두가진다.

인터페이스 : 제공하는 특정 기능을 사용하는 개념

제공하는 기능을 내가 직접 정의할것인가, 이미 정의되어 있는것(예:USB,리모컨, 자바GUI 등)을 사용할 것인가?

인터페이스 실습

메인 클래스

package main;

//import gui.test01;
import gui.test02;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new test02();
    }

}

테스트 클래스

package gui;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class test02 extends JFrame implements ActionListener {
    JLabel titleLB = new JLabel("  회원가입");
    JButton btn = new JButton("가입");
    JButton close = new JButton("종료");
    JButton reset = new JButton("초기화");
    JLabel idLB = new JLabel("아 이 디");
    JLabel nameLB = new JLabel("이       름");
    JLabel passLB = new JLabel("비밀번호");
    JLabel telLB = new JLabel("전화번호");
    JTextField idInput = new JTextField(10);
    JTextField nameInput = new JTextField(10);
    JTextField pwdInput = new JTextField(10);
    JTextField telInput = new JTextField(10);
    JPanel centerP = new JPanel();
    JPanel centerP1 = new JPanel();
    JPanel centerP2 = new JPanel();
    JPanel centerP3 = new JPanel();
    JPanel centerP4 = new JPanel();
    JPanel southP = new JPanel();

    public test02() {
        System.out.println("프로그램 시작");
        this.setBounds(100, 300, 230, 250);// 사이즈 설정(x좌표, y좌표 ,너비, 높이)
        // 로그인 창 만들어보기
        centerP.setLayout(new GridLayout(4, 1));
        centerP1.setLayout(new FlowLayout());
        centerP2.setLayout(new FlowLayout());
        centerP3.setLayout(new FlowLayout());
        centerP4.setLayout(new FlowLayout());
        centerP1.add(idLB);
        centerP1.add(idInput);
        centerP2.add(nameLB);
        centerP2.add(nameInput);
        centerP3.add(passLB);
        centerP3.add(pwdInput);
        centerP4.add(telLB);
        centerP4.add(telInput);
        centerP.add(centerP1);
        centerP.add(centerP2);
        centerP.add(centerP3);
        centerP.add(centerP4);
        southP.add(btn);
        southP.add(reset);
        southP.add(close);

        //인터페이스의 기능을 사용하기 위함
        btn.addActionListener(this);
        reset.addActionListener(this);
        close.addActionListener(this);

        this.add(centerP, "Center");
        this.add(titleLB, "North");
        this.add(southP, "South");

        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);//창을 닫으면 프로그램 종료
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object temp = e.getSource();
        if (temp.equals(btn)) {//가입버튼 누르면 타이틀이 바뀜
            String a = "아이디/이름/비번/전번";
            titleLB.setText(a);
        } else if (temp.equals(close)) {//종료버튼 누르면 프로그램 종료
            System.exit(0);
        } else if (temp.equals(reset)) {//초기화 버튼 누르면 내용 비움
            idInput.setText("");
            nameInput.setText("");
            pwdInput.setText("");
            telInput.setText("");
        }
    }
}
profile
공부하는 개발자

0개의 댓글