简易记账app
来源:互联网 发布:药店用的软件 编辑:程序博客网 时间:2024/05/01 17:16
public class BilldbHelper { private static final String TAG = "Cola_BilldbHelper"; private static final String DATABASE_NAME = "cola.db"; SQLiteDatabase db; Context context; BilldbHelper(Context _context) { context=_context; db=context.openOrCreateDatabase(DATABASE_NAME, 0, null); Log.v(TAG,"db path="+db.getPath()); } public void CreateTable_acctitem() { try{ db.execSQL("CREATE TABLE acctitem (" + "_ID INTEGER PRIMARY KEY," + "PID integer," + "NAME TEXT" + ");"); Log.v("cola","Create Table acctitem ok"); }catch(Exception e){ Log.v("cola","Create Table acctitem err,table exists."); } } public void CreateTable_bills() { try{ db.execSQL("CREATE TABLE bills (" + "_id INTEGER primary key autoincrement," +" acctitemid integer," + "fee integer," + "userid integer," + "sdate TEXT," + "stime TEXT," + "desc TEXT" + ");"); Log.v("cola","Create Table acctitem ok"); }catch(Exception e){ Log.v("cola","Create Table acctitem err,table exists."); } } public boolean Bills_save(int acctid,int fee,int userid,String date,String time,String text){ String sql=""; try{ sql="insert into bills values(null,"+acctid+","+fee+","+userid+",'"+date+"','"+time+"','"+text+"')"; db.execSQL(sql); Log.v("cola","insert Table bills ok"); return true; }catch(Exception e){ Log.v("cola","insert Table bills err="+sql); return false; } } public void CreateTable_colaconfig() { try{ db.execSQL("CREATE TABLE colaconfig (" + "_ID INTEGER PRIMARY KEY," + "NAME TEXT" + ");"); Log.v("cola","Create Table colaconfig ok"); }catch(Exception e){ Log.v("cola","Create Table acctitem err,table exists."); } } public void CreateTable_users() { try{ db.execSQL("Create table tusers (_id integer primary key autoincrement," +"caption text not null)"); Log.v("cola","Create Table users ok"); db.execSQL("insert into tusers values (null,'个人')"); db.execSQL("insert into tusers values (null,'公司')"); }catch(Exception e){ Log.v("cola","Create Table tusers err,table exists."); } } public void InitAcctitem() { try{ //s.getBytes(encoding); db.execSQL("insert into acctitem values (1,null,'收入')"); db.execSQL("insert into acctitem values (2,1,'工资')"); db.execSQL("insert into acctitem values (9998,1,'其他')"); db.execSQL("insert into acctitem values (0,null,'支出')"); db.execSQL("insert into acctitem values (3,0,'生活用品')"); db.execSQL("insert into acctitem values (4,0,'水电煤气费')"); db.execSQL("insert into acctitem values (5,0,'汽油费')"); db.execSQL("insert into acctitem values (9999,0,'其他')"); //db.execSQL("insert into bills values(100,135,10000,'','','备注')"); Log.v("cola","insert into ok"); }catch(Exception e) { Log.v("cola","init acctitem e="+e.getMessage()); } } public void Acctitem_newitem(String text,int type){ Cursor c =db.query("acctitem", new String[]{"max(_id)+1"}, "_id is not null and _id<9998", null, null, null, null); c.moveToFirst(); int maxid=c.getInt(0); String sql="insert into acctitem values ("+maxid+","+type+",'"+text+"')"; db.execSQL(sql); Log.v("cola","newitem ok text="+text+" id="+type+" sql="+sql); } public void Acctitem_edititem(String text,int id){ db.execSQL("update acctitem set name='"+text+"' where _id="+id); Log.v("cola","edititem ok text="+text+" id="+id); } public void Acctitem_delitem(int id){ db.execSQL("delete from acctitem where _id="+id); Log.v("cola","delitem ok id="+id); } public void QueryTable_acctitem(){ } public void FirstStart(){ try{ String col[] = {"type", "name" }; Cursor c =db.query("sqlite_master", col, "name='colaconfig'", null, null, null, null); int n=c.getCount(); if (c.getCount()==0){ CreateTable_acctitem(); CreateTable_colaconfig(); CreateTable_bills(); CreateTable_users(); InitAcctitem(); } //test(); Log.v("cola","c.getCount="+n+""); }catch(Exception e){ Log.v("cola","e="+e.getMessage()); } } public void close(){ db.close(); } public Cursor getParentNode(){ return db.query("acctitem", new String[]{"_id", "name","pid" }, "pid is null", null, null, null, "pid,_id"); } public Cursor getChildenNode(String pid){ Log.v("cola","run getchildenNode"); return db.query("acctitem", new String[]{"_id", "name" }, "pid="+pid, null, null, null, "_id"); } public Cursor getUserid(){ Log.v("cola","run get users cursor"); return db.query("tusers", new String[]{"_id", "caption" }, null, null, null, null, null); } public Cursor getBills(String date){ Log.v("cola","run get bills cursor date="+date); return db.query("bills a,acctitem b", new String[]{"a._id _id","a.rowid rowid", "acctitemid","b.name name","b._id bid","( case when pid=0 then '-' else '' end)||fee/100||'' fee","sdate||' '||stime sdate","desc" }, "a.acctitemid=b._id and a.sdate like '"+date+"%'", null, null, null, null); } public void delBills(int id) { db.execSQL("delete from bills where _id="+id); } public String getBillsTotal(String date){ Log.v("cola","run get bills total cursor"); Cursor cur=db.query("bills a,acctitem b", new String[]{"sum(case when b.pid=0 then -fee end)/100||'' out","sum(case when b.pid=1 then fee end)/100||'' infee","sum(case when b.pid=0 then -fee else fee end)/100||'' total"}, "a.acctitemid=b._id and a.sdate like '"+date+"%'",null, null, null, null); cur.moveToFirst(); String s=""; while(!cur.isAfterLast()){ s="当月收入:"+cur.getFloat(1)+" 支出:"+cur.getFloat(0)+" 小计:"+cur.getFloat(2); cur.moveToNext(); } return s; } public String test(){ try{ Cursor c2 =getUserid(); String ss=""; c2.moveToFirst(); while(!c2.isAfterLast()){ ss = c2.getString(0) +", "+ c2.getString(1); //byte b[]=c2.getString(1).getBytes(); c2.moveToNext(); Log.v("cola","ss="+ss+""); } return ss; }catch(Exception e){ Log.v("cola","e="+e.getMessage()); return "err"; } }
package com.cola.ui;import java.util.Calendar;import java.util.TimeZone;import android.app.Activity;import android.app.AlertDialog;import android.app.DatePickerDialog;import android.app.Dialog;import android.app.TimePickerDialog;import android.content.ComponentName;import android.content.DialogInterface;import android.content.Intent;import android.content.SharedPreferences.Editor;import android.content.pm.ActivityInfo;import android.database.Cursor;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.DatePicker;import android.widget.EditText;import android.widget.SimpleCursorAdapter;import android.widget.Spinner;import android.widget.TextView;import android.widget.TimePicker;import android.widget.Toast;public class Frm_Addbills extends Activity implements OnClickListener {EditText edittext_acctitem,EditTextDESC,Fee;TextView mDate;TextView mTime;static final int RG_REQUEST = 0;private int mYear; private int mMonth; private int mDay; private int mHour; private int mMinute; Spinner s1; Button BtnDate,BtnTime; Button BtnCancel,BtnSave; BilldbHelper billdb; int acctitemid=-1;public void onCreate(Bundle icicle) {super.onCreate(icicle);setTitle("ColaBox-添加账单");setContentView(R.layout.frm_addbills);edittext_acctitem = (EditText)findViewById(R.id.edittext_acctitem);edittext_acctitem.setOnClickListener(this);EditTextDESC=(EditText)findViewById(R.id.EditTextDESC);Fee=(EditText)findViewById(R.id.Fee);BtnDate=(Button)findViewById(R.id.BtnDate);BtnDate.setOnClickListener(this);BtnTime=(Button)findViewById(R.id.BtnTime);BtnTime.setOnClickListener(this);BtnCancel=(Button)findViewById(R.id.BtnCancel);BtnCancel.setOnClickListener(this);BtnSave=(Button)findViewById(R.id.BtnSave);BtnSave.setOnClickListener(this);mDate = (TextView) findViewById(R.id.vdate); mTime = (TextView) findViewById(R.id.vtime);//Calendar c=Calendar.getInstance(Locale.CHINA);initTime(); setDatetime(); billdb = new BilldbHelper(this); s1=(Spinner) findViewById(R.id.Spinner01); String[] from= new String[]{"caption"}; int[] to=new int[]{android.R.id.text1}; Cursor cur=billdb.getUserid(); SimpleCursorAdapter mAdapter=new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item, cur,from, to); mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); s1.setAdapter(mAdapter); //getBillsTotal}public boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);menu.add(0, 1, 0, "账目明细").setIcon(R.drawable.editbills);//menu.add(0, 2, 0, "账目统计").setIcon(R.drawable.editbills2);//menu.add(0, 3, 0, "账目报表").setIcon(R.drawable.billsum1);menu.add(0, 4, 0, "退 出").setIcon(R.drawable.quit);menu.add(0, 5, 0, "关于ColaBox");return true;}public void onClick(View v) {if (v.equals(edittext_acctitem)) {Log.v("ColaBox", "cmd=edittext_acctitem");//testEditor sharedata = getSharedPreferences("data", 0).edit();sharedata.putString("item","hello getSharedPreferences");sharedata.commit();Intent intent = new Intent();intent.setClass(Frm_Addbills.this, Frm_Editacctitem.class);startActivityForResult(intent, RG_REQUEST);} else if (v.equals(BtnTime)){showDialog(1);} else if (v.equals(BtnDate)){showDialog(2);} else if (v.equals(BtnCancel)){cancel();} else if (v.equals(BtnSave)){save();}}public boolean onOptionsItemSelected(MenuItem item) {//Log.v("ColaBox", "getmenuitemid=" + item.getItemId());switch (item.getItemId()) {case 1:Intent intent = new Intent();//intent.setClass(Frm_Addbills.this, Grid_bills.class);intent.setClassName(Frm_Addbills.this,"com.cola.ui.Grid_bills");;startActivity(intent);return true;case 2:int nOrientation = getRequestedOrientation(); if (nOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); else setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); return true;case 3: Intent i = new Intent(); i.setClass(Frm_Addbills.this, LocalService.class); ComponentName compName = startService(i); if (compName == null) { Log.e("main_Service", "startService() failed!"); } //startService(new Intent(Frm_Addbills.this,mainService.class));return true;case 4:QuitApp();return true;case 5: new AlertDialog.Builder(this) .setTitle("ColaBox") .setMessage("作者:UntosiL Email:untosil@gmail.com Blog:blog.csdn.net/untosil") .show();return true;}return false;} public void QuitApp() {new AlertDialog.Builder(Frm_Addbills.this).setTitle("提示").setMessage("确定退出?").setIcon(R.drawable.quit).setPositiveButton("确定",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {billdb.close();finish();}}).setNegativeButton("取消",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int whichButton) {}}).show();}protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == RG_REQUEST) {if (resultCode == RESULT_CANCELED) {// setTitle("Canceled...");} else if (resultCode == RESULT_OK) {// setTitle((String)data.getCharSequenceExtra("DataKey"));edittext_acctitem.setText((String) data.getCharSequenceExtra("name"));acctitemid=Integer.parseInt((String)data.getCharSequenceExtra("id"));Log.v("cola","get acctitemid="+acctitemid);}}}private void cancel(){Log.v("cola","u put cancel btn");edittext_acctitem.setText("");Fee.setText("");acctitemid=-1;initTime();setDatetime();EditTextDESC.setText("");}private void save(){Log.v("cola","u put save btn");if (acctitemid==-1){new AlertDialog.Builder(this) .setMessage("请首先选择账目.") .show();return;}int fee=0;String s=Fee.getText().toString();int pos=s.indexOf(".");//Log.v("cola","i="+(s.length()-pos));if (pos>0){if (s.length()-pos<3){s=s+"0";}fee=Integer.parseInt(s.substring(0,pos)+s.substring(pos+1,pos+3));}else{ fee=Integer.parseInt(s)*100;}Log.v("cola","u put save btn");if (billdb.Bills_save(acctitemid,fee,(int)s1.getSelectedItemId(), ((TextView)mDate).getText().toString(), ((TextView)mTime).getText().toString(),EditTextDESC.getText().toString())){Toast.makeText(this, "保存成功.", Toast.LENGTH_SHORT).show(); cancel();}else{Toast.makeText(this, "保存失败,请检查数据.", Toast.LENGTH_SHORT).show(); }} public boolean onKeyDown(int keyCode, KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_BACK:QuitApp();return true;}return false;}private void initTime(){Calendar c = Calendar. getInstance(TimeZone.getTimeZone("GMT+08:00"));mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH)+1; mDay = c.get(Calendar.DAY_OF_MONTH); mHour = c.get(Calendar.HOUR_OF_DAY); mMinute = c.get(Calendar.MINUTE);}private void setDatetime(){mDate.setText(mYear+"-"+mMonth+"-"+mDay); mTime.setText(pad(mHour)+":"+pad(mMinute));}@Override protected Dialog onCreateDialog(int id) { switch (id) { case 1: return new TimePickerDialog(this, mTimeSetListener, mHour, mMinute, false); case 2: return new DatePickerDialog(this, mDateSetListener, mYear, mMonth-1, mDay); } return null; } @Override protected void onPrepareDialog(int id, Dialog dialog) { switch (id) { case 1: ((TimePickerDialog) dialog).updateTime(mHour, mMinute); break; case 2: ((DatePickerDialog) dialog).updateDate(mYear, mMonth-1, mDay); break; } } private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear+1; mDay = dayOfMonth; setDatetime(); } }; private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { mHour = hourOfDay; mMinute = minute; setDatetime(); } }; private static String pad(int c) { if (c >= 10) return String.valueOf(c); else return "0" + String.valueOf(c); } }
0 0
- 简易记账app
- 简易记账app——布局
- <OnlyBill> 简易记账软件(续)
- 一个记账易app开发
- Web App之记账本
- 简易记账for Android版本简介
- 简易记账开发笔记之GridLayout
- 简易的记账软件设计与实现
- 一次移动记账App的设计探索
- 记账
- 记账
- 简易记账开发笔记之Fragment(前传)
- 简易记账开发笔记之Fragment(后续)
- Vue2.0 + Element-UI + WebAPI实践:简易个人记账系统
- ListView在工程中的详细应用(简易记账本)
- 第一个简易App
- 简易android手电筒app
- 简易发送短信app
- 【51nod】1134 最长递增子序列
- Android开发中的多线程
- 正则表达式笔记(java编程思想)
- 静态路由的设置以及缺省路由的发布
- poj 2299 c++:Ultra-QuickSort
- 简易记账app
- Android动画-Frame Animation(帧动画)
- Ubuntu 16.04安装有道词典的方法
- 51Nod 1418 放球游戏
- C#/JS 利用正则表达式 替换/删除 img 里面的 width height
- acm字母小游戏
- 绑定socket到指定网卡
- 判断浏览器版本
- Pandas下的DataFrame的数据选择、切片