ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:68.83KB ,
资源ID:4811907      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4811907.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(个人记账本副本.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

个人记账本副本.docx

1、个人记账本副本手机自诞生以来不过数十年光景,但其商用及其更新换代的速度却让人难以 置信,在谷歌Android大潮席卷市场,苹果iOS系统风靡全球的现在,以往对丁 虚拟现实、增强现实、高速无线网络、更绚丽的屏幕、更强悍的图形芯片以及多 核处理器的畅想早已不再遥远,完全集成在一部小小的智能设备当中。 在移动互 联网大潮的侵袭下,想必未来的智能手机市场还将掀起一场智能化的革命。手机 行业快速的变化需求对手机设计行业提出了更新的要求。智能手机的已经融入我们的生活当中,社交我们有 QQ微信;影音我们有 白度影音、优酷、土豆;金融我们有支付宝、微信支付;网购我们有淘宝、京东, 各色各样应用占满了手机存储空

2、间。李嘉诚说过,“ 30岁以后,投资理财的重要性逐渐提升,中年时赚多少钱 已经不重要,反而是如何管钱比较重要。”如今,随着生活水平的提高,个人投 资理财在当今社会变得越来越重要。 很多人没有记账的习惯,就会导致钱花完了 到头来却不知道花在了什么地方。而使用记账 APP虽然不能帮我们省钱,却能 让我们知道自己的钱花在了什么地方。 久而久之,就会对自己的消费情况有个了 解,学会更好的调配自己的资金,避免乱花钱、花冤枉钱的情况。本文着重介绍Android记账类应用个人记账本,它拥有记账、钱包管理、 报表生成、账本分类等功能。相比丁同类产品,操作简单、界面活晰、更加简单 易用。1 绪论1.1研究背景A

3、ndroid系统是基丁 Linux的智能操作系统,2007年11月,Google与84 家软件开发商、硬件制造商及电信运营商组建开发手机联盟,共同研发、改良 Android系统。随后Google以Apache开源许可证的授权方式,发布了 Android 的源代码,也就是说Android系统是完整公开并且免费的,Android系统的快速 发展,也与它的公开免费不无关系。随着Android系统的迅猛发展,它已成为全球范围内具有广泛影响力的操作 系统。它不仅仅是一款手机操作系统,它还广泛的被应用丁平板电脑、电视、数 码相机、可佩戴设备,这也造就了目前 Android开发人才需求的快速增长。从2007

4、年11月5日谷歌公司正式向外界展示了这款名为 Android的操作系 统至今,Android已经经历了多个版本的更新,如今 Android 7.0的相关新闻也 层出不穷,这意味着新版本即将到来。1.2主要技术1.2.1Eclipse集成开发环境Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java 语言开发,通过安装不同的插件,Eclipse可以支持不同的计算机语言,比如Python 和C+。Eclipse本身只是一个框架平台,但是有了众多插件的支持,使得Eclipse 具有很高的灵活性,许多软件开发商都以 Eclipse为框架开发自己的IDE。Eclipse的插件机制

5、是轻型软件组件化架构。Eclipse所有的附加功能都是由 插件提供的,例如支持Java以外的其他语言。已有的分离的插件已经能够支持 Ruby、Python、Perl、C/C+、telnet和数据库开发。插件架构能够支持将任意的 扩展加入到现有环境中,而决不仅仅限丁支持各种编程语言。Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以 插件的形式附加丁 Eclipse核心之上。1.2.2Android 技术Android是基丁 Linux的自由且开放源代码的操作系统,主要用丁便携设备, 如平板电脑、智能手机。其系统架构采用了分层的架构,从底层到高层分别是 Linux内

6、核层、系统运行库层、应用程序框架层和应用程序层。Android开发四大组件分别是:活动( Activity):用丁表现功能。服务 (Service):后台运行服务,不提供界面呈现。 内容提供商(Content Provider-): 支持在多个应用中存储和读取数据,相当丁数据库。广播接收器 (BroadcastReceiver)用丁接收广播。1.2.3SQLiteSQLite是一款轻型的、遵守ACID的关联式数据库管理系统,它的设计目标 是嵌入式的,而且目前已经有许多嵌入式产品在使用它, 在嵌入式设备有限的资源中,它仅需几白K的内存空间。它支持Windows/Linux/Unix等主流操作系统

7、, 同时还能够跟很多主流的程序语言相结合, 比如Java、C#、PHP等,还有ODBC接口。比起PostgreSQL Mysql这样的著名数据库管理系统来讲,它的处理速度 毫不逊色。1.3论文的主要研究内容本课题将实现一个Android平台的记账应用,它为手机用户提供了丰富的功 能,便丁管理生活中一些理财的问题。具体的研究内容如下:(1)介绍实现系统的主要技术,包括 Android技术、SQLite数据库。(2)使用Android技术开发记账软件。(3)分模块实现该软件的每个子模块和 UI交互。1.4本章小结本章简要介绍了本次课题研究中应用的主要技术以及开发工具, 也就是为什 么要选择它们的原

8、因。其中包括开发所使用的 Android技术以及用丁建立数据库 的SQLite数据库管理系统,在接下来的开发中均会使用到这些技术与工具。2分析与设计2.1需求分析在软件生命周期中,其他阶段都是面向软件技术方面的,只有本阶段是面向 用户的。需求分析是对用户的业务活动进行分析的, 以便确定在用户的业务环境 中软件系统需要“做什么”。软件需求包括两部分:功能性需求和非功能性需求。虽然功能性需求是对软 件系统的一项基本需求,但却并不是唯一的需求。除功能性需求外,软件质量届 性的特性,称为系统的非功能性需求。这些特性包括:系统的易用性、执行速度、 可靠性,处理异常情况的能力与方式等。在决定系统的成功或失

9、败的因素中,满 足非功能性需求往往比满足功能性需求更为重要。有研究表明,客户对系统的不满意很多因素是因为设计者没有与客户进行良 好的沟通而造成的,所以编写需求分析报告要求无歧义性、完整性 、可验证性、一致性、可追踪性、运行和维护阶段的可使用性。下面是在我们经过调研后得 出的客户需求:(1) 明细界面:显示当前年、月、周、日的收支情况,提供“流水明细” “记 一笔”按钮进入对应的功能模块。(2)钱包界面:管理用户的账户,如现金、支付宝、借记卡、信用卡,查询 剩余金额,还可进行转账功能。(3)报表界面:按时间、分类型地对用户的收支情况进行统计分析。(4)更多界面:可以设置软件密码,只有密码正确了才

10、能进入该系统,否则 无法操作账本内的数据,还有活空数据的功能。图2-1系统结构图2.3.1账本数据库根据系统设计的分析,本系统需要钱包管理、账本管理、成员管理、收支类型管理、收支明细管理、密码管理这 6张表。账户管理表,需要记录账户名称以及余额。表2-1钱包管理数据表届性数据类型说明idINTEGER自动增加的主键acountTEXT账户名称balanceREAL余额表2-2账本管理数据表届性数据类型说明idINTEGER自动增加的主键booksTEXT账本名称表2-3成员管理数据表届性数据类型说明idINTEGER自动增加的主键memberTEXT成员名称表2-4收支类型数据表届性数据类型说

11、明idINTEGER自动增加的主键type books_id in_outINTEGERINTEGERTEXT类型名称所届的账本ID届丁支出(2)或收入(1)表2-5收支明细数据表届性数据类型说明idINTEGER自动增加的主键in_outINTEGER届丁支出(2)或收入(1)type_idINTEGER类型IDmoneyREAL金额date_timeTEXT日期member_idINTEGER成员IDaccount_idINTEGER账户IDbooks_idINTEGER账本ID表2-6密码管理数据表届性数据类型说明idINTEGER自动增加的主键passTEXT密码2.4本章小结本章首先

12、对系统进行了需求分析,将客户端分为四个大模块来进行管理, 分 别是明细、钱包、报表、更多。从四大模块入手,再到各个小功能,逐一实现。 同时根据各功能模块的需求,分析哪些数据是需要存储的,从而对数据库进行初 步的设计。3系统的实现3.1系统功能模块实现MainActivity作为整个程序的入口,采用Fragment来管理明细、钱包、报表, 更多四个模块,同时将已经建立好的数据库文件导入,以供存储查询使用。3.1.1明细模块根据上面的分析,在明细界面需要显示年、月、周、日的收支情况,以及需 要提供切换账本、记一笔、查看流水明细三个按钮。(1)显示收支情况:当APP启动的时候,默认进入明细界面,此时

13、需要去 查询收支情况,如下代码是查询月收入的语句:dbHelper.queryMonth(DateUtils.ParseDateToString(calendar.getTime(),yyyy-MM), 1, booksId)其中DateUtils的ParseDateToStrin说将Date类型的日期转化为指定格式的String类型,因为queryMonth方法的日期参数(即第一个参数)类型被定义为 String类型,所以需要统一。第二个参数则是代表收支,“ 1”为收入,“2”为支出。第三个参数是账本ID。使用这个方法,就查询不同账本在不同月份的收 支情况了。其他的年收支、周收支、日收支与此

14、相似,不再赘述。(2) 切换账本:我们实现了一个自定义的弹窗类 AlertDialogText,它可以帮助我们显示想要的展示的内容。 首先,需要查询数据库中有多少本账本可以给用户选择,丁是,我们执行了数据库查询:booksList = dbHelper.queryBooksList();queryBooksList方法将查询到的数据赋值给了 booksList,然后设置Adapter, Adapter规定了每一个item的样式:adapterBooks = new QuickAdapter(getActivity(),R.layout.item_text_view) protected voi

15、d convert(BaseAdapterHelper helper, Books item) helper.setText(R.id.tv_name, item.books);接着为 adapater添加数据源:adapterBooks.addAll(booksList);Adapter已经设置完毕,可以进行展示了。我们为账本按钮添加点击事件, 在点击事件中弹出一个窗口进行展示:tvBooks.setOnClickListener(clickListener);private OnClickListener clickListener = new OnClickListener()Overr

16、idepublic void onClick(View v) switch (v.getId() case R.id.tv_books:alertDialogText = new AlertDialogText(getActivity(),选择账本”,);alertDialogText.setGoneButton();alertDialogText.setListViewAdapter(adapterBooks, itemClickListener, null);break;实现一个弹窗展示就完成了,当用户点击账本切换按钮的时候就会弹出一个 窗口,显示了当前所有账本,用户即可点击切换。(3)记

17、一笔:记一笔是系统中一个重要的功能,无论是想要记录收入状况 还是支出状况都可以在此完成。可以设置时间、收入或支出、金额、钱包、成员、 类型,对丁成员和类型,系统默认提供一些标签,如果用户觉得没有合适的,还 可以添加自定义标签。类型选择、添加、删除等操作,使用了一个 GridView直接展示在界面底部, 而非前面使用到的弹出窗口,首先查询所有类型,再为设置好每一行的样式,然 后为GridView设置Adapter,设置点击事件与长按监听事件,点击的时候即选中 当前类型,按住item的时候会弹出删除确认窗口:typeList = dbHelper.queryTypeList(newDetail.b

18、ooks_id, 1);adapterType = new QuickAdapter(this, R.layout.item_text_view) (Overrideprotected void convert(BaseAdapterHelper helper, Type item) ( helper.setText(R.id.tv_name, item.type);adapterType.addAll(typeList);gridView.setAdapter(adapterType);gridView.setOnItemClickListener(itemClickListener);gr

19、idView.setOnItemLongClickListener(itemLongClickListener);以下是删除功能实现代码,先弹出一个窗口询问用户是否确认要删除, 避免 误操作造成了不必要的损失,当用户点击确认按钮即确认要删除当前数据, 执行 后给出成功或失败的提示,告诉用户结果:private OnItemLongClickListener itemLongClickListener =new OnItemLongClickListener() (Overridepublic boolean onItemLongClick(AdapterView parent, View vi

20、ew,int position, long id) (final int pos = position;if (parent.getAdapter() = adapterType) (alertDialogText = new AlertDialogText(AddDetailActivity.this,”提示, ”是否要删除类型:+ adapterType.getItem(pos).type + );alertDialogText.setButtonConfirm(确定, new OnClickListener() (Overridepublic void onClick(View v) (

21、if (dbHelper.deleteType(adapterType.getItem(pos).id) 0) ( typeList.remove(adapterType.getItem(pos); adapterType.remove(adapterType.getItem(pos); alertDialogText.dismiss();Toast.makeText(AddDetailActivity.this,”类型删除成功,Toast.LENGTH_LONG).show();else(Toast.makeText(AddDetailActivity.this,类型删除失败, Toast.

22、LENGTH_LONG).show(););return true;接下来是添加自定义标签的代码,只需要获取用户输入的名称,并且添加到 数据库就可以了,当然,还需要输入内容不能空,添加成功后还要刷新 Adapter:if (typeList.indexOf(adapterType.getItem(i) = typeList.size() - 1) ( alertDialogText = new AlertDialogText(AddDetailActivity.this, 添加类型,); alertDialogText.setEditTextMsg(, 10);alertDialogText.

23、setButtonConfirm(确定, new OnClickListener() Overridepublic void onClick(View v) if (alertDialogText.getEditTextMsg() = null |alertDialogText.getEditTextMsg().length() = 0) Toast.makeText(AddDetailActivity.this,名称不能为空, Toast.LENGTH_LONG).show();return;dbHelper.insertType(alertDialogText.getEditTextMsg

24、(), newDetail.books_id, newDetail.in_out);typeList = dbHelper.queryTypeList(newDetail.books_id, newDetail.in_out);typeList.add(addT);adapterType.clear();adapterType.addAll(typeList);Toast.makeText(AddDetailActivity.this,类型添加成功,Toast.LENGTH_LONG).show();alertDialogText.dismiss(););return;(4)流水明细:该界面显

25、示了用户的所有记录,可以按时间查询,使用 ListView展示,如果发现某条记录写错了,也可进行删除,重新记录。3.1.2钱包模块在这个界面所要展示的则是一个账户列表, 其中显示账户名称和余额,所以使用ListView来作为显示的控件。第一步,查询所有账户资料:accountList = dbHelpser.queryAccountList();设置Adapter-,里面除了设置要显示的数据之外,还为每一行设置一个颜色 背景,而颜色则是随机的,用random实现:adapterAccount = new QuickAdapter(getActivity(),R.layout.item_acco

26、unt) Overrideprotected void convert(BaseAdapterHelper helper, Account item) helper.setBackgroundColor(R.id.layout_root, getResources() .getColor(colorsrandom.nextInt(max)%(max-min+1) + min);helper.setText(R.id.tv_account_name, + item.acount);helper.setText(R.id.tv_account_blance,学+DoubleUtils.getFor

27、matTwo(item.balance);3.1.3报表模块报表功能实现按收支类型查询指定时间内的收支状况,给出白分比柱状图, 直接展示了用户在各类型上的收支,同时也统计出所有金额总和。白分比柱状图 是用ProgressBar来实现的。例如查询一个月内的收入报表,那么就查询出该月 的所有类型的收入金额,进行统计,将某类型的金额除以总金额,得出条状图的 白分比。根据账本、收入或支出、开始时间、结束时间四个条件来查询总金额:sumMoney = dbHelper.queryReportSumMoney(DetailFragment.booksId, inOut, startDate, endDat

28、e);接着设置Adapter:adapterReport = new QuickAdapter(getActivity(),R.layout.item_report_form) Overrideprotected void convert(BaseAdapterHelper helper, Report item) helper.setText(R.id.tv_name, item.type);helper.setText(R.id.tv_money, + DoubleUtils.getFormatTwo(item.money); helper.setText(R.id.tv_proporti

29、on, DoubleUtils.getFormatOne(item.money/sumMoney) * 100) + %”);/设置条状图白分比helper.setProgress(R.id.progressBar, (int)(item.money/sumMoney) * 100);/设置文字颜色,收入为红,支出为绿if (selectPos = 0) helper.setTextColor(R.id.tv_money,getResources().getColor(R.color.rule_red_dark);elsehelper.setTextColor(R.id.tv_money, g

30、etResources().getColor(R.color.rule_green_light);3.1.4更多模块(1)设置密码:既然是一个账本,有时为了避免他人查看或操作自己的账本,就需要密码功能的存在了。 一旦打开密码功能,那么用户就需要输入正确的 密码才能进入程序的首页,才能继续才做,密码错误是无法进入的,密码设定长 度为4,当输入框的内容长度等丁 4的时候会自动结束输入,以下是设置密码功 能实现:if (type.equals(set) (if (tvTip.getText().toString().equals(请输入 4 位密码)( passFirst = edPass.getText().toString();tvTip.setText(请再次输入密码);edPass.setText();return;if (tvTip.getText().toString().equals(请再次输入密码)(if (passFirst.equals(edPass.getText().toString() (/两次密码相同,存入数据库,设置成功Toast.makeText(PasswordActivity.this,密码设置成功, Toa

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1