현재 실습 프로젝트 구성
BoardHandler.java
ㄴ MemberHandler.java 를 복사하여 BoardHandler.java 라는 이름으로 변경 후 코드 수정
Board.java
ㄴ Member.java 를 복사하여 Board.java 라는 이름으로 변경 후 코드 수정
App.java
ㄴ menuNo를 6~10 번을 추가, 종료 번호를 6 -> 99 로 변경
Board.java
package bitcamp.myapp.vo;
public class Board {
private static int boardNo = 1;
private int no; // private 이라는 modifier 를 사용하여 접근 제어
private String title;
private String content;
private String writer;
private String password;
private int viewCount;
private long createdDate; // 밀리세컨
public Board() { // 생성자
this.no = boardNo++;
this.createdDate = System.currentTimeMillis();
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
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 int getViewCount() {
return viewCount;
}
public void setViewCount(int viewCount) {
this.viewCount = viewCount;
}
public long getCreatedDate() {
return createdDate;
}
public void setCreatedDate(long createdDate) {
this.createdDate = createdDate;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
ㄴ userId -> boardNo 으로 변경
ㄴ no, title, content, writer, password, viewCount, createDate 인스턴스 변수 선언
ㄴ getter/setter 추가 생성
App.java
package bitcamp.myapp;
import bitcamp.myapp.handler.BoardHandler;
import bitcamp.myapp.handler.MemberHandler;
import bitcamp.util.Prompt;
public class App {
public static void main(String[] args) {
printTitle();
printMenu();
while (true) {
String menuNo = Prompt.inputString("메인> ");
if (menuNo.equals("99")) {
break;
} else if (menuNo.equals("menu")) {
printMenu();
} else if (menuNo.equals("1")) {
MemberHandler.inputMember();
} else if (menuNo.equals("2")) {
MemberHandler.printMemebers();
} else if (menuNo.equals("3")) {
MemberHandler.viewMember();
} else if (menuNo.equals("4")) {
MemberHandler.updateMember();
} else if (menuNo.equals("5")) {
MemberHandler.deleteMember();
} else if (menuNo.equals("6")) {
BoardHandler.inputBoard();
} else if (menuNo.equals("7")) {
BoardHandler.printBoards();
} else if (menuNo.equals("8")) {
BoardHandler.viewBoard();
} else if (menuNo.equals("9")) {
BoardHandler.updateBoard();
} else if (menuNo.equals("10")) {
BoardHandler.deleteBoard();
} else {
System.out.println(menuNo);
}
}
Prompt.close();
}
static void printMenu() {
System.out.println("1. 회원등록");
System.out.println("2. 회원목록");
System.out.println("3. 회원조회");
System.out.println("4. 회원변경");
System.out.println("5. 회원삭제");
System.out.println("6. 게시글등록");
System.out.println("7. 게시글목록");
System.out.println("8. 게시글조회");
System.out.println("9. 게시글변경");
System.out.println("10. 게시글삭제");
System.out.println("99. 종료");
}
static void printTitle() {
System.out.println("나의 목록 관리 시스템");
System.out.println("-------------------------------");
}
}
ㄴ menuNo를 6~10 번을 추가, 종료 번호를 6 -> 99 로 변경
ㄴ "6. 게시글등록 / 7. 게시글목록 / 8. 게시글조회 / 9.게시글변경 / 10. 게시글 삭제" 로 추가
BoardHandler.java
package bitcamp.myapp.handler;
import bitcamp.myapp.vo.Board;
import bitcamp.util.Prompt;
public class BoardHandler {
static final int MAX_SIZE = 100; // 대문자로 해주는 이유 : 강조하기 위함
static Board[] boards = new Board[MAX_SIZE];
static int length = 0; // 한 사람 입력 할 때마다 증가시킬 값
public static void inputBoard() {
if (!available()) {
System.out.println("더이상 입력할 수 없습니다!");
return; // 함수 종료시키고 싶을 때
}
Board board = new Board();
board.setTitle(Prompt.inputString("제목? "));
board.setContent(Prompt.inputString("내용? "));
board.setWriter(Prompt.inputString("작성자? "));
board.setPassword(Prompt.inputString("비밀번호? "));
// 위에서 만든 Board 인스턴스의 주소를 잃어버리지 않게 레퍼런스 배열에 담는다.
boards[length++] = board;
}
public static void printBoards() {
System.out.println("--------------------------------------------");
System.out.println("번호, 제목, 작성자, 조회수, 등록일");
System.out.println("--------------------------------------------");
for (int i = 0; i < length; i++) {
Board board = boards[i];
System.out.printf("%d, %s, %s, %d, %tY-%5$tm-%5$td\n", board.getNo(), board.getTitle(),
board.getWriter(), board.getViewCount(), board.getCreatedDate());
}
}
public static void viewBoard() {
String boardNo = Prompt.inputString("번호? ");
// 입력 받은 번호를 가지고 배열에서 해당 게시글을 찾아야 한다.
for (int i = 0; i < length; i++) {
Board board = boards[i]; // board:레퍼런스 배열에 있는 인스턴스 주소값을 가져옴
if (board.getNo() == Integer.parseInt(boardNo)) {
// i 번째 항목에 저장된 게시글 정보 출력
System.out.printf("제목: %s\n", board.getTitle());
System.out.printf("내용: %s\n", board.getContent());
System.out.printf("작성자: %s\n", board.getWriter());
System.out.printf("조회수: %d\n", board.getViewCount());
System.out.printf("등록일: %tY-%1$tm-%1$td\n", board.getCreatedDate());
return;
}
}
System.out.println("해당 번호의 게시글이 없습니다!");
}
public static void updateBoard() {
String boardNo = Prompt.inputString("번호? ");
// 입력 받은 번호를 가지고 배열에서 해당 게시글을 찾아야 한다.
for (int i = 0; i < length; i++) {
Board board = boards[i];
if (board.getNo() == Integer.parseInt(boardNo)) {
// i 번째 항목에 저장된 회원 정보 출력
System.out.printf("암호? ");
String password = Prompt.inputString("");
if (!password.equals(board.getPassword())) {
System.out.println("암호가 일치하지 않습니다!");
return;
}
System.out.printf("제목(%s)? ", board.getTitle());
board.setTitle(Prompt.inputString(""));
System.out.printf("내용(%s)? ", board.getContent());
board.setContent(Prompt.inputString(""));
return;
}
}
System.out.println("해당 번호의 게시글이 없습니다!");
}
public static void deleteBoard() {
// 삭제하려는 게시글의 정보가 들어 있는 인덱스를 알아낸다.
int boardNo = Integer.parseInt(Prompt.inputString("번호? "));
int deletedIndex = indexOf(boardNo);
if (deletedIndex == -1) {
System.out.println("해당 번호의 게시글이 없습니다!");
return;
}
for (int i = deletedIndex; i < length - 1; i++) {
boards[i] = boards[i + 1];
}
boards[--length] = null;
System.out.println("삭제했습니다.");
return;
}
private static int indexOf(int boardNo) {
for (int i = 0; i < length; i++) {
Board board = boards[i];
if (board.getNo() == boardNo) {
return i;
}
}
return -1;
}
private static boolean available() { // 같은 클래스 안에서만 사용 가능
return length < MAX_SIZE;
}
}
ㄴ member -> board 로 변경
ㄴ 등록일 출력 시 날짜 출력 형식 %tY-%5$tm-%5$td 이용
ㄴ 5$ => 5번째 출력 (1번째 : 제목 / 2번째 : 내용 / 3번째 : 작성자 / 4번째 : 조회수 / 5번째 : 등록일)
ㄴ 날짜 출력 방식 다르게
코드 실행
날짜 출력 형식
//# 콘솔로 출력하기 III - 형식을 갖춰서 날짜 값 출력하기
public class Exam0130 {
public static void main(String[] args) {
// 현재 날짜 및 시각 정보를 생성한다.
// java.lang 패키지의 멤버를 사용할 때는 그냥 이름을 지정하면 된다.
// 그 외 다른 패키지의 멤버를 사용할 때는 반드시 패키지 이름을 함께 지정해야 한다.
java.util.Date today = new java.util.Date();
// %t[날짜 및 시각 옵션]
// 날짜 및 시간 옵션
// Y : 날짜 및 시각 데이터에서 년도를 추출하여 4자리로 표현한다.
// y : 날짜 및 시각 데이터에서 년도를 추출하여 뒤의 2자리로 표현한다.
System.out.printf("%1$tY, %1$ty\n", today);
// B : 날짜 및 시각 데이터에서 월을 추출하여 전체 이름으로 표현한다. ex) January
// b : 날짜 및 시각 데이터에서 월을 추출하여 단축 이름으로 표현한다. ex) Jan
System.out.printf("%1$tB, %1$tb\n", today);
// m : 날짜 및 시각 데이터에서 월을 추출하여 2자리 숫자로 표현한다. ex) 12, 01
System.out.printf("%1$tm\n", today);
// d : 날짜 및 시각 데이터에서 일을 추출하여 2자리 숫자로 표현한다. ex) 01, 22
// e : 날짜 및 시각 데이터에서 일을 추출하여 1자리 숫자로 표현한다. ex) 1, 22
System.out.printf("%1$td %1$te\n", today);
// A : 날짜 및 시각 데이터에서 요일을 추출하여 긴 이름으로 표현한다. ex) Sunday
// a : 날짜 및 시각 데이터에서 요일을 추출하여 짧은 이름으로 표현한다. ex) Sun
System.out.printf("%1$tA %1$ta\n", today);
// H : 날짜 및 시각 데이터에서 시각을 추출하여 24시로 표현한다.
// I : 날짜 및 시각 데이터에서 시각을 추출하여 12시로 표현한다.
System.out.printf("%1$tH %1$tI\n", today);
// M : 날짜 및 시각 데이터에서 시각을 추출하여 분을 표현한다.
System.out.printf("%1$tM\n", today);
// S : 날짜 및 시각 데이터에서 시각을 추출하여 초를 표현한다.
// L : 날짜 및 시각 데이터에서 시각을 추출하여 밀리초를 표현한다.
// N : 날짜 및 시각 데이터에서 시각을 추출하여 나노초를 표현한다.
System.out.printf("%1$tS %1$tL %1$tN\n", today);
// p : 오전 오후 출력하기
// 소문자 p를 사용하면 am 또는 pm으로 출력하고,
// 대문자 P를 사용하면 AM 또는 PM으로 출력한다.
// 한글은 대소문자가 없기 때문에 의미없다.
System.out.printf("%1$tp\n", today);
// 년-월-일 시:분:초를 출력하라! 예) 2019-01-04 12:04:30
System.out.printf("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS\n", today);
}
}
'네이버클라우드 > JAVA 웹 프로그래밍' 카테고리의 다른 글
JAVA 16일차 (2023-06-14) 자바 기초 DAY14_CRUD 구현 / 스태틱 필드의 한계 확인_개인 프로젝트 - 마트 관리 시스템 (0) | 2023.06.14 |
---|---|
JAVA 15일차 (2023-06-13) 자바 기초 DAY13_인스턴스 메서드와 스태틱 메서드 (0) | 2023.06.13 |
JAVA 15일차 (2023-06-13) 자바 기초 DAY13_변수의 종류 (2) | 2023.06.13 |
JAVA 14일차 (2023-06-12) 자바 기초 DAY12_개인 프로젝트 - 마트 물품 관리 시스템 (0) | 2023.06.12 |
JAVA 14일차 (2023-06-12) 자바 기초 DAY12_Eclipse git 사용법 (0) | 2023.06.12 |