オブジェクト指向練習問題。
Q1
預金口座を表すクラスAccountを定義して、
各操作ができるプログラムを作成せよ。
■クラス:Account
<フィールド変数>
private int num 口座番号
private int pin 暗証番号
private int amount 預入金額
private static int totalAmount 全口座の預入金額の総額
<一般メソッド>
public boolean checkPin(int p)
… 暗証番号が正しいかどうかをチェックする
deposit
… 引数に指定した金額を口座に入れる
draw
… 引数に指定した金額を口座から引き出す
残高が不足する場合は1円も引き出さない
toString(Override)
… 口座番号と残高を表示する
static displayTotalAmount 機能
… 全口座の預入金額の総額を表示する
[実行例]
1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>1 口座番号を入力して下さい >1234567 暗証番号を入力して下さい >1234 初期預入金額を入力して下さい >10000 1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>1 口座番号を入力して下さい >2345678 暗証番号を入力して下さい >2345 初期預入金額を入力して下さい >15000 1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>4 全口座の残高の合計は25000円です。 1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>3 0---口座番号:1234567, 残高:10000 1---口座番号:2345678, 残高:15000 口座を番号で選択して下さい >1 暗証番号を入力して下さい >2345 引出金額を入力して下さい >10000 10000円引き出しました。 1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>2 0---口座番号:1234567, 残高:10000 1---口座番号:2345678, 残高:5000 口座を番号で選択して下さい >2 口座の番号の選択が誤っています。 1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>3 0---口座番号:1234567, 残高:10000 1---口座番号:2345678, 残高:5000 口座を番号で選択して下さい >0 暗証番号を入力して下さい >1234 引出金額を入力して下さい >15000 残高が不足しています。 1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>3 0---口座番号:1234567, 残高:10000 1---口座番号:2345678, 残高:5000 口座を番号で選択して下さい >0 暗証番号を入力して下さい >1111 暗証番号が誤っています。 1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>2 0---口座番号:1234567, 残高:10000 1---口座番号:2345678, 残高:5000 口座を番号で選択して下さい >0 預入金額を入力して下さい >15000 15000円預入しました。 1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>4 全口座の残高の合計は30000円です。 1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>5 アプリケーションを終了しました。
一般クラス
public class Account { private int num; private int pin; private int amount; private static int totalAmount; public Account(int num,int pin,int amount){ this.num=num; this.pin=pin; this.amount=amount; totalAmount+=amount; } public boolean checkPin(int p){ return this.pin==p; } public void deposit(int money){ this.amount+=money; totalAmount+=money; System.out.println(money+"円預入しました。"); } public void draw(int money){ if(this.amount < money){ System.out.println("残高が不足しています。"); }else{ this.amount-=money; totalAmount-=money; System.out.println(money+"円引き出しました。"); } } @Override public String toString() { return String.format("口座番号:%d, 残高:%d", this.num,this.amount); } public static void displayTotalAmount(){ System.out.println("全口座の残高の合計は"+totalAmount+"円です。"); } }
アプリケーションクラス
import java.util.*; public class BankApp { public static List<Account> list=new ArrayList<>(); public static Scanner s=new Scanner(System.in); public static void main(String[] args) { while(true){ int select=getInputInt("1. 新規口座作成 / 2. 預入 / 3. 引出 / 4.預入総額表示 / 5. 終了>"); switch(select){ case 1: Account acc=new Account( getInputInt("口座番号を入力して下さい >"), getInputInt("暗証番号を入力して下さい >"), getInputInt("初期預入金額を入力して下さい >") ); list.add(acc); break; case 2: displayAccount(); int index=getInputInt("口座を番号で選択して下さい >"); if(index < 0 || index >= list.size()){ System.out.println("口座の番号の選択が誤っています。"); }else{ int money=getInputInt("預入金額を入力して下さい >"); list.get(index).deposit(money); } break; case 3: displayAccount(); index=getInputInt("口座を番号で選択して下さい >"); if(index < 0 || index >= list.size()){ System.out.println("口座の番号の選択が誤っています。"); }else{ int pass=getInputInt("暗証番号を入力して下さい >") ; if(list.get(index).checkPin(pass)){ int money=getInputInt("引出金額を入力して下さい >"); list.get(index).draw(money); }else{ System.out.println("暗証番号が誤っています。"); } } break; case 4: Account.displayTotalAmount(); break; case 5: System.out.println("アプリケーションを終了しました。"); return; } } } public static int getInputInt(String msg){ System.out.print(msg); int input=s.nextInt(); return input; } public static void displayAccount(){ for(int i=0;i<list.size();i++){ System.out.println(i+"---"+list.get(i)); } } }
コメント