0414复利计算6.0-----结对编程

结对同伴:

姓名:许佳仪

学号:201406114212

博客园地址:http://www.cnblogs.com/xjy-gg/

一、项目简介

  开发工具:MyEclipse

  开发语言: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 }

六、运行结果

 

七、总结

     由于我跟同伴的编程能力都不好,老师这次让我们实现的功能选项对我们来说难度很大,所以就选了相对较简单点的界面设计,但是结果还不是很理想。但之后会多花点时间把不懂得尽量补回来~

github 地址:https://github.com/xujiayi-gg/ggg

 

posted on 2016-04-14 22:55  10柯晓君  阅读(329)  评论(7编辑  收藏  举报

导航