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("贷款计算器");
}
}
虽然现在可以实现功能,但是代码写得实在是不好看
希望随着学习的深入,我能来完善自己的代码,把代码写得更好看更实用