一个毕业设计 家庭理财app
完整源碼:聯系qq? 332324956?
家庭理財app畢設內容講解
?
└─com
???└─bs
???????└─lc
???????????├─dao
???????????│ ?????DBOpenHelper.java???//創建數據庫對象
???????????│ ?????shouruDAO.java??//收入的數據庫接口
???????????│ ?????zhiochuDAO.java??//支出的數據庫接口
???????????│
???????????├─model
???????????│ ?????shouru.java??//收入的數據結構
???????????│ ?????zhichu.java??//支出的數據結構
???????????│
???????????└─view
???????????????????Addoutaccount.java???//添加支出的界面
???????????????????Addshouru.java??// 添加收入的界面
???????????????????ModifyManage.java???//刪除,修改,放棄
???????????????????Login.java??//登錄界面,需要密碼時啟動
???????????????????MainActivity.java??//主界面,顯示主要列表菜單
???????????????????Psdset.java???//密碼修改界面
???????????????????Shouruinfo.java??//收入詳情界面
???????????????????Showinfo.java??//收入和支出界面
???????????????????myAdapter.java??// 顯示表格的適配數據
???????????????????tjjg.java???//統計結果顯示
???????????????????tjjg_sel.java?//選擇統計時間段
???????????????????Zhichutinfo.java//支出的詳細界面
?
主要代碼流程:
?
啟動app,進入login.java,里面進行判斷,如果是第一次或者密碼為空,直接跳主界面mainactivity.java,否則讓輸入密碼,和正確的密碼進行匹配,進行判斷,正確進入mainactivity.java,否則讓重輸入。
// 獲取到進入密碼,如果為空,說明是第一次啟動,直接進入主界面。
sp?= getSharedPreferences("default", 0);
psd=sp.getString("psd","");
if(psd==null||psd.equals("")){
startActivity(intent);
finish();
}
?
//點擊登錄按鈕,判斷,如果沒有輸入任何東西,則提示請輸入密碼后登陸,否則判斷是否和存儲的一致,一致登陸進去,否則請重新輸入
btnlogin.setOnClickListener(new?OnClickListener() {
@Override
public?void?onClick(View arg0) {
????String txt=txtlogin.getText().toString();
if(txt.length()==0){
Toast.makeText(Login.this,"請輸入密碼后登陸", Toast.LENGTH_SHORT).show();
}else{
if(txt.equals(psd)){
startActivity(intent);
finish();
}
else{
Toast.makeText(Login.this,"請輸入正確的密碼", Toast.LENGTH_SHORT).show();
}
}
?
txtlogin.setText("");
}
});
Mainactivity.java 顯示主要的菜單項:
"新添支出","新添收入","我的支出","我的收入","數據中心","統計結果","密碼設置","退出應用"
界面顯示用的一個 GridView 和一個適配器完成界面顯示。
gvinfo=(GridView)findViewById(R.id.gvinfo);
//創建ItemAdapter對象,加載菜單項
ItemAdapter adapter=new?ItemAdapter(titles,images, this);
gvinfo.setAdapter(adapter);
?
然后設置點擊item進行相應界面操作。這個主界面則顯示完成,流程也很簡單。
?
gvinfo.setOnItemClickListener(new?OnItemClickListener() {
?
@Override
public?void?onItemClick(AdapterView<?> arg0, View arg1,int?arg2,
long?arg3) {
Intent intent=null;
switch(arg2){
case?0:
//新添支出
intent=new?Intent(MainActivity.this, Addoutaccount.class);
startActivity(intent);
break;
case?1:
//"新添收入"
intent=new?Intent(MainActivity.this, Addshouru.class);
startActivity(intent);
break;
case?2:
//"我的支出"
intent=new?Intent(MainActivity.this, zhichutinfo.class);
startActivity(intent);
break;
case?3:
//"我的收入"
intent=new?Intent(MainActivity.this, shouruinfo.class);
startActivity(intent);
break;
case?4:
//"數據中心"
intent=new?Intent(MainActivity.this, showinfo.class);
startActivity(intent);
break;
case?5:
//"統計結果"
intent=new?Intent(MainActivity.this, tjjg_sel.class);
startActivity(intent);
break;
case?6:
//"密碼設置"
intent=new?Intent(MainActivity.this, psdset.class);
startActivity(intent);
break;
case?7:
//"退出應用"
finish();
}
?
?
?
先說下各個界面的主要流程,后面是寫細節東西。
新添支出?新添收入:
輸入金錢,類別?,標簽 ,時間 ,地址 信息 ,存儲在db里面。
我的支出 我的收入:
從數據庫取出數據,顯示支出和收入列表。
數據中心:
顯示支出和收入整個信息,點擊各個信息,進入可以修改的界面,進行修改刪除操作。
統計結果:
顯示列表,顯示表項,計算各個項目的花費。點擊圖形顯示,則會以餅狀顯示統計結果。
密碼設置:
可以設置密碼,登錄時需要輸入,保證數據安全。
退出:直接退出界面。
?
?
?
里面用到的主要還是數據庫操作sqlite 和圖表操作,密碼用的SharedPreferences簡單存儲。和一些簡單的代碼邏輯。
?
圖表用的這個
http://blog.jobbole.com/65102/??很簡單的使用。
代碼中使用的位置:
CategorySeries dataset=new?CategorySeries("支出信息餅圖");
//持有一個數據 dataset?,用來存儲有多少組項目,標題的信息。
// ??從數據庫里面取出來數據,將各個的類別名字和錢數添加進去。
// dataset.add(cursor.getString(0), cursor.getDouble(1));
?
int?count=0;
while(cursor.moveToNext()){
dataset.add(cursor.getString(0), cursor.getDouble(1));
count++;
}
cursor.close();
?
// renderer 是渲染器,設置下渲染的顏色 標記文本字體大小
?????????????????renderer.setApplyBackgroundColor(true);
?????????????renderer.setLabelsTextSize(20);
?????????????renderer.setChartTitleTextSize(30);
?????????????renderer.setLegendTextSize(30);
?????????????renderer.setLegendHeight(50);
?
//給渲染器設置各個顏色。
?
?????????????int[] colors=new?int[]{Color.RED,Color.BLUE,Color.GREEN,Color.YELLOW,Color.CYAN,Color.DKGRAY,Color.GRAY,Color.LTGRAY,Color.MAGENTA,Color.TRANSPARENT,Color.WHITE,Color.BLACK,Color.RED, Color.BLUE,Color.CYAN,Color.DKGRAY,Color.GRAY,Color.GREEN,Color.LTGRAY,Color.MAGENTA,Color.TRANSPARENT,Color.WHITE,Color.YELLOW,Color.BLACK};
?????????????for?(int?i=0;i<count;i++) {
????????????????????????// 設置各個部分的樣式
??????????????????SimpleSeriesRenderer r = new?SimpleSeriesRenderer();
??????????????????r.setColor(colors[i]);
??????????????????renderer.addSeriesRenderer(r);
?????????????}
?
// ???傳參數,進入圖表界面。
Intent intent=ChartFactory.getPieChartIntent(tjjg.this, dataset, renderer,"支出信息餅圖");
startActivity(intent);
?
?
?
?
?
?
?
?
現在我們說下各個界面的代碼:
?
Addoutaccount?新添支出:
主要有 錢數 時間 地點 類型 標簽
時間顯示使用
//時間單擊事件
txtTime.setOnClickListener(new?OnClickListener() {
@Override
public?void?onClick(View arg0) {
// TODO?Auto-generated method stub
showDialog(DATE_DIALOG_ID);
}
});
?
//創建對應的對話框DATE_DIALOG_ID)=0,所以會創建DatePickerDialog?回調在下方
protected?Dialog onCreateDialog(int?id) {
switch(id){
case?0:
return?new?DatePickerDialog(this,mDateSetLisetener, mYear, mMonth, mDay);
}
return?null;
}
?
?
//回調函數,將時間信息更新到界面上即可。
?
private?DatePickerDialog.OnDateSetListenermDateSetLisetener=new?OnDateSetListener() {
@Override
public?void?onDateSet(DatePicker view,int?year, int?month,int?day) {
mYear=year;
mMonth=month;
mDay=day;
updateDisplay();
}
};
?
點擊存儲:
?
先判斷錢寫了嗎,沒有提示請輸入支出金額,否則進入,創建一個支出對象
,將金錢,時間,類型,地址,標注填入。
然后使用outaccountdao.add(tb_outaccount);
加入一條數據。這段代碼為:(稍后我們再講zhiochuDAO 文件)。
?
?
?
if(txtMoney.getText().toString().isEmpty() ||Double.parseDouble(txtMoney.getText().toString())==0){
Toast.makeText(Addoutaccount.this,"請輸入支出金額", Toast.LENGTH_SHORT).show();
}else{
zhiochuDAO outaccountdao=new?zhiochuDAO(Addoutaccount.this);
zhichu tb_outaccount=new?zhichu(outaccountdao.getMaxId()+1, Double.parseDouble(txtMoney.getText().toString()),txtTime.getText().toString(), spType.getSelectedItem().toString(), txtAddress.getText().toString(),txtMark.getText().toString());
try?{
outaccountdao.add(tb_outaccount);
Toast.makeText(Addoutaccount.this,"【新增支出】數據添加成功", Toast.LENGTH_SHORT).show();
finish();
} catch?(Exception e) {
Toast.makeText(Addoutaccount.this,"【新增支出】數據添加失敗", Toast.LENGTH_SHORT).show();
}
}
?
現在我們來說zhiochuDAO ?這個文件的內容:
?
構造里面用helper=new?DBOpenHelper(context);//初始化DBOpenHelper對象
?
/**
?* 添加支出信息
?* @param?tb_outaccount
?*/
public?void?add(zhichu tb_outaccount){
db=helper.getWritableDatabase();
//執行添加信息操作
db.execSQL("insert into tb_outaccount (_id,money,time,type,address,mark) values (?,?,?,?,?,?)",new?Object[]{tb_outaccount.getid(),tb_outaccount.getMoney(),tb_outaccount.getTime(),tb_outaccount.getType(),tb_outaccount.getAddress(),tb_outaccount.getMark()});
}
?
這里我們說下這個語句的意思。
?
insert into tb_outaccount (_id,money,time,type,address,mark)
插入?????到 ???這個表格 ???????需要數據_id錢數 時間 類型 地址 標記
?
這些信息從 后面的那個參數傳過來。
?
?
這里這個id是
getMaxId()+1??來的,getMaxId 是獲取支出表格里面的最大的ID值。
?
/**
?* 獲取支出最大編號
?* @return
?*/
public?int?getMaxId(){
db=helper.getWritableDatabase();
Cursor cursor=db.rawQuery("select max(_id) from tb_outaccount",null);
while(cursor.moveToNext()){
return?cursor.getInt(0);
}
return?0;
}
?
這里這個select max(_id) from tb_outaccount?意思為,選擇 ?最大的(_id)從 tb_outaccount?這個表格里面。
?
?
這個文件里面的所有語句,這里解釋一下:
select count(_id) from tb_outaccount
選擇?數目(_id) ?從tb_outaccount表格。
?
select * from tb_outaccount order by _id desc limit ?,? ",new?String[]{String.valueOf(start),String.valueOf(count)}
?
選擇?所有 從 tb_outaccount表格?,排序依據_id遞減?,限制起始點 和個數。
?
select _id,money,time,type,address,mark from tb_outaccount where _id=?
?
選擇?需要_id ?錢數 時間 類型 地址 標簽 從tb_outaccount表格?里面_id 等于 你后面傳遞的參數。
?
update tb_outaccount set money=?,time=?,type=?,address=?,mark=? where _id=?
?
更新數據?tb_outaccount表格??設置 錢數 時間 類型 地址 標簽 具體_id=后面的參數
?
?
?
收入和支出邏輯一樣,只是存儲的表項不一樣而已。
?
?
?
Psdset.java 密碼設置界面
// 獲取到進入密碼,如果為空,說明是第一次啟動,隱藏掉輸入舊密碼,設置標記是否需要判斷舊密碼
sp?= getSharedPreferences("default", 0);
edit=sp.edit();
psd=sp.getString("psd","");
if(psd==null?||psd.equals(""))
{
txtpwd1.setVisibility(View.GONE);
tvPwd1.setVisibility(View.GONE);
isoldpwd=false;
}else
{
isoldpwd=true;
}
?
設置點擊設置密碼時,判斷是否有舊密碼,有的話,進行判斷,不正確不讓修改。
正確后再次判斷新密碼和新密碼驗證是否一致,不一致一樣不設置,否則設置,存儲在SharedPreferences里面即可。
如果之前沒有舊密碼,直接判斷兩次的新密碼是否一樣,一樣存儲即可,否則提示重新輸入。
總結
以上是生活随笔為你收集整理的一个毕业设计 家庭理财app的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 51单片机汇编语言实验(三)-----定
- 下一篇: G470 deepin wifi无法开启