1. 게시판 CRUD만들기
1.1 데이터 타입 정의
- 게시판에서 사용하는 데이터타입 : [제목, 내용, 작성날짜, 조회수]
package bitcamp.myapp2.vo;
import java.util.Date;
public class Board {
private String title;
private String content;
private Date createdDate;
private int viewCount;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
public int getViewCount() {
return viewCount;
}
public void setViewCount(int viewCount) {
this.viewCount = viewCount;
}
}
1.2 기본 프레임 생성
- 기본 프레임은 기존 유저,프로젝트와 유사하다.
- 기본 구조
package bitcamp.myapp2.command;
import bitcamp.myapp2.util.Prompt;
import bitcamp.myapp2.vo.User;
public class BoardCommand {
private static final int MAX_SIZE = 10;
private static final Board[] boards = new Board[MAX_SIZE];
private static int boardLength = 0;
public static void excuteBoardCommand(String command) {
System.out.printf("[%s]\n", command);
switch (command) {
case "등록":
addBoard();
break;
case "목록":
listBoard();
break;
case "조회":
viewBoard();
break;
case "변경":
updateBoard();
break;
case "삭제":
deleteBoard();
break;
}
}
private static void addBoard() {
}
private static void listBoard() {
}
private static void viewBoard() {
}
private static void updateBoard() {
}
private static void deleteBoard() {
}
}
1.3 글 등록 메서드 만들기
- 글 등록의 메서드는 addBoard의 메서드를 통해 생성
- 제목과 내용을 Prompt를 통해 받아온다.
- 날짜는 당일 날짜를 받아온다.
private static void addBoard() {
Board board = new Board();
board.setTitle(Prompt.input("제목?"));
board.setContent(Prompt.input("내용?"));
board.setCreatedDate(new Date());
boards[boardLength++] = board;
}
1.4 글 목록 메서드 만들기
- 글 목록 메서드는 listBoard의 메서드를 통해 생성
- 리스트 출력문은 [번호, 제목, 작성날짜, 조회수]를 출력한다.
private static void listBoard() {
System.out.println("번호 제목 작성일 조회수");
for (int i = 0; i < boardLength; i++) {
Board board = boards[i];
System.out.printf("%d %s %tY-%3$tm-%3$td %d", (i + 1), board.getTitle(),
board.getCreatedDate(), board.getViewCount());
}
}
1.5 글 조회 메서드 만들기
- 글 조회 메서드는 viewBoard의 메서드를 통해 생성
- 조회에는 게시글 번호를 입력 받아 보드배열에서 해당 게시글의 [제목, 내용,작성시간, 조회수]를 출력
- 조회하는 순간 조회수는 +1
private static void viewBoard() {
int boardNo = Prompt.inputInt("게시글 번호?");
if (boardNo < 1 || boardNo >= boardLength) {
System.out.println("없는 게시글입니다.");
return;
}
Board board = boards[boardNo - 1];
board.setViewCount(board.getViewCount() + 1);
System.out.printf("제목: %s", board.getTitle());
System.out.printf("내용: %s", board.getContent());
System.out.printf("작성시간: %tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", board.getCreatedDate());
System.out.printf("조회수: %d", board.getViewCount());
}
1.6 글 변경 메서드 만들기
- 글 변경 메서드는 updateBoard의 메서드를 통해 생성
- 글 변경은 제목과 내용을 변경하고 조회수를 하나 증가 시킨다.
private static void updateBoard() {
int boardNo = Prompt.inputInt("게시글 번호?");
if (boardNo < 1 || boardNo > boardLength) {
System.out.println("없는 게시글입니다.");
return;
}
Board board = boards[boardNo - 1];
board.setViewCount(board.getViewCount() + 1);
board.setTitle(Prompt.input("제목(%s)?", board.getTitle()));
board.setContent(Prompt.input("내용(%s", board.getContent()));
}
1.7 글 삭제 메서드 만들기
private static void deleteBoard() {
int boardNo = Prompt.inputInt("게시글 번호?");
if (boardNo < 1 || boardNo > boardLength) {
System.out.println("없는 게시글입니다.");
return;
}
for (int i = boardNo; i < boardLength; i++) {
boards[i - 1] = boards[i];
}
boards[--boardLength] = null;
System.out.println("삭제하였습니다.");
}
3. 완성된 코드
package bitcamp.myapp2.command;
import bitcamp.myapp2.util.Prompt;
import bitcamp.myapp2.vo.Board;
import java.util.Date;
public class BoardCommand {
private static final int MAX_SIZE = 10;
private static final Board[] boards = new Board[MAX_SIZE];
private static int boardLength = 0;
public static void excuteBoardCommand(String command) {
System.out.printf("[%s]\n", command);
switch (command) {
case "등록":
addBoard();
break;
case "목록":
listBoard();
break;
case "조회":
viewBoard();
break;
case "변경":
updateBoard();
break;
case "삭제":
deleteBoard();
break;
}
}
private static void addBoard() {
Board board = new Board();
board.setTitle(Prompt.input("제목?"));
board.setContent(Prompt.input("내용?"));
board.setCreatedDate(new Date());
boards[boardLength++] = board;
}
private static void listBoard() {
System.out.println("번호 제목 작성일 조회수");
for (int i = 0; i < boardLength; i++) {
Board board = boards[i];
System.out.printf("%d %s %tY-%3$tm-%3$td %d", (i + 1), board.getTitle(),
board.getCreatedDate(), board.getViewCount());
}
}
private static void viewBoard() {
int boardNo = Prompt.inputInt("게시글 번호?");
if (boardNo < 1 || boardNo > boardLength) {
System.out.println("없는 게시글입니다.");
return;
}
Board board = boards[boardNo - 1];
board.setViewCount(board.getViewCount() + 1);
System.out.printf("제목: %s", board.getTitle());
System.out.printf("내용: %s", board.getContent());
System.out.printf("작성시간: %tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", board.getCreatedDate());
System.out.printf("조회수: %d", board.getViewCount());
}
private static void updateBoard() {
int boardNo = Prompt.inputInt("게시글 번호?");
if (boardNo < 1 || boardNo > boardLength) {
System.out.println("없는 게시글입니다.");
return;
}
Board board = boards[boardNo - 1];
board.setViewCount(board.getViewCount() + 1);
board.setTitle(Prompt.input("제목(%s)?", board.getTitle()));
board.setContent(Prompt.input("내용(%s", board.getContent()));
System.out.println("변경하였습니다.");
}
private static void deleteBoard() {
int boardNo = Prompt.inputInt("게시글 번호?");
if (boardNo < 1 || boardNo > boardLength) {
System.out.println("없는 게시글입니다.");
return;
}
for (int i = boardNo; i < boardLength; i++) {
boards[i - 1] = boards[i];
}
boards[--boardLength] = null;
System.out.println("삭제하였습니다.");
}
}
'개발자 꿈나무의 하루 > 01_Boot Camp' 카테고리의 다른 글
(네이버클라우드 부트캠프) 21일차 - Java프로그래밍 기초(Object 클래스) (1) | 2024.06.24 |
---|---|
(네이버클라우드 부트캠프) 19일차 - 실습프로젝트(Static필드, High Cohesion) (0) | 2024.06.20 |
(네이버클라우드 부트캠프) 17일차 - 실습프로젝트(CRUD구현하기) (0) | 2024.06.18 |
(네이버클라우드 부트캠프) 16일차 - Java프로그래밍 기초(클래스) (1) | 2024.06.17 |
(네이버클라우드 부트캠프) 15일차 - 실습프로젝트(클래스) (1) | 2024.06.14 |