1つ。このシステムは、ATMマシンを使用してアカウントを開設するために銀行ユーザーをシミュレート、クエリ、デポジット、および引き出しを行い、Java言語を使用してプログラミングを実装する必要があります。
説明:
1。データ入力の例外については、Java例外処理メカニズムを使用してそれを処理できます。
2。スコアは、機能的な実装とコードの規範性を組み合わせた方法で評価されます。
3.プロジェクトの要件について質問がある場合は、QQメッセージを残して相談することでいつでも私に連絡できます。
4。全国の祝日の間、教師は毎日会社で勤務しています。私は10月4日に会社で勤務しており、10月7日に普通に仕事に行きます。誰もがプロジェクトを行うために会社に来ることを歓迎します。
二。プロジェクト機能要件:
プロジェクトは実行を開始し、メインメニューを次のように表示します。
銀行セルフサービスターミナルシステム
******************************
0 .-----アカウントを開きます
1.----------------------------------------------------------------------------------------------------------------------------
2 .------デポジット
3 .-----撤退
4 .-------出口
******************************
実行する関数を選択してください。
この時点で、ユーザーはキーボード入力を介して実装する機能を選択できます。入力が0、1、2、3、4でない場合、システムは次のようにプロンプトします。
選択したメニューは存在しません!
再選択してください:
メニューの選択のためにデータに再入力するようにユーザーに依頼してください!
ユーザーが0を入力すると、クエリ関数が入力されます。システムプロンプト:
******************************
アカウントの開く機能を選択しました
あなたの名前を入力してください:
この時点で、ユーザーは自分の名前を入力する必要があります。入力が完了した後、システムは次のようにプロンプトします。
ID番号を入力してください:
この時点で、ユーザーは18桁のID番号を入力する必要があります。検証が失敗し、継続的な入力が必要な場合、システムは次のようにプロンプトします。
パスワードを入力してください:
この時点で、ユーザーは6桁の純粋なデジタルパスワードを入力する必要があります。検証が失敗し、継続的な入力が必要な場合、検証が渡された後、システムは次のようにプロンプトします。
アカウントのオープニングは成功しました、それを使用してくれてありがとう!
銀行セルフサービスターミナルシステム
******************************
0 .-----アカウントを開きます
1.----------------------------------------------------------------------------------------------------------------------------
2 .------デポジット
3 .-----撤退
4 .-------出口
******************************
実行する関数を選択してください。
ユーザーが1に入ると、クエリ関数が入力されます。システムプロンプト:
******************************
クエリ関数を選択しました
クエリするカード番号を入力してください:
この時点で、ユーザーはクエリカード番号を入力する必要があり、システムはカード番号を確認します。カード番号が存在しない場合、それはプロンプトになります:入力したカード番号は存在しません、再入力してください:
クエリするカード番号を入力してください:
カード番号に再入力します。ユーザーが正しいカード番号を入力すると、プロンプトは次のとおりです。
パスワードを入力してください:
この時点で、ユーザーは6桁の純粋なデジタルパスワードを入力する必要があります。検証が失敗し、継続的な入力(最大3回)が必要な場合、システムは現在のユーザーアカウント情報を表示し、検証が渡された後にメインメニューに入力します。
あなたがクエリしているアカウント情報は次のとおりです。
******************************
名前IDカード番号カード番号金額
Zhang Sanfeng420106198410112062 111111 12800.0
銀行セルフサービスターミナルシステム
******************************
0 .-----アカウントを開きます
1.----------------------------------------------------------------------------------------------------------------------------
2 .------デポジット
3 .-----撤退
4 .-------出口
******************************
実行する関数を選択してください。
ユーザーが2に入ると、デポジット関数が入力されます:システムプロンプト:
******************************
あなたの選択は堆積機能です
預金するカード番号を入力してください:
この時点で、ユーザーはデポジットのカード番号を入力する必要があり、システムはカード番号を確認します。カード番号が存在しない場合、プロンプトは次のとおりです。
入力したカード番号は存在しません。再入力してください。
預金するカード番号を入力してください:
カード番号に再入力します。ユーザーが正しいカード番号を入力すると、プロンプトは次のとおりです。
パスワードを入力してください:
この時点で、ユーザーは6桁の純粋なデジタルパスワードを入力する必要があります。検証が失敗し、継続的な入力(最大3回)が必要な場合、システムは現在のユーザーアカウント情報を表示し、検証が渡された後にメインメニューに入力します。
預けたいアカウント情報は次のとおりです。
******************************
名前IDカード番号カード番号金額
Zhang Sanfeng420106198410112062 111111 12800.0
預金する金額を入力してください:
この時点で、ユーザーは預金金額を入力する必要があり、システムは金額を判断します。入力データが0以下の場合、次のように求められます。
入力したデータは無効で、システムは自動的に終了します!使用してくれてありがとう
銀行セルフサービスターミナルシステム
******************************
0 .-----アカウントを開きます
1.----------------------------------------------------------------------------------------------------------------------------
2 .------デポジット
3 .-----撤退
4 .-------出口
******************************
実行する関数を選択してください。
ユーザーが法的にデータを入力した場合、システムはデポジットが成功していることを促し、メインメニューに戻ります。
デポジットは成功しました、それを使ってくれてありがとう!
銀行セルフサービスターミナルシステム
******************************
0 .-----アカウントを開きます
1.----------------------------------------------------------------------------------------------------------------------------
2 .------デポジット
3 .-----撤退
4 .-------出口
******************************
実行する関数を選択してください。
データはユーザーアカウントに預けられます。ユーザーが再度データを検索すると、変更されたアカウントの金額を確認できます。 (注:このシステムはデータストレージにファイルを使用しているため、ユーザーがプログラムを再起動すると、データがファイルから読み取り、メモリに再開されます。この関数はオプションです。
ユーザーが3に入ると、撤退関数が入力されます:システムプロンプト:
******************************
撤回機能として撤回するカード番号を入力してください。
この時点で、ユーザーは引き出しのためにカード番号を入力する必要があります。システムはカード番号を確認します。カード番号が存在しない場合、プロンプトが表示されます。
入力したカード番号は存在しません。再入力してください。
撤回するカード番号を入力してください:
カード番号に再入力します。ユーザーが正しいカード番号を入力すると、プロンプトは次のとおりです。
パスワードを入力してください:
この時点で、ユーザーは6桁の純粋なデジタルパスワードを入力する必要があります。検証が失敗し、継続的な入力(最大3回)が必要な場合、システムは現在のユーザーアカウント情報を表示し、検証が渡された後にメインメニューに入力します。
撤回したいアカウント情報は次のとおりです。
******************************
名前IDカード番号カード番号金額
Zhang Sanfeng420106198410112062 111111 12800.0
撤回する金額を入力してください:
この時点で、ユーザーは引き出し額を入力する必要があり、システムは金額を判断します。入力データがアカウントの総額より0以下の場合、プロンプトは次のとおりです。
入力したデータは無効で、システムは自動的に終了します!使用してくれてありがとう
銀行セルフサービスターミナルシステム
******************************
0 .-----アカウントを開きます
1.----------------------------------------------------------------------------------------------------------------------------
2 .------デポジット
3 .-----撤退
4 .-------出口
******************************
実行する関数を選択してください。
ユーザーが法的にデータを入力した場合、システムは引き出しが成功し、メインメニューに戻ることを促します。
撤退は成功しました、それを使ってくれてありがとう!
銀行セルフサービスターミナルシステム
******************************
0 .-----アカウントを開きます
1.----------------------------------------------------------------------------------------------------------------------------
2 .------デポジット
3 .-----撤退
4 .-------出口
******************************
実行する関数を選択してください。
データはユーザーのアカウントから差し引かれます。ユーザーが再度データを検索すると、変更されたアカウントの金額を確認できます。
ユーザーが4に入ると、システムは終了します。
三つ。設計要件
(1)パッケージ1:com.bank.unionpayはUnionPayを意味し、このパッケージの下に追加します。
クエリのバランス、デポジット、撤退などの抽象的な方法を含む、銀行カードへのインターフェイスを表します。
これは、ATMマシンを表す抽象クラスを表し、銀行カードタイプのオブジェクトを属性またはパラメーターとして使用し、クエリバランス、デポジット、引き出しなどなどのインスタンスメソッドを実装し、抽象メソッドとしてアカウントの開きを追加します。
これは、ABC、ICBC、CCB、およびBOCを含む、4つの主要銀行の列挙タイプを表します。中国農業銀行、中国産業銀行、CCB、および中国銀行をそれぞれ代表しています。
(2)パッケージ2:com.bank.abcは中国の農業銀行を表しています。このパッケージの下に追加します。
属性を含むシングルトンパターンで銀行クラスを定義します:銀行タイプ(列挙タイプ、定数= ABC)、銀行名(文字列)、銀行カードリスト(セット)など。
銀行カードの実装クラスを定義します - 属性を含む普通型カード:銀行タイプ(列挙タイプ= ABC)、名前、ID番号、カード番号、パスワード、残高。バランス、デポジット、引き出しなどをクエリするための方法を実装します。
属性を含むATMマシンのサブクラスを定義します:銀行タイプ(列挙タイプ、constant = abc)、アカウントの開く方法を実装します。その中には、普通型カードのみを開くことができ、カード番号は6桁の乱数で、自動的に生成されます。新しくオープンした銀行カードは、銀行の銀行カードリストに追加されます。
普通預金カードのサブクラス - クレジットカード、属性の追加:当座貸越制限、引き出し方法の書き換え、および最大引き出し額を制御することは、残高 +当座貸越制限の合計よりも大きくできません。
(3)パッケージ3:com.bank.testはテストを表し、このパッケージの下にメインメソッドを備えたテストクラスを追加して、プロジェクトで必要なシミュレーションATMマシンの機能を実現します。
次の機能を選択します。
ICBCを単一州モードで実装し、デフォルトで複数の銀行カードをテストクラスに追加し、農業銀行のATMマシンにクロスバンククエリと堆積および引き出し機能を実装します。
パッケージ1:com.bank.unionpay
1。銀行カード抽象クラス
パッケージcom.bank.unionpay; public interface yinhangka {public void cun(); public void qu(); public void getyu();}2。銀行の種類を列挙します
パッケージcom.bank.unionpay; public enum yinhang {abc( "Agricultural Bank")、ICBC( "Industrial and Commercial")、ccb( "ccb")、boc( "bank of China"); private final string yinhang; this.yinhang;}}3。ATMクラス
パッケージcom.bank.unionpay;インポートcom.bank.abc.yinhanglei; public abstract class atm {private yinhangeri yhl; //銀行クラス属性プライベートダブルユエ。 //変数Yuepublic double getyue(){return yue;} public void setyue(double yue){this.yue = yue;} // query method public void yue(){system.out.println( "カードの残高は:" +this.yue);} cun){if(cun <0){system.out.println( "入力は間違っている");} else {this.yue+= cun; out.out.println( "カードの残高は:"+this: "+this);}} //引き出し方法public void qu(double qu){if(qu> yue)不十分な ");} else {this.yue- = qu; system.out.println("カードの残高は: "+this.yue);}} // account boid kaihu();}を開くアカウントの抽象的な方法を定義します。4。メインインターフェイスクラス
パッケージcom.bank.unionpay; Import java.util.arraylist; import java.util.list; import java.util.scanner; public class zujiemian {public void zhujiemian(){system.out.println( "銀行のセルフサービス末端末端system "); system.out.println(); system.out.println(" ****************************** "); system.out.println(); list <string> li = new arraylist <string>(); li.add("アカウントopening "); li.add(" query "); li.add(" dopite "); li.add(" exit "); li.add(" Invoice "); li.add(" exit "); for(int i = 0; i <5; i ++){System.out.println(i+"------"+li.get(i));} out.println(); system.out.println( "*******************"); System.out.println( 実行する: ");}}パッケージ2:com.bank.abc
1。ATM2アカウント開設カテゴリ
パッケージcom.bank.abc; import java.util.random; import java.util.scanner; Import com.bank.unionpay.atm; Import com.bank.unionpay.yinhang; public class atm2はattm {private yinhang yhl = yinhang.abc; @overridepublic void kaihu(){//アカウントの開く方法//名前を入力するcuxuka cxk = new cuxuka(); try {scanner sc1 = new scanner(system.in); system.out.println( "your name:"); string st = sc1.nextline( "); cxk.setname(st); cxk.setname(st); System.out.println( "IDカード番号を入力してください:"); st1 = "// d {15} | // d {17} [// dxx]"; if(str.matches(st1)){cxk.setshenfen(str); break;} else {system.out.println( "入力されたID番号は18桁のID番号ではありません");}パスワード: "); for(int ig = 0; ig> = 0; ig ++){scanner sc3 = new scanner(system.in); string pass = sc3.nextline(); string mm =" // d {6} "; if(pass.matches(mm)){cxk.setPassword(pass); break; 6桁のパスワード ");}} // 6桁の貯蓄カード番号を生成しますランダムa = new Random(); int [] ch = new int [6]; stringbuilder str = new StringBuilder(); string s; for(int i = 0; i <6; i ++){ch [i] = a.nextint(9); c:ch){str.append(c);} s = str.tostring(); cxk.setcard(s); //生成されたデータを銀行カードリストにインポートしますyinhanghi.getyinhangeri()。リスト。 yinhangheri.getyinhanglei()。map.put(cxk.getcard()、cxk); system.out.println( "新しいカード番号は:"+cxk.getcard()); out.println( "アカウントの開始は成功しました、"); 正しくない");}}}2。貯蓄カードカテゴリ
パッケージcom.bank.abc; import java.util.scanner;インポートcom.bank.unionpay.yinhang;インポートcom.bank.unionpay.yinhangka; public class cuxukaはyinhangkaを実装します。 ();@OverridePublic String toString(){return "name =" + name + "/t/n" + "card =" + shenfen + "/n" + "card number =" + card + "/t/n" + " +" + balance;} // getname(){return name;} public void setname(string name){this.name = name;} public string getshenfen(){return shenfen;} public void setshenfen(string shenfen){this.shenfen = shenfen;} public string getcard(カード;} public String getPassWord(){return Password;} public void setPassword(String Password){this.password = password;} public balance;} public void setBalance(){this.balance = balance;} // balance balance;} // depode @overridepublic cun(){cuxuka cu1 = cuxuka(); cu1.chaxun(); scanner sc2 = new scanner(system.in); system.out.println( "預け入れたい金額を入力してください:"); double cun = sc2.nextdouble(); ");} else {this.balance+= cun; yinhanglei.getyinhanglei()。map.get(cu1.card).setbalance(balance); system.out.println("免責事項の成功、残りの量 "+yinhanglei.getyinhanghi()メソッドpublic void chaxun(){while(true){try {scanner sc = new scanner(system.in); system.out.println( "Query:"); string s = sc.nextline(); // yinhanglei for(string for stringのマップコレクションを送信するTEMP:yinhanglei.getyinhanglei()。map.keyset()){if(s.equals(temp)){this.card = s;}} if(s.equals(card))// card number {int i = 0; system.out.println( "scanner:"); st1 = sc1.nextline(); if(st1.equals(yinhanglei.getyinhanglei()。map.get(s).getpassword())){system.out.println( "クエリ情報is: "); System.out.println(); system.out.println(" ************************************ "); system.out.println(); system.out.println("名前ID番号カード番号anight ")); system.out.println(); system.out.println(yinhanglei.getyinhanglei()。map.get(s)); break;} else {i ++; if(i == 3){system.out.println("パスワード入力エラー3回以上 "); error ") cuxuka(); cu.chaxun(); scanner sc1 = new scanner(system.in); system.out.println( "撤回する金額を入力してください:"); double qu = sc1.nextdouble(); //撤退方法を実装しますif(qu <balance){this.balance- = qu; yinhanglei.getyinhanglei()。map.get(cu.card).setbalance(balance); system.out.println( "撤回は成功します。 {system.out.println( "入力したデータは無効で、システムは自動的に終了します! ");;} else {system.out.println("不十分なバランス ");}}@overridepublic void getyu(){//バランス計算cuxuka cu = new cuxuka(); system.out.println("残りの量 "+cu.getbalance();}}}}3。シングルトンモデルバンキングカテゴリ
パッケージcom.bank.abc; import java.util.arraylist; import java.util.hashmap; import java.util.list; import java.util.map; import com.bank.unionpay.yinhang;パブリッククラスyinhange ArrayList <>(); public Map <String、cuxuka> map = new Hashmap <>(); // private Construction Method private yinhangeri(){super();} private static yinhangeri bank = new yinhangeri(); public static yinhangeri getyinhanghi(){return bank;}}}4。クレジットカードカテゴリ
パッケージcom.bank.abc; public class xinyongkaはcuxukaを拡張します{//独自の属性を作成しますプライベートダブルトゥージ;パブリックダブルgettouzhi(){Return touzhi;} public void setouzhi(double touzhi){this.touzhi = touzhiメソッドif((touzhi+getbalance())> = qu){system.out.println( "overdraw on"+(qu-getbalance())パッケージ3:com.bank.test
1。テストクラス
パッケージcom.bank.test; import java.util.arraylist; import java.util.list; import java.util.scanner; import com.bank.abc.atm2; import com.bank.abc.cuxuka; Import com.bank.unionpay.atm; import com.zujieimian; main(string [] args){//メインインターフェイスCuxuka cxk = new cuxuka() scanner(system.in); int in = sc.nextint(); //入力番号がインターフェイス番号を満たしているかどうかを守る(in == 0 || in == 1 || in == 2 || in == 3 || in == 4){//開く関数(in == 0){atm2 atm2 = new atm2(); atm2.kaihu(); system.out.println( "***************************************"); system.out.println( "アカウントの開く関数として選択"); system.out.println();継続;} //クエリ関数if(in == 1){system.out.println( "***********************************"); system.out.println( "Query functionとして選択した"); cxk.chaxun(); contion;} //デフォルト関数if(in == 2){system.out.println( "***************************************************************************************************************("あなたの選択はデポジット関数 "); cxk.cun();} //撤回関数if(in == 3){system.out.println( "*********************************************************************************************"); "); break;}} // print else {system.out.println("選択したメニューは存在しません! ")結果:
上記は、編集者によって導入されたJavaシミュレーションバンクセルフサービスターミナルシステムです。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!