《个人理财小助手智能终端系统及应用开发(共27页).docx》由会员分享,可在线阅读,更多相关《个人理财小助手智能终端系统及应用开发(共27页).docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上智能终端系统及应用开发课程设计报告题目:_学号:_班级:_姓名:_指导老师:_一、 目的与要求 1. 掌握 SQLite 数据库及其使用。 2. 熟练掌握布局及常用控件 Button、 ListView、 EditText、 TextView 等。 3. 使用 SQLite 数据库实现增加、删除、修改;4. 使用 ListView 进行显示;5. 增加私密性,验证成功才能进行收支管理。二、APP结构设计个人理财小助手主要为用户提供 5 个主要模块,包括:登录模块、收入管理模块、支出管理模块、便签管理模块、系统设置模块。对日常的开支进行随时记录,存储到本机的 SQLit
2、e数据库。三、数据库设计本系统是一个理财的管理系统,主要包括收入、支出的管理,所以设计数据库表的时候,设计了密码表、收入表、支出表、便签信息表用来存储对应的信息。密码信息表:用于用户登录时进行密码核对。表1:密码信息表字段名数据类型是否主键描述PasswordVarchar(20)否用户密码支出信息表:用于记录支出信息,主要属性包括:id(编号),money(金额),time(支出时间),type(支出类别),address(支出地点),mark(备注)表2:支出信息表字段名数据类型是否主键描述idinteger是编号moneydecimal否支出金额timeVarchar(10)否支出时间t
3、ypeVarchar(10)否支出类别addressVarchar(100)否支出地点markVarchar(200)否备注收入信息表:用于记录收入信息,主要属性包括:id(编号),money(收入金额),time(收入时间),type(收入类别),hanlder(付款方),mark(备注)。表3:收入信息表字段名数据类型是否主键描述idinteger是编号moneydecimal否收入金额timeVarchar(10)否收入时间typeVarchar(10)否收入类别handlerVarchar(100)否付款方markVarchar(200)否备注便签信息表:用于所有提醒便签信息:主要属性
4、有,id(编号),Flag(便签信息)表4:便签信息表字段名数据类型是否主键描述idinteger是编号FlagVarchar(20)否便签内容四、编码规划和代码的文件组成系统架构图在com.example.licai1.DAO中存放DAO公告类,负责一切对数据库的操作,包括对数据的增加,修改,删除,保存等,其中DBOpenHelper负责创建数据库和数据库表。在com.example.licai1.model中存放数据模型公告类,对应着数据库中不同的数据库表,负责访问数据库的DAO类和程序中各模块,组件的使用。对数据库表中字段封装,主要用来存储数据。五、分模块详细设计与实现1:用户登录界面:
5、用于验证用户是否合法,首次登录不需要密码,在系统设置中设置密码后,登录需输入密码。用于保护用户隐私。若密码错误,则显示“请输入正确密码”btnlogin.setOnClickListener(new OnClickListener() / 为登录按钮设置监听事件 SuppressLint(NewApi)Override public void onClick(View arg0) Intent intent = new Intent(Login.this, MainActivity.class);/ 创建Intent对象 PwdDAO pwdDAO = new PwdDAO(Login.thi
6、s);/ 创建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);/ 启动
7、主Activity else / 弹出信息提示 Toast.makeText(Login.this, 请输入正确的密码!, Toast.LENGTH_SHORT).show(); txtlogin.setText();/ 清空密码文本框 );2:主界面:用户登入后进入主界面,主界面包括软件的所有功能图标:新增收入,新增支出,我的收入,我的支出,收支便签,数据管理,系统设置及退出。用户可根据需求选择对应图标。数据传输:在于各个功能模块交互时,使用Intent传输用户的id以便保存、读取相关的用户信息。 跳转部分代码: public void onItemClick(AdapterView arg
8、0, 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);
9、/ 使用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);/ 使用Inaccou
10、ntinfo窗口初始化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);/
11、 打开Sysset break; case 6: intent = new Intent(MainActivity.this, Accountflag.class);/ 使用Accountflag窗口初始化Intent startActivity(intent);/ 打开Accountflag break; case 7: finish();/ 关闭当前Activity 3:新增支出界面:此界面的功能是添加用户支出的信息,用户可添加的信息包括金额、时间、类别、地点、备注。其中时间可以读取系统当前时间,更加方便。类别提供购物、正餐、零食水果、药效、外卖、打的、其他一些选项。这一界面总体使用Lin
12、earLayout布局,时间,金额等及其输入框使用RelativeLayout布局。类别对应的下拉框使用Spinner。 保存按钮对应代码:若金额不为空,点击保存按钮则保存数据,显示“【新增支出】数据添加成功”,若金额为空,则提示:“请输入支出金额”。btnSaveButton.setOnClickListener(new OnClickListener()Overridepublic void onClick(View arg0)String strMoney=txtMoney.getText().toString();if(!strMoney.isEmpty()/判断金额不为空/创建Out
13、accountDAO对象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().toSt
14、ring(); outaccountDAO.add(tb_outaccount); Toast.makeText(AddOutaccount.this,新增支出数据添加成功!,Toast.LENGTH_SHORT).show(); finish(); elseToast.makeText(AddOutaccount.this,请输入支出金额!,Toast.LENGTH_SHORT).show(););取消按钮对应代码:讲数据全部重置为零后退出。btnCancelButton.setOnClickListener(new OnClickListener()Overridepublic void
15、onClick(View arg0)txtMoney.setText();/设置金额文本框为空txtMoney.setHint(0.00);/为金额文本框设置提示txtTime.setText();/设置时间文本框为空txtMoney.setHint(2011_01_01);txtAddress.setText();txtMark.setText();spType.setSelection(0); finish(););4:新增收入界面:此界面的功能是添加用户收入的信息,用户可添加的信息包括金额、时间、类别、付款方、备注。其中时间可以读取系统当前时间。类别提供工资、兼职、奖金、礼金、销售款、报
16、销款等一些选项。这一界面总体使用LinearLayout布局,时间,金额等及其输入框使用RelativeLayout布局。类别对应的下拉框使用Spinner。与新增支出界别类同 5:我的支出界面:用于用户查询支出信息,在新增支出界面添加信息后,在此界面就可以进行显示,同时也可点击进入进行修改删除操作。这一界面主要是使用ListView控件。protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.outaccountinfo);/
17、设置布局文件 lvinfo = (ListView) findViewById(R.id.lvoutaccountinfo);/ 获取布局文件中的ListView组件 ShowInfo(R.id.lvoutaccountinfo);/ 调用自定义方法显示支出信息 lvinfo.setOnItemClickListener(new OnItemClickListener()/ 为ListView添加项单击事件 / 覆写onItemClick方法 Override public void onItemClick(AdapterView parent, View view, int position
18、, 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(
19、intent);/ 执行Intent操作 ); private void ShowInfo(int intType) / 用来根据传入的管理类型,显示相应的信息 String strInfos = null;/ 定义字符串数组,用来存储支出信息 ArrayAdapter arrayAdapter = null;/ 创建ArrayAdapter对象 strType = btnoutinfo;/ 为strType变量赋值 OutaccountDAO outaccountinfo = new OutaccountDAO(Outaccountinfo.this);/ 创建OutaccountDAO对象
20、 / 获取所有支出信息,并存储到List泛型集合中 List listoutinfos = outaccountinfo.getScrollData(0, (int) outaccountinfo.getCount(); strInfos = new Stringlistoutinfos.size();/ 设置字符串数组的长度 int i = 0;/ 定义一个开始标识 for (Tb_outaccount tb_outaccount : listoutinfos) / 遍历List泛型集合 / 将支出相关信息组合成一个字符串,存储到字符串数组的相应位置 strInfosi = tb_outac
21、count.getid() + | + tb_outaccount.getType() + + String.valueOf(tb_outaccount.getMoney() + 元 + tb_outaccount.getTime(); i+;/ 标识加1 / 使用字符串数组初始化ArrayAdapter对象 arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, strInfos); lvinfo.setAdapter(arrayAdapter);/ 为ListView列表设置数据源6:我的收入界面
22、:用于用户查询支出信息,在新增收入界面添加信息后,在此界面就可以进行显示,同时也可点击进入进行修改删除操作。7:收支便签界面:这个界面可以添加便签,记录支出、收入信息。相当于备忘录功能。btnflagSaveButton.setOnClickListener(new OnClickListener() / 为保存按钮设置监听事件 Override public void onClick(View arg0) String strFlag = txtFlag.getText().toString();/ 获取便签文本框的值 if (!strFlag.isEmpty() / 判断获取的值不为空 F
23、lagDAO 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, 请输入便签!, Toa
24、st.LENGTH_SHORT).show(); );btnflagCancelButton.setOnClickListener(new OnClickListener() / 为取消按钮设置监听事件 Override public void onClick(View arg0) txtFlag.setText();/ 清空便签文本框 ); 8:数据管理界面:主要用来管理支出、收入、便签信息。当点击支出信息、收入信息、便签信息后,就会显示对应的信息,可点击进入管理界面,对信息进行修改或删除。这一界面在顶部设三个按钮,分别显示支出信息,收入信息,便签信息。用ListView控件来显示。btno
25、utinfo.setOnClickListener(new OnClickListener() / 为支出信息按钮设置监听事件 Override public void onClick(View arg0) showInfo(R.id.btnoutinfo);/ 显示支出信息 ); btnininfo.setOnClickListener(new OnClickListener() / 为收入信息按钮设置监听事件 Override public void onClick(View arg0) showInfo(R.id.btnininfo);/ 显示收入信息 ); btnflaginfo.se
26、tOnClickListener(new OnClickListener() / 为便签信息按钮设置监听事件 Override public void onClick(View arg0) showInfo(R.id.btnflaginfo);/ 显示便签信息 );lvinfo.setOnItemClickListener(new OnItemClickListener() / 为ListView添加项单击事件 / 覆写onItemClick方法 Override public void onItemClick(AdapterView parent, View view, int positi
27、on, long id) String strInfo = String.valueOf(TextView) view).getText();/ 记录单击的项信息 String strid = strInfo.substring(0, strInfo.indexOf(|);/ 从项信息中截取编号 Intent intent = null;/ 创建Intent对象 if (strType = btnoutinfo | strType = btnininfo) / 判断如果是支出或者收入信息 intent = new Intent(Showinfo.this, InfoManage.class);
28、/ 使用InfoManage窗口初始化Intent对象 intent.putExtra(FLAG, new String strid, strType );/ 设置要传递的数据 else if (strType = btnflaginfo) / 判断如果是便签信息 intent = new Intent(Showinfo.this, FlagManage.class);/ 使用FlagManage窗口初始化Intent对象 intent.putExtra(FLAG, strid);/ 设置要传递的数据 startActivity(intent);/ 执行Intent,打开相应的Activity
29、 ); 9:系统设置界面:用于用户密码的修改。修改后下一次登录需要输入新的密码。以下是两个按钮对应的代码。btnSet.setOnClickListener(new OnClickListener()Overridepublic void 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);elsepwdDAO.update(tb_pwd);Toa
30、st.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()Overridepublic void onClick(View arg0)txtpwd.setTex
31、t();txtpwd.setHint(请输入密码););六、系统运行测试与分析支出功能测试:测试是否能成功添加支出数据,并且正常显示。在新增支出界面添加相关信息,点击保存,显示【新增支出】数据添加成功。在我的支出界面也可以查到所保存的信息。 收入功能测试:测试是否能成功添加收入数据,并且正常显示。在新增支出界面添加相关信息,点击保存,显示【新增收入】数据添加成功。在我的收入界面也可以查到所保存的信息。 便签功能测试:测试是否能成功添加便签数据,并且正常显示。在收支便签界面添加相关信息,点击保存,显示【新增便签】数据添加成功。在便签信息界面也可以查到所保存的信息。 数据修改功能测试:测试系统是否能成功修改支出,收入,便签信息,并及时显示修改后的信息。 系统设置密码修改功能测试:修改新的密码,显示密码修改成功,下次登录需使用新的密码 七、 总结 这次课程设计,验证了一句话:万事开头难。每每动手做的时候总是会被难住。但是下定决心一步步来时,边学边用,还是有收获的。编程的时候也总是遇到很多bug,很多时候都用来找错误和该错误了。同时也认识到自己在很多时候不够细致。刚开始时也不会通过logcat看错误所在,一串错误不知道该如何修改。互联网帮了我很大的忙,许多问题都可以在网上找的答案,也学会了使用logcat观察错误所在及错误原因。通过这次课程设计也学到了很多东西。专心-专注-专业
限制150内