安卓日历管理系统Word格式文档下载.docx

上传人:b****5 文档编号:19624226 上传时间:2023-01-08 格式:DOCX 页数:36 大小:396.38KB
下载 相关 举报
安卓日历管理系统Word格式文档下载.docx_第1页
第1页 / 共36页
安卓日历管理系统Word格式文档下载.docx_第2页
第2页 / 共36页
安卓日历管理系统Word格式文档下载.docx_第3页
第3页 / 共36页
安卓日历管理系统Word格式文档下载.docx_第4页
第4页 / 共36页
安卓日历管理系统Word格式文档下载.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

安卓日历管理系统Word格式文档下载.docx

《安卓日历管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《安卓日历管理系统Word格式文档下载.docx(36页珍藏版)》请在冰豆网上搜索。

安卓日历管理系统Word格式文档下载.docx

该系统是一个基于安卓平台的手机日程管理软件。

它是为本软件的持有者提供日程管理方面服务的,它包括日历的查看、日历上日期对应日程的查看、总日程的查看、日程的增加、日程的删除、日程的修改、对本软件的设置以及软件相关信息的查看等。

本软件有助于人们记住重要的日程并给予提醒,也有助于人们更好的调节自己的时间来减轻生活上的一些负担,更轻松及有效的过好每一天。

第二章系统设计与实现

2.1系统主界面的设计和实现

2.1.1系统的功能模块说明

(1)日历查看模块:

拥有一个完整的日历界面,包括头部的年月日、生肖、闰年的显示,还有每个日期上都分别有阳历和阴历的日期显示,并且日历中包含了各个重要的节日或纪念日等。

在日历界面上每个日期都会跳到当前日期的日程添加界面或者是日程显示界面。

日历界面上还有对存在日程的标记,有利于人们更好的管理日程。

(2)日程管理模块:

在本模块中包括总的日程显示页面和日历页面所跳转到的日程显示界面或者是日程添加界面。

总日程显示界面每一个日程都会有它所包含的日期、时间、日程类型、重复类型和日程内容。

日历日期所对应的日程显示界面也是相应的显示。

而在日程添加界面中包含了显示界面所对应的各项数据、添加日程成功后会有对应日历日期的标记。

另外也有对日程的一系列管理操作的功能。

(3)设置界面模块:

在设置中包括了对日程的类型和重复类型的默认设置。

(4)关于界面模块:

关于界面中包含了本软件的设计信息及一些基本信息。

2.1.2系统的功能模块结构图

在程序设计分析的基础上,结合实际情况,得出本程序的功能模块结构图。

在结构图中包括了功能模块的表示及其中部分功能的实现原理。

首先是一个总的功能模块的结构图,其中包括了系统设计时的总体功能概括,如图2.12-1。

图2.12-1总系统功能模块

然后在总体的功能模块后面是主体功能的详细模块显示。

在日历界面显示上可分为几个部分,详细见图2.12-2,

图2.12-2日历显示模块

还有就是日程的功能模块的详细介绍。

总体书写了日程添加界面的功能点,结构图如图2.12-3所示,

图2.12-3日程界面模块

2.1.3系统主界面的头部菜单栏

制作这个头部菜单栏是为了提升软件的可操作性,我用的是TabHost+RadioGroup相结合的方法来制作这个部分的。

菜单栏的底部位置是通过TabHost这个布局来实现的,然后是LinearLayout的线性布局来布置内容。

内部的选项卡是通过TabWiget来实现

首先建立好Android工程(我的工程名为:

ScheduleManager),在工程下的res/layout下建立一个名为main的空xml文件,然后在这个文件里按照思路来添加布局代码。

主界面的菜单选项使用RadioGroup来建立,在这里的布局中RadioGroup里容纳4个RadioButton,而RadioButton是单选按钮。

在这种情况下就只有也只能有一个RadioButton能被选择,并且在开始时默认了第一个按钮被选中。

其中RadioButton的实现方式是在设置了内部的文字,然后再按钮的顶部上添加上图片,实现的代码如下:

<

RadioButton

android:

text="

@string/main_date"

drawableTop="

@drawable/tab_date"

id="

@+id/radio_button0"

checked="

true"

style="

@style/main_tab_bottom"

/>

从上述代码可以看到,在菜单的每个选项卡样式都是调用了style上的main_tab_bottom来实现样式的,而main_tab_bottom的背景background的值是@drawable/btn_bg,btn_bg不是一个简单的背景图片,而是一个xml文件,通过这个文件可以实现菜单选项卡切换时的背景切换的效果,使得这个菜单栏更加的美观,代码是使用了安卓的selector来实现,在这里是通过不停的条件来判断使用哪一个item的,里面包括了几个属性值,如是否获得焦点、是否响应事件、是否点击三个条件。

实施的代码如下:

selector

xmlns:

android="

<

itemandroid:

state_focused="

android:

state_enabled="

state_pressed="

false"

drawable="

@drawable/btn_bg_s"

/>

state_checked="

@drawable/btn_bg_d"

/selector>

制定完主页面布局后,在src/com.manage.activity下的MainPage文件中OnCreate(OnCreate方法是用来初始化Activity实例对象的)中调用布局,到现在为止顶部菜单栏的布局已经基本完成,但现在里面所对应的内容还是空的。

所以就需要在这里给tabHost中添加tab内容,以第一格的tab为例,先是通过Intent的方式新建个mDate,用来实现页面的跳转的方法,然后动态用tabHost来通过addTab的方法添加对应TabSpec的值和各个属性。

最后在添加RadioGroup的选择操作函数,这里是通过switch来完成对应按钮的功能的实现,在每个case项中通过tabHost.setCurrentTabByTag来给与特定的值实现页面上的跳转。

最终的效果如图2.13-1:

图2.13-1头部菜单栏效果图

2.1.4系统的日历界面

系统主界面默认选择日历界面在头部菜单栏下方。

1.首先是建立一个布局文件,上面一部分是显示年月日、生肖和农历的干支纪年。

使用的是一个TextView类,对应的在日历的CalendarActivity文件中加入函数来添加头部的年份等信息。

首先需要写了一个CalendarView类,这是为日历显示所写的一个类,在其中使用重载的方法定义了几个不同参数的CalendarView,用于不同的情况。

在CalendarActivity中实例化CalendarView并且使用CalendarView中的一个方法CalendarView(this,getResources(),jumpMonth,jumpYear,year_c,month_c,day_c);

然后书写方法来添加头部的年份闰哪月等信息。

首先是对这个页面的头部进行布局,通过动态化的方法来完成。

然后建立一个可以进行改变值的StringBuffer类型的参数textDate。

对这个参数进行append操作,添加例如年月日的知道参数里。

其中有一个闰年判断的条件函数,是通过calV.getLeapMonth()的值惊醒判断的。

完成后对界面使用setText方法来赋值到界面上。

最后是对界面的一些美化,同样使用动态布局模式进行。

2.下面是日历界面中主体日期部分显示的完成

在CalendarActivity文件初始化实例对象时加入动态添加布局文件的方法。

我将此方法命名为addGridView。

在这个方法中同样是先进行动态化布局,由于这里用的是GridView,这个GridView应用于将一系列的空间组织成二维网格的形式显示出来,所以适用于我在这里进行的日期界面的建立。

同样的首先是动态化布局的建立,这可以实例化GridView为gridView参数进行的。

在这里需要添加GridView控件的列为7,列宽为46。

并且还加上判断屏幕大小的条件,这需要加入取得屏幕大小的对应函数,这里如果是800*480屏幕的话,就将列宽设置为69。

然后进行设置水平和竖直的间距、取值边框、设置居中等操作。

在这个方法里面还需加入个OnTouch方法,用来将gridView中的触摸事件回传给gestureDetector,进行下面的触摸操作,即:

//将gridview中的触摸事件回传给gestureDetector

@Override

publicbooleanonTouch(Viewv,MotionEventevent){

returnCalendarActivity.this.gestureDetector

.onTouchEvent(event);

}

});

创建完日历的布局后,是在里面添加上具体的日期。

就当前显示的页面来说,是建立几个对应的参数,用来显示或传接数据。

例如在函数开始时就String[]dayNumber=newString[49];

这是作为对GridView控件内进行标记序列的,用于下面条件语句的判断等,还有就是界面内的一些控件名的实例化。

然后是动态化的对页面进行属性值的设置。

其中在对日期中的第一行,即周一等值的这行,设置字的颜色及背景图。

得出这行的位置就需要通过对参数position(对应编号)进行判断是否在7以内。

下一步是当前月信息的显示,这也需要条件函数来判断是否为当前月,也是来判断参数position是否在范围内。

在这个月中还需对当天来一个特殊化,即设置当天日期的背景为图片current_day_bgc,字色为白。

在这些操作外,还需要得到一些数值来用于日期数据的插入,在这里建立了个getCalendar方法,如判断是否为闰年的函数返回值isLeapyear,某月的总天数,某月的第一天是星期几,上个月总天数。

在这方法中再执行方法getweek,用来得出以后需要标记的日期,这个在后面来介绍。

通过上述的步骤基本完成了日历界面中的初步建设。

3.由于日历菜单需要能通过手势触摸来进行翻页,所以要在总体布局下建立一个ViewFlipper类,这个类是用来实现屏幕的切换效果的。

先是在布局中建立这个类,然后实例化手势gestureDetector并取得布局中ViewFlipper用于下面的调用。

然后是书写书写手势的各个方法,最主要的是onFling的方法,在这里实现了页面的向左及向右滑动的操作,这个操作是由条件语句来实现的,由滑动两点的x坐标的值进行差值计算,如果是起点减去重点大于120时着向左滑动,反之则向右滑动。

在滑动操作开始,并且已切换一面后就需要载入新的一张日历页面,这里又会用到参数calV,当向左滑动时则将参数calV所代表的函数CalendarView里的jumpMonth加1,代表下一个月;

当向右滑动时则将参数calV所代表的函数CalendarView里的jumpMonth减1,代表上一个月。

为了完整性剩余的手势函数只是写了方法未使用。

2.1.5系统的日历特色显示

在日历的显示中除了一些基本的日期显示,在日期页面头部有每年相应的生肖和闰年显示,在日期上有每日的阴历以及节假日的显示。

这里有两个方法,分别是LunarCalendar和SpecialCalendar。

在LunarCalendar里面包括干支纪年,阴历,生肖,节假日等信息。

例如生肖则是建立一个字节数组来记录十二生肖,并且用函数来传回参数对应的生肖。

finalpublicStringanimalsYear(intyear){

finalString[]Animals=newString[]{"

鼠"

"

牛"

虎"

兔"

龙"

蛇"

"

马"

羊"

猴"

鸡"

狗"

猪"

};

returnAnimals[(year-4)%12];

}

同样的其他信息,如节假日的名称,也是通过字节数组来储存的。

在SpecialCalendar是闰年的判断函数,每月天数,以及对每月的第一天星期的判断。

闰年通过传回年值通过函数进行判断,并传回布尔值。

每月的天数用switch进行判断赋值给月份天数的参数。

对每月的第一天为星期几的判断并指定。

//指定某年中的某月的第一天是星期几

publicintgetWeekdayOfMonth(intyear,intmonth){

Calendarcal=Calendar.getInstance();

cal.set(year,month-1,1);

dayOfWeek=cal.get(Calendar.DAY_OF_WEEK)-1;

returndayOfWeek;

最终的效果如图2.15-1:

图2.15-1日历界面的最终实现图

2.2系统任务界面的设计

任务界面包括任务主界面(所有日程的显示)和对应日期任务的显示,任务的添加等。

在任务界面涉及到日程的数据存储,所以先介绍下关于日程的数据存储以及有日程的日期存储(为日历界面的标记服务)。

2.2.1任务界面的数据库准备

(1)数据库里表的建立

分别建立了schedule表(日程的表)和scheduletagdate(标记日期所需的表)

Android提供了标准的数据库创建方式。

建立DBOpenHelper类继承到SQLiteOpenHelper,实现onCreate和onUpgrade两个方法。

OnCreate方法是用于初次使用软件时生成数据库,onUpgrade方法是用于升级软件时更新数据库表结构。

首先是schedule表的建立,在这个表中包括日程ID、日程类型的ID、日程重复类型的ID、日程正文内容、日程日程时间这几个参数。

建立时对应需要写上参数名、参数类型、主键等。

db.execSQL("

CREATETABLEIFNOTEXISTSschedule(scheduleIDintegerprimarykeyautoincrement,scheduleTypeIDinteger,remindIDinteger,scheduleContenttext,scheduleDatetext)"

);

下面是scheduletagdate表的建立,在这个表中包括标记的ID、年信息、月信息、日信息、日程ID这几个参数。

CREATETABLEIFNOTEXISTSscheduletagdate(tagIDintegerprimarykeyautoincrement,yearinteger,monthinteger,dayinteger,scheduleIDinteger)"

}

建立完表后是继续写入onUpgrade方法,这个方法会在数据库升级时被触发,以便于软件升级时更新表结构。

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

DROPTABLEIFEXISTSschedule"

DROPTABLEIFEXISTSscheduletagdate"

onCreate(db);

(2)再分别建立ScheduleVO和ScheduleDateTag,里面分别写了表里面各个数据的get(表示获取某个变量值)和set(表示设置某个变量值)方法,以便于调用。

(3)建立ScheduleDAO文件,这个文件是用来写数据库的查找、删除等方法。

首先是需要实例化DBOpenHelper用于数据库数据的get与set。

privateDBOpenHelperdbOpenHelper=null;

publicScheduleDAO(Contextcontext){

dbOpenHelper=newDBOpenHelper(context,"

schedules.db"

下面就是对表中数据的操作了,包括了保存日程信息、查询某一条日程信息、查询所有的信息、删除日程、将日程标记的日期保存到数据库中。

(1)保存日程信息,先是从日程添加页面里获取日程类型的ID、日程重复类型的ID、日程正文内容、日程日程时间这几个参数,然后是使用ContentValues类(这个类是一个键值对,是用来存储名值对,它的名一般是String类型,而值都是基本类型)来new一个参数,用这个参数的put方法将这些个参数放入到数据库中。

values.put("

scheduleTypeID"

scheduleVO.getScheduleTypeID());

//放入日程类型ID

remindID"

scheduleVO.getRemindID());

//放入重复类型ID

values.put("

scheduleContent"

scheduleVO.getScheduleContent());

//放入日程正文内容

scheduleDate"

scheduleVO.getScheduleDate());

//放入日程日期信息

最后调用添加方法insert。

db.insert("

schedule"

null,values);

//插入信息

另外需要moveToFirst方法来判断是否为空,进行相关的操作。

(2)查询某一条日程信息,由于我这里的设计是通过对日程的点击来查看当前点击日期的详细信息,即是根据日程的ID来查看的。

androidsqlite的查询方法是query方法,它的查询语句是:

db.query("

newString[]{"

scheduleID"

},"

scheduleID=?

"

newString[]{String.valueOf(scheduleID)},null,null,null);

另外还需要的是判断语句,先用cursor.moveToFirst()判断curor是否为空值,不为空则就给cursor赋值,空着直接cursor.close()来关闭。

(3)查询所有的日程信息,由于所有日期可能不止一个,所以返回值设为数组形式。

查询依旧是用query方法,这里的的where语句相关的就直接设为null值。

其他的依旧与查询一条语句相仿。

(4)删除日程,这里的删除日程需要将日程及对应日期上的标记一起删除,这样才可以便于管理,删除使用的语句是delete。

db.delete("

newString[]{String.valu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1