부트캠프(18일차)

성준혁·2022년 11월 23일
0
post-thumbnail

오늘은 부트캠프 18일차이다. 오늘부터 미니프로젝트 시작하는 1일차이기도 한다. 주제는 총 2개이며, 필수적으로 해야하는 메모장 만들기 프로젝트와 호텔 예약 프로그램 또는 은행 관리 프로그램 둘 중 하나를 골라서 해야하는 프로젝트이다. 내일 당장 제출해야하는 메모장 만들기는 태어나서 처음으로 자바에 대해 공부를 하고 만들어 본 프로젝트이다. 역시 이론으로 공부하는 것과 공부한 것을 바탕으로 프로그램을 짠다는 것은 정말 어려운 일이었다. 처음에 인텔리제이를 켜고 한글로 인코딩이 안되서 일단 처음부터 막히고 시작했다. 과감히 한글 쓰는 것을 포기하고 영어로 했다. 그래도 프로젝트를 못해서 손놓는 일이 없었고, 어렴풋이 이렇게 해야겠다라는 생각이 들어서 다행이다.

오늘 배운 것
1. VO (Value Object)
-값 그 자체를 표현하는 객체이다.
-로직을 포함할 수 있습니다.
-변하지 않는 값을 가집니다.(불변성)
-주소가 달라도 값이 같으면 같다고 봅니다.
2. DTO (Data Transfer Object)
-계층간 데이터 교환을 위해 사용하는 객체입니다.
-데이터 교환만을 위해 사용하므로 로직을 갖지 않고, getter/setter 메소드만 가집니다.
-값을 변경할 수 있습니다.(가변)
3. DAO(Data Access Object)
-데이터베이스의 data에 접근하기 위한 객체입니다. DataBase에 접근 하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용합니다.
4. 메모장 프로젝트

  • MemoApp
package MemoPro;

public class MemoApp {
    public static void main(String[] args) {
        MemoMain memoMain = new MemoMain();
        memoMain.run();
    }
}
  • MemoInsert
package MemoPro;

import java.text.SimpleDateFormat;
import java.util.Date;

public class MemoInsert {
    public static int count;
    private int no;           // 글번호,자동증가
    private String name;     // 이름
    private String password; // 비밀번호
    private String memo;     //메모
    private Date writeDate;  // 작성일, 자동입력

    // (글번호), (이름){(비밀번호)} 님이 (작성일)에 남긴글(메모)
    public MemoInsert() {
    }

    public MemoInsert(String name, String password, String memo) {
        super();
        no = ++count;
        this.name = name;
        this.password = password;
        this.memo = memo;
        writeDate = new Date();
    }

    public MemoInsert(int no, String name, String password, String memo, String writeDate) {
        this.no = no;
        this.name = name;
        this.password = password;
        this.memo = memo;
        int year = Integer.parseInt(writeDate.substring(1, 5)) - 1900;
        int month = Integer.parseInt(writeDate.substring(6, 8)) - 1;
        int day = Integer.parseInt(writeDate.substring(9, 11));
        int hour = Integer.parseInt(writeDate.substring(12, 14));
        int minute = Integer.parseInt(writeDate.substring(15, 17));
        int second = Integer.parseInt(writeDate.substring(18));
        this.writeDate = new Date(year, month, day, hour, minute, second);
    }

    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String pw) {
        this.password = password;
    }

    public String getMemo() {
        return memo;
    }

    public void setMemo(String memo) {
        this.memo = memo;
    }

    public Date getWriteDate() {
        return writeDate;
    }

    public void setWriteDate(Date date_created) {
        this.writeDate = date_created;
    }

    @Override
    public String toString() {
        Date date = new Date();    // 오늘 날짜
        SimpleDateFormat sdf = null;
        if (date.getDate() == writeDate.getYear() && date.getMonth() == writeDate.getMonth() && date.getDate() == writeDate.getDate()) {
            sdf = new SimpleDateFormat("HH:ss");
        } else {
            sdf = new SimpleDateFormat("yyyy.MM.dd(E)");
        }
        return no + "," + name + "{" + password + "} 님이 " + sdf.format(writeDate) + "에 남긴글" + memo;
//      return String.format("&d &s[&s]님이 &s에 남긴글
    }
}
  • MemoList
package MemoPro;

import java.util.ArrayList;

public class MemoList {

    private ArrayList<MemoInsert> memoList = new ArrayList<>(); // 게시글 객체를 저장할 리스트

    public ArrayList<MemoInsert> getMemoList() {
        return memoList;
    }

    public void setMemoList(ArrayList<MemoInsert> memoList) {
        this.memoList = memoList;
    }

    public String toStringMemoList() {
        StringBuilder str = new StringBuilder();
        for (int i = memoList.size() - 1; i >= 0; i--) {
            str.append(memoList.get(i)).append("\n");
        }
        return str.toString();
    }

    public void addMemo(MemoInsert memoInsert) {
        memoList.add(memoInsert);
        reNumber();
    }

    private void reNumber() {
        for (int i = 0; i < memoList.size(); i++) {
            memoList.get(i).setNo(i + 1);
        }
    }

    public void viewMemo() {
        if (!memoList.isEmpty()) {
            for (int i = memoList.size() - 1; i >= 0; i--) {
                System.out.println(memoList.get(i));
            }
        } else {
            System.out.println("저장된 목록이 없습니다.");
        }
    }

    public MemoInsert selectMemo(int no) {
        try {
            return memoList.get(no - 1);
        } catch (Exception e) {
            return null;
        }
    }

    public void deleteMemo(int no) {
        memoList.remove(no - 1);
        reNumber();
    }

}
  • MemoMain
package MemoPro;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class MemoMain {
    Scanner sc = new Scanner(System.in);
    List<MemoInsert> memousers = new ArrayList<>();
    public void run() {

        int key = 0;
        while ((key = menu()) != 0) {
            switch (key) {
                case 1: Insert();
                    break;
                case 2: List();
                    break;
                case 3: Modify();
                    break;
                case 4: Delete();
                    break;
                }
            }
        }
        private void List() {
            Iterator<MemoInsert> ite = memousers.iterator();

            while (ite.hasNext()) {
                System.out.println(ite.next() + " ");
            }
        }
        private void Insert() {
            sc.nextLine();
            String name = getStrInput("name :");
            String pw = getStrInput("pw :");
            String memo = getStrInput("memo :");

            if(pw.equals(pw)) {
                memousers.add(new MemoInsert(name, pw, memo));
                System.out.println(name + " is good");
            }
        }
        private void Modify() {
            if (memousers.isEmpty()) {
                System.out.println("게시글이 없습니다.");
                return;
            }
            System.out.println("수정하실 이름을 입력해주세요.");
            Scanner scanner = new Scanner(System.in);

            String name = scanner.nextLine();

            for (int i =0; i<memousers.size();i++){
                if (name.equals(memousers.get(i).getName())){
                    System.out.println("비밀번호를 입력해 주세요");
                    String pw = scanner.nextLine();
                    if(pw.equals(memousers.get(i).getPassword())){
                        System.out.println("새로운 메모를 입력해 주세요");
                        String newMemo = scanner.nextLine();
                        memousers.get(i).setMemo(newMemo);
                        System.out.println("수정이 완료 되었습니다.");
                        return;
                    }else{
                        System.out.println("비밀번호가 틀립니다.");
                    }
                }
            }
            System.out.println("회원 정보가 없습니다.");
        }
        private void Delete() {
            sc.nextLine();
            int no = getNumInput("ISERT NO. :");

            for(int i = 0; i<memousers.size(); i++ ){
                if(no == memousers.get(i).getNo()){
                    memousers.remove(i);
                    System.out.println("DELETE!!");
                } else {
                    System.out.println("THE PASSWORD IS NOT CORRECT");
                }
            }
        }

    private String getStrInput(String s) {
        System.out.println(s);
        return sc.nextLine();
    }

    private int menu() {
            System.out.println("====================Mmeo Prject=================");
            return getNumInput("[1]INSERT [2]LIST [3]MODIFY [4]DELELT [0]EXIT ");
    }
    private int getNumInput(String s) {
        System.out.println(s);
        return sc.nextInt();
    }
}

0개의 댓글