基于Android的大学课程及日记的管理.docx
《基于Android的大学课程及日记的管理.docx》由会员分享,可在线阅读,更多相关《基于Android的大学课程及日记的管理.docx(19页珍藏版)》请在冰豆网上搜索。
基于Android的大学课程及日记的管理
题 目:
基于Android平台的大学课程及日记的管理
目录
1前言1
2Android系统及开发环境的安装与配置1
2.1Android的由来1
2.2Android系统的优点1
2.3Android系统的现状及展望2
2.4开发环境的安装与配置2
2.4.1操作系统及准备工作2
2.4.2开发环境的安装2
3系统分析4
3.1可行性分析4
3.2需求分析5
4系统设计5
4.1概要设计5
4.2模块划分6
4.3程序中的主要类7
4.3.1course_activity类7
4.3.2course_new_activity类和course_set_activity类7
4.3.3DbAdapter类7
4.3.4Diary_activity和DiaryEditActivity类8
5系统实现8
6详细设计10
7结论12
参考文献13
基于Android平台的大学课程及日记的管理
摘要:
随着无线移动设备的发展,手机也日益普及,Android系统的推出使手机的发展进入到了一个新的领域。
世界上一些知名的移动设备生产厂商对于Android智能机的开发热情也日益提高,Android系统的使用人群正在急速提升,Android应用程序的多样化对人们快速获取资讯以及方便人们的生活起着不可忽视的作用,近年来Android得到了社会更多的认同和应用,本文主要概述了Android系统的体系结构,Android应用程序的开发环境和用JAVA语言开发手机课程表及日记的管理中的一些技术实现方法,
关键字:
Android;DbAdapter
1前言
Android在英文中愿意是机器人,Google在2007年11月5日宣布其基于Linux平台的开源手机操作系统后,使用其作为该操作系统的名称。
Android号称是首个为移动终端打造的真正开放和完整的移动软件。
从软件分层的角度来开,Android平台由应用程序、应用程序框架、Android运行时、库、Linux内核5部分构成。
采用Linux内核是Android平台开放性的基础,Linux内核层为我们在软件层和硬件层间建立了一个抽象层,使得应用程序开发人员无需关心硬件细节,但是如果想要Android平台运行到自己的硬件平台上就必须对Linux内核层进行修改,通常要做的就是为自己的硬件编写驱动,并且可以自由设计用户操作界面[10]。
从目前的发展形势来看Android系统因为它的开源性得到了很多移动设备生产商以及网络运营商的青睐。
2Android系统及开发环境的安装与配置
2.1Android的由来
Android来源于硅谷著名的极客AndyRubin建立的Android公司,Rubin的最初目标是想把Android打造成一个可以对任何软件设计人员开放的移动终端平台。
很快这个公司便得到了青睐,很多人表示打算买下他的公司。
Rubin想Google的创始人之一拉里·佩奇提出合伙的意向后,Google就抢先把他的公司买下。
并于2007年11月5日宣布与包括摩托罗拉、HTC、LG、三星等33家手机厂商、手机芯片提供商、软硬件供货商、移动运营商联合组成开放手机联盟(OpenHandsetAlliance),并发布了名为Android的开放手机软件平台[7]。
2.2Android系统的优点
与其他手机操作系统相比,Android有4个无可比拟的优点:
●开放性:
Android系统同时包含了底层操作系统以及移动电话所需的全部软件,不存在专有权障碍,开发平台允许任何移动终端厂商加入到Android联盟中来,并允许不同厂商可以根据自己的需求对平台进行定制和扩展,无需任何授权许可费用;
●所有应用程序平等:
Android系统中,系统核心应用和第三方应用都是完全平等的,用户可以将手机中的任意应用程序替换成所需的其他应用程序;
●应用程序间无界限:
开发人员可以吧Web上的数据与本地的日历、联系人、位置信息结合起来,应用程序还可声明它们可供其他程序使用;
●快速方便的应用程序开发:
Android平台为开发人员童工了大量的实用库及工具,可以让开发人员快速的创建自己的应用[3]。
2.3Android系统的现状及展望
Android系统目前的发展十分迅速,在国内外,Android都有成熟的消费者,Android社区也十分红火,全球各大厂商和运营商也纷纷加入了Android的阵营,包括美国的摩托罗拉(MOTOROLA)、韩国的三星(SAMSUNG)、英国的索尼爱立信(SonyEricsson)、中国台湾HTC、中国移动、中国联通、中兴通讯、华为通讯、联想等大企业。
除开手机外,各大厂家也陆续推出了采用Android系统的MID(MobileInternetDevices)产品。
根据ComScore公司11年第一季度的移动互联网市场研究报告中显示,11年2月份Android的市场份额增33%,位居榜首,RIM、苹果分别以28.9%和25.2%的移动市场占有率紧随其后[11],如图1:
图1各厂商移动互联网市场占有率
虽然Android初出茅庐,论个头还不如苹果、RIM,开放这个趋势的力量使得这颗的新星足够明亮,有媒体预测Android的市场占有率将在2012年达到50%并在2016年确定其移动互联网市场的霸主地位,就目前Android的发展趋势来看,这并非一个不可能完成的任务。
2.4开发环境的安装与配置
2.4.1操作系统及准备工作
Android的开发环境在操作系统上并没有太大的限制,它可以使用WindowsXP及其以上版本、MACOS、Linux等操作系统,在该程序的开发中,我选择了WindowsXP作为开发操作系统。
Android是以Java语言作为开发语言,官方推荐使用Eclipse作为开发软件,在搭建开发环境前必须准备JDK、Eclipse、AndroidSDK,extras,installer_r20.0.3-windows.exe,platform-tools_windows,ADTPlugin等软件,JDK与Eclipse都可以在其官方网站上下载到其最新版本,AndroidSDK则需要通过AndroidSDKSetup来下载安装[1]。
2.4.2开发环境的安装
安装JAVA运行环境
在“
下载和安装Eclipse
在Eclipse的官方网站“http:
//www.eclipse.org/downloads”下载最新版本的“EclipseIDEforJavaDevelopers”下载完毕后解压缩即可使用,无需安装。
安装AndroidSDK
AndroidSDK因为原下载地址失效,只能通过AndroidSDKSetup这个工具来下载安装,此工具可以在通过“
r04-windows.zip”该网址获取。
下载完成后解压缩,运行其内的“SDKSetup.exe”即可自动检测下载AndroidSDK,如图2所示:
图2AndroidSDKSetup
安装Eclipse的Android插件
使用Eclipse作为开发开发工具必须要安装AndroidDevelopmentTools(ADT)的外挂,其安装步骤如下:
启动Eclipse后,选择“Help”→“InstallNewSoftware…”打开“Install”窗口;
点击窗口中的“Add”按钮,在“AddRepository”窗口中输入如图3所示信息:
图3AddReponsitory
点击OK后,“Install”列表中会多出一项“DeveloperTools”,勾选后点击“Next”既开始下载ADT,下载完成后按软件提示操作即可完成安装ADT。
如图4所示:
图4安装ADT
应用SDK到Eclipse
选择“Window”→“Preferences…”在“Preferences”窗口的左边选中“Android”,在右边点击“Browse…”选择AndroidSDK所在目录作为SDKLocation,如图5所示:
图5应用SDK到Eclipse
3系统分析
3.1可行性分析
在中国,手机已经成为人们日常生活必不可少的一部分,智能手机在高校人群中逐渐得到了普及,Android手机凭借其优秀的系统性能以及良好的用户体验迅速得到了高校师生的青睐。
在高校中,上课并不像高中时期有固定的教室和固定的时间,高校课程种类繁多,并且上课地点和时间都不固定,一周内极少会出现重复课程,所以要将课程表完整的记忆下来是一项很艰难的事情,很多同学不得不随身携带一张课表来防止遗忘上课,但是还是不能完全避免该问题的发生。
基于这些问题,有必要设计一款具有课程提醒功能的手机课表程序,配合上可以让用户自定义上课时间以及地点的功能,从而避免遗忘上课的事情出现。
3.2需求分析
手机电子课表及日记的管理在手机应用程序中并不常见,一般在手机上较为常见的日程提醒程序无法实现自由设置校历,重复提醒等功能。
经过对周边同学的调查研究,普遍认为这款软件方便实用,其主要功能如下:
●添加课程信息;
●删除课程信息;
●设置每周时间;
●能依据校历区分课程是第几周;
●新建或删除日记功能;
4系统设计
4.1概要设计
从程序流程来分,用户在第一次进入程序时会进入设置界面,设置一些基本的配置信息以方便数据库管理,然后进入添加课程界面,进行添加课程操作。
添加课程除了UI展示以外其他的方式都是在操作数据库,在程序中使用course_new_activity,course_set_activity以实现新建课程功能,按周查询功能,第几周功能等。
在程序主界面使用用course_activity.java展示记录,从Diary_activity,DiaryEditActivity类中可以新建或删除日记信息,并在主界面中显示。
程序的配置信息主要存在DbAdapter中,该信息在数据显示时读取必要的配置信息,比如读取用户选择当天的日期就可以计算出第几周星期几,再通过日期在数据表中查询。
添加课程信息,创建日记,设置每周时间。
这样在按钮监听函数中监听系统时间变化,用来实现课表及日记创建功能,如图6所示:
图6程序数据流图
4.2程序的模块划分
该程序主要实现课程的创建添加删除,设置等以及日记的新建删除等,主要程序模块划分如下:
模块负责人
模块功能描述
廉晓娟
课程及日记的管理主界面控制
常江
新建添加删除课程及每周的设置
李玲
创建和删除日记功能
李涛
登录及帮助页面的界面及按钮设置
常鹏飞
DbAdapter数据库表的控制
4.3程序中的主要类
4.3.1course_activity类
该类为整个应用的主Activity,显示课程表的主界面[2]。
其主要方法如下:
●onCreate:
Activity主要重写方法之一,实现程序初始化和界面展示;
●updateCourseView:
Activity重写方法之一,实现在当前是第几周的刷新界面;
●onCreateOptionMenu:
实现Option菜单的创建;
●onMenuItemSeleted:
实现菜单项的点击事件响应;
●get_interval_weeks:
从数据库中获取当天是第几周的信息;
●onActivityResult:
设置第一周和添加新课程信息的回复;
界面设计方面通过RelativeLayout实现布局,使用了TextView,ImageButton课程列表通过ListView实现界面展示。
该类通过继承ListActivity类,用来显示ListView中的数据并实现对ListView上ImageView控件点击的统一响应。
4.3.2course_new_activity类和course_set_activity类
course_new_activity类为实现添加课程界面的Activity,主要实现由用户选择和输入课程信息,并将所有的课程信息添加到数据库中。
主要方法如下:
●onCreate:
新建课程信息;
●SetDefaultData:
设置初始化时默认的数据;
●SaveData:
将添加的课程保存进数据库中;
●onItemClick:
设置课程输入按钮;
●OnClickListener:
按钮监听函数;
●onClick:
实现button点击事件的响应;
●course_set_activity继承Activity类;
4.3.3DbAdapter类
该类为自定义的重要的数据库处理类,用来管理数据库,对数据库的所有操作都封装在这个类中,实现数据封装。
主要方法如下:
●Databse_create:
创建diary表;
●Databse_create_course:
创建course表;
●classDatabaseHelper:
数据库类
●getAllNotes():
得到所有日记
●deleteCourse:
删除一个课程
●getCourse:
获得所有课程记录
4.3.4Diary_activity类和DiaryEditActivity类
该类实现日记的创建和删除。
主要方法如下:
●updateListView():
更新当前的listacvitity;
●onCreateOptionsMenu:
创建一个菜单;
●onMenuItemSelected:
菜单选择
●savedInstanceState:
保存日记
●deleteDiary:
删除日记
●DiaryEditActivity:
编辑日记
5系统实现
在完成系统设计以后,即可在Android虚拟机中运行程序,运行效果如下:
图7软件设置界面
软件设置界面,该界面为用户第一次进入程序所显示的界面,往后的使用中,用户可以通过“Menu”→“设置”的操作步骤来进入该界面。
在此界面,用户可以设置第一周开始时间,新建课程信息,如图8所示:
图8课程管理界面
设置本学期的第一周的周一,该界面由点击软件设置界面中的“本学期第一周的周一”后的日期弹出,在此界面可以设置当前学期校历的第一周的初始时间,如图9所示:
图9设置本学期的第一周的周一
添加课程界面,该界面通过“Menu”→“课程管理”→“新建”操作进入,在该界面用户可以根据自己的需求来添加课程,如图10所示:
图10添加课程
添加日记界面,该界面通过“Menu”→“日记管理”→“menu”→“新建”操作进入,在此界面用户可以添加一个日记提醒,如图11所示:
图11新建日记
6模块详细设计
主要实现课程及日记的管理主界面的实现功能:
通过course_activity类,该类为整个应用的主Activity,主要方法有onCreate,updateCourseView,onCreateOptionMenu,onMenuItemSeleted,get_interval_weeks等。
主要代码:
publicclasscourse_activityextendsListActivity{
//菜单选项
publicstaticfinalintNEW=Menu.FIRST;
publicstaticfinalintSET=Menu.FIRST+1;
publicstaticfinalintDELETE=Menu.FIRST+2;
publicstaticfinalintHELP=Menu.FIRST+3;
//传值确认的关键字
privatestaticfinalintREQUEST_SET=0;
privatestaticfinalintREQUEST_NEW=1;
//默认的第一周开始时间
intfirst_year=2010;
intfirst_month=9;
intfirst_day=1;
Datestart_date=newDate(first_year,first_month,first_day);
//新建的课程信息
Stringcourse_name="";
Stringweek_start="";
Stringweek_end="";
Stringcourse_index1="";
Stringcourse_place="";
Stringweek_index="";
//当前日期
Calendarc=Calendar.getInstance();
intnow_year=c.get(Calendar.YEAR);
intnow_month=c.get(Calendar.MONTH);
intnow_day=c.get(Calendar.DAY_OF_MONTH);
Datenow_date=newDate(now_year,now_month,now_day);
//现在是第几周
intinterval_weeks=1;
//数据库操作
privateDbAdaptermDbHelper;
privateCursormCourseCursor;
/*(non-Javadoc)
*@seeandroid.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onCreate(savedInstanceState);
setTitle("本周课程信息");
setContentView(R.layout.course_activity);
mDbHelper=newDbAdapter(this);
updateCourseView();
}
privatevoidupdateCourseView(){
//TODOAuto-generatedmethodstub
Log.e("done","getcourse");
mDbHelper.open();
mCourseCursor=mDbHelper.getAllCourses(interval_weeks);
Toast.makeText(course_activity.this,
"当前是第"+interval_weeks+"周,点击menu设置",Toast.LENGTH_SHORT).show();
Log.e("weeks",""+interval_weeks);
Log.e("done","donegetcourse");
setTitle("第"+interval_weeks+"周"+"课程信息");
startManagingCursor(mCourseCursor);
String[]from=newString[]{DbAdapter.KEY_NAME,DbAdapter.KEY_PLACE,DbAdapter.KEY_INDEX,DbAdapter.KEY_WEEK_INDEX};
int[]to=newint[]{R.id.item_name,R.id.item_place,R.id.item_index,R.id.item_week_index};
SimpleCursorAdaptercourses=newSimpleCursorAdapter(this,
R.layout.course_list_item,mCourseCursor,from,to);
setListAdapter(courses);
mDbHelper.closeclose();
}
/*(non-Javadoc)
*@seeandroid.app.Activity#onCreateOptionsMenu(android.view.Menu)
*/
@Override
publicbooleanonCreateOptionsMenu(Menumenu){
//TODOAuto-generatedmethodstub
super.onCreateOptionsMenu(menu);
menu.add(0,NEW,0,"新建").setIcon(R.drawable.new_course);
menu.add(0,SET,0,"设置").setIcon(R.drawable.setting);
menu.add(0,DELETE,0,"删除").setIcon(R.drawable.delete);
menu.add(0,HELP,0,"帮助").setIcon(R.drawable.helps);
returntrue;
}
/*(non-Javadoc)
*@seeandroid.app.Activity#onOptionsItemSelected(android.view.MenuItem)
*/
@Override
//实现菜单项的点击事件响应
publicbooleanonMenuItemSelected(intfeatureId,MenuItemitem){
//TODOAuto-generatedmethodstub
switch(item.getItemId()){
caseHELP:
Intenthelp_intent=newIntent();
help_intent.setClass(course_activity.this,help_activity.class);
startActivity(help_intent);
returntrue;
caseNEW:
Intentnew_course_intent=newIntent();
new_course_intent.setClass(course_activity.this,course_new_activity.class);
startActivityForResult(new_course_intent,REQUEST_NEW);
returntrue;
caseSET:
Intentset_