반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. bochung01.java 클래스

/*
 * 데이터 저장 관리는 배열 이용
 * 
 * 전체 게시물 조회
 * 글번호 조회
 * 글등록
 * 글수정
 * 글삭제
 * 종료
 */

package bochung.step02.board;
import java.util.*;

public class bochung01 {
	public static void main(String[] args) {
		//게시글을 저장할 배열 선언
		Board[] boards = new Board[2];
		
		// 배열의 크기 표시와 입력될 위치
		int pos = 0;// 글등록, 글삭제시 변경
		
		int no = 0; // 글번호 사용 변수
		Scanner sc = new Scanner(System.in);
		
		System.out.println("게시판 관리 프로그램 - v1");
		while(true) {
			System.out.println("--------------------------");
			System.out.println("1. 전체 게시물 조회");
			System.out.println("2. 글번호 조회");
			System.out.println("3. 글등록");
			System.out.println("4. 글수정");
			System.out.println("5. 글삭제");
			System.out.println("0. 종료");
			System.out.println("--------------------------");
			System.out.print("선택 : ");
			/*
			 * 아래의 코드는 줄바꿈이 생겨서 해결하기 위해 sc.nextLine()을 통해 줄바꿈 제거
			 * 계속 번거롭기 때문에 Integer.parseInt(sc.nextLine()) 한 줄로 사용
			int menu = sc.nextInt();
			sc.nextLine();
			*/
			
			//문자열 값을 받아서 숫자형으로 바꿔줌
			int menu = Integer.parseInt(sc.nextLine());
			
			System.out.println("선택한 메뉴 : " + menu);
			
			switch(menu) {
			
			case 1:
				System.out.println("전체 게시물 수 : " + pos);
				for(int i = pos-1; i>=0;i--) {
					
					System.out.println(boards[i]);
					/*
					 * 아래의 코드를 위의 코드처럼 1줄로 줄일 수 있다.
					Board b = boards[i];
					System.out.println(b);
					*/
					
					/* 1번과 2번 코드는 같다.
					1. System.out.println(b);
					2. System.out.println(b.toString());
					아래 코드를 주석으로 막고 위의 코드를 실행하면 주소만 나옴.
					System.out.print(b.getNo() + "\t");
					System.out.print(b.getTitle() + "\t");
					System.out.println(b.getWriter() + "\t");
					*/
					
					//자동으로 toString이 붙기 때문에 그냥 사용 가능
					
					
				}
				break;
				
			case 2: 
				
				break;
			
			case 3: 
				/*
				 * 1. 배열생성하기(기존크기 * 2)
				 * 2. 기존 배열의 내용을 복사한다.
				 * 3. 새롭게 생성되는 temp 배열의 주소값을 기존 배열 boards에 대입한다.
				 */
				if(pos==boards.length) {
					/*
					// 1. 배열생성하기(기존크기 * 2)
					Board[] temp = new Board[pos*2];
					
					// 2. 기존 배열의 내용을 새롭게 생성된 배열에 복사
					for(int i=0;i<pos;i++) {
						temp[i] = boards[i];
					}
					
					// 3. 새롭게 생성된 배열의 주소를 기존 배열에 넘긴다.
					boards = temp;
					*/
					
					//위의 1,2,3번을 간단하게 짜는 방법
					//새롭게 생성된 배열을 반환 copyOf(복사할배열, 새롭게 생성할 크기)
					boards = Arrays.copyOf(boards, pos * 2);
					
					System.out.println("더이상 입력이 불가능합니다.");
					break;
				}
				
				System.out.println("글등록 호출됨.");
				System.out.print("작성자 : ");
				String writer = sc.nextLine();
				
				System.out.print("제목 : ");
				String title = sc.nextLine();
				
				System.out.print("내용 : ");
				String content = sc.nextLine();
				
				System.out.println("입력 끝");
				
				// writer, title, content의 변수의 값을 case 3번을 빠져나가기 전에 저장.
				Board b = new Board();
				b.setWriter(writer);
				b.setTitle(title);
				b.setContent(content);
				b.setNo(++no);
				boards[pos++] = b; // 여기서 저장
				break;
			
			case 4: 
				break;
			
			case 5: 
				break;
			
			case 0: 
				System.out.println("프로그램을 종료합니다.");
				System.exit(0); //심플하게 끝내는 방법
			}			
		}
	}
}

 

2. Board.java 클래스

package bochung.step02.board;

/**
 * 게시물 정보를 표현하는 클래스 
 * - 글쓴이
 * - 제목
 * - 내용
 * - 번호
 * @author yong
 */

public class Board {
	public String toString() {
		return no + "\t" + title + "\t" + writer;
	}
	
	private int no;
	private String writer;
	private String title;
	private String content;
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	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;
	}
}
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기