记账本App项目简记

目录

1、项目开发背景

2、需求分析

2.1、系统总体设计

2.2、系统功能模块设计

 2.3、系统数据库设计(E-R图)

3、技术栈

4、项目主要功能模块

5、项目关键代码


1、项目开发背景

        就拿记账来说,随着人们的生活丰富,对于金钱上花费的更是五花八门,金钱的掌控和把握是每个人的原生需求,自然而然的催生了记账的需求。记账的基本需求:收入支出功能统计与记录,通过每天的记账操作能够知道一段时间(一天、一周、一月、一年)里花了多少钱。

        经过每天的记账产生消费记录之后,就会希望分析自己消费支出的情况,看看自己主要花费在什么方面,有什么是不必要的开支。因此,记账的进阶需求就是满足用户的消费分析,通过每日、每月的图表统计,了解消费结构,支出趋势以及支出排行榜。

2、需求分析

2.1、系统总体设计

2.2、系统功能模块设计

记账功能:用户通过该功能增删账本账单信息。

周期记账:用户提前录入在某月某日有一笔消费,并在该日自动将该支出与 收入记录录入且在下月该笔记账会自动记录

搜索/筛选:用户根据时间、类别或添加的备注搜索需求数据。

数据分析:统计每月数据生成柱形图。

账本管理:用户通过此功能增删账本。

 2.3、系统数据库设计(E-R图)

 

3、技术栈

app采用java开发,数据库使用android常用的本地数据库sqlite。

4、项目主要功能模块

  1. 支持收入与支出的分类管理,如增加支出类型:餐饮、交通、走人户等;
  2. 支持录入新的支出与收入记录;
  3. 支持记录统计,如一周消费统计、一个月消费统计
  4. 支持周期记账,如提前录入在某月某日有一笔消费,并在该日自动将该支出与收入记录录入
  5. 支持新建账本;
  6. 支持查看历史账单;
  7. 支持搜索账单,如可根据备注搜索含相关信息的账单;

主要功能模块具体实现

记账功能:用户通过该功能增删账本账单信息。

周期记账:用户提前录入在某月某日有一笔消费,并在该日自动将该支出与 收入记录录入且在下月该笔记账会自动记录

搜索/筛选:用户根据时间、类别或添加的备注搜索需求数据。

数据分析:统计每月数据生成柱形图。

账本管理:用户通过此功能增删账本。

5、项目关键代码

定时记账功能关键代码


    //从定时表找到当天的数据
    public static List<AccountBean>getAccountListCommonMonthDayFromdingshitb(int year,int month,int day,String name){
        List<AccountBean>list = new ArrayList<>();
        String sql = "select * from dingshitb where year =? and month=? and day=? and name=? order by id desc";
        Cursor cursor = db.rawQuery(sql, new String[]{year + "",month + "", day + "", name + ""});
        //遍历符合要求的每一行数据
        while (cursor.moveToNext()) {
            int id = cursor.getInt(cursor.getColumnIndexOrThrow("id"));
            String typename = cursor.getString(cursor.getColumnIndexOrThrow("typename"));
            String beizhu = cursor.getString(cursor.getColumnIndexOrThrow("beizhu"));
            String time = cursor.getString(cursor.getColumnIndexOrThrow("time"));
            int sImageId = cursor.getInt(cursor.getColumnIndexOrThrow("sImageId"));
            int kind = cursor.getInt(cursor.getColumnIndexOrThrow("kind"));
            float money = cursor.getFloat(cursor.getColumnIndexOrThrow("money"));
            AccountBean accountBean = new AccountBean(id,typename,name,sImageId,beizhu,money,time,year,month,day,kind);
            list.add(accountBean);
        }
        return list;
    }
    /** 根据输入的数据date从 dingshitb 表 传值到 accounttb表*/
    public static void dateInsert(int year,int month,int day,String name){
        String sql ="INSERT into accounttb (name,typename,sImageId,beizhu,money,time,year,month,day,kind) " +
                "SELECT name,typename,sImageId,beizhu,money,time,year,month,day,kind FROM dingshitb " +
                "WHERE year=? and month=? and day = ? and name =?";
        db.execSQL(sql,new String[]{year+ "",month + "",day + "",  name + ""});
        System.out.println(year+month+day + "传值到 accounttb表");
    }
    /**
     * @description 更新 time为下一月数据
     * @param
     * @return
     */
    public static void timeInsertChange(String timeNext,int year,int month,int day,int id){
        String sql="UPDATE dingshitb SET time =? ,year =? , month=? , day=? where id= ?";
        db.execSQL(sql,new String[]{ timeNext + "",year + "",month + "",day + "",id + ""});
        System.out.println("插入的"+id);
        System.out.println(timeNext);
    }