日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一个毕业设计 家庭理财app

發布時間:2023/12/29 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个毕业设计 家庭理财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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。