视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于Android的课程表系统
2025-09-26 21:51:41 责编:小OO
文档
 基于Android的课程表系统

一、介绍:

课程表是每一个学生日不可少的东西,目前我们还是依赖于纸质,一方面不便捷,另一方面在智能设备如此发达的时代已无法适应各种需求。因此我以课程表作为开发项目,力求能在现实中为广大用户提供便利。我的课程表系统实现了基本的课程录入显示功能,并且界面整洁方便操作,且能够计算当前日期的学期周数。

二、系统设计:

Main是系统的主框架,调用系统的全部功能。课程表星期的切换、显示和设置的调用。

ScheduleInsert是对课程表的遍历、修改和保存。

TodayDateSetting是设置系统的实现。

GetSchedule是从数据库读取数据遍历课程表的实现类。

ToDoDB是SQLiteOpenHelper的子类,是保存课程表的数据结构。

三、核心功能设计:

public class Main extends TabActivity {

public void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.main_tab_layout1);

      //init(savedInstanceState);

      InitImageView();

      InitTextView();

      InitViewPager();

      inti();

   }

   /**

    * 初始化头标

    */

public void onStart(){...}

   private void InitTextView() {... }

   /**

    * 初始化ViewPager

    */

   private void InitViewPager() {... }

   private void InitImageView() {...}

   /**

    * ViewPager适配器

    */

   public class MyPagerAdapter extends PagerAdapter {...}

   private void inti() {...}

   /**

    * 头标点击监听

    */

   public class MyOnClickListener implements View.OnClickListener {...}

   /**

    * 页卡切换监听

    */

   public class MyOnPageChangeListener implements OnPageChangeListener {...}

//设置选项

   public boolean onPrepareOptionsMenu(Menu menu) {...}

   @Override

   public boolean onOptionsItemSelected(MenuItem item) {...}

   @Override

   public boolean onKeyDown(int keyCode, KeyEvent event) {...}

}

public class ScheduleInsert extends Activity implements android.view.View.OnClickListener {

   @Override

   protected void onCreate(Bundle savedInstanceState) {

                         //遍历游标  11.

                     while (!mCursor.isAfterLast()) {

                        //获得ID

                        course[i]=mCursor.getString(3);

                        add[i]=mCursor.getString(4);

                        i++;

                        mCursor.moveToNext();

                     }

                  }

                  //给edittext赋初值

                  for (int i = 0; i < 6; i++) {

                     et_2EditTexts.get(i).setHint("课程名称") ;

                     et_3EditTexts.get(i).setHint("上课地点") ;

                     et_2EditTexts.get(i).setText(course[i]);

                     et_3EditTexts.get(i).setText(add[i]);

                  }

               }

   private void InitTextView() {... }

   public class MyOnClickListener implements View.OnClickListener {...}

      @Override

      public void onClick(View v) {...}

   private void editTodo()

   {

      mCursor.moveToFirst();

      _id=mCursor.getInt(0);

       /* 修改数据 */

      for (int i=0; i < 6; i++) {

         toDoDB.updateCourse(_id,getEditText_2(i));

         toDoDB.updateAdd(_id, getEditText_3(i));

         _id++;

      }

      _id = 0;

   }

   private String getEditText_2(int index)

   {...}

   private String getEditText_3(int index)

   {...}

   @Override

   protected void onDestroy() {... }

   @Override

   public boolean onKeyDown(int keyCode, KeyEvent event) {...}

public class GetSchedule{

   public View getScheduleView(int week) {

      View myView = mInflater.inflate(R.layout.app_schedule_show_page, null);

      SQLiteDatabase db;

      toDoDB=new ToDoDB(context);

      db=toDoDB.getReadableDatabase();

      String sql="select * from todo_schedule where todo_week="+week;//1为星期一

      mCursor =db.rawQuery(sql, null);

      Log.i("", sql);

      //判断游标是否为空

      if(mCursor !=null ){

         int i=0,n=mCursor .getCount();

         mCursor .moveToFirst();

         Log.i("", "mCursor !=null");

         Log.i("n=?", n+"");

         //遍历游标  11.

      }

      tv1_2.setText(course[0]);

    ...

      tv6_3.setText(add[5]);

      Log.i("tv", "已设置tv");

      mCursor .close();

      toDoDB.close();

      return myView;

   }

}

public class ToDoDB extends SQLiteOpenHelper

{

  private final static  String DATABASE_NAME = "todo_db";

  private final static  int DATABASE_VERSION = 3;

  

  private final  String REMIND_TABLE = "todo_table";

  private final  String SCHEDULE_TABLE = "todo_schedule"; 

  

  public final  String FIELD_id = "_id";

  

  public final  String REMIND_TV = "todo_remind"; 

  public final  String REMIND_TIME = "todo_remind_time"; 

  public final  String REMIND_TIME_ID = "todo_remind_timeId"; 

  

  public final  String SCHEDULE_WEEK = "todo_week";

  public final  String SCHEDULE_TV1 = "todo_section";

  public final  String SCHEDULE_TV2 = "todo_course"; 

  public final  String SCHEDULE_TV3 = "todo_add"; 

//  public SQLiteDatabase db;

  

  

  public ToDoDB(Context context) 

  { 

    super(context, DATABASE_NAME, null, DATABASE_VERSION); 

    

  }

  

  @Override

  public void onCreate(SQLiteDatabase db) {

// // TODO Auto-generated method stub

    /* 建立table */ 

    String sql = "CREATE TABLE " 

      + REMIND_TABLE 

      + " ("

      + FIELD_id +" INTEGER primary key autoincrement, "

      + REMIND_TV + " text, "

      + REMIND_TIME + " text, "

      + REMIND_TIME_ID + " text "

      +" )"; 

    Log.i("ToDoDB", "sql1代码如下:"+sql);

    db.execSQL(sql); 

    

      sql =     "CREATE TABLE " 

             + SCHEDULE_TABLE 

             + " (" 

             + FIELD_id +" INTEGER primary key autoincrement, "+ " " 

             + SCHEDULE_WEEK + " text, " 

             + SCHEDULE_TV1 + " text, " 

             + SCHEDULE_TV2 + " text, " 

             + SCHEDULE_TV3 + " text )"; 

           Log.i("ToDoDB", "sql2代码如下:"+sql);

           db.execSQL(sql); 

           try{

                db.execSQL("drop table todo_schedule");

                db.execSQL("create table if not exists todo_schedule(_id int primary key,todo_week int,todo_section int,todo_course varchar,todo_add varchar)");

                db.execSQL("insert into todo_schedule(_id,todo_week,todo_section,todo_course,todo_add) values(1,1,1,'','')");

...

todo_schedule(_id,todo_week,todo_section,todo_course,todo_add) values(30,5,6,'','')");   

                Log.i("", "已初始化数据库");

                }catch (Exception e) {

                   // TODO: handle exception

                }

    } 

  public void delete(int id,String table) 

  { ...} 

  public void updateCourse(int id, String text) 

  { ...}

  public void updateAdd(int id, String text) 

  { ...}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {...}

  }

四、实验与验证:

在不断地调试后,最终实现了预计的功能。并能在Android终端中运行。如下图:

五、系统存在问题与改进:

系统在进入设置界面回到主界面启动Main调用onStart()时,会闪退,经分析是在onStart()中不能调用InitTextView()方法进行初始化。后直接调用Button的方法实现了预计功能。 下载本文

显示全文
专题