最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)簡單的ATM項目

 更新時間:2020年10月27日 17:10:12   作者:wymolin  
這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)簡單的ATM項目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java實現(xiàn)簡單的ATM項目的具體代碼,供大家參考,具體內(nèi)容如下

首先要了解的是,這個ATM項目本身是一個輕量級的項目,只為了完成一些ATM具備的一些方法,并非是真正完成一個ATM的全部功能和需求

那么在這個輕量級的ATM項目中,我將完成添加儲蓄賬號,添加信用賬戶,提款,取款等基本功能。

適合新手查看,需要掌握java的繼承,多態(tài),封裝等基本技術(shù)能力

那么,首先創(chuàng)建如下的對象類:Account(賬戶類),Bank(銀行類),CreditAccount(信用賬戶),SavingAccount(儲蓄賬戶類);

大家首先應(yīng)該搞清楚,這些類文件中之間的關(guān)系,每個類之間需要用到什么樣的方法;

那么我們先填寫Account類

package com.atm.entity;
 
/**
 * 銀行賬戶類
 */
public abstract class Account {
 /**
 * 賬戶帳號
 */
 private String accountId;
 /**
 * 賬戶姓名
 */
 private String accountName;
 /**
 * 賬戶密碼
 */
 private String accountPwd;
 /**
 * 賬戶余額
 */
 private double accountBalance;
 /**
 * 賬戶身份證號
 */
 private String accountPersonId;
 /**
 * 賬戶郵箱
 */
 private String accountEmail;
 /**
 * 賬戶聯(lián)系電話
 */
 private long accountTelno;
 
 public Account() {
 }
 
 public Account(String accountName, String accountPwd, String accountPersonId, long accountTelno,
 String accountEmail) {
 this.accountName = accountName;
 this.accountPwd = accountPwd;
 this.accountPersonId = accountPersonId;
 this.accountTelno = accountTelno;
 this.accountEmail = accountEmail;
 
 }
 
 public String getAccountId() {
 return accountId;
 }
 
 public void setAccountId(String accountId) {
 this.accountId = accountId;
 }
 
 public String getAccountName() {
 return accountName;
 }
 
 public void setAccountName(String accountName) {
 this.accountName = accountName;
 }
 
 public String getAccountPwd() {
 return accountPwd;
 }
 
 public void setAccountPwd(String accountPwd) {
 this.accountPwd = accountPwd;
 }
 
 public double getAccountBalance() {
 return accountBalance;
 }
 
 public void setAccountBalance(double accountBalance) {
 this.accountBalance = accountBalance;
 }
 
 public String getAccountPersonId() {
 return accountPersonId;
 }
 
 public void setAccountPersonId(String accountPersonId) {
 this.accountPersonId = accountPersonId;
 }
 
 public String getAccountEmail() {
 return accountEmail;
 }
 
 public void setAccountEmail(String accountEmail) {
 this.accountEmail = accountEmail;
 }
 
 public long getAccountTelno() {
 return accountTelno;
 }
 
 public void setAccountTelno(long accountTelno) {
 this.accountTelno = accountTelno;
 }
 
 /**
 * 存款
 * 
 * @param money
 *  存款金額
 * @return 返回賬戶余額
 */
 public double depoist(double money) {// money 形式參數(shù)
 if (money > 0)
 this.accountBalance += money;
 return this.accountBalance;
 }
 
 /**
 * 取款
 * 
 * @param money
 *  取款金額
 * @return 返回賬戶余額
 */
 public abstract double withdraw(double money);
 
 /**
 * 轉(zhuǎn)賬
 * 
 * @param anotherAccount
 *  轉(zhuǎn)賬的對方賬戶
 * @param money
 *  轉(zhuǎn)賬金額
 * @return 返回當(dāng)前賬戶的余額
 */
 public double tranferAccount(Account anotherAccount, double money) {// 形參
 anotherAccount.accountBalance += money;
 this.accountBalance -= money;
 
 return this.accountBalance;
 }
 
}

之后填寫信用賬戶類CreditAccount;我們應(yīng)該明白,他是繼承Account類的,但是,他又需要擁有自身獨立的屬性,我們可以添加一個最高透支額度的屬性
這樣來實現(xiàn)代碼

/**
 * 信用賬戶
 * 
 *
 */
public class CreditAccount extends Account {
 //成員變量
 private double maxOverdraw;//最高透支額度
 
 //構(gòu)造函數(shù)
 public CreditAccount(String accountName,String accountPwd,String accountPersonId,long accountTelno,String accountEmail,double maxOverdraw){
 super( accountName, accountPwd, accountPersonId, accountTelno, accountEmail);
 this.maxOverdraw = maxOverdraw;
 }
 
 
 //set,get
 public void setMaxOverdraw(double maxOverdraw ){
 this.maxOverdraw = maxOverdraw;
 }
 
 public double getMaxOverdraw(){
 return this.maxOverdraw;
 }
 
 
 @Override
 public double withdraw(double money) {
 // TODO Auto-generated method stub
 return 0;
 }
 
 
 
}

同理  填寫儲蓄賬戶(SavingAccount)類文件

package com.atm.entity;
/**
 * 儲蓄賬戶
 * 
 *
 */
public class SavingAccount extends Account {
 
 public SavingAccount(String accountName,String accountPwd,String accountPersonId,long accountTelno,String accountEmail){
 super( accountName, accountPwd, accountPersonId, accountTelno, accountEmail);
 }
 
 @Override
 public double withdraw(double money) {
 // TODO Auto-generated method stub
 if(money <= getAccountBalance()){
 
 }
 
 else
 System.out.println("賬戶余額不足");
 return getAccountBalance();
 
 }
 
 
}

最重要的是填寫B(tài)ank類的內(nèi)容,在這個類中,我們要完成注冊,產(chǎn)生銀行賬戶,統(tǒng)計所有信用賬戶的最高透支額度的總和,統(tǒng)計所有賬戶的總余額, 查詢出所有信用賬戶中透支額度最高的賬戶, 查詢出所有儲蓄賬戶中余額最高的賬戶等功能

我們這樣填寫

package com.atm.entity;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
/**
 * 銀行類
 * 
 * @author qianghj
 * 
 *  銀行開戶 ----> 銀行賬戶 Account account = bank.開戶(...)
 *
 */
public class Bank {
 public Account[] accArray = new Account[2000];
 
 public int count = 0;// 表示銀行賬戶的個數(shù)
 
 /**
 * 銀行賬戶開戶
 * 
 * @param accName
 *  用戶名稱
 * @param accPwd
 *  用戶密碼
 * @param accPersonId
 *  用戶身份證
 * @param accTelno
 *  用戶手機(jī)號碼
 * @param accEmail
 *  用戶郵箱
 * @param accountType
 *  賬戶類型 0: 儲蓄賬戶 1 : 信用賬戶
 * @param maxOverdraw
 *  信用賬戶的最高透支額度
 * @return 返回有效的銀行賬戶
 */
 public Account registAccount(String accName, String accPwd, String accPersonId, long accTelno, String accEmail,
 int accountType, double maxOverdraw) {
 Account account = null;
 if (accountType == 0)
 account = new SavingAccount(accName, accPwd, accPersonId, accTelno, accEmail);
 else
 account = new CreditAccount(accName, accPwd, accPersonId, accTelno, accEmail, maxOverdraw);
 
 account.setAccountId(generateNextAccountId());
 accArray[count++] = account;
 return account;
 }
 /**
 * 產(chǎn)生銀行賬戶帳號
 * 
 * @return 返回下一個賬戶的帳號 1,2,3,,4
 */
 public String generateNextAccountId() {
 
 return "62223421" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
 
 }
 
 // 統(tǒng)計所有信用賬戶的最高透支額度的總和 (1050 ) 2000 , 1050
 public double statisticsCreditAccountMaxoverdrawSum() {
 double sum = 0;
 for (int i = 0; i < count; i++) {
 // 判斷賬戶 是不是 CreditAccount類型
 if (accArray[i] instanceof CreditAccount) {
 CreditAccount creditAcc = (CreditAccount) accArray[i];
 sum += creditAcc.getMaxOverdraw();
 }
 }
 
 return sum;
 }
 
 // 統(tǒng)計所有賬戶的總余額
 public double aggregateAamount() {
 double sum = 0;
 for (int i = 0; i < count; i++) {
 if (accArray[i] instanceof SavingAccount) {
 SavingAccount savingAccount = (SavingAccount) accArray[i];
 sum += savingAccount.getAccountBalance();
 
 }
 }
 return sum;
 
 }
 
 // 查詢出所有信用賬戶中透支額度最高的賬戶
 public double maxLimit() {
 
 double tem = 0;
 for (int i = 0; i < count; i++) {
 if (accArray[i] instanceof CreditAccount) {
 CreditAccount creditAccount = (CreditAccount) accArray[i];
 
 if (creditAccount.getMaxOverdraw() > tem) {
 tem = creditAccount.getMaxOverdraw();
 }
 
 }
 }
 return tem;
 
 }
 
 // 查詢出所有儲蓄賬戶中余額最高的賬戶
 public double maxBalance() {
 
 double tem = 0;
 for (int i = 0; i < count; i++) {
 if (accArray[i] instanceof SavingAccount) {
 SavingAccount savingAccount = (SavingAccount) accArray[i];
 
 if (savingAccount.getAccountBalance() > tem) {
 tem = savingAccount.getAccountBalance();
 }
 
 }
 }
 return tem;
 
 }
 
}

最后測試類

package test;
 
import org.junit.Test;
 
import com.atm.entity.Account;
import com.atm.entity.Bank;
import com.atm.entity.CreditAccount;
 
public class TestAccount {
 
 @Test
 public void testRegist() {
 Bank bank = new Bank();
 
 for (int i = 0; i < 1000; i++) {
 // 0: 儲蓄賬戶 1 : 信用賬戶
 Account acc = bank.registAccount("tom" + i, "abc123", "2729382932", 183923302L, "tom" + i + "@163.com",
 i % 2, (i % 2 == 0) ? 0 : 3000);
 if (i % 2 != 0) {
 CreditAccount creditAcc = (CreditAccount) acc;
 System.out.println("所有信用賬戶的名字:" + creditAcc.getAccountName() + "和透支額度:" + creditAcc.getMaxOverdraw());
 }
 
 }
 
 // 1000個銀行賬戶開戶,500是信用賬戶,最高透支額度隨機(jī)數(shù)賦值,再測試
 // double sum = bank.統(tǒng)計所有信用賬戶的最高透支額度的總和 ();
 double sum = bank.statisticsCreditAccountMaxoverdrawSum();
 System.out.println("所有信用賬戶的最高透支額度的總和 :" + sum);
 double sum1 = bank.aggregateAamount();
 System.out.println("總余額為" + sum1);
 }
 
}

測試類的內(nèi)容不多寫,大家有興趣可以自行測試。這樣,我們就完成了一個比較簡單的ATM項目。希望對新學(xué)者有所幫助。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Jmeter命令行執(zhí)行腳本如何設(shè)置動態(tài)參數(shù)

    Jmeter命令行執(zhí)行腳本如何設(shè)置動態(tài)參數(shù)

    這篇文章主要介紹了Jmeter命令行執(zhí)行腳本如何設(shè)置動態(tài)參數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Java簡單使用EasyExcel操作讀寫excel的步驟與要點

    Java簡單使用EasyExcel操作讀寫excel的步驟與要點

    相信現(xiàn)在很多搞后端的同學(xué)大部分做的都是后臺管理系統(tǒng),那么管理系統(tǒng)就肯定免不了Excel的導(dǎo)出導(dǎo)入功能,下面這篇文章主要給大家介紹了關(guān)于Java簡單使用EasyExcel操作讀寫excel的步驟與要點,需要的朋友可以參考下
    2022-09-09
  • 在IntelliJ IDEA 搭建springmvc項目配置debug的教程詳解

    在IntelliJ IDEA 搭建springmvc項目配置debug的教程詳解

    這篇文章主要介紹了在IntelliJ IDEA 搭建springmvc項目配置debug的教程詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • jpa 使用@Column來定義字段類型

    jpa 使用@Column來定義字段類型

    這篇文章主要介紹了jpa使用@Column來定義字段類型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Nacos客戶端配置中心緩存動態(tài)更新實現(xiàn)源碼

    Nacos客戶端配置中心緩存動態(tài)更新實現(xiàn)源碼

    這篇文章主要為大家介紹了Nacos客戶端配置中心緩存動態(tài)更新實現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-03-03
  • Mybatis報錯mapkey is required問題及解決

    Mybatis報錯mapkey is required問題及解決

    這篇文章主要介紹了Mybatis報錯mapkey is required問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 一文探索Apache HttpClient如何設(shè)定超時時間

    一文探索Apache HttpClient如何設(shè)定超時時間

    Apache HttpClient是一個流行的Java庫,用于發(fā)送HTTP請求,這篇文章主要為大家介紹了Apache HttpClient如何設(shè)定超時時間,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-10-10
  • SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼

    SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼

    這篇文章主要介紹了SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • java 非對稱加密算法DH實現(xiàn)詳解

    java 非對稱加密算法DH實現(xiàn)詳解

    這篇文章主要介紹了java 非對稱加密算法DH實現(xiàn)詳解 ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Java對List進(jìn)行排序的方法總結(jié)

    Java對List進(jìn)行排序的方法總結(jié)

    在Java中,對List進(jìn)行排序是一項常見的任務(wù),Java提供了多種方法來對List中的元素進(jìn)行排序,本文將詳細(xì)介紹如何使用Java來實現(xiàn)List的排序操作,涵蓋了常用的排序方法和技巧,需要的朋友可以參考下
    2024-07-07

最新評論

金沙县| 佛冈县| 泌阳县| 陕西省| 深水埗区| 邯郸市| 大厂| 泸西县| 青川县| 黄石市| 沾化县| 桐柏县| 本溪市| 育儿| 富民县| 文山县| 衡东县| 罗源县| 孙吴县| 紫阳县| 澄迈县| 渑池县| 杭锦后旗| 黄陵县| 莲花县| 白沙| 景洪市| 彰武县| 东莞市| 孟连| 揭西县| 教育| 胶州市| 凤山市| 巴彦县| 建始县| 岗巴县| 东乌珠穆沁旗| 甘肃省| 南平市| 北海市|