安卓记事本毕设说明书.docx
- 文档编号:11096699
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:35
- 大小:2.82MB
安卓记事本毕设说明书.docx
《安卓记事本毕设说明书.docx》由会员分享,可在线阅读,更多相关《安卓记事本毕设说明书.docx(35页珍藏版)》请在冰豆网上搜索。
安卓记事本毕设说明书
第一章绪论
1.1选题背景及意义
随着计算机行业的发展,智能手机在人们的生活中普及开来。
智能手机拥有的独立操作系统使得手机能像个人电脑一样支持用户自定义安装软件等程序,并通过此类操作对手机功能进行扩充,从而在更大程度上满足用户的需求,这是智能手机的优势,也是智能手机赢得市场的主要原因。
具有开放性的Android手机平台,从2007年谷歌将其正式向外界展示以来,发展迅速,手机市场份额不断攀升,至2012年已超过塞班,跃居第一[2]。
手机系统越来越强大,却始终都未放弃其一重要功能——记事本,而记事本又是手机的必备软件。
此次我们研究的基于Android的记事本,会实现记事本基本功能,包括基本添加,修改,删除和输出等功能,在实现这些功能的基础上添加一些其他功能,例如短信发送内容等,使记事本界面更友好、功能更人性化。
通过此次记事本软件的编写,够更好地学习Android的项目开发知识,熟悉Android的软件开发流程。
1.2国内外发展情况
目前国内外有4款下载量较高记事本软件。
分别是Evernote、小米便签、NoteEverything、麦库记事。
Evernote在软件界面方面布局简洁,需注册登录后才可使用,图标布局比较协调,记事笔记方面可编写内容,添加标签,支持上传图片、音频、视频、文件等附件。
特色功能方面具有搜索笔记和发送笔记、定位服务、同步等功能。
资源占用方面内存占最多,CPU占用适中。
小米便签在软件界面方面功能简单,可查看和新建便签,菜单功能相对丰富,记事方面只支持文字内容,可以选择桌面Widget颜色、字体大小等。
特色功能方面可以移进文件夹和分享、备份、还原和设置保护密码,资源占用方面内存占用较中,CPU占用最少。
NoteEverything界面简洁,上方有新建记事和搜索等按钮,菜单功能非常丰富,支持文本、绘图、语音、图片、清单、图库、视频、条形码等形式,可固定显示记事。
特色是单个记事加密,数据备份、还原、导入、到处创建快捷方式,内存占用最少,CPU占用合理。
麦库记事界面比较精美,菜单功能相对简单,可选分类、加标签、附件支持拍照和实时录音。
特色是笔记搜索和分类,网络同步和笔记分享,内存占用适中,CPU占用最多。
1.3主要研究内容
本软件主要包括两类功能:
信息的维护和信息的编辑。
信息维护部分主要包括:
信息的新建、打开、删除、查询等。
信息的编辑部分主要根据信息的不同,其功能也略有不同。
非文本类的信息可只包括信息的采集和浏览;文本类的信息除采集和浏览之外,还需要有编辑功能。
同时为了方便用户记录事项的传输,系统同时尝试增加短信发送记事信息内容的功能。
第二章开发环境
2.1开发环境
2.1.1硬件环境
1.Android设备,如Android手机或平板电脑:
主频在1Ghz及以上,内存为512MB以上,系统版本为Android2.1及以上。
2.在eclipse平台下安卓了安卓androidSDK插件的电脑:
Window系统P41.8主频以上电脑
2.1.2软件环境
1.操作系统:
Windows7
2.IDE:
Eclipse8.0
3.AndroidSDK集成环境
2.2技术系统架构综述
2.2.1系统架构
Android的系统架构和其操作系统一样,采用了分层的架构如2.1图:
图2.1安卓系统架构
从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
应用程序
Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。
所有的应用程序都是使用JAVA语言编写的。
应用程序框架[3]
开发人员也可以完全访问核心应用程序所使用的API框架。
该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。
同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统,其中包括;
丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(Lists),网格(Grids),文本框(Textboxes),按钮(Buttons),甚至可嵌入的web浏览器。
内容提供器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据
资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串,图形,和布局文件(Layoutfiles)。
通知管理器(NotificationManager)使得应用程序可以在状态栏中显示自定义的提示信息。
活动管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。
系统运行库
Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。
它们通过Android应用程序框架为开发者提供服务。
以下是一些核心库[4]:
(1)系统C库一个从BSD继承来的标准C系统函数库Libc),它是专门为基于Embeddedlinux的设备定制的。
(2)媒体库基于PacketVideoOpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。
编码格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。
(3)SurfaceManager对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
(4)LibWebCore一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。
2.2.2应用组件
Android开发四大组件分别是:
活动(Activity):
用于表现功能。
服务(Service):
后台运行服务,不提供界面呈现。
广播接收器(BroadcastReceiver):
用于接收广播。
内容提供商(ContentProvider):
支持在多个应用中存储和读取数据,相当于数据库。
1.活动
Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity可以算是开发者遇到的最频繁,也是Android当中最基本的模块之一。
在Android的程序当中,Activity一般代表手机屏幕的一屏。
如果把手机比作一个浏览器,那么Activity就相当于一个网页。
在Activity当中可以添加一些Button、Checkbox等控件。
可以看到Activity概念和网页的概念相当类似[5]。
一般一个Android应用是由多个Activity组成的。
这多个Activity之间
Android的应用(20张)可以进行相互跳转,例如,按下一个Button按钮后,可能会跳转到其他的Activity。
和网页跳转稍微有些不一样的是,Activity之间的跳转有可能返回值,例如,从ActivityA跳转到ActivityB,那么当ActivityB运行结束的时候,有可能会给ActivityA一个返回值。
这样做在很多时候是相当方便的。
当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。
用户可以通过回退操作返回到以前打开过的屏幕。
可以选择性的移除一些没有必要保留的屏幕,因为Android会把每个应用的开始到当前的每个屏幕保存在堆栈中。
2.服务
Service是android系统中的一种组件,它跟Activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。
Service是没有界面的长生命周期的代码。
Service是一种程序,它可以运行很长时间,但是它却没有用户界面。
这么说有点枯燥,来看个例子。
打开一个音乐播放器的程序,这个时候若想上网了,那么,打开Android浏览器,这个时候虽然已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继续一首接着一首的播放。
其实这个播放就是由播放音乐的Service进行控制。
当然这个播放音乐的Service也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键等。
Service可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录地理信息位置的改变等等,总之服务嘛,总是藏在后头的[6]。
开启Service有两种方式:
(1)Context.startService():
Service会经历onCreate->onStart(如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次);StopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用StopService的话,Service会一直在后台运行。
该Service的调用者再启动起来后可以通过stopService关闭Service。
注意,多次调用Context.startservice()不会嵌套(即使会有相应的onStart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用Context.stopService()或者StopSelf(),他都会被停止。
补充说明:
传递给StartService(0的Intent对象会传递给onStart()方法。
调用顺序为:
onCreate-->onStart(可多次调用)-->onDestroy。
(2)Context.bindService():
Service会经历onCreate()-->onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。
这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind-->onDestroyed相应退出,所谓绑定在一起就共存亡了。
安卓不同版本图片。
3.广播接收器
在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。
而BroadcastReceiver是对发送出来的Broadcast进行过滤接受并响应的一类组件。
可以使用BroadcastReceiver来让应用对一个外部的事件做出响应。
这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BroadcastReceiver进行处理。
例如,当下载一个程序成功完成的时候,仍然可以利用BroadcastReceiver进行处理。
BroadcastReceiver不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。
BroadcastReceiver通过NotificationManager来通知用户这些事情发生了。
BroadcastReceiver既可以在AndroidManifest.xml中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。
只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。
各种应用还可以通过使用Context.sendBroadcast()将它们自己的IntentBroadcasts广播给其他应用程序。
4.内容提供
ContentProvider是Android提供的第三方应用数据的访问方案。
在Android[8]中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件等内容,都是不允许其他直接访问的。
Andorid当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是ContentProvider。
应用想对外提供的数据,可以通过派生ContentProvider类,封装成一枚ContentProvider,每个ContentProvider都用一个uri作为独立的标识,形如:
content:
//com.xxxxx。
所有东西看着像REST的样子,但实际上,它比REST更为灵活。
和REST类似,uri也可以有两种类型,一种是带id的,另一种是列表的,但实现者不需要按照这个模式来做,给id的uri也可以返回列表类型的数据,只要调用者明白,就无妨,不用苛求所谓的REST[8]。
2.3工程主体架构
工程主体架构如图2.2所示:
图2.2Eclipse下的程序系统架构
1.str文件夹
Str文件夹下com.samplenote包下Java为系统主要Activity类:
AddActivity.java是增加功能的Activity,通过设置两个按钮的监听来实现对输入文本的存储或退出。
DbAdapter.java是数据库基本操作功能实现的Activity,类中主要的函数实现的功能是:
打开、关闭数据库,获得时间,插入数据,删除输入,获得数据,查询数据,更新数据,根据内容生成标题,创建表和删除表。
NotepadCheckActivity.java是在系统界面中生成记事列表的Activity。
通过onCreate函数实现。
NotPadActivity.java为系统主要功能实现的Activity。
通过监听的方法来实现记事的删除、编辑、搜索和短信发送功能。
2.gen文件夹
gen文件夹是项目自动生成的文件夹R.java是工程下各个资源的标识符负责所有资源的索引[9]。
3.bin文件夹
bin文件夹是编译后的字节码存放的目录,编译的过程首先是编译成为androidjava虚拟机文件classes.dex,再打包成APK格式的包。
4.res文件夹
Res是资源目录,res资源目录,它包含项目中的资源文件并将其编译进应用程序中,向此目录添加资源时,会被R.java自动记录。
res目录存放所有程序中用到的资源文件。
“资源文件”指的资料文件、图片等。
子目录有:
drawable、layout、values。
layout。
屏幕布局目录,main.xml是主界面的布局文件、add.xml是增加数据页面的布局文件、check_notepad.xml是搜索功能时的布局文件、click.xml是几个功能按钮的布局文件、list.xml是显示记事列表界面的布局文件、modtitle.xml是修改功能时所需文本框的布局文件。
values。
参数值目录,存放软件所需要显示的各种文字和一些数据。
strings.xml存放各种文字,还可以存放不同类型的数据。
style.xml负责存放界面颜色、文本框大小等信息。
5.AndroidManifest.xml
AndroidManifest.xml描述了package中暴露的组件(activities,services,等等),他们各自的实现类,各种能被处理的数据和启动位置。
除了能声明程序中的Activities,ContentProviders,Services,和IntentReceivers[10]。
第三章需求分析
3.1功能需求
3.1.1用户触发事件
用户通过点击屏幕来实现与数据的交互。
记事本上的相关按钮是操作请求的输入设备,屏幕是用于向用户输出信息的输出设备。
事件是来自人操作的重要的消息,触发时间如表3.1所示记事本系统中可能发生的所有事件响应及其执行结果。
表3.1触发事件
事件
系统响应
执行结果
1
从手机屏幕点击软件系统
调用函数入口,启动系统,进入该软件
进入该软件,显示记事列表
2
点击Menu,选择添加记事
调用添加函数
进入添加界面
3
点击其中一个记事
调用查看记事函数
进入详细界面
4
在记事详细界面点击Menu,可对记事进行修改编辑
调用修改函数
进入修改界面
5
在记事详细界面点击Menu,可对记事进行删除
调用删除函数
删除记事
6
在记事列表界面点击Menu,选择退出
调用退出函数
退出软件
3.1.2记事本基本需求控制
系统用例图描述的是用户眼中的系统,即用户希望系统有哪些功能和通过哪些操作完成这些功能。
一个用例代表用户与系统交互的一种方式。
正如前面介绍过的,识别用例的最好方法是从参与者的角度分析系统。
在Android记事本中,首先的参与者是用户。
系统E-R图如图3.1所示,它从用户角度描述了该系统应该具有何种功能。
图3.1系统E-R图
3.2系能需求
3.2.1响应时间
一般来说,基于Android开发出来的应用程序响应时间很大程度上依赖于安卓设备的硬件配置和系统版本。
因此,用户的安卓设备的硬件配置和系统版本都会对应用程序的响应时间又一定的影响[11]。
3.2.2稳定性
应用程序为本地应用,用户只需通过自己的硬件就可以使用应用。
[12]
3.2.3安全性
Android为开源系统本身比较稳定,同时应用程序无需连接网络因此不存在信息网络泄露的风险。
[13]
3.3运行需求
3.3.1硬件需求
Android设备:
CPU:
1GHz以上;内存:
256MB以上
3.3.2软件需求
Android设备OS:
Android4.0以上
第四章总体设计
4.1系统架构
系统的整体架构如图4.1所示:
图4.1系统整体架构
4.2处理流程设计
4.2.1业务流程图
业务流程图,用户进入软件后,会看到所有记事列表,列表界面主菜单中包含增加、查看全部、退出。
长按相关记事会进入编辑界面包含删除、编辑、搜索、短信发送功能;所有操作完成后均回到记事本列表界面。
图4.2业务流程图
4.2.2数据增加流程图
添加记事时,数据由用户输入,点击确定按钮。
如下图4.3所示
图4.3增加流程图
4.2.3数据修改流程图
编辑记事时,长按一条记录,选择修改相关数据,进入修改界面修改,点击确定按钮,则更新数据库;流程如图4.4所示:
图4.4修改流程图
4.2.4数据删除流程
当用户长按一个其中记事条时,选择删除选项,删除其中一条记录,如下图4.5删除流程图所示:
图4.5删除流程图
4.3数据库设计
4.3.1数据流程
用户操作记事本数据流程图,如下图4.6所示
图4.6数据流图
数据流的描述:
表4.1数据流
数据流编号
数据流
名称
简述
数据流
来源
数据流
去向
数据流组成
数据流量
高峰流量
F1
启动软件
启动
无
P1
无
80/day
100/day
F2
显示列表
显示
P1
P2
SQLite中读取的数据
80/day
100/day
F3
删除
删除
P2
P5
从SQLite删除的相关数据
80/day
100/day
F4
添加
添加
P2
P3
从用户输入数据与SQLite交互
80/day
100/day
F5
编辑
编辑
P2
P4
根据用户选择的的数据编辑
80/day
100/day
F6
添加
添加
P3
D
根据用户填写的数据
80/day
100/day
F7
删除至Sqlite
删除s
P5
D
根据用户输入数据删除Sqlite中
80/day
100/day
F8
从Sqlite编辑
编辑s
P4
D
从Sqlite中编辑数据的数据
80/day
100/day
处理逻辑的描述:
表4.2处理逻辑
处理逻辑编号
处理逻辑名称
简述
输入的数据流
处理
输出的数据流
处理频率
P1
启动
启动软件
F1
启动软件
F2
20/day
P2
记事列表
显示列表
F2
查看记事列表
F3,F4,F5
20/day
P3
删除
删除
F4
删除该记事
F5
20/day
P4
添加
添加
F5
添加该记事
F8
20/day
P5
编辑
编辑
F3
编辑该记事
F7
20/day
数据存储的描述:
表4.3数据存储
数据存储
编号
数据存储
名称
简述
数据存储组成
相关联的处理
D
Sqlite数据库
用于存储记事的数据库
记事的详细信息:
记事名称,内容,记事时间
P3-F6-D,P5-F7-D,
P4-F8-D
外部实体的描述:
表4.4外部实体
外部实体编号
外部实体名称
简述
外部实体组成
输入的数据流
输出的数据流
S
用户
操作系统软件的客户或者管理员
客户或者管理员
无
F1
4.3.2数据字典
表4.5数据字典
字段名
存储格式
描述
是否主键
id
integer
编号
是
title
varchar(20)
标题
否
content
text
内容
否
time
text
存储的事件
否
4.3.3数据库概念结构设计
在记事本软件中,记事作为主要操作对象,如下图4.7数据E-R图所示:
图4.7数据库E-R图
第五章主要功能设计
5.1程序主要类介绍
5.1.1增加功能的实现
系统增加模块类的实现增加功能UML图如下图5.1所示:
图5.1增加功能UML图
5.1.2数据库功能实现
数据库功能模类的实现数据库功能UML图如下图5.2所示
图5.2数据库功能UML图
5.1.3主页面功能
主要功能实现的类主要功能UML如下图5.3图所示
图5.3主要功能UML图
5.2核心功能介绍:
5.2.1搜索功能
数据库处理方面主要函数为:
publicCursorgetContent(Stringcontent){
Stringcol[]=newString[]{F_ID,F_CONTENT,F_TIME};
Cursorcursor=db.query(TB_NAME,null,"contentlike'%"+content+"%'",null,null,null,null);
returndb.query(TB_NAME,null,"contentlike'%"+content+"%'",null,null,null,null);
}
函数通过Cursor类来实现对数据库中数据的搜索。
通过query函数来进行搜索,使用like可以对搜索内容模糊查询。
用户操作搜索时的主要函数为:
publicvoidonClick(DialogInterfacedialog,intwhich){
diaInput=(EditText)getviewDia.findViewById(R.id.editTitle);Stringcontent=diaInput.getText().toString();
db.open();
curso
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 记事本 说明书
![提示](https://static.bdocx.com/images/bang_tan.gif)