个人理财小助手智能终端系统及应用开发.docx
- 文档编号:24518945
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:31
- 大小:4.75MB
个人理财小助手智能终端系统及应用开发.docx
《个人理财小助手智能终端系统及应用开发.docx》由会员分享,可在线阅读,更多相关《个人理财小助手智能终端系统及应用开发.docx(31页珍藏版)》请在冰豆网上搜索。
个人理财小助手智能终端系统及应用开发
智能终端系统及应用开发
课程设计报告
题目:
________________________
学号:
______________
班级:
______________
姓名:
______________
指导老师:
_______________
1、目的与要求
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(newOnClickListener(){//为登录按钮设置监听事件
@SuppressLint("NewApi")
@Override
publicvoidonClick(Viewarg0){
Intentintent=newIntent(Login.this,MainActivity.class);//创建Intent对象
PwdDAOpwdDAO=newPwdDAO(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以便保存、读取相关的用户信息。
跳转部分代码:
publicvoidonItemClick(AdapterView
>arg0,Viewarg1,intarg2,longarg3){
Intentintent=null;//创建Intent对象
switch(arg2){//界面跳转
case0:
intent=newIntent(MainActivity.this,AddOutaccount.class);//使用AddOutaccount窗口初始化Intent
startActivity(intent);//打开AddOutaccount
break;
case1:
intent=newIntent(MainActivity.this,Addinaccount.class);//使用AddInaccount窗口初始化Intent
startActivity(intent);//打开AddInaccount
break;
case2:
intent=newIntent(MainActivity.this,Outaccountinfo.class);//使用Outaccountinfo窗口初始化Intent
startActivity(intent);//打开Outaccountinfo
break;
case3:
intent=newIntent(MainActivity.this,Inaccountinfo.class);//使用Inaccountinfo窗口初始化Intent
startActivity(intent);//打开Inaccountinfo
break;
case4:
intent=newIntent(MainActivity.this,Showinfo.class);//使用Showinfo窗口初始化Intent
startActivity(intent);//打开Showinfo
break;
case5:
intent=newIntent(MainActivity.this,Sysset.class);//使用Sysset窗口初始化Intent
startActivity(intent);//打开Sysset
break;
case6:
intent=newIntent(MainActivity.this,Accountflag.class);//使用Accountflag窗口初始化Intent
startActivity(intent);//打开Accountflag
break;
case7:
finish();//关闭当前Activity
}
}
3:
新增支出界面:
此界面的功能是添加用户支出的信息,用户可添加的信息包括金额、时间、类别、地点、备注。
其中时间可以读取系统当前时间,更加方便。
类别提供购物、正餐、零食水果、药效、外卖、打的、其他一些选项。
这一界面总体使用LinearLayout布局,时间,金额等及其输入框使用RelativeLayout布局。
类别对应的下拉框使用Spinner。
保存按钮对应代码:
若金额不为空,点击保存按钮则保存数据,显示“【新增支出】数据添加成功”,若金额为空,则提示:
“请输入支出金额”。
btnSaveButton.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewarg0){
StringstrMoney=txtMoney.getText().toString();
if(!
strMoney.isEmpty()){//判断金额不为空
//创建OutaccountDAO对象
OutaccountDAOoutaccountDAO=newOutaccountDAO(AddOutaccount.this);
Tb_outaccounttb_outaccount=newTb_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(newOnClickListener(){
@Override
publicvoidonClick(Viewarg0){
txtMoney.setText("");//设置金额文本框为空
txtMoney.setHint("0.00");//为金额文本框设置提示
txtTime.setText("");//设置时间文本框为空
txtMoney.setHint("2011_01_01");
txtAddress.setText("");
txtMark.setText("");
spType.setSelection(0);
finish();
}
});
4:
新增收入界面:
此界面的功能是添加用户收入的信息,用户可添加的信息包括金额、时间、类别、付款方、备注。
其中时间可以读取系统当前时间。
类别提供工资、兼职、奖金、礼金、销售款、报销款等一些选项。
这一界面总体使用LinearLayout布局,时间,金额等及其输入框使用RelativeLayout布局。
类别对应的下拉框使用Spinner。
与新增支出界别类同
5:
我的支出界面:
用于用户查询支出信息,在新增支出界面添加信息后,在此界面就可以进行显示,同时也可点击进入进行修改删除操作。
这一界面主要是使用ListView控件。
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.outaccountinfo);//设置布局文件
lvinfo=(ListView)findViewById(R.id.lvoutaccountinfo);//获取布局文件中的ListView组件
ShowInfo(R.id.lvoutaccountinfo);//调用自定义方法显示支出信息
lvinfo.setOnItemClickListener(newOnItemClickListener()//为ListView添加项单击事件
{//覆写onItemClick方法
@Override
publicvoidonItemClick(AdapterView
>parent,Viewview,intposition,longid){
StringstrInfo=String.valueOf(((TextView)view).getText());//记录支出信息
Stringstrid=strInfo.substring(0,strInfo.indexOf('|'));//从支出信息中截取支出编号
Intentintent=newIntent(Outaccountinfo.this,InfoManage.class);//创建Intent对象
intent.putExtra(FLAG,newString[]{strid,strType});//设置传递数据
startActivity(intent);//执行Intent操作
}
});
}
privatevoidShowInfo(intintType){//用来根据传入的管理类型,显示相应的信息
String[]strInfos=null;//定义字符串数组,用来存储支出信息
ArrayAdapter
strType="btnoutinfo";//为strType变量赋值
OutaccountDAOoutaccountinfo=newOutaccountDAO(Outaccountinfo.this);//创建OutaccountDAO对象
//获取所有支出信息,并存储到List泛型集合中
List
strInfos=newString[listoutinfos.size()];//设置字符串数组的长度
inti=0;//定义一个开始标识
for(Tb_outaccounttb_outaccount:
listoutinfos){//遍历List泛型集合
//将支出相关信息组合成一个字符串,存储到字符串数组的相应位置
strInfos[i]=tb_outaccount.getid()+"|"+tb_outaccount.getType()+""+String.valueOf(tb_outaccount.getMoney())+"元"
+tb_outaccount.getTime();
i++;//标识加1
}
//使用字符串数组初始化ArrayAdapter对象
arrayAdapter=newArrayAdapter
lvinfo.setAdapter(arrayAdapter);//为ListView列表设置数据源
6:
我的收入界面:
用于用户查询支出信息,在新增收入界面添加信息后,在此界面就可以进行显示,同时也可点击进入进行修改删除操作。
7:
收支便签界面:
这个界面可以添加便签,记录支出、收入信息。
相当于备忘录功能。
btnflagSaveButton.setOnClickListener(newOnClickListener(){//为保存按钮设置监听事件
@Override
publicvoidonClick(Viewarg0){
StringstrFlag=txtFlag.getText().toString();//获取便签文本框的值
if(!
strFlag.isEmpty()){//判断获取的值不为空
FlagDAOflagDAO=newFlagDAO(Accountflag.this);//创建FlagDAO对象
Tb_flagtb_flag=newTb_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(newOnClickListener(){//为取消按钮设置监听事件
@Override
publicvoidonClick(Viewarg0){
txtFlag.setText("");//清空便签文本框
}
});
}
}
8:
数据管理界面:
主要用来管理支出、收入、便签信息。
当点击支出信息、收入信息、便签信息后,就会显示对应的信息,可点击进入管理界面,对信息进行修改或删除。
这一界面在顶部设三个按钮,分别显示支出信息,收入信息,便签信息。
用ListView控件来显示。
btnoutinfo.setOnClickListener(newOnClickListener(){//为支出信息按钮设置监听事件
@Override
publicvoidonClick(Viewarg0){
showInfo(R.id.btnoutinfo);//显示支出信息
}
});
btnininfo.setOnClickListener(newOnClickListener(){//为收入信息按钮设置监听事件
@Override
publicvoidonClick(Viewarg0){
showInfo(R.id.btnininfo);//显示收入信息
}
});
btnflaginfo.setOnClickListener(newOnClickListener(){//为便签信息按钮设置监听事件
@Override
publicvoidonClick(Viewarg0){
showInfo(R.id.btnflaginfo);//显示便签信息
}
});
lvinfo.setOnItemClickListener(newOnItemClickListener(){//为ListView添加项单击事件
//覆写onItemClick方法
@Override
publicvoidonItemClick(AdapterView
>parent,Viewview,intposition,longid){
StringstrInfo=String.valueOf(((TextView)view).getText());//记录单击的项信息
Stringstrid=strInfo.substring(0,strInfo.indexOf('|'));//从项信息中截取编号
Intentintent=null;//创建Intent对象
if(strType=="btnoutinfo"|strType=="btnininfo"){//判断如果是支出或者收入信息
intent=newIntent(Showinfo.this,InfoManage.class);//使用InfoManage窗口初始化Intent对象
intent.putExtra(FLAG,newString[]{strid,strType});//设置要传递的数据
}elseif(strType=="btnflaginfo"){//判断如果是便签信息
intent=newIntent(Showinfo.this,FlagManage.class);//使用FlagManage窗口初始化Intent对象
intent.putExtra(FLAG,strid);//设置要传递的数据
}
startActivity(intent);//执行Intent,打开相应的Activity
}
});
}
9:
系统设置界面:
用于用户密码的修改。
修改后下一次登录需要输入新的密码。
以下是两个按钮对应的代码。
btnSet.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewarg0){
PwdDAOpwdDAO=newPwdDAO(Sysset.this);
Tb_pwdtb_pwd=newTb_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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 个人 理财 助手 智能 终端 系统 应用 开发