银行管理系统之Java语言实现2

系统需求:

相对于BankSysterm1来说BankSysterm2主要新增加了:获取系统中所用账户的总金额

系统设计:

在设计方面还是通过设计一个SavingsAccount类来实现系统中所提出的需求,不过相于BankSysterm1来说在类的设计方面新增了一个静态的数据成员total和一个静态的静态函数public static double getTotal() { return total; }来实现系统提出需要知道所有账户总金额的新需求。

系统实现:

系统设计相对于BankSysterm1系统来说主要是增加了一个静态数double total 和一个静态函数public static double getTotal() { return total; }来实现。系统提出的额外需求。

代码实现:

package Account;

public class SavingsAccount {
		private int id;				//账号
		private double balance;		//余额
		private double rate;		//存款的年利率
		private int lastDate;		//上次变更余额的时期
		private double accumulation;	//余额按日累加之和
		private static double total;	//所有账户的总金额

		//记录一笔帐,date为日期,amount为金额,desc为说明
		public void record(int date, double amount){
			accumulation = accumulate(date);
			lastDate = date;
			amount = (amount * 100 + 0.5) / 100;	//保留小数点后两位
			balance += amount;
			total += amount;
			System.out.println(date + "\t#"+ id +"\t" +amount +"\t"+balance);
		}
		//获得到指定日期为止的存款金额按日累积值
	private double accumulate(int date)  {
			return accumulation + balance * (date - lastDate);
		}
		 public SavingsAccount(int date, int id, double rate){
			 this.id=id;
			 this.balance=0;
			 this.rate=rate;
			 lastDate=date;
			 accumulation=0;
		     System.out.println(date + "\t#" + id +" is created");
		 }
		public int getId()  { return id; }
		public double getBalance() { return balance; }
		public double getRate() { return rate; }
		public static double getTotal() { return total; }

		//存入现金
		public void deposit(int date, double amount){
			record(date, amount);
		}
		//取出现金
		public void withdraw(int date, double amount){
			if (amount > getBalance())
				System.out.println( "Error: not enough money");
			else
				record(date, -amount);
		}
		//结算利息,每年1月1日调用一次该函数
		public void settle(int date){
			double interest = accumulate(date) * rate / 365;	//计算年息
			if (interest != 0)
				record(date, interest);
			accumulation = 0;
		}
		//显示账户信息
		public void show() {
			System.out.print( "#" + id + "\tBalance: " + balance);	
		}
}
import Account.* ;

public class BankSystem {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SavingsAccount sa0=new SavingsAccount(1, 21325302, 0.015);
		SavingsAccount sa1=new  SavingsAccount(1, 58320212, 0.015);

		//几笔账目
		sa0.deposit(5, 5000);
		sa1.deposit(25, 10000);
		sa0.deposit(45, 5500);
		sa1.withdraw(60, 4000);

		//开户后第90天到了银行的计息日,结算所有账户的年息
		sa0.settle(90);
		sa1.settle(90);

		//输出各个账户信息
		sa0.show();
		sa1.show();	
	}

}

猜你喜欢

转载自blog.csdn.net/qq_41989372/article/details/85106684