Android日历日程设计文档Word文件下载.docx
- 文档编号:17596371
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:47
- 大小:437.82KB
Android日历日程设计文档Word文件下载.docx
《Android日历日程设计文档Word文件下载.docx》由会员分享,可在线阅读,更多相关《Android日历日程设计文档Word文件下载.docx(47页珍藏版)》请在冰豆网上搜索。
2.1.1编写目的
本文档的编写主要是描述本软件需要实现的功能,列出本软件的需求点,作为开发人员开发目标系统及编程所需的基础,也作为项目完成验收时作为产品是否符合要求的一个参考。
本文档的预期读者为开发人员,用户。
2.1.2项目概述
本项目的目标受众为所有Android用户,Android系统现在已经成为相当主流的移动端系统,本系统作为Android端的应用软件,有很广泛的受众群。
本软件主要为用户提供日常生活的日历浏览,日程管理,天气查询等相关服务。
待开发软件名称:
2.1.3运行环境
Android4.0及以上
2.2项目需求分析
2.2.1项目需求介绍
(1)日历浏览:
显示日历信息,包括公历,农历,假日信息。
日程添加:
在点击某一日期时跳转至日程添加界面,进行日程信息的添加。
(2)日程删除:
在长按某一日程信息时出现是否删除的对话框。
日程浏览:
点击菜单日程进入日程浏览界面。
(3)日期跳转:
选择要查看的日期进行跳转。
(4)天气查询:
输入某一中国城市进行当天天气的查询。
2.2.2自定义与其他类库
1.ksoap2Android用于调用WebService的第三方类库。
2.NETutils自定义的获取手机网络状态的类
2.2.3模块、流程描述
(1)主界面:
用于显示日期信息,信息包括农历日期,公历日期,节日信息,日程标记日期,头部textview包括年月信息及闰月,天干地支。
(2)日期跳转:
用于用户在输入想要查看的日期后跳转到指定的日期。
(3)日期转换:
用户在输入某一个日期后,输出改日期的农历日期。
(4)显示日程:
用户点击此菜单选项后,系统跳入日程显示界面,显示用户添加的所有日程。
(5)天气查询:
用户点击此菜单按钮后悔弹出一个输入框,提示用户输入城市,查询指定城市的天气信息。
(6)主界面Item:
点击某一日期后,弹出日程编辑界面,用户可以编辑自己的日程并进行保存。
据此得出本软件运行的大概流程,如图2-1
图2-1软件运行流程
2.3功能需求
2.3.1功能需求点列表
功能名称
功能描述
输入
预期输出
日历显示
用于显示日期信息,包括公立及农历你年月日,星期,节假日信息,头部应包含当前年月、生肖及天支地干。
点击软件图标进入软件
显示功能描述的所有日期信息
日程添加
添加日程,用户选择日程类型,提醒重复方式,设置时间信息。
编辑完成后可以保存。
点击主界面的Item(即某一日期)
进入日程编辑界面
日程跳转
用户输入某一日期,点击按钮后跳转到指定日期
在指定方位内的某一日期
跳转至指定日期
日程浏览
浏览所有日程信息列表,可以浏览日程的相关信息
点击菜单的日程按钮
显示所有日程
日程删除
长按某一日程信息弹出对话框,用户可以选择是否删除日程。
长按想要删除的日程
指定日程被删除,或者放弃删除后转至日程界面。
天气查询
用户输入城市后,通过webservice查询指定城市的信息并显示
点击菜单的天气查询按钮,输入中国的某一城市
显示指定城市的天气信息
2.3.2其他功能需求
A.在日历显示界面,用户在屏幕进行左右滑动时,显示的日历的月份相应的进入下一个月或者上一个月的日历。
B.在日程显示的界面,添加了添加日程菜单,用于在当日按添加日程。
C.在日历显示界面,今天的日期应该特殊显示。
D.在添加日程时用户应该可以自己选择想要的提醒类型。
2.3.3系统界面
系统的界面及介绍:
A.主界面:
默认为日历显示界面。
B.日程添加界面:
在点击某一日期后出现,进行日程的添加。
C.日程显示界面:
在点击主界面的日程按钮进入。
D.天气查询:
点击主界面菜单的天气查询进入。
2.4系统输入输出需求
在本软件中,当在要求输入的时候应该进行输入检查,当输入的信息为空时应该提醒用户输入信息;
在输入时间信息时,若超出指定范围应弹出相应的提示信息;
在输入城市进行天气查询时,若无指定城市则提示无此城市的提示信息。
三.软件概要设计
3.1概述
3.1.1编写目的
本部分文档的编写是让读者尽快的了解本软件的概要设计,对软件的运行流程有一个大概的了解。
3.1.2预期读者
本部分文档的预期读者是详细开发人员,开发人员,测试人员。
3.2系统概要设计说明
3.2.1系统功能模块说明
(1)日历查看模块:
拥有一个完整的日历界面,包括头部的年月日、生肖、闰年的显示,还有每个日期上都分别有阳历和阴历的日期显示,并且日历中包含了各个重要的节日或纪念日等。
在日历界面上每个日期都会跳到当前日期的日程添加界面或者是日程显示界面。
日历界面上还有对存在日程的标记,有利于人们更好的管理日程。
(2)日程管理模块:
在本模块中包括总的日程显示页面和日历页面所跳转到的日程显示界面或者是日程添加界面。
总日程显示界面每一个日程都会有它所包含的日期、时间、日程类型、重复类型和日程内容。
日历日期所对应的日程显示界面也是相应的显示。
而在日程添加界面中包含了显示界面所对应的各项数据、添加日程成功后会有对应日历日期的标记。
另外也有对日程的一系列管理操作的功能。
(3)天气查询模块:
在本模块中包括对指定城市天气的查询和显示。
3.2.2系统功能模块结构图
(1)在程序设计分析的基础上,结合实际情况,得出本程序的功能模块结构图。
在结构图中包括了功能模块的表示及其中部分功能的实现原理。
首先是一个总的功能模块的结构图,其中包括了系统设计时的总体功能概括,如图3-1:
模块描述:
a.日程模块:
主要是添加日程,显示日程概况,点击日程显示日程详细信息。
b.主界面:
主界面即为日历显示界面,用于显示日历及有日程信息的日程的标记。
c.天气模块:
用于查询指定城市的天气信息。
d.总日程显示:
即显示所有添加的日程列表。
e.单一日程显示:
显示某一日程的详细信息。
图3-1系统模块结构图
(2)在日历模块分为以下几部分,如图3-2:
图3-2日历模块的组成
(3)在日程管理中的添加日程包括以下几部分,如图3-3:
图3-3添加日程界面的组成
(4)系统的主要类调用
a.程序启动先到androidManifest.xml读取数据,启动CalendarActivity。
接着加载main.xml初始化layout,接着加CalendarView,该类引用了CalendarView类,而CalendarView类聚合了BorderText、BorderEditText和BorderTextView(这3个类都是负责界面的绘制)。
因此每次重绘都会调用这三个类。
b.在主界面按menu按钮可以选择进入自己相应的界面。
选择“今天”则启动CalendarActivity回到日历显示界面,;
选择“跳转”时则调用系统的DatePickerDialog类弹出日期选择界面;
选择“日程”时则启动ScheduleAll类显示所有日程信息,点击某一日程时则启动ScheduleInfoView类显示详细的日程信息;
选择“日期转换”时则启动CalendarConvert类来进行日期的跳转;
选择“天气查询”时则启动WeatherActivity类来进入天气查询界面。
四.软件详细设计
4.1.系统的日历界面
4.1.1系统主界面
系统主界面用到的类包括CalendarActivity,CalendarView
(1)首先是建立一个布局文件,上面一部分是显示年月日、生肖和农历的干支纪年。
使用的是一个TextView类,对应的在日历的CalendarActivity文件中加入函数来添加头部的年份等信息。
首先需要写了一个CalendarView类,这是为日历显示所写的一个类,在其中使用重载的方法定义了几个不同参数的CalendarView,用于不同的情况。
在CalendarActivity中实例化CalendarView并且使用CalendarView中的一个方法CalendarView(this,getResources(),jumpMonth,jumpYear,year_c,month_c,day_c);
然后书写方法来添加头部的年份闰哪月等信息。
(2)首先是对这个页面的头部进行布局,通过动态化的方法来完成。
然后建立一个可以进行改变值的StringBuffer类型的参数textDate。
对这个参数进行append操作,添加例如年月日的知道参数里。
其中有一个闰年判断的条件函数,是通过calV.getLeapMonth()的值惊醒判断的。
完成后对界面使用setText方法来赋值到界面上。
最后是对界面的一些美化,同样使用动态布局模式进行。
(3)日历界面中主体日期部分显示的完成
在CalendarActivity文件初始化实例对象时加入动态添加布局文件的方法。
我将此方法命名为addGridView。
在这个方法中同样是先进行动态化布局,由于这里用的是GridView,这个GridView应用于将一系列的空间组织成二维网格的形式显示出来,所以适用于在这里进行的日期界面的建立。
同样的首先是动态化布局的建立,这可以实例化GridView为gridView参数进行的。
在这里需要添加GridView控件的列为7,列宽为46。
并且还加上判断屏幕大小的条件,这需要加入取得屏幕大小的对应函数,这里如果是800*480屏幕的话,就将列宽设置为69。
然后进行设置水平和竖直的间距、取值边框、设置居中等操作。
在这个方法里面还需加入个OnTouch方法,用来将gridView中的触摸事件回传给gestureDetector,进行下面的触摸操作,即:
//将gridview中的触摸事件回传给gestureDetector
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,代表上一个月。
为了完整性剩余的手势函数只是写了方法未使用。
4.1.2系统的日历特色显示
在日历的显示中除了一些基本的日期显示,在日期页面头部有每年相应的生肖和闰年显示,在日期上有每日的阴历以及节假日的显示。
这里有两个类,分别是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;
}
最终的效果图如下图4-1:
图4-1日历界面的最终实现图
4.2系统日程界面的设计
日程界面包括日程主界面(所有日程的显示)和对应日期日程的显示,日程的添加等。
在日程界面涉及到日程的数据存储,所以先介绍下关于日程的数据存储以及有日程的日期存储(为日历界面的标记服务)。
4.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"
4.2.2数据库操作
下面就是对表中数据的操作了,包括了保存日程信息、查询某一条日程信息、查询所有的信息、删除日程、将日程标记的日期保存到数据库中。
(1)保存日程信息,先是从日程添加页面里获取日程类型的ID、日程重复类型的ID、日程正文内容、日程日程时间这几个参数,然后是使用ContentValues类(这个类是一个键值对,是用来存储名值对,它的名一般是String类型,而值都是基本类型)来new一个参数,用这个参数的put方法将这些个参数放入到数据库中。
values.put("
scheduleTypeID"
scheduleVO.getScheduleTypeID());
values.put("
remindID"
scheduleVO.getRemindID());
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.valueOf(scheduleID)});
//删除日程信息
scheduletagdate"
//删除日程对应的日期标识信息
(5)将日程标志日期保存到数据库中,这里是为了将在日期上标识的信息存储到数据库中,方法同第一步的保存相仿,只是数据的不一样,而且使用的是数组形式。
for(inti=0;
i<
dateTagList.size();
i++){//以for循环的方式进行
dateTag=dateTagList.get(i);
ContentValuesvalues=newContentValues();
values.put("
year"
dateTag.getYear());
//放入年信息
month"
dateTag.getMonth());
//放入月信息
day"
dateTag.getDay());
//放入日信息
dateTag.getScheduleID());
//翻入日程的ID
db.insert("
//插入到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 日历 日程 设计 文档