个人记账本---

上传人:每**** 文档编号:57354606 上传时间:2022-02-23 格式:DOC 页数:42 大小:2.70MB
返回 下载 相关 举报
个人记账本---_第1页
第1页 / 共42页
个人记账本---_第2页
第2页 / 共42页
个人记账本---_第3页
第3页 / 共42页
点击查看更多>>
资源描述
推荐精选前 言 手机自诞生以来不过数十年光景,但其商用及其更新换代的速度却让人难以置信,在谷歌 Android 大潮席卷市场,苹果 iOS 系统风靡全球的现在,以往对于虚拟现实、增强现实、高速无线网络、更绚丽的屏幕、更强悍的图形芯片以及多核处理器的畅想早已不再遥远,完全集成在一部小小的智能设备当中。在移动互联网大潮的侵袭下,想必未来的智能手机市场还将掀起一场智能化的革命。手机行业快速的变化需求对手机设计行业提出了更新的要求。智能手机的已经融入我们的生活当中,社交我们有 QQ、微信;影音我们有百度影音、优酷、土豆;金融我们有支付宝、微信支付;网购我们有淘宝、京东,各色各样应用占满了手机存储空间。李嘉诚说过,“30 岁以后,投资理财的重要性逐渐提升,中年时赚多少钱已经不重要,反而是如何管钱比较重要。”如今,随着生活水平的提高,个人投资理财在当今社会变得越来越重要。很多人没有记账的习惯,就会导致钱花完了到头来却不知道花在了什么地方。而使用记账 APP,虽然不能帮我们省钱,却能让我们知道自己的钱花在了什么地方。久而久之,就会对自己的消费情况有个了解,学会更好的调配自己的资金,避免乱花钱、花冤枉钱的情况。本文着重介绍 Android 记账类应用个人记账本,它拥有记账、钱包管理、报表生成、账本分类等功能。相比于同类产品,操作简单、界面清晰、更加简单易用。推荐精选1 绪论1.1 研究背景Android 系统是基于 Linux 的智能操作系统,2007 年 11 月,Google 与 84家软件开发商、硬件制造商及电信运营商组建开发手机联盟,共同研发、改良Android 系统。随后 Google 以 Apache 开源许可证的授权方式,发布了 Android的源代码,也就是说 Android 系统是完整公开并且免费的,Android 系统的快速发展,也与它的公开免费不无关系。随着 Android 系统的迅猛发展,它已成为全球范围内具有广泛影响力的操作系统。它不仅仅是一款手机操作系统,它还广泛的被应用于平板电脑、电视、数码相机、可佩戴设备,这也造就了目前 Android 开发人才需求的快速增长。从 2007 年 11 月 5 日谷歌公司正式向外界展示了这款名为 Android 的操作系统至今,Android 已经经历了多个版本的更新,如今 Android 7.0 的相关新闻也层出不穷,这意味着新版本即将到来。1.2 主要技术1.2.1 Eclipse 集成开发环境Eclipse 是著名的跨平台的自由集成开发环境(IDE)。最初主要用来 Java语言开发,通过安装不同的插件,Eclipse 可以支持不同的计算机语言,比如Python 和 C+。Eclipse 本身只是一个框架平台,但是有了众多插件的支持,使得 Eclipse 具有很高的灵活性,许多软件开发商都以 Eclipse 为框架开发自己的 IDE。Eclipse 的插件机制是轻型软件组件化架构。Eclipse 所有的附加功能都是由插件提供的,例如支持 Java 以外的其他语言。已有的分离的插件已经能够支持 Ruby、Python、Perl、C/C+、telnet 和数据库开发。插件架构能够支持将任意的扩展加入到现有环境中,而决不仅仅限于支持各种编程语言。Eclipse 的设计思想是:一切皆插件。Eclipse 核心很小,其它所有功能都以插件的形式附加于 Eclipse 核心之上。推荐精选1.2.2 Android 技术Android 是基于 Linux 的自由且开放源代码的操作系统,主要用于便携设备,如平板电脑、智能手机。其系统架构采用了分层的架构,从底层到高层分别是 Linux 内核层、系统运行库层、应用程序框架层和应用程序层。Android 开发四大组件分别是:活动(Activity): 用于表现功能。服务(Service): 后台运行服务,不提供界面呈现。内容提供商(Content Provider): 支持在多个应用中存储和读取数据,相当于数据库。广播接收器(BroadcastReceiver):用于接收广播。1.2.3 SQLiteSQLite 是一款轻型的、遵守 ACID 的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经有许多嵌入式产品在使用它,在嵌入式设备有限的资源中,它仅需几百 K 的内存空间。它支持 Windows/Linux/Unix 等主流操作系统,同时还能够跟很多主流的程序语言相结合,比如 Java 、C#、PHP 等,还有 ODBC 接口。比起 PostgreSQL、Mysql 这样的著名数据库管理系统来讲,它的处理速度毫不逊色。1.3 论文的主要研究内容本课题将实现一个 Android 平台的记账应用,它为手机用户提供了丰富的功能,便于管理生活中一些理财的问题。具体的研究内容如下:(1)介绍实现系统的主要技术,包括 Android 技术、SQLite 数据库。(2)使用 Android 技术开发记账软件。(3)分模块实现该软件的每个子模块和 UI 交互。1.4 本章小结 本章简要介绍了本次课题研究中应用的主要技术以及开发工具,也就是为什么要选择它们的原因。其中包括开发所使用的 Android 技术以及用于建立数据库的 SQLite 数据库管理系统,在接下来的开发中均会使用到这些技术与工具。推荐精选推荐精选2 分析与设计2.1 需求分析在软件生命周期中,其他阶段都是面向软件技术方面的,只有本阶段是面向用户的。需求分析是对用户的业务活动进行分析的,以便确定在用户的业务环境中软件系统需要“做什么”。软件需求包括两部分:功能性需求和非功能性需求。虽然功能性需求是对软件系统的一项基本需求,但却并不是唯一的需求。除功能性需求外,软件质量属性的特性,称为系统的非功能性需求。这些特性包括:系统的易用性、执行速度、可靠性,处理异常情况的能力与方式等。在决定系统的成功或失败的因素中,满足非功能性需求往往比满足功能性需求更为重要。有研究表明,客户对系统的不满意很多因素是因为设计者没有与客户进行良好的沟通而造成的,所以编写需求分析报告要求无歧义性、完整性 、可验证性 、一致性 、可追踪性 、运行和维护阶段的可使用性 。下面是在我们经过调研后得出的客户需求: (1)明细界面:显示当前年、月、周、日的收支情况,提供“流水明细”“记一笔”按钮进入对应的功能模块。 (2)钱包界面:管理用户的账户,如现金、支付宝、借记卡、信用卡,查询剩余金额,还可进行转账功能。 (3)报表界面:按时间、分类型地对用户的收支情况进行统计分析。 (4)更多界面:可以设置软件密码,只有密码正确了才能进入该系统,否则无法操作账本内的数据,还有清空数据的功能。推荐精选2.2 系统整体设计根据以上的分析,该软件可按功能集合进行划分,整体结构如图 2-1 所示:明细钱包报表更多个人记账本月收支日收支周收支年收支记一笔流水明细钱包管理转账添加账户显示总余额类型搜索时间搜索设置密码清空数据推荐精选图 2-1 系统结构图2.3 数据库设计2.3.1 账本数据库根据系统设计的分析,本系统需要钱包管理、账本管理、成员管理、收支类型管理、收支明细管理、密码管理这 6 张表。账户管理表,需要记录账户名称以及余额。表 2-1 钱包管理数据表属性属性数据类型数据类型说明说明idINTEGER自动增加的主键acountTEXT账户名称balanceREAL余额表 2-2 账本管理数据表属性属性数据类型数据类型说明说明idINTEGER自动增加的主键booksTEXT账本名称表 2-3 成员管理数据表属性属性数据类型数据类型说明说明idINTEGER自动增加的主键memberTEXT成员名称表 2-4 收支类型数据表属性属性数据类型数据类型说明说明idINTEGER自动增加的主键typeINTEGER类型名称books_idINTEGER所属的账本 IDin_outTEXT属于支出(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 本章小结 本章首先对系统进行了需求分析,将客户端分为四个大模块来进行管理,分别是明细、钱包、报表、更多。从四大模块入手,再到各个小功能,逐一实现。同时根据各功能模块的需求,分析哪些数据是需要存储的,从而对数据库进行初步的设计。推荐精选推荐精选3 系统的实现3.1 系统功能模块实现MainActivity 作为整个程序的入口,采用 Fragment 来管理明细、钱包、报表,更多四个模块,同时将已经建立好的数据库文件导入,以供存储查询使用。3.1.1 明细模块根据上面的分析,在明细界面需要显示年、月、周、日的收支情况,以及需要提供切换账本、记一笔、查看流水明细三个按钮。(1)显示收支情况:当 APP 启动的时候,默认进入明细界面,此时需要去查询收支情况,如下代码是查询月收入的语句:dbHelper.queryMonth(DateUtils.ParseDateToString(calendar.getTime(), yyyy-MM), 1, booksId) 其中 DateUtils 的 ParseDateToString 是将 Date 类型的日期转化为指定格式的 String 类型,因为 queryMonth 方法的日期参数(即第一个参数)类型被定义为 String 类型,所以需要统一。第二个参数则是代表收支,“1”为收入,“2”为支出。第三个参数是账本 ID。使用这个方法,就查询不同账本在不同月份的收支情况了。其他的年收支、周收支、日收支与此相似,不再赘述。(2)切换账本:我们实现了一个自定义的弹窗类 AlertDialogText,它可以帮助我们显示想要的展示的内容。首先,需要查询数据库中有多少本账本可以给用户选择,于是,我们执行了数据库查询:booksList = dbHelper.queryBooksList(); queryBooksList 方法将查询到的数据赋值给了 booksList,然后设置Adapter,Adapter 规定了每一个 item 的样式:adapterBooks = new QuickAdapter(getActivity(), R.layout.item_text_view) protected void 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()Overridepublic 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)记一笔:记一笔是系统中一个重要的功能,无论是想要记录收入状况还是支出状况都可以在此完成。可以设置时间、收入或支出、金额、钱包、成员、类型,对于成员和类型,系统默认提供一些标签,如果用户觉得没有合适的,还可以添加自定义标签。类型选择、添加、删除等操作,使用了一个 GridView 直接展示在界面底部,而非前面使用到的弹出窗口,首先查询所有类型,再为设置好每一行的样式,然后为 GridView 设置 Adapter,设置点击事件与长按监听事件,点击的时候即推荐精选选中当前类型,按住 item 的时候会弹出删除确认窗口:推荐精选typeList = dbHelper.queryTypeList(newDetail.books_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);gridView.setOnItemLongClickListener(itemLongClickListener);以下是删除功能实现代码,先弹出一个窗口询问用户是否确认要删除,避免误操作造成了不必要的损失,当用户点击确认按钮即确认要删除当前数据,执行后给出成功或失败的提示,告诉用户结果:private OnItemLongClickListener itemLongClickListener = new OnItemLongClickListener() Overridepublic boolean onItemLongClick(AdapterView parent, View view, 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() Override推荐精选public void onClick(View v) 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();elseToast.makeText(AddDetailActivity.this, 类型删除失败, Toast.LENGTH_LONG).show(););return true; ;接下来是添加自定义标签的代码,只需要获取用户输入的名称,并且添加到数据库就可以了,当然,还需要输入内容不能空,添加成功后还要刷新Adapter:if (typeList.indexOf(adapterType.getItem(i) = typeList.size() - 1) alertDialogText = new AlertDialogText(AddDetailActivity.this, 添加类型, );alertDialogText.setEditTextMsg(, 10);alertDialogText.setButtonConfirm(确定, new OnClickListener() Override推荐精选public 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(), 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)流水明细:该界面显示了用户的所有记录,可以按时间查询,使用ListView 展示,如果发现某条记录写错了,也可进行删除,重新记录。3.1.2 钱包模块在这个界面所要展示的则是一个账户列表,其中显示账户名称和余额,所以使用 ListView 来作为显示的控件。第一步,查询所有账户资料:accountList = dbHelpser.queryAccountList();设置 Adapter,里面除了设置要显示的数据之外,还为每一行设置一个颜色背景,而颜色则是随机的,用 random 实现:推荐精选adapterAccount = new QuickAdapter(getActivity(), R.layout.item_account) 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.getFormatTwo(item.balance);3.1.3 报表模块报表功能实现按收支类型查询指定时间内的收支状况,给出百分比柱状图,直接展示了用户在各类型上的收支,同时也统计出所有金额总和。百分比柱状图是用 ProgressBar 来实现的。例如查询一个月内的收入报表,那么就查询出该月的所有类型的收入金额,进行统计,将某类型的金额除以总金额,得出条状图的百分比。根据账本、收入或支出、开始时间、结束时间四个条件来查询总金额:sumMoney = dbHelper.queryReportSumMoney(DetailFragment.booksId, inOut, startDate, endDate);接着设置 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_proportion, 推荐精选 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, getResources().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, 密码设置成功, Toast.LENGTH_LONG).show();dbHelper.insertPass(passFirst);finishActivity();else/ 两次输入不同则要求重新输入Toast.makeText(PasswordActivity.this, 密码设置失败, Toast.LENGTH_LONG).show();tvTip.setText(请输入 4 位密码);edPass.setText();passFirst = ;设置好密码之后,每次启动程序就需要验证了,当密码正确的时候则关闭密码验证界面,错误则给出提示,让用户重新输入:if (type.equals(check) Pass pass = dbHelper.queryPass();if (pass != null & pass.pass.equals(edPass.getText().toString() finishActivity();elseToast.makeText(PasswordActivity.this, 密码错误,请重新输入, Toast.LENGTH_LONG).show();edPass.setText(); (2)清空数据:该功能解决的问题是,当用户想初始化系统数据的时候可推荐精选以方便地解决,无需到手机系统的程序设置里面去情况数据,而且普通手机用户也不一定知道可以这么做。清空数据的实现很简单,只要把数据库数据删除就可以了:推荐精选public boolean deleteDatabase(Context context) return context.deleteDatabase(/data/data/ + context.getPackageName() + /databases/ + DBNAME);3.2 数据库访问的实现现在的主流移动设备如 iPhone、Android 等都是使用 SQLite 作为复杂数据的存储引擎,对于 Android 平台而言,系统提供了丰富的 API 来供开发人员操作 SQLite,帮助开发人员完成对数据的存取。本系统的数据库是在电脑上创建,并初始化默认数据的,所以需要把该数据库文件导入到项目中。当程序第一次运行的时候,会判断项目目录下存不存在数据库文件,如不存在,则导入到项目中,如果存在,则无需导入,以下是实现代码:InputStream is = this.context.getResources().openRawResource(DB_ID);FileOutputStream fos = new FileOutputStream(dbfile);byte buffer = new byteBUFFER_SIZE;int count = 0;while (count = is.read(buffer) 0) fos.write(buffer, 0, count);fos.close();is.close();Android 系统提供了一个管理数据库的工具类 SQLiteOpenHelper,利用该类,我们可以对数据库的创建、更新以及增删改查进行管理。通过继承SQLiteOpenHelper 可以打造我们需要的功能,利用 SQLiteDatabase 对象的rawQuery( )、insert( )、update( )、delete( )推荐精选等方法来对数据进程查询、添加、更新和删除等操作,如要查询某个账户的余额:public double queryAccountMoney(int id) double money = 0; Cursor cursor = sqlDb.rawQuery(select balance from + Account.class.getSimpleName().toLowerCase() + where id = + id, null); while (cursor.moveToNext() money = cursor.getDouble(0); cursor.close(); return money;此方法将会从 account 表查询 id 等于指定值的账户余额 balance 并返回结果,在查询结束时要记得关闭 Cursor,以防内存内漏。看完了查询功能之后,再来看插入数据的方法,以下方法是新增一条类型的数据,即自定义类型标签的时候所调用的方法:public long insertType(String type, int booksId, int inOut)ContentValues contentValues = new ContentValues(); contentValues.put(type, type); contentValues.put(in_out, inOut); contentValues.put(books_id, booksId); return sqlDb.insert(Type.class.getSimpleName().toLowerCase(), null, contentValues);还有删除与更新的方法:public int deleteMember(int id) return sqlDb.delete(Member.class.getSimpleName().toLowerCase(), 推荐精选 id = ?, new StringString.valueOf(id);public int updateAccountMoney(int id, double balacne) ContentValues values = new ContentValues(); values.put(balance, balacne); return sqlDb.update(Account.class.getSimpleName().toLowerCase(), values, id = ?, new StringString.valueOf(id);3.3 文件结构和功能3.3.1 项目结构 图 3-1 客户端文件结构表 3-1 客户端文件对应功能表包名包名文件名文件名说明说明AddDetailActivity.java添加账本记录界面DayToDayActivity.java流水明细界面com.iaccount.activityMainActivity.java程序入口推荐精选PasswordActivity.java设置密码界面TransferActivity.java转账界面BaseActivity.javaActivity 基类BaseFragment.javaFragment 基类com.iaccount.baseBaseFragmentActivity.javaFragmentActivity 基类DBHelper.java数据库操作工具类com.iaccount.dbInputDB.java导入数据库工具类AccountFragment.java钱包界面DetailFragment.java明细界面MoreFragment.java更多界面com.iaccount.fragmentReportFormFragment.java报表界面Account.java账户实体类Books.java账本实体类DayToDay.java流水明细实体类Detail.java账本记录实体类Member.java成员实体类Pass.java密码实体类Report.java报表实体类com.iaccount.modelType.java类型实体类AlertDialogText.java弹窗工具类com.iaccount.utilsAppManager.javaActivity 管理工具类推荐精选DateUtils.java日期工具类DensityUtils.java屏幕参数工具类DoubleUtils.javaDouble 工具类L.javaLog 工具类StringUtils.javaString 工具类3.4 软件界面 通过对系统的功能分析,成功将系统实现,在这给出部分运行界面: 图 3-2 明细界面 图 3-3 钱包界面推荐精选 图 3-4 报表界面 图 3-5 更多界面 图 3-6 记一笔界面 图 3-7 流水明细界面推荐精选 图 3-8 验证密码界面 图 3-9 设置、确认密码界面3.5 本章小结本章详细叙述了系统开发的过程,根据上一章的分析与设计,采用Eclipse 作为项目的开发平台,采用 SQLite 数据库。对明细、钱包、报表、密码、清空数据、转账、记一笔、流水明细等功能逐一实现。推荐精选4 系统测试4.1 首页测试打开应用程序可以看到首页显示有年、月、周、日的收支情况还有可以切换当前所属账本的功能。当前的数据是生活账本的月收入 36 元,月支出 9 元,结余 27 元,如图 4-1。点击切换账本,出现选择窗,如图 4-2,例如切换到旅游账本,可以看到,收支情况都为 0,因为我们还没添加任何记录,如图 4-3。 图 4-1 生活账本 图 4-2 选择账本推荐精选图 4-3 旅游账本4.2 记一笔测试接下来我们就来为旅游账本新增一条收入记录和支出记录,点击“记一笔”按钮,出现添加界面,默认处于收入状态,如图 4-4。时间默认为当前时间,如果要添加的记录不是当前的时间,可以点击设置,如图 4-5。接着选择钱包、成员,如图 4-6、4-7。再选择好收入的类型,我们选择公司报销,如图 4-8。最后设置金额,输入的数字可以是小数,且有合法性验证,即不能出现两个小数点,不能输入以 0 开始的非小数数字,也不能两个0 开始的数字,输入 36 元并成功保存数据,保存后会弹出一个窗口,可以选择关闭当前界面,或者选择再记一笔,则留在当前界面,如图 4-9。我们选择关闭,则回到主界面,此时可以看到,当前的旅游账本有 36 元的收入,如图 4-10。推荐精选 图 4-4 默认状态 图 4-5 选择时间 图 4-6 选择钱包账户 图 4-7 选择成员推荐精选 图 4-8 选择收入类型 图 4-9 保存成功图 4-10 保存成功之后的首页数据推荐精选在添加记录的时候,如果在成员、类型提供的默认标签找不到合适的,还可以添加自定义标签,添加的时候名称不能为空,如图 4-11。添加一个名为“家里资助”的收入类型,添加成功后则显示在列表中,如图 4-12。如果对某个标签不满意,可以按住删除,如图 4-13。 图 4-11 添加类型名称不能为空 图 4-12 添加成功推荐精选图 4-13 删除标签4.3 流水明细测试现生活账本中有 4 条记录,点击流水明细,出现了一个列表,展示了在某段时间内的收支情况,默认是显示当前月的收支情况,如图 4-14。同时也可以根据用户的需要自己选择时间段,例如我们改为从 2 月开始,可以看到列表多了一条记录,如图 4-15。如果对某条记录不满意,想要删除,只需按住该条记录,再确认删除即可。 图 4-14 三月记录 图 4-15 二月到三月记录4.4 钱包功能测试点击钱包界面,可以看到已经有了一些账户,如现金、支付宝、微信、借记卡、信用卡。其中现金账户的余额有 326 元,接下来设置支付宝的金额,点击弹出选择菜单,选择“设置金额”,如图 4-16。设置金额为 300 元,当前这里输入的金额也是不能为空的,如图 4-17。完成后即可看到支付宝账户的余额变为 300 元,总余额为 626 元,如图 4-18。推荐精选 图 4-16 选择菜单 图 4-17 设置金额图 4-18 设置成功推荐精选接着看转账功能,该功能模拟各账户之间的转账,选择转出账户与转入账户并设置好转账金额。如从现金账户转 6 元到支付宝账户,如图 4-19。转账成功后回到钱包界面即可看到金额的变化,如图 4-20。可与图 4-18 对比,看金额变化。 图 4-19 设置转账的用户与金额 图 4-20 转账成功 接下来是账户添加与删除功能,添加一个“广发银行”,添加成功后即显示在列表中,如图 4-21、4-22。如果某账户不想要了,也可以执行删除。 图 4-21 新增账户名称 图 4-22 添加成功推荐精选4.5 报表测试报表功能可以查看某段时间内的收支情况,默认查看当前月份的收入,用户可以根据自己的需要修改时间段,如图 4-23 显示了生活账本的 3 月份收入情况。图 4-24 显示了生活账本的 3 月份支出情况。把时间改为 2 月份如图 4-25。 图 4-23 三月份收入 图 4-24 三月份支出推荐精选图 4-25 二月份收入4.6 密码与清空数据测试密码设置,需要输入两次一样的密码才会成功,否则失败,重新输入,例如第一次输入密码是“1234”,第二次输入“1235”,则会提示错误,两次输入一样就成功了,以后打开 APP 就会让用户先输入密码,验证正确才能进入,如图 4-26、4-27。清空数据,点击后弹出窗口提示用户,以防误删,用户再次确认后就会清空数据库并关闭 APP 了,重启后可看到数据已经没有了,如图 4-28、4-29。推荐精选 图 4-26 第一次输入 图 4-27 第二次输入 图 4-28 提示是否要清空 图 4-29 清空后重启推荐精选结束语在学校、院系领导的安排下,我们有序地进行了为期近两个月的毕业设计,这成为了我们的大学生活最后一次作业,也承载了我们这几年来所学的知识。本次毕业设计全面锻炼了我对专业知识的驾驭能力,让我学会如何运用自己所学的知识却解决实际问题,在对待事情的态度上也变得更加严谨,并且希望把事情做得更加完美,这些都将作为课本知识之外的有效补充,为我们以后要从事的工作奠定了基础。现在的智能手机市场主要有 Andoid 与 iOS,各色各样的应用充满了应用商店,开发者们为了产品不会淹没于应用海洋中,就需要采取保持更新,增加功能,完善用户体验等等手段。在有限的时间内,将项目做到这个程度,其中可能还存在一些不足之处,还可以增加更多的功能,有待日后完善,保持更新,这样才能走得更远。推荐精选参考文献1 孙鑫编著.Servlet/JSP 深入详解:基于 Tomcat 的 Web 开发M.北京:电 子工业出版社,2008.8.2 张屹、蔡木生主编著.JAVA 核心编程技术.M.大连:大连理工大学出版社, 2010.9.3 杨丰盛著.Android 应用开发揭秘.M.北京:机械工业出版社,2010.1.4 张元亮著.Android 开发应用实战详解.M.北京:中国铁道出版社, 2011.2.5 龚永罡等著.Java 程序设计基础教程.M.北京:清华大学出版社,2009.7.6 李刚等编著.疯狂 Android 讲义.M.北京:电子工业出版社,2011.7.7 李刚编著.轻量级 Java EE 企业应用实战:Struts2+Spring3+Hibernate整 合开发(第3版)8 蒋瀚洋,李月军,庞娅娟编著. SQL Server 2005数据库管理与开发教程M. 北京:人民邮电出版社,2009.10.9 李春葆,尹为民,李蓉蓉,蒋晶珏,喻丹丹,安扬编著.数据结构教程(第 3版)M.北京:清华大学出版社,2009.3.10 谢希仁编著. 计算机网络简明教程M.北京:电子工业出版社,2007.11.推荐精选毕毕业业论论文文论文题目:论文题目:个人记账本 专专 业:业:软 件 技 术 班班 级:级:13 网编 2 班姓姓 名:名:罗 海 雄 学学 号:号:0104130647指导老师:指导老师:陶 红 丽 推荐精选广东科学技术职业学院计算机工程学院2016 年 4 月 13 日 (注:可编辑下载,若有不当之处,请指正,谢谢!)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!