[과제 1] 데이터 파일을 읽어 성적처리하는 클래스를 작성하세요.
- split(): String[] java.lang.String.split(String regex)
하나의 문자열을 주어진 문자열(regex)을 기준으로 분할하여 문자열 배열을 리턴합니다.
예) String[] values = line.split(",");
- 문자열을 정수로 변환: int price = Integer.parseInt("2500");
1. 데이터 파일
[실행 화면]
왕눈이 학생의 성적을 처리했습니다.
아로미 학생의 성적을 처리했습니다.
홍길동 학생의 성적을 처리했습니다.
가길순 학생의 성적을 처리했습니다.
나길순 학생의 성적을 처리했습니다.
▷ C:/홈 폴더/io/data.csv(CSV: Comma Separated Value 파일)
- split() 메소드 이용
- 문자열뒤에 공백이 있으면 안됨.
-----------------------------------------------------------------------------------
왕눈이,80 ,90,100
아로미,75,89,88
홍길동,60,85,77
가길순,100,90,83
나길순,91,92,97
-----------------------------------------------------------------------------------
2. 데이터 파일 처리 결과 파일, 자동 생성됨.
▷ C:/홈 폴더/io/data_proc2.txt
-----------------------------------------------------------------------------------
왕눈이 80 90 100 270 90
아로미 75 89 88 252 84
홍길동 60 85 77 222 74
가길순 100 90 83 273 91
나길순 91 92 97 280 93
-----------------------------------------------------------------------------------
3. 데이티 클래스
▷ oop4.Data.java
-----------------------------------------------------------------------------------
package oop4;
public class Data {
// 왕눈이,80 ,90,100
String name;
int java;
int html;
int css3;
int tot;
int avg;
public Data() {
}
public Data(String name, int java, int html, int css3, int tot, int avg) {
this.name = name;
this.java = java;
this.html = html;
this.css3 = css3;
this.tot = tot;
this.avg = avg;
}
}
-----------------------------------------------------------------------------------
4. 처리 클래스
▷ oop4.DataDAO.java
-----------------------------------------------------------------------------------
package oop4;
import java.io.PrintWriter;
public class DataDAO {
public Data calc(String line) {
System.out.println(line);
.....
}
public void print(Data data, PrintWriter pw) {
pw.print(data.name); // 파일 기록
pw.print("\t\t"+ data.java);
pw.print("\t\t"+ data.html);
pw.print("\t\t"+ data.css3);
pw.print("\t\t"+ data.tot);
pw.print("\t\t"+ data.avg);
pw.print("\n");
}
}
-----------------------------------------------------------------------------------
5. 이용 클래스
▷ oop4.DataProc2.java
-----------------------------------------------------------------------------------package oop4;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class DataProc2 {
public static void main(String[] args) {
File src = new File("C:/ai3/io/data.csv");
File dest = new File("C:/ai3/io/data_proc2.txt");
// File -> FileReader -> BufferedReader
FileReader reader = null; // 파일 읽기
BufferedReader br = null; // 읽은 내용을 메모리에 저장
// PrintWriter -> FileWriter -> File
FileWriter writer = null; // 파일에 기록
PrintWriter pw = null; // 메모리에 기록
try {
reader = new FileReader(src); // Call By Reference, 해시코드 전달
br = new BufferedReader(reader); // Call By Reference, 해시코드 전달
// false: 기존 내용을 지우고 기록, true: 파일 하단에 추가
writer = new FileWriter(dest, false);
pw = new PrintWriter(writer);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try { pw.close(); } catch (Exception e) { }
try { writer.close(); } catch (Exception e) { }
try { br.close(); } catch (Exception e) { }
try { reader.close(); } catch (Exception e) { }
}
}
}
-----------------------------------------------------------------------------------
[과제 2] 데이터 파일을 읽어 년봉을 출력하는 클래스를 작성하세요.
1. 데이터 파일
- 문자열뒤에 공백이 있으면 안됨.
▷ C:/작업 기준폴더/io/pay.csv(CSV 파일)
- 데이터 구조: 성명, 월 급여, 경력 년수
-----------------------------------------------------------------------------------왕눈이,1800000 ,1
아로미,2000000,2
홍길동,2500000,3
가길순,3000000,5
나길순,3800000,9
-----------------------------------------------------------------------------------
2. 데이터 파일 처리 결과 파일, 자동 생성(DataProc.java를 복사하여 사용합니다.)
- 기본급
- 수당: 경력 년수 * 200000
- 급여: 기본급 + 수당
- 년봉 = 급여 * 13
▷ C:/작업 기준 폴더/io/pay_proc2.txt
-----------------------------------------------------------------------------------성명: 왕눈이
기본급: 1800000 원
경력: 1 년
수당: 200000 원
급여: 2000000 원
년봉: 26000000 원
----------------------
성명: 아로미
기본급: 2,000,000 원
경력: 2 년
수당: 400,000 원
급여: 2,400,000 원
년봉: 31,200,000 원
----------------------
.....
-----------------------------------------------------------------------------------
3. 데이터 클래스
▷ oop4.Pay.java
-----------------------------------------------------------------------------------package oop4;
public class Pay {
String name;
int basic;
int year;
int sudang;
int salary;
int total;
public Pay() {
}
public Pay(String name, int basic, int year, int sudang, int salary, int total) {
this.name = name;
this.basic = basic;
this.year = year;
this.sudang = sudang;
this.salary = salary;
this.total = total;
}
}
-----------------------------------------------------------------------------------
4. 처리 클래스
▷ oop4.PayDAO.java
-----------------------------------------------------------------------------------package oop4;
import java.io.PrintWriter;
public class PayDAO {
public Pay calc(String line) {
System.out.println(line);
public void print(Pay pay, PrintWriter pw) {
pw.println("성명: " + pay.name); // 파일 기록
pw.println("기본급: " + pay.basic + " 원");
pw.println("경력: " + pay.year + " 년");
pw.println("수당: " + pay.sudang + " 원");
pw.println("급여: " + pay.salary + " 원");
pw.println("연봉: " + pay.total + " 원");
pw.println("----------------------");
}
}
-----------------------------------------------------------------------------------
5. 이용 클래스 ▷ oop4.PayProc2.java
-----------------------------------------------------------------------------------package oop4;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class PayProc2 {
public static void main(String[] args) {
File src = new File("C:/201810_java/io/pay.csv");
File dest = new File("C:/201810_java/io/pay_proc2.txt");
// File -> FileReader -> BufferedReader
FileReader reader = null; // 파일 읽기
BufferedReader br = null; // 읽은 내용을 메모리에 저장
// PrintWriter -> FileWriter -> File
FileWriter writer = null; // 파일에 기록
PrintWriter pw = null; // 메모리에 기록
try {
reader = new FileReader(src); // Call By Reference, 해시코드 전달
br = new BufferedReader(reader); // Call By Reference, 해시코드 전달
// false: 기존 내용을 지우고 기록, true: 파일 하단에 추가
writer = new FileWriter(dest, false);
pw = new PrintWriter(writer);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try { pw.close(); } catch (Exception e) { }
try { writer.close(); } catch (Exception e) { }
try { br.close(); } catch (Exception e) { }
try { reader.close(); } catch (Exception e) { }
}
}
}
-----------------------------------------------------------------------------------
[과제 3] 단풍 여행 처리 시스템
1. 데이터 파일
- 문자열뒤에 공백이 있으면 안됨.
▷ C:/작업 기준폴더/io/maple.csv(CSV 파일)
- 데이터 구조: 목적지, 날짜, 회비, 인원수, 케이블카
-----------------------------------------------------------------------------------내장산,2016-11-10,50000 ,4,0
설악산,2016-10-15,55000,2,2
덕유산,2016-10-20,60000,2,0
소백산,2016-11-10,40000,3,3
태백산,2016-11-25,35000,5,2
-----------------------------------------------------------------------------------
2. 데이터 파일 처리 결과 파일, 자동 생성
- 케이블카 금액: 인원수 * 12,000 원
- 총금액 = (회비 * 인원수) + 케이블카 금액
▷ C:/작업 기준 폴더/backup/maple_proc2.txt
-----------------------------------------------------------------------------------목적지: 내장산
날짜: 11 월 10 일
회비: ₩ 50,000 원
인원수: 4 명
케이블카: 0 명
케이블카 금액: ₩ 0 원
총금액: ₩ 200,000 원
------------------------------------
.....
-----------------------------------------------------------------------------------
3. 데이터 클래스
▷ oop4.Maple.java
-----------------------------------------------------------------------------------package oop4;
public class Maple {
String mountain;
String date;
int price;
int count;
int cable;
int cable_price;
int total;
public Maple() {
}
public Maple(String mountain, String date, int price, int count, int cable, int cable_price, int total) {
this.mountain = mountain;
this.date = date;
this.price = price;
this.count = count;
this.cable = cable;
this.cable_price = cable_price;
this.total = total;
}
}
-----------------------------------------------------------------------------------
4. 처리 클래스 - split() 메소드 이용
- 천단위 구분기호 출력
DecimalFormat df = new DecimalFormat("₩ #,###,### 원");
String basic = df.format(1800000);
- substring() 메소드 이용
▷ oop4.MapleDAO.java
-----------------------------------------------------------------------------------package oop4;
import java.io.PrintWriter;
import java.text.DecimalFormat;
public class MapleDAO {
public Maple calc(String line) {
System.out.println(line);
.....
}
public void print(Maple maple, PrintWriter pw) {
DecimalFormat df = new DecimalFormat("₩ #,###,### 원");
pw.println("목적지: " + maple.mountain); // 파일 기록
pw.println("날짜: " + maple.date);
pw.println("회비: " + df.format(maple.price));
pw.println("인원수: " + maple.count + " 명");
pw.println("케이블카: " + maple.cable + " 명");
pw.println("케이블카 금액: " + df.format(maple.cable_price));
pw.println("총금액: " + df.format(maple.total));
pw.println("-------------------------------");
}
}
-----------------------------------------------------------------------------------
5. 이용 클래스▷ oop4.MapleProc2.java
-----------------------------------------------------------------------------------
package oop4;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DecimalFormat;
public class MapleProc2 {
public static void main(String[] args) {
File src = new File("C:/ai3/io/maple.csv");
File dest = new File("C:/ai3/io/maple_proc2.txt");
// File -> FileReader -> BufferedReader
FileReader reader = null; // 파일 읽기
BufferedReader br = null; // 읽은 내용을 메모리에 저장
// PrintWriter -> FileWriter -> File
FileWriter writer = null; // 파일에 기록
PrintWriter pw = null; // 메모리에 기록
try {
reader = new FileReader(src); // Call By Reference, 해시코드 전달
br = new BufferedReader(reader); // Call By Reference, 해시코드 전달
// false: 기존 내용을 지우고 기록, true: 파일 하단에 추가
writer = new FileWriter(dest, false);
pw = new PrintWriter(writer);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try { pw.close(); } catch (Exception e) { }
try { writer.close(); } catch (Exception e) { }
try { br.close(); } catch (Exception e) { }
try { reader.close(); } catch (Exception e) { }
}
}
}
-----------------------------------------------------------------------------------