初学 Android项目 {家庭理财通}

我也是一个初学Android的小白,在校大二项目希望对大家有帮助!

项目文件 项目文件中 有 密码的Model、Dao、以及创建新密码的Activity 只不过当时没有实现。小伙伴们可以在系统设置中自己练习来完善功能
所以登录时设定了初始密码
密码为 admin 小写

eclipse JDK
Android 4.3 JDK1.8

使用 Genymotion 2.12 虚拟器 来模拟 Android 手机运行 源码下载

文件树

AccountTools 为弹窗工具类 使用时直接调用即可

AccountTools.java

代码片.

package com.ds.accountsoft.tools;
import com.ds.accountsoft.model.InAccount;
import com.ds.accountsoft.model.OutAccount;import android.content.Context;
import android.view.Gravity;
import android.widget.Toast;
public class AccountTools {private Context context;public static void showToast(Context context,String text){Toast t = Toast.makeText(context, text, Toast.LENGTH_LONG);t.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.TOP, 0, 333);t.show();}/**将新Account实例*/public static OutAccount checkOut(String str_money,String str_time,String str_type,String str_address,String str_mark){OutAccount out = new OutAccount();double money = 0 ;if(str_money != null && !str_money.equals("")){try{money = Double.valueOf(str_money).doubleValue();out.setMoney(money);}catch(Exception e){out.setMoney(0);}}if(str_time != null && !str_time.equals("")){out.setTime(str_time);}else{out.setTime("");}if(str_type != null && !str_type.equals("")){out.setType(str_type);}else{out.setType("");}if(str_address != null && !str_address.equals("")){out.setAddress(str_address);}else{out.setAddress("");}if(str_mark != null && !str_mark.equals("")){out.setMark(str_mark);}else{out.setMark("");}return out;}public static InAccount checkAdd(String str_money,String str_time,String str_type,String str_payfor,String str_mark){InAccount add = new InAccount();double money = 0 ;if(str_money != null && !str_money.equals("")){try{money = Double.valueOf(str_money).doubleValue();add.setMoney(money);}catch(Exception e){add.setMoney(0);}}if(str_time != null && !str_time.equals("")){add.setTime(str_time);}else{add.setTime("");}if(str_type != null && !str_type.equals("")){add.setType(str_type);}else{add.setType("");}if(str_payfor != null && !str_payfor.equals("")){add.setPayfor(str_payfor);}else{add.setPayfor("");}if(str_mark != null && !str_mark.equals("")){add.setMark(str_mark);}else{add.setMark("");}return add;}
}

登录界面样式

需要先在strings.xml中添加所需要用到的 字段并定义一个name 以便使用 下面这是我定义的所有页面中将使用的文字

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources><string name="app_name">家庭理财通</string><string name="action_settings">Settings</string><string name="hello_world">Hello world!</string><string name="txt_pwd">请输入密码:</string><string name="edit_hint">请输入密码....</string><string name="btn_login">登录</string><string name="btn_exit">退出</string><string name="txt_out_title">新增支出</string><string name="txt_out_money">金额:</string><string name="txt_out_time">时间:</string><string name="txt_out_type">类别:</string><string name="txt_out_address">地点:</string><string name="txt_out_mark">备注:</string><string name="btn_save">保存</string><string name="btn_reset">取消</string><string name="hint_out_money">金额....</string><string name="hint_out_time">选择时间....</string><string name="hint_out_type">选择类别....</string><string name="hint_out_address">地址....</string><string name="hint_out_mark">备注....</string><string name="txt_add_title">新增收入</string><string name="txt_add_money">金    额:</string><string name="txt_add_time">时    间:</string><string name="txt_add_type">类    别:</string><string name="txt_add_payfor">付款方:</string><string name="txt_add_mark">备    注:</string><string name="hint_add_money">金额....</string><string name="hint_add_time">选择时间....</string><string name="hint_add_type">类别....</string><string name="hint_add_payfor">付款方....</string><string name="hint_add_mark">备注....</string><string name="txt_myout_title">我的支出</string><string name="txt_myadd_title">我的收入</string><!-- 数据管理 --><string name="txt_manager_title">数据管理</string><string name="btn_manager_in">我的收入</string><string name="btn_manager_out">我的支出</string><string name="txt_edit_out_title">编辑支出</string><string name="txt_edit_add_title">编辑收入</string><string name="btn_delete">删除</string><string name="btn_replace">修改</string><!-- 系统设置 --><string name="txt_password_title">系统设置</string><string name="btn_password_add">新增密码</string><string name="btn_password_update">修改密码</string><string name="txt_add_password_title">增加密码</string><string name="txt_edit_password_title">修改密码</string><string name="txt_input_password">输入密码:</string><string name="hint_input_password">请输入密码....</string><string name="txt_again_input_password">确认输入:</string><string name="hint_again_input_password">请再次输入密码....</string><string name="txt_flag_title">收支便签</string><string name="btn_flag_add">新增便签</string><string name="btn_flag_update">修改便签</string><string name="txt_add_flag_title">新增便签</string><string name="txt_update_flag_title">编辑便签</string><string name="hint_add_message">请输入便签....</string>
</resources>

account_login.xml

代码片.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" android:padding="20dp"android:background="@drawable/bgimg"><TextViewandroid:id="@+id/txt_pwd"android:text="@string/txt_pwd"android:textSize="20sp"android:layout_marginTop="20dp"android:layout_width="match_parent"android:layout_height="wrap_content"android:textStyle="bold"android:textColor="@color/steelblue"/><EditTextandroid:layout_marginTop="20dp"android:id="@+id/edit_pwd"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="@string/edit_hint"android:inputType="textPassword"android:textSize="16sp"android:layout_below="@id/txt_pwd"/><Buttonandroid:layout_marginTop="20dp"android:id="@+id/btn_login"android:text="@string/btn_login"android:layout_height="40dp"android:layout_width="match_parent"android:layout_below="@id/edit_pwd"android:layout_alignParentRight="true"/><Buttonandroid:id="@+id/btn_exit"android:text="@string/btn_exit"android:layout_height="40dp"android:layout_width="match_parent"android:layout_below="@id/btn_login"android:layout_alignParentRight="true"/>
</RelativeLayout>

passwordDao.java

DBHelper.java

DBHelper.java 是在手机中创建数据库与数据表
弊端 软件如果卸载 在重新安装数据将会消失不会保存

package com.ds.accountsoft.dao;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper{private static String DB_NAME = "db_account";private static int VERSION = 1;private static String TB_IN ="create table tb_in(_id Integer primary key autoincrement,money,time,type,payfor,mark)";private static String TB_OUT ="create table tb_out(_id Integer primary key autoincrement,money,time,type,address,mark)";private static String TB_FLAG ="create table tb_flag(_id Integer primary key autoincrement,message)";private static String TB_PWD ="create table tb_pwd(_id Integer primary key autoincrement,pwd)";public DBHelper(Context context){super(context,DB_NAME,null,VERSION);}public DBHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(TB_IN);db.execSQL(TB_OUT);db.execSQL(TB_FLAG);db.execSQL(TB_PWD);}@Overridepublic void onUpgrade(SQLiteDatabase arg0, int oldversion, int newversion) {}
}

Accout_LoginActivity.java

package com.ds.accountsoft.activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;import com.ds.accountsoft.dao.PasswordDao;
import com.ds.accountsoft.model.Password;
import com.ds.accountsoft.tools.*;
public class Accout_LoginActivity extends Activity {private Context context = Accout_LoginActivity.this;private Button btn_login,btn_exit;private TextView txt_pwd;private EditText edit_pwd;private void bindView(){btn_login = (Button)findViewById(R.id.btn_login);btn_exit = (Button)findViewById(R.id.btn_exit);txt_pwd = (TextView)findViewById(R.id.txt_pwd);edit_pwd = (EditText)findViewById(R.id.edit_pwd);btn_login.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {String pwd = edit_pwd.getText()+"";if(pwd == null || pwd.equals("")){AccountTools.showToast(context, "请输入密码!");}else{if(pwd.equals("admin")){   //设置登录密码Intent intent = new Intent(context,AccountMainActivity.class);startActivity(intent);AccountTools.showToast(context, "进入主程序");}else{AccountTools.showToast(context, "密码输入错误请从新输入");edit_pwd.setText("");}}}});btn_exit.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {finish();//退出此程序}});}protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.account_login);bindView();}
}

AndroidMainifest.xml

AndroidMainifest.xml 实现开始主页与各页面跳转

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.ds.accountsoft.activity"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="15"android:targetSdkVersion="19" /><applicationandroid:allowBackup="true"android:icon="@drawable/ico"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.ds.accountsoft.activity.Accout_LoginActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".AccountMainActivity"/><!-- 应用主界面 --><activity android:name=".AccountAddOutActivity"/><!-- 新增支出 --><activity android:name=".AccountAddInActivity"/><!-- 新增收入--><activity android:name=".AccountMyOutActivity"/><!-- 我的支出 --><activity android:name=".AccountMyAddActivity"/><!-- 我的收入 --><activity android:name=".AccountManagerActivity"/><!-- 数据管理 --><activity android:name=".AccountEditOutActivity"/><!-- 修改新增支出 --><activity android:name=".AccountEditInActivity"/><!-- 修改新增收入--><activity android:name=".AccountSystemActivity"/><!-- 系统管理 --><activity android:name=".AccountAddPassword"/><!-- 增加密码 --><activity android:name=".AccountFlagActivity"/><!-- 收支便签 --><activity android:name=".AccountAddMessageActivity"/><!-- 添加便签 --></application>
</manifest>

AccountMainActivity.java 主页显示

package com.ds.accountsoft.activity;
import com.ds.accountsoft.tools.AccountTools;import android.os.Bundle;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
public class AccountMainActivity extends Activity {private Context context = AccountMainActivity.this;private GridView gridview;private int [] images ={R.drawable.increase,R.drawable.decrease,R.drawable.easyicon,R.drawable.cance,R.drawable.data,R.drawable.settings,R.drawable.setting,R.drawable.power};private String [] names={"新增支出","新增收入","我的支出","我的收入","数据管理","系统设置","收支便签","系统退出"};private void bindView(){gridview = (GridView)findViewById(R.id.Grd_arent);BaseAdapter adapter = new BaseAdapter() {@Overridepublic View getView(int position, View arg1, ViewGroup arg2) {LinearLayout layout = new LinearLayout(context);TextView txt = new TextView(context);txt.setText(names[position]);txt.setTextSize(TypedValue.COMPLEX_UNIT_SP,14);LinearLayout.LayoutParams params =new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);txt.setLayoutParams(params);txt.setGravity(Gravity.CENTER);Drawable top = getResources().getDrawable(images[position]);top.setBounds(0, 0, 90,90);txt.setCompoundDrawables(null, top, null, null);layout.addView(txt);return layout;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic Object getItem(int arg0) {return null;}@Overridepublic int getCount() {return names.length;}};gridview.setAdapter(adapter);gridview.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int which,long arg3) {String text = "进入"+names[which]+"子界面...";switch(which){case 0: Intent out_intent = new Intent(context,AccountAddOutActivity.class);/**新增支出*/startActivity(out_intent);AccountTools.showToast(context, text);break;case 1:Intent in_intent = new Intent(context,AccountAddInActivity.class);/**新增收入*/startActivity(in_intent);AccountTools.showToast(context, text);break;case 2:Intent myout_intent = new Intent(context,AccountMyOutActivity.class);/**我的支出*/startActivity(myout_intent);AccountTools.showToast(context, text);break;case 3: Intent myin_intent = new Intent(context,AccountMyAddActivity.class);/**我的收入*/startActivity(myin_intent);AccountTools.showToast(context, text);break;case 4:Intent manager_intent = new Intent(context,AccountManagerActivity.class);/**数据管理*/startActivity(manager_intent);AccountTools.showToast(context, text);break;case 5: Intent password_intent = new Intent(context,AccountSystemActivity.class);/**系统设置*/startActivity(password_intent);AccountTools.showToast(context, text);break;case 6: Intent flag_intent = new Intent(context,AccountFlagActivity.class);/**收支便签*/startActivity(flag_intent);AccountTools.showToast(context, text);break;case 7: finish();break;}}});}protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.account_main);bindView();}
}

AccountAddOutActivity.java 新增支出

AccountMyAddActivity.java 我的收入

AccountManagerActivity.java 数据管理

AccountFlagActivity.java 收支便签

还有的页面也就不放图了因为都不尽相同

比如新增支出 与 新增收入 、我的支出与我的收入、 还有的
是在数据管理中点击简单提示进入 ,

AccountEditOutActivity(修改新增支出)是回显到像新增支出一样的页面来添加修改与删除事件
AccountEditInActivity(修改新增收入)与它相同

AccountAddPassword 增加密码事件 未与登录文本框绑定判断

系统退出

可执行APK

切记每次修改源码后执行将需要再次发送安装来更新

Android_家庭理财通
【CSDN】
https://download.csdn.net/download/qq_43466804/11615525

初学 Android项目 {家庭理财通}相关推荐

  1. android 家庭理财软件 需求分析,基于Android的家庭理财通的设计与实现.docx

    摘要:近年来,基于Android系统来开发的便携式的智能手机以惊人的速度发展开来,智能手机已经渗透到我们的生活.学习.工作的每一个角落.随着Android手机操作系统的大热,基于Android的软件也 ...

  2. android家庭理财系统毕业设计报告,毕业设计(论文)-基于Android的家庭理财通系统设计.doc...

    家庭理财通管理系统 PAGE 1 PAGE 1 摘要 本论文展示了一个面向对象.方便快捷.安全性强的家庭理财系统.本家庭理财管理系统的系统设计是基于android语言,使用eclipse作为开发平台, ...

  3. android收入管理系统,毕业设计(论文)-基于Android系统的家庭理财通软件的设计——收入管理模块.docx...

    PAGE 河北农业大学信息学院 本科毕业论文 题 目:基于Android系统的家庭理财通软件的 设计--收入管理模块 学 院: 信息科学与技术学院 专业班级: 计算机科学与技术0902班 学 号: 二 ...

  4. Eclipse开发的家庭理财通APP

    家庭理财通使用说明书 配置源程序 将程序导入到Eclipse中,并发布运行 (1)将"光盘\MR\源码\第19章\AccountMS"文件夹拷贝到Eclipse的工作空间中. (2 ...

  5. java计算机毕业设计基于ssm的基于android的家庭理财系统

    项目介绍 随着Internet的发展,人们的日常生活已经离不开网络.未来人们的生活与工作将变得越来越数字化,网络化和电子化.网上管理,它将是直接管理家庭理财系统app的最新形式.本论文是以构建家庭理财 ...

  6. 基于Android的家庭理财系统的设计与实现.rar(毕业论文设计+程序源码) android studio导入可直接打开

    基于Android的家庭理财系统的设计与实现 1 第1章绪论 3 1.1研究背景 3 1.2国内外研究分析 5 1.3研究内容 7 1.4论文结构 8 第2章相关技术综述 9 2.1 Android平 ...

  7. Android开发实例家庭理财通,基于安卓的家庭理财通

    [实例简介] 该项目总体实现了用户对于家庭理财的记账管理, 分为收入.支出.便签三大块, 每个模块都有增删改查功能,大大方便了对相关数据的管理, 该项目主要运用了SQLITE相关的技术对数据进行增删改 ...

  8. 基于Android的家庭理财系统的设计与实现.rar(毕业论文+项目源码)

    随着经济社会的快速发展,对于人们来说"理财"一词已不再陌生.人们日新月异的生活,用于社会往来.娱乐休闲和改善住房环境的财务支出增多.做好详细收支计划,能良好的管理家庭.家庭的经济收 ...

  9. 计算机毕业设计之java+ssm基于android的家庭理财系统app

    项目介绍 随着Internet的发展,人们的日常生活已经离不开网络.未来人们的生活与工作将变得越来越数字化,网络化和电子化.网上管理,它将是直接管理家庭理财系统app的最新形式.本论文是以构建家庭理财 ...

最新文章

  1. Apache Storm 实时流处理系统通信机制源码分析
  2. Vue中使用vue-croper插件实现图片上传裁剪并传到SpringBoot后台接口
  3. java字符动画思路_【轻松一刻】Java制作字符动画
  4. 网络爬虫--8.编码趣闻
  5. html5 section article
  6. vscode-JS代码段(JavaScript Snippet Pack)
  7. flex布局完整示例
  8. python画风羽及风羽定义
  9. Google浏览器插件推荐
  10. 在网站优化中怎么做好关键词密度?
  11. 设置ClickHouse默认用户default的密码
  12. 2004年9月全国计算机等级考试二级C语言笔试试题
  13. dos命令获取当前日期并格式化
  14. ubuntu18.04安装pcl库
  15. 利用pytorch实现多分类器
  16. 烂泥:利用PhotoShop自定义艺术字体
  17. 河北省 2006年导游资格考试考生须知
  18. 编译安装redis6.2.6
  19. 【智慧农业】温室大棚控制系统如何解决管理粗放问题
  20. 来一次双色球的投注吧

热门文章

  1. 2019-11-12 kk日记,使用python完成ora2pg的工作小结
  2. 最适合学生党的Python兼职攻略以及接私活经验...
  3. nc java 设置,NC57,NC63-NC2开经验总结
  4. 数据分析记录(六)--多元线性回归在SPSS中的实现(步骤及指标含义)
  5. 一款神仙接私活低代码平台,牛到不行!
  6. HTML5中多页面实现背景音乐的连续播放
  7. 禅道 my.php debug,PHP vscode+XDebug 远程断点调试服务器上的代码
  8. 追求不舒适的地方,直到整个世界都是我的家
  9. JS根据身份证号码计算年龄和性别
  10. 前端入门之(vuex源码解析三)