[Java] 게시판 만들기개발자가 되기까지 (2023.08.16~2024.04.15)/[Basic] Java2023. 11. 28. 22:09
Table of Contents
<문제>
<조건> BoardInterface Interface printMenu() : 게시판 메뉴 출력 addBoard(Scanner scan) : 게시글 등록 (제목, 작성자, 내용) searchBoard(Scanner scan) : 게시글 조회 (게시글 번호로 검색) modifyBoard(Scanner scan) : 게시글 수정 (제목, 내용) removeBoard(Scanner scan) : 게시글 삭제 printBoard() : 게시글 전체 출력 Board class - 번호, 제목, 내용, 작성자, 작성일 - 번호, 작성일 자동 작성 - 번호만 같은 객체가 들어오면 같은 객체로 인정 |
<방법>
import java.util.Scanner;
public interface BoardInterface {
void printMenu(); // 게시판 메뉴 출력
void addBoard(Scanner scan); // 게시글 등록
void searchBoard(Scanner scan); // 게시글 조회
void modifyBoard(Scanner scan); // 게시글 수정
void removeBoard(Scanner scan); // 게시글 삭제
void printBoard(); // 게시글 전체 출력
}
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;
public class Board {
private static int count; // count 공유
private int num;
private String title;
private String content;
private String writer;
private String regdate;
public Board() {
count++;
num = count;
SimpleDateFormat dayTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
this.regdate = dayTime.format(new Date());
}
public Board(String title, String content, String writer) {
this(); // 기본 생성자 호출
this.title = title;
this.content = content;
this.writer = writer;
}
public Board(int num) {
this.num = num;
}
public void print() {
System.out.println("------------------------------");
System.out.println("번호 : " + num);
System.out.println("제목 : " + title);
System.out.println("작성자 : " + writer);
System.out.println("작성일 : " + regdate);
System.out.println("내용 :");
System.out.println(content);
}
public static int getCount() {
return count;
}
public static void setCount(int count) {
Board.count = count;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
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 String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getRegdate() {
return regdate;
}
public void setRegdate(String regdate) {
this.regdate = regdate;
}
@Override
public int hashCode() {
return Objects.hash(content, num, regdate, title, writer);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Board other = (Board) obj;
return Objects.equals(num, other.num);
}
@Override
public String toString() {
return "Board [num=" + num + ", title=" + title + ", content=" + content + ", writer=" + writer + ", regdate="
+ regdate + "]";
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class BoardManager implements BoardInterface {
ArrayList<Board> list = new ArrayList<>();
public void printMenu() {
System.out.println("----Menu----");
System.out.println("1. 글쓰기 | 2. 조회 | 3. 수정 | 4. 삭제 | 5. 전체목록 | 6. 종료");
System.out.print(">> ");
}
// 제목, 작성자, 내용
@Override
public void addBoard(Scanner scan) {
System.out.println("--[게시글 등록]--");
System.out.print("제목 >> ");
scan.nextLine(); // 공백처리
String title = scan.nextLine();
System.out.print("작성자 >>");
String writer = scan.nextLine();
System.out.print("내용 >> ");
String content = scan.nextLine();
Board b = new Board(title, content, writer);
list.add(b);
System.out.println("--[게시글 등록 완료]--");
}
// 게시글 번호로 검색
@Override
public void searchBoard(Scanner scan) {
System.out.println("--[게시글 찾기]--");
System.out.print("게시글 번호 >> ");
int num = scan.nextInt();
int idx = list.indexOf(new Board(num)); // 없으면 -1
if( idx != -1) {
System.out.println("--[게시글 찾기 성공]--");
Board tmp = list.get(idx);
System.out.println(tmp);
return;
} else {
System.out.println("--[게시글 찾기 실패]--");
}
}
// 게시글 수정 : 제목, 내용
@Override
public void modifyBoard(Scanner scan) {
System.out.println("--[수정할 게시글 찾기]--");
System.out.print("수정할 게시글 번호 >> ");
int num = scan.nextInt();
int idx = list.indexOf(new Board(num));
if( idx != -1) {
System.out.println("--[게시글 수정]--");
System.out.print("제목 >> ");
scan.nextLine(); // 공백처리
String title = scan.nextLine();
System.out.print("내용 >> ");
String content = scan.nextLine();
Board b = list.get(idx);
b.setTitle(title);
b.setContent(content);
System.out.println("--[게시글 수정 성공]--");
return;
} else {
System.out.println("--[게시글 수정 실패]--");
}
}
// 게시글 삭제
@Override
public void removeBoard(Scanner scan) {
System.out.println("--[삭제할 게시글 찾기]--");
System.out.print("삭제할 게시글 번호 >> ");
int num = scan.nextInt();
int idx = list.indexOf(new Board(num));
if( idx != -1) {
System.out.println("--[게시글 삭제]--");
list.remove(idx);
System.out.println("--[게시글 삭제 성공]--");
return;
} else {
System.out.println("--[게시글 삭제 실패]--");
}
}
// 전체 목록
@Override
public void printBoard() {
for(Board b : list) {
System.out.println(b);
}
}
}
import java.util.Scanner;
public class BoardMain {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
BoardManager bm = new BoardManager();
int menu = -1;
do {
bm.printMenu();
menu = scan.nextInt();
// 1. 글쓰기 | 2. 조회 | 3. 수정 | 4. 삭제 | 5. 전체목록 | 6. 종료
switch(menu) {
case 1: bm.addBoard(scan);
break;
case 2: bm.searchBoard(scan);
break;
case 3: bm.modifyBoard(scan);
break;
case 4: bm.removeBoard(scan);
break;
case 5: bm.printBoard();
break;
case 6: System.out.println("시스템 종료");
break;
default:
System.out.println("잘못된 입력입니다.");
break;
}
} while ( menu != 6 );
}
}
[Java] 게시판 만들기
(다음 게시물 예고편)
[Java] JDBC 연습 01
728x90
@rlozlr :: 얼렁뚱땅 개발자
얼렁뚱땅 주니어 개발자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!