您的位置:首页 > 其它

0405复利5.0震撼来袭

2016-04-05 17:58 686 查看
前注:





结对同伴的学号:201406114205

姓名:陈嘉慧

博客地址:http://www.cnblogs.com/hui1005039632/

一、项目简介

项目名称:复利计算软件

版 本 :5.0

版本类型:java

使用工具:eclipse+swing插件

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

备 注 :本代码仅作为学习交流用途,更多功能及后续开发请关注本博客园

二、新的功能需求

即要追求利益,又要面对不可预知的金融投资风险, “不能把鸡蛋放在同一个篮子里”,所以有必要进行组合投资。

通过上述计算与对比,可以帮助客户进行投资决策。

客户:那么能否帮我记录下一笔一笔不同类型的投资,并动态显示资金现值呢?

、设计

在久功能的基础上加入一个新的类,创建新的界面

、估算。

估计用时:3h

估计代码行:70

实际用时:5h

实际代码行:250行

五、任务分配

陈嘉慧这次的主要任务:1、设计界面,将新的投资界面设计出来

2、查阅相关资料,提出需求,包括需要的数据个数及公式

3、复审代码,包括风格规范和代码设计规范,让代码更加简明易读无二义性

我这次做的主要任务:1、将投资界面用代码尽可能地实现出来

2、检阅代码,进行单元测试,尽可能地减少bug

六、源代码主要功能介绍

private void CreateWindows() //创建窗体

private void CreateComponent() //创建窗口的零件

private void LayoutComponent() //设计窗口

private void MouseLinsten() //鼠标 监控

public void InitjtextArea() //初始化文本区域框

public void ReadFile(){
File file1=new File("principal.txt");
if(file1.exists()){

try {
//文件读取三流不能少
FileInputStream fis=new FileInputStream(file1);
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
BufferedReader br=new BufferedReader(isr);

String line;
String outup="本金"+"/"+"期限"+"/"+"期末价值"+"\n";
while((line=br.readLine())!=null){
//System.out.println(line);
outup=outup+line;
}
jtextArea.setText(outup);
//先创建的后关闭,后创建的先关闭
br.close();
isr.close();
fis.close();
} catch (UnsupportedEncodingException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

}
}

public void WriteFile(){
File newfile=new File("principal.txt");
FileOutputStream fos;
try {

//文件写入三流,不可少
fos = new FileOutputStream(newfile);
OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");
BufferedWriter bw=new BufferedWriter(osw);
for(int i=0;i<input;i++){
bw.write(Pricinal[i]+"\n");
}
bw.close();
osw.close();
fos.close();
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

}


七、Junit测试减少bug而修改的代码

源代码:

private class C2Action implements ActionListener {
public void actionPerformed(ActionEvent e) {

b1.setText("");
b2.setText("");
b3.setText("");
b6.setText("");
InitjtextArea();

}
}


捕捉到空指针异常,以下是改进的代码:

private class C2Action implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
b1.setText("");
b2.setText("");
b3.setText("");
b6.setText("");
} catch (NullPointerException e2) {
// TODO: handle exception
}
InitjtextArea();

}
}


源代码:

private class C1Action implements ActionListener {
public void actionPerformed(ActionEvent e) {
double principal = 0;         //b1
double amount = 0;            //b3
double rate = 0;              //b6
double time=0;                //b2
if(b3.getText().equals("") && b1.getText() != null
&& b6.getText() != null && b2.getText() != null)
{

rate = Double.parseDouble(b6.getText());
principal = Double.parseDouble(b1.getText());
time = Double.parseDouble(b2.getText());
amount=principal*(1+rate);
b3.setText(""+amount);
Amount[input]=amount;
Day[input]=time;
Pricinal[input]=principal;
input+=1;
}
else if(b3.getText()!=null && b1.getText() != null
&& b6.getText() != null && b2.getText() != null)
{
JOptionPane.showMessageDialog(null, "请删除期末价值");
}
else {
JOptionPane.showMessageDialog(null, "请输入数据");
}
}
}


捕捉到空指针异常。以下是改进的代码

private class C1Action implements ActionListener {
public void actionPerformed(ActionEvent e) {
double principal = 0;         //b1
double amount = 0;            //b3
double rate = 0;              //b6
double time=0;                //b2
if(b3.getText().equals("") && b1.getText() != null
&& b6.getText() != null && b2.getText() != null)
{
try {
rate = Double.parseDouble(b6.getText());
principal = Double.parseDouble(b1.getText());
time = Double.parseDouble(b2.getText());
} catch (Exception e2) {
// TODO: handle exception
rate=0;
principal=0;
time=0;
}

amount=principal*(1+rate);
b3.setText(""+amount);
Amount[input]=amount;
Day[input]=time;
Pricinal[input]=principal;
input+=1;
}
else if(b3.getText()!=null && b1.getText() != null
&& b6.getText() != null && b2.getText() != null)
{
JOptionPane.showMessageDialog(null, "请删除期末价值");
}
else {
JOptionPane.showMessageDialog(null, "请输入数据");
}
}
}


这样即使误输入也能输出一个为0的结果。

八、主界面及运行结果截图

这是主界面





这是投资模块界面



这三张是运行结果截图







九、总结

1、代码规范使读起来节省很多时间

2、结对合作由于有另一个队友有所要求,不像之前的任意式,能够提高代码的质量

十、资源

github:https://github.com/hellolaona/Fuli5.0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: