기초JAVA 22강 - 게시판 만들기

Whatever·2021년 10월 8일
0

기초 JAVA

목록 보기
22/26
public class Board {
                  //HashMap 먼저 만들기
                  HashMap<String, Object> data = new HashMap<String, Object>();
                  //ArrayList 만들기
                  ArrayList<HashMap<String, Object>> list
                  = new ArrayList<HashMap<String, Object>>();


public static void main(String[] args) {
	/*
	 * ArrayList와 HashMap을 사용해 게시판 테이블을 만들고,
	 * 조회, 등록, 수정, 삭제가 가능한 게시판을 만들어주세요.
	 * 목록출력, 게시글 내용 볼 수 있음
	 * 게시물의 데이터를 저장
	 * 
	 * 번호, 제목, 내용, 작성자, 작성일자 - key로 사용
	 * 
	 * 목록에서는 조회, 등록, 종료
	 * 상세화면에서는 수정, 삭제, 목록
	 */
	Board bd = new Board();
	bd.seeBoard();
}


//목록
void seeBoard() {
	int number = 1;
	
	while(true) {
		System.out.println("===================================");
		System.out.println("No.\t제목\t작성자\t작성일");
		System.out.println("-----------------------------------");
		for(int i = list.size() - 1; i >= 0 ; i--) {//거꾸로 출력
			System.out.print(list.get(i).get("번호"));
			System.out.print("\t" + list.get(i).get("제목"));
			System.out.print("\t" + list.get(i).get("작성자"));
			System.out.print("\t" + list.get(i).get("작성일"));
			System.out.println();
			System.out.println("-----------------------------------");
		}
		
		System.out.print("1.조회\t2.등록\t0.종료");
		int input = ScanUtil.nextInt();
		
		switch(input) {
		case 1: //조회
			System.out.println("조회할 게시물 번호>");
			int input1 = ScanUtil.nextInt();
			
			listData(input1);
			
			
			break;
		case 2: //등록
			putData(number);
			number++;
			list.add(data);
			System.out.println("작성하신 게시글이 등록되었습니다.");
			break;
		case 0: //종료
			System.out.println("게시판을 종료합니다.");
			System.exit(0);
			break;	
		}
		}	
}

//상세
void seeDetail(int input1) {
	
	while(true) {
	System.out.println("1.수정\t2.삭제\t3.목록");
	int input = ScanUtil.nextInt();
		switch(input) {
		case 1: //수정
			reviseData(input1);
			break;
		case 2: //삭제
			removeData(input1);
		
		case 3: //목록
			return;
		}
	}
	
}


//조회
void listData(int input1) {//글 번호랑 인덱스랑 연관짓지 말기.
	for(int i = 0; i < list.size(); i++) {
		if((int)list.get(i).get("번호") == input1) {
			
		System.out.println("제목 : " + list.get(i).get("제목"));
		System.out.println("내용 : " + list.get(i).get("내용"));
		System.out.println("작성자 : " + list.get(i).get("작성자"));
		System.out.println("작성일 : " + list.get(i).get("작성일"));
		seeDetail(input1);
		return;
		}
	}
	System.out.println("게시글이 존재하지 않습니다.");
}

//등록
void putData(int number) {
				
		data = new HashMap<String, Object>();
		data.put("번호", number);
		System.out.print("제목 : ");
		data.put("제목", ScanUtil.nextLine());
		System.out.print("내용 : ");
		data.put("내용", ScanUtil.nextLine());
		System.out.print("작성자 : ");
		data.put("작성자", ScanUtil.nextLine());
		Date date = new Date();
		SimpleDateFormat format = new SimpleDateFormat("yy-MM-dd");
		data.put("작성일", format.format(date));
	
}

//수정
void reviseData(int input1) {
	for(int i = 0; i < list.size(); i++) {
		if((int)list.get(i).get("번호") == input1) {
				
			System.out.println("글을 수정합니다.");
			System.out.print("제목 : ");
			list.get(i).put("제목", ScanUtil.nextLine());
			System.out.print("내용 : ");
			list.get(i).put("내용", ScanUtil.nextLine());
			System.out.print("작성자 : ");
			list.get(i).put("작성자", ScanUtil.nextLine());
		
		}
	}
}

//삭제
void removeData(int input1) {
	System.out.println("글을 삭제합니다.");
		for(int i = 0; i < list.size(); i++) {
			if((int)list.get(i).get("번호") == input1) {
					list.remove(i);
			
	}
  }
}

}

//선생님이 만든 게시판

package j_collection.t;

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

import e_oop.ScanUtil;

public class Board {

ArrayList<HashMap<String, Object>> boardTable = new ArrayList<>();
SimpleDateFormat format = new SimpleDateFormat("yy-MM-dd");

public static void main(String[] args) {
	/*
	 * ArrayList와 HashMap을 사용해 게시판 테이블을 만들고,
	 * 조회, 등록, 수정, 삭제가 가능한 게시판을 만들어주세요.
	 * 
	 * 번호, 제목, 내용, 작성자, 작성일
	 * 
	 * 목록에서는 조회, 등록, 종료
	 * 상세화면에서는 수정, 삭제, 목록
	 * 
	 */
	new Board().start();
}

private void start() {
	while(true){
		System.out.println("=================================");
		System.out.println("번호\t제목\t작성자\t작성일");
		System.out.println("---------------------------------");
		for(int i = boardTable.size() - 1; i >= 0 ; i--){
			HashMap<String, Object> board = boardTable.get(i);
			System.out.println(board.get("BOARD_NO")
					+ "\t" + board.get("TITLE")
					+ "\t" + board.get("USER_NAME")
					+ "\t" + format.format(board.get("REG_DATE")));
		}
		System.out.println("=================================");
		
		System.out.print("1.조회  2.등록  0.종료>");
		int input = ScanUtil.nextInt();
		
		switch (input) {
		case 1:
			read();
			break;
		case 2:
			insert();
			break;
		case 0:
			System.out.println("프로그램이 종료되었습니다.");
			System.exit(0);
			break;
		}
	}
}

private void read() {
	System.out.print("조회할 게시물 번호>");
	int boardNo = ScanUtil.nextInt();
	
	HashMap<String, Object> board = null;
	for(int i = 0; i < boardTable.size(); i++){
		if(boardNo == (int)boardTable.get(i).get("BOARD_NO")){
			board = boardTable.get(i);
		}
	}
	
	System.out.println("=======================");
	System.out.println("번호\t: " + board.get("BOARD_NO"));
	System.out.println("-----------------------");
	System.out.println("작성자\t: " + board.get("USER_NAME"));
	System.out.println("-----------------------");
	System.out.println("작성일\t: " + format.format(board.get("REG_DATE")));
	System.out.println("-----------------------");
	System.out.println("제목\t: " + board.get("TITLE"));
	System.out.println("-----------------------");
	System.out.println("내용\t: " + board.get("CONTENT"));
	System.out.println("=======================");
	
	System.out.print("1.수정  2.삭제  0.목록>");
	int input = ScanUtil.nextInt();
	
	switch (input) {
	case 1:
		update(board);
		break;
	case 2:
		delete(board);
		break;
	case 0:
		
		break;
	}
}

private void delete(HashMap<String, Object> board) {
	System.out.print("정말 삭제 하시겠습니까?(Y/N)>");
	String input = ScanUtil.nextLine();
	
	switch (input) {
	case "Y":
		for(int i = 0; i < boardTable.size(); i++){
			if(board.get("BOARD_NO") == boardTable.get(i).get("BOARD_NO")){
				boardTable.remove(i);
				System.out.println("게시글이 삭제되었습니다.");
				break;
			}
		}
		break;
	}
}

private void update(HashMap<String, Object> board) {
	System.out.print("제목>");
	board.put("TITLE", ScanUtil.nextLine());
	System.out.print("내용>");
	board.put("CONTENT", ScanUtil.nextLine());
	
	System.out.println("게시글이 수정되었습니다.");
}

private void insert() {
	HashMap<String, Object> board = new HashMap<>();
	
	int max = 0;
	for(int i = 0; i < boardTable.size(); i++){
		if(max < (int)boardTable.get(i).get("BOARD_NO")){
			max = (int)boardTable.get(i).get("BOARD_NO");
		}
	}
	
	board.put("BOARD_NO", max + 1);
	System.out.print("제목>");
	board.put("TITLE", ScanUtil.nextLine());
	System.out.print("내용>");
	board.put("CONTENT", ScanUtil.nextLine());
	System.out.print("작성자>");
	board.put("USER_NAME", ScanUtil.nextLine());
	board.put("REG_DATE", new Date());
	
	boardTable.add(board);
	
	System.out.println("작성하신 게시글이 등록되었습니다.");
}

}

0개의 댓글

관련 채용 정보