국비학원/수업기록

국비 지원 개발자 과정_Day19

루팽 2022. 12. 22. 22:10
package dev_java.week4;

public class Money {
  public static final String UNIT = "원";
  private int money; // private로 변경

  public Money(int money) {
    this.money = money;
  }

  public void pay(int money){
    this.money -= money;
  }

  public int getMoney() {
    return money;
  }

  public void setMoney(int money) {
    this.money = money;
  }

  public static String getUnit() {
    return UNIT;
  }

  public void print() {
    System.out.println(money + UNIT + "이 있습니다.");
  }
}

 

package dev_java.week4;

public class Run {
  public static void main(String[] args) {
    Money m = new Money(0); // 생성자 파라미터에 맞게 0을 넣어준다.
    m.setMoney(10000);
    m.pay(5000);
    m.print(); // 5000원
  }
}

 

package dev_java.week4;

import java.util.Vector;

public class Mother {
  Money m = new Money(10000);

  public static void main(String[] args) {
    Vector<Mother> v = new Vector<>();
    Mother m1 = new Mother();
    v.add(m1);
    v.get(0).m.setMoney(20000);

    Mother m2 = new Mother();
    v.add(m2);
    v.get(1).m.setMoney(25000);
    v.get(1).m.pay(7000);

    Mother m3 = new Mother();
    v.add(m3);
    v.get(2).m.setMoney(30000);

    // for (Mother m : v) {
    // System.out.println(m);
    // }
    // System.out.println();

    for (int i = 0; i < v.size(); i++) {
      Mother mot = v.get(i);
      System.out.println(mot.m.getMoney());
    }
  }
}

 

package dev_java.week4;

import java.util.Arrays;

public class ArrayCopy1 {
  String fruit[] = { "사과", "딸기", "바나나" };
  String fruit2[];

  public ArrayCopy1() {
  }

  public ArrayCopy1(String[] args) {
    fruit2 = fruit;
    fruit2[1] = "키위";
    System.out.println(Arrays.toString(fruit));
    System.out.println(Arrays.toString(fruit2));
  }

  public static void main(String[] args) {
    new ArrayCopy1();
  }
}

 

package dev_java.week4;

import java.util.Arrays;

public class ArrayCopy1_1 {

  public static void main(String[] args) {
    ArrayCopy1 ac1 = new ArrayCopy1();
    System.out.println(Arrays.toString(ac1.fruit));
    System.out.println(Arrays.toString(ac1.fruit2));
    ac1.fruit2 = new String[] { "파인애플", "키위" };
    System.out.println(ac1.fruit2[1]); // NullPointerException
  }
}

 

package dev_java.week4;

import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.swing.JOptionPane;

public class VectorCRUD3 { // 수업시간 코드-DeptVO
  static Vector<DeptVO> vDept = new Vector<>();
  static Scanner s = new Scanner(System.in);

  // 부서 전체 조회
  public void getDeptList() {
    System.out.println("전체 조회 호출");
    for (int i = 0; i < vDept.size(); i++) {
      DeptVO temp = vDept.get(i);
      System.out.print(temp.getDeptNo() + ", " + temp.getDeptName() + ", " + temp.getDeptLoc());
      System.out.println();
    }
    System.out.println();
  }

  // 벡터에 부서정보 추가하기-없는 것을 새로 추가
  public int deptInsert(DeptVO dvo) {
    System.out.println("정보 입력 호출");
    int result = 0;
    boolean isOk = vDept.add(dvo);
    if (isOk)
      result = 1;
    return result;
  }

  // 벡터에 부서정보 수정하기-있는 것을 변경
  public int deptUpdate(DeptVO dvo) {
    System.out.println("deptUpdate 호출: " + dvo.getDeptNo());
    int result = 0;
    System.out.print("수정할 부서번호, 부서명, 지역을 입력하세요(|로 구분) ");
    VectorCRUD3.s = null;
    VectorCRUD3.s = new Scanner(System.in);
    String user = VectorCRUD3.s.next();
    int user_deptno = 0;
    String user_dname = null;
    String user_loc = null;
    // 문자열 3개를 한번에 받아오기위해 StringTokenizer 사용
    StringTokenizer st = new StringTokenizer(user, "|");
    user_deptno = Integer.parseInt(st.nextToken()); // 사용자가 입력한 부서번호
    user_dname = st.nextToken(); // 사용자가 입력한 부서명
    user_loc = st.nextToken(); // 사용자가 입력한 지역
    // 사용자가 입력한 부서번호|부서명|지역을 DeptVO의 멤버변수에 초기화한 것
    DeptVO updVO = DeptVO.builder().deptNo(user_deptno).deptName(user_dname).deptLoc(user_loc).build();
    // 벡터에 들어있는 DeptVO에서 꺼낸 부서번호와 파라미터로 넘겨 받은 부서번호가 일치하면
    // 그 때 가져온 DeptVO의 인덱스가 우리가 삭제하고 추가해야되는 벡터의 인덱스값이 된다
    DeptVO comVO = null;
    for (int i = 0; i < vDept.size(); i++) {
      comVO = vDept.get(i);
      if (updVO.getDeptNo() == comVO.getDeptNo()) {
        vDept.remove(i);
        vDept.add(i, updVO);
        result = 1;
        break;
      }
    }
    return result;
  }

  // 부서 삭제
  public int deptDelete(int deptNo) {
    System.out.println("부서 정보 삭제 호출" + deptNo);
    int result = 0; // 1이면 성공, 0이면 실패
    for (int i = 0; i < vDept.size(); i++) { // 데이터 영속성을 지원하는 오라클이 없어서 벡터로 대신함
      DeptVO temp = vDept.get(i);
      int deptNo2 = 0;
      deptNo2 = temp.getDeptNo();
      System.out.println("입력값과 벡터에서 가져온 값을 비교=> " + deptNo + ", " + deptNo2);
      if (deptNo == deptNo2) { // 파라미터로 넘어온 부서번호와 벡터에서 꺼낸 부서번호를 비교
        DeptVO rmVO = vDept.remove(i);
        if (rmVO != null)
          result = 1;
      }
    }
    return result;
  }

  // 벡터의 부서정보 상세보기-있는 것을 하나 꺼내보기
  public DeptVO deptDetail(int deptNo) {
    System.out.println("부서 정보 상세보기 호출");
    DeptVO temp = null;
    for (int i = 0; i < vDept.size(); i++) {
      temp = vDept.get(i);
      if (deptNo == temp.getDeptNo()) {
        System.out.println(temp.getDeptNo() + "번 부서 상세보기");
      }
    }
    return temp;
  }

  public static void main(String[] args) {
    VectorCRUD3 vCrud = new VectorCRUD3();
    // 입력 테스트
    DeptVO dvo1 = DeptVO.builder().deptNo(10).deptName("개발부").deptLoc("인천").build();
    System.out.println(dvo1.toString());
    int result1 = vCrud.deptInsert(dvo1);
    dvo1 = null; // 기존에 참조하는 객체와 연결을 끊는다
    dvo1 = DeptVO.builder().deptNo(20).deptName("총무부").deptLoc("서울").build();
    System.out.println(dvo1.toString());
    result1 = vCrud.deptInsert(dvo1);
    if (result1 == 1) {
      JOptionPane.showMessageDialog(null, "등록이 되었습니다.");
      vCrud.getDeptList();
    }

    // 수정, 삭제 테스트
    // 수정과 삭제 메뉴 선택 담기
    int result2 = 0;
    int choice = 0; // 디폴트
    System.out.print("수정은 1, 삭제는 2를 입력해주세요. => ");
    choice = VectorCRUD3.s.nextInt();
    if (choice == 1) {
      System.out.print("수정하고자하는 부서번호를 입력해주세요. => ");
      int u_deptNo = VectorCRUD3.s.nextInt();
      // 부서번호만 담고 나머지는 null(디폴트값)
      DeptVO updVO = DeptVO.builder().deptNo(u_deptNo).build();
      result2 = vCrud.deptUpdate(updVO);
      if (result2 == 1) {
        System.out.println("수정처리 되었습니다.");
        vCrud.getDeptList();
      } else {
        System.out.println("수정처리에 실패하였습니다.");
      }
    } else if (choice == 2) {
      System.out.print("삭제할 부서번호를 입력하세요 => ");
      int userInput = VectorCRUD3.s.nextInt();
      int result3 = vCrud.deptDelete(userInput);
      if (result3 == 1) {
        JOptionPane.showMessageDialog(null, "삭제가 되었습니다.");
        vCrud.getDeptList();
      } else {
        System.out.println("삭제처리에 실패하였습니다.");
      }
    }

    // 상세보기 테스트
    System.out.print("상세보기할 부서번호를 입력하세요 => ");
    int userInput2 = s.nextInt();
    DeptVO result4 = vCrud.deptDetail(userInput2);
    System.out.print(result4.deptNo + " " + result4.deptName + " " +
        result4.deptLoc);
    VectorCRUD3.s.close();
  }
}