直接可用的Android studio学生信息管理系统

百度上流传最广的版本有所欠缺,并不能直接使用,同时有很多不必要的功能,这是我进行删减、修改、核查后的版本,根据下面的步骤一步步来直接能够运行程序。

本程序实现的功能是增删改查以及全选

首先是程序提纲

主要部分是java文件和xml文件。

activity放在java文件里面,xml文件就是布局文件,用来规定界面的显示格式。

类定义的Java文件

StudentDao
StudnetDBHelper
Student
TableContanst

其他文件

string .xml
color.xml
styles.xml
AndroidManifest.xml(自定义的活动需要手动添加到此文件中)

下面看看我的文件目录

值得注意的是,menu.xml不是放在layout目录下,而是放在menu目录下。

然后依次介绍各个activity的代码

主界面是StudentListActivity

代码如下

java文件:StudentListActivity

package com.example.asus.student;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
import StudentDBHelper.StudentDBHelper;
import Student.Student;
//import AddStudentActivity;
import TableContanst.TableContanst;

public class StudentListActivity extends ListActivity implements
  OnClickListener, OnItemClickListener, OnItemLongClickListener {

 private static final String TAG = "TestSQLite";
 private Button addStudent;
 private Cursor cursor;
 private SimpleCursorAdapter adapter;
 private ListView listView;
 private List<Long> list;
 private RelativeLayout relativeLayout;
 private Button searchButton;
 private Button selectButton;
 private Button deleteButton;
 private Button selectAllButton;
 private Button canleButton;
 private LinearLayout layout;
 private StudentDao dao;
 private Student student;
 private Boolean isDeleteList = false;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  Log.e(TAG, "onCreate");
  list = new ArrayList<Long>();
  student = new Student();
  dao = new StudentDao(new StudentDBHelper(this));
  addStudent = (Button) findViewById(R.id.btn_add_student);
  searchButton = (Button) findViewById(R.id.bn_search_id);
  selectButton = (Button) findViewById(R.id.bn_select);
  deleteButton = (Button) findViewById(R.id.bn_delete);
  selectAllButton = (Button) findViewById(R.id.bn_selectall);
  canleButton = (Button) findViewById(R.id.bn_canel);
  layout = (LinearLayout) findViewById(R.id.showLiner);
  relativeLayout=(RelativeLayout) findViewById(R.id.RelativeLayout);
  listView = getListView();

  // 为按键设置监听
  addStudent.setOnClickListener(this);
  searchButton.setOnClickListener(this);
  selectButton.setOnClickListener(this);
  deleteButton.setOnClickListener(this);
  canleButton.setOnClickListener(this);
  selectAllButton.setOnClickListener(this);
  listView.setOnItemClickListener(this);
  listView.setOnItemLongClickListener(this);
  listView.setOnCreateContextMenuListener(this);

 }

 // 调用load()方法将数据库中的所有记录显示在当前页面
 @Override
 protected void onStart() {
  super.onStart();
  load();

 }

 public void onClick(View v) {
  // 跳转到添加信息的界面
  if (v == addStudent) {
   startActivity(new Intent(StudentListActivity.this, AddStudentActivity.class));
  } else if (v == searchButton) {
   // 跳转到查询界面
   startActivity(new Intent(this, StudentSearch.class));
  } else if (v == selectButton) {
   // 跳转到选择界面
   isDeleteList = !isDeleteList;
   if (isDeleteList) {
    checkOrClearAllCheckboxs(true);
   } else {
    showOrHiddenCheckBoxs(false);
   }
  } else if (v == deleteButton) {
   // 删除数据
   if (list.size() > 0) {
    for (int i = 0; i < list.size(); i++) {
     long id = list.get(i);
     Log.e(TAG, "delete id=" + id);
     int count = dao.deleteStudentById(id);
    }
    dao.closeDB();
    load();
   }
  } else if (v == canleButton) {
   // 点击取消,回到初始界面
   load();
   layout.setVisibility(View.GONE);
   isDeleteList = !isDeleteList;
  } else if (v == selectAllButton) {
   // 全选,如果当前全选按钮显示是全选,则在点击后变为取消全选,如果当前为取消全选,则在点击后变为全选
   selectAllMethods();
 }
 }

 // 创建菜单
 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
  MenuInflater inflater = new MenuInflater(this); //getMenuInflater();
  inflater.inflate(R.menu.menu, menu);
 }

 // 对菜单中的按钮添加响应时间
 @Override
 public boolean onContextItemSelected(MenuItem item) {
  int item_id = item.getItemId();
  student = (Student) listView.getTag();
  Log.v(TAG, "TestSQLite++++student+" + listView.getTag() + "");
  final long student_id = student.getId();
  Intent intent = new Intent();
  Log.v(TAG, "TestSQLite+++++++id"+student_id);
  switch (item_id) {
   /* 添加
   case R.id.add:
    startActivity(new Intent(this, AddStudentActivity.class));
    break;*/
   // 删除
   case R.id.delete:
    deleteStudentInformation(student_id);
    break;
   case R.id.look:
    // 查看学生信息
    Log.v(TAG, "TestSQLite+++++++look"+student+"");
    intent.putExtra("student", student);
    intent.setClass(this, ShowStudentActivity.class);
    this.startActivity(intent);
    break;
   case R.id.write:
    // 修改学生信息
    intent.putExtra("student", student);
    intent.setClass(this, AddStudentActivity.class);
    this.startActivity(intent);
    break;
   default:
    break;
  }
  return super.onContextItemSelected(item);
 }

  @Override
 public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
 {
  Student student = (Student) dao.getStudentFromView(view, id);
  listView.setTag(student);
  registerForContextMenu(listView);
  return false;
 }

 // 点击一条记录是触发的事件
 @Override
 public void onItemClick(AdapterView<?> parent, View view, int position,
       long id) {
  if (!isDeleteList) {
   student = dao.getStudentFromView(view, id);
   Log.e(TAG, "student*****" + dao.getStudentFromView(view, id));
   Intent intent = new Intent();
   intent.putExtra("student", student);
   intent.setClass(this, ShowStudentActivity.class);
   this.startActivity(intent);
  } else {
   CheckBox box = (CheckBox) view.findViewById(R.id.cb_box);
   box.setChecked(!box.isChecked());
   list.add(id);
   deleteButton.setEnabled(box.isChecked());
  }
 }

 // 自定义一个加载数据库中的全部记录到当前页面的无参方法
 public void load() {
  StudentDBHelper studentDBHelper = new StudentDBHelper(
    StudentListActivity.this);
  SQLiteDatabase database = studentDBHelper.getWritableDatabase();
  cursor = database.query(TableContanst.STUDENT_TABLE, null, null, null,
    null, null, TableContanst.StudentColumns.MODIFY_TIME + " desc");
  startManagingCursor(cursor);
  adapter = new SimpleCursorAdapter(this, R.layout.student_list_item,
    cursor, new String[] { TableContanst.StudentColumns.ID,
    TableContanst.StudentColumns.NAME,
    TableContanst.StudentColumns.AGE,
    TableContanst.StudentColumns.SEX,
    TableContanst.StudentColumns.LIKES,
    TableContanst.StudentColumns.PHONE_NUMBER,
    TableContanst.StudentColumns.TRAIN_DATE }, new int[] {
    R.id.tv_stu_id, R.id.tv_stu_name, R.id.tv_stu_age,
    R.id.tv_stu_sex, R.id.tv_stu_likes, R.id.tv_stu_phone,
    R.id.tv_stu_traindate });
  listView.setAdapter(adapter);
 }

 // 全选或者取消全选
 private void checkOrClearAllCheckboxs(boolean b) {
  int childCount = listView.getChildCount();
   Log.e(TAG, "list child size=" + childCount);
  for (int i = 0; i < childCount; i++) {
   View view = listView.getChildAt(i);
   if (view != null) {
    CheckBox box = (CheckBox) view.findViewById(R.id.cb_box);
    box.setChecked(!b);
   }
  }
  showOrHiddenCheckBoxs(true);
 }

 // 显示或者隐藏自定义菜单
 private void showOrHiddenCheckBoxs(boolean b) {
  int childCount = listView.getChildCount();
  Log.e(TAG, "list child size=" + childCount);
  for (int i = 0; i < childCount; i++) {
   View view = listView.getChildAt(i);
   if (view != null) {
    CheckBox box = (CheckBox) view.findViewById(R.id.cb_box);
    int visible = b ? View.VISIBLE : View.GONE;
    box.setVisibility(visible);
    layout.setVisibility(visible);
    deleteButton.setEnabled(false);
   }
  }
 }

 // 自定义一个利用对话框形式进行数据的删除

 private void deleteStudentInformation(final long delete_id) {
  // 利用对话框的形式删除数据
  AlertDialog.Builder builder = new AlertDialog.Builder(this);
  builder.setTitle("学员信息删除")
    .setMessage("确定删除所选记录?")
    .setCancelable(false)
    .setPositiveButton("确定", new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int id) {
      int raws = dao.deleteStudentById(delete_id);
      layout.setVisibility(View.GONE);
      isDeleteList = !isDeleteList;
      load();
      if (raws > 0) {
       Toast.makeText(StudentListActivity.this, "删除成功!",
         Toast.LENGTH_LONG).show();
      } else
       Toast.makeText(StudentListActivity.this, "删除失败!",
         Toast.LENGTH_LONG).show();
     }
    })
    .setNegativeButton("取消", new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int id) {
      dialog.cancel();
     }
    });
  AlertDialog alert = builder.create();
  alert.show();
 }

 // 点击全选事件时所触发的响应
 private void selectAllMethods() {
  // 全选,如果当前全选按钮显示是全选,则在点击后变为取消全选,如果当前为取消全选,则在点击后变为全选
  if (selectAllButton.getText().toString().equals("全选")) {
   int childCount = listView.getChildCount();
   for (int i = 0; i < childCount; i++) {
    View view = listView.getChildAt(i);
    if (view != null) {
     CheckBox box = (CheckBox) view.findViewById(R.id.cb_box);
     box.setChecked(true);
     deleteButton.setEnabled(true);
     selectAllButton.setText("取消全选");
    }
   }
  } else if (selectAllButton.getText().toString().equals("取消全选")) {
   checkOrClearAllCheckboxs(true);
   deleteButton.setEnabled(false);
   selectAllButton.setText("全选");
  }
 }
}

布局文件:main.xml和student_list_item.xml

代码如下

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <RelativeLayout android:id="@+id/RelativeLayout"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <Button android:id="@+id/bn_search_id"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="搜索"
   android:gravity="center_vertical" />
  <Button android:gravity="center"
   android:text="添加学员信息"
   android:id="@+id/btn_add_student"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentTop="true"
   android:layout_toRightOf="@+id/bn_search_id"
   android:layout_toLeftOf="@+id/bn_select" />
  <Button android:gravity="center_vertical"
   android:text="选择"
   android:id="@+id/bn_select"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentTop="true"
   android:layout_alignParentRight="true"></Button>
 </RelativeLayout>
 <TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:text="  ID   姓 名    年 龄   性 别  "
  />

 <ListView
  android:id="@android:id/list"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1" />

 <LinearLayout
  android:orientation="horizontal"
  android:id="@+id/showLiner"
  android:visibility="gone"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal">
  <Button
   android:id="@+id/bn_delete"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="删除"
   android:enabled="false"
   />
  <Button
   android:id="@+id/bn_selectall"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="全选"
   />
  <Button
   android:id="@+id/bn_canel"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="取消"
   />
 </LinearLayout>
</LinearLayout>

student_list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="horizontal"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content" >
 <ImageView android:layout_width="fill_parent"
  android:layout_height="130px"
  android:layout_gravity="center"
  android:layout_weight="1"
  android:background="@drawable/icon" />
 <TextView android:id="@+id/tv_stu_id"
  android:layout_width="fill_parent"
  android:layout_gravity="center"
  android:layout_height="wrap_content"
  android:layout_weight="1"/>
 <TextView android:id="@+id/tv_stu_name"
  android:layout_width="fill_parent"
  android:layout_gravity="center"
  android:layout_height="wrap_content"
  android:layout_weight="1"/>

 <TextView android:id="@+id/tv_stu_age"
  android:layout_width="fill_parent"
  android:layout_gravity="center"
  android:layout_height="wrap_content"
  android:layout_weight="1"/>
 <TextView android:id="@+id/tv_stu_sex"
  android:layout_width="fill_parent"
  android:layout_gravity="center"
  android:layout_height="wrap_content"
  android:layout_weight="1"/>

 <TextView android:id="@+id/tv_stu_likes"
  android:layout_width="fill_parent"
  android:layout_gravity="center"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:visibility="gone"/>
 <TextView android:id="@+id/tv_stu_phone"
  android:layout_width="fill_parent"
  android:layout_gravity="center"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:visibility="gone"/>
 <TextView android:id="@+id/tv_stu_traindate"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_gravity="center"
  android:layout_weight="1"
  android:visibility="gone"/>
 <TextView android:id="@+id/tv_stu_modifyDateTime"
  android:layout_width="fill_parent"
  android:layout_gravity="center"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:visibility="gone"/>

 <CheckBox
  android:id="@+id/cb_box"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1"
  android:visibility="gone"
  android:checked="false"
  android:focusable="false"/>
</LinearLayout>

展示单条记录详细信息的ShowStudentActivity

代码如下

java文件:ShowStudentActivity

package com.example.asus.student;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import Student.Student;
import TableContanst.TableContanst;
public class ShowStudentActivity extends Activity {
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.student_info);
  Intent intent = getIntent();
  Student student = (Student) intent.getSerializableExtra(TableContanst.STUDENT_TABLE);
  ((TextView)findViewById(R.id.tv_info_id)).setText(student.getId()+"");
  ((TextView)findViewById(R.id.tv_info_name)).setText(student.getName());
  ((TextView)findViewById(R.id.tv_info_age)).setText(student.getAge()+"");
  ((TextView)findViewById(R.id.tv_info_sex)).setText(student.getSex());
  ((TextView)findViewById(R.id.tv_info_likes)).setText(student.getLike());
  ((TextView)findViewById(R.id.tv_info_train_date)).setText(student.getTrainDate());
  ((TextView)findViewById(R.id.tv_info_phone)).setText(student.getPhoneNumber());
 }
 public void goBack(View view) {
  finish();
 }
}

布局文件:student_info.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:padding="5dip"  >
 <TextView android:id="@+id/id2_text_id"
  android:layout_width="80dip"
  android:layout_height="40dip"
  android:layout_marginRight="5dip"
  android:layout_marginTop="5dip"
  android:layout_marginBottom="5dip"
  android:textSize="16sp"
  android:gravity="left|center_vertical"
  android:text="学员ID:"  />
 <TextView android:id="@+id/tv_info_id"
  android:layout_width="fill_parent"
  android:layout_height="40dip"
  android:layout_toRightOf="@id/id2_text_id"
  android:layout_alignParentRight="true"
  android:layout_alignTop="@id/id2_text_id"
  android:gravity="left|center_vertical"/>
 <TextView android:id="@+id/name2_text_id"
  android:layout_width="80dip"
  android:layout_height="40dip"
  android:layout_marginRight="5dip"
  android:layout_marginTop="5dip"
  android:layout_marginBottom="5dip"
  android:layout_below="@id/id2_text_id"
  android:layout_alignLeft="@id/id2_text_id"
  android:textSize="16sp"
  android:gravity="left|center_vertical"
  android:text="姓名:"  />
 <TextView android:id="@+id/tv_info_name"
  android:layout_width="fill_parent"
  android:layout_height="40dip"
  android:layout_toRightOf="@id/name2_text_id"
  android:layout_alignParentRight="true"
  android:layout_alignTop="@id/name2_text_id"
  android:gravity="left|center_vertical"  />
 <TextView android:id="@+id/age2_text_id"
  android:layout_width="80dip"
  android:layout_height="40dip"
  android:gravity="left|center_vertical"
  android:layout_marginRight="5dip"
  android:layout_below="@id/name2_text_id"
  android:layout_marginBottom="5dip"
  android:textSize="16sp"
  android:text="年龄:"  />
 <TextView android:id="@+id/tv_info_age"
  android:layout_width="fill_parent"
  android:layout_height="40dip"
  android:layout_toRightOf="@id/age2_text_id"
  android:layout_alignParentRight="true"
  android:layout_alignTop="@id/age2_text_id"
  android:gravity="left|center_vertical"  />
 <TextView android:id="@+id/sex2_text_id"
  android:layout_width="80dip"
  android:layout_height="40dip"
  android:gravity="left|center_vertical"
  android:layout_below="@id/age2_text_id"
  android:layout_alignLeft="@id/age2_text_id"
  android:layout_marginRight="5dip"
  android:layout_marginBottom="5dip"
  android:text="性别:"
  android:textSize="16sp"  />
 <TextView
  android:id="@+id/tv_info_sex"
  android:layout_width="fill_parent"
  android:layout_height="40dip"
  android:layout_toRightOf="@id/sex2_text_id"
  android:layout_alignParentRight="true"
  android:layout_alignTop="@id/sex2_text_id"
  android:gravity="left|center_vertical"   />
 <TextView android:id="@+id/like2_text_id"
  android:layout_width="80dip"
  android:layout_height="40dip"
  android:gravity="left|center_vertical"
  android:layout_below="@id/sex2_text_id"
  android:layout_alignLeft="@id/sex2_text_id"
  android:layout_marginRight="5dip"
  android:layout_marginBottom="5dip"
  android:text="爱好:"
  android:textSize="16sp"  />
 <TextView android:layout_height="40dip"
  android:id="@+id/tv_info_likes"
  android:layout_width="wrap_content"
  android:layout_toRightOf="@id/like2_text_id"
  android:layout_below="@id/sex2_text_id"
  android:layout_marginRight="52dip"
  android:gravity="left|center_vertical"/>
 <TextView android:id="@+id/contact2_text_id"
  android:layout_width="80dip"
  android:layout_height="40dip"
  android:gravity="center_vertical|left"
  android:layout_marginRight="5dip"
  android:layout_below="@id/like2_text_id"
  android:layout_marginBottom="5dip"
  android:textSize="16sp"
  android:text="联系电话:"  />
 <TextView android:id="@+id/tv_info_phone"
  android:layout_width="fill_parent"
  android:layout_height="40dip"
  android:layout_toRightOf="@id/contact2_text_id"
  android:layout_alignParentRight="true"
  android:layout_alignTop="@id/contact2_text_id"
  android:gravity="center_vertical|left"  />
 <TextView android:id="@+id/train2_time_text_id"
  android:layout_width="80dip"
  android:layout_height="40dip"
  android:gravity="center_vertical|left"
  android:layout_marginRight="5dip"
  android:layout_below="@id/contact2_text_id"
  android:layout_marginBottom="5dip"
  android:textSize="16sp"
  android:text="入学日期"  />
 <TextView android:id="@+id/tv_info_train_date"
  android:layout_width="fill_parent"
  android:layout_height="40dip"
  android:layout_toRightOf="@id/train2_time_text_id"
  android:layout_alignParentRight="true"
  android:layout_alignTop="@id/train2_time_text_id"
  android:gravity="center_vertical|left"  />
 <Button android:id="@+id/back_to_list_id"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="返回列表界面"
  android:layout_below="@id/train2_time_text_id"
  android:layout_alignParentLeft="true"
  android:layout_alignParentRight="true"
  android:onClick="goBack">
 </Button>
</RelativeLayout>

添加记录的活动AddStudentActivity

代码如下

java文件:AddStudenActivity

package com.example.asus.student;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import StudentDBHelper.StudentDBHelper;
import Student.Student;
import TableContanst.TableContanst;
public class AddStudentActivity extends Activity implements OnClickListener {
 private static final String TAG = "AddStudentActivity";
 private final static int DATE_DIALOG = 1;
 private static final int DATE_PICKER_ID = 1;
 private TextView idText;
 private EditText nameText;
 private EditText ageText;
 private EditText phoneText;
 private EditText dataText;
 private RadioGroup group;
 private RadioButton button1;
 private RadioButton button2;
 private CheckBox box1;
 private CheckBox box2;
 private CheckBox box3;
 private Button restoreButton;
 private String sex;
 private Button resetButton;
 private Long student_id;
 private StudentDao dao;
 private boolean isAdd = true;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.add_student);
  idText = (TextView) findViewById(R.id.tv_stu_id);
  nameText = (EditText) findViewById(R.id.et_name);
  ageText = (EditText) findViewById(R.id.et_age);
  button1 = (RadioButton) findViewById(R.id.rb_sex_female);
  button2 = (RadioButton) findViewById(R.id.rb_sex_male);
  phoneText = (EditText) findViewById(R.id.et_phone);
  dataText = (EditText) findViewById(R.id.et_traindate);
  group = (RadioGroup) findViewById(R.id.rg_sex);
  box1 = (CheckBox) findViewById(R.id.box1);
  box2 = (CheckBox) findViewById(R.id.box2);
  box3 = (CheckBox) findViewById(R.id.box3);
  restoreButton = (Button) findViewById(R.id.btn_save);
  resetButton = (Button) findViewById(R.id.btn_clear);
  dao = new StudentDao(new StudentDBHelper(this)); // 设置监听 78
  restoreButton.setOnClickListener(this);
  resetButton.setOnClickListener(this);
  dataText.setOnClickListener(this);
  checkIsAddStudent();
 }
 // 检查此时Activity是否用于添加学员信息
 private void checkIsAddStudent() {
  Intent intent = getIntent();
  Serializable serial = intent.getSerializableExtra(TableContanst.STUDENT_TABLE);
  if (serial == null) {
   isAdd = true;
   dataText.setText(getCurrentDate());
  } else {
   isAdd = false;
   Student s = (Student) serial;
   showEditUI(s);
  }
 }
 //显示学员信息更新的UI104
 private void showEditUI(Student student) {
  // 先将Student携带的数据还原到student的每一个属性中去
  student_id = student.getId();
  String name = student.getName();
  int age = student.getAge();
  String phone = student.getPhoneNumber();
  String data = student.getTrainDate();
  String like = student.getLike();
  String sex = student.getSex();
  if (sex.toString().equals("男")) {
   button2.setChecked(true);
  } else if (sex.toString().equals("女")) {
   button1.setChecked(true);
  }
  if (like != null && !"".equals(like)) {
   if (box1.getText().toString().indexOf(like) >= 0) {
    box1.setChecked(true);
   }
   if (box2.getText().toString().indexOf(like) >= 0) {
    box2.setChecked(true);
   }
   if (box3.getText().toString().indexOf(like) >= 0) {
    box3.setChecked(true);
   }
  }
  // 还原数据
  idText.setText(student_id + "");
  nameText.setText(name + "");
  ageText.setText(age + "");
  phoneText.setText(phone + "");
  dataText.setText(data + "");
  setTitle("学员信息更新");
  restoreButton.setText("更新");
 }
 public void onClick(View v) {
  // 收集数据
  if (v == restoreButton) {
   if (!checkUIInput()) {// 界面输入验证
    return;
   }
   Student student = getStudentFromUI();
   if (isAdd) {
    long id = dao.addStudent(student);
    dao.closeDB();
    if (id > 0) {
     Toast.makeText(this, "保存成功, ID=" + id,Toast.LENGTH_SHORT).show();
     finish();
    } else {
     Toast.makeText(this, "保存失败,请重新输入!", Toast.LENGTH_SHORT).show();
    }
   } else if (!isAdd) {
    long id = dao.addStudent(student);
    dao.closeDB();
    if (id > 0) {
     Toast.makeText(this, "更新成功",Toast.LENGTH_SHORT).show();
     finish();
    } else {
     Toast.makeText(this, "更新失败,请重新输入!",Toast.LENGTH_SHORT).show();
    }
   }
  } else if (v == resetButton) {
   clearUIData();
  } else if (v == dataText) {
   showDialog(DATE_PICKER_ID);
  }
 }
 //  清空界面的数据176
 private void clearUIData() {
  nameText.setText("");
  ageText.setText("");
  phoneText.setText("");
  dataText.setText("");
  box1.setChecked(false);
  box2.setChecked(false);
  group.clearCheck();
 }
 //  收集界面输入的数据,并将封装成Student对象
 private Student getStudentFromUI() {
  String name = nameText.getText().toString();
  int age = Integer.parseInt(ageText.getText().toString());
  String sex = ((RadioButton) findViewById(group
    .getCheckedRadioButtonId())).getText().toString();
  String likes = "";
  if (box1.isChecked()) { // basketball, football football
   likes += box1.getText();
  }
  if (box2.isChecked()) {
   if (likes.equals("")) {
    likes += box2.getText();
   } else {
    likes += "," + box2.getText();
   }
   if (likes.equals("")) {
    likes += box3.getText();
   } else {
    likes += "," + box3.getText();
   }
  }
  String trainDate = dataText.getText().toString();
  String phoneNumber = phoneText.getText().toString();
  String modifyDateTime = getCurrentDateTime();
  Student s=new Student(name, age, sex, likes, phoneNumber, trainDate,
    modifyDateTime);
  if (!isAdd) {
   s.setId(Integer.parseInt(idText.getText().toString()));
   dao.deleteStudentById(student_id);
  }
  return s;
 }
 //  * 得到当前的日期时间
 private String getCurrentDateTime() {
  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  return format.format(new Date());
 }
 //  * 得到当前的日期
 private String getCurrentDate() {
  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  return format.format(new Date());
 }
 //验证用户是否按要求输入了数据
 private boolean checkUIInput() { // name, age, sex
  String name = nameText.getText().toString();
  String age = ageText.getText().toString();
  int id = group.getCheckedRadioButtonId();
  String message = null;
  View invadView = null;
  if (name.trim().length() == 0) {
   message = "请输入姓名!";
   invadView = nameText;
  } else if (age.trim().length() == 0) {
   message = "请输入年龄!";
   invadView = ageText;
  } else if (id == -1) {
   message = "请选择性别!";
  }
  if (message != null) {
   Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
   if (invadView != null)
    invadView.requestFocus();
   return false;
  }   return true;  }
 //时间的监听与事件
 private DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener()
 {
  @Override
  public void onDateSet(DatePicker view, int year, int monthOfYear,
        int dayOfMonth) {
   dataText.setText(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
  }
 };
 @Override
 protected Dialog onCreateDialog(int id) {
  switch (id) {
   case DATE_PICKER_ID:
    return new DatePickerDialog(this, onDateSetListener, 2011, 8, 14);
  }
  return null;
 }
}

布局文件:add_student.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:fillViewport="true"
 android:scrollbarStyle="outsideInset" >
 <RelativeLayout
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:padding="5dip"  >
  <TextView android:id="@+id/tv_stu_text_id"
   android:layout_width="80dip"
   android:layout_height="40dip"
   android:gravity="center_vertical|right"
   android:layout_marginRight="5dip"
   android:layout_marginTop="5dip"
   android:layout_marginBottom="5dip"
   android:textSize="16sp"
   android:text="学员ID:"  />
  <TextView android:id="@+id/tv_stu_id"
   android:layout_width="fill_parent"
   android:layout_height="40dip"
   android:text="未分配ID"
   android:layout_toRightOf="@id/tv_stu_text_id"
   android:layout_alignParentRight="true"
   android:layout_alignTop="@id/tv_stu_text_id"
   android:gravity="center"
   android:background="#ffffff"
   android:textColor="#000000"
   android:textSize="16sp"  />
  <TextView android:id="@+id/tv_name_text"
   android:layout_width="80dip"
   android:layout_height="40dip"
   android:gravity="center_vertical|right"
   android:layout_marginRight="5dip"
   android:layout_below="@id/tv_stu_text_id"
   android:layout_alignLeft="@id/tv_stu_text_id"
   android:layout_marginBottom="5dip"
   android:textSize="16sp"
   android:text="姓名:"  />
  <EditText android:id="@+id/et_name"
   android:layout_width="fill_parent"
   android:layout_height="40dip"
   android:layout_toRightOf="@id/tv_name_text"
   android:layout_alignParentRight="true"
   android:layout_alignTop="@id/tv_name_text"
   android:hint="请输入姓名,如liukenken"
   android:inputType="textPersonName"
   android:paddingLeft="20dip"/>
  <TextView android:id="@+id/tv_age_text"
   android:layout_width="80dip"
   android:layout_height="40dip"
   android:gravity="center_vertical|right"
   android:layout_marginRight="5dip"
   android:layout_below="@id/tv_name_text"
   android:layout_marginBottom="5dip"
   android:textSize="16sp"
   android:text="年龄:"  />
  <EditText android:id="@+id/et_age"
   android:layout_width="fill_parent"
   android:layout_height="40dip"
   android:layout_toRightOf="@id/tv_age_text"
   android:layout_alignParentRight="true"
   android:layout_alignTop="@id/tv_age_text"
   android:hint="请输入年龄"
   android:paddingLeft="20dip"
   android:maxLength="3"
   android:inputType="number"  />
  <TextView android:id="@+id/tv_sex_text"
   android:layout_width="80dip"
   android:layout_height="40dip"
   android:gravity="center_vertical|right"
   android:layout_below="@id/tv_age_text"
   android:layout_alignLeft="@id/tv_age_text"
   android:layout_marginRight="5dip"
   android:layout_marginBottom="5dip"
   android:text="性别:"
   android:textSize="16sp"  />
  <RadioGroup
   android:id="@+id/rg_sex"
   android:layout_width="fill_parent"
   android:layout_height="40dip"
   android:orientation="horizontal"
   android:layout_toRightOf="@id/tv_sex_text"
   android:layout_alignParentRight="true"
   android:layout_alignTop="@id/tv_sex_text"   >
   <RadioButton
    android:id="@+id/rb_sex_male"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="男"
    android:textSize="16sp"  />
   <RadioButton android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="女"
    android:id="@+id/rb_sex_female"
    android:layout_weight="1"
    android:textSize="16sp">
   </RadioButton>
  </RadioGroup>
  <TextView android:id="@+id/tv_likes_text"
   android:layout_width="80dip"
   android:layout_height="40dip"
   android:gravity="center_vertical|right"
   android:layout_below="@id/rg_sex"
   android:layout_alignLeft="@id/tv_sex_text"
   android:layout_marginRight="5dip"
   android:layout_marginBottom="5dip"
   android:text="爱好:"
   android:textSize="16sp"  />
  <CheckBox android:id="@+id/box1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_toRightOf="@id/tv_likes_text"
   android:layout_below="@+id/rg_sex"
   android:text="@string/box1" ></CheckBox>
  <CheckBox android:id="@+id/box2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_toRightOf="@+id/box1"
   android:layout_below="@+id/rg_sex"
   android:text="@string/box2">

  </CheckBox>
  <CheckBox  android:id="@+id/box3"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_toRightOf="@+id/box2"
   android:layout_below="@+id/rg_sex"
   android:text="@string/box3"  >
  </CheckBox>
  <TextView android:id="@+id/tv_phone_text"
   android:layout_width="80dip"
   android:layout_height="40dip"
   android:gravity="center_vertical|right"
   android:layout_marginRight="5dip"
   android:layout_below="@id/tv_likes_text"
   android:layout_marginBottom="5dip"
   android:textSize="16sp"
   android:text="联系电话:"  />
  <EditText android:id="@+id/et_phone"
   android:layout_width="fill_parent"
   android:layout_height="40dip"
   android:layout_toRightOf="@id/tv_phone_text"
   android:layout_alignParentRight="true"
   android:layout_alignTop="@id/tv_phone_text"
   android:hint="请输入手机号"
   android:paddingLeft="20dip"
   android:inputType="phone"
   android:maxLength="11"  />
  <TextView android:id="@+id/tv_traindate_text"
   android:layout_width="80dip"
   android:layout_height="40dip"
   android:gravity="center_vertical|right"
   android:layout_marginRight="5dip"
   android:layout_below="@id/tv_phone_text"
   android:layout_marginBottom="5dip"
   android:textSize="16sp"
   android:text="入学日期"    />
  <EditText android:id="@+id/et_traindate"
   android:layout_width="fill_parent"
   android:layout_height="40dip"
   android:layout_toRightOf="@id/tv_traindate_text"
   android:layout_alignParentRight="true"
   android:layout_alignTop="@id/tv_traindate_text"
   android:hint="点击选择日期"
   android:inputType="date"
   android:paddingLeft="20dip"
   android:focusable="false"  />
  <Button android:id="@+id/btn_save"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="保存"
   android:layout_below="@id/tv_traindate_text"
   android:layout_alignRight="@id/rg_sex">
  </Button>
  <Button android:id="@+id/btn_clear"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="重置"
   android:layout_below="@id/tv_traindate_text"
   android:layout_toLeftOf="@id/btn_save"
   android:layout_marginRight="10dip">
  </Button>
 </RelativeLayout> </ScrollView>

查找记录的活动StudentSearch。

代码如下

java文件:StudentSearch

package com.example.asus.student;
import StudentDBHelper.StudentDBHelper;
import TableContanst.TableContanst;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class StudentSearch extends Activity implements OnClickListener {
 private EditText nameText;
 private Button button;
 private Button reButton;
 private Cursor cursor;
 private SimpleCursorAdapter adapter;
 private ListView listView;
 private StudentDao dao;
 private Button returnButton;
 private LinearLayout layout;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.search);
  nameText = (EditText) findViewById(R.id.et_srarch);
  layout=(LinearLayout) findViewById(R.id.linersearch);
  button = (Button) findViewById(R.id.bn_sure_search);
  reButton = (Button) findViewById(R.id.bn_return);
  listView = (ListView) findViewById(R.id.searchListView);
  returnButton = (Button) findViewById(R.id.return_id);
  dao = new StudentDao(new StudentDBHelper(this));

  reButton.setOnClickListener(this);
  returnButton.setOnClickListener(this);
  button.setOnClickListener(this);
 }

 @Override
 public void onClick(View v) {
  if (v == button) {
   reButton.setVisibility(View.GONE);
   button.setVisibility(View.GONE);
   nameText.setVisibility(View.GONE);
   layout.setVisibility(View.VISIBLE);
   String name = nameText.getText().toString();
   cursor = dao.findStudent(name);
   if (!cursor.moveToFirst()) {
    Toast.makeText(this, "没有所查学员信息!", Toast.LENGTH_SHORT).show();
   } else
    //如果有所查询的信息,则将查询结果显示出来
    adapter = new SimpleCursorAdapter(this, R.layout.find_student_list_item,
    cursor, new String[] { TableContanst.StudentColumns.ID,
      TableContanst.StudentColumns.NAME,
      TableContanst.StudentColumns.AGE,
      TableContanst.StudentColumns.SEX,
      TableContanst.StudentColumns.LIKES,
      TableContanst.StudentColumns.PHONE_NUMBER,
      TableContanst.StudentColumns.TRAIN_DATE },
      new int[] {
        R.id.tv_stu_id,
        R.id.tv_stu_name,
        R.id.tv_stu_age,
        R.id.tv_stu_sex,
        R.id.tv_stu_likes,
        R.id.tv_stu_phone,
        R.id.tv_stu_traindate });
   listView.setAdapter(adapter);
  }else if(v==reButton|v==returnButton){
   finish();
  }
 }
}

布局文件:search.xml和find_studetn_list_item.xml

代码如下

search.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent" >
 <EditText
  android:id="@+id/et_srarch"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:hint="请输入学员姓名"
  android:inputType="textPersonName" />
 <Button
  android:id="@+id/bn_sure_search"
  android:gravity="center"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="确定"   />
 <Button
  android:id="@+id/bn_return"
  android:gravity="center"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="返回"   />
 <LinearLayout
  android:id="@+id/linersearch"
  android:orientation="vertical"
  android:visibility="gone"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <TextView
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:gravity="center"
   android:text="ID  姓 名  年 龄  性 别  爱 好  电 话  日 期"
   />
  <ListView
   android:id="@+id/searchListView"
   android:layout_weight="1"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:gravity="right"/>
  <Button
   android:id="@+id/return_id"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="返回"  />
 </LinearLayout>
</LinearLayout>

find_student_list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="horizontal"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_weight="1"
 >
 <TextView android:id="@+id/tv_stu_id"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 <TextView android:id="@+id/tv_stu_name"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 <TextView android:id="@+id/tv_stu_age"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 <TextView android:id="@+id/tv_stu_sex"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 <TextView android:id="@+id/tv_stu_likes"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 <TextView android:id="@+id/tv_stu_phone"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
 <TextView android:id="@+id/tv_stu_traindate"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_weight="1" />
</LinearLayout>

主界面中跳出的上下文菜单ContextMenu的布局文件menu.xml

menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_height="40dip"
 android:layout_width="80dip">
 <group android:checkableBehavior="single">
  <item android:id="@+id/delete" android:title="删除学员信息" />
  <item android:id="@+id/look" android:title="详细信息" />
  <item android:id="@+id/write" android:title="修改学员信息" />
 </group>
</menu>

然后是一些自定义类的java文件

StudentDao类

java文件:StudentDao

package com.example.asus.student;
import StudentDBHelper.StudentDBHelper;
import TableContanst.TableContanst;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import Student.Student;
public class StudentDao {
 private StudentDBHelper dbHelper;
 private Cursor cursor;
 public StudentDao(StudentDBHelper dbHelper) {
  this.dbHelper = dbHelper;
 }
 // 添加一个Student对象数据到数据库表
 public long addStudent(Student s) {
  ContentValues values = new ContentValues();
  values.put(TableContanst.StudentColumns.NAME, s.getName());
  values.put(TableContanst.StudentColumns.AGE, s.getAge());
  values.put(TableContanst.StudentColumns.SEX, s.getSex());
  values.put(TableContanst.StudentColumns.LIKES, s.getLike());
  values.put(TableContanst.StudentColumns.PHONE_NUMBER, s.getPhoneNumber());
  values.put(TableContanst.StudentColumns.TRAIN_DATE, s.getTrainDate());
  values.put(TableContanst.StudentColumns.MODIFY_TIME, s.getModifyDateTime());
  return dbHelper.getWritableDatabase().insert(TableContanst.STUDENT_TABLE, null, values);
 }

 // 删除一个id所对应的数据库表student的记录
 public int deleteStudentById(long id) {
  return dbHelper.getWritableDatabase().delete(TableContanst.STUDENT_TABLE,
    TableContanst.StudentColumns.ID + "=?", new String[] { id + "" });
 }

 // 更新一个id所对应数据库表student的记录
 public int updateStudent(Student s) {
  ContentValues values = new ContentValues();
  values.put(TableContanst.StudentColumns.NAME, s.getName());
  values.put(TableContanst.StudentColumns.AGE, s.getAge());
  values.put(TableContanst.StudentColumns.SEX, s.getSex());
  values.put(TableContanst.StudentColumns.LIKES, s.getLike());
  values.put(TableContanst.StudentColumns.PHONE_NUMBER, s.getPhoneNumber());
  values.put(TableContanst.StudentColumns.TRAIN_DATE, s.getTrainDate());
  values.put(TableContanst.StudentColumns.MODIFY_TIME, s.getModifyDateTime());
  return dbHelper.getWritableDatabase().update(TableContanst.STUDENT_TABLE, values,
    TableContanst.StudentColumns.ID + "=?", new String[] { s.getId() + "" });
 }
 // 查询所有的记录
 public List<Map<String,Object>> getAllStudents() {
  //modify_time desc
  List<Map<String, Object>> data = new ArrayList<Map<String,Object>>();
  Cursor cursor = dbHelper.getWritableDatabase().query(TableContanst.STUDENT_TABLE, null, null, null,
    null, null, TableContanst.StudentColumns.MODIFY_TIME+" desc");
  while(cursor.moveToNext()) {
   Map<String, Object> map = new HashMap<String, Object>(8);
   long id = cursor.getInt(cursor.getColumnIndex(TableContanst.StudentColumns.ID));
   map.put(TableContanst.StudentColumns.ID, id);
   String name = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.NAME));
   map.put(TableContanst.StudentColumns.NAME, name);
   int age = cursor.getInt(cursor.getColumnIndex(TableContanst.StudentColumns.AGE));
   map.put(TableContanst.StudentColumns.AGE, age);
   String sex = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.SEX));
   map.put(TableContanst.StudentColumns.SEX, sex);
   String likes = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.LIKES));
   map.put(TableContanst.StudentColumns.LIKES, likes);
   String phone_number = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.PHONE_NUMBER));
   map.put(TableContanst.StudentColumns.PHONE_NUMBER, phone_number);
   String train_date = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.TRAIN_DATE));
   map.put(TableContanst.StudentColumns.TRAIN_DATE, train_date);
   String modify_time = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.MODIFY_TIME));
   map.put(TableContanst.StudentColumns.MODIFY_TIME, modify_time);
   data.add(map);
  }
  return data;
 }
 //模糊查询一条记录
 public Cursor findStudent(String name){
  Cursor cursor = dbHelper.getWritableDatabase().query(TableContanst.STUDENT_TABLE, null, "name like ?",
    new String[] { "%" + name + "%" }, null, null, null,null);
  return cursor;  }
 //按姓名进行排序
 public Cursor sortByName(){
  Cursor cursor = dbHelper.getWritableDatabase().query(TableContanst.STUDENT_TABLE, null,null,
    null, null, null,TableContanst.StudentColumns.NAME);
  return cursor;  }
 //按入学日期进行排序
 public Cursor sortByTrainDate(){
  Cursor cursor = dbHelper.getWritableDatabase().query(TableContanst.STUDENT_TABLE, null,null,
    null, null, null,TableContanst.StudentColumns.TRAIN_DATE);
  return cursor;
 }
 //按学号进行排序
 public Cursor sortByID(){
  Cursor cursor = dbHelper.getWritableDatabase().query(TableContanst.STUDENT_TABLE, null,null,
    null, null, null,TableContanst.StudentColumns.ID);
  return cursor; }
 public void closeDB() {
  dbHelper.close();  } //自定义的方法通过View和Id得到一个student对象
 public Student getStudentFromView(View view, long id) {
  TextView nameView = (TextView) view.findViewById(R.id.tv_stu_name);
  TextView ageView = (TextView) view.findViewById(R.id.tv_stu_age);
  TextView sexView = (TextView) view.findViewById(R.id.tv_stu_sex);
  TextView likeView = (TextView) view.findViewById(R.id.tv_stu_likes);
  TextView phoneView = (TextView) view.findViewById(R.id.tv_stu_phone);
  TextView dataView = (TextView) view.findViewById(R.id.tv_stu_traindate);
  String name = nameView.getText().toString();
  int age = Integer.parseInt(ageView.getText().toString());
  String sex = sexView.getText().toString();
  String like = likeView.getText().toString();
  String phone = phoneView.getText().toString();
  String data = dataView.getText().toString();
  Student student = new Student(id, name, age, sex, like, phone, data,null);
  return
    student;
 }
}

StudentDBHelper类

java文件:StudentDBHelper

package StudentDBHelper;
import TableContanst.TableContanst;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class StudentDBHelper extends SQLiteOpenHelper {
 private static final String TAG = "StudentDBHelper";
 public static final String DB_NAME = "student_manager.db";
 public static final int VERSION = 1; //构造方法
 public StudentDBHelper(Context context, String name, CursorFactory factory, int version)
 {
  super(context, name, factory, version);
 }
 public StudentDBHelper(Context context) {
  this(context, DB_NAME, null, VERSION);  }

 //创建数据库
 @Override
 public void onCreate(SQLiteDatabase db) {
  Log.v(TAG, "onCreate");
  db.execSQL("create table "
    + TableContanst.STUDENT_TABLE     + "(_id Integer primary key AUTOINCREMENT,"
    + "name char,age integer, sex char, likes char, phone_number char,train_date date, "
    + "modify_time DATETIME)");  }
 //更新数据库
 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  Log.v(TAG, "onUpgrade");
 }
}

Student类

java文件:Student

package Student;
import java.io.Serializable;
import android.view.View;
import android.widget.TextView;
public class Student implements Serializable{
 private long id;
 private String name;
 private int age;
 private String sex;
 private String like;
 private String phoneNumber;
 private String trainDate;
 private String modifyDateTime;
 public Student() {
  super();
 }
 public Student(long id, String name, int age, String sex, String like, String phoneNumber,
     String trainDate, String modifyDateTime) {
  super();
  this.id = id;
  this.name = name;
  this.age = age;
  this.sex = sex;
  this.like = like;
  this.phoneNumber = phoneNumber;
  this.trainDate = trainDate;
  this.modifyDateTime = modifyDateTime;
 }
 public Student(String name, int age, String sex, String like, String phoneNumber,
     String trainDate, String modifyDateTime) {
  super();
  this.name = name;
  this.age = age;
  this.sex = sex;
  this.like = like;
  this.phoneNumber = phoneNumber;
  this.trainDate = trainDate;
  this.modifyDateTime = modifyDateTime;
 }
 public long getId() {
  return id;
 }
 public void setId(long id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getSex() {
  return sex;  }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public String getLike() {
  return like;
 }
 public void setLike(String like) {
  this.like = like;
 }
 public String getPhoneNumber() {
  return phoneNumber;
 }
 public void setPhoneNumber(String phoneNumber) {
  this.phoneNumber = phoneNumber;  }
 public String getTrainDate() {
  return trainDate;
 }
 public void setTrainDate(String trainDate) {
  this.trainDate = trainDate;
 }
 public String getModifyDateTime() {
  return modifyDateTime;
 }
 public void setModifyDateTime(String modifyDateTime) {
  this.modifyDateTime = modifyDateTime;
 }
}

TableContanst类

java文件:TableContanst

package TableContanst;

public final class TableContanst {
 public static final String STUDENT_TABLE = "student";
 public static final class StudentColumns {
  public static final String ID = "_id";
  public static final String NAME = "name";
  public static final String AGE = "age";
  public static final String SEX = "sex";
  public static final String LIKES = "likes";
  public static final String PHONE_NUMBER = "phone_number";
  public static final String TRAIN_DATE = "train_date";
  public static final String MODIFY_TIME = "modify_time";
 }
}

其他文件

color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <color name="colorPrimary">#3F51B5</color>
 <color name="colorPrimaryDark">#303F9F</color>
 <color name="colorAccent">#EE82EE</color>
</resources>

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

 <string name="hello">Hello World, TextStudentManager!</string>
 <string name="app_name">学员管理系统</string>
 <string name="information_write">学员信息修改</string>
 <string name="button1">男</string>
 <string name="button2">女</string>
 <string name="box1">唱歌</string>
 <string name="box2">跳舞</string>
 <string name="box3">健身</string>
 <string name="myButton">添加学员信息</string>
 <string name="spinner">请选择</string>
</resources>

styles.xml

<resources>

 <!-- Base application theme. -->
 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  <!-- Customize your theme here. -->
  <item name="colorPrimary">@color/colorPrimary</item>
  <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
  <item name="colorAccent">@color/colorAccent</item>
 </style>

</resources>

AndroidManifest.xml

再次提醒,所有自定义活动必须手动添加到这个文件中,包括设置主活动也是在此文件中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.example.asus.student">

 <application
  android:allowBackup="true"
  android:icon="@mipmap/ic_launcher"
  android:label="@string/app_name"
  android:roundIcon="@mipmap/ic_launcher_round"
  android:supportsRtl="true"
  android:theme="@style/AppTheme">
  <activity android:name=".StudentListActivity">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
  <activity android:name=".AddStudentActivity">
  </activity>
  <activity android:name=".ShowStudentActivity">
  </activity>
  <activity android:name=".StudentSearch">
  </activity>
 </application>

</manifest>

最后是效果图片

初始界面

添加界面

添加界面中的日历插件

添加后返回主界面

第一次打开的程序,ID是从1开始的,因为我之前有操作过,所以这里ID才不是从1开始的。

单击记录后显示详细信息

长按记录后跳出上下文菜单

点击菜单中的删除按钮

删除后

下面看看多条记录的操作

点击主界面的选择按钮

点击全选按钮

全选后删除

点击菜单中的修改按钮

搜索

搜索结果

以上就是关于我自己修改过的简易学生信息管理系统的全部说明,按照步骤来一步一步做,应该就能直接运。如果有问题的话,顶多就是改一下包的名字和gradle文件中版本号之类的一些简单的问题,具体需要结合电脑的实际情况来修改即可。

欢迎指正。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • 简单实现Android学生管理系统(附源码)
  • Android实现学生管理系统
  • Android中使用ContentProvider管理系统资源的实例
  • Android实现电池管理系统
  • Android版学生管理系统
(0)

相关推荐

  • Android实现电池管理系统

    一.Android 电池服务 Android电池服务,用来监听内核上报的电池事件,并将最新的电池数据上报给系统,系统收到新数据后会去更新电池显示状态.剩余电量等信息.如果收到过温报警和低电报警,系统会自动触发关机流程,保护电池和机器不受到危害. Android电池服务的启动和运行流程: Android 电池服务的源码结构 Framework\base\services\java\com\android\server         ├── SystemServer.java           

  • 简单实现Android学生管理系统(附源码)

    本文实例讲述了Android实现学生管理系统,分享给大家供大家参考.具体如下: (1)管理系统实现的功能主要是:学生.教师的注册登录,和选课,以及修改学生的成绩等基本简单的功能,最主要的是实现一些Dialog的使用. 界面如下: (2)主要代码如下:(个人留作笔记,如需要完整代码,在最下边免费下载) 下边是一个适配器,适配器是为了一个listvie进行设置值,其中加载的是一个itemview,适配器中还是用了继承的方法,用于通知适配器进行更新. public class CourseAdapte

  • Android实现学生管理系统

    本文实例为大家分享了Android实现学生管理系统的关键性代码,供大家参考,具体内容如下 局部效果图: 实现代码: 1.布局 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima27.sutdentmanager&qu

  • Android版学生管理系统

    用户可以输入姓名.性别.年龄三个字段,通过点击添加学生按钮,将学生信息展示到开始为空的ScrollView控件中,ScrollView控件只能包裹一个控件,我这里包裹的是LinearLayout.点击保存数据按钮将数据通过XmlSerializer对象将数据保存到sd卡中,当点击恢复数据按钮时将sd卡文件中的数据读取出来回显到ScrollView中.大概功能就是这样的,下面我们来看看具体的代码吧. 因为要读写文件,所以要在清单文件中添加两个权限: <uses-permission android

  • Android中使用ContentProvider管理系统资源的实例

    ContentProvider管理联系人的实例: package com.android.xiong.getsystemcontentprovidertest; import java.util.ArrayList; import android.app.Activity; import android.app.AlertDialog; import android.content.ContentUris; import android.content.ContentValues; import

  • 直接可用的Android studio学生信息管理系统

    百度上流传最广的版本有所欠缺,并不能直接使用,同时有很多不必要的功能,这是我进行删减.修改.核查后的版本,根据下面的步骤一步步来直接能够运行程序. 本程序实现的功能是增删改查以及全选 首先是程序提纲 主要部分是java文件和xml文件. activity放在java文件里面,xml文件就是布局文件,用来规定界面的显示格式. 类定义的Java文件 StudentDao StudnetDBHelper Student TableContanst 其他文件 string .xml color.xml

  • Winform学生信息管理系统主页面设计(2)

    在上次的学生登录窗口的设计(Winform学生信息管理系统登陆窗体设计(1))中,需要修改的地方为: 1.登录窗口的最大化和最小化,这个一般的登录窗口不需要,因此我们也不做,单击学生信息管理系统的窗体设计找到属性MaximizeBox和属性(窗口的最大化)和MinimizBox(窗口的最小化)是True,把它们改为False. 2.登录窗口设计的属性AcceptButton将其改为确定按钮的唯一名字(也就是button1),因此在按下回车键后我们也能登录到学生信息管理系统主页面. 3.在登录名称

  • C++代码实现学生信息管理系统

    本文实例为大家分享了C++实现学生信息管理系统的具体代码,供大家参考,具体内容如下 编译环境: Microsoft Visual Studio 2019 3个头文件: Fileoperate.hInterface.hStudent.h 4个源文件: Fileoperate.cppInterface.cppMain.cppStudent.cpp Fileoperate.h #ifndef STUDENT_H #define STUDENT_H #include<iostream> #includ

  • JSP学生信息管理系统

    本文实例为大家分享了JSP学生信息管理系统源码,JSP+Servlet+Javabean+JDBC+MySQL,供大家参考,具体内容如下 1.service层,进行数据库操作     package com.service; /** * 负责学生信息的所有数据库操作,增删改查 */ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQ

  • C++学生信息管理系统

    本文实例为大家分享了C++学生信息管理系统源码,供大家参考,具体内容如下 1. tea_list.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include"teacher.h" int sq_tea ; PTEA head = NULL ; FILE *fp ; int tea_llopen(const char* path)//打开文件 { fp=fopen(path,&q

  • Winform学生信息管理系统登陆窗体设计(1)

    对这块的知识学习早已期待已久,感觉学习的进度还是慢了,最近一直在学习Winform,不得不说一些登陆窗体的设计,这几天算是小有收获,自己也看了许多这方面的知识,知道了要想做学生信息管理系统是一个漫长的过程,但是从今天起就来慢慢地进行学生信息管理系统的构建,此外还用到数据库的知识,打算着自己开始学数据库的知识,今天就来看看学生信息管理系统登录窗口的设计.下面图片的是样例: 这方面的知识还是基于C#语言和.NET Framework平台的.自己所用的还是熟悉的开发环境VS2012,感觉VS2013和

  • Winform学生信息管理系统各子窗体剖析(3)

    先来补充一下学生信息管理系统登录窗体,在完成的过程中总是遇到各种各样的问题,对于登录窗体的设计还是存在着一些弊端,那就是需要登录学生信息管理系统时如果输入的数据出错不必一个个删除,就需要在窗体上再添加一个清空写入数据的button控件,将其属性Text改为重置.还有一个与登录窗口设计的属性AcceptButton将其改为确定按钮的唯一名字(也就是button1),因此在按下回车键后我们也能登录到学生信息管理系统主页面相对应的CancelButton将其改为取消按钮的唯一名字(也就是button2

  • java(swing)+ mysql实现学生信息管理系统源码

    本文实例为大家分享了java实现学生信息管理系统源码,供大家参考,具体内容如下 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import

  • Java+MySQL实现学生信息管理系统源码

    基于Java swing+MySQL实现学生信息管理系统:主要实现JDBC对学生信息进行增删改查,应付一般课设足矣,分享给大家.(由于篇幅原因,代码未全部列出,如有需要留下邮箱) 鉴于太多同学要源码,实在发不过来,上传到github上 https://github.com/ZhuangM/student.git 1. 开发环境:jdk7+MySQL5+win7 代码结构:model-dao-view 2. 数据库设计--建库建表语句: CREATE DATABASE student; DROP

  • java学生信息管理系统MVC架构详解

    本文实例为大家分享了java学生信息管理系统MVC架构,供大家参考,具体内容如下 一.项目结构 学生信息管理系统分三层进行实现.student.java主要提供数据,cotroller.java的功能是绑定试图和计算数据.Stuview.java用于单一的用来显示数据. 二.源码 1.1.Student 类 /* * @FileName: Student.class * @version:1.0 * @author:nazi * 描述:模型层 * */ import java.io.Serial

随机推荐