基于ANDROID系统大学课程表设计Word文档下载推荐.docx
《基于ANDROID系统大学课程表设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于ANDROID系统大学课程表设计Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
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,主要实现由用户选择和输入课程信息,并将所有的课程信息添加到数据库中。
主要方法如下:
新建课程信息;
●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(){
Log.e("
done"
"
getcourse"
mDbHelper.open();
mCourseCursor=mDbHelper.getAllCourses(interval_weeks);
Toast.makeText(course_activity.this,
"
当前是第"
+interval_weeks+"
周,点击menu设置"
Toast.LENGTH_SHORT).show();
weeks"
"
+interval_weeks);
donegetcourse"
第"
周"
+"
课程信息"
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();
*@seeandroid.app.Activity#onCreateOptionsMenu(android.view.Menu)
publicbooleanonCreateOptionsMenu(Menumenu){
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;
*@seeandroid.app.Activity#onOptionsItemSelected(android.view.MenuItem)
//实现菜单项的点击事件响应
publicbooleanonMenuItemSelected(intfeatureId,MenuItemitem){
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);
caseSET:
Intentset_intent=newIntent();
set_intent.setClass(course_activity.this,course_set_activity.class);
startActivityForResult(set_intent,REQUEST_SET);
caseDELETE:
mDbHelper.open();
mDbHelper.deleteCourse(getListView().getSelectedItemId());
mDbHelper.closeclose();
updateCourseView();
returntrue;
}
returnsuper.onOptionsItemSelected(item);
//得到现在是第几周
privateintget_interval_weeks(Dateds,Date