국비 수업 12일차 ( 중간 평가 )

김성수·2022년 11월 1일
0
post-thumbnail
post-custom-banner

1. 중간 평가에 제출한 프로그램

1. 오직 입력만을 처리하는 Main 클래스

package 김성수2a;

import java.text.ParseException;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws ParseException {
		Scanner sc = new Scanner(System.in); // 스캐너
		Handler handler = new Handler();	// dao
		Calendar calendar;	// dto
		int select, check;	// 메뉴 번호 지정 , 결과 확인
		String show_Result;
		String name;	// 일정명
		String date;	// 날짜
		
		System.out.println("==============일정 관리 프로그램 실행==============\n");
		do {
			System.out.println("\t<Simple Todo List> (작성자 : 김성수)\n");
			System.out.println("1. 목록 | 2. 추가 | 3. 완료 처리 | 4. 삭제 | 0. 종료");
			System.out.print("\t실행시킬 메뉴 번호를 입력하세요 : ");
			select = sc.nextInt();
			System.out.println();
			sc.nextLine();	// 버퍼제거
			switch(select) {
			case 1:
				show_Result = handler.showList();
				if(show_Result == "") System.out.println("--------------| 데이터가 비어 있습니다!! |--------------\n");
				else {													// 내부가 텅 비어서 ""을 반환했을 경우
					System.out.println("\t<현재 저장된 일정 리스트>");		
					System.out.println(show_Result);			// 값이 있을 경우 삼항을 쓰기에는 별로여서 if else 처리
				}
				
				break;
			case 2:
				System.out.print("업로드 시킬 일정 파일명을 입력하세요 : ");
				name = sc.nextLine();
				System.out.print("날짜를 입력하세요 ※예시(괄호는 제외합니다) [xxxx.xx.xx] : ");
				date = sc.nextLine();	// String으로 받는다
				calendar = new Calendar(name, date);	// 생성 후 저장
				check = handler.uploadList(calendar);	// 만들어진 참조 변수 넘김
				System.out.println(check == 1 ? "입력이 완료되었습니다." : "입력 실패!!");		// 여부 확인
				System.out.println();
				break;
			case 3:
				System.out.print("일정이 끝난 파일명 입력 : ");	// 일정 완료
				name = sc.nextLine();	// 이름 입력
				show_Result = handler.update(name);	// 원하는 결과 "3개중" 하나 문자열로 받음 int보단 string이 코드가 짧다고 판단했음
				System.out.println(show_Result);	// 출력
				break;
			case 4:
				System.out.print("삭제할 일정 파일명 입력 : ");
				name = sc.nextLine();
				check = handler.delete(name);
				System.out.println(check == 1 ? "삭제가 완료되었습니다." : "그런 이름의 데이터는 존재하지 않습니다!!");
				System.out.println();
				break;
			case 0:
				System.out.println("===========================================");
				System.out.println("\t일정 관리 프로그램이 종료됩니다.");
				break;	// 0 입력해도 여기서 걸리기 때문에 아래는 출력안됨
			default:
				System.out.println("옳바른 메뉴를 선택하지 않았습니다. 다시 입력해주세요!!\n");
				// 메뉴에 없는 번호 누르면 오타나길래 그냥 넣어보았음 
//				break; 어짜피 마지막이라 굳이 없어도 된다
			}
			System.out.println("\n\n\n\n\n\n"); // 자체 clean/clear 기능이 없는 것 같아서 땜빵용으로 넣어보았다.
		} while(select != 0);	// 0 될때까지 돌아라

		sc.close();	// 스캐너 종료 필수
	}
}

2. 부가 기능을 구현하는 함수들을 모아놓은 Handler 클래스

package 김성수2a;

public class Handler {
	Calendar[] arr = new Calendar[5];

	String showList() {
		String result = "";
		for(int i = 0; i < arr.length; i++) {
			if(arr[i] != null) {
				result += arr[i].toString() + "\n";
			}
		}
		return result;
	}

	int uploadList(Calendar calendar) {
		for(int i = 0; i < arr.length; i++) {
			if(arr[i] == null) {
				arr[i] = calendar;
				return 1;
			}
			else if(arr[i].list_Name.equals(calendar.list_Name)) {	// 중복 검사 중복 들어가면 완료 못씌움
				return 0;
			}
		}
		return 0;
	}

	String update(String name) {
		for(int i = 0; i < arr.length; i++) {
			if(arr[i] != null && name.equals(arr[i].list_Name)) {
				if(arr[i].complete == true) return "이미 완료처리 된 일정입니다.\n"; // 이미 완료 처리 된 일정은 실행시키지 않는다
				arr[i].complete = true;
				return "일정이 완료처리 되었습니다.\n";
			}
		}
		return "그런 이름의 데이터가 존재하지 않습니다\n";
	}

	int delete(String name) {
		for(int i = 0; i < arr.length; i++) {
			if(arr[i] != null && name.equals(arr[i].list_Name)) {
				arr[i] = null;								
				return 1;									
			}
		}
		return 0;
	}
}

3. 객체를 생성하는 Calendar 클래스


package 김성수2a;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
	


public class Calendar {
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
	String list_Name;
	Date date;
	boolean complete;
	
	
	Calendar(String list_Name, String date) throws ParseException {
		this.list_Name = list_Name;
		this.date = sdf.parse(date);
	}
	
	public String toString() {
		String result = String.format("[%s] %-20s\t%s", sdf.format(date) , list_Name ,complete == true ? "[완료]" : "");
		
		return result;
	}
	
}
profile
다들 잘하는데 나만 못해?
post-custom-banner

0개의 댓글