28일 과제

권준석·2022년 10월 7일
0

Main 클래스(시작 클래스)

package Main; 

import Manager.ClientManager;

public class Main {

	public static void main(String[] args) {
		new ClientManager(); // 고객 메니저 객체생성
	}

}

고객정보 메뉴 클래스

package Manager;

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

import DAO.ClientDAO;

public class ClientManager {
    Scanner in = new Scanner(System.in);
    
    // DB에 저장하기한 DTO
	private ClientInfoDTO ci = null; 
    
    // DB에 연결하기위한 DAO
	private ClientDAO c = new ClientDAO();

	public ClientManager() { // 고객 메니저 생성자
		menu();
	}

	private void menu() {  // 메뉴선택 메서드
		for (;;) {
			set1();
			int sel = in.nextInt();
			in.nextLine();
			if (sel == 1) {
				addClientInfo();
			} else if (sel == 2) {
				listClientInfo();
			} else if (sel == 3) {
				modClientInfo();
			} else if (sel == 4) {
				delDlientInfo();
			} else if (sel == 5) {
				selClientInfo();
			} else if (sel == 6) {
				System.out.println("프로그램을 종료합니다");
				break;
			} else {
				System.out.println("잘못된 번호입니다" + "\n" + "다시 입력해주세요");
			}

		}
	}
    
 // 고객정보 검색 메서드 
 // DB에 저장된 튜플을 고객 ID로 검색 
	private void selClientInfo() { 
		System.out.println("[검색] 고객 ID을 입력하세요");
		String id = in.nextLine();
		c.selClientInfo(id);
		ArrayList<ClientInfoDTO> infoList = c.selClientInfo(id);
		for (ClientInfoDTO c : infoList) {
			c.prt();
			System.out.println("========");
		}

	}
    
// 고객정보 삭제 메서드 
// DB에 저장된 튜플을 고객 ID을 검색해 삭제
	private void delDlientInfo() {
		System.out.println("[삭제] 고객 ID을 입력하세요");
		String id = in.nextLine();
		c.delClientInfo(id);

	}
    
// 고객정보 수정 메서드 
// 고객 ID을 검색해 나머지 정보를 수정한다
	private void modClientInfo() {
		ci = new ClientInfoDTO();
		System.out.println("[수정] 고객 ID를 입력하세요");
		String id = in.nextLine();
		if (c.chackId(id) > 0) {
			System.out.println("[수정] 고객 이름를 입력하세요");
			String name = in.nextLine();
			System.out.println("[수정] 고객 비밀번호를 입력하세요");
			String pass = in.nextLine();
			System.out.println("[수정] 고객 주소를 입력하세요");
			String addr = in.nextLine();
			System.out.println("[수정] 고객 포인트를 입력하세요");
			int point = in.nextInt();
			in.nextLine();
			ci.setId(id);
			ci.setName(name);
			ci.setPass(pass);
			ci.setAddr(addr);
			ci.setPoint(point);
			c.modClientInfo(ci);
		} else {
			System.out.println("없는 ID입니다");
		}

	}
    
// 고객정보 전채 출력 메서드 
// DB에 저장된 튜플 전체 출력
	private void listClientInfo() {
		ArrayList<ClientInfoDTO> infoList = c.ListClientInfo();
		for (ClientInfoDTO c : infoList) {
			c.prt();
			System.out.println("========");
		}
	}
    
// 고객정보 입력 메서드
// 입력받은 정보(DTO)를 DB에 저장
	private void addClientInfo() {
		ci = new ClientInfoDTO();
		System.out.println("고객 ID를 입력하세요");
		String id = in.nextLine();
		if (c.chackId(id) == 0) {
			System.out.println("고객 이름를 입력하세요");
			String name = in.nextLine();
			System.out.println("고객 비밀번호를 입력하세요");
			String pass = in.nextLine();
			System.out.println("고객 주소를 입력하세요");
			String addr = in.nextLine();
			System.out.println("고객 포인트를 입력하세요");
			int point = in.nextInt();
			in.nextLine();
			ci.setId(id);
			ci.setName(name);
			ci.setPass(pass);
			ci.setAddr(addr);
			ci.setPoint(point);
			c.addClientinfo(ci);

		} else {
			System.out.println("이미 존재하는 ID입니다");
		}
	}
    
// 메뉴 출력세팅 메서드
	private void set1() {
		System.out.println("1.  고객 정보 입력");
		System.out.println("2.  고객 정보 목록보기");
		System.out.println("3.  고객 정보 수정");
		System.out.println("4.  고객 정보 삭제");
		System.out.println("5.  고객 정보 검색");
		System.out.println("6.  프로그램 종료");
		System.out.println("====메뉴를 선택해주세요====");

	}
}

고객정보 DAO 클래스

package DAO;

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 Manager.ClientInfoDTO;

public class ClientDAO {

	// 커넥션 변수 선언
	private Connection conn = null;
    
    // DTO 변수 선언
	private ClientInfoDTO ci = null;
    
    //String타입 리턴값 저장 변수선언
	private ResultSet rs = null;
    
    // 리턴값 저장 리스트
	private ArrayList<ClientInfoDTO> infoList = null;
	
    // 생성자에서 오라클 드라이버 로딩
	public ClientDAO() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("로드 성공");
		} catch (ClassNotFoundException e) {
			System.out.println("로드 실패");
		}
	}

	// 연결 요청 메서드
    // 사용할때마다 호출하기위해 메서드로 생성
	public boolean connect() {
		try {
			conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "system", "11111111");
			System.out.println("연결 성공");
			return true;
		} catch (SQLException e) {
			System.out.println("연결 실패");
			return false;
		}
	}
    
	// DB에서 튜플삭제 쿼리 전송
	public void delClientInfo(String id) {
		if (connect()) {
			String sql = "delete from client where id=?";
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, id);
				psmt.executeUpdate();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		} else {
			System.out.println("연결 할 수 없어 입력할수 없습니다");
		}

	}
	// DB에서 튜플검색 쿼리전송 실행후 리턴값 저장
	public ArrayList<ClientInfoDTO> selClientInfo(String word) {
		infoList = new ArrayList<>();
		if (connect()) {
			String sql = "select * from client where id like ? or name like ? ";
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, "%"+word+"%");
				psmt.setString(2, "%"+word+"%");
				rs = psmt.executeQuery();
				while (rs.next()) {
					ci = new ClientInfoDTO();
					ci.setId(rs.getString("id"));
					ci.setName(rs.getString("name"));
					ci.setPass(rs.getString("pass"));
					ci.setAddr(rs.getString("addr"));
					ci.setPoint(rs.getInt("point"));
					infoList.add(ci);
				}
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			return infoList;
		} else {
			System.out.println("연결 할 수 없어 입력할수 없습니다");
		}
		return null;
	}
 
 // DB에서 저장된 튜플 수정 쿼리 전송
	public void modClientInfo(ClientInfoDTO ci) {
		if (connect()) {
			String sql = "update client set name=?,pass=?,addr=?,point=? where id=?";
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, ci.getName());
				psmt.setString(2, ci.getPass());
				psmt.setString(3, ci.getAddr());
				psmt.setInt(4, ci.getPoint());
				psmt.setString(5, ci.getId());

				int e = psmt.executeUpdate();
				System.out.println(e + "건이 입력되었습니다");
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		} else {
			System.out.println("연결 할 수 없어 입력할수 없습니다");
		}

	}

// DB에 저장된 튜플 내역 모두 보기 쿼리 전송
	public ArrayList<ClientInfoDTO> ListClientInfo() {
		infoList = new ArrayList<>();
		if (connect()) {
			String sql = "select * from client";
			try {
				Statement psmt = conn.createStatement();
				rs = psmt.executeQuery(sql);
				while (rs.next()) {
					ci = new ClientInfoDTO();
					ci.setId(rs.getString("id"));
					ci.setName(rs.getString("name"));
					ci.setPass(rs.getString("pass"));
					ci.setAddr(rs.getString("addr"));
					ci.setPoint(rs.getInt("point"));
					infoList.add(ci);
				}
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			return infoList;
		} else {
			System.out.println("연결 할 수 없어 입력할수 없습니다");
		}
		return null;
	}

// DB에서 ID중복 체크 쿼리, 존재하면 존재하는 갯수를 리턴
	public int chackId(String id) {
		if (connect()) {
			String sql = "select count(*) cnt from client where id=?"; 
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, id);
				rs = psmt.executeQuery();
				if (rs.next()) {
					int cnt = rs.getInt("cnt");
					return cnt;
				}
				conn.close();
			} catch (SQLException e) {

			}
		}
		return 0;

	}

 // DB에 입력받은 DTO정보를 튜플로 삽입하는 쿼리 전송 
	public void addClientinfo(ClientInfoDTO ci) {
		if (connect()) {
			String sql = "insert into client values (?,?,?,?,?)";
			try {
				PreparedStatement psmt = conn.prepareStatement(sql);
				psmt.setString(1, ci.getId());
				psmt.setString(2, ci.getName());
				psmt.setString(3, ci.getPass());
				psmt.setString(4, ci.getAddr());
				psmt.setInt(5, ci.getPoint());
				int e = psmt.executeUpdate();
				System.out.println(e + "건이 입력되었습니다");
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		} else {
			System.out.println("연결 할 수 없어 입력할수 없습니다");
		}
	}
}

고객정보 DTO 클래스

package Manager;

// id,이름,비밀번호,주소,포인트 정보의 Getter,Setter
public class ClientInfoDTO {
	String id;
	String name;
	String pass;
	String addr;
	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("고객 ID : "+id);
		System.out.println("고객 이름 : "+name);
		System.out.println("고객 비밀번호 : "+pass);
		System.out.println("고객 주소 : "+addr);
		System.out.println("고객 포인트 : "+point);
	}
}
profile
ㅇㅇ

0개의 댓글