毕业论文 -基于Android平台的个人日历的设计与开发_第1页
毕业论文 -基于Android平台的个人日历的设计与开发_第2页
毕业论文 -基于Android平台的个人日历的设计与开发_第3页
毕业论文 -基于Android平台的个人日历的设计与开发_第4页
毕业论文 -基于Android平台的个人日历的设计与开发_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、基于Android平台的个人日历的设计与开发摘要个人日历是基于Android平台开发的,运行在Android手机平台的个人日程管理软件。本文是对基于Android平台的个人日历的设计与开发。首先,本文介绍了软件开发的背景与特点。然后,本文介绍了软件所使用的关键技术,包括Android、fragment、service、activity。再然后,介绍日历的设计与开发,包括系统需求分析、功能设计、框架设计、界面设计、数据层设计以及各部分功能的实现。最后本文对全文进行总结,总结设计实现过程中遇到的问题、系统的不足、优势与自己的收获。关键词:个人日历、Android、日程管理The designati

2、onand development of personal calendar based on the Android platformAbstractPersonal calendar is a personal schedule management software developed on the Android platform, running on the Android platform. This paper is to design and develop of personal calendar based on the Android platform.First, t

3、his paper introduces the background and characteristics of software development. Then, this paper introduces the key technologies of software use, including Android, fragments, service, activity. Then, introduces the design and development of calendar, including system requirements analysis, functio

4、nal design, framework design, interface design, the data layer design and the realization of the function of each part. Finally this paper summarizes the full text, summarizes the problems in the implementation process of design, advantages and disadvantages of the system and the deficiency of the h

5、arvest of their own.Keyword: Personal calendar, Android, schedule management目录 TOC o 1-3 h z u HYPERLINK l _Toc421866020 1.绪论 PAGEREF _Toc421866020 h 5 HYPERLINK l _Toc421866021 1.1.课题背景 PAGEREF _Toc421866021 h 5 HYPERLINK l _Toc421866022 1.2.研发现状 PAGEREF _Toc421866022 h 5 HYPERLINK l _Toc421866023

6、1.3.软件研究意义 PAGEREF _Toc421866023 h 5 HYPERLINK l _Toc421866024 1.4.研究内容与方法 PAGEREF _Toc421866024 h 6 HYPERLINK l _Toc421866025 2.相关技术与知识 PAGEREF _Toc421866025 h 7 HYPERLINK l _Toc421866026 2.1.开发平台Android PAGEREF _Toc421866026 h 7 HYPERLINK l _Toc421866027 2.2.MVC开发模式 PAGEREF _Toc421866027 h 7 HYPER

7、LINK l _Toc421866028 2.3.局部界面fragment PAGEREF _Toc421866028 h 7 HYPERLINK l _Toc421866029 2.4.Web service PAGEREF _Toc421866029 h 8 HYPERLINK l _Toc421866030 2.5.Localservice PAGEREF _Toc421866030 h 8 HYPERLINK l _Toc421866031 2.7.线程 PAGEREF _Toc421866031 h 9 HYPERLINK l _Toc421866032 2.8.开发平台介绍 PAG

8、EREF _Toc421866032 h 9 HYPERLINK l _Toc421866033 3.个人日历的设计 PAGEREF _Toc421866033 h 10 HYPERLINK l _Toc421866034 3.1.需求分析 PAGEREF _Toc421866034 h 10 HYPERLINK l _Toc421866035 3.2.功能设计 PAGEREF _Toc421866035 h 12 HYPERLINK l _Toc421866036 3.3.数据层设计 PAGEREF _Toc421866036 h 15 HYPERLINK l _Toc421866037 3

9、.4.界面布局设计 PAGEREF _Toc421866037 h 20 HYPERLINK l _Toc421866038 4.个人日历的实现 PAGEREF _Toc421866038 h 23 HYPERLINK l _Toc421866039 4.1.数据层实现 PAGEREF _Toc421866039 h 23 HYPERLINK l _Toc421866040 4.2.界面实现 PAGEREF _Toc421866040 h 35 HYPERLINK l _Toc421866041 4.3.Web服务 PAGEREF _Toc421866041 h 43 HYPERLINK l

10、_Toc421866042 4.4.本地服务 PAGEREF _Toc421866042 h 46 HYPERLINK l _Toc421866043 4.5.日程同步 PAGEREF _Toc421866043 h 48 HYPERLINK l _Toc421866044 4.6.屏幕旋转后的Activity数据保存 PAGEREF _Toc421866044 h 50 HYPERLINK l _Toc421866045 4.7.Activity向Fragment传递数据 PAGEREF _Toc421866045 h 50 HYPERLINK l _Toc421866046 4.8.Fra

11、gment之间通信 PAGEREF _Toc421866046 h 51 HYPERLINK l _Toc421866047 5.总结 PAGEREF _Toc421866047 h 53 HYPERLINK l _Toc421866048 5.1.遇到的问题与解决 PAGEREF _Toc421866048 h 53 HYPERLINK l _Toc421866049 5.2.软件的优势与不足 PAGEREF _Toc421866049 h 54 HYPERLINK l _Toc421866050 5.3.本章小结 PAGEREF _Toc421866050 h 54 HYPERLINK l

12、 _Toc421866051 6.总结 PAGEREF _Toc421866051 h 55 HYPERLINK l _Toc421866052 参考文献 PAGEREF _Toc421866052 h 56 HYPERLINK l _Toc421866053 致谢 PAGEREF _Toc421866053 h 56绪论课题背景在现代的生活中,人们每天要处理的事务越来越多。如何有效的管理自己每天的日程安排,已经变得越来越重要。1尤其在团队工作中,更需要相互协调以提高整体效率。2 在生活中中重要事件多半以电话、短信、邮件的方式发送,手机中的通讯录、短信以及其余重要数据的丢失,影响恐怕就难以估量

13、了,由于那意味着会丢掉一些重要的短信。3 因此日程管理软件,一直深受人们的喜爱 。但是 ,传统的日历工具设计和功能千篇一律,仅能管理自己的日程。本软件可以定时或实时从后台数据库中通过Web Services下载与个人有关的日历信息,并能够根据设定的提醒方式和提醒时间自动提醒用户注意相关日程安排。研发现状国内外Android软件现状Android平台是Google公司推出的基于Linux系统一款移动操作平台。虽然只推出没有几年但发展迅速,尤其在国外Android更是呼声很高,占据了相当大的市场份额。中国是最大的消费大国,由于3G网络的推广更加推动了智能手机的发展,这几年个打手机场上都对Andro

14、id工程师需求量很大。未来几年Android发展会更为迅猛,它将不再只是个手机平台,他将进入平板、电视、车载系统等。日历软件发展现状目前许多日历软件,他们可以实现各种各样的功能,如今日运势、纪录日程、黄历、吉日查询、法定节假日查询、生理周期日历、星座查询、生肖查询、阴阳转换等。外表也更加美观,各式各样的更能满足人们对日历软件的需要。有些还提供各种美观的小插件,是日历使用更加方便美观。不过这些软件均仅能管理个人日程,不能获得其他管理软件的日程。软件研究意义Android平台是Google公司推出的基于Linux系统一款移动操作平台。该平台具有开放性、不受运营商束缚、有丰富的硬件选择、不受限制的开

15、发和与谷歌应用可以无缝结合等优势,现在已渐成为主流的智能手机平台。鉴于Android平台仍是一个较新的开发平台,仍有很大的发展空间,国内外很多运营商和软件公司都急需该平台的开发人员。通过本次毕业设计可以很好的锻炼学生实践能力,同时也为学生就业创造条件。研究内容与方法研究内容个人日历后台软件系统主要实现用户个人日历和企业日历数据的存储、手机日历端、PC日历端与后台系统日历项的同步、OA及项目管理等系统与日历系统的接口等功能。通过后台系统,用户可以随时将手机中的日历信息保存到后台数据库中,也可以随时同步后台数据库中与自身相关的日历信息;OA及项目管理系统中的日程安排也能够自动同步到后台系统和手机端

16、。手机日历客户端主要实现企业日历信息的月视图、周视图、日视图、日历列表、新增日历、节假日、日历同步等功能。手机日历客户端软件可以定时或实时从后台数据库中通过Web Services下载与个人有关的日历信息,并能够根据设定的提醒方式和提醒时间自动提醒用户注意相关日程安排。用户也可以在手机上新建日程或工作安排,并将其发送到服务器端,然后通过后台管理软件自动同步到相关人员的手机上,实现工作安排的自动通知和自动提醒。研究方法本系统用软件工程化思想和方法开发软件,对软件进行了软件计划、需求分析、设计和实现。需求分析根据实际情况获得需求信息并进行总结,提出软件的功能。软件设计根据需求分析进行框架设计、界面

17、设计、数据库设计。软件实现根据设计文档实现软件。相关技术与知识开发平台AndroidAndroid是一个基于Linux的操作系统。自推出以来Android平台迅猛发展,占据了巨大的市场份额,而且发展速度越来越快。目前Android手机销量约占全球三分之一,成为世界上最大的Android手机市场。Android的开发语言是Java。从全球来看从事Java编程的人数一直占据着第一的位置。而iPhone应用的开发语言是Object C,从事Object C编程的人才刚刚步入前十。并且Android上手容易,经过几个月的培训即可掌握安卓的开发技巧,并且安卓手机较为便宜,平台免费。在中国Android拥

18、有很好的学习环境和许多开发社区,其中一些惊颤举办安卓开发者活动,一起交流技术和经验,并且免费发放学习资料更课题了解到做什么养的安卓应用可以赚钱,是开发者不在迷茫。MVC开发模式Android应用是基于模型控制器视图(Model-View-Controller,简称MVC)的架构模式进行设计的。 在MVC设计模式中,应用的任何对象归根结底都是模型对象、视图对象以及控制对象中的一种。模型对象存储着应用的数据和业务逻辑。模型类通常被用来映射与应用相关的一些事物。模型对象不关心用户界面,它存在的唯一目的就是存储和管理应用数据。视图对象需要知道如何绘制界面、如何处理用户和界面的互动。以往的经验法则表明,

19、只要是屏幕上可以看得的就是视图对象。控制对象包含了应用的逻辑单元,是联系视图与模型对象的纽带。控制对象被设计用来响应由视图对象触发的各类事件,此外还用来管理模型对象与视图层间的数据流动。局部界面fragment自从Android3.0引入fragment概念之后,fragment被解释为碎片或者片段。一个fragment是用户界面的一个区域,可以再一个Activity中使用多个fragment来组合成一个多面板界面,也可以在不同的Activity中利用同一个fragment。可以把fragment理解为一个模块化部分,他有自己的生命周期、可以独立的接受用户的操作,并可以在Activity运行过

20、程中添加或删除一个fragment。管理用户界面的fragment又称为UI fragment。它也可以自己产生布局文件。 fragment视图包含了用户会用到的一些的可视化UI元素。Web serviceWeb service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式操作的应用程序。1 Web Service技术, 能使得运行在不同平台上的不同应用不用借助第三方软件或硬件就可相互交换数据。更具Web Service规范发布的应用之间, 不管他们是用什么语言开发的、运行在什么平台上的都能相

21、互交换数据。Web Service减少了应用接口的花费。LocalserviceService是安卓四大组件之一,它是可以长时间在后台运行并且需要提供用户接口的应用组件。在启动一个应用的服务后即使在启动其他的应用之前的服务依旧会运行。并且其他非service组件也可以与service绑定并进行交互,甚至允许多线程交互。本地服务不是独立的进程,它依附在主进程上这样可以节省资源。Service有两种形式:启动形式:通过调用startService()方法启动服务,通过这种方式启动的service即使启动它的Activity已经被销毁它也会一直在后台运行。但是它只能执行单一的操作不能返回结果给调用者

22、。通过调用stopService()来停止服务。绑定形式:通过调用bindService()方法启动服务,通过这种方式启动的服务会为它所绑定的组件一个交互接口,通过这个接口应用组件可以与service交互、请求结果、甚至跨进程通信。但是当组件被销毁后service也就销毁了。通过调用unbindService()停止服务。SQLite数据库SQlite是一种轻量级的、功能强大关系数据库,它用于完成实现结构化的数据存储和各种复杂的数据处理。SQlite数据库支持多数的SQL92标准,最大支持数据到2TB。他没有服务进程,但是它所包含的数据库、表等所有数据已经被放入Android系统平台的底层库文

23、件,因此我们可以直接通过相关的API来调用,从而实现数据库的各种功能。线程线程是进程内部执行代码的实体,他是CPU调度资源的最小单元,他没有自己独立的资源,他只有自己的执行堆栈和局部变量,所以线程不能独立执行不许依附在一个进程上。Thread:重写其run()方法,在其中实现我们需要线程所要完成的任务。在Activity中实例化并通过start()运行线程。在线程运行过程中如果需要更新UI可通过handler发消息给主线程。AsyncTask:他是一种简单实现后台运行事物的方式。他的任务在UI县城之外运行,而回调方法是在UI线程中执行,这样就可以有效的避免了使用Handler所带来的麻烦。As

24、yncTask是一个抽象类,要使用它必须继承这个类并重写其中的方法。开发平台介绍开发工具Eclipse,adt,Visual Studio2010,SQL Server 2008开发语言Java,C#测试平台Android手机,Win7个人日历的设计需求分析对功能的规定本软件要求将办公自动化平台(OA)系统中涉及日程的项目推送到手机终端软件中。其基本的数据相关流程如图3-1-1所示。图 3-1-1 日历系统结构图其中“手机日历”模块完成在手机终端(Android平台)中的显示日历、新建日历等功能,并提供手动/定时与中心数据库同步日历的功能。中心数据库模块完成从OA系统、项目管理系统中抽取与日期

25、相关的日程项,并整理为标准的日历格式后向手机端推送日历,要求使用Web服务的形式提供接口。对性能的规定精度时间戳精确到1毫秒;周视图、日视图日程项的时间精度为15分钟。提前提醒的时间精度为1分钟,即不支持小于1分钟的时间提醒;时间特性要求手机向中心服务器读写数据网络超时响应时间:10秒,若超过10秒没有取回数据则退出;手机端本地数据库查询超时:3秒;面之间切换延时:不超过2秒;灵活性本软件系统前台手机端与后台服务器端采用Web服务方式通信,可以减少防火墙的配置工作以及具有良好的可扩充性。手机端软件与后台系统之间通过Web Services进行通信,只要接口信息不发生改变,手机端界面和功能的变化

26、不影响后台系统的开发和使用。输入输出要求后台服务器端提供的Web服务的参数类型包括字符串和整型两类,结果以自定义类对象列表的形式返回。数据管理能力要求中心数据库采用SQL Server2008数据库,有很强的数据存储和管理能力,完全能够胜任个人日历系统的数据要求。另外,Web服务发布在IIS上,其并发访问由IIS负责,多人同时进行同步不存在问题。故障处理要求本系统可能在下列情况下出现故障,待相关问题解决后,本系统能够重新正常运行:用户手机不能正常联网时,会影响到日历信息上传和同步的实时性;安装中心数据库的计算机出现故障或网络连接不畅时,会影响系统的稳定运行;运行环境规定设备设备需求情况将分别从

27、前台手机端和后台服务端说明:Android设备运行要求:支持Android2.2平台及以上,运行内存大于512M,系统存储空间大于128M(用于存数据库),屏幕分辨率大于800*400,具备联网功能的手机。服务器运行要求:需要一台性能较好的服务器(操作系统Windows 2003 Server,内存4G、硬盘512G、双网卡),安装数据库服务器和IIS服务器,其上运行后台同步程序和Web服务。支持软件服务器端开发所用到的支持软件包括:Windows 2003 ServerMicrosoft SQL Server2008功能设计总体框架设计个人日历系统包含手机端(Android)和服务器端两部分

28、组成。系统的总体结构图如下图所示:信息系统的内网通过SOA应用服务器的80端口连接到InterNet网,再通过无线加密通信将信息送到Android手机上。SOA是一种面向服务的软件架构,是当前先进的软件结构。SOA对外以80为服务端口,易于配置防火墙。SOA架构借用现有的HTTP应用服务器的并发控制,可靠、安全。用一览表及框图的形式说明本系统的系统元素(各层模块、子程序、公用程序等)的划分,扼要说明每个系统元素的标识符和功能,分层次地给出各元素之间的控制与被控制关系.Android端手机软件的程序结构图为:Android程序由手机界面显示程序、手机服务程序两部分组成。手机主程序完成主日历视图、

29、新建日程视图、日程查看视图、假期查看视图;手机后台服务程序则完成状态栏提醒、桌面插件更新、后台数据更新等功能。手机主视图界面由月视图、周视图、日视图、三个视图组成。这三个视图共享一个Android Activity,当用户切换视图时动态生成视图单元格。日历信息获取过程:分析现有的信息服务系统,找到工作项子系统;分析工作项子系统的数据库,设计查询日历项的存储过程(SQL编写);将存储过程映射为WebService(C#或者Java编写);将Web服务部署在应用服务器上(IIS或者Tomcat);移动设备通过Web服务读写日历信息。功能列表导航栏设计导航栏由8个圆形按钮构成,他们的功能分别为查看月

30、视图、查看周视图、查看日视图、将日期跳到今天、查看假期、添加日程、同步日程。月视图设计该视图在整个屏幕上提供整月的信息查看,并且可左右滑动显示上一月和下一月的日期信息,该视图的最小操作单位为天,字体随手机分辨率自动设定。月视图分为三部分:头部日期标识、月主视图、日程列表。头部日期标识分为两部分:日期显示、农历阳历转换月主视图:上方为周一至周日导航;下方显示一个月的日单元格,日单元格可以显示公历和可选显示农历,单元格有日程项则显示一个标记,单击日单元格显示当日日程项,双击或者长按日单元格可以在当日新建一个日程项。用户可以根据日单元格的不同来判断是否为今天(有圆圈)、假期(蓝色)、所选中的日期(绿

31、色)、是否有日程安排(右上方红色三角)、非本月(灰色)。日程列表:显示所点击日期的日程信息(主题、时间、地点、是否完成),并支持上下滑动查看日程,点击可产看详细信息。周视图设计该视图提供整周日程的查看功能,并且可左右滑动显示上一周和下一周的日期信息,字体随手机分辨率自动设定。周视图分为两部分头部日期标识、周主视图。头部日期标识分为两部分:日期显示、农历阳历转换周主视图:上方为周一到周日导航,点击可跳转到显示那天的日视图;下方显示一周七天、每天24小时的日程信息和当日的全天日程。单击小时单元格可查看当时日程,双击或者长按小时单元格可新建一个日程项。日视图设计该视图提供一天的日程查看功能,并且可左

32、右滑动显示上一周和下一周的日期信息,字体随手机分辨率自动设定。日视图分为两部分:日期标识、日主视图。头部日期标识分为两部分:日期显示、农历阳历转换日主视图:显示一天的全天任务、每天24小时的日程信息,单击小时单元格可查看当时日程,双击或者长按小时单元格可新建一个日程项。不同紧急程度的任务使用不同的背景颜色。日程项显示主题、地点。每小时的任务太多,单元格太小、则尽量显示更多的文字。列表视图设计列表视图提供从今天开始的100条日历,支持上下滑动查看前后的日程项。日程项之间使用日历时间栏区分,日历时间栏要求显示年月日和星期。默认显示从今天开始的100个日程,并提供主题关键字检索功能。点击一个日程项可

33、产看详细信息。新建、查看、修改、删除日程可以新建一个日程;查看一个日程的详细信息,修改或者删除日程。假期可查看从今天开始的一年的假期。同步功能可通过web srvice同步日程新到本地数据库。分为手动同步和自动同步两种。菜单设置:可以设置Web服务地址、同步数据的频率、网络超时时间。个人的姓名和编号的注册和注销。退出:退出程序。桌面插件该视图提供一个桌面查看,便于用户快捷查看今天开始的10条日程,点击后可进入本软件主程序。功能衔接打开本软件主程序显示月视图,点击导航栏的“月”按钮可由其他视图跳转回月视图;点击导航栏“周”按钮可跳转到周视图;点击周视图的星期导航可跳转到日视图,点击导航栏“日”按

34、钮可跳转到日视图。点击导航栏“+”按钮可添加日程,长按或双击月视图的日单元格、周视图和日视图的小时单元格可添加日程。点击导航栏“三”按钮,可进入列表视图,查看今天开始的日程。点击月视图的日程列表和列表视图的日程项可进入查看日程详细信息界面,在查看页面可点击“删除”按钮删除个人日历信息,点击“修改”按钮修改日程信息。按菜单键弹出菜单。数据层设计数据库设计手机端sqilite数据库:本系统中,设计了表:表名:ColorConfig(配置表)字段名类型说明约束idInteger本地数据库索引ID自增、主键isUseInteger是否使用该配置userIDString用户IDuserNameStrin

35、g用户名userStatusString用户状态默认值:状态未知NAMESPACEStringwebservice的默认名字空间默认值:/timeOutintweb服务的网络超时时间默认值:5000imeiString手机字串标识WEBSERVICE_URLStringweb服务网址WorkListDataBarBarColorint列表项中 日期栏的背景色默认值:Color.DKGRAYCalendar_WeekBgColorint周视图背景颜色默认值:Color.WHITECalendar_DayBgColorint日视图背景颜色默认值:Color.WHITEisHoliday_BgCol

36、orint假期单元格颜色默认值:0 xFF6CAAD9unPresentMonth_FontColorint非本月日期单元格字体颜色默认值:Color.GRAYisPresentMonth_FontColorint本月日期单元格字体颜色默认值:Color.BLACKisToday_BgColorint几天单元格背景颜色默认值:0 xFFD3D3D3special_Reminderint提醒三角形颜色默认值:Color.REDCalendar_WeekFontColorint星期视图字体颜色默认值:Color.BLACKDayHourCellFontCellint日视图小时字体大小默认值:16F

37、ontSizeint自动字体大小默认值:25FontSizeTitleSmallint小字体大小默认值:12FontSizeTitleBigint标题字体大小默认值:20DayHourHeightint日视图单元格高度默认值:35toShowLunarBoolean是否显示农历默认值:falseMaxQueryCntOfWorkItemListint查询最多的项目数默认值:20该表是程序运行过程中常用到的一些变量的配置的存储。表名:CalendarItem(日程表)字段名类型说明约束idInteger数据库自建ID自增、唯一、非空CalendarIdString日历ID主键YearIDint年

38、,用于重复项计算默认值:-1MonthIDint月,用于重复项计算默认值:-1WeekIDint周,用于重复项计算默认值:-2DayIDint日,用于重复项计算默认值:-1HourOfDay24int小时,用于重复项计算默认值:-1TopicString日程主题StartTimeString日程开始时间EndTimeString日程结束时间IsWholeDayString是否为整天任务默认值:“否”PlaceString日程地点RepeatInteger是否重复(0表示不重复,1表示按天重复,2表示按周重复,3表示按月重复,4表示按年重复)默认值:-1RemindInteger提醒时间,设计单

39、位为 (分钟)默认值:-2CreatTimeString创建时间CreatorString创建者SendEmailString是否发送邮件提醒默认值:“否”CompletedTimeString完成时间CalendarTypeString日历类型,暂定为整数类型(自建日历,企业日历)AlterTimeString最后更新时间(初始值等于创建时间,用于同步)NoteString备注IsCompletedString是否完成PriorityString紧急程度默认值:一般ChargerString负责人PersonListString相关人IsDeletedString是否删除haveRemind

40、edint是否被提醒过,不需要和远程同步,0: 没有提醒过,1:已经提醒该表用于存储日程信息,以CalendarId为主键,存储时按照StartTime、EndTime、ID排序。表名:UpdateHistory(更新历史)字段名类型说明约束idInteger自建ID主键updateIDString更新历史IDAlterTimeString最后同步时间默认值:2000/01/01 00:00:00Click_CI_IDString 界面点击的日程项ID值该表用来保存更新历史,用于同步日程信息使用。后台服务数据库的结构:本系统中,设计了表:Table_UserManager(人员表)、Table

41、_CalendarManage (日历表) 、Table_User_CalendarRelation (人员、日历关系表)来存储日历系统中涉及到的相关人员、日历项及日历项涉及到的人员等信息。各表的结构定义分别如下:表Table_UserManager(人员表)字段名类型说明是否允许空UserIdint人员编号否Namevarchar(60)姓名SubCompanyvarchar(60)分部名称Departmentvarchar(60)部门名称Jobvarchar(60)岗位名称Emailvarchar(60)电子邮箱RegisterTimedatetime修改时间否Statusint状态否IM

42、IE1varchar(300)手机1标识IMIE2varchar(300)手机2标识IMIE3varchar(300)手机3标识表Table_CalendarManage(日历表)字段名类型说明是否允许空CalendarIdvarchar(30)日历ID,主键否Topicvarchar(60)主题StartTimedatetime起始时间EndTimedatetime结束时间IsWholeDayvarchar(2)是否整天(是,否)Placevarchar(60)地点Repeatint是否重复(0表示不重复,1表示按天重复,2表示按周重复,3表示按月重复,4表示按年重复)Remindint提前

43、提醒时间(以分钟为单位)CreatTimedatetime创建时间Creatorvarchar(50)创建者SendEmailvarchar(2)是否发送邮件(是,否)IsCompletedvarchar(2)是否完成(是,否)CompletedTimedatetime完成时间Sourcevarchar(50)日历来源(OA、项目管理)CalendarTypevarchar(50)日历类型(自建日历,企业日历)AlterTimedatetime最后更新时间(初始值等于创建时间,用于同步)否Priorityvarchar(10)优先级(紧急、报警、一般)Chargervarchar(50)负责人

44、Notevarchar(200)备注IsDeletedvarchar(2)是否删除(是,否)Examinorvarchar(10)审核人ExaminAdvicevarchar(200)审核意见ExaminTimedatetime审核时间表Table_User_CalendarRelation(人员、日历关系表)字段名类型说明是否允许空UserIdint人员编号否CalendarIdvarchar(30)日历Id否AlterTimedatetime修改时间否IsDeletedvarchar(2)是否删除(是,否)注:表Table_CalendarManage和表Table_User_Calend

45、arRelation之间通过字段CalendarId来关联,是一对多的关系。生成日历时,先在日历表Table_CalendarManage中插入日历信息记录,然后再在表Table_User_CalendarRelation中生成人员的关联信息。删除日历时,先从表Table_User_CalendarRelation中删除有关记录,当不存在与CanlendarId关联的人员信息时,将日历记录从Table_CalendarManage中删除。数据缓冲月视图的每个单元格类中都有一个ArrayList用于保存当天的CalendarItem(日程信息),这样打开月视图就把整个月的日程信息缓冲到了内存中。

46、模型层新增一个CalendarItemLab对象,该对象是一个数据缓冲池用来存储CalendarItem。点击日单元格时将ArrayList赋值给CalendarItemLab的ArrayList,之后对CalendarItem的查看均使用CalendarItemLab。界面布局设计 日视图 桌面插件个人日历的实现数据层实现数据库实现手机端数据库:Android使用ORMLite操作数据库使用ormlite-android-4.41.jar和ormlite-core-4.41.jar两个jar包,将这两个包导入到Lib文件夹中。存储的数据对象实体。代码如下:UpdateHistory 类Dat

47、abaseTablepublic class UpdateHistory implements Serializable /* * UID */private static final long serialVersionUID = 5273337865132837182L;/* * SqlLite自增ID */DatabaseField(generatedId = true)Integer id = 0;/* * 最后同步时间 */DatabaseFieldString updateID = ;/* * 最后同步时间 */DatabaseFieldString AlterTime = 200

48、0/01/01 00:00:00;/* * 界面点击的日程项 ID值 */DatabaseFieldString Click_CI_ID = ;/一系列的get set方法/省略CalendarItem类/* * 日历系统中的 日程项 基础类,包含了日程项所有的数据信息和数据库结构,以后可以新增日程项的查询、匹配等功能 * author GW */DatabaseTablepublic class CalendarItem implements Serializable /* * UID */private static final long serialVersionUID = -73681

49、52766202427185L;/* * SqlLite 自建ID */DatabaseField(generatedId = true)Integer id = 0;/* * 远程数据库中心,日历ID,主键 */DatabaseField(index = true)String CalendarId = ;/* * 主题 */DatabaseFieldString Topic = ;/* * 起始时间 */DatabaseField(index = true)String StartTime = ;/* * 结束时间 */DatabaseField(index = true)String E

50、ndTime = ;/按照设计的数据库表写,并注释(此处部分省略)/一系列的set get 方法 省略ColorConfig 类DatabaseTablepublic class ColorConfig implements Serializable/* * UID */private static final long serialVersionUID = 8216762882467739109L;/* * 本地数据库主索引ID */DatabaseField(generatedId = true)Integer id = 0;/* * 是否正在使用该配置 */DatabaseFieldIn

51、teger isUse = 1;DatabaseFieldpublic String userID = ;DatabaseFieldpublic String userName = ;/按照设计的数据库表写,并注释(此处部分省略)/一系列的set get 方法 省略注:DatabaseTable 指定类对应的表名,DatabaseField 对应的字段名,字段名注释方法cloumnName:指定字段名,不指定则变量名作为字段名canBeNull:是否可以为nulldataType:指定字段的类型defaultValue:指定默认值width:指定长度id:指定字段为idgeneratedId:

52、指定字段为自增长的id,不能id,generatedIdSequence通用foreign 指定这个字段的对象是一个外键,外键值是这个对象的iduseGetSet:指定ormlite访问变量使用set,get方法默认使用的是反射机制直接访问变量throwIfNull,如果空值抛出异常persisted:指定是否持久化此变量,默认trueunique:字段值唯一uniqueCombo整列的值唯一index:索引uniqueIndex 唯一索引foreignAutoRefresh 外键值,自动刷新foreignAutoCreate 外键不存在时是否自动添加到外间表中需要数据DatabaseHelp

53、er类,来创建及管理数据库。 DatabaseHelper类继承OrmLiteSqliteOpenHelper,并在覆盖实现onCreate, onUpgrade, close等方法。创建删除数据库应该使用TableUtils工具类的方法.。构造数据访问接口Dao类。代码如下:public class DatabaseHelper extendscom.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper /数据库名字private static final String DATABASE_NAME = KD.db;/* * 当数据库表结构

54、修改时,增加该数值即可。* 数据库版本号 */private static final int DATABASE_VERSION = 47;private Dao calItemDao;private Dao configDao;private Dao updateDao;public DatabaseHelper(Context context) super(context, DATABASE_NAME, null, DATABASE_VERSION,R.raw.ormlite_config);/创建数据库时调用 onCreats方法Overridepublic void onCreate(

55、SQLiteDatabase arg0, ConnectionSource arg1) / TODO Auto-generated method stubtry TableUtils.createTable(connectionSource, CalendarItem.class);TableUtils.createTable(connectionSource, ColorConfig.class);TableUtils.createTable(connectionSource, UpdateHistory.class); catch (SQLException e) Log.e(Databa

56、seHelper.class.getName(), Unable to create datbases,e);/数据库版本号变化时调用 onUpgrade 方法Overridepublic void onUpgrade(SQLiteDatabase sqliteDatabase,ConnectionSource connectionSource, int oldVer, int newVer) / TODO Auto-generated method stubtry TableUtils.dropTable(connectionSource, CalendarItem.class, true)

57、;TableUtils.dropTable(connectionSource, ColorConfig.class, true);TableUtils.dropTable(connectionSource, UpdateHistory.class, true);onCreate(sqliteDatabase, connectionSource); catch (SQLException e) Log.e(DatabaseHelper.class.getName(),Unable to upgrade database from version + oldVer+ to new + newVer

58、, e);/* * 获取用户信息接口DAO * return * throws SQLException */public Dao getUserDao() throws SQLException if (userDao = null) userDao = getDao(User.class);return userDao;/* * 获取 日程项 信息接口DAO * return * throws SQLException */public Dao getCalItemDao() throws SQLException if (calItemDao = null) calItemDao = g

59、etDao(CalendarItem.class);return calItemDao;/* * 获取 配置项 的Dao * return * throws SQLException */public Dao getConfigDao() throws SQLException if (configDao = null) configDao = getDao(ColorConfig.class);return configDao;/* * 返回最后更新的时间 * return * throws SQLException */public Dao getUpdateHistoryDao() th

60、rows SQLException if (updateDao = null) updateDao = getDao(UpdateHistory.class);return updateDao;构造数据库操作类DbAdapter。在构造函数中先使用getHelper()获得数据库DatabaseHelper,然后使用getDao()获得数据操作接口。在析构函数通过releseHelper()释放数据库,再通过Dao类的方法操作数据。这样就可以使用DbAdapter的方法操作数据,更加方便快捷。代码如下:/* * 管理底层的数据服务,比如从数据库刷新、写回数据库数据等 * author GW *

温馨提示

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

评论

0/150

提交评论