《移动应用开发技术》
题目: 基于Android的个人生活助手
专业: 学长淘宝店530213 班级: 学长淘宝店530213
学号: 学长淘宝店530213
完成日期: 2015年 05月 28日
姓名: 学长淘宝店530213 指导教师: 学长淘宝店530213
精选文库
1需求分析
随着安卓市场的发展,手机软件更新与时俱进,手机的个人助手已不是什么有创意的软件了,而是一种实用性的软件。基于安卓的个人生活助手,实现事务的管理和收支的管理,随身随时随带,提供优质的服务。学长淘宝店
530213
1.1用户需求分析
由于用户在日常生活中,忙碌也有时对事务的遗忘,以及对收支的不明,然而这个安卓手机日常助手提供了事务管理和收支管理,用户则对日常事务或收支进行记录,查询等功能,让用户不会因遗忘应做的事务,比如,什么时间预约好客户谈生意,也不会因此造成损失;对开支的也有明确的记录,对以后生活上的开支规划,提供生活质量。
1.2功能需求分析学长淘宝店530213
根据上面的需求分析,设计安卓生活日常助手。根据以上的想法,设计出助手的功能: 1)、事务(查询,新增,删除,修改,提醒); 2)、收支(查询,新增,删除,修改); 3)、录音; 4)、音乐; 5)、日历; 6)、时钟。
— 2
精选文库
2事务管理和收支管理流程分析
— 事务管理流程图
收支管理流程图
3
精选文库
3系统结构设计学长淘宝店530213
3.1系统的总体结构功能模块设计
3.2系统静态模型设计学长淘宝店530213
根据系统需求设计7个界面类,分别是MainActivity(主界面类),Affairsmain(事务界面类),Bookmain(收支界面类),Maffairs(事务管理界面类),Mbook(收支管理界面类),Saffairs(事务查询界面类),Sbook(收支查询界面类) 确定系统的类后确定类之间的关系:
— 4
3.3主界面的功能模块设计学长淘宝店530213
— 精选文库
5
精选文库
3.3.1事务界面的功能模块设计学长淘宝店530213
— 6
—
精选文库
7
— 精选文库
8
精选文库
3.3.2收支界面的功能模块设计学长淘宝店530213
— 9
— 精选文库
10
— 精选文库
11
— 精选文库
12
精选文库
4 系统数据库模型设计学长淘宝店530213
4.1E-R图
4.1.1事务的E-R图:
4.1.2收支的E-R图:
5 功能实现学长淘宝店530213
5.1事务功能实现
5.1.1事务新增代码
public void save(View view)
{
—
13
精选文库
if(checkDate()||checkStartTime()) return;
StringBuilder result=new StringBuilder();
result.append(date.getText().toString()+\" \");
result.append(startTime.getText().toString()+\"-\"); result.append(item.getText().toString()); try {
if(this.getIntent().getStringExtra(\"flag\").equals(\"change\"))
{
int
index=getIntent().getExtras().getInt(\"position\"); String line=\"\";
StringBuilder sb=new StringBuilder();
FileInputStream in=openFileInput(\"item\"); BufferedReader br=new BufferedReader(new InputStreamReader(in));
for(int i=0;i br.readLine(); sb.append(result.toString()+\"\\n\"); while(true) { if((line=br.readLine())!=null) sb.append(line+\"\\n\"); else break; } FileOutputStream out=openFileOutput(\"item\", MODE_PRIVATE); PrintStream ps=new PrintStream(out); ps.print(sb.toString()); ps.close(); out.close(); Toast.makeText(this, \"保存完毕!\", Toast.LENGTH_LONG).show(); Intent intent=getIntent(); setResult(0x111,intent); finish(); } — 14 精选文库 else { FileOutputStream out=openFileOutput(\"item\", MODE_APPEND); PrintStream ps=new PrintStream(out); ps.println(result.toString()); ps.close(); out.close(); Toast.makeText(this, \"保存完毕!\", Toast.LENGTH_LONG).show(); Intent intent=getIntent(); setResult(0x111,intent); finish(); } } catch(Exception e) { e.printStackTrace(); } } public boolean checkDate() { if(date.getText().toString().equals(\"\")) { Toast.makeText(this, \"日期不能为空!\", Toast.LENGTH_LONG).show(); return false; } return false; } public boolean checkStartTime() { if(startTime.getText().toString().equals(\"\")) { Toast.makeText(this, \"时间不能为空!\", Toast.LENGTH_LONG).show(); return true; } return false; } 5.1.2事务查询代码 public String[] splitString(String s) { — 15 精选文库 String[] ss=new String[3]; int firstIndex=0,secondIndex=0,flag=0; char a[]=s.toCharArray(); for(int i=0;i if(flag==0) { firstIndex=i; flag=1; } else { break; } } if(a[i]=='-') { secondIndex=i; } } ss[0]=s.substring(0, firstIndex); ss[1]=s.substring(firstIndex+1, secondIndex); ss[2]=s.substring(secondIndex+1,s.length()); return ss; } 5.1.3事务删除代码 public void delete(View view) { int index=getIntent().getExtras().getInt(\"position\"); String line=\"\"; StringBuilder sb=new StringBuilder(); try { FileInputStream in=openFileInput(\"item\"); BufferedReader br=new BufferedReader(new InputStreamReader(in)); for(int i=0;i — 16 精选文库 } br.readLine(); while(true) { if((line=br.readLine())!=null) sb.append(line+\"\\n\"); else break; } FileOutputStream out=openFileOutput(\"item\", MODE_PRIVATE); PrintStream ps=new PrintStream(out); ps.print(sb.toString()); ps.close(); out.close(); Toast.makeText(this, \"删除成功!\", Toast.LENGTH_LONG).show(); Intent intent=getIntent(); setResult(0x111,intent); finish(); } catch(Exception e) { e.printStackTrace(); } } 5.1.4事务修改代码 setActivity.setText(\"修改\"); title.setText(\"事务管理\"); delete.setVisibility(View.VISIBLE); int index=getIntent().getExtras().getInt(\"position\"); // Toast.makeText(this, \"\"+index, Toast.LENGTH_LONG).show(); FileInputStream in; String line=\"\"; try { in = openFileInput(\"item\"); BufferedReader br=new BufferedReader(new InputStreamReader(in)); for(int i=0;i<=index;i++) { line=br.readLine(); } — 17 精选文库 // Toast.makeText(this, line, Toast.LENGTH_LONG).show(); String[] s=splitString(line); date.setText(s[0]); startTime.setText(s[1]); item.setText(s[2]); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 5.2收支功能实现 5.2.1收支新增代码 save.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO Auto-generated method stub String t=time.getText().toString(); String i=income.getText().toString(); String o=outcome.getText().toString(); db.execSQL(\"insert into shouru values(?,?,?)\", new String[]{t,i,o}); Toast.makeText(Mbook.this, \"保存成功\", Toast.LENGTH_SHORT).show(); 5.2.2收支查询代码 read.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO Auto-generated method stub list.setText(\"\"); Cursor cursor=db.rawQuery(\"select*from shouru\", null); while(true){ if(cursor.moveToNext()==false) — 18 精选文库 break; String t=cursor.getString(0); int i=cursor.getInt(1); int o=cursor.getInt(2); int a=i-o; String tmp=list.getText().toString(); list.setText(tmp+\"\\n\"+\"时间:\"+t+\"月份 \"+\"总收入:\"+i+\" \"+\"总支出:\"+o+\" \"+\"收支差:\"+a); } } }); read1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO Auto-generated method stub list.setText(\"\"); Cursor cursor=db.rawQuery(\"select*from shouru\", null); while(true){ if(cursor.moveToNext()==false) break; String t=cursor.getString(0); int i=cursor.getInt(1); String tmp=list.getText().toString(); list.setText(tmp+\"\\n\"+\"时间:\"+t+\"月份 \"+\"总收入:\"+i); } } }); read2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO Auto-generated method stub list.setText(\"\"); Cursor cursor=db.rawQuery(\"select*from shouru\", null); while(true){ if(cursor.moveToNext()==false) break; String t=cursor.getString(0); — 19 精选文库 int o=cursor.getInt(1); String tmp=list.getText().toString(); list.setText(tmp+\"\\n\"+\"时间:\"+t+\" 月份 \"+\"总支出:\"+o); } } }); read3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClass(Sbook.this, Bookmain.class); startActivity(intent); } }); 5.2.3收支删除代码 thing2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub String aa=thing.getText().toString(); db.execSQL(\"delete from shouru where time=?\",new String[]{aa}); Toast.makeText(Sbook.this, \"清除成功\", Toast.LENGTH_SHORT).show(); finish(); } 5.2.4收支修改代码 6 总结学长淘宝店530213 本软件还存在几个模块的功能需改进,比如在输入值的判断方面,等等;同时对安卓的一些基本内容的整体上的应用,往后在设计当中还需努力与严密性的考虑,也是为以后从事软件上测试方面减少维护与修改。 — 20 — 精选文库 21 因篇幅问题不能全部显示,请点此查看更多更全内容