1、河北农业大学信息学院本科毕业论文 题 目:基于Android系统的家庭理财通软件的设计收入管理模块 摘 要基于安卓系统的家庭理财通软件收入模块是在为改变笔记本,电脑记录个人收入情况的局限性,为了适应不断发展的手机技术时代。主要是面向使用安卓智能手机一族,它能够更加迅速、直接、及时的处理个人收入情况。该软件收入部分主要内容包括填写新增收入、浏览收入信息、修改收入信息、删除收入信息。反映出个人收入情况,且系统功能操作方便、易懂,页面设计美观大方,操作简便,容易上手。在通过对人们记录收入习惯的调查与分析后,尝试采用面向 对象系统分析与设计方法,设计实现此系统模块,进行收入的增、删、查、改操作,以及对
2、SQLite进行管理。关键字 .安卓理财系统 SQLite JavaAbstract Based on android system of family financial management software module is to change the laptop, computer records of personal income limitations, in order to adapt to the continuous development of mobile technology。Mainly is to use android smartphone gens, i
3、t can more quickly and timely directly dealing with personal income.Income part of the software mainly includes to fill in additional income to browse information modify information delete revenue income.Reflect personal income, and the system function is easy to operate and easy to understand, desi
4、gn beautiful generous, simple operation, easy to get started.In through to the people, after investigation and analysis of the income used to record attempt USES the object-oriented system analysis and design method, design and realization of the system module, change operation during a revenue incr
5、ease, delete, and manage the SQLite.Keywords: Android wealth management system, SQLite, Java.目 录1.绪论11.1 前言11.2 课题研究的背景及意义11.3国内外研究的现状11.4设计的主要工作2 1.5 论文组织2.开发环境和开发技术32.1 系统介绍32.1.1 安卓系统简介32.1.2 理财软件简介32.2工具环境介绍42.2.1 开发环境的选择42.2.2 JAVA语言简介42.2.3 SQLite简介52.2.4 开发工具Eclipse简介3.需求分析73.1 设计思想73.2 可行性分析
6、73.2.1 操作可行性73.2.2 技术可行性73.2.3 经济可行性73.3 功能需求73.3.1 基本功能需求73.3.2 用户界面需求84.系统设计94.1 总体结构设计94.1.1 系统设计基础94.1.2 模块设计94.1.3 系统流程104.2 数据库设计114.2.1 数据库简介124.2.2 数据库设计原则125.系统实现125.1用户主要功能程序代码125.2主要应用界面165.2.1用户登陆界面175.2.2用户查询页面175.2.3用户收入选择模式186.结束语196.1 总结196.2 心得体会19致谢20参考文献211.绪论1.1 前言随着金融市场的迅速发展,个人理
7、财正在悄然进入人们的生活。人们在积累财富的同时,开始意识到要通过专业化的理财服务、功能强大的理财软件,利用有效的金融市场和多元化的金融工具,确保财富的保值增值和必要的风险管理。此次课题针对Android 平台下的软件开发的架构、设计和实现进行探讨,通过Android平台实现一个功能齐全的个人理财软件。相较于电脑上的理财软件,由于载体手机的便携性和高使用率,它更大限度地满足了消费者的需求,有着更广泛的受众,如年轻的白领们。他们有着较强的理财意识,又属于高收入群体,对日新月异的技术发展有着很强的接受度和可塑性。从这方面说,手机理财产品的潜在市场相当可观。1.2 课题研究的背景及意义多年来人们都使用
8、传统的人工方式记录和管理家庭或自己财务情况。这种管理和记录方式存在着不可避免的缺点,如效率太差,保密性不高等;随着科学技术的不断提高,计算机科学日益成熟,人们通过程序软件方便生活的想法也愈加强烈。 手机,作为现代生活中必不可少的工具,俨然已发展成一部多媒体终端,其重要性不言而喻;现代的时代进入高速的信息时代,人们越来越看重信息的收集与传播。手机、软件的功能要越来越强大才能满足人们的需求,功能强大也就成为广大时尚用户的个性化需求之一。 手机理财软件恰恰能满足用户的这种需求。与此同时,随着塞班系统的逐渐没落,Android引领的智能手机迅速火热,除却iphone自己的苹果系统,安卓系统作为最新的开
9、源手机操作系统,现已被大量手机厂家所采用,在不久的将来必将占据大量的市场份额。随着年轻群体对手机的依赖,传统的理财记录方式已经不能适应迅速发展的手机时代。为此,一款基于Android 手机平台的个人理财软件应运而生。1.3 国内外研究的现状家庭理财系统在国外很多地方使用已经相当的普遍,而且国外的基于安卓系统的家庭理财系统功能相当强大,比如系统里包含有股票的预测、基金的分析等等。而随着国内物价飞涨形势的影响,人们越来越意识到个人理财的必要性。同时简单原始的使用纸笔进行记录甚至计算机进行记录的方式已经不能满足人们的需求,因此,基于手机的个人理财系统成为当下最受关注的软件系统。国内如此巨大的市场需求
10、也促使了很多公司对理财系统的研究。1.4 设计的主要工作本系统包括登陆窗体的设计以及理财系统的收入部分的设计。收入部分的各个模块分别为新增收入模块、浏览收入信息模块、修改收入信息模块、删除收入信息模块。新增收入模块主要实现的功能是新增收入的基本信息,包括收入的金额以及收入的来源;浏览收入信息模块主要实现的功能是浏览近期个人收入,方便及时理财;修改收入信息模块主要实现的功能是对近期个人收入的金额以及来源进行修改;删除收入信息模块主要实现的功能是对近期个人收入的金额以及来源进行删除;1.5 论文组织论文全文共分为六章:绪论。这一章主要介绍了论文选题的引言、对课题研究的背景及意义进行了分析。 第二章
11、 开发环境和开发技术。这一章介绍了系统、系统的开发模式、开发环境等基础知识。第三章 需求分析。这一章主要介绍了系统设计思想、可行性分析、功能和性能需求。第四章 系统设计。这一章主要介绍了系统的总体结构设计和系统的数据库设计,其中数据库的设计包括了概念设计、逻辑设计和物理设计。第五章 系统实现。这一章介绍了系统的所有模块和它的功能。选取具有代表性的数据进行测试,保证系统正常运行。第六章 结束语。对系统实现过程进行了总结。2.开发环境和开发技术2.1 系统介绍系统是在一定环境中相互联系和相互作用的若干部分组成的具有某种功能的集合,一个系统内可能包含许多功能各异的子系统,这意味着系统可以具有多层结构
12、,一个系统的整体功能往往大于单个子系统的功能之和。本系统可以及时、准确、快捷的掌握每次收入的明细,能够快速的对收入情况进行增、删、查、改等操作,充分满足现代生活对手机记录收入部分的需求。2.1.1 安卓系统简介 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android的系统架构和其操作系统一样,采用了分层的架构。Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。应用程序Android会同一系列核心应用程序包一起发布,该应用程序包包括客
13、户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。应用程序框架开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。系统运行库Android 包含一些C/C+库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。2.1.2 理财软件简介理财软件,是指以财务账户为核心,以增值获利为目的,
14、以资金流动为手段,以统计分析为决策的管理软件。理财软件颇受白领青睐,不少以前家庭收支一笔糊涂账的白领,操纵理财软件实现了家庭资产设置装备摆设更合理,财政风险最小化。今朝已有多家软件公司和银行先后推出理财软件供客户下载利用,有的是互联网公司开发的中国式理财软件,家庭收支记账理财软件等,具有多账户登录等功能,有的是银行自己开辟的软件,如招行的财富账户专业版,里面囊括了账户总览、现金治理、投资治理三大板块;有的是第三方机构供给的软件,如工行、农行、民生银行等推出的第三方机构供给的理财软件,客户直接从网上银行下载,功能更壮大,不仅包含投资理财的功能,还包含记账、财政分析、联系关系账户等细枝小节的功能。
15、理财软件当然是实现资产收益最大化的好辅佐,带给用户良多实惠,但好的理财习惯才更主要。理财专家建议,理财软件用户最好在年头就拟定出昔时的收支预算表,便于每月监控自己的收进和支出比例。此外,理财记账贵在坚持,理财软件只是工具,养成理财记账的习惯最主。2.2工具环境介绍2.2.1 开发环境的选择开发与运行的环境的选择会影响到数据库设计,本系统开发与运行环境如下:l开发环境:Windows XP professionall开发工具:Eclipsel数据库管理系统:SQLLite本系统主要采用Java与SQLLite相结合的技术。利用Eclipse软件来设计系统界面,使整个系统更具有吸引力和良好的价值2
16、.2.2 Java语言简介Java编程语言的风格十分接近C、C+语言。Java是一个纯粹的面向对象的程序设计语言,它继承了 C+语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。Java不同于一般的编译执行计算机语言和解释执行计算机语言
17、。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。编辑Java源代码可以使用任何无格式的文本编辑器,在Windows操作系统上可以使用记事本(Notepad)、EditPlus等程序,在Linux平台上可使用VI工具等。2.2.3 SQLLite数据库简介SQLite是一款轻型的数据库,SQLite的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中
18、,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java 等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite数据库是D.Richard Hipp用C语言编写的开源嵌入式数据库,支持的数据库大小为2TB。它具有如下特征:1、轻量级SQLite和CS模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能。而且那个动态库的
19、尺寸也相当小。2、独立性SQLite数据库的核心引擎本身不依赖第三方软件,使用它也不需要“安装”,所以在使用的时候能够省去不少麻烦。3、隔离性SQLite数据库中的所有信息(比如表、视图、触发器)都包含在一个文件内,方便管理和维护。4、跨平台SQLite数据库支持大部分操作系统,除了我们在电脑上使用的操作系统之外,很多手机操作系统同样可以运行,比如Android、Windows Mobile、Symbian、Palm等。5、多语言接口SQLite数据库支持很多语言编程接口,比如CC+、Java、Python、dotNet、Ruby、Perl等,得到更多开发者的喜爱。6、安全性SQLite数据库
20、通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写操作之前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。2.2.4 开发工具Eclipse简介 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。作为一种开源软件,其发展得到了全世界软件开发厂商和技术爱好者的支持,其版本一直都在不断的升级之中,各种开发功能也在被不断的整合到Eclipse之上。而且,许多软件开发商都是在以Eclipse为框架开发自己的IDE,如比较流行的IDE Apatna。但Ecli
21、pse 不限于当作 Java IDE 来使用。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。 作为一种流行的开源软件,其设计的初衷便是高效的开发出Java程序。在其实现中同样高效的支持Java Web项目的开发,能够完成Web项目工程的自动
22、构建,部署和开发。其强大的语言提示功能和代码分类显示功能,极大的提高了软件开发人员的程序开发效率。3.需求分析3.1 设计思想第一步就是需要利用SQLite建立所需要的数据库,第二步就使用Java语言该系统客户端应用程序的开发。3.2 可行性分析可行性分析是系统分析阶段的第二项活动,它的主要目是进一步明确系统的目标、规模与功能,对系统开发背景、必要性和意义进行了调查分析并根据需要和可能提出开发系统的初步方案与计划。可行性分析是对系统进行全面、概要的分析。通过调查分析,本系统设计主要有以下三个可行性:3.2.1 操作可行性本系统操作简单,易于理解,只需通过简单指导,上手较快,运行环境要求低。3.
23、2.2 技术可行性本课题采用Java语言进行开发,提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制。同时Java语言支持全动态绑定,它的强类型机制、异常处理、垃圾的自动收集以及安全检查机制使其程序具有健壮性。3.2.3 经济可行性本课题所使用的软件都为免费公开发行版,不需要购买。现在,计算机的价格已经十分低廉,性能却有了长足的进步。为本次开发提供了设备支持,同时几乎所有的安卓手机都可以高效的运行使用该理财系统 。3.3 功能需求按照系统开发的要求分析,并且通过对应用者的需求进行调研,要求包括软件操作简单,界面简洁大方。3.3.1
24、 基本功能需求通过系统的分析,可得出该系统的基本功能需求如下:能够对个人收入的金额以及来源进行新增、浏览、查看以及删除操作。3.3.2 用户界面需求系统界面要符合大多数人的使用习惯,界面美观、按钮得体,使用起来要方便。4.系统设计4.1 总体结构设计4.1.1 系统设计基础系统总体设计原则是需要充分考虑系统框架的合理构建理。其组织结构图如4-1所示。登陆窗体主窗体收入管理浏览收入信息新增收入删除收入信息修改收入信息图4-1系统组织结构图4.1.2 模块设计本系统是一个典型的收入管理系统,主要目标是让使用它的用户能很好地管理收入,如新增收入功能、浏览收入信息功能、修改收入信息功能、删除收入信息功
25、能。系统从总体上分为新增收入功能模块、浏览收入信息功能模块、修改收入信息模块、删除收入信息模块。每个模块有自己的作用。下面的各模块功能流图就是由各功能之间的关系而得出的。如下图4-5所示,用户添加收入的基本流程,用户输入要添加的收入信息,然后系统更新数据库,显示到信息表上:新增收入金额来源数据表数据库图4-5 用户添加收入流程浏览收入查询条件数据库输出查询结果如下图4-6所示,查询基本流程,用户输入要查询信息,然后查询并显示结果。图4-6 查询表报流程4.1.3 系统流程系统在执行过程中,按照一定的流程进行。如图4-7所示开始连接数据库连接数据库输入金额输入来源结束保存数据新增新增收入新增来源
26、图4-7 添加新信息流程图数据库连接NY开始输入查询条件是否存在显示收入信息保存数据结束查看收入流程图,如图4-8所示图4-8 查询收入流程图4.2 数据库设计4.2.1 数据库简介在系统设计过程中,数据库的设计是系统的核心和基础,把系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。数据库是长期储存在计算机内大量的有组织的,可以共享的数据的集合,这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历
27、史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。4.2.2 数据库设计原则在具体数据库设计过程中,要遵循以下原则:(1)为了增强数据库程序的可读性和可维护性,按照相应的命名原则规范对数据表、变量、存储过程、视图等进行规范化,并对具体的SQL代码编写规范化。(2)在数据表的设计中,满足每个字段必须尽量小,只能包含一个数据项目、必须完全支持主键,而且只支持主键,每条记录必须唯一等。(3)多使用存储过程实现对数据库的操作,增加访问效率及软件程序修改。(4)数据的安全性方面主要是确定用户标识及口令,对关系或数据库设置封锁,对用户授权或设置用户访问控制表。5 系统实现5.1 用户主要功能
28、程序代码(1) Login.java的部分代码:Button login, cancel;private DataBaseHelper dh;String name, password;EditText Name, Password;int flag = 1;int mflag = 1;int mflag2 = 1;大类中首先就是生命组件跟变量,android是一个组件式开发环境,以组件修改套接开发为主;public static String MD5(String str) MessageDigest md5 = null;try md5 = MessageDigest.getInstanc
29、e(MD5); catch (Exception e) e.printStackTrace();return ;char charArray = str.toCharArray();byte byteArray = new bytecharArray.length;for (int i = 0; i charArray.length; i+) byteArrayi = (byte) charArrayi;byte md5Bytes = md5.digest(byteArray);StringBuffer hexValue = new StringBuffer();for (int i = 0;
30、 i md5Bytes.length; i+) int val = (int) md5Bytesi) & 0xff;if (val 16) hexValue.append(0);hexValue.append(Integer.toHexString(val);return hexValue.toString();MD5算法加密,用于对用户名密码加密保存。这么做主要是因为sqlite数据库本身安全性不高,访问权限基本等于没限制。手写一个继承SQLiteOpenHelper的数据库助手类DataBaseHelper,通过该类进行数据库连接初始化工作,通过new出来的DataBaseHelper对象
31、进行数据库操作数据库操作主要代码:SQLiteDatabase db = dh.getReadableDatabase();String columns = DataBaseHelper.ID, DataBaseHelper.NAME,DataBaseHelper.PASSWORD ;Cursor c = db.query(DataBaseHelper.TABLE_USER, columns, null,null, null, null, null);while (c.moveToNext() c.close();db.close();(2) 功能选择界面的部分代码:Button btn_ne
32、w,btn_about,btn_up,btn_help; setContentView(R.layin.main); GridView gridview = (GridView) findViewById(R.id.gridview); gridview.setAdapter(new ImageAdapter(this); gridview.setOnItemClickListener(new OnItemClickListener() 从代码可见,该界面主要实现的就是按钮功能,用来作为软件各功能实现的纽带;GridView采用一个自定义的布局填充;(3)记录中的部分代码Criteria cr
33、iteria = new Criteria();/ 对gps获取信息方式进行设置criteria.setAccuracy(Criteria.ACCURACY_FINE);/ 精度criteria.setAltitudeRequired(false);/ 是否要高度信息criteria.setBearingRequired(false);/ 是否要方位信息criteria.setgetAllowed(true);/ 是否需要产生费用criteria.setPowerRequirement(Criteria.POWER_LOW);/ 耗电量设置了首先对gps模块进行设置,因为该功能的实现要启用gp
34、s模块,获取定位信息protected void camera() Intent intent = new Intent();intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);picpath = System.currentTimeMillis() + .jpg;Uri uri = Uri.fromFile(new File(/sdcard/ + picpath);intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);startActivityForResult(intent, REQUESTCODE);调
35、用系统的照相接口,实现照片采集功能,并自动保存到内存卡上边。Toast.makeText(getApplicationContext(), 已保存完成,Toast.LENGTH_LONG).show();用Toast提示照片保存完成(4) 查询中的部分代码。 private List find()dh = new DataBaseHelper(this);SQLiteDatabase db = dh.getReadableDatabase();String columns = DataBaseHelper.IN, DataBaseHelper.TIME,DataBaseHelper.PIC,D
36、ataBaseHelper.X,DataBaseHelper.Y ;Cursor c = db.query(DataBaseHelper.TABLE_USER_IN, columns, null, null,null, null, null);List users = new ArrayList();Manager e = null;while (c.moveToNext() e = new Manager();e.setIn(c.getDouble(0);e.setTime(c.getString(1);e.setPic(c.getString(2);e.setX(c.getDouble(3
37、);e.setY(c.getDouble(4);users.add(e);c.close();db.close();return users;查询方法,查询返回一个list集合,包含数据库表内的全部数据信息(5) 新用户的部分代码:if (userpassword.equals(testpassword) SQLiteDatabase db = dh.getWritableDatabase();User user = new User(MD5(userName.getText().toString(),MD5(userpassword);ContentValues values = new C
38、ontentValues();values.put(DataBaseHelper.NAME, user.getName();values.put(DataBaseHelper.PASSWORD, user.getPassWord();db.insert(DataBaseHelper.TABLE_USER, null, values);db.close();Toast.makeText(NewUser.this, 数据插入成功,Toast.LENGTH_LONG).show(); else Toast.makeText(NewUser.this, 数据未插入成功,Toast.LENGTH_LON
39、G).show(); else Toast.makeText(NewUser.this, 两次输入的密码不一致,请重新输入,Toast.LENGTH_LONG).show();首先验证两次输入的密码是否一致,然后将用户信息插入user表,并用toast对操作结果进行提示(6) 用户修改的主要代码:SQLiteDatabase db1 = dh.getWritableDatabase();User user = new User(name, MD5(userPassword.getText().toString();ContentValues values = new ContentValues
40、();values.put(DataBaseHelper.NAME, user.getName();values.put(DataBaseHelper.PASSWORD,user.getPassWord();String whereClause = DataBaseHelper.ID + =?;String whereArgs = String.valueOf(c.getInt(0) ;db1.update(DataBaseHelper.TABLE_USER, values,whereClause, whereArgs);Toast.makeText(UserUp.this, 数据修改成功,Toast.LENGTH_LONG).show();c.close();db.close();db1.close();主要实现的是数据库的更新,对user表的用户密码进行修改(7) AndroidManifest.xml主要代码: 对应用所需要的系统权限进行设置,给予应用网络、定位、硬件操控等权限 activity android:name=UserUp android:theme=android:style/Theme.NoTitleBar.Full