Day18 실습프로젝트(게시판CRUD)
1. 게시판 CRUD만들기
1.1 데이터 타입 정의
- 게시판에서 사용하는 데이터타입 : [제목, 내용, 작성날짜, 조회수]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
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를 통해 받아온다.
- 날짜는 당일 날짜를 받아온다.
1
2
3
4
5
6
7
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의 메서드를 통해 생성
- 리스트 출력문은 [번호, 제목, 작성날짜, 조회수]를 출력한다.
1
2
3
4
5
6
7
8
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
1
2
3
4
5
6
7
8
9
10
11
12
13
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의 메서드를 통해 생성
- 글 변경은 제목과 내용을 변경하고 조회수를 하나 증가 시킨다.
1
2
3
4
5
6
7
8
9
10
11
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 글 삭제 메서드 만들기
1
2
3
4
5
6
7
8
9
10
11
12
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. 완성된 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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("삭제하였습니다.");
}
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.