쌍용교육(JAVA)/JAVA

쌍용교육 -JAVA 수업 15일차 실습(Movie,MovieMain)

구 승 2024. 4. 12. 08:46
package kr.s28.iostream;

public class Movie {
	private String name;//영화제목
	private String create_year;//제작연도
	private String director; //감독
	private String actor; //배우
	private int time;//상영시간
	
	public void Movie() {};
	
	public void Movie(String name, String creadte_year, String director,String actor, int time) {
		this.name = name;
		this.create_year =creadte_year;
		this.director = director;
		this.actor = actor;
		this.time = time;
	}
	//get/set 메서드

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getCreate_year() {
		return create_year;
	}

	public void setCreate_year(String creadte_year) {
		this.create_year = create_year;
	}

	public String getDirector() {
		return director;
	}

	public void setDirector(String director) {
		this.director = director;
	}

	public String getActor() {
		return actor;
	}

	public void setActor(String actor) {
		this.actor = actor;
	}

	public int getTime() {
		return time;
	}

	public void setTime(int time) {
		this.time = time;
	}
	
	
}

내가 한 실습 답

package kr.s28.iostream;

import java.util.ArrayList;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class MovieMain {
	/*
	 * 메뉴: 1.영화정보입력,2.영화정보출력,3.파일생성,4.파일읽기,5.종료
	 * 1,2번은 consile 2번은 File
	 * 메소드 명 : 메뉴 callMenu()
	 * 			영화정보 입력inputMovie()
	 * 			영화정보 출력 printMovie()
	 * 			파일생성 createFile()
	 * 			파일읽기 readFile()
	 * 			입력시 조건체크:상영시간 0보다 크게 입력하세요.
	 */
	ArrayList<Movie> list;
	BufferedReader br;

	public MovieMain() {
		list = new ArrayList<Movie>();
		try {
			br = new BufferedReader(new InputStreamReader(System.in));
			callMenu();
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			if(br != null)try {br.close();}catch(IOException e) {};
		}

	}

	//메뉴입력
	public void callMenu() throws IOException {
		while(true) {
			System.out.print("1.영화정보입력,2.영화정보출력,3.파일생성,4.파일읽기,5.종료 : " );
			try {
				int num = Integer.parseInt(br.readLine());
				if(num == 1) {
					inputMovie();
				}else if (num ==2) {
					printMovie();
				}else if (num ==3) {
					createFile();
				}else if(num ==4) {
					readFile();
				}else if (num ==5) {
					System.out.println("프로그램 종료");
					break;
				}else {
					System.out.println("잘못입력했습니다.");
				}
			}catch(NumberFormatException e) {
				System.out.println("숫자를 올바르게 입력해주세요");
			}
		}
	}

	//영화정보입력
	public void inputMovie() throws IOException{
		Movie m = new Movie();
		System.out.println("영화제목");
		m.setName(br.readLine());
		System.out.println("제작연도");
		m.setCreate_year(br.readLine());
		System.out.println("감독");
		m.setDirector(br.readLine());
		System.out.println("배우");
		m.setActor(br.readLine());

		m.setTime(parseInputData("상영시간 : "));

		list.add(m);
		System.out.println("영화정보 1건이 추가되었습니다.");
	}

	//상영시간 입력시 조건체크
	public int parseInputData(String time) throws IOException{
		while(true) {
			System.out.println(time);
			try {
				int num = Integer.parseInt(br.readLine());
				if(num <= 0) {
					System.out.println("0보다 크게 입력하세요.");
					continue;
				}
				return num;

			}catch(NumberFormatException e) {
				System.out.println("숫자만 입력하세요.");
			}
		}
	}

	//영화정보출력
	public void printMovie() throws IOException{
		if(list.size()>0) {
			System.out.println("영화목록 : 총 영화수 (" +list.size() + ")");
			System.out.println("------------------------------------");
			System.out.println("영화제목\\t제작연도\\t감독\\t배우\\t상영시간");
			System.out.println("------------------------------------");

			for (Movie m : list) {
				System.out.print(m.getName()+"\\t");
				System.out.print(m.getCreate_year()+"\\t");
				System.out.print(m.getDirector()+"\\t");
				System.out.print(m.getActor()+"\\t");
				System.out.println(m.getTime()+"\\t");
			}//end of for
		}else {
			System.out.println("출력할 영화정보가 없습니다.");
		}
	}
	//파일생성
	public void createFile() {
		FileWriter fw = null;
		BufferedReader bw = null;
		try {
			//파일생성
			fw = new FileWriter("Movie.txt");
			;

			System.out.println("파일에 쓸 말을 적으세요:");

			String message = br.readLine();

			fw.write(message);
			fw.flush();

			System.out.println("파일을 생성하고 내용을 기술했다.");

		}catch(IOException e) {
			e.printStackTrace();
		}finally {
			if(fw != null)try {fw.close();} catch(IOException e) {};
		}
	}

	//파일읽기
	public void readFile() {
		FileReader fr = null;
		int readChar;
		try {
			fr = new FileReader("Movie.txt");
			//파일로부터 데이터를 한 문자씩 읽어들여 유니코드로 반환
			while((readChar = fr.read())!= -1) {
				System.out.print((char)readChar);
				
			}System.out.println("");

		}catch(FileNotFoundException e) {
			e.printStackTrace();
		}catch(IOException e) {
			e.printStackTrace(); 
		}finally {
			if(fr !=null)try {fr.close();}catch(IOException e) {};
		}
	}

	public static void main(String[] args) {
		new MovieMain();
	}
}

강사님의 실습 답

package kr.s28.iostream;

public class Movie {
	private String name;//영화제목
	private String create_year;//제작연도
	private String director; //감독
	private String actor; //배우
	private int time;//상영시간
	
	public void Movie() {};
	
	public void Movie(String name, String creadte_year, String director,String actor, int time) {
		this.name = name;
		this.create_year =creadte_year;
		this.director = director;
		this.actor = actor;
		this.time = time;
	}
	//get/set 메서드

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getCreate_year() {
		return create_year;
	}

	public void setCreate_year(String creadte_year) {
		this.create_year = create_year;
	}

	public String getDirector() {
		return director;
	}

	public void setDirector(String director) {
		this.director = director;
	}

	public String getActor() {
		return actor;
	}

	public void setActor(String actor) {
		this.actor = actor;
	}

	public int getTime() {
		return time;
	}

	public void setTime(int time) {
		this.time = time;
	}
	@Override
	public String toString() {//*****************String.format*****************
		return String.format("%s\\t%s\\t%s\\t%s\\t%d%n", 
				name,create_year,director,actor,time);//format은 printf와 똑같음(문자열,포멧데이터)
	}
	
}

package kr.s28.iostream;

import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class MovieMain {
	/*
	 * 메뉴 : 1.영화정보입력,2영화정보출력,3.파일생성,4.파일읽기,5.종료
	 * 메서드명 : 메뉴 callMenu()
	 *         영화정보입력 inputMovie()
	 *         영화정보출력 printMovie()
	 *         파일생성 createFile()
	 *         파일읽기 readFile()
	 * 입력시 조건 체크 : 0보다 크게 입력하세요.(상영시간)         
	 */
	ArrayList<Movie> list;
	BufferedReader br;

	public MovieMain() {
		list = new ArrayList<Movie>();
		try {
			br = new BufferedReader(
					new InputStreamReader(System.in));
			callMenu();
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			if(br!=null)try {br.close();}catch(IOException e) {}
		}
	}
	//메뉴
	public void callMenu()throws IOException{
		while(true) {
			System.out.print(
					"1.영화정보입력,2.영화정보출력,3.파일생성,4.파일읽기,5.종료>");
			try {
				int num = Integer.parseInt(br.readLine());
				if(num == 1) {//영화정보입력
					inputMovie();
				}else if(num == 2) {//영화정보출력
					printMovie();
				}else if(num == 3) {//파일생성
					createFile();
				}else if(num == 4) {//파일읽기
					readFile();
				}else if(num == 5) {//종료
					System.out.println("프로그램 종료");
					break;
				}else {
					System.out.println("잘못 입력했습니다.");
				}
			}catch(NumberFormatException e) {
				System.out.println("숫자만 입력하세요!");
			}
		}
	}
	//영화정보입력
	public void inputMovie()throws IOException{
		Movie m = new Movie();

		System.out.print("영화제목:");
		m.setName(br.readLine());
		System.out.print("제작연도:");
		m.setCreate_year(br.readLine());
		System.out.print("감독:");
		m.setDirector(br.readLine());
		System.out.print("배우:");
		m.setActor(br.readLine());

		m.setTime(parseInputData("상영시간:"));

		list.add(m);
		System.out.println("영화정보 1건을 입력했습니다.");
	}
	//상영시간 조건 체크
	public int parseInputData(String time)throws IOException{
		while(true) {
			System.out.print(time);
			try {
				int num = Integer.parseInt(br.readLine());

				if(num<=0) {
					System.out.println("0보다 크게 입력하세요.");
					continue;
				}
				return num;				
			}catch(NumberFormatException e) {
				System.out.println("[숫자만 입력 가능]");
			}
		}
	}
	//영화정보출력
	public void printMovie()throws IOException{
		if(list.size()>0) {
			System.out.println("-----------------------------");
			System.out.println("영화제목\\t제작연도\\t감독\\t배우\\t상영시간");
			System.out.println("-----------------------------");
			for(Movie m : list) {
				/*
				System.out.print(m.getName() + "\\t");
				System.out.print(m.getCreate_year() + "\\t");
				System.out.print(m.getDirector() + "\\t");
				System.out.print(m.getActor() + "\\t");
				System.out.print(m.getTime() + "\\n");
				*/
				System.out.print(m.toString());
			}//end of for
		}else {
			System.out.println("출력할 영화정보가 없습니다.");
		}

	}
	//파일생성
	public void createFile() {
		FileWriter fw = null;
		try {
			fw = new FileWriter("movie.txt");
			fw.write("------------------------------------\\n");
			fw.write("영화제목\\t제작연도\\t감독\\t배우\\t상영시간\\n");
			fw.write("------------------------------------\\n");
			for(Movie m : list) {
				fw.write(m.toString());
			}
			fw.flush();
			System.out.println("파일에 영화정보를 저장했습니다.");
		}catch(IOException e) {
			System.out.println("파일에 영화정보 저장 오류");
		}finally {
			if(fw!=null)try {fw.close();}catch(IOException e) {}
		}
	}
	//파일읽기
	public void readFile() {
		FileReader fr = null;
		int readChar;
		try {
			fr = new FileReader("movie.txt");
			while((readChar=fr.read()) != -1) {
				System.out.print((char)readChar);
			}
		}catch(FileNotFoundException e) {
			System.out.println("영화 파일을 찾을 수 없습니다.");
		}catch(IOException e) {
			System.out.println("파일 읽기 오류");
		}finally {
			if(fr!=null)try {fr.close();}catch(IOException e) {}
		}
	}

	public static void main(String[] args) {
		new MovieMain();
	}
}

1.영화정보입력,2.영화정보출력,3.파일생성,4.파일읽기,5.종료>1
영화제목:귀멸의칼날
제작연도:2023
감독:구승회
배우:탄지로
상영시간:120
영화정보 1건을 입력했습니다.
1.영화정보입력,2.영화정보출력,3.파일생성,4.파일읽기,5.종료>2
-----------------------------
영화제목	제작연도	감독	배우	상영시간
-----------------------------
귀멸의칼날	null	구승회	탄지로	120
1.영화정보입력,2.영화정보출력,3.파일생성,4.파일읽기,5.종료>3
파일에 영화정보를 저장했습니다.
1.영화정보입력,2.영화정보출력,3.파일생성,4.파일읽기,5.종료>4
------------------------------------
영화제목	제작연도	감독	배우	상영시간
------------------------------------
귀멸의칼날	null	구승회	탄지로	120
1.영화정보입력,2.영화정보출력,3.파일생성,4.파일읽기,5.종료>5
프로그램 종료