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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_34608734/article/details/74136271

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

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

首先是程序提纲

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

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

主要的活动 java xml 备注
1 StudentListActivity main.xml 除数据外的布局
student_list_item.xml 数据的布局
2 menu.xml 上下文菜单 ContextMenu
3 ShowStudentActivity student_info.xml 单条记录的详细信息
4 AddStudentActivity add_student.xml 添加记录
5 StudentSearch search.xml 查找记录,除数据外的布局
find_student_list_item.xml 查找到的记录的布局

类定义的Java文件

  • StudentDao
  • StudnetDBHelper
  • Student
  • TableContanst

其他文件

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

下面看看我的文件目录

文件目录1

文件目录2

值得注意的是,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 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文件中版本号之类的一些简单的问题,具体需要结合电脑的实际情况来修改即可。

欢迎指正。

展开阅读全文

没有更多推荐了,返回首页