基于Android平台的日历提醒软件的设计与实现论文Word格式.docx
- 文档编号:17163690
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:37
- 大小:431.54KB
基于Android平台的日历提醒软件的设计与实现论文Word格式.docx
《基于Android平台的日历提醒软件的设计与实现论文Word格式.docx》由会员分享,可在线阅读,更多相关《基于Android平台的日历提醒软件的设计与实现论文Word格式.docx(37页珍藏版)》请在冰豆网上搜索。
为了实现基于Android平台的日历提醒软件,本文主要围绕基于Android平台的开发应用程序的整体思路,设计开发、实现功能等流程做了具体的描述,并对农历的日历算法做了简洁明了的描述。
2相关技术介绍
2.1Sqlite技术
2.1.1Sqilte介绍
SQLite,是一款小型的数据库,是遵从ACID的关联式模式的数据库管理系统,它的设计目标是基于嵌入式的小型数据库的,而且目前它已经被运用到很多嵌入式产品中,它占用系统资源非常少,在一些嵌入式设备中,几百KB的内存就能够满足系统的需要。
它支持WindowsLinuxUnix等许多的主流操作系统,同时与很多程序语言能够结合,比如Xml、PHP、C#、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源程序语言界最著名的数据库管理系统来说,它的处理速度比他们快的多[3]。
SQLite第一个Alpha版本于2000年5月诞生.到目前已经12年了,SQLite也发布了一个新的版本SQLite3。
2.1.2Sqlite支持的SQL语句
SQLite虽然相对于其他数据库非常的小,但是支持Sqlite的SQL语句绝对不会比其他开源数据库差劲,它所支持的SQL语句包括:
ATTACHDATABASE、BEGINTRANSACTION、comment、COMMITTRANSACTION、COPY、CREATEINDEX、CREATETABLE、CREATETRIGGER、CREATEVIEW、DELETE、DETACHDATABASE、DROPINDEX、DROPTABLE、DROPTRIGGER、DROPVIEW、ENDTRANSACTION、EXPLAIN、expression、INSERT、ONCONFLICTclause、PRAGMA、REPLACE、ROLLBACKTRANSACTION、SELECT、UPDATE。
2.1.3Sqlite的特征
1.ACID事务。
2.零配置–无需进行复杂的安装和繁琐管理配置。
3.一个完整的数据库中能够存储一个存在在单一磁盘中的文件。
4.在不同字节顺序的机器间能够自由地共享数据库文件。
5.数据库大小能够拓展到2TB。
6.规模足够小小,只要3万行C代码即能实现功能,大小约为250K。
7.在大部分的普通数据库中的操作要比在一些流行数据库中快。
8.简单,轻松的API。
9.包含TCL绑定,同时通过Wrapper支持其他语言的绑定。
10.良好注释的源代码,并且有着90%以上的测试覆盖率。
11.独立:
没有额外依赖。
12.Source完全的Open,你可以用于任何用途,包括出售它。
13.支持多种开发语言,C,PHP,Perl,Java,C#,Python。
2.2WebService技术
2.2.1WebService简介
2.2.2WebService技术和规则
1.XML:
描述数据的标准方法。
3.WSDL:
是WebService的描述语言:
用于描述WebService的接口信息等。
4.UDDI(UniversalDescription,DiscoveryandIntegration):
通用描述、发现与集成,它是一种基于XML语言的独立于平台之外的用于在描述互联网上的商务的协议。
2.3Android平台
2.3.1Android平台简介
Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统[5]。
刚开始的时候,是一个名为Android的公司来进行开发的,谷歌在2005年收购Android公司以后,继续进行对Android系统的开发以及运营,它采用了软件堆层(softwarestack,又名软件叠层)的架构,主要分为三部分。
Linux内核只提供底层功能,其他的应用软件则由各个使用Android来进行开发的公司进行自行开发,部分程序以Java语言来编写。
2.3.2Android应用程序框架
核心应用程序所使用的API框架可以完全被开发人员所访问。
该应用程序的架构设计简化了组件的重用;
任何应用程序都可以发布其功能、发布任何其他块的应用程序,可以利用他们发布的功能块(需要遵循的安全限制的框架)。
同样,用户可以利用应用的程序重用机制更方便的替换程序组件。
Android应用程序背后都隐藏了许多服务其中包括:
视图(Views),可以用来构建应用程序,它包括文本框(textboxes),按钮(buttons),列表(lists),网格(grids),甚至可以将这些元素嵌入到Web浏览器。
内容提供器(ContentProviders),共享它们自己的数据时都需要内容提供器的服务,或者当一个应用程序想要访问另一个应用程序的数据(如联系人数据库)。
资源管理器(ResourceManager),它可以提供如图形和布局文件(layoutfiles)非代码资源的访问[8]、本地字符串。
通知管理器(NotificationManager),自定义的提示信息显示在应用程序可以在状态栏中。
活动管理器(ActivityManager),用来管理应用程序生命周期,并提供常用的导航回退功能,是Android开发中的重要的服务系统。
Android具有一个能够分层的环境,在Linux内核的基础上构建,它包含了各种功能。
UI子系统包括:
窗口,视图。
Android与iPhone的MobileSafari浏览器具有同样以WebKit为基础的包括一个构建在WebKit基础上的可嵌入浏览器,。
Android提供多种连接选项,包括WiFi、蓝牙和通过蜂窝(cellular)连接的无线数据传输(例如GPRS、EDGE和3G)[9]。
链接到Google地图是Android应用程序中一项流行的技术。
并不是所有的Android设备都配备了必需的硬件,但是Android软件栈还提供对基于位置的服务(例如GPS)和摄像支持,另外还有加速计的支持。
过去,移动应用程序的两个领域分别是图形媒体和数据存储方法努力向桌面应用程序看齐。
Android利用对内置2D和3D图形的支持,其中包括OpenGL库,解决了图形方面的问题,因此缓解了数据存储的负担。
Android软件层次结构。
如图2-1所示。
图2-1Android软件层次结构
应用程序架构。
如前所述,Android运行在Linux内核上。
Android应用程序是在一个虚拟机(VM)中运行的利用Java编程语言编写二乘的。
需要注意的是,这个VM与我们通常所说的JVM不同,它是DalvikVirtualMachine,这是一种开源的虚拟机技术。
2.3.3系统运行库
(1)程序库
Android包含一些C语言、C++语言库,Android系统中各类不同的组件能够使用这些库。
开发者通过Android应用程序框架来获取一些服务,以下是一些核心库:
系统C库:
专门为基于embeddedlinux的设备定制的从BSD继承来的标准C系统函数库(libc)。
媒体库:
基于PacketVideoOpenCORE;
该库支持静态图像文件,同时支持多种常用的音频、视频格式回放和录制。
编码格式包括MPEG4、H.264、MP3、AAC、AMR、JPG,PNG。
SurfaceManager:
对有显示子系统进行管理。
LibWebCore:
一个web浏览器引擎器,支持一个可嵌入的web视图和Android浏览器。
SGL:
底层的2D图形引擎。
3Dlibraries:
基于OpenGLES1.0APIs的实现[10]。
FreeType:
位图(bitmap)和矢量(vector)字体显示。
SQLite:
一个轻量级的数据库
(2)Android运行库
Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能[11]。
Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制[12]。
2.4Xml技术
2.4.1Xml简介
可扩展标记语言(ExtensibleMarkupLanguage,XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型的一种技术,允许用户定义自己的标记语言的源语言。
XML是非常适合Web传输的标准通用标记语言(SGML)的子集。
XML通过一种方法来描述和交换结构化数据。
2.4.2Xml格式特征
XML不同于Access,Oracle和SQLServer等数据库,数据库提供了更完善的数据分析和存储能力,例如:
排序、查找、数据索引等,而XML只是完成存储数据的功能。
但是XML与其他数据表现形式相比最大的有点是:
他极其简单。
XML与HTML的设计最大的区别在于:
XML是被设计用来对数据进行储存的的。
而HTML是被设计用来对数据的外观进行显示。
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows,MacOS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果[13]。
为了让SGML对用户显示的更加具有亲和力,XML需要定义SGML的一些内部值和参数,去掉一些会能使得SGML在设计网站时非常复杂的功能。
XML保留的结构特征,使设计者可以定义自己的文档类型,XML还推出了一个新的文档类型,使开发人员可以不需要定义文档类型。
但是SGML也出现了我们下面列出的这些奇怪的问题:
1某些起始标签不允许例如HTML中<
img>
标签的结束标签。
2某些起始标签可以选择性出现结束标签或者隐含了结束标签。
3某些起始标签要求必须出现结束标签:
例如HTML中<
script>
标签。
4标签可以以任何顺序嵌套:
即使结束标签不按照起始标签的逆序出现也是允许的,例如,Thisisasamplestring是正确的。
这些问题使建立一个SGML语言的解析器变成了一项艰巨的任务。
判断何时应用以上规则的困难导致了SGML语言的定义一直停滞不前。
以这些问题作为出发点,XML逐渐步入我们的视野。
XML去掉了之前令许多开发人员头疼的SGML的随意语法。
在XML中,采用了如下的语法:
1任何的起始标签都必须有一个结束标签。
2可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。
这种语法是在大于符号之前紧跟一个斜线(),例如<
tag>
。
XML解析器会将其翻译成<
tag>
<
3标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如thisisasamplestring。
这好比是将起始和结束标签看作是数学中的左右括号:
在没有关闭所有的内部括号之前,是不能关闭外面的括号的。
4所有的特性都必须有值。
5所有的特性都必须在值的周围加上双引号。
这些规则使得开发一个XML解析器要简便得多,而且也除去了解析SGML中花在判断何时何地应用那些奇怪语法规则上的工作。
仅仅在XML出现后的前六年就衍生出多种不同的语言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同时也将HTML改进为XHTML。
对于控制解析器的应用程序而言,一次循环是必要的,因为应用程序很容易在嗅探前面几行之后停止读入。
3需求分析
3.1系统需求
系统的全面性:
Android版电子万年历使用对象面对的是大部分Android手机用户群体,因此,系统要满足大部分Android用户的需要。
3.2技术需求
系统技术的先进性:
Android版电子万年历采用现在最火的移动终端系统安卓系统,利用分层设计的原则。
需要开发人员熟悉Android编程和Java编程。
并且对万年历的算法有深刻的理解,并对Android界面绘制有一定的掌握,对Sqlite数据库,WebService技术和Xml解析技术都有一定的了解。
3.3维护需求
系统的易维护性:
本软件是一款客户端手机软件,有新版本的时候服务器端会自动通知客户端更新,在进行系统维护时候,只需要把最新软件放到服务器端,客户端会自动下载,减少了维护的成本和周期。
3.4安全需求
系统的安全性:
本系统由于是一款客户端手机软件,对安全性需求比较低,数据库方面,主要针对本地数据库操作,不涉及和服务器数据交换,故而对数据的安全性要求没那么高。
3.5系统可行性分析
3.5.1经济上的可行性
本软件开发在经济上需求比较低,只需要一台开发用的电脑和模拟器就可以了。
开发周期比较短,经济上需求低。
3.5.2技术上的可行性
本软件主要采用Java语言在Android平台上编写,Java语言具有如下特点:
1.面向对象
Java语言是面向对象设计的程序编程语言,代码继承及重用包括两种不同的风格:
动态风格和静态风格。
它允许在程序运行的过程中装入程序所需要被装入的类。
这些功能是C++语言在进行面向对象程序的设计中无法实现的。
2.平台无关性
Java程序编译会形成一个结构中间的中性文件格式(字节码文件)。
这种中间字节码能够在装有Java运行系统(Java虚拟机)的机器上执行。
这些字节码指令有Java虚拟机来执行,Java虚拟机的解释器在获取字节码后,能够把这字节码转换并执行,而不是通过操作系统来完成这些功能。
所以不管是Windows、Linux还是Solaris或者是其他不同的操作系统,Java程序都能够直接运行,真正完成“WriteOnce,RunAnywhere”的功能。
3.分布式
4.稳定、安全
Java的异常处理机制可以检查出错误,出现在许多开发早期。
Java通过自己操纵内存使得内存出错的可能性大大减小。
Java使真数组得到了实现,从而避免了数据被覆盖的可能。
Java提供Null指针检查数组边界,检测异常出口字节代码效验。
所以Java具有强大和稳定的功能特性,大大缩短了应用程序开发周期。
在安全性方面,删除了设置指针和释放内存等C语言的功能,避免了因为非法操作内存而引起的安全问题。
5.多线程
Java的多线程功能允许一个程序可以同时执行多个小任务。
线程是一个比较大的进程中分散出来的独立的小进程,通常被开发人员称为小进程。
因为Java多线程技术在程序中进行实现,所以Java比C语言和C++语言更全面,更适应不同的编程语言平台。
更好的交互性能够对性能进行实时控制是多线程带来的更大的好处。
当然系统本身决定实时性能,单线程在开发难度和性能上都比不上多线程。
任何有过当前浏览器使用经验的人,都会有这么一种感觉:
当他只为了某一副图片而等待很长时间时,会让人感到非常的不舒服。
在Java里。
你可以用一个单线程来调一副图片,这时你可以访问HTML里的其他信息而不必等他[15]。
3.5.3社会条件方面的可行性
1.市面上应用种类非常多,涉及到的领域广,系统设计比较复杂。
2.本款软件界面设计清晰,简单易用,通俗易懂。
3.5.4市场条件方面的可行性
1.简单易用,通俗易懂。
2.程序运行安全。
4Android日历软件的概要设计
4.1功能需求
4.1.1系统业务用例分析
众所周知,用例分析是用例之间的关系,角色和用例描述系统的一个外部需求的方法。
作为UML表示方法中的最重要的期中一种,用例分析法在系统分析中有着非常重要的作用;
所以,正确的使用用例分析方法能够对本文所提到的需求分析、结构设计、程序完成进度安排、测试和验证。
下面综合用户的需要,利用系统用例图进行分析。
图4-1为用户业务用例图
图4-1用户业务用例图
4.1.2系统业务用例分析
1.日期、星期的查看功能:
用户进入软件后,能够查看当前的日期、这是第几周等。
用户还能自己选择任意的日期来查看需要的信息。
2.写日志、提醒功能:
用户可以添加自己的事件,并且能够随时修改时间,修改事件名称,当时间到达那个节点时,会通过铃声和震动提醒用户。
4.2功能模块设计
功能模块图如4-2所示。
图4-2功能模块图
1.主界面设计:
用户点击软件图标,打开软件,当前界面上可以显示当前的日期,并且当前的日期比其他日期的亮度更高,而且能看到农历和公历对照。
用户可以通过点击不同的按钮来切换不同的日期,可以通过点击“今天”这个按钮来返回查看今天的具体日期。
2.用户可以单击手机上的菜单按钮,调出菜单界面,从弹出的菜单界面中选择不同的按钮。
具体菜单包括:
农历、查询、公历、提醒、星座等事件。
3.用户通过点击查询菜单,从而能够进入到查询界面。
在进入查询界面后,用户可以看到选择日期的界面,通过下拉菜单选择不同的日期,可以查看用户选择的当前日期的信息。
4.用户通过点击日历界面,从而能够进入到日历界面。
在日历界面中,用户可以看到不同的按钮,用户通过单击其中一个日期,可以查看日历信息。
5Android日历软件的系统设计
本款软件设计简单操作方便,启动本软件先进入欢迎界面,3s之后进入主程序界面,之后按手机菜单按钮进入功能菜单界面。
本软件架包如下:
1.lhl.calendarUI包里面放所有关于UI的界面。
2.lhl.utils工具包。
3.lhl.year农历阳历装换。
系统架包图如5-1所示。
图5-1系统架包图
5.1界面设计与实现
界面的绘制包括两个部分,一部分在Main.xml文件中另一部分通过程序代码在程序运行中动态控制。
Main.xml文件里面程序主界面的基本布局,里面有些基本的控件,显示当前日期的TextView和上一年、下一年、上一月、下一月、今天的Button控件。
这些控件是通过.xml写入的是动态的。
另一部分---控制主界面日期的显示的布局,是通过代码动态控制的。
1.Main.xml文件中控制:
基本布局,通过线性布局作为主布局,主布里面通过几个TextView基本控件实现年份阳历显示和农历的显示,通过Button按钮控件实现上一年、下一年、上一月、下一月、今天等事件控制。
并且在主布局里面写入一个线性布局,在代码中可以通过向这个线性布局里面添加控件,来实现控件的动态添加。
2.程序代码中的绘制:
通过代码动态绘制日期的布局,并呈现。
首先通过publicLinearLayoutgetLayout()函数控制整个日期的布局,具体实现是:
先通过屏幕的具体宽度,算出每行总共7个Textview的每一个的宽度,做7次循环,把周日、周一、周二、周三、周四、周五、周六的标题显示上去。
通过layout.addvView(layout1)添加到.xml文件的布局里面。
在通过layout.addView(getLayout1(j,k,sumOfSolarMonth));
循环6次添加到.xml文件中去。
实现一个月份中的各个日期对照。
getLayout1(j,k,sumOfSolarMonth)函数控制月份中每一天的控件的绘制。
其中还包括控制每个月份的第一天是星期几,一个月份的最大天数等的控制。
效果图如5-2所示。
图5-2万年历主界面
5.2菜单界面的实现
程序菜单没有使用Android内置的菜单,而是通过重写菜单实现了自己个性化的菜单。
将弹出对话框设置为菜单,通过menuDialog.setView(menuview)方法设置菜单的布局。
Meunview通过标准的View.infalte初始化出来。
同时重写onKey()方法,实现菜单的弹出。
菜单里面是通过GridView布局,并通过为GridView设置适配器来显示菜单的各个选项,并为GridView添加OnItemClickListener()事件实现各个菜单的点击事件,进而进入不同的操作。
程序菜单控制的主要函数publicvoidinitMenu()和publicBoolean
onMenuOpened(intfeatureId,Menumenu)
程序主要代码如下:
publicvoid
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 平台 日历 提醒 软件 设计 实现 论文