家庭收支记账软件之多态继承

同样的问题,不过要求用多态继承编写。
如果写的有问题,欢迎指正!
在这里插入图片描述

package com.gem.day19Homework;
import java.util.Scanner;
public class Client {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);//键盘扫描仪
		JiluList jiluList = JiluList.getJiluList();//单例
		System.out.println("*******欢迎进入家庭收支记账软件*********");
		while (true) {
			menu(scanner, jiluList);
		}
	}

	//界面功能
	public static void menu(Scanner scanner, JiluList jiluList) {
		System.out.println("1.收支明细");
		System.out.println("2.登记收入");
		System.out.println("3.登记支出");
		System.out.println("4.退出");
		System.out.println("请输入您的选择:");
		int choice = Integer.parseInt(scanner.nextLine().trim());
		switch (choice) {
		case 1:
			jiluList.showJiluList();
			break;
		case 2:
			InMoney(scanner, jiluList);
			break;
		case 3:
			OutMoney(scanner, jiluList);
			break;

		case 4:
			System.exit(0);
			break;

		default:
			System.out.println("您输入的不正确");
			break;
		}
	}

	private static void InMoney(Scanner scanner, JiluList jiluList) {
		// TODO Auto-generated method stub
		System.out.println("本次收入金额:");
		double money = Double.parseDouble(scanner.nextLine().trim());
		System.out.println("本次收入说明:");
		String shuoming = scanner.nextLine().trim();
		Savemoney savemoney = new Savemoney("收入", shuoming, money);
		jiluList.createJilu(savemoney);
		jiluList.Savemoney(savemoney, money);

	}

	private static void OutMoney(Scanner scanner, JiluList jiluList) {
		// TODO Auto-generated method stub
		System.out.println("本次支出金额:");
		double money = Double.parseDouble(scanner.nextLine().trim());
		System.out.println("本次支出说明:");
		String shuoming = scanner.nextLine().trim();
		PayMoney paymoney = new PayMoney("支出", shuoming, money);
		jiluList.createJilu(paymoney);
		jiluList.PayMoney(paymoney, money);
	}

}

package com.gem.day19Homework;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@NoArgsConstructor
@Setter
@Getter
public abstract class JiLu {
	private String ShouZhi;
	private double balance = 10000;
	private double Money;
	private String shuoMing;

	//实例化对象只需要收支和说明

	public JiLu(String shouZhi, String shuoMing, double money) {
		super();
		this.ShouZhi = shouZhi;
		this.shuoMing = shuoMing;
		this.Money = money;
	}

	//收入  (只需要定义我的孩子必须有存款方法,抽象了,孩子必须要重写我的抽象方法,约束)
	public abstract void Inmoney(double Ymoney, double money);

	//支出
	public abstract void Outmoney(double Ymoney, double money);

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return ShouZhi + "\t" + balance + "\t" + Money + "\t" + shuoMing;

	}

}

package com.gem.day19Homework;

public class JiluList {
	private JiLu[] JiluList = new JiLu[1000];//存放记录,多态
	private int count;//记录的条数
	private static double Ymoney = 10000;
	private static final JiluList jiluList = new JiluList();

	//静态属性的构造方法
	public static JiluList getJiluList() {
		return jiluList;
	}

	//构造方法
	private JiluList() {

	}

	public void Savemoney(JiLu jiLu, double money) {
		jiLu.Inmoney(Ymoney, money);//收入,真实对象的收入方法
		Ymoney += money;
	}

	public void PayMoney(JiLu jiLu, double money) {
		jiLu.Outmoney(Ymoney, money);//支出,真实对象的支出方法
		Ymoney -= money;
	}

	public void createJilu(JiLu jiLu) {//形参,可能是收入,可能是支出
		JiluList[count++] = jiLu;
	}

	//显示所有的记录信息
	public void showJiluList() {
		for (int i = 0; i < count; i++) {
			System.out.println(JiluList[i]);//多态,全部调用孩子的toString()

		}
	}

}

package com.gem.day19Homework;

public class PayMoney extends JiLu {
	public PayMoney(String shouZhi, String shuoMing, double money) {
		super(shouZhi, shuoMing, money);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void Inmoney(double Ymoney, double money) {
		// TODO Auto-generated method stub

	}

	@Override
	public void Outmoney(double Ymoney, double money) {
		// TODO Auto-generated method stub
		if (money > getBalance()) {
			System.out.println("余额不足,支出失败");
			return;
		}
		if (money < 0) {
			System.out.println("输入错误");
			return;
		}
		setBalance(Ymoney - money);
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return getShouZhi() + "\t" + getBalance() + "\t" + getMoney() + "\t" + getShuoMing();
	}
}

package com.gem.day19Homework;

public class Savemoney extends JiLu {

	public Savemoney(String shouZhi, String shuoMing, double money) {
		super(shouZhi, shuoMing, money);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void Inmoney(double Ymoney, double money) {
		setBalance(Ymoney + money);

		// TODO Auto-generated method stub

	}

	@Override
	public void Outmoney(double Ymoney, double money) {
		// TODO Auto-generated method stub

	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return getShouZhi() + "\t" + getBalance() + "\t" + getMoney() + "\t" + getShuoMing();
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值