Android电子课表计算机毕业设计-基于android平台的电子课表查询设计与实现_第1页
Android电子课表计算机毕业设计-基于android平台的电子课表查询设计与实现_第2页
Android电子课表计算机毕业设计-基于android平台的电子课表查询设计与实现_第3页
Android电子课表计算机毕业设计-基于android平台的电子课表查询设计与实现_第4页
Android电子课表计算机毕业设计-基于android平台的电子课表查询设计与实现_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计题目:基于android平台的电子课表查询设计与实现姓名:班级:软件班学号:学院:软件学院专业:软件工程指导教师:2014年4月18日

基于android平台的电子课表查询设计与实现摘要智能手机虽然早在多年前就已出现,但那时的智能手机的功能主要是本地应用,这些手机以Nokia的Symbian系统为主。但随着移动互联网时代的到来,本地应用已远远无法满足用户的需求了。然而在创新为王的今天,新的技术总在不断取代旧的技术。以创新闻名的Google为了进军移动广告市场,就开始研制新的移动操作系统Android。本程序主要使用了Java和Android的基础编程知识,用户界面采用MVC模型的电子课表应用程序的结构和设计实现过程。本程序的开发工具为Eclipse,并通过与SQLite数据库相连,从而实现了基于Android的电子课表管理应用程序。关键词:Android,Sqlite,MVC-Queryandroidplatform-basedelectroniccurriculumDesignandImplementationAbstractAlthoughmanyyearsagosmartphoneshadalreadyappeared,butatthattimethesmartphone'smainfunctionisthelocalapplicationandthesephonesisbasedonNokia'sSymbianOS.ButwiththearrivaloftheeraofmobileInternet,thelocalapplicationhasfarunabletomeettheneedsofusers.However,ininnovationisthekingoftoday,newtechnologyisalwaysreplacingtheoldtechnology.Inordertoenterthemobileadvertisingmarket,Google,knownforinnovation,startedtodevelopanewmobileoperatingsystemAndroid.TherehavebeenallkindsofsoftwareandapplicationstojointheAndroidsystem,thecalendarapplicationprogramasoneofthedailytools,ithasmanysmallfunctions.Mainlyinthedisplayofdategivespeopletheexpressionofthevisualeffect,inquiresthedateisveryconvenientandsimple,anditisalsoareminderofcertainfestivalsthatcanbroughtusgreatconvenience.Itisamorepracticallittletool.ThisprogramismainlyusedthebasicprogrammingknowledgeofJavaandAndroidanduserviewusingtheMVCmodel.ItsdevelopmenttoolisEclipse,andconnectstotheSQLitedatabase,therebyachieveacalendarapplicationprogrambasedonAndroid.Itsmainfunctionsincludethefollowingtwoaspects:first,thefrontdisplay,intheapplicationhomepageyoucanviewdate;Second,backgroundmanagement,mainlydosomethingaboutcreate,retrieve,update,deleteofinformation.Keywords:Android,Sqlite,MVC-目录TOC\o"1-3"\h\u11726摘要 121572Abstract 225952目录 324061第1章绪论 510271.1论文研究主要内容 5264451.2国内外现状 628304第2章关键技术介绍 8291412.1Java开发方面 8224092.2Android用户界面技术 826580第3章系统分析 107513.1系统概述 10238303.1.1功能框架 10240403.1.2系统特性 11144813.1.3需求规格 11123963.1.4系统用例规约 1250653.1.5系统的流程分析 1585993.2系统开发环境 16180303.3系统任务的可行性分析 1719283第4章系统设计 1820054.1设计指导思想和原则 18164954.1.1指导思想 1874734.1.2软件设计原则 18164864.2系统的功能结构设计 187094.3系统静态模型设计 20282564.4数据库设计 22121244.4.1数据库设计的概述 22197604.4.2概念结构设计 23196594.4.3逻辑结构设计 2341954.4.4物理结构设计 2421841第5章系统实现 2547585.1应用程序功能实现 25176695.2应用程序界面功能实现 259435.2.1应用程序主界面 25183625.2.2指定课表界面 27137435.2.3显示所有的课表 28202245.3数据库存储方式 3025904第6章系统测试 3264406.1测试方案及测试用例 327266.2系统测试计划 32147156.3系统测试 32279576.4测试总结 3329434第7章结论 3418173参考文献 35621致谢 3613161外文原文: 376529中文翻译: 43-第1章绪论Android是由Google发布的基于Linux的开放源码操作系统,刚开始的时候它主要用于手机移动设备,它是第一个完全定制、免费、开发的手机平台。最初由AndyRubin开发,刚开始主要支持手机,后来慢慢发展逐渐扩展到平板电脑及其他领域上。Android是一种基于Linux内核的软件平台和操作系统,采用了软件堆层(SoftwareStack)的架构,共分为四层。第一层是Linux内核,提供由操作系统内核管理的底层基础;第二层是中间件层,由函数库和Android运行时构成;第三层是应用程序框架层,提供了Android平台基本的管理功能和组建重用机制;第四层是应用程序层,提供了一系列核心应用程序。Android作为一种开放操作系统,随着它的快速发展,受到了越来越多的人的关注。所以就有越来越多的开发者使用许多种编程语言来编写Android。而不再像以前那样只能使用单一的编程语言来编写应用程序,因而有越来越多的人来开发Android。在这几年中由于Android的便携性和可开发性,使得Android的操作系统已经移植于越来越多的手机上。1.1论文研究主要内容通过开发一个项目,了解Android平台的相关特性和开发的流程。具体来讲:1、通过分析当前阶段下各种人群的喜好和对事物的关注程度来选择究的项目,既日程管理软件。2、通过独立设计UI来了解Android以至于移动平台开发的UI的设计方法。3、通过选取相应的数据存储来方式存储日程管理的数据,来了解Android平台的类库和其相关的设计模式,了解其先进的思想和API的特点。4、通过设计功能点来初步的了解移动平台开发的所需注意事项,初步的了解移动平台的开发,并了解别体会如何获得更好的人机交互。5、通过测试来完善程序,使其Bug不合理地方最少化,并进一步了解Android平台的相关先进的特点和其人性化的设计,与此同时熟悉软件开发的相关流程并深刻认识在编码时一些注意事项的重要性。6、其实完全可以通过发布程序到GoogleAndroidMarket上,了解Android程序发布的流程,并通过它了解其他平台下的开发、发布的流程。并通过用户的反馈来进行相关的修改。基于此更深刻的理解人机交互的重要性和设计的重要性。1.2国内外现状Android操作系统于2007年在美国推出后,凭借其良好的用户体验,低廉的成本和较高的开放性吸引着越来越多的终端厂商采用,根据Gartner等国际研究机构的报告,Android在这几年的全球智能手机的市场份额在逐渐增多,并且于2011年成功超过了Symbian系统在全球智能手机的市场份额。在Android出现之前,智能手机操作系统市场中Symbian和WM两者占据大部分的市场份额,但随着移动互联网的快速发展,终端+应用的趋势逐渐成为主流的情况下,两者的劣势逐渐突出,而Android的优势也越来越明显。Symbian由于发展了很多年,已经被很多人熟悉,在这十多年中Symbian几乎没发生什么变化,它的用户体验功能已经无法满足现在人的需求。WM系统同样也较为封闭,对终端厂商来讲引入成本较为昂贵,娱乐性一般,多用于商务机型。2007年,苹果iPhone上市后iOS凭借iPhone优秀的用户体验和多种多样的功能获得了巨大的成功,特别值得一提的是苹果的应用开发分成模式刺激了开发者不断进入,使得苹果的应用程序能不断的更新和发展,截至2010年8月,可用于iOS的应用已经超过了25万,苹果公司因为顺应了终端+应用的智能手机发展趋势,取得了快速的发展.但iOS也有许多问题,因为iOS属于半开放的OS,实现了移动互联网产业链上各环节的普及还是较为困难;其次iPhone的价格比较高,短期时间内难以满足中低端市场的需求。而Android系统,虽然它目前存在安全性和版本混乱等问题,但是拥有低廉的引入成本,良好的用户体验和开放性较强的特点,再加上AndroidMarket和众多第三方应用商店做后盾,在应用方面的资源也非常丰富。Android系统在近几年取得了迅猛的发展,主要还是因为其适应了移动互联网的发展趋势,符合了移动互联网产业链各方的发展变化需求。当然,Android也同样面临着一些挑战和争议。虽然Android在发展过程中遇到一些问题,但在多方面积极的因素推动下,总体趋势仍旧看好。当前,随着HTC进入中国市场,以及酷派、华为、中兴等终端厂商的发力,Android在国内的发展会越来越好;而随着Android系统的发展,Android手机在中国市场的销量在未来必然还将有较大发展空间。第2章关键技术介绍2.1Java开发方面对于Java语言而言,Android系统给了Java一个新的机会。随着Android平台在市场占有率的逐渐上升,采用Java语言开发的Android应用肯定会越来越多。由于Android的Java开发方面从接口到功能,都有层出不穷的变化,所以Android支持并使用了Java作为编程语言来开发应用程序。为了能够提高效率和减少资源占用并且考虑到Java虚拟机的效率和资源的占用,Google重新设计了Android的Java,因而它与J2ME等有许多不同之处。其中Activity就是一个Android的用户界面,一个Activity类(Class)主要负责创建UI界面(Windows),Service就是一个活动中的Activity在前景模式,背景运行下的程序。它们两者之间通过由ServiceConnection和AIDL连接,达到多种程序同时运行的效果。如果运行中的Activity下的全部画面被其他的Activity取代时,该Activity便会被停止(Stopped),甚至有可能会被系统清除(Kill)。在Android中的View和J2ME的Displayable挺类似的,程序开发人员可以通过把View类与“XMLlayout”文件放置在UI的视窗上,Android1.5的版本也可以利用View创建出所谓的Widgets,其实Widget只是View的一种形式,所以也可以使用xml文件来设计它的layout,现在的许多手机都包含大量Widget的。至于ViewGroup它是各种layout的基础抽象类(abstractclass),ViewGroup之内还可以包含ViewGroup。View的构造函数其实是不需要在Activity中调用,但是Displayable是必须被调用的,在Activity中,是需要通过findViewById()来从XML中来获得一个View的,并且Android的View类的显示在很大程度上是从XML中获取的。View与事件息息相关,它们之间通过Listener结合在一起,每一个View都可以注册一个事件监听器。2.2Android用户界面技术Android用户界面框架采用MVC模型。MVC模型为用户界面提供了处理用户输入的控制器,显示用户界面和图像的视图,以及保存数据和代码的模型。MVC模型中的视图将应用程序的信息反馈给用户,可能的反馈方法包括视觉、听觉或触觉等,但最常用的就是通过屏幕显示反馈信息。(1)创建界面①通过工程下的res/layout目录下的main.xml,mydate.xml,record.xml,about.xml等配置文件,分别设置日程应用程序的主界面,制定日期的界面,添加记录的界面和关于的界面。②通过工程下的res/values目录下的colors.xml,strings.xml,dimension.xml配置文件获得界面中的颜色,尺寸大小,一些属性的名字。③通过工程下的res/drawable目录获得应用程序所用到的图片。④通过工程下的AndroidManifest.xml的文件来描述Android应用程序整体资讯的设定档。简单来说,这是一个自我介绍档,我们可以向Android系统介绍我们的Android应用程序,以便让Android系统完整地了解我们的应用程序资讯。(2)创建模型类创建Disservice类实现对数据库的增、删、改、查操作,创建Grid类绘制万年类的主体部分:日期和表格,创建CalendarElement接口,定义绘制图形的方法,创建Border类定义边框,Remind类定义提醒时间的一些信息,AllRecord类定义记录的一些信息。(3)创建控制器主要的是Main类来实现界面和一些模型类的交互,把结果展示在界面上。RemindSetting类设置指定日期的类,Record类设置记录信息界面和处理记录的交互。第3章系统分析3.1系统概述3.1.1功能框架课表应用程序根据需求调研结果确定本系统主要包括以下功能模块,如图3.1所示。课表应用程序 查询帮助界面课表信息添加课表登陆 查询帮助界面课表信息添加课表登陆业务处理业务处理DBDB图3.1系统功能框架从系统功能框架中很容易看出,本应用程序采取的是MVC模型,一个Android的Activity通过业务处理来处理一些事务并把它反映在界面之中。启动应用程序首先看到的是一个显示的主界面,然后可以根据菜单选项访问SQLite数据库进行事件的添加、修改、查看、删除,这样做的好处是后台服务可以及时更新数据,以保证数据的准确性。设置提醒的时间功能同样也要和数据库相关联进行一系列的操作。DB下的DBService类封装了许多SQLite的数据库的增、删、改、查的操作,后台服务会调用它来实现数据库的操作。3.1.2系统特性基于Android的课表应用程序是为了向用户展示一个友好的课表界面并能提供一系列的应用操作的一个应用程序。整个系统分为以下几个模块,见表3.1。表3.1基于Android的课表应用程序特性概述功能编号功能名称功能描述优先级1课表的显示对日期按照一定的规则显示在界面上中2提醒时间的管理对设置的提醒时间进行管理和维护高续表3.1基于Android的课表应用程序特性概述功能编号功能名称功能描述优先级3记录信息的管理对所记录的信息进行管理和维护高4切换界面的显示对切换日期的进行准确的显示中5帮助界面的显示对一些额外的信息的介绍中3.1.3需求规格(1)日期的显示支持的日期范围从1901-1-1至2100-12-31,在日期界面上我们能够很详细的看到这个月的详细信息,在这个界面我们可以通过键盘和触摸能够看到任何一天的日期和带有标记的记录信息和提醒事件的信息。(2)提醒时间的管理用户可以通过提醒时间的界面来设置什么时候去提醒自己去做某件事,在提醒时间界面中用户可以滑动屏幕来设置小时和分钟。(3)记录信息的管理通过菜单选项的记录和提醒控件,用户可以进入记录界面,在记录界面中用户可以添加、查看、修改、删除记录,并且为记录设置提醒时间。这样我们就可以在某一个时间点来通过程序来提醒我们做一些事情。(4)切换日期界面的显示当我们向任意查看某天的信息的时候,我们可以通过菜单选项的制定日期来进入我们想查看的那天的日期。(5)帮助界面的显示在应用程序中要把一些额外的信息告知用户,所以就是在此界面中设置的一些信息来供用户查看。3.1.4系统用例规约课表应用程序的几个功能中按照前、后台交互的功能划分,只有提醒时间的管理和记录信息的管理体现了这一部分。提醒时间管理的用例规约①用例图提醒时间用例图,如图3.2所示。图3.2提醒时间用例图②用例描述本用例主要描述了提醒时间的相关功能和进行相关的设置,如表3.2-3.5所示。表3.2提醒时间-查看日期用例描述用例名称查看日期参与者任何使用本应用程序的用户用例概述想查看某一天日期的详细信息前置条件无基本事件流用户打开本课表应用程序可以制定时间的日期。当用户使用键盘或者触摸屏幕时可以查看这个日期对应的其他信息。在有记录的信息上添加标记,这样用户在查看日期时就能知道此日期对于的提醒时间。其他事件流无表3.3提醒时间-查看记录用例描述用例名称查看记录参与者查看日期并且已经设置记录的用户用例描述查看自己在某一天某一个时间设置的记录信息前置条件用户已经在某一个记录下设置了提醒时间续表3.3提醒时间-查看记录用例描述基本事件流用户打开课表应用程序在某一天记录信息设置相应的提醒时间其他事件流无表3.4提醒时间-设置时间用例描述用例名称设置时间参与者登陆本应用程序并且已经设置好记录信息用例描述为某一个记录下的事件设置时间前置条件用户已经记录下时间基本事件流用户记录下某一事件2、在这一事件下设置指定的时间其他事件流无记录信息管理的用例规约①用例图记录信息管理用例图,如图3.3所示。 图3.3记录信息管理用例图②用例描述本用例主要描述了记录信息管理的相关功能,如表3.6-3.9所示。表3.6记录信息管理-添加记录用例描述用例名称添加记录参与者用户用例概述在用户打开应用程序后可以在记录界面中添加记录前置条件用户打开应用程序并且在记录界面上基本事件流1、当用户点击“添加记录”按钮时,程序打开添加记录界面2、用户在相应的文本框中输入信息3、用户点击“完成”按钮时,添加成功其他事件流无表3.7记录信息管理-修改记录用例描述用例名称修改记录参与者用户用例概述在显示记录的界面中可以修改相关的记录信息前置条件用户已经完成记录的添加基本事件流当用户打开“修改/查看”按钮时,系统打开记录修改页面,并且显示本记录的信息2、用户填写相关信息,点击“完成”按钮时,更新记录的信息其他时间流无表3.8记录信息管理-查看记录用例描述用例名称查看记录参与者用户用例概述用户查看已经写好的记录前置条件用户在应用程序下查看日期基本事件流用户点击“修改/删除”按钮,程序打开记录查询页面在此页面下用户可以看到各种相关的记录的信息其他时间流无表3.9记录信息管理-删除记录用例描述用例名称删除记录参与者用户用例概述用户删除已经不用的记录前置条件用户已经成功添加了记录信息基本事件流用户打开记录界面,点击“删除”按钮,就可以删除此记录信息删除完成后在界面中就看不到这个记录的信息其他时间流无通过以上的描述,能够很清楚的知道记录信息相关的功能和操作的步骤,并且很容易发现系统相关方面的漏洞。3.1.5系统的流程分析用户进入课表应用程序可以任意查看每个年份相对应得日期,在每个日期的标志用户可以看到查看的那天是哪一个月的,并且可以为某一天设置记录信息和相应的提醒时间以便提醒我们去做某一件事,从而相应的我们也可以对这个记录进行添加、修改、查看、删除操作。添加记录模块用户进入记录信息管理页面,点击“添加”选项菜单,在添加记录界面中输入信息,如果输入一些非法字符则重新输入信息。流程图如图3.4所示。 图3.4添加记录流程图设置提醒时间模块用户进入设置时间状态,然后通过滑动时间选项来设置时间。流程图如图3.5所示。图3.5设置提醒时间流程图3.2系统开发环境(1)软件环境开发环境:JDK1.6、Eclipse3.7、ADT数据库:SQLite数据库Android环境:AndroidSDK(2)硬件环境笔记本电脑(任何一部配置电脑即可)3.3系统任务的可行性分析(1)技术及开发方法可行性该应用程序使用的是最主流和前沿的先进技术和工具。本程序采用的是MVC模式的开发,使用了Eclipse作为开发平台,结合了Android和Java的基本知识,采用了SQLite数据库,因为它占用的空间小,并且能够处理大量的数据。该应用程序基于Android系统,该系统提供了非常友好的界面和容易实现的操作,它的安全性,灵活性和易用性为数据库和编程提供良好的条件。因此本应用程序开发成熟可行。(2)管理可行性通过采用系统结构化的设计开发方法,将整个程序划分为多个模块,独立管理维护,这样当某一个类出现错误,就可以直接找到这个模块进行修改,而不用去每个类文件进行修改。所以经过这样的模块划分,就更加有利于程序的管理和维护。(3)经济可行性经过各方面详细谨慎的调研,采取了经济高效的开发,以及科学的设计开发方法,以达到降低程序的开发成本。运行可行性本应用程序操作简单易懂,界面友好,程序的运行环境只要基于Android系统即可。本程序的开发符合软件设计所遵循的几大原则,符合人们的逻辑思维习惯,所以本程序的设计为以后的程序升级留有很大的空间。第4章系统设计4.1设计指导思想和原则4.1.1指导思想本应用程序的前端开发使用的是Android布局技术,而后台数据库采用的是SQLite数据库。SQLite设计目标是嵌入式的程序,它是是一款非常轻型的数据库,而且目前已经在很多嵌入式的产品中使用了它,它占用的资源非常的低,在嵌入式的设备中,可能只仅仅需要几百K的内存就足够了,因此能够很大程度上节约系统的内存。它能够支持目前比较主流的几种操作系统,并且同时也能够跟很多编程语言相结合,比如PHP、Java等,还有JDBC接口,同时它的处理速度比Mysql、PostgreSQL这两款开源世界著名的数据库管理系统都快。SQLite虽然占用的资源很小,但是它支持的SQL语句绝对不会比其他开源数据库的差,同时它还支持事务处理功能等等。本应用程序以Eclipse为主要开发工具,整个程序在开发过程中符合MVC模式。MVC模式要求对应用分层,虽然要做许多额外的工作,但程序的结构清晰,可扩展性强、产品的应用性通过MVC模式可以得到更好地体现。这恰恰是日程应用程序所需要的。该程序的功能会随着时代的发展及用户的需要不断的扩展,因此这个程序需要不断的进行功能的升级和修改。4.1.2软件设计原则本应用程序的功能主要包括两方面:一是主界面的显示,在程序的打开界面上能够看到日期的显示和相关的其他信息;二是后台管理,主要实现对记录信息的增、删、改、查等操作。进入程序界面后,就可以很清晰地感受到该程序的设计所遵循的一贯原则,就是从人性化和智能化的角度出发,很好的为用户服务。4.2系统的功能结构设计根据上一章的系统分析,本应用程序实现的功能主要有提醒时间的管理和记录信息的管理等操作,具体如图4.1系统功能结构图所示。Googleandroid平台的系统构架图如下所示:图4.1Android分为四层,从上层到底层分别是应用层、应用框架层、系统运行库层和Linux内核层。(1).应用层。应用层是用Java语言编写的运行在虚拟机上的程序。其实,Google最开始时就在Android系统中捆绑了一些核心应用,比如E-mail客户端、SMS短消息程序、日历、地图、游览器、联系人管理程序,等等。(2).应用框架层。这一层编写Google发布的核心应用时所使用的API框架,开发人员同样可以使用这些框架来发布自己的应用,这样便简化了程序开发的构架设计,但是必须遵守其框架的开发顺序。Android提供了如下一些组件:1).丰富而又可扩展的视图:可以用来构建应用程序,它包括列表(List)、网络(Grid)、文本框(TextBox)、按钮(Button),以及可嵌入的Web游览器。2).内容提供器(ContentProvider):它可以让一个应用程序访问另一个应用程序的数据。3).资源管理器(ResoureManager):提供非代码资源的访问,如本地字符串、图形和布局文件(layoutfile)。4).通知管理器(NotificationManager):应用可以在状态栏中显示自定义的提示信息。5).活动管理器(ActivityManager):用来管理应用程序生命周期并提供常用的导航回退功能。6).窗口管理器(WindowManager):管理所有的窗口程序。7).包管理器(PackageManager):Android系统内的程序管理。4.3系统静态模型设计由于本系统是电子课表应用程序,类图主要包括了类的属性和方法,在系统的实现上,本程序主要包括日期的绘制、添加记录和提醒时间的设置这几个方面,所以类图主要解释这几个方面的信息。其中日期的绘制类图如图4.2所示。图4.2日期的绘制类图本日程的日期绘制除去配置和xml文件,主要用到了Grid.java、CalendarParent.java、CalendarView.java、Calendar.java这四个文件。CalendarParent.javaCalendarParent.java主要封装了显示界面的一些尺寸大小和颜色,除此之外实现了CalendarParent.java的接口,实现了draw()方法,以便让后面的类实现这个类,就可以绘制日历了。而这个类的构造方法直接把要显示的界面和公用的属性放在里面。Calendar.java在构造方法里引用Grid类,并把边框和日期全都加到日历的显示主界面中,然后继承CalendarParent.java,去实现这个draw()方法绘制日历。CalendarView.java这个类直接继承了View类,同样要去用draw()这个方法去绘制日历,然后的onTouchEvent()方法的意思是当手动滑动屏幕时日历的显示位置,而onKeyDown()方法是当在键盘上按上、下、左、右四个方向键时日历的显示位置。Grid.java此类是本日历应用程序的核心类,它的主要作用是封装了日历和处理一些事务的方法,主要方法具体见表4.1所示。表4.1Grid.java主要方法方法名功能说明setCurrentRow(intcurrentRow)设置当前日期所在的行getRecordDays()获取记录的天数setCurrentCol(intcurrentCol)设置当前日期所在的列getCurrentRow()获取当前日期的行getCurrentCol()获取当前日期的列getMonthDays(intyear,intmonth)获取某年某月的天数calculateDays()计算出某个月的天数updateMsg(booleantoday)更新当前日期的信息draw(Canvascanvas)绘制日期isCurrentDay()判定所选的日期是否是当天记录信息的类图如图4.3所示。图4.3记录类图本应用程序的记录信息方面,除了用到普通的类还要关联数据库,并把用户添加的记录信息放到数据库中。Record.java直接继承了Activity类,把记录的相关功能界面显示在虚拟机上,并在此类中写了两个内部类定义了触发事件的方法。AllRecord.java同样继承了ListActivity,把添加、删除、修改记录的界面放置在虚拟机上,并写了内部类来定义触发事件的方法。DBService.java和数据库直接相关连的类,在此类中封装了增、删、改、查相关的方法供其它类调用使用。4.4数据库设计4.4.1数据库设计的概述数据库设计是建立在数据库及其应用系统上的技术,是信息系统开发和建设中的核心技术。为了支持相关程序的运行,所以数据库的设计就变得非常复杂,又由于数据库应用系统的复杂性,因此数据库的最佳设计根本不可能就一蹴而就,而只可能是一种“反复探寻,逐步求精”的过程,也就是必须把数据库中的一些数据对象以及这些数据对象之间关系的过程规划和结构化好。数据库是信息系统的基础和核心,把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。在数据库设计和开发的过程中,它到处都透漏着软件工程的思想。按照软件的生命周期的思路,能把数据库的应用系统从开始的规划到最后被新系统所取代而停止使用的整个期间称之为数据库系统的生存期。4.4.2概念结构设计概念结构设计的任务是根据需求分析阶段产生的需求说明书,按照指定的方法把数据模型抽象为一个不依赖于任何的具体机器,即概念模型。概念模型使设计开发者的注意力能够从繁杂的实现细节中解脱出来,而不仅仅只集中在最重要的信息的处理模式和组织结构上。在数据库的概念结构设计中,通常采用E-R图来表示数据库的概念结构设计。E-R图将现实世界的信息结构统一用属性、实体和它们之间的联系来描述,而本应用程序最终设计出的实体只有记录这一个,下面就说明这个实体。4.4.3逻辑结构设计应用程序的数据库逻辑设计是整个设计的前半段,包括所需的实体和关系,实体规范化等工作,数据库的物理设计是整个设计的后半段,它包含所选择的数据库产品,确定的数据库实体属性(字段)、数据类型、长度、精度确定、DBMS页面大小等。数据库的逻辑设计决定了一个数据库及其应用的整体性能和调优位置。如果一个系统的数据库的逻辑设计的不好,则所有的调优方法对于提高数据库性能的效果都是不明显的。为了逐渐完善数据库设计的方法,必须遵守数据库的相关的规范化理论。而规范化理论又为数据库的逻辑设计提供了理论性的指导和工具,在减少了数据冗余的同时又节约了存储空间,并且同时加快了增、删、改、查的速度。根据用户的记录信息的需求,数据库的逻辑结构设计就包含一个表t_records,其字段见表4.2所示。表4.2数据库表属性数据类型是否为空主键idintegernotnullprimarykeytitlevarcharnotnullcontenttext续表4.2数据库表属性数据类型是否为空主键record_datedatenotnullremind_timetimeremindbooleanshakebooleanringboolean4.4.4物理结构设计设计数据库的物理结构,根据数据库的逻辑结构来选定RDBMS(如Oracle、Sybase等),并设计和实施数据库的存储结构、存取方式等。第5章系统实现5.1应用程序功能实现本系统的主要功能所用到类以及其作用,具体如表5.1系统结构类图说明所示。表5.1主要文件列表类别用到的类或文件作用布局文件main.xml显示主界面record.xml添加记录的界面mydate.xml指定日期的界面提醒时间的管理Remind.java封装提醒时间的属性RemindSeting.java指定所显示的界面AlarmAlert.java设置提醒时间的特点记录信息的管理Record.java指定显示的界面和添加数据库中AllRecord.java指定界面和处理一些事件核心类Grid.java绘制日历和处理事务的方法5.2应用程序界面功能实现5.2.1应用程序主界面应用程序启动主界面如图5.1所示。图5.1系统启动主界面Android的每一个可视化界面都有一个唯一的布局配置文件,该文件里面有许多种布局方式,和各种资源文件如图像,文字,颜色,本程序在运行时,可以通过代码对各配置文件里面的内容进行读取以完成Android应用程序的界面。这样就可以形成多种不同的可视化界面和丰富炫丽的效果。其主要代码如下:LinearLayoutmainLayout=(LinearLayout)getLayoutInflater().inflate( R.layout.main,null); setContentView(mainLayout); calendarView=newCalendarView(this); mainLayout.addView(calendarView);该代码主要把日程应用程序的主界面展现在用户面前。除此之外,我们能够看到在有一个设置布局的方法setContentView(mainLayout),而该方法的mainLayout是通过是通过获取R.java类里的ID获取的,而此ID正是代表res/layout目录下的main.xml文件。下面为布局文件main.xml的代码。<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android" android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent"android:background="@color/calendar_background"><!--android:background="@drawable/background"--> <RelativeLayoutandroid:id="@+id/calHeader"android:layout_width="fill_parent" android:layout_height="70dp"> <LinearLayoutandroid:layout_width="fill_parent" android:layout_height="wrap_content"android:layout_toRightOf="@id/ivLogo" android:layout_marginTop="@dimen/margin"android:orientation="vertical"> <TextViewandroid:id="@+id/tvMsg1"android:layout_width="fill_parent" android:layout_height="wrap_content"android:textColor="@color/text_color"android:textSize="16sp"/> </LinearLayout> </RelativeLayout></LinearLayout>5.2.2指定课表界面日程应用程序的指定日期界面如图5.2所示。图5.2指定课表界面首先需要在单击选项菜单时显示如图5.2所示的设置课表的对话框,菜单单击事件的代码如下:builder=newAlertDialog.Builder(activity);builder.setTitle("指定日程");dpSelectDate.init(calendarView.ce.grid.currentYear,calendarView.ce.grid.currentMonth,calendarView.ce.grid.currentDay,this);builder.setView(myDateLayout);adMyDate=builder.create();onDateChanged(dpSelectDate,dpSelectDate.getYear(),dpSelectDate.getMonth(),dpSelectDate.getDayOfMonth());adMyDate.show();5.2.3显示所有的课表在类中我们可以看到实现记录的一些信息的操作的代码。当单击主界面选项菜单中的“记录/提醒”菜单项,会进入记录列表界面,如图5.3所示,通过该界面的选项菜单,可以对所记录的信息进行增、删、改、查操作。图5.3课表界面类的核心是通过数据库来读取记录信息,代码如下:protectedvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); year=getIntent().getExtras().getInt("year"); month=getIntent().getExtras().getInt("month"); day=getIntent().getExtras().getInt("day"); Cursorcursor=Grid.dbService.query(year+"-"+month+"-"+day); if(recordArray==null) recordArray=newArrayList<String>(); if(arrayAdapter==null) arrayAdapter=newArrayAdapter<String>(this, android.R.layout.simple_list_item_1,recordArray); else arrayAdapter.clear(); idList.clear(); while(cursor.moveToNext()) { arrayAdapter.add(cursor.getString(1)); idList.add(cursor.getInt(0)); } Resourcesres=getResources(); Drawabledrawable=res.getDrawable(R.color.calendar_background); this.getWindow().setBackgroundDrawable(drawable);}此外,在这个类中还处理了3个选项菜单的事件。这三个菜单事件的代码如下:增加记录菜单的事件代码:Intentintent=newIntent(activity,Record.class);activity.startActivity(intent);修改记录菜单的事件代码如下:AllRecordallRecord=(AllRecord)activity; intindex=allRecord.getSelectedItemPosition(); if(index<0) returnfalse; allRecord.startEditRecordActivity(index);删除记录菜单的事件代码如下:AllRecordallRecord=(AllRecord)activity; intindex=allRecord.getSelectedItemPosition(); if(index<0) returnfalse; recordArray.remove(index); intid=idList.get(index); idList.remove(index); allRecord.setListAdapter(arrayAdapter); Grid.dbService.deleteRecord(id);5.3数据库存储方式SQLite是一款非常流行的嵌入式数据库,它支持SQL查询,并且只用很少的内存。Android在运行时集成了SQLite,所以每个Android应用程序都可以使用SQLite数据库。对数熟悉SQL的开发人员来时,使用SQLite相当简单。但是,由于JDBC不适合手机这种内存受限设备,所以Android开发人员需要学习新的API来使用SQLite。Android不自动提供数据库。在Android应用程序中使用SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android提供了SQLiteOpenHelper帮助我们创建一个数据库,我们只要继承SQLiteOpenHelper类,就可以轻松创建数据库。SQLiteOpenHelper类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQLiteOpenHelper的子类,至少需要实现三个方法:•构造函数,调用父类SQLiteOpenHelper的构造函数。这个方法需要四个参数:上下文环境(例如,一个Activity),数据库名字,一个可选的游标工厂(通常是Null),一个代表你正在使用的数据库模型版本的整数。•onCreate()方法,它需要一个SQLiteDatabase对象作为参数,根据需要对这个对象填充表和初始化数据。•onUpgrage()方法,它需要三个参数,一个SQLiteDatabase对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。在日程应用程序的DBService类中同样实现了上述的三个方法来创建数据库和一些操作。当我们需要在数据库中进行创建表、删除数据、插入数据时,一般就要调用getReadableDatabase()或getWriteableDatabase()方法,来得到SQLiteDatabase实例去改变数据库里的内容。其中的删除数据的代码如下:publicvoiddeleteRecord(intid){ Stringsql="deletefromt_recordswhereid="+id; SQLiteDatabasedb=this.getWritableDatabase(); db.execSQL(sql);}而查询数据时我们就要用到Cursor游标来遍历数据库中的数据了,其代码如下:publicCursorquery(Stringdate){ SQLiteDatabasedb=this.getReadableDatabase(); Cursorcursor=db.rawQuery( "selectid,titlefromt_recordswhererecord_date='"+date +"'orderbyiddesc",null); returncursor;}第6章系统测试为了提高本应用程序的质量,使应用程序的使用更加人性化,友好化,一个完整的软件测试是必不可少的。通过软件测试我们能够发现其中的一些错误和不合理的地方,这对于系统的完善是极有好处的。6.1测试方案及测试用例软件测试是对软件质量保证的关键步骤,它是在软件投入运行前,对软件的需求分析、软件规格说明和编码实现的最终审查。通常对软件的定义有两种描述,第一软件测试是为了发现错误而必须执行的程序的过程;第二软件测试是根据软件设计开发各阶段的需求说明和程序的内部结构而精心设计的一些测试用例,并利用这些测试用例运行程序和及时发现错误的过程,即执行测试步骤。按照软件测试用例的设计方法而论,软件测试可以分为白盒测试和黑盒测试法。按照软件测试的策略和过程分类,软件测试可分为单元测试、集成测试、系统测试、验证测试和确认测试。6.2系统测试计划在系统的开发和设计过程中,对系统做了如下几个方面的测试:(1)功能及正确性测试:对后台记录信息的增、删、改、查等操作的测试。(2)及时正确的处理系统各种错误的异常。6.3系统测试(1)添加记录测试用例,具体如表6.1所示。功能描述:验证添加记录信息功能。用例目的:验证添加记录信息功能的实现。前提条件:已经进入到添加记录信息的页面。表6.1添加记录测试序号输入/动作期望的输出实际情况测试结果1填写错误信息提示添加失败提示添加失败弹出警告2输入标题和内容记录成功在页面中显示添加成功正确(2)修改记录测试用例,具体如表6.2所示。功能描述:验证修改记录信息功能。用例目的:验证修改记录信息功能的实现。前提条件:已经进入到修改记录信息的页面。表6.2修改记录测试序号输入/动作期望的输出实际情况测试结果1填写错误信息提示添加失败程序崩溃弹出错误信息2输入标题和内容记录成功在页面中显示添加成功正确(3)删除记录测试用例,具体如表6.3所示。功能描述:验证删除记录信息功能。用例目的:验证删除记录信息功能的实现。前提条件:已经进入到删除记录信息的页面。表6.3删除记录测试序号输入/动作期望的输出实际情况测试结果1点击“删除”按钮记录信息从页面列表中消失删除成功正确(4)查看记录测试用例,具体如表6.4所示。功能描述:验证查看记录信息功能。用例目的:验证查看记录信息功能的实现。前提条件:已经进入到查看记录信息的页面。表6.4查看记录测试序号输入/动作期望的输出实际情况测试结果1点击“查看”按钮记录信息在页面中显示查看成功正确6.4测试总结通过对各个不同功能模块的测试,本应用程序基本运行正确,没什么太大的问题,但是因个人水平有限,仍然有许多地方需要改进,比如界面的美观,提醒时间的功能的多样性等等。一个完整的运行的系统不可能一步做到完美的地步,这需要在以后的学习生活中进一步完善。最后经过多方面的方法测试,本应用程序基本设计完成,能够正常运行。第7章结论本系统是基于Android系统的应用程序,所以主要是在Android的框架中进行开发设计。由于在Android系统下开发程序和在JavaME的原理类似,所以本系统也采用了类似于MVC模式的原理。本应用程序由界面显示和后台管理组成,符合一般人的逻辑思维。本程序的一个特点是在界面上进行了优化,在处理一些事务的逻辑算法上进行了优化。所以,在使用本程序时会感到人性化和界面的友好。一方面,本程序采用了类似于MVC模型的开发模式,由Activity类负责调用处理事务的方法并在前台进行显示,由xml文件负责页面的布局。另一方面,本应用程序采用Java和Android的相关技术,实现页面的展现和相关逻辑思路的处理,用SQLite数据库实现对记录信息的增、删、改、查等操作,并尽可能的在Android的UI上实现了美观。基于以上原因,使得本程序在以后的扩展和程序的升级上都有很大的空间。通过完成这次的毕业论文,使我认识的一个完整项目的开发的不易,也使我进一步加深了对数据库操作的理解,清楚了一个完整的应用程序开发的流程,进一步认识到一个优秀的数据库和良好的算法是多么的重要。而且还使我认识到一个优秀的程序离不了测试,只有不断的进行测试,我们的程序才能趋于完美。参考文献[1].BruceEckel.JAVA编程思想[M],北京:机械工业出版社,2003.[2].赛奎春.JAVA工程应用与项目实践[M],北京:机械工业出版社,2002.[3].FLANAGAN.JAVA技术手册[M],北京:中国电力出版社,2002.[4].孙涌.现代软件工程[M],北京:北京希望电子出版社,2003.[5].萨师煊,王珊.数据库系统概论[M],北京:高等教育出版社,2002.[6].王向辉,张国印,沈洁.Android应用程序开发[M],北京:清华大学出版社,2009.[7].李刚.疯狂Android讲义[M],北京:电子工业出版社,2011.[8].杨丰盛.Android应用开发揭秘[M],北京:机械工业出版社,2010.[9].邓凡平.深入理解Android[M],北京:机械工业出版社,2011.[10].王世江,盖索林.GoogleAndroid开发入门指南[M],北京:人民邮电出版社,2009.[11].哈希米,克曼特内尼,麦克莱恩.精通Android2[M],北京:人民邮电出版社,2010.[12].柯元旦.Android内核剖析[M],北京:电子工业出版社,2011.[13].墨菲.Android开发入门教程[M],北京:人民邮电出版社,2010.[14].梅尔.Android2高级编程(第2版)[M],北京:清华大学出版社,2010.[15].郭宏志.Android应用开发详解[M],北京:电子工业出版社,2010.致谢经过几个月的努力,毕业设计终于完成,在这期间我学到了很多东西。而在这最后的几个月时间也同样离不开老师的教诲和指导,我深知如果没有老师的指导,我的论文不可能那么顺利的完成了。所以,我要感谢这四年里各位老师对我的谆谆教诲和不遗余力的学习指导。首先,我要非常感谢我的导师。她为人随和热情,治学认真严谨。在平常的学习生活中能够像朋友一样鼓励你,而在毕业论文的写作和措辞等方面她总会以非常严格的标准要求你。从开题报告开始,一直到论文的完成,老师始终认真仔细负责的给予我细致的指导。正是由于老师的细心帮助和不厌其烦的指导,我的毕业论文才能顺利完成。其次,非常感谢计算机的计算机系老师们,虽然他们没有直接参与我的论文指导,但他们总是在关键的时候给予我最大的帮助和启示,使我学到了更多的专业知识,从而能够顺利的完成毕业论文。最后,还要深深感谢我的同学和家人,是他们给予了我精神上和物质上的鼓励,使我得以顺利完成了毕业论文。总之,在做毕业设计期间,我学到了很多东西,这势必会为我未来的发展打下很好的基础。我不会辜负老师和同学的期望,我会更加努力的。

外文原文:ApplicationFundamentalsAndroidapplicationsarewrittenintheJavaprogramminglanguage.ThecompiledJavacode—alongwithanydataandresourcefilesrequiredbytheapplication—isbundledbytheaapttoolintoanAndroidpackage,anarchivefilemarkedbyan.apksuffix.Thisfileisthevehiclefordistributingtheapplicationandinstallingitonmobiledevices;it'sthefileusersdownloadtotheirdevices.Allthecodeinasingle.apkfileisconsideredtobeoneapplication.Inmanyways,eachAndroidapplicationlivesinitsownworld:1.Bydefault,everyapplicationrunsinitsownLinuxprocess.Androidstartstheprocesswhenanyoftheapplication'scodeneedstobeexecuted,andshutsdowntheprocesswhenit'snolongerneededandsystemresourcesarerequiredbyotherapplications.2.Eachprocesshasitsownvirtualmachine(VM),soapplicationcoderunsinisolationfromthecodeofallotherapplications.3.Bydefault,eachapplicationisassignedauniqueLinuxuserID.Permissionsaresetsothattheapplication'sfilesarevisibleonlytothatuserandonlytotheapplicationitself—althoughtherearewaystoexportthemtootherapplicationsaswell.It'spossibletoarrangefortwoapplicationstosharethesameuserID,inwhichcasetheywillbeabletoseeeachother'sfiles.Toconservesystemresources,applicationswiththesameIDcanalsoarrangetoruninthesameLinuxprocess,sharingthesameVM.ApplicationComponentsAcentralfeatureofAndroidisthatoneapplicationcanmakeuseofelementsofotherapplications(providedthoseapplicationspermitit).Forexample,ifyourapplicationneedstodisplayascrollinglistofimagesandanotherapplicationhasdevelopedasuitablescrollerandmadeitavailabletoothers,youcancalluponthatscrollertodothework,ratherthandevelopyourown.Yourapplicationdoesn'tincorporatethecodeoftheotherapplicationorlinktoit.Rather,itsimplystartsupthatpieceoftheotherapplicationwhentheneedarises.Forthistowork,thesystemmustbeabletostartanapplicationprocesswhenanypartofitisneeded,andinstantiatetheJavaobjectsforthatpart.Therefore,unlikeapplicationsonmostothersystems,Androidapplicationsdon'thaveasingleentrypointforeverythingintheapplication(nomain()function,forexample).Rather,theyhaveessentialcomponentsthatthesystemcaninstantiateandrunasneeded.Therearefourtypesofcomponents:ActivitiesAnactivitypresentsavisualuserinterfaceforonefocusedendeavortheusercanundertake.Forexample,anactivitymightpresentalistofmenuitemsuserscanchoosefromoritmightdisplayphotographsalongwiththeircaptions.Atextmessagingapplicationmighthaveoneactivitythatshowsalistofcontactstosendmessagesto,asecondactivitytowritethemessagetothechosencontact,andotheractivitiestoreviewoldmessagesorchangesettings.Thoughtheyworktogethertoformacohesiveuserinterface,eachactivityisindependentoftheothers.EachoneisimplementedasasubclassoftheActivitybaseclass.Anapplicationmightconsistofjustoneactivityor,likethetextmessagingapplicationjustmentioned,itmaycontainseveral.Whattheactivitiesare,andhowmanytherearedepends,ofcourse,ontheapplicationanditsdesign.Typically,oneoftheactivitiesismarkedasthefirstonethatshouldbepresentedtotheuserwhentheapplicationislaunched.Movingfromoneactivitytoanotherisaccomplishedbyhavingthecurrentactivitystartthenextone.Eachactivityisgivenadefaultwindowtodrawin.Typically,thewindowfillsthescreen,butitmightbesmallerthanthescreenandfloatontopofotherwindows.Anactivitycanalsomakeuseofadditionalwindows—forexample,apop-updialogthatcallsforauserresponseinthemi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论