个人理财小助手智能终端系统及应用开发
更新时间:2024-06-23 11:53:01 阅读量: 综合文库 文档下载
智能终端系统及应用开发
课程设计报告
题目:________________________
学 班 姓
号:______________ 级:______________ 名:______________
指导老师:_______________
一、目的与要求
1. 掌握 SQLite 数据库及其使用。
2. 熟练掌握布局及常用控件 Button、 ListView、 EditText、 TextView 等。 3. 使用 SQLite 数据库实现增加、删除、修改; 4. 使用 ListView 进行显示;
5. 增加私密性,验证成功才能进行收支管理。
二、APP结构设计
个人理财小助手主要为用户提供 5 个主要模块,包括:登录模块、收入管理模块、支出管理模块、便签管理模块、系统设置模块。对日常的开支进行随时记录,存储到本机的 SQLite数据库。
三、数据库设计
本系统是一个理财的管理系统,主要包括收入、支出的管理,所以设计数
据库表的时候,设计了密码表、收入表、支出表、便签信息表用来存储对应的信息。
密码信息表:用于用户登录时进行密码核对。
表1:密码信息表 字段名 数据类型 是否主键 描述 Password Varchar(20) 否 用户密码 支出信息表:用于记录支出信息,主要属性包括:id(编号),money(金额),time(支出时间),type(支出类别),address(支出地点),mark(备注)
表2:支出信息表 字段名 数据类型 是否主键 描述 id integer 是 编号 money decimal 否 支出金额 time Varchar(10) 否 支出时间 type Varchar(10) 否 支出类别 address Varchar(100) 否 支出地点 mark Varchar(200) 否 备注 收入信息表:用于记录收入信息,主要属性包括:id(编号),money(收入金额),time(收入时间),type(收入类别),hanlder(付款方),mark(备注)。
表3:收入信息表 字段名 数据类型 是否主键 描述 id integer 是 编号 money decimal 否 收入金额 time Varchar(10) 否 收入时间 type Varchar(10) 否 收入类别 handler Varchar(100) 否 付款方 mark Varchar(200) 否 备注 便签信息表:用于所有提醒便签信息:主要属性有,id(编号),Flag(便签信息)
表4:便签信息表 字段名 数据类型 是否主键 描述 id integer 是 编号 Flag Varchar(20) 否 便签内容
四、编码规划和代码的文件组成
系统架构图
在com.example.licai1.DAO中存放DAO公告类,负责一切对数据库的操作,包括对数据的增加,修改,删除,保存等,其中DBOpenHelper负责创建数据库和数据库表。
在com.example.licai1.model中存放数据模型公告类,对应着数据库中不同的数据库表,负责访问数据库的DAO类和程序中各模块,组件的使用。对数据库表中字段封装,主要用来存储数据。
五、分模块详细设计与实现
1:用户登录界面:用于验证用户是否合法,首次登录不需要密码,在系统设置中设置密码后,登录需输入密码。用于保护用户隐私。若密码错误,则显示“请输入正确密码”
btnlogin.setOnClickListener(new OnClickListener() {// 为登录按钮设置监听事件 @SuppressLint(\)
@Override
publicvoid onClick(View arg0) {
Intent intent = new Intent(Login.this, MainActivity.class);// 创建Intent对象 PwdDAO pwdDAO = new PwdDAO(Login.this);// 创建PwdDAO对象 // 判断是否有密码及是否输入了密码
if ((pwdDAO.getCount() == 0 || pwdDAO.find().getPassword().isEmpty()) &&txtlogin.getText().toString().isEmpty()) {
startActivity(intent);// 启动主Activity } else {
// 判断输入的密码是否与数据库中的密码一致
if (pwdDAO.find().getPassword().equals(txtlogin.getText().toString())) { startActivity(intent);// 启动主Activity } else { // 弹出信息提示
Toast.makeText(Login.this, \请输入正确的密码!\, Toast.LENGTH_SHORT).show(); txtlogin.setText(\);// 清空密码文本框 }
} }
});
2:主界面:用户登入后进入主界面,主界面包括软件的所有功能图标:新增收入,新增支出,我的收入,我的支出,收支便签,数据管理,系统设置及退
出。用户可根据需求选择对应图标。
数据传输:在于各个功能模块交互时,使用Intent传输用户的id以便保存、读取相关的用户信息。
跳转部分代码:
publicvoid onItemClick(AdapterView> arg0, View arg1, int arg2, long arg3) { Intent intent = null;// 创建Intent对象 switch (arg2) {//界面跳转 case 0:
intent = new Intent(MainActivity.this, AddOutaccount.class);// 使用AddOutaccount窗口初始化Intent
startActivity(intent);// 打开AddOutaccount break; case 1:
intent = new Intent(MainActivity.this, Addinaccount.class);// 使用AddInaccount窗口初始化Intent
startActivity(intent);// 打开AddInaccount break; case 2:
intent = new Intent(MainActivity.this, Outaccountinfo.class);// 使用Outaccountinfo窗口初始化Intent
startActivity(intent);// 打开Outaccountinfo break; case 3:
intent = new Intent(MainActivity.this, Inaccountinfo.class);// 使用Inaccountinfo窗口初始化Intent
startActivity(intent);// 打开Inaccountinfo break; case 4:
intent = new Intent(MainActivity.this, Showinfo.class);// 使用Showinfo窗口初始化Intent
startActivity(intent);// 打开Showinfo break; case 5:
intent = new Intent(MainActivity.this, Sysset.class);// 使用Sysset窗口初始化Intent startActivity(intent);// 打开Sysset break; case 6:
intent = new Intent(MainActivity.this, Accountflag.class);// 使用Accountflag窗口初始化Intent
startActivity(intent);// 打开Accountflag break; case 7:
finish();// 关闭当前Activity }
}
3:新增支出界面:此界面的功能是添加用户支出的信息,用户可添加的信息包括金额、时间、类别、地点、备注。其中时间可以读取系统当前时间,更加方便。类别提供购物、正餐、零食水果、药效、外卖、打的、其他一些选项。
这一界面总体使用LinearLayout布局,时间,金额等及其输入框使用RelativeLayout布局。类别对应的下拉框使用Spinner。
保存按钮对应代码:若金额不为空,点击保存按钮则保存数据,显示“【新增支出】数据添加成功”,若金额为空,则提示:“请输入支出金额”。
btnSaveButton.setOnClickListener(new OnClickListener(){
@Override
publicvoid onClick(View arg0){
String strMoney=txtMoney.getText().toString(); if(!strMoney.isEmpty()){//判断金额不为空
//创建OutaccountDAO对象
OutaccountDAO outaccountDAO=new OutaccountDAO(AddOutaccount.this); Tb_outaccount tb_outaccount=new Tb_outaccount(outaccountDAO.getMaxId()
+1,Double.parseDouble(strMoney),
txtTime.getText().toString(),
spType.getSelectedItem().toString(),txtAddress.getText().toString(), txtMark.getText().toString());
outaccountDAO.add(tb_outaccount);
Toast.makeText(AddOutaccount.this,\新增支出]数据添加成功!
\,Toast.LENGTH_SHORT).show();
finish();
}else{
Toast.makeText(AddOutaccount.this,\请输入支出金
额!\,Toast.LENGTH_SHORT).show();
} });
}
取消按钮对应代码:讲数据全部重置为零后退出。
btnCancelButton.setOnClickListener(new OnClickListener(){
@Override
publicvoid onClick(View arg0){
txtMoney.setText(\);//设置金额文本框为空 txtMoney.setHint(\);//为金额文本框设置提示 txtTime.setText(\);//设置时间文本框为空 txtMoney.setHint(\); txtAddress.setText(\); txtMark.setText(\); spType.setSelection(0);
finish();
} });
4:新增收入界面:此界面的功能是添加用户收入的信息,用户可添加的信息包括金额、时间、类别、付款方、备注。其中时间可以读取系统当前时间。类别提供工资、兼职、奖金、礼金、销售款、报销款等一些选项。
这一界面总体使用LinearLayout布局,时间,金额等及其输入框使用
RelativeLayout布局。类别对应的下拉框使用Spinner。与新增支出界别类同
5:我的支出界面:用于用户查询支出信息,在新增支出界面添加信息后,在此界面就可以进行显示,同时也可点击进入进行修改删除操作。
这一界面主要是使用ListView控件。
protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.outaccountinfo);// 设置布局文件
lvinfo = (ListView) findViewById(R.id.lvoutaccountinfo);// 获取布局文件中的ListView组件 ShowInfo(R.id.lvoutaccountinfo);// 调用自定义方法显示支出信息
lvinfo.setOnItemClickListener(new OnItemClickListener()// 为ListView添加项单击事件 { // 覆写onItemClick方法 @Override
publicvoid onItemClick(AdapterView> parent, View view, int position, long id) {
String strInfo = String.valueOf(((TextView) view).getText());// 记录支出信息
String strid = strInfo.substring(0, strInfo.indexOf('|'));// 从支出信息中截取支出编号 Intent intent = new Intent(Outaccountinfo.this, InfoManage.class);// 创建Intent对象 intent.putExtra(FLAG, new String[] { strid, strType });// 设置传递数据 startActivity(intent);// 执行Intent操作 } });
}
privatevoid ShowInfo(int intType) {// 用来根据传入的管理类型,显示相应的信息 String[] strInfos = null;// 定义字符串数组,用来存储支出信息 ArrayAdapter
OutaccountDAO outaccountinfo = new OutaccountDAO(Outaccountinfo.this);// 创建OutaccountDAO对象 // 获取所有支出信息,并存储到List泛型集合中
List
strInfos = new String[listoutinfos.size()];// 设置字符串数组的长度 int i = 0;// 定义一个开始标识
for (Tb_outaccount tb_outaccount : listoutinfos) {// 遍历List泛型集合 // 将支出相关信息组合成一个字符串,存储到字符串数组的相应位置
strInfos[i] = tb_outaccount.getid() + \ + tb_outaccount.getType() + \ + String.valueOf(tb_outaccount.getMoney()) + \元 \ + tb_outaccount.getTime(); i++;// 标识加1 }
// 使用字符串数组初始化ArrayAdapter对象
arrayAdapter = new ArrayAdapter
lvinfo.setAdapter(arrayAdapter);// 为ListView列表设置数据源
6:我的收入界面:用于用户查询支出信息,在新增收入界面添加信息后,在此界面就可以进行显示,同时也可点击进入进行修改删除操作。
7:收支便签界面:这个界面可以添加便签,记录支出、收入信息。相当于备忘录功能。
btnflagSaveButton.setOnClickListener(new OnClickListener() {// 为保存按钮设置监听事件 @Override
publicvoid onClick(View arg0) {
String strFlag = txtFlag.getText().toString();// 获取便签文本框的值
if (!strFlag.isEmpty()) {// 判断获取的值不为空
FlagDAO flagDAO = new FlagDAO(Accountflag.this);// 创建FlagDAO对象
Tb_flag tb_flag = new Tb_flag(flagDAO.getMaxId() + 1, strFlag);// 创建Tb_flag对象 flagDAO.add(tb_flag);// 添加便签信息 // 弹出信息提示
Toast.makeText(Accountflag.this, \〖新增便签〗数据添加成功!\, Toast.LENGTH_SHORT).show(); } else {
Toast.makeText(Accountflag.this, \请输入便签!\, Toast.LENGTH_SHORT).show(); } } });
btnflagCancelButton.setOnClickListener(new OnClickListener() {// 为取消按钮设置监听事件 @Override
publicvoid onClick(View arg0) { txtFlag.setText(\);// 清空便签文本框 } }); }
}
8:数据管理界面:主要用来管理支出、收入、便签信息。当点击支出信息、收入信息、便签信息后,就会显示对应的信息,可点击进入管理界面,对信息进行修改或删除。
这一界面在顶部设三个按钮,分别显示支出信息,收入信息,便签信息。用ListView控件来显示。
btnoutinfo.setOnClickListener(new OnClickListener() {// 为支出信息按钮设置监听事件 @Override
publicvoid onClick(View arg0) {
showInfo(R.id.btnoutinfo);// 显示支出信息 } });
btnininfo.setOnClickListener(new OnClickListener() {// 为收入信息按钮设置监听事件 @Override
publicvoid onClick(View arg0) {
showInfo(R.id.btnininfo);// 显示收入信息 } });
btnflaginfo.setOnClickListener(new OnClickListener() {// 为便签信息按钮设置监听事件 @Override
publicvoid onClick(View arg0) {
showInfo(R.id.btnflaginfo);// 显示便签信息 }
});
lvinfo.setOnItemClickListener(new OnItemClickListener() {// 为ListView添加项单击事件
// 覆写onItemClick方法 @Override
publicvoid onItemClick(AdapterView> parent, View view, int position, long id) { String strInfo = String.valueOf(((TextView) view).getText());// 记录单击的项信息 String strid = strInfo.substring(0, strInfo.indexOf('|'));// 从项信息中截取编号 Intent intent = null;// 创建Intent对象
if (strType == \ | strType == \) {// 判断如果是支出或者收入信息
intent = new Intent(Showinfo.this, InfoManage.class);// 使用InfoManage窗口初始化Intent对象 intent.putExtra(FLAG, new String[] { strid, strType });// 设置要传递的数据 } elseif (strType == \) {// 判断如果是便签信息
intent = new Intent(Showinfo.this, FlagManage.class);// 使用FlagManage窗口初始化Intent对象 intent.putExtra(FLAG, strid);// 设置要传递的数据 }
startActivity(intent);// 执行Intent,打开相应的Activity } });
}
9:系统设置界面:用于用户密码的修改。修改后下一次登录需要输入新的密码。
以下是两个按钮对应的代码。
btnSet.setOnClickListener(new OnClickListener(){
@Override
publicvoid onClick(View arg0){
PwdDAO pwdDAO=new PwdDAO(Sysset.this);
Tb_pwd tb_pwd=new Tb_pwd(txtpwd.getText().toString()); if(pwdDAO.getCount()==0){
pwdDAO.add(tb_pwd);
}else{
}
pwdDAO.update(tb_pwd);
Toast.makeText(Sysset.this, \密码设置成功!\,
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(Sysset.this, MainActivity.class);// 使用Accountflag窗口初始
化Intent
startActivity(intent);// 打开Accountflag finish();
} }
});
btnsetCancel.setOnClickListener(new OnClickListener(){ });
@Override
publicvoid onClick(View arg0){ }
txtpwd.setText(\);
txtpwd.setHint(\请输入密码\); }
六、系统运行测试与分析
支出功能测试:测试是否能成功添加支出数据,并且正常显示。在新增支出界面添加相关信息,点击保存,显示【新增支出】数据添加成功。在我的支出界面也可以查到所保存的信息。
收入功能测试:测试是否能成功添加收入数据,并且正常显示。在新增支出界面添加相关信息,点击保存,显示【新增收入】数据添加成功。在我的收入界面也可以查到所保存的信息。
便签功能测试:测试是否能成功添加便签数据,并且正常显示。在收支便签界面添加相关信息,点击保存,显示【新增便签】数据添加成功。在便签信息界面也可以查到所保存的信息。
数据修改功能测试:测试系统是否能成功修改支出,收入,便签信息,并及时显示修改后的信息。
系统设置密码修改功能测试:修改新的密码,显示密码修改成功,下次登录需使用新的密码
七、总结
这次课程设计,验证了一句话:万事开头难。每每动手做的时候总是会被难住。但是下定决心一步步来时,边学边用,还是有收获的。编程的时候也总是遇到很多bug,很多时候都用来找错误和该错误了。同时也认识到自己在很多时候不够细致。刚开始时也不会通过logcat看错误所在,一串错误不知道该如何修改。互联网帮了我很大的忙,许多问题都可以在网上找的答案,也学会了使用logcat观察错误所在及错误原因。通过这次课程设计也学到了很多东西。
正在阅读:
个人理财小助手智能终端系统及应用开发06-23
面试英语04-06
市统计局“十三五”时期年度最新总结及“十四五”工作规划08-03
存货管理专项审计的五个关键环节05-11
TED_李世默演讲稿_中英文08-08
幼师班语文考试试题04-07
这是我们永远的家园05-24
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 智能终端
- 个人理财
- 应用开发
- 助手
- 系统
- 07钻井队HSE监督岗位HSE应知应会试题
- 新视野大学英语第三版读写教程第二册Unit5翻译
- 自考英语二上册课文翻译及答案
- 工程成本规划与控制课程教案
- 中小企业板上市流程
- 物理实验管理程序设计
- 2016-2021年中国梁式起重机行业市场发展现状及投资前景预测报告
- 教学微课目录
- 汇全天顺矿业项目可行性研究报告
- 延边州留守、流动儿童情况调查报告
- 射阳县城总体规划(2008 — 2030)
- 法规与道德测试题
- 中考数学培优考前辅导训练题
- 高分作文的“万能模式” - 图文
- 西南大学《思想道德修养与法律基础》作业入答案
- 2018年最新党员思想汇报范文:促进人民生活水平提高
- 青海蓓翔新能源有限公司共和太阳能电站安装工程施工组织设计
- 网康 - 日志中心3.0 - x64安装手册 - 完整版
- 2016年3月新增公共基础80道答案解析
- java复习题 - 补充