JavaSwing实现贷款计算器

JavaSwing实现贷款运算器(入门)

最近开始学习JavaSwing,第一个代码是贷款运算器

贷款运算器要求实现等额本金还款方式和等额本息还款方式
等额本金方式:
月均还款=[贷款本金 * 月利率 * (1+月利率 ^ 还款月数]/[(1+月利率)^ 还款月数-1]
月均利息=贷款本金 * 月利率 * [(1+月利率) ^ 还款月数-(1+月利率) ^ (还款月序 号-1)]/[(1+月利率)^还款月数-1]
总利息=还款月数* 每月月供额 -贷款本金

等额本金方式:
月均还款=(贷款本金/还款月数)+(贷款本金-已归还本金累计额)*月利率
月均利息=剩余本金 * 月利率=(贷款本金-已归还本金累计额)*月利率
总利息=[(总贷款额/还款月数+总贷款额 *月利率)+总贷款额/还款月数 *(1+月利率)]/2 *还款月数-总贷款额

具体代码如下

package 计算器;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class DaiKuan extends JFrame implements ActionListener
{	
	private static final long serialVersionUID = 1L;
	//设置文本框
	private static class jtextfield extends JTextField
	{
		private static final long serialVersionUID = 1L;
	public jtextfield(String text, int x,int y)
		{
			super(text);
			setBounds(x,y,200,40);
		}
	}
	//设置标签
	private static class jlabel extends JLabel
	{
		private static final long serialVersionUID = 1L;
	public jlabel(String text, int x,int y)
		{
			super(text);
			setBounds(x,y,400,40);
		}
	}
	//构造函数
	String a="",b="",c="",d="",g="",f="";
	JTextField text1=new jtextfield("",150,5);
	JTextField text2=new jtextfield("",150,50);
	JTextField text3=new jtextfield("",150,100);
	JTextField text4=new jtextfield("",150,150);
	JTextField text5=new jtextfield("",150,200);
	JTextField text6=new jtextfield("",150,250);
	public DaiKuan(String title)
	{
		super(title);
		this.add(text1);
		this.add(text2);
		this.add(text3);
		this.add(text4);
		this.add(text5);
		this.add(text6);
		JButton button1=new JButton("等额本息");
		JButton button2=new JButton("等额本金");
	    button1.setBounds(5, 300, 100, 40);
	    button2.setBounds(150, 300, 100, 40);
		this.add(button1);
		this.add(button2);
		button1.addActionListener(this);
		button2.addActionListener(this);
		JLabel label1=new jlabel("贷款年限(年)",5,5);
		JLabel label2=new jlabel("贷款金额(万元)",5,50);
		JLabel label3=new jlabel("贷款年利率(%)",5,100);
		JLabel label4=new jlabel("月均还款(元)",5,150);
		JLabel label5=new jlabel("利息总额(元)",5,200);
		JLabel label6=new jlabel("还款总额(元)",5,250);
		this.add(label1);
		this.add(label2);
		this.add(label3);
		this.add(label4);
		this.add(label5);
		this.add(label6);
		this.setLayout(null);
		this.setResizable(false);
        this.setBounds(600,200, 360, 420);
      //this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setVisible(true);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		 String label = e.getActionCommand(); 
		 if(label =="等额本息")
		 {
		 	//获取文本框内容
			 a=text1.getText(); 
			 b=text2.getText();
			 c=text3.getText();
			 //获取计算结果并显示在文本框内
			 String s1=String.valueOf(lixiyuehuan(a,b,c));
			 text4.setText(s1);
			 String s2=String.valueOf(lizongxi(a,b,c));
			 text5.setText(s2);
			 String s3=String.valueOf(lixiyuehuan(a,b,c)*zhuanhuan(a)*12);
			 text6.setText(s3);
		 }
		 if(label =="等额本金")
		 {
			 a=text1.getText();
			 b=text2.getText();
			 c=text3.getText();
			 String s1=String.valueOf(benjinyuehuan(a,b,c));
			 text4.setText(s1);
			 String s2=String.valueOf(benjinzongxi(a,b,c));
			 text5.setText(s2);
			 String s3=String.valueOf(benjinyuehuan(a,b,c)*zhuanhuan(a)*12);
			 text6.setText(s3);
		 }
	}
	//等额本金总息
	private double benjinzongxi(String str, String str1, String str2) {
		double a=zhuanhuan(str)*12;//贷款月份
		double b=10000*zhuanhuan(str1);//贷款金额
		double c=zhuanhuan(str2)*0.01;//贷款年利率
		double yuelilv=c/12;//贷款月利率
		double e1=(b/a+b*yuelilv)+b/a*(1+yuelilv);
		double e2=e1/2*a-b;
		return e2;
	}
	//等额本金月还
	private double benjinyuehuan(String str, String str1, String str2) {
		double a=zhuanhuan(str)*12;
		double b=10000*zhuanhuan(str1);
		double tzongxi=benjinzongxi(str,str1,str2);        //这儿用了一个投机取巧的方法来计算月均还款,因为觉得要计算已归还本金累计额会比较复杂,等以后想明白了再改回来
		double tyuexi=tzongxi/a;
		double tyuehuan=b/a+tyuexi;
		return tyuehuan;
	}
	//等额本息总息
	private double lizongxi(String str, String str1, String str2) {
		double a=zhuanhuan(str)*12*lixiyuehuan(str,str1,str2)-zhuanhuan(str1)*10000;
		return a;
	}
	//等额本息月还
	private double lixiyuehuan(String str, String str1, String str2) {
		double a=zhuanhuan(str)*12;
		double b=10000*zhuanhuan(str1);
		double c=zhuanhuan(str2)*0.01;
		double yuelilv=c/12;
		double d=Math.pow(1+yuelilv,a);
		double e=(b*yuelilv*d)/(d-1);
		return e;
	}
	//将String类型转换为double类型
	private double zhuanhuan(String str) {
		double a=Double.parseDouble(str);
		return a;
	}
}

这是主函数

package 计算器;
import 计算器.DaiKuan;
public class Main 
{
	public static void main(String[] args)
	{
		new DaiKuan("贷款计算器");
	}
}

虽然现在可以实现功能,但是代码写得实在是不好看
希望随着学习的深入,我能来完善自己的代码,把代码写得更好看更实用

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值