今天继续完成未写完的家庭记账本小软件。
首先分析支出和收入的种类,我的思路是将收入和支出种类全部存入一个数据库,然后使用一个变量将收入和支出分开,这里通过图标点击时颜色不同来区分。
这里需要两个Bean
AccountBean
//描述记录一条数据的相关内容 public class AccountBean { int id; String typename;//类型 int simageId;//被选中图片 String beizhu; float money;//价格 String time;//保存时间 int year; int month; int day; int kind;//类型 收入--1 支出--0 public AccountBean() { } public AccountBean(int id, String typename, int simageId, String beizhu, float money, String time, int year, int month, int day, int kind) { this.id = id; this.typename = typename; this.simageId = simageId; this.beizhu = beizhu; this.money = money; this.time = time; this.year = year; this.month = month; this.day = day; this.kind = kind; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTypename() { return typename; } public void setTypename(String typename) { this.typename = typename; } public int getSimageId() { return simageId; } public void setSimageId(int simageId) { this.simageId = simageId; } public String getBeizhu() { return beizhu; } public void setBeizhu(String beizhu) { this.beizhu = beizhu; } public float getMoney() { return money; } public void setMoney(float money) { this.money = money; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public int getDay() { return day; } public void setDay(int day) { this.day = day; } public int getKind() { return kind; } public void setKind(int kind) { this.kind = kind; } }
TypeBean
//收入或支出具体的类 public class TypeBean { int id; String typename;//类型名称 int imageId;//未被选中图片id int simageId;//被选中图片 int kind; public TypeBean() { } public TypeBean(int id, String typename, int imageId, int simageId, int kind) { this.id = id; this.typename = typename; this.imageId = imageId; this.simageId = simageId; this.kind = kind; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTypename() { return typename; } public void setTypename(String typename) { this.typename = typename; } public int getImageId() { return imageId; } public void setImageId(int imageId) { this.imageId = imageId; } public int getSimageId() { return simageId; } public void setSimageId(int simageId) { this.simageId = simageId; } public int getKind() { return kind; } public void setKind(int kind) { this.kind = kind; } }
接下来建立了数据库,将收入和支出的图标传入
数据库为DBOpenHelper
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import androidx.annotation.Nullable; import com.example.bookeep.R; public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper(@Nullable Context context) { super(context, "book.db", null, 1); } //创建数据库,只有项目第一次运行时会调用 @Override public void onCreate(SQLiteDatabase db) { //创建表示类型的表 String sql = "create table typetb(id integer primary key autoincrement,typename varchar(20),imageId integer,simageId integer,kind integer)"; db.execSQL(sql); insertType(db); //创建记账本 sql = "create table accounttb(id integer primary key autoincrement,typename varchar(20),simageId integer,beizhu varchar(100),money float," + "time varchar(100),year integer,month integer,day integer,kind integer)"; db.execSQL(sql); } private void insertType(SQLiteDatabase db) { //向typetb表中添加数据 String sql = "insert into typetb (typename,imageId,simageId,kind) values (?,?,?,?)"; db.execSQL(sql,new Object[]{"其他", R.mipmap.ic_qita,R.mipmap.ic_qita_fs,0}); db.execSQL(sql,new Object[]{"餐饮", R.mipmap.ic_canyin,R.mipmap.ic_canyin_fs,0}); db.execSQL(sql,new Object[]{"交通", R.mipmap.ic_jiaotong,R.mipmap.ic_jiaotong_fs,0}); db.execSQL(sql,new Object[]{"购物", R.mipmap.ic_gouwu,R.mipmap.ic_gouwu_fs,0}); db.execSQL(sql,new Object[]{"服饰", R.mipmap.ic_fushi,R.mipmap.ic_fushi_fs,0}); db.execSQL(sql,new Object[]{"日用品", R.mipmap.ic_riyongpin,R.mipmap.ic_riyongpin_fs,0}); db.execSQL(sql,new Object[]{"娱乐", R.mipmap.ic_yule,R.mipmap.ic_yule_fs,0}); db.execSQL(sql,new Object[]{"零食", R.mipmap.ic_lingshi,R.mipmap.ic_lingshi_fs,0}); db.execSQL(sql,new Object[]{"烟酒茶", R.mipmap.ic_yanjiu,R.mipmap.ic_yanjiu_fs,0}); db.execSQL(sql,new Object[]{"学习", R.mipmap.ic_xuexi,R.mipmap.ic_xuexi_fs,0}); db.execSQL(sql,new Object[]{"医疗", R.mipmap.ic_yiliao,R.mipmap.ic_yiliao_fs,0}); db.execSQL(sql,new Object[]{"住宅", R.mipmap.ic_zhufang,R.mipmap.ic_zhufang_fs,0}); db.execSQL(sql,new Object[]{"水电煤", R.mipmap.ic_shuidianfei,R.mipmap.ic_shuidianfei_fs,0}); db.execSQL(sql,new Object[]{"通讯", R.mipmap.ic_tongxun,R.mipmap.ic_tongxun_fs,0}); db.execSQL(sql,new Object[]{"人情往来", R.mipmap.ic_renqingwanglai,R.mipmap.ic_renqingwanglai_fs,0}); db.execSQL(sql,new Object[]{"其他", R.mipmap.in_qt,R.mipmap.in_qt_fs,1}); db.execSQL(sql,new Object[]{"薪资", R.mipmap.in_xinzi,R.mipmap.in_xinzi_fs,1}); db.execSQL(sql,new Object[]{"奖金", R.mipmap.in_jiangjin,R.mipmap.in_jiangjin_fs,1}); db.execSQL(sql,new Object[]{"借入", R.mipmap.in_jieru,R.mipmap.in_jieru_fs,1}); db.execSQL(sql,new Object[]{"收债", R.mipmap.in_shouzhai,R.mipmap.in_shouzhai_fs,1}); db.execSQL(sql,new Object[]{"利息", R.mipmap.in_lixifuji,R.mipmap.in_lixifuji_fs,1}); db.execSQL(sql,new Object[]{"投资", R.mipmap.in_touzi,R.mipmap.in_touzi_fs,1}); db.execSQL(sql,new Object[]{"二手交易", R.mipmap.in_ershoushebei,R.mipmap.in_ershoushebei_fs,1}); db.execSQL(sql,new Object[]{"意外所得", R.mipmap.in_yiwai,R.mipmap.in_yiwai_fs,1}); }
将这些完成之后,必须建立一个工具类对数据库的信息进行操作
public class DBManger { private static SQLiteDatabase db; //初始化数据库对象 public static void initDB(Context context){ DBOpenHelper helper = new DBOpenHelper(context);//帮助类对象 db = helper.getWritableDatabase();//得到数据库对象 } }
在这个类中可以根据自己的需要来建立方法,完成对数据库的操作。
明天将会开始逻辑的编写,逐步完成各个功能。