Java -FileWriter -3
계좌를 생성해서 출금입금하고 목록을 보여주는 프로그램이다.
Account class
public class Account {
private String no;
private String name;
private String date;
private int balance;
private int balace;
public int getBalace() {
return balace;
}
public void setBalace(int balace) {
this.balace = balace;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
@Override
public String toString() {
return no + "," + name + "," + date + "," + balance + ","+balace+ "\n";
}
}
AccountDAO class
import java.io.*;
import java.util.*;
public class AccountDAO {
File file = new File("c:/java/java2/account.txt");
//입금
public boolean input (String no, int money) {
boolean success = false;
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "";
String newFile = "";
while((line = reader.readLine()) !=null) {
String[] item = line.split(",");
Account vo = new Account();
vo.setNo(item[0]);
vo.setName(item[1]);
vo.setDate(item[2]);
int balance = Integer.parseInt(item[4]);
if(no.equals(item[0])) {
vo.setBalace(balance+money);
}else {
vo.setBalace(balance);
}
newFile=newFile +vo.toString();
}
FileWriter writer = new FileWriter(file, false);
writer.write(newFile);
writer.flush();
writer.close();
success=true;
}catch (Exception e) {
System.out.println("input 오류:"+ e.toString());
}
return success;
}
//출금
public boolean output (String no, int money) {
boolean success = false;
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "";
String newFile = "";
while((line = reader.readLine()) !=null) {
String[] item = line.split(",");
Account vo = new Account();
vo.setNo(item[0]);
vo.setName(item[1]);
vo.setDate(item[2]);
int balance = Integer.parseInt(item[4]);
if(no.equals(item[0])) {
if(balance-money>0) {
vo.setBalace(balance-money);
} else{
vo.setBalace(balance);
System.out.println("출금불가 !");
}
} else {
vo.setBalace(balance);
}
newFile=newFile +vo.toString();
}
FileWriter writer = new FileWriter(file, false);
writer.write(newFile);
writer.flush();
writer.close();
success=true;
}catch (Exception e) {
System.out.println("input 오류:"+ e.toString());
}
return success;
}
//계좌 조회
public Account read (String no) {
Account vo = new Account();
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "";
while((line = reader.readLine()) !=null) {
String[] item = line.split(",");
if(no.equals(item[0])) {
vo.setNo(item[0]);
vo.setName(item[1]);
vo.setDate(item[2]);
vo.setBalance(Integer.parseInt(item[4]));
}
}
}catch (Exception e) {
System.out.println("read 오류:"+ e.toString());
}
return vo;
}
//계좌목록
public ArrayList<Account> list() {
ArrayList<Account> array = new ArrayList<Account>();
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "";
while((line = reader.readLine()) !=null) {
String[] item = line.split(",");
Account vo = new Account();
vo.setNo(item[0]);
vo.setName(item[1]);
vo.setDate(item[2]);
vo.setBalance(Integer.parseInt(item[4]));
array.add(vo);
}
}catch (Exception e) {
System.out.println("insert 오류:"+ e.toString());
}
return array;
}
//계좌생성
public boolean insert(Account vo) {
boolean success = false;
try {
FileWriter writer = new FileWriter(file,true);
writer.write(vo.toString());
writer.flush();
writer.close();
success=true;
}catch(Exception e) {
System.out.println("insert 오류:"+ e.toString());
}
return success;
}
}
Main class
import java.text.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
AccountDAO adao = new AccountDAO();
DecimalFormat df= new DecimalFormat("#,###원");
Scanner scan = new Scanner(System.in);
boolean run = true;
while(run) {
System.out.println("┌───────────────────────────────────────────┐");
System.out.print("│1.계좌생성 ");
System.out.print("2.계좌목록 ");
System.out.print("3.예금 ");
System.out.print("4.출금 ");
System.out.print("5.조회 ");
System.out.print("0.종료 │\n");
System.out.println("└───────────────────────────────────────────┘");
System.out.print("선택>");
String menu = scan.nextLine();
switch(menu) {
case "1":
System.out.println("┌──────┐");
System.out.println("│계좌생성│");
System.out.println("└──────┘");
Account vo = new Account();
System.out.print("계좌번호>"); vo.setNo(scan.nextLine());
System.out.print("계좌주>"); vo.setName(scan.nextLine());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String today = sdf.format(new Date());
vo.setDate(today);
System.out.print("초기입금액>"); String money=scan.nextLine();
vo.setBalance(Integer.parseInt(money));
System.out.println(vo.toString());
boolean result =adao.insert(vo);
if(result) {
System.out.println("계좌 생성 성공");
}else {
System.out.println("계좌 생성 실패");
}
break;
case "2":
System.out.println("┌──────┐");
System.out.println("│계좌목록│");
System.out.println("└──────┘");
System.out.printf("%s\t%s\t%s\t\t\t%s\n","계좌번호","계좌주","생성일","잔액");
System.out.println("───────────────────────────────────────────────");
ArrayList<Account> array=adao.list();
for(Account a:array) {
String balance = df.format(a.getBalance());
System.out.printf("%s\t%s\t%s\t%s\n"
, a.getNo(),a.getName(),a.getDate(),balance);
}
break;
case "3":
System.out.println("┌───┐");
System.out.println("│예금│");
System.out.println("└───┘");
System.out.print("입금할 계좌번호>"); String no = scan.nextLine();
vo = adao.read(no);
if(vo.getName()==null) {
System.out.println("해당 계좌가 없습니다!");
}else {
System.out.println("계좌주 :" +vo.getName());
System.out.println("잔액 :" +df.format(vo.getBalance()));
System.out.print("입금액>");
money = scan.nextLine();
result =adao.input(no,Integer.parseInt(money));
if(result)
System.out.println("입금완료!");
int balance = vo.getBalance() + Integer.parseInt(money);
System.out.println("잔액:" + df.format(balance));
}
break;
case "4":
System.out.println("┌───┐");
System.out.println("│출금│");
System.out.println("└───┘");
System.out.print("출금할 계좌번호>"); no = scan.nextLine();
vo = adao.read(no);
if(vo.getName()==null) {
System.out.println("해당 계좌가 없습니다!");
}else {
System.out.println("계좌주 :" +vo.getName());
System.out.println("잔액 :" +df.format(vo.getBalance()));
System.out.print("출금액>");
money= scan.nextLine();
boolean success =adao.output(no,Integer.parseInt(money));
int balance = vo.getBalance() - Integer.parseInt(money);
if(balance>0) {
System.out.println("출금완료!");
System.out.println("잔액:" + df.format(balance));
}
}
break;
case "5":
System.out.println("┌──────┐");
System.out.println("│계좌조회│");
System.out.println("└──────┘");
System.out.print("계좌번호>"); no = scan.nextLine();
vo = adao.read(no);
if(vo.getName()==null) {
System.out.println("해당 계좌가 없습니다!");
}else {
System.out.println("계좌주 :" +vo.getName());
System.out.println("생성일 :" +vo.getDate());
System.out.println("잔액 :" +df.format(vo.getBalance()));
}
break;
case "0":
run=false;
break;
default:
System.out.println("0~4번을 선택하세요!");
}
}
System.out.println("프로그램 종료!");
}
}
-
Account 계좌번호, 이름, 생성일, 잔액 을 필드로 생성한다.
-
AccountDAO
- input 메서드 : 계좌번호와 돈을 입력받는다. 입력받은 값과 계좌번호가 일치하면 잔액+입금액을한다. 아니면 잔액 그대로 둔다. 그리고 새로운 파일에 누적해준다.
- output 메서드 : 계좌번호와 돈을 입력받는다. 입력받은값과 계좌번호가 일치하고 잔액-입금액이 0보다크면 출력 한다. 아니다면 잔액을 그대로출력하고 출금불가를 출력한다.
- read 메서드 : 버퍼생성해서. 한줄씩읽어 쪼개서 입력받은 계좌명과 들어가있는값이 일치하는지 확인한다. 일치하다면 저장된 값을 출력한디/
- list 메서드 : ArrayList를 생성해서 어레이에 담아서 계좌목록을 보여준다.
- insert 메서드 : 파일을 생성해서 계좌를 입력받는다.
댓글남기기