Codejie's C++ Space

Using C++

SavingKeeper : 一个Android应用


    拖拖拉拉,SavingKeeper终于算是敲完了~大家看看,需要的请这里下载吧~Android版本最低限制我设置在2.1,但更低应该也可以用,我没用啥高级功能,该下配置应该就好,所以,喜欢源码的,自己去checkout吧~

    SavingKeeper是个干什么的呢?
    一个管理存款单据的Android应用~

    为什么写这个呢?Android应用开发练练手~为什么拿这个练手呢?因为自己需要~如果我给自己写程序,那都是自己需要的(这不是废话吗。。。)需要这样的应用肯定不是钱多的缘故,因为有钱人是没有存款的,都拿来投资了。。。只有我这样每月银子都要存点的人,才会有很多存单需要记录的,奈何记性不好,数学不佳,每次想知道有多少银子时,总要整理一翻,整理到最好,数钱的好心情都没有了。。所以,为了懒惰,开发工具 -- 这是人类进步的动力

    上图来说明具体功能了~

    1. 主界面 - Saving列表



        主界面为所有存单的列表,不同颜色的,最大的字串是存单的标题,绿色表示活期存款,蓝色表示未期了的定期存款,黄色表是到期的定期存款。
        标题下面的数字是存单的金额,右边两个数字,上面的是存单到期金额,,下面是存单当期金额,即计算利息后的金额。因此这两个数据对于活期来说是一样的。这样,直接查看这两个数据,就能知道一个定期存单如果未到期取出时的活期利息是多少了。(可能再增加个到期是多少的,来对比下,可能更好。。。)

        第二张图显示了当前界面下的菜单,很简单,不多说了。。
    
    2. 添加Saving界面



        这个界面用于添加新的存单,如图所示,实际设计时还支持US和EU两种币种,但敲完后才发现,RMB和外汇利息调整是不同步的,整个设计都错位了,所以只好屏蔽这两种币种了,还好,咱也没有它们,用不上啊。。。

    3. 利息列表界面




        界面显示了从2006年后的利息变化,别说,比油价变化的“迅速”多了。。。(总是有人不喜欢吃亏啊。。。)
        2006年前的也有,没有添加,反正那之前咱都没有什么可以存的。。。需要的可以自助下了,有‘添加’菜单。界面如下图。




    4. 银行列表界面



        界面中罗列了主要的几家国有(不分红)银行,如果你需求的不在列,可以自助添加的。

    5. 登录界面




    上面是登录的界面,起始缺省密码是空的,可以自己更改。但这里请注意,SavingKeeper所有数据,包括密码都是明码存放在本地数据库中的,所以,请不要在存单数据中添加存单密码类的东东。。。(穷,丢了银子赔不起的。。)




    好了,这次就这些。。。



<---- 疲惫的分割线 ---->

    SavingKeeper终于写完了。。。艰辛不多说了,就一个利息算法就搞了我三周,数学不好的程序员很郁闷啊。。。
    通过SavingKeeper,算搞明白Android应该如何开发了,不错的收获。。。

posted on 2011-11-07 15:00 codejie 阅读(1238) 评论(3)  编辑 收藏 引用 所属分类: G7

评论

# re: SavingKeeper : 一个Android应用 2011-11-07 16:46 codejie

修改了未到期定期的金额计算方法,这样就可以比较下未到期的存单的到期金额与当前活期金额的差值了,在利息变化如此频繁的今天,应该很有用。  回复  更多评论   

# re: SavingKeeper : 一个Android应用 2011-11-07 16:47 codejie

万恶的那啥墙啊,googlecode.com竟然又,又不能SVN了。。。  回复  更多评论   

# re: SavingKeeper : 一个Android应用 2011-11-07 17:07 codejie

### Eclipse Workspace Patch 1.0
#P SavingKeeper
Index: src/jie/java/android/savingkeeper/DataCalculator.java
===================================================================
--- src/jie/java/android/savingkeeper/DataCalculator.java (revision 223)
+++ src/jie/java/android/savingkeeper/DataCalculator.java (working copy)
@@ -182,6 +182,9 @@
}

private long getDays(Date begin, Date end) {
+ if(end.compareTo(begin) <= 0)
+ return 0;
+
long d = ((end.getTime() - begin.getTime()) / (1000 * 60 * 60 * 24));
if(d <= 0) {
Log.e(GLOBAL.APP_TAG, "error: " + d + " end:" + end.toString() + " begin:" + begin.toString());
@@ -229,6 +232,17 @@
return 0.0f;
}

+ private float getFixedMonthEstimateFixedAmount(Date checkin, int months, float amount, int currency, int type) {
+ float rate = getFixedRate(checkin, currency, type);
+ rate = rate / 12;
+ return amount * (1 + rate * months);
+ }
+
+ private float getFixedYearEstimateFixedAmount(Date checkin, int years, float amount, int currency, int type) {
+ float rate = getFixedRate(checkin, currency, type);
+ return amount * (1 + rate * years);
+ }
+
private int getFixedMonthAmount(Date checkin, float amount, int currency, int type, CalcResult result) {
int months = 0;
switch(type) {
@@ -242,12 +256,12 @@
break;
}

- Date t = checkin;//new Date(checkin.getYear(), checkin.getMonth(), checkin.getDay());
+ Date t = new Date(checkin.getYear(), checkin.getMonth(), checkin.getDay());
t.setMonth(t.getMonth() + months);

if(t.compareTo(GLOBAL.TODAY) > 0) {
result.now = getCurrentAmount(checkin, amount, currency);
- result.end = amount;
+ result.end = getFixedMonthEstimateFixedAmount(checkin, months, amount, currency, type);
return 0;
}

@@ -286,12 +300,12 @@
break;
}

- Date t = checkin;
+ Date t = new Date(checkin.getYear(), checkin.getMonth(), checkin.getDay());//checkin;
t.setYear(t.getYear() + years);

if(t.compareTo(GLOBAL.TODAY) > 0) {
result.now = getCurrentAmount(checkin, amount, currency);
- result.end = amount;
+ result.end = getFixedYearEstimateFixedAmount(checkin, years, amount, currency, type);//amount;
return 0;
}

  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜