쌍용교육(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
프로그램 종료