目 录
第1章 绪论 1
1.1 什么是电子课程管理 1
1.2 系统开发的背景 1
1.3 本文主要工作 1
1.4 系统设计目标分析 2
第2章 基本技术方案 3
2.1 Android概述 3
2.2 Android系统的四大组件 3
2.3 Android中的相关技术介绍及分析 5
2.3.1 Android系统架构研究 5
2.3.2 Android架构分析 6
2.3.3 Android应用程序架构 7
2.3.4 Android运行时组件 8
2.3.5 Android应用的构成和工作机制 8
2.4 Eclipse简介 8
2.5 XML简介 9
第3章 系统分析 10
3.1 系统需求分析 10
3.2 系统流程 10
3.3 功能模块划分 11
3.3.1课程添加模块 11
3.3.2 程序设置模块 11
3.3.3 作业功能模块 12
第4章 系统总体设计 13
4.1 概要分析 13
4.2 数据库分析 13
4.2.1 SQLite数据表设计 13
4.3 程序中的主要类 15
4.3.1 GalleryTabActivity类和ClassListActivity类 15
4.3.2 ClassAddActivity类和SettingActivity类 16
4.3.3 SQLiteHelper类和SQLClassTime类 16
4.3.4 HomeworkActivity类和SettingActivity类 16
第5章 系统功能的具体实现 18
5.1程序首页面 18
5.2 课程设置实现 18
5.3课程添加实现 19
5.4 关于 20
5.5作业功能实现 20
结论 22
参考文献 23
致 谢 24
第3章 系统分析
无忧课程管理包括:运行首页课程信息的显示跟具体作业信息情况的显示。这是面向用户的一个Activity,在此用户可以方便地查看本周的课程情况及课后的作业情况。除此之外,是课程信息管理。用户可以添加,删除,修改课程信息和作业信息,设置上课时间。
3.1 系统需求分析
手机电子课程管理在手机应用程序中并不常见,一般在手机上较为常见的日程提醒程序无法实现自由设置课程信息。
经过对周边同学的调查研究,普遍认为这款软件方便实用,其主要功能如下:
课程的添加、删除和修改;
课程作业的添加、交作业的时间查看;
每节课程上课时间段的设置;
每周课程预览;
课程具体信息预览;
3.2 系统流程
根据课程管理的特点,将课程管理分为首页的课程信息预览,作业内容预览,作业的增加与修改,课程添加,上课时间设置。流程图如图3-1所示:
图3-1程序流程图
该程序的流程就如图所示,用户进入程序后,可以通过点击MENU按钮添加课程、设置课程时间、查看本程序的关于信息、退出程序。添加完课程信息,设置好上课时间之后,在进入程序的第一个Activity将当前一周的课程信息及作业信息显示出来,点击课程信息,可以对作业信息进行添加、修改、删除。
3.3 功能模块划分
根据程序的设计,将程序分成3个模块。课程添加、课程设置、作业的添加和修改。每个模块都有对应的功能及相关工作。如图3-2所示:
图3-2功能模块表示图
3.3.1课程添加模块
该模块实现了如下几个功能:
1、添加课程信息;
2、添加上课地点;
3、设定课程在星期几上课;
4、设定课程是当天的第几节课。
该模块实现课程的添加工作,可以将课程的名称、上课地点、上课时间、课程节数添加到数据库中。
3.3.2 程序设置模块
设置模块里面设计了两项内容,设置可以设置每天十节课的上课时间段,设置清空上一周的所有课程信息。
3.3.3 作业功能模块
在预览界面点击具体一节课程的信息,就可以对作业信息进行添加、修改及删除:
1、在上完课后添加作业信息;
2、如果作业需要修改,再次点击,则可以对作业进行修改;
3、在课后如果作业完成后就可以删除作业内容,从而删除作业;
4、可以设置作业的截至时间。
package info.evagle;
import info.evagle.model.ClassInfoModel;
import info.evagle.model.ClassTimeModel;
import info.evagle.sql.SQLClassTime;
import info.evagle.sql.SQLiteHelper;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
public class HomeworkActivity extends Activity {
public static final int REQUEST_CODE = 1;
private Button add;
private Button cancel;
private Button dateChoosen;
private EditText nameET;
private EditText deadlineET;
private EditText homeworkET;
private Spinner timeSp;
private ClassInfoModel classInfo;
private SQLiteHelper sqlHelper;
private SQLClassTime classTime;
private String name;
private String deadline;
private String homework;
private int id;
private ArrayAdapter<String> timeAdapter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_homework_layout);
Bundle bundle = getIntent().getExtras();
Boolean isAdd = bundle.getBoolean("isadd");
sqlHelper = new SQLiteHelper(this);
classTime = new SQLClassTime(this);
prepareViews();
setListeners();
classInfo = new ClassInfoModel();
if (!isAdd) {
add.setText("修改");
id = bundle.getInt("id");
setTitle("" + id);
classInfo = sqlHelper.getClassById(id + "");
prestore();
}
}
private void prepareViews() {
add = (Button) findViewById(R.id.add_ahl);
cancel = (Button) findViewById(R.id.cancel_ahl);
dateChoosen = (Button) findViewById(R.id.btn_date_choosen_ahl);
nameET = (EditText) findViewById(R.id.class_name_ahl);
timeSp = (Spinner) findViewById(R.id.time_spinner_ahl);
homeworkET = (EditText) findViewById(R.id.homework_content_ahl);
}
private void setListeners() {
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
name = nameET.getText().toString();
homework = homeworkET.getText().toString();
// classInfo.setName(name);
classInfo.setHomework(homework);
if (deadline == null || deadline.trim() == "") {
int tmp = 24 * 60 * 60 * 1000;
Long time = new Date().getTime();
time = time / tmp * tmp;
String t = (String) timeSp.getSelectedItem();
int h = Integer.parseInt(t.substring(1, 2));
ClassTimeModel timeModel = new SQLClassTime(
HomeworkActivity.this).getClassById(h + "");
time += timeModel.getEnd();
deadline = time + "";
}
classInfo.setDeadline(deadline);
sqlHelper.update(classInfo);
Log.d("addhomework1", classInfo.toString());
ClassInfoModel cs = sqlHelper.getClassById("21");
Log.d("addhomework2", cs.toString());
Intent intent = new Intent(HomeworkActivity.this,
GalleryTabActivity.class);
startActivity(intent);
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(HomeworkActivity.this,
GalleryTabActivity.class);
startActivity(intent);
}
});
SimpleDateFormat df = new SimpleDateFormat("MM月dd日 ");
Long today = (new Date().getTime()) / (24 * 3600 * 1000)
* (24 * 3600 * 1000);
dateChoosen.setText(df.format(new Date(today)));
dateChoosen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(HomeworkActivity.this,
DateWidget.class);
startActivityForResult(intent, REQUEST_CODE);
}
});
SQLClassTime sql = new SQLClassTime(HomeworkActivity.this);
int c = 0;
for (int i = 1; i <= 10; i++) {
ClassTimeModel model = sql.getClassById(i + "");
if (model.getStart() > 0)
c++;
}
final String[] time = new String[c];
c = 0;
for (int i = 1; i <= 10; i++) {
ClassTimeModel model = sql.getClassById(i + "");
if (model.getStart() > 0) {
time[c++] = "第"
+ i
+ "节"
+ " "
+ ClassTimeSetting.format(Math.max(model.getStart(),
model.getEnd()));
}
}
timeAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, time);
timeSp.setAdapter(timeAdapter);
timeSp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Spinner spinner = (Spinner) parent;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
private void prestore() {
nameET.setText(classInfo.getName());
homeworkET.setText(classInfo.getHomework());
timeSp.setSelection(id % 20);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_CANCELED)
setTitle("取消");
else if (resultCode == RESULT_OK) {
String temp = null;
Bundle extras = data.getExtras();
if (extras != null) {
Long dl = extras.getLong("deadline");
String t = (String) timeSp.getSelectedItem();
int h = Integer.parseInt(t.substring(1, 2));
ClassTimeModel timeModel = classTime.getClassById(h + "");
dl += timeModel.getEnd();
deadline = dl + "";
SimpleDateFormat df = new SimpleDateFormat("MM月dd日 ");
Date date = new Date(dl);
dateChoosen.setText(df.format(date));
}
}
}
}
}