码迷,mamicode.com
首页 > 其他好文 > 详细

复利计算--结对2.0

时间:2016-04-15 00:07:36      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:

复利项目之结对2.0

结对同伴的学号:201406114245

姓名:赵创佳

博客地址:http://www.cnblogs.com/7763255qw/ ;github地址: https://github.com/zhaochuangjia

 

程序源代码已上传至https://github.com/ganjiaping

源程序的文件名为:Team2.java

 

一、项目简介

项目名称:复利计算再升级

  版  本  :结对2.0

版本类型:java/jar/apk

使用工具:Eclipse Swing插件/JAVA模拟器

主要功能:复利单利的计算、贷款的计算以及投资的计算

 

二、新的功能需求           

客户在大家的引导下,有了更多的想法:

  1. 这个数据我经常会填.....帮我预先填上呗?......
  2. 把界面做得简单漂亮好操作一点呗?
  3. 能不能帮我转成个APP,我装到手机上就更方便了?
  4. 我觉得这个很有用,很多人可能都需要这些功能,做到我的微信公众号上吧?
  5. 能不能不要让我填表单,让我发条消息,或者对着手机说句话就可以了?

每组选一两个方向加以改进,让我们的投资计算与记录工具,达到可以发布给用户使用的版本。

根据我和我结对队友的能力,我们小组选的是:

          把项目的界面做得更简单、漂亮、好操作;

          将项目文件.java形式转成.jar形式,再转成.apk形式。

 

三、TSP data (即估计实现所需时间和结对编程时间)

TSP data 项目耗时记录表

TSP

软件项目阶段

花费时间

Planning

计划

 11

Estimate

估计这个任务需要多少时间

 11

Development

开发

2

Analysis

需求分析

 1

Design  Spec

生成设计文档

 1

Design  Review

设计复审(和同事审核设计文档)

 1

Coding  Standard

代码规范(为目前的开发制定合适的规范)

 1

Design

具体设计

 1

Coding

具体编码

 1

Code  Review

代码复审

 1 

Test

测试(自我测试,修改代码,提交修改)

 2

 

四、任务分配

这个结对编程过程中,我做了把项目的界面做得更简单、漂亮、好操作;

                            同伴做了将项目文件.java形式转成.jar形式,再转成.apk形式。

 

五、总结这次结对编程的收获到和感悟:

      本次结对项目主要是实现复利项目界面的优化,以及将项目文件.java形式转成.jar形式,再转成.apk形式。我们用Eclipse Swing插件编程实现界面的优化、JAVA模拟器实现形式转换,大致上基本实现了这两个功能。

      老师给出的功能选项对我们小组来说,很有挑战性。根据我和同伴的能力,我们就选了我们能实现的功能来做这次结对的项目。但是只是完成任务对我以及我的同伴来说是不够的,因为我们一起讨论了很多想法,可能由于能力和时间的不足,而导致一些不错的想法都未能来得及实现。但之后,我们会继续改进程序,并将项目做到最好。

      总的来说,这次的结对编程就我个人看来,不是很理想。因为没有把老师给出的五个功能都实现,虽然,已经完成了这次结对项目的要求,但我想去实现其他的我们这次项目没选的功能。我想我和我的同伴后续会对这个项目不断的改进,然后得到自己想要的效果,即把所有功能实现,还有做到最好。

      最后,感谢我的同伴在这次合作中的付出,我衷心的感谢!还有下次我们会做的更好!

 

六、源程序:(界面代码如下)

package gjp;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

import org.dyno.visual.swing.layouts.Constraints;
import org.dyno.visual.swing.layouts.GroupLayout;
import org.dyno.visual.swing.layouts.Leading;

//VS4E -- DO NOT REMOVE THIS LINE!
public class Team2 extends JFrame {

    private static final long serialVersionUID = 1L;
    private JLabel jLabel0;
    private JLabel jLabel1;
    private JLabel jLabel2;
    private JTextField jTextField1;
    private JTextField jTextField2;
    private JTextField jTextField0;
    private JTextField jTextField3;
    private JLabel jLabel3;
    private JLabel jLabel4;
    private JTextField jTextField4;
    private JButton jButton0;
    private JButton jButton1;

    public Team2() {
        initComponents();
    }

    private void initComponents() {
        setLayout(new GroupLayout());
        add(getJLabel0(), new Constraints(new Leading(8, 128, 10, 10), new Leading(25, 10, 10)));
        add(getJLabel1(), new Constraints(new Leading(91, 10, 10), new Leading(55, 12, 12)));
        add(getJLabel2(), new Constraints(new Leading(78, 12, 12), new Leading(85, 12, 12)));
        add(getJTextField1(), new Constraints(new Leading(128, 64, 12, 12), new Leading(55, 18, 12, 12)));
        add(getJTextField2(), new Constraints(new Leading(128, 64, 12, 12), new Leading(85, 18, 12, 12)));
        add(getJTextField0(), new Constraints(new Leading(128, 64, 12, 12), new Leading(25, 18, 12, 12)));
        add(getJTextField3(), new Constraints(new Leading(128, 64, 12, 12), new Leading(113, 18, 12, 12)));
        add(getJLabel3(), new Constraints(new Leading(44, 12, 12), new Leading(113, 12, 12)));
        add(getJLabel4(), new Constraints(new Leading(12, 12, 12), new Leading(141, 12, 12)));
        add(getJLabel9(), new Constraints(new Leading(143, 12, 12), new Leading(182, 12, 12)));
        add(getJLabel10(), new Constraints(new Leading(143, 12, 12), new Leading(228, 12, 12)));
        add(getJLabel8(), new Constraints(new Leading(141, 12, 12), new Leading(134, 12, 12)));
        add(getJLabel7(), new Constraints(new Leading(141, 12, 12), new Leading(89, 12, 12)));
        add(getJLabel6(), new Constraints(new Leading(141, 12, 12), new Leading(44, 12, 12)));
        add(getJTextField4(), new Constraints(new Leading(128, 64, 12, 12), new Leading(139, 18, 12, 12)));
        add(getJComboBox0(), new Constraints(new Leading(255, 115, 10, 10), new Leading(44, 31, 12, 12)));
        add(getJTextField5(), new Constraints(new Leading(62, 245, 10, 10), new Leading(214, 113, 10, 10)));
        add(getJButton1(), new Constraints(new Leading(159, 10, 10), new Leading(174, 12, 12)));
        add(getJButton0(), new Constraints(new Leading(67, 10, 10), new Leading(174, 12, 12)));
        setSize(377, 344);
    }

    private JTextField getJTextField5() {
        if (jTextField5 == null) {
            jTextField5 = new JTextField();
        }
        return jTextField5;
    }

    private JLabel getJLabel6() {
        if(jLabel6==null){
            jLabel6=new JLabel();
            jLabel6.setText(null);
        }
        return jLabel6;
    }

    private JLabel getJLabel7() {
        if(jLabel7==null){
            jLabel7=new JLabel();
            jLabel7.setText(null);
    }
        return jLabel7;
    
    }

    private JLabel getJLabel8() {
        if(jLabel8==null){
            jLabel8=new JLabel();
            jLabel8.setText(null);
    }
        return jLabel8;
    }

    private JLabel getJLabel10() {
        if(jLabel10==null){
            jLabel10=new JLabel();
            jLabel10.setText(null);
    }
        return jLabel10;
    }

    private JLabel getJLabel9() {
        if(jLabel9==null){
            jLabel9=new JLabel();
            jLabel9.setText(null);
    }
        return jLabel9;
    }

    private JButton getJButton1() {
        if (jButton1 == null) {
            jButton1 = new JButton();
            jButton1.setText("清除");
            jButton1.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent event) {
                    jButton1MouseMouseClicked(event);
                }
            });
        }
        return jButton1;
    }

    private JButton getJButton0() {
        if (jButton0 == null) {
            jButton0 = new JButton();
            jButton0.setText("计算");
            jButton0.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent event) {
                    jButton0MouseMouseClicked(event);
                }
            });
        }
        return jButton0;
    }

    private JComboBox getJComboBox0() {
        if (jComboBox0 == null) {
            jComboBox0 = new JComboBox();
            jComboBox0.setModel(new DefaultComboBoxModel(new Object[] { "求本息和(复利)", "求本息和(单利)", "求本金", "求年数", "求年利率", "求年资产总值", "求等额本息还款", "求投资组合", "查看投资记录" }));
            jComboBox0.setDoubleBuffered(false);
            jComboBox0.setBorder(null);
        }
        return jComboBox0;
    }

    private JTextField getJTextField4() {
        if (jTextField4 == null) {
            jTextField4 = new JTextField();
        }
        return jTextField4;
    }

    private JLabel getJLabel4() {
        if (jLabel4 == null) {
            jLabel4 = new JLabel();
            jLabel4.setText("本息和/年资产总值:");
        }
        return jLabel4;
    }

    private JLabel getJLabel3() {
        if (jLabel3 == null) {
            jLabel3 = new JLabel();
            jLabel3.setText("等息还款(月):");
        }
        return jLabel3;
    }

    private JTextField getJTextField3() {
        if (jTextField3 == null) {
            jTextField3 = new JTextField();
        }
        return jTextField3;
    }

    private JTextField getJTextField0() {
        if (jTextField0 == null) {
            jTextField0 = new JTextField();
        }
        return jTextField0;
    }

    private JTextField getJTextField2() {
        if (jTextField2 == null) {
            jTextField2 = new JTextField();
        }
        return jTextField2;
    }

    private JTextField getJTextField1() {
        if (jTextField1 == null) {
            jTextField1 = new JTextField();
        }
        return jTextField1;
    }

    private JLabel getJLabel2() {
        if (jLabel2 == null) {
            jLabel2 = new JLabel();
            jLabel2.setText("年利率:");
        }
        return jLabel2;
    }

    private JLabel getJLabel1() {
        if (jLabel1 == null) {
            jLabel1 = new JLabel();
            jLabel1.setText("年数:");
        }
        return jLabel1;
    }

    private JLabel getJLabel0() {
        if (jLabel0 == null) {
            jLabel0 = new JLabel();
            jLabel0.setText("本金/贷款/投资金额:");
        }
        return jLabel0;
    }



private static void installLnF(){
    try{
    String lnfClassname = PREFERRED_LOOK_AND_FEEL;
    if(lnfClassname==null)
        lnfClassname = UIManager.getCrossPlatformLookAndFeelClassName();
    UIManager.setLookAndFeel(lnfClassname);
}
    catch(Exception e){
        System.err.println("Cannot install"+PREFERRED_LOOK_AND_FEEL+"on this platform:"+e.getMessage());
    }
        
  }


boolean y=false;
private JComboBox jComboBox0;
private JLabel jLabel6;
private JLabel jLabel7;
private JLabel jLabel8;
private JLabel jLabel9;
private JLabel jLabel10;
private JTextField jTextField5;
private static final String PREFERRED_LOOK_AND_FEEL = "javax.swing.plaf.metal.MetalLookAndFeel";
public static void main(String[] args){
    installLnF();
    SwingUtilities.invokeLater(new Runnable(){
        public void run(){
            Team2 frame=new Team2();
            frame.setDefaultCloseOperation(Team.EXIT_ON_CLOSE);
            frame.setTitle("text1");
            frame.getContentPane().setPreferredSize(frame.getSize());
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
    });
}

public static class Logarithm{
    public static double log(double value,double base){
        return Math.log(value)/Math.log(base);
    }
}

public void jButton0MouseMouseClicked(MouseEvent event) {
        String key1;
        boolean canplay = false;
        String b, c, d;
        double i=0,n=0,p=0,f=0;
        key1 = (String) jComboBox0.getSelectedItem();

if (key1 == "求本息和(复利)") {
            b = String.valueOf(jTextField2.getText());
            c = String.valueOf(jTextField1.getText());
            d = String.valueOf(jTextField0.getText());
            if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
            i = Double.parseDouble(jTextField2.getText());
            n = Double.parseDouble(jTextField1.getText());
            p = Double.parseDouble(jTextField0.getText());
            canplay = deposit1(i, n, p);
            }    
} else if (key1 == "求本息和(单利)") {
            b = String.valueOf(jTextField2.getText());
            c = String.valueOf(jTextField1.getText());
            d = String.valueOf(jTextField0.getText());
            if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
            i = Double.parseDouble(jTextField2.getText());
            n = Double.parseDouble(jTextField1.getText());
            p = Double.parseDouble(jTextField0.getText());
            canplay = deposit2(i, n, p);
            }    
} else if (key1 == "求本金") {
            b = String.valueOf(jTextField2.getText());
            c = String.valueOf(jTextField1.getText());
            d = String.valueOf(jTextField4.getText());
            if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
            i = Double.parseDouble(jTextField2.getText());
            n = Double.parseDouble(jTextField1.getText());
            f = Double.parseDouble(jTextField4.getText());
            canplay = principal(i,n,f);
            }
} else if (key1 == "求年数") {
            b = String.valueOf(jTextField0.getText());
            c = String.valueOf(jTextField2.getText());
            d = String.valueOf(jTextField4.getText());
            if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
            p = Double.parseDouble(jTextField0.getText());
            i = Double.parseDouble(jTextField2.getText());
            f = Double.parseDouble(jTextField4.getText());
            canplay = year(p, i, f);
            }
} else if (key1 == "求年利率") {
            b = String.valueOf(jTextField0.getText());
            c = String.valueOf(jTextField1.getText());
            d = String.valueOf(jTextField4.getText());
            if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
            p = Double.parseDouble(jTextField0.getText());
            n = Double.parseDouble(jTextField1.getText());
            f = Double.parseDouble(jTextField4.getText());
            canplay = interest(p, n, f);
            }
} else if (key1 == "求年资产总值") {
            b = String.valueOf(jTextField0.getText());
            c = String.valueOf(jTextField1.getText());
            d = String.valueOf(jTextField2.getText());
            if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
            p = Double.parseDouble(jTextField0.getText());
            n = Double.parseDouble(jTextField1.getText());
            i = Double.parseDouble(jTextField2.getText());
            canplay = asset(p, n, i);
            }
} else if (key1 == "求等额本息还款") {
            b = String.valueOf(jTextField0.getText());
            c = String.valueOf(jTextField2.getText());
            d = String.valueOf(jTextField1.getText());
            if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
            p = Double.parseDouble(jTextField0.getText());
            i = Double.parseDouble(jTextField2.getText());
            n = Double.parseDouble(jTextField1.getText());
            canplay = loan(p,i,n);
            }
} else if (key1 == "求投资组合") {
            b = String.valueOf(jTextField2.getText());
            c = String.valueOf(jTextField1.getText());
            d = String.valueOf(jTextField0.getText());
            if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
            i = Double.parseDouble(jTextField2.getText());
            n = Double.parseDouble(jTextField1.getText());
            p = Double.parseDouble(jTextField0.getText());
            canplay = deposit3(i, n, p);
            }    
if (canplay == false) {
            JOptionPane.showMessageDialog(null, "请输入正确数字!");
        }
    }
}

public void jButton1MouseMouseClicked(MouseEvent event) {
        this.jTextField0.setText(null);
        this.jTextField1.setText(null);
        this.jTextField2.setText(null);
        this.jTextField3.setText(null);
        this.jTextField4.setText(null);
        this.jTextField5.setText(null);
    }
        
public boolean deposit1(double i, double n, double p) {
        double f = 0;
        if(i>0&&n>0&&p>0){
            f = (float) (p * Math.pow(1 + i, n));
this.jTextField4.setText(String.format("%.2f", f));
return true;
        }
else return false;
    }
public boolean deposit2(double i, double n, double p) {
        double f = 0;
        if(i>0&&n>0&&p>0){
            f = p*(1+i*n);
this.jTextField4.setText(String.format("%.2f", f));
return true;
        }
else return false;
    }
public boolean principal(double i, double n, double f) {
        double p = 0;
        if(i>0&&n>0&&f>0){
p = (float) (f * 1 / Math.pow(1 + i, n));
this.jTextField0.setText(String.format("%.2f", p));
return true;
        }
else return false;
    }

public boolean year(double p, double i, double f) {
        double n = 0;
            if(i>0&&f>0&&p>0){
n = Logarithm.log(f / p, 1 + i);
        n = Math.ceil(n);
this.jTextField1.setText(String.format("%.2f", n));
return true;
        }
else return false;
    }

public boolean interest(double p, double n, double f) {
        double i = 0;
        if(f>0&&n>0&&p>0){
i = Math.pow(f / p, 1.0 / n) - 1;
this.jTextField2.setText(String.format("%.2f",i));
return true;
        }
else return false;
    }

public boolean asset(double p, double i, double n) {
double f = 0;
if(i>0&&n>0&&p>0){
f = p * (1 + i) * (Math.pow(1 + i, n) - 1) / i;
this.jTextField4.setText(String.format("%.2f",f));
return true;
        }
else return false;
    }

public boolean loan(double f, double i, double n) {
        double j = 0;
        if(i>0&&n>0&&f>0){
                i = i / 12;
        n = n * 12;
        j = f * i * Math.pow(1 + i, n) / (Math.pow(1 + i, n) - 1); 
this.jTextField3.setText(String.format("%.2f",j));
return true;
        }
else return false;
    }
public boolean deposit3(double i, double n, double p) {
        double  f = 0;
        if(i>0&&n>0&&p>0){
            f = (float) (p * Math.pow(1 + i, n));
this.jTextField4.setText(String.format("%.2f", f));
this.jTextField5.setText(String.format("%.2f", f));
return true;
        }
else return false;
    }
}

 

运行结果:

技术分享

技术分享

 

七、 将项目文件.java形式转成.jar形式,再转成.apk形式:(结果图片如下)

技术分享

 

技术分享

技术分享

 

八、附上结对工作时的照片:

技术分享

复利计算--结对2.0

标签:

原文地址:http://www.cnblogs.com/gjpg/p/5393501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!