记账本App项目简记
目录
1、项目开发背景
就拿记账来说,随着人们的生活丰富,对于金钱上花费的更是五花八门,金钱的掌控和把握是每个人的原生需求,自然而然的催生了记账的需求。记账的基本需求:收入支出功能统计与记录,通过每天的记账操作能够知道一段时间(一天、一周、一月、一年)里花了多少钱。
经过每天的记账产生消费记录之后,就会希望分析自己消费支出的情况,看看自己主要花费在什么方面,有什么是不必要的开支。因此,记账的进阶需求就是满足用户的消费分析,通过每日、每月的图表统计,了解消费结构,支出趋势以及支出排行榜。
2、需求分析
2.1、系统总体设计
2.2、系统功能模块设计
记账功能:用户通过该功能增删账本账单信息。
周期记账:用户提前录入在某月某日有一笔消费,并在该日自动将该支出与 收入记录录入,且在下月该笔记账会自动记录。
搜索/筛选:用户根据时间、类别或添加的备注搜索需求数据。
数据分析:统计每月数据生成柱形图。
账本管理:用户通过此功能增删账本。
2.3、系统数据库设计(E-R图)
3、技术栈
app采用java开发,数据库使用android常用的本地数据库sqlite。
4、项目主要功能模块
- 支持收入与支出的分类管理,如增加支出类型:餐饮、交通、走人户等;
- 支持录入新的支出与收入记录;
- 支持记录统计,如一周消费统计、一个月消费统计
- 支持周期记账,如提前录入在某月某日有一笔消费,并在该日自动将该支出与收入记录录入;
- 支持新建账本;
- 支持查看历史账单;
- 支持搜索账单,如可根据备注搜索含相关信息的账单;
主要功能模块具体实现
记账功能:用户通过该功能增删账本账单信息。
周期记账:用户提前录入在某月某日有一笔消费,并在该日自动将该支出与 收入记录录入,且在下月该笔记账会自动记录。
搜索/筛选:用户根据时间、类别或添加的备注搜索需求数据。
数据分析:统计每月数据生成柱形图。
账本管理:用户通过此功能增删账本。
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);
}