zoukankan      html  css  js  c++  java
  • 0414复利计算6.0--结对

    结对同伴:

    姓名:柯晓君

    学号:201406114210

    博客园地址:http://www.cnblogs.com/950525kxj/

    一、项目简介

      开发工具:eclipse

      开发语言:java

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

    二、新增功能

    做出一部分功能的界面

    三、估计

    估计用时:5小时

    实际用时:6小时

    估计代码行数:500行左右

    实际代码行数:470行

    四、任务分配

    由于我们两人对做界面都不熟悉,所以是一起做的,没具体分工。

    五、新增代码

      1 import java.awt.event.KeyAdapter;
      2 import java.awt.event.KeyEvent;
      3 import java.awt.event.MouseAdapter;
      4 import java.awt.event.MouseEvent;
      5 
      6 import javax.swing.DefaultComboBoxModel;
      7 import javax.swing.JButton;
      8 import javax.swing.JComboBox;
      9 import javax.swing.JFrame;
     10 import javax.swing.JLabel;
     11 import javax.swing.JOptionPane;
     12 import javax.swing.JRadioButton;
     13 import javax.swing.JTextField;
     14 import javax.swing.SwingUtilities;
     15 import javax.swing.UIManager;
     16 
     17 import org.dyno.visual.swing.layouts.Constraints;
     18 import org.dyno.visual.swing.layouts.GroupLayout;
     19 import org.dyno.visual.swing.layouts.Leading;
     20 
     21 //VS4E -- DO NOT REMOVE THIS LINE!
     22 public class Fulijisuan extends JFrame {
     23 
     24     private static final long serialVersionUID = 1L;
     25     private JTextField jTextField0;
     26     private JTextField jTextField1;
     27     private JTextField jTextField2;
     28     private JTextField jTextField3;
     29     private JLabel jLabel0;
     30     private JLabel jLabel1;
     31     private JLabel jLabel2;
     32     private JLabel jLabel3;
     33 
     34     private JButton jButton0;
     35     private JButton jButton1;
     36 
     37     public Fulijisuan() {
     38         initComponents();
     39     }
     40 
     41     private void initComponents() {
     42         setLayout(new GroupLayout());
     43         add(getJTextField0(), new Constraints(new Leading(121, 132, 10, 10), new Leading(26, 38, 10, 10)));
     44         add(getJTextField1(), new Constraints(new Leading(121, 132, 10, 10), new Leading(85, 41, 10, 10)));
     45         add(getJTextField2(), new Constraints(new Leading(121, 132, 10, 10), new Leading(148, 39, 10, 10)));
     46         add(getJLabel0(), new Constraints(new Leading(59, 44, 12, 12), new Leading(30, 31, 12, 12)));
     47         add(getJLabel1(), new Constraints(new Leading(55, 43, 10, 10), new Leading(85, 40, 12, 12)));
     48         add(getJLabel2(), new Constraints(new Leading(62, 12, 12), new Leading(146, 39, 10, 10)));
     49         add(getJLabel3(), new Constraints(new Leading(59, 10, 10), new Leading(216, 37, 12, 12)));
     50         add(getJComboBox1(), new Constraints(new Leading(323, 120, 10, 10), new Leading(128, 31, 10, 10)));
     51         add(getJTextField3(), new Constraints(new Leading(121, 132, 10, 10), new Leading(216, 41, 10, 10)));
     52         add(getJRadioButton0(), new Constraints(new Leading(326, 10, 10), new Leading(197, 12, 12)));
     53         add(getJButton0(), new Constraints(new Leading(124, 10, 10), new Leading(290, 10, 10)));
     54         add(getJButton2(), new Constraints(new Leading(233, 10, 10), new Leading(292, 10, 10)));
     55         add(getJComboBox0(), new Constraints(new Leading(323, 120, 10, 10), new Leading(67, 32, 10, 10)));
     56         setSize(460, 374);
     57     }
     58 
     59     private JButton getJButton2() {
     60         if (jButton2 == null) {
     61             jButton2 = new JButton();
     62             jButton2.setText("清除");
     63             jButton2.addMouseListener(new MouseAdapter() {
     64 
     65                 public void mouseClicked(MouseEvent event) {
     66                     jButton1MouseMouseClicked(event);
     67                 }
     68             });
     69         }
     70         return jButton2;
     71     }
     72 
     73     private JButton getJButton0() {
     74         if (jButton0 == null) {
     75             jButton0 = new JButton();
     76             jButton0.setText("计算");
     77             jButton0.addMouseListener(new MouseAdapter() {
     78 
     79                 public void mouseClicked(MouseEvent event) {
     80                     jButton0MouseMouseClicked(event);
     81                 }
     82             });
     83         }
     84         return jButton0;
     85     }
     86 
     87     private JRadioButton getJRadioButton0() {
     88         if (jRadioButton0 == null) {
     89             jRadioButton0 = new JRadioButton();
     90             jRadioButton0.setSelected(false);
     91             jRadioButton0.setText("定投");
     92             jRadioButton0.addMouseListener(new MouseAdapter() {
     93 
     94                 public void mouseClicked(MouseEvent event) {
     95                     jRadioButton0MouseMouseClicked(event);
     96                 }
     97             });
     98         }
     99         return jRadioButton0;
    100     }
    101 
    102     private JComboBox getJComboBox1() {
    103         if (jComboBox1 == null) {
    104             jComboBox1 = new JComboBox();
    105             jComboBox1.setModel(new DefaultComboBoxModel(new Object[] { "复利计算",
    106                     "单利计算" }));
    107             jComboBox1.setDoubleBuffered(false);
    108             jComboBox1.setBorder(null);
    109         }
    110         return jComboBox1;
    111     }
    112 
    113     private JComboBox getJComboBox0() {
    114         if (jComboBox0 == null) {
    115             jComboBox0 = new JComboBox();
    116             jComboBox0.setModel(new DefaultComboBoxModel(new Object[] { "求本息和",
    117                     "求本金", "求利率", "求年数 ", "求等额本息还款" }));
    118             jComboBox0.setDoubleBuffered(false);
    119             jComboBox0.setBorder(null);
    120             jComboBox0.addMouseListener(new MouseAdapter() {
    121             });
    122         }
    123         return jComboBox0;
    124     }
    125 
    126     private JLabel getJLabel3() {
    127         if (jLabel3 == null) {
    128             jLabel3 = new JLabel();
    129             jLabel3.setText("本息");
    130         }
    131         return jLabel3;
    132     }
    133 
    134     private JLabel getJLabel2() {
    135         if (jLabel2 == null) {
    136             jLabel2 = new JLabel();
    137             jLabel2.setText("年限");
    138         }
    139         return jLabel2;
    140     }
    141 
    142     private JLabel getJLabel1() {
    143         if (jLabel1 == null) {
    144             jLabel1 = new JLabel();
    145             jLabel1.setText("年利率");
    146         }
    147         return jLabel1;
    148     }
    149 
    150     private JLabel getJLabel0() {
    151         if (jLabel0 == null) {
    152             jLabel0 = new JLabel();
    153             jLabel0.setText("本金");
    154         }
    155         return jLabel0;
    156     }
    157 
    158     private JTextField getJTextField3() {
    159         if (jTextField3 == null) {
    160             jTextField3 = new JTextField();
    161         }
    162         jTextField3.addKeyListener(new KeyAdapter() {
    163             public void keyTyped(KeyEvent e) {
    164 
    165                 int keyChar = e.getKeyChar();
    166                 if (keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9
    167                         || keyChar == '.') {
    168 
    169                 } else {
    170                     e.consume();
    171 
    172                 }
    173             }
    174         });
    175         return jTextField3;
    176     }
    177 
    178     private JTextField getJTextField2() {
    179         if (jTextField2 == null) {
    180             jTextField2 = new JTextField();
    181         }
    182         jTextField2.addKeyListener(new KeyAdapter() {
    183             public void keyTyped(KeyEvent e) {
    184 
    185                 int keyChar = e.getKeyChar();
    186                 if (keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9
    187                         || keyChar == '.') {
    188 
    189                 } else {
    190                     e.consume();
    191 
    192                 }
    193             }
    194         });
    195         return jTextField2;
    196     }
    197 
    198     private JTextField getJTextField1() {
    199         if (jTextField1 == null) {
    200             jTextField1 = new JTextField();
    201         }
    202         jTextField1.addKeyListener(new KeyAdapter() {
    203             public void keyTyped(KeyEvent e) {
    204 
    205                 int keyChar = e.getKeyChar();
    206                 if (keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9
    207                         || keyChar == '.') {
    208 
    209                 } else {
    210                     e.consume();
    211 
    212                 }
    213             }
    214         });
    215         return jTextField1;
    216     }
    217 
    218     private JTextField getJTextField0() {
    219         if (jTextField0 == null) {
    220             jTextField0 = new JTextField();
    221             jTextField0.addKeyListener(new KeyAdapter() {
    222                 public void keyTyped(KeyEvent e) {
    223 
    224                     int keyChar = e.getKeyChar();
    225                     if (keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9
    226                             || keyChar == '.') {
    227 
    228                     } else {
    229                         e.consume();
    230 
    231                     }
    232                 }
    233             });
    234         }
    235         return jTextField0;
    236     }
    237 
    238     private static void jiemian() {
    239         try {
    240             String lnfClassname = PREFERRED_LOOK_AND_FEEL;
    241             if (lnfClassname == null)
    242                 lnfClassname = UIManager.getCrossPlatformLookAndFeelClassName();
    243             UIManager.setLookAndFeel(lnfClassname);
    244         } catch (Exception e) {
    245             System.err.println("Cannot install " + PREFERRED_LOOK_AND_FEEL
    246                     + " on this platform:" + e.getMessage());
    247         }
    248     }
    249 
    250     boolean y = false;
    251     String key2;
    252     private JComboBox jComboBox0;
    253 
    254     private JRadioButton jRadioButton0;
    255 
    256     private JComboBox jComboBox1;
    257 
    258     private JButton jButton2;
    259     private static final String PREFERRED_LOOK_AND_FEEL = "javax.swing.plaf.metal.MetalLookAndFeel";
    260     public static void main(String[] args) {
    261         jiemian();
    262         SwingUtilities.invokeLater(new Runnable() {
    263             public void run() {
    264                 Fulijisuan frame = new Fulijisuan();
    265                 frame.setDefaultCloseOperation(Fulijisuan.EXIT_ON_CLOSE);
    266                 frame.setTitle("Fulijisuan");
    267                 frame.getContentPane().setPreferredSize(frame.getSize());
    268                 frame.pack();
    269                 frame.setLocationRelativeTo(null);
    270                 frame.setVisible(true);
    271             }
    272         });
    273     }
    274 
    275     public void jButton0MouseMouseClicked(MouseEvent event) {
    276         String key1;
    277         boolean canplay = false;
    278         String b, c, d;
    279         double i = 0, n = 0, p = 0, f = 0;
    280         key1 = (String) jComboBox0.getSelectedItem();
    281         key2 = (String) jComboBox1.getSelectedItem();
    282         if (key1 == "求本息和") {
    283             b = String.valueOf(jTextField1.getText());
    284             c = String.valueOf(jTextField2.getText());
    285             d = String.valueOf(jTextField0.getText());
    286             if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
    287                 i = Double.parseDouble(jTextField1.getText());
    288                 n = Double.parseDouble(jTextField2.getText());
    289                 p = Double.parseDouble(jTextField0.getText());
    290                 canplay = deposit(i, n, p);
    291             }
    292 
    293         } else if (key1 == "求本金") {
    294             b = String.valueOf(jTextField1.getText());
    295             c = String.valueOf(jTextField2.getText());
    296             d = String.valueOf(jTextField3.getText());
    297             if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
    298                 i = Double.parseDouble(jTextField1.getText());
    299                 n = Double.parseDouble(jTextField2.getText());
    300                 f = Double.parseDouble(jTextField3.getText());
    301                 canplay = principal(i, n, f);
    302             }
    303         } else if (key1 == "求利率") {
    304             b = String.valueOf(jTextField0.getText());
    305             c = String.valueOf(jTextField2.getText());
    306             d = String.valueOf(jTextField3.getText());
    307             if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
    308                 p = Double.parseDouble(jTextField0.getText());
    309                 n = Double.parseDouble(jTextField2.getText());
    310                 f = Double.parseDouble(jTextField3.getText());
    311                 canplay = interest(p, n, f);
    312             }
    313         } else if (key1 == "求年数 ") {
    314             b = String.valueOf(jTextField0.getText());
    315             c = String.valueOf(jTextField1.getText());
    316             d = String.valueOf(jTextField3.getText());
    317             if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
    318                 p = Double.parseDouble(jTextField0.getText());
    319                 i = Double.parseDouble(jTextField1.getText());
    320                 f = Double.parseDouble(jTextField3.getText());
    321                 canplay = year(p, i, f);
    322             }
    323         } else if (key1 == "求等额本息还款") {
    324             b = String.valueOf(jTextField0.getText());
    325             c = String.valueOf(jTextField1.getText());
    326             d = String.valueOf(jTextField2.getText());
    327             if (b.length() > 0 && c.length() > 0 && d.length() > 0) {
    328                 p = Double.parseDouble(jTextField0.getText());
    329                 i = Double.parseDouble(jTextField1.getText());
    330                 n = Double.parseDouble(jTextField2.getText());
    331                 canplay = loan(p, i, n);
    332             }
    333         }
    334         if (canplay == false) {
    335             JOptionPane.showMessageDialog(null, "请输入正确的数字!");
    336         }
    337     }
    338 
    339     public void jButton1MouseMouseClicked(MouseEvent event) {
    340         this.jTextField0.setText(null);
    341         this.jTextField1.setText(null);
    342         this.jTextField2.setText(null);
    343         this.jTextField3.setText(null);
    344     }
    345 
    346     public void jRadioButton0MouseMouseClicked(MouseEvent event) {
    347         if (y == false)
    348             y = true;
    349         else
    350             y = false;
    351     }
    352 
    353     public boolean deposit(double i, double n, double p) {
    354         double f = 0;
    355         if (i > 0 && n > 0 && p > 0) {
    356             if (n > 200)
    357                 return false;
    358             if (key2 == "复利计算") {
    359                 if (y == true) {
    360                     double p2 = p;
    361                     for (int a = 0; a < n; a++) {
    362                         p = p + f;
    363                         f = p * (1 + i);
    364                     }
    365 
    366                 } else {
    367                     double s = 1;
    368                     for (int a = 0; a < n; a++) {
    369 
    370                         s = s * (1 + i);
    371                     }
    372                     f = p * s;
    373 
    374                 }
    375             } else {
    376                 if (y == true) {
    377 
    378                     f = p * n *( i * n+ 1);
    379                 } else {
    380 
    381                     f = p * (i * n + 1);
    382                 }
    383             }
    384             this.jTextField3.setText(String.format("%.2f", f));
    385             return true;
    386         } else
    387             return false;
    388     }
    389 
    390     public boolean principal(double i, double n, double f) {
    391         double p = 0, s = 1;
    392         if (i > 0 && n > 0 && f > 0) {
    393             if (n > 200)
    394                 return false;
    395             if (key2 == "复利计算") {
    396                 for (int a = 0; a < n; a++) {
    397                     s = (i + 1) * s;
    398                 }
    399                 p = f * (1 / s);
    400 
    401             } else {
    402                 p = f * (1 / (1 + i * n));
    403 
    404             }
    405             this.jTextField0.setText(String.format("%.2f", p));
    406 
    407             return true;
    408         } else
    409             return false;
    410     }
    411 
    412     public boolean interest(double p, double n, double f) {
    413         double i = 0;
    414         if (f > 0 && n > 0 && p > 0) {
    415             if (n > 200)
    416                 return false;
    417             if (key2 == "复利计算") {
    418                 i = Math.pow(f / p, 1.0 / n) - 1;
    419 
    420             } else {
    421                 i = (f - p) / (p * n);
    422 
    423             }
    424             this.jTextField1.setText(String.format("%.2f", i));
    425 
    426             return true;
    427         } else
    428             return false;
    429     }
    430 
    431     public boolean year(double p, double i, double f) {
    432         double n = 0;
    433 
    434         if (i > 0 && f > 0 && p > 0) {
    435             if (key2 == "复利计算") {
    436                 n = Logarithm.log(f / p, 1 + i);
    437 
    438             } else {
    439                 n = (f - p) / (p * i);
    440 
    441             }
    442             this.jTextField2.setText(String.format("%.2f", n));
    443             return true;
    444         } else
    445             return false;
    446     }
    447 
    448     public boolean loan(double p, double i, double n) {
    449         double f = 0;
    450         if (n > 200)
    451             return false;
    452         if (i > 0 && n > 0 && p > 0) {
    453             i = i / 12;
    454             n = n * 12;
    455             f = p * i * Math.pow(1 + i, n) / (Math.pow(1 + i, n) - 1);
    456 
    457             this.jTextField3.setText(String.format("%.2f", f));
    458             return true;
    459         } else
    460             return false;
    461 
    462     }
    463 }
    1 public class Logarithm {
    2     static public double log(double value, double base){
    3         return Math.log(value)/Math.log(base);
    4          
    5      }
    6 
    7 }

    六、运行结果

    七、总结

     由于和队友两人都对做界面不懂,需要向同学询问和网上查找相关资料,所以做出的界面不是很好并且只做了部分功能的界面。

  • 相关阅读:
    G
    F
    E
    D
    机器学习第二次作业
    机器学习第一次作业
    机器学习作业一
    软工实践个人总结
    第11组 Beta版本演示
    第11组 Beta冲刺(5/5)
  • 原文地址:https://www.cnblogs.com/xjy-gg/p/5393408.html
Copyright © 2011-2022 走看看