学生信息管理系统

来源:互联网 发布:十一选五遗漏数据作用 编辑:程序博客网 时间:2024/06/05 19:57


今天上课老师让利用ListView和数据库做一个学员信息管理系统。下面我就把自己做的代码复制下来,供大家参考。

首页的布局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="@string/myButton"            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_weight="1"    android:layout_height="wrap_content"/>    <LinearLayout         android:orientation="horizontal"        android:id="@+id/showLiner"        android:visibility="gone"             android:layout_width="fill_parent"         android:layout_height="wrap_content">         <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>
复制代码

创建listView中显示学员信息的xml格式 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="wrap_content"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>

  创建一个StudentListActivity做为主页显示学员信息以及进行一些操作。

复制代码
package cn.yj3g.student.activity;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 cn.yj3g.student.dao.StudentDao;import cn.yj3g.student.db.StudentDBHelper;import cn.yj3g.student.entry.Student;import cn.yj3g.student.entry.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);    }    @Override    protected void onStart() {        // 调用load()方法将数据库中的所有记录显示在当前页面        super.onStart();        load();    }    public void onClick(View v) {        // 跳转到添加信息的界面        if (v == addStudent) {            startActivity(new Intent(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();        }    }    // 创建菜单    @Override    public void onCreateContextMenu(ContextMenu menu, View v,            ContextMenuInfo menuInfo) {        MenuInflater inflater = getMenuInflater();        inflater.inflate(R.layout.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 onCreateOptionsMenu(Menu menu) {        menu.add(1, 1, 1, "按入学日期排序");        menu.add(1, 2, 1, "按姓名进行排序");        menu.add(1, 5, 1, "按学号进行排序");        menu.add(1, 3, 1, "模糊查找");        menu.add(1, 4, 1, "退出");        return super.onCreateOptionsMenu(menu);    }    // 对菜单中的按钮添加响应时间    @Override    public boolean onOptionsItemSelected(MenuItem item) {        int id = item.getItemId();        switch (id) {        // 排序        case 1:            cursor = dao.sortByTrainDate();            load(cursor);            break;        // 排序        case 2:            cursor = dao.sortByName();            load(cursor);            break;        // 查找        case 3:            startActivity(new Intent(this, StudentSearch.class));            break;        // 退出        case 4:            finish();            break;        case 5:            cursor = dao.sortByID();            load(cursor);            break;        default:            break;        }        return super.onOptionsItemSelected(item);    }    // 长点击一条记录触发的时间    @Override    public boolean onItemLongClick(AdapterView<?> parent, View view,            int position, long id) {        Student student = (Student) dao.getStudentFromView(view, id);        listView.setTag(student);        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);    }    // 自定义一个加载数据库中的全部记录到当前页面的有参方法    public void load(Cursor 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("全选");        }    }}
复制代码

menu.xml文件

复制代码
1 <menu xmlns:android="http://schemas.android.com/apk/res/android">2 3     <group android:checkableBehavior="single">4         <item android:id="@+id/delete" android:title="删除学员信息" />5         <item android:id="@+id/look" android:title="详细信息" />6         <item android:id="@+id/add" android:title="添加学员信息" />7         <item android:id="@+id/write" android:title="修改学员信息" />8     </group>9 </menu>
复制代码

界面效果图如下:

删除界面:

在点击ListView中的一条Item时,老师要求显示出这个学生的详细信息,所以需要一个xml文件来显示这个信息。在这里我创建了一个student_info.xml文件

复制代码
  1 <?xml version="1.0" encoding="utf-8"?>  2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  3     android:orientation="vertical"  4     android:layout_width="fill_parent"  5     android:layout_height="fill_parent"  6     android:padding="5dip"  7     >  8     <TextView android:id="@+id/id2_text_id"  9         android:layout_width="80dip" 10         android:layout_height="40dip" 11         android:layout_marginRight="5dip" 12         android:layout_marginTop="5dip" 13         android:layout_marginBottom="5dip" 14         android:textSize="16sp" 15         android:gravity="left|center_vertical" 16         android:text="学员ID:" 17     /> 18      19     <TextView android:id="@+id/tv_info_id" 20         android:layout_width="fill_parent" 21         android:layout_height="40dip" 22         android:layout_toRightOf="@id/id2_text_id" 23         android:layout_alignParentRight="true" 24         android:layout_alignTop="@id/id2_text_id" 25         android:gravity="left|center_vertical" 26     /> 27      28     <TextView android:id="@+id/name2_text_id" 29         android:layout_width="80dip" 30         android:layout_height="40dip" 31         android:layout_marginRight="5dip" 32         android:layout_marginTop="5dip" 33         android:layout_marginBottom="5dip" 34         android:layout_below="@id/id2_text_id" 35         android:layout_alignLeft="@id/id2_text_id" 36         android:textSize="16sp" 37         android:gravity="left|center_vertical" 38         android:text="姓名:" 39     /> 40      41     <TextView android:id="@+id/tv_info_name" 42         android:layout_width="fill_parent" 43         android:layout_height="40dip" 44         android:layout_toRightOf="@id/name2_text_id" 45         android:layout_alignParentRight="true" 46         android:layout_alignTop="@id/name2_text_id" 47         android:gravity="left|center_vertical" 48     /> 49      50     <TextView android:id="@+id/age2_text_id" 51         android:layout_width="80dip" 52         android:layout_height="40dip" 53         android:gravity="left|center_vertical" 54         android:layout_marginRight="5dip" 55         android:layout_below="@id/name2_text_id" 56         android:layout_marginBottom="5dip" 57         android:textSize="16sp" 58         android:text="年龄:" 59     /> 60      61     <TextView android:id="@+id/tv_info_age" 62         android:layout_width="fill_parent" 63         android:layout_height="40dip" 64         android:layout_toRightOf="@id/age2_text_id" 65         android:layout_alignParentRight="true" 66         android:layout_alignTop="@id/age2_text_id" 67         android:gravity="left|center_vertical" 68     /> 69      70     <TextView android:id="@+id/sex2_text_id" 71         android:layout_width="80dip" 72         android:layout_height="40dip" 73         android:gravity="left|center_vertical" 74         android:layout_below="@id/age2_text_id" 75         android:layout_alignLeft="@id/age2_text_id" 76         android:layout_marginRight="5dip" 77         android:layout_marginBottom="5dip" 78         android:text="性别:" 79         android:textSize="16sp" 80     /> 81      82     <TextView 83         android:id="@+id/tv_info_sex" 84         android:layout_width="fill_parent" 85         android:layout_height="40dip" 86         android:layout_toRightOf="@id/sex2_text_id" 87         android:layout_alignParentRight="true" 88         android:layout_alignTop="@id/sex2_text_id" 89         android:gravity="left|center_vertical" 90         /> 91      92     <TextView  android:id="@+id/like2_text_id" 93         android:layout_width="80dip" 94         android:layout_height="40dip" 95         android:gravity="left|center_vertical" 96         android:layout_below="@id/sex2_text_id" 97         android:layout_alignLeft="@id/sex2_text_id" 98         android:layout_marginRight="5dip" 99         android:layout_marginBottom="5dip"100         android:text="爱好:"101         android:textSize="16sp"102     />103     <TextView android:layout_height="40dip" 104         android:id="@+id/tv_info_likes" 105         android:layout_width="wrap_content" 106         android:layout_toRightOf="@id/like2_text_id"107         android:layout_below="@id/sex2_text_id"108         android:layout_marginRight="52dip"109         android:gravity="left|center_vertical"/>110 111     <TextView android:id="@+id/contact2_text_id"112         android:layout_width="80dip"113         android:layout_height="40dip"114         android:gravity="center_vertical|left"115         android:layout_marginRight="5dip"116         android:layout_below="@id/like2_text_id"117         android:layout_marginBottom="5dip"118         android:textSize="16sp"119         android:text="联系电话:"120     />121     122     <TextView android:id="@+id/tv_info_phone"123         android:layout_width="fill_parent"124         android:layout_height="40dip"125         android:layout_toRightOf="@id/contact2_text_id"126         android:layout_alignParentRight="true"127         android:layout_alignTop="@id/contact2_text_id"128         android:gravity="center_vertical|left"129     />130     131     <TextView android:id="@+id/train2_time_text_id"132         android:layout_width="80dip"133         android:layout_height="40dip"134         android:gravity="center_vertical|left"135         android:layout_marginRight="5dip"136         android:layout_below="@id/contact2_text_id"137         android:layout_marginBottom="5dip"138         android:textSize="16sp"139         android:text="入学日期"140     />141     142     <TextView android:id="@+id/tv_info_train_date"143         android:layout_width="fill_parent"144         android:layout_height="40dip"145         android:layout_toRightOf="@id/train2_time_text_id"146         android:layout_alignParentRight="true"147         android:layout_alignTop="@id/train2_time_text_id"148         android:gravity="center_vertical|left"149     />150     151     <Button android:id="@+id/back_to_list_id" 152         android:layout_width="fill_parent" 153         android:layout_height="wrap_content" 154         android:text="返回列表界面" 155         android:layout_below="@id/train2_time_text_id" 156         android:layout_alignParentLeft="true"157         android:layout_alignParentRight="true"158         android:onClick="goBack">159     </Button>160 </RelativeLayout>
复制代码

当然我们需要一个Activity来显示这些信息,在这里我创建了一个ShowStudentActivity。

复制代码
 1 package cn.yj3g.student.activity; 2  3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.view.View; 7 import android.widget.TextView; 8 import cn.yj3g.student.entry.Student; 9 import cn.yj3g.student.entry.TableContanst;10 11 public class ShowStudentActivity extends Activity {12 13     @Override14     public void onCreate(Bundle savedInstanceState) {15         super.onCreate(savedInstanceState);16         setContentView(R.layout.student_info);17         Intent intent = getIntent();18         Student student = (Student) intent.getSerializableExtra(TableContanst.STUDENT_TABLE);19         ((TextView)findViewById(R.id.tv_info_id)).setText(student.getId()+"");20         ((TextView)findViewById(R.id.tv_info_name)).setText(student.getName());21         ((TextView)findViewById(R.id.tv_info_age)).setText(student.getAge()+"");22         ((TextView)findViewById(R.id.tv_info_sex)).setText(student.getSex());23         ((TextView)findViewById(R.id.tv_info_likes)).setText(student.getLike());24         ((TextView)findViewById(R.id.tv_info_train_date)).setText(student.getTrainDate());25         ((TextView)findViewById(R.id.tv_info_phone)).setText(student.getPhoneNumber());26     }27     28     public void goBack(View view) {29         finish();30     }31 }
复制代码

界面效果如下:

最最重要的环节来了,我们做这个系统主要是为了管理学员,所以增加和修改学员信息是必不可少的,因此需要一个Activity来专门提供添加和修改学员信息。在这里还有一件重要的事情要做,那就是要设计添加和修改学员的界面,在这里可用用相对布局做比较简单。我在这里创建了一个AddStudentActivity来添加和修改学员信息,下面附上相关代码:

add_student.xml

复制代码
  1 <?xml version="1.0" encoding="utf-8"?>  2   3 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"    4     android:layout_width="fill_parent"    5     android:layout_height="fill_parent"    6     android:fillViewport="true"    7     android:scrollbarStyle="outsideInset" >   8 <RelativeLayout   9     android:orientation="vertical" 10     android:layout_width="fill_parent" 11     android:layout_height="fill_parent" 12     android:padding="5dip" 13     > 14      15     <TextView android:id="@+id/tv_stu_text_id" 16         android:layout_width="80dip" 17         android:layout_height="40dip" 18         android:gravity="center_vertical|right" 19         android:layout_marginRight="5dip" 20         android:layout_marginTop="5dip" 21         android:layout_marginBottom="5dip" 22         android:textSize="16sp" 23         android:text="学员ID:" 24     /> 25      26     <TextView android:id="@+id/tv_stu_id" 27         android:layout_width="fill_parent" 28         android:layout_height="40dip" 29         android:text="未分配ID" 30         android:layout_toRightOf="@id/tv_stu_text_id" 31         android:layout_alignParentRight="true" 32         android:layout_alignTop="@id/tv_stu_text_id" 33         android:gravity="center" 34         android:background="#ffffff" 35         android:textColor="#000000" 36         android:textSize="16sp" 37     /> 38      39     <TextView android:id="@+id/tv_name_text" 40         android:layout_width="80dip" 41         android:layout_height="40dip" 42         android:gravity="center_vertical|right" 43         android:layout_marginRight="5dip" 44         android:layout_below="@id/tv_stu_text_id" 45         android:layout_alignLeft="@id/tv_stu_text_id" 46         android:layout_marginBottom="5dip" 47         android:textSize="16sp" 48         android:text="姓名:" 49     /> 50      51     <EditText android:id="@+id/et_name" 52         android:layout_width="fill_parent" 53         android:layout_height="40dip" 54         android:layout_toRightOf="@id/tv_name_text" 55         android:layout_alignParentRight="true" 56         android:layout_alignTop="@id/tv_name_text" 57         android:hint="请输入姓名" 58         android:inputType="textPersonName" 59         android:paddingLeft="20dip"/> 60      61     <TextView android:id="@+id/tv_age_text" 62         android:layout_width="80dip" 63         android:layout_height="40dip" 64         android:gravity="center_vertical|right" 65         android:layout_marginRight="5dip" 66         android:layout_below="@id/tv_name_text" 67         android:layout_marginBottom="5dip" 68         android:textSize="16sp" 69         android:text="年龄:" 70     /> 71      72     <EditText android:id="@+id/et_age" 73         android:layout_width="fill_parent" 74         android:layout_height="40dip" 75         android:layout_toRightOf="@id/tv_age_text" 76         android:layout_alignParentRight="true" 77         android:layout_alignTop="@id/tv_age_text" 78         android:hint="请输入年龄" 79         android:paddingLeft="20dip" 80         android:maxLength="3" 81         android:inputType="number" 82     /> 83      84     <TextView android:id="@+id/tv_sex_text" 85         android:layout_width="80dip" 86         android:layout_height="40dip" 87         android:gravity="center_vertical|right" 88         android:layout_below="@id/tv_age_text" 89         android:layout_alignLeft="@id/tv_age_text" 90         android:layout_marginRight="5dip" 91         android:layout_marginBottom="5dip" 92         android:text="性别:" 93         android:textSize="16sp" 94     /> 95      96     <RadioGroup 97         android:id="@+id/rg_sex" 98         android:layout_width="fill_parent" 99         android:layout_height="40dip"100         android:orientation="horizontal"101         android:layout_toRightOf="@id/tv_sex_text"102         android:layout_alignParentRight="true"103         android:layout_alignTop="@id/tv_sex_text"104         >105         <RadioButton106           android:id="@+id/rb_sex_male"107           android:layout_width="wrap_content"108           android:layout_height="wrap_content"109           android:layout_weight="1"110           android:text=""111           android:textSize="16sp"112         />113         <RadioButton android:layout_width="wrap_content" 114         android:layout_height="wrap_content" 115         android:text="" 116         android:id="@+id/rb_sex_female"117         android:layout_weight="1"118         android:textSize="16sp">119         </RadioButton>120     </RadioGroup>121     122     <TextView  android:id="@+id/tv_likes_text"123         android:layout_width="80dip"124         android:layout_height="40dip"125         android:gravity="center_vertical|right"126         android:layout_below="@id/rg_sex"127         android:layout_alignLeft="@id/tv_sex_text"128         android:layout_marginRight="5dip"129         android:layout_marginBottom="5dip"130         android:text="爱好:"131         android:textSize="16sp"132     />133     <CheckBox134     android:id="@+id/box1"135             android:layout_width="wrap_content" android:layout_height="wrap_content"136             android:layout_toRightOf="@id/tv_likes_text"137             android:layout_below="@+id/rg_sex"138             android:layout_alignLeft="@+id/group1"139             android:text="@string/box1"140     ></CheckBox>141     <CheckBox142     android:id="@+id/box2"143             android:layout_width="wrap_content" android:layout_height="wrap_content"144             android:layout_toRightOf="@+id/box1"145             android:layout_below="@+id/rg_sex"146             android:layout_alignTop="@+id/box1"147             android:text="@string/box2"148     ></CheckBox>149     <CheckBox150     android:id="@+id/box3"151             android:layout_width="wrap_content" android:layout_height="wrap_content"152             android:layout_toRightOf="@+id/box2"153             android:layout_below="@+id/rg_sex"154             android:layout_alignTop="@+id/box2"155             android:text="@string/box3"156     ></CheckBox>157     158     <TextView android:id="@+id/tv_phone_text"159         android:layout_width="80dip"160         android:layout_height="40dip"161         android:gravity="center_vertical|right"162         android:layout_marginRight="5dip"163         android:layout_below="@id/tv_likes_text"164         android:layout_marginBottom="5dip"165         android:textSize="16sp"166         android:text="联系电话:"167     />168     169     <EditText android:id="@+id/et_phone"170         android:layout_width="fill_parent"171         android:layout_height="40dip"172         android:layout_toRightOf="@id/tv_phone_text"173         android:layout_alignParentRight="true"174         android:layout_alignTop="@id/tv_phone_text"175         android:hint="请输入手机号"176         android:paddingLeft="20dip"177         android:inputType="phone"178         android:maxLength="11"179     />180     181     <TextView android:id="@+id/tv_traindate_text"182         android:layout_width="80dip"183         android:layout_height="40dip"184         android:gravity="center_vertical|right"185         android:layout_marginRight="5dip"186         android:layout_below="@id/tv_phone_text"187         android:layout_marginBottom="5dip"188         android:textSize="16sp"189         android:text="入学日期"190         191     />192     193     <EditText android:id="@+id/et_traindate"194         android:layout_width="fill_parent"195         android:layout_height="40dip"196         android:layout_toRightOf="@id/tv_traindate_text"197         android:layout_alignParentRight="true"198         android:layout_alignTop="@id/tv_traindate_text"199         android:hint="点击选择日期"200         android:inputType="date"201         android:paddingLeft="20dip"202         android:focusable="false"203     />204     <Button android:id="@+id/btn_save" 205         android:layout_width="wrap_content" 206         android:layout_height="wrap_content" 207         android:text="保存" 208         android:layout_below="@id/tv_traindate_text" 209         android:layout_alignRight="@id/rg_sex">210     </Button>211     <Button android:id="@+id/btn_clear" 212         android:layout_width="wrap_content" 213         android:layout_height="wrap_content" 214         android:text="重置" 215         android:layout_below="@id/tv_traindate_text" 216         android:layout_toLeftOf="@id/btn_save"217         android:layout_marginRight="10dip">218     </Button>219 </RelativeLayout>220 </ScrollView>
复制代码

AddStudentActivity代码:

复制代码
  1 package cn.yj3g.student.activity;  2   3 import java.io.Serializable;  4 import java.text.SimpleDateFormat;  5 import java.util.Calendar;  6 import java.util.Date;  7 import java.util.HashSet;  8   9 import android.app.Activity; 10 import android.app.DatePickerDialog; 11 import android.app.Dialog; 12 import android.content.ContentValues; 13 import android.content.Intent; 14 import android.database.sqlite.SQLiteDatabase; 15 import android.os.Bundle; 16 import android.view.View; 17 import android.view.View.OnClickListener; 18 import android.widget.Button; 19 import android.widget.CheckBox; 20 import android.widget.CompoundButton; 21 import android.widget.CompoundButton.OnCheckedChangeListener; 22 import android.widget.DatePicker; 23 import android.widget.EditText; 24 import android.widget.RadioButton; 25 import android.widget.RadioGroup; 26 import android.widget.TextView; 27 import android.widget.Toast; 28 import cn.yj3g.student.dao.StudentDao; 29 import cn.yj3g.student.db.StudentDBHelper; 30 import cn.yj3g.student.entry.Student; 31 import cn.yj3g.student.entry.TableContanst; 32  33 public class AddStudentActivity extends Activity implements OnClickListener { 34  35     private static final String TAG = "AddStudentActivity"; 36     private final static int DATE_DIALOG = 1; 37     private static final int DATE_PICKER_ID = 1; 38     private TextView idText; 39     private EditText nameText; 40     private EditText ageText; 41     private EditText phoneText; 42     private EditText dataText; 43     private RadioGroup group; 44     private RadioButton button1; 45     private RadioButton button2; 46     private CheckBox box1; 47     private CheckBox box2; 48     private CheckBox box3; 49     private Button restoreButton; 50     private String sex; 51     private Button resetButton; 52     private Long student_id; 53  54     private StudentDao dao; 55     private boolean isAdd = true; 56  57     @Override 58     public void onCreate(Bundle savedInstanceState) { 59         super.onCreate(savedInstanceState); 60         setContentView(R.layout.add_student); 61         idText = (TextView) findViewById(R.id.tv_stu_id); 62         nameText = (EditText) findViewById(R.id.et_name); 63         ageText = (EditText) findViewById(R.id.et_age); 64         button1 = (RadioButton) findViewById(R.id.rb_sex_female); 65         button2 = (RadioButton) findViewById(R.id.rb_sex_male); 66         phoneText = (EditText) findViewById(R.id.et_phone); 67         dataText = (EditText) findViewById(R.id.et_traindate); 68         group = (RadioGroup) findViewById(R.id.rg_sex); 69         box1 = (CheckBox) findViewById(R.id.box1); 70         box2 = (CheckBox) findViewById(R.id.box2); 71         box3 = (CheckBox) findViewById(R.id.box3); 72  73         restoreButton = (Button) findViewById(R.id.btn_save); 74         resetButton = (Button) findViewById(R.id.btn_clear); 75         dao = new StudentDao(new StudentDBHelper(this)); 76  77         // 设置监听 78         restoreButton.setOnClickListener(this); 79         resetButton.setOnClickListener(this); 80         dataText.setOnClickListener(this); 81         checkIsAddStudent(); 82     } 83  84     /** 85      * 检查此时Activity是否用于添加学员信息 86      */ 87     private void checkIsAddStudent() { 88         Intent intent = getIntent(); 89         Serializable serial = intent 90                 .getSerializableExtra(TableContanst.STUDENT_TABLE); 91         if (serial == null) { 92             isAdd = true; 93             dataText.setText(getCurrentDate()); 94         } else { 95             isAdd = false; 96             Student s = (Student) serial; 97             showEditUI(s); 98  99         }100     }101 102     /**103      * 显示学员信息更新的UI104      */105     private void showEditUI(Student student) {106         // 先将Student携带的数据还原到student的每一个属性中去107         student_id = student.getId();108         String name = student.getName();109         int age = student.getAge();110         String phone = student.getPhoneNumber();111         String data = student.getTrainDate();112         String like = student.getLike();113         String sex = student.getSex();114         if (sex.toString().equals("")) {115             button2.setChecked(true);116         } else if (sex.toString().equals("")) {117             button1.setChecked(true);118         }119         if (like != null && !"".equals(like)) {120             if (box1.getText().toString().indexOf(like) >= 0) {121                 box1.setChecked(true);122             }123             if (box2.getText().toString().indexOf(like) >= 0) {124                 box2.setChecked(true);125             }126             if (box3.getText().toString().indexOf(like) >= 0) {127                 box3.setChecked(true);128             }129         }130         // 还原数据131         idText.setText(student_id + "");132         nameText.setText(name + "");133         ageText.setText(age + "");134         phoneText.setText(phone + "");135         dataText.setText(data + "");136         setTitle("学员信息更新");137         restoreButton.setText("更新");138     }139 140     public void onClick(View v) {141         // 收集数据142         if (v == restoreButton) {143             if (!checkUIInput()) {// 界面输入验证144                 return;145             }146             Student student = getStudentFromUI();147             if (isAdd) {148                 long id = dao.addStudent(student);149                 dao.closeDB();150                 if (id > 0) {151                     Toast.makeText(this, "保存成功, ID=" + id, 0).show();152                     finish();153                 } else {154                     Toast.makeText(this, "保存失败,请重新输入!", 0).show();155                 }156             } else if (!isAdd) {157                 long id = dao.addStudent(student);158                 dao.closeDB();159                 if (id > 0) {160                     Toast.makeText(this, "更新成功", 0).show();161                     finish();162                 } else {163                     Toast.makeText(this, "更新失败,请重新输入!", 0).show();164                 }165             }166 167         } else if (v == resetButton) {168             clearUIData();169         } else if (v == dataText) {170             showDialog(DATE_PICKER_ID);171         }172     }173 174     /**175      * 清空界面的数据176      */177     private void clearUIData() {178         nameText.setText("");179         ageText.setText("");180         phoneText.setText("");181         dataText.setText("");182         box1.setChecked(false);183         box2.setChecked(false);184         group.clearCheck();185     }186 187     /**188      * 收集界面输入的数据,并将封装成Student对象189      */190     private Student getStudentFromUI() {191         String name = nameText.getText().toString();192         int age = Integer.parseInt(ageText.getText().toString());193         String sex = ((RadioButton) findViewById(group194                 .getCheckedRadioButtonId())).getText().toString();195         String likes = "";196         if (box1.isChecked()) { // basketball, football football197             likes += box1.getText();198         }199         if (box2.isChecked()) {200             if (likes.equals("")) {201                 likes += box2.getText();202             } else {203                 likes += "," + box2.getText();204             }205             if (likes.equals("")) {206                 likes += box3.getText();207             } else {208                 likes += "," + box3.getText();209             }210         }211         String trainDate = dataText.getText().toString();212         String phoneNumber = phoneText.getText().toString();213         String modifyDateTime = getCurrentDateTime();214         Student s=new Student(name, age, sex, likes, phoneNumber, trainDate,215                 modifyDateTime);216         if (!isAdd) {217             s.setId(Integer.parseInt(idText.getText().toString()));218             dao.deleteStudentById(student_id);219         }220         return s;221     }222 223     /**224      * 得到当前的日期时间225      */226     private String getCurrentDateTime() {227         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");228         return format.format(new Date());229     }230     /**231      * 得到当前的日期232      */233     private String getCurrentDate() {234         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");235         return format.format(new Date());236     }237     /**238      * 验证用户是否按要求输入了数据239      */240     private boolean checkUIInput() { // name, age, sex241         String name = nameText.getText().toString();242         String age = ageText.getText().toString();243         int id = group.getCheckedRadioButtonId();244         String message = null;245         View invadView = null;246         if (name.trim().length() == 0) {247             message = "请输入姓名!";248             invadView = nameText;249         } else if (age.trim().length() == 0) {250             message = "请输入年龄!";251             invadView = ageText;252         } else if (id == -1) {253             message = "请选择性别!";254         }255         if (message != null) {256             Toast.makeText(this, message, 0).show();257             if (invadView != null)258                 invadView.requestFocus();259             return false;260         }261         return true;262     }263 264     private DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {265         @Override266         public void onDateSet(DatePicker view, int year, int monthOfYear,267                 int dayOfMonth) {268             dataText.setText(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);269         }270     };271 272     @Override273     protected Dialog onCreateDialog(int id) {274         switch (id) {275         case DATE_PICKER_ID:276             return new DatePickerDialog(this, onDateSetListener, 2011, 8, 14);277         }278         return null;279     }280 }
复制代码

界面效果如下:

修改界面:

在这里我还做了一个额外的功能就是模糊查找,有想法的可以参考下。

StudentSearch代码:

复制代码
package cn.yj3g.student.activity;import cn.yj3g.student.dao.StudentDao;import cn.yj3g.student.db.StudentDBHelper;import cn.yj3g.student.entry.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

复制代码
 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3     android:orientation="vertical" 4     android:layout_width="fill_parent"  5     android:layout_height="fill_parent" > 6     <EditText  7         android:id="@+id/et_srarch" 8         android:layout_width="fill_parent"  9         android:layout_height="wrap_content"10         android:hint="请输入学员姓名"11         android:inputType="textPersonName"12     />13     <Button 14         android:id="@+id/bn_sure_search"15         android:gravity="center"16         android:layout_width="fill_parent" 17         android:layout_height="wrap_content"18         android:text="确定"19         />20         <Button 21         android:id="@+id/bn_return"22         android:gravity="center"23         android:layout_width="fill_parent" 24         android:layout_height="wrap_content"25         android:text="返回"26         />27         28 <LinearLayout android:id="@+id/linersearch"29                 android:orientation="vertical"30                 android:visibility="gone"31                 android:layout_width="fill_parent" 32                 android:layout_height="wrap_content">33     <ListView34     android:id="@+id/searchListView"35     android:layout_weight="1"36     android:layout_width="fill_parent"37     android:layout_height="wrap_content"/>38     <Button 39     android:id="@+id/return_id"40     android:layout_width="fill_parent"41     android:layout_height="wrap_content"42     android:text="返回"43     />                44 </LinearLayout>45 </LinearLayout>
复制代码

find_student_list_item.xml

复制代码
 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3     android:orientation="horizontal" android:layout_width="fill_parent" 4     android:layout_height="wrap_content"> 5     <ImageView android:layout_width="fill_parent" 6         android:layout_height="wrap_content" android:layout_weight="1" 7         android:background="@drawable/icon" /> 8         <TextView android:id="@+id/tv_stu_id" android:layout_width="fill_parent" 9         android:layout_height="wrap_content" android:layout_weight="1" />10     <TextView android:id="@+id/tv_stu_name" android:layout_width="fill_parent"11         android:layout_height="wrap_content" android:layout_weight="1" />12     <TextView android:id="@+id/tv_stu_age" android:layout_width="fill_parent"13         android:layout_height="wrap_content" android:layout_weight="1" />14     <TextView android:id="@+id/tv_stu_sex" android:layout_width="fill_parent"15         android:layout_height="wrap_content" android:layout_weight="1" />16     <TextView android:id="@+id/tv_stu_likes" android:layout_width="fill_parent"17         android:layout_height="wrap_content" android:layout_weight="1" />18     <TextView android:id="@+id/tv_stu_phone"19         android:layout_width="fill_parent" android:layout_height="wrap_content"20         android:layout_weight="1" />21     <TextView android:id="@+id/tv_stu_traindate" android:layout_width="fill_parent"22         android:layout_height="wrap_content" android:layout_weight="1" />23 24 </LinearLayout>
复制代码

界面效果如下:

查询结果界面:

在这里还牵扯到了一些常量和数据库的连接以及增删改查等操作,我用我们老师的方法将他们分别放在不同的包里。下面附上代码:

StudentDao类

复制代码
  1 package cn.yj3g.student.dao;  2   3 import java.util.ArrayList;  4 import java.util.HashMap;  5 import java.util.List;  6 import java.util.Map;  7 import android.content.ContentValues;  8 import android.database.Cursor;  9 import android.database.sqlite.SQLiteDatabase; 10 import android.view.View; 11 import android.widget.SimpleCursorAdapter; 12 import android.widget.TextView; 13 import cn.yj3g.student.activity.R; 14 import cn.yj3g.student.db.StudentDBHelper; 15 import cn.yj3g.student.entry.Student; 16 import cn.yj3g.student.entry.TableContanst; 17  18 public class StudentDao { 19  20     private StudentDBHelper dbHelper; 21     private Cursor cursor; 22     public StudentDao(StudentDBHelper dbHelper) { 23         this.dbHelper = dbHelper; 24     } 25     // 添加一个Student对象数据到数据库表 26     public long addStudent(Student s) { 27  28         ContentValues values = new ContentValues(); 29         values.put(TableContanst.StudentColumns.NAME, s.getName()); 30         values.put(TableContanst.StudentColumns.AGE, s.getAge()); 31         values.put(TableContanst.StudentColumns.SEX, s.getSex()); 32         values.put(TableContanst.StudentColumns.LIKES, s.getLike()); 33         values.put(TableContanst.StudentColumns.PHONE_NUMBER, s.getPhoneNumber()); 34         values.put(TableContanst.StudentColumns.TRAIN_DATE, s.getTrainDate()); 35         values.put(TableContanst.StudentColumns.MODIFY_TIME, s.getModifyDateTime()); 36         return dbHelper.getWritableDatabase().insert(TableContanst.STUDENT_TABLE, null, values); 37  38     } 39  40     // 删除一个id所对应的数据库表student的记录 41     public int deleteStudentById(long id) { 42  43         return dbHelper.getWritableDatabase().delete(TableContanst.STUDENT_TABLE, 44                 TableContanst.StudentColumns.ID + "=?", new String[] { id + "" }); 45     } 46  47     // 更新一个id所对应数据库表student的记录 48     public int updateStudent(Student s) { 49  50         ContentValues values = new ContentValues(); 51         values.put(TableContanst.StudentColumns.NAME, s.getName()); 52         values.put(TableContanst.StudentColumns.AGE, s.getAge()); 53         values.put(TableContanst.StudentColumns.SEX, s.getSex()); 54         values.put(TableContanst.StudentColumns.LIKES, s.getLike()); 55         values.put(TableContanst.StudentColumns.PHONE_NUMBER, s.getPhoneNumber()); 56         values.put(TableContanst.StudentColumns.TRAIN_DATE, s.getTrainDate()); 57         values.put(TableContanst.StudentColumns.MODIFY_TIME, s.getModifyDateTime()); 58         return dbHelper.getWritableDatabase().update(TableContanst.STUDENT_TABLE, values, 59                 TableContanst.StudentColumns.ID + "=?", new String[] { s.getId() + "" }); 60  61     } 62  63     // 查询所有的记录 64     public List<Map<String,Object>> getAllStudents() { //modify_time desc 65          66         List<Map<String, Object>> data = new ArrayList<Map<String,Object>>(); 67         Cursor cursor = dbHelper.getWritableDatabase().query(TableContanst.STUDENT_TABLE, null, null, null, 68                 null, null, TableContanst.StudentColumns.MODIFY_TIME+" desc"); 69         while(cursor.moveToNext()) { 70             Map<String, Object> map = new HashMap<String, Object>(8); 71             long id = cursor.getInt(cursor.getColumnIndex(TableContanst.StudentColumns.ID)); 72             map.put(TableContanst.StudentColumns.ID, id); 73             String name = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.NAME)); 74             map.put(TableContanst.StudentColumns.NAME, name); 75             int age = cursor.getInt(cursor.getColumnIndex(TableContanst.StudentColumns.AGE)); 76             map.put(TableContanst.StudentColumns.AGE, age); 77             String sex = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.SEX)); 78             map.put(TableContanst.StudentColumns.SEX, sex); 79             String likes = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.LIKES)); 80             map.put(TableContanst.StudentColumns.LIKES, likes); 81             String phone_number = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.PHONE_NUMBER)); 82             map.put(TableContanst.StudentColumns.PHONE_NUMBER, phone_number); 83             String train_date = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.TRAIN_DATE)); 84             map.put(TableContanst.StudentColumns.TRAIN_DATE, train_date); 85             String modify_time = cursor.getString(cursor.getColumnIndex(TableContanst.StudentColumns.MODIFY_TIME)); 86             map.put(TableContanst.StudentColumns.MODIFY_TIME, modify_time); 87             data.add(map); 88         } 89         return data; 90     } 91     //模糊查询一条记录 92     public Cursor findStudent(String name){ 93      94         Cursor cursor = dbHelper.getWritableDatabase().query(TableContanst.STUDENT_TABLE,  null, "name like ?", 95                 new String[] { "%" + name + "%" }, null, null, null,null); 96     return cursor; 97     } 98     //按姓名进行排序 99     public Cursor sortByName(){100         Cursor cursor = dbHelper.getWritableDatabase().query(TableContanst.STUDENT_TABLE,  null,null,101                 null, null, null,TableContanst.StudentColumns.NAME);102     return cursor;103     }104     //按入学日期进行排序105     public Cursor sortByTrainDate(){106         Cursor cursor = dbHelper.getWritableDatabase().query(TableContanst.STUDENT_TABLE,  null,null,107                 null, null, null,TableContanst.StudentColumns.TRAIN_DATE);108     return cursor;109     }110     //按学号进行排序111     public Cursor sortByID(){112         Cursor cursor = dbHelper.getWritableDatabase().query(TableContanst.STUDENT_TABLE,  null,null,113                 null, null, null,TableContanst.StudentColumns.ID);114     return cursor;115     }116     public void closeDB() {117         dbHelper.close();118     }119     //自定义的方法通过View和Id得到一个student对象120     public Student getStudentFromView(View view, long id) {121         TextView nameView = (TextView) view.findViewById(R.id.tv_stu_name);122         TextView ageView = (TextView) view.findViewById(R.id.tv_stu_age);123         TextView sexView = (TextView) view.findViewById(R.id.tv_stu_sex);124         TextView likeView = (TextView) view.findViewById(R.id.tv_stu_likes);125         TextView phoneView = (TextView) view.findViewById(R.id.tv_stu_phone);126         TextView dataView = (TextView) view.findViewById(R.id.tv_stu_traindate);127         String name = nameView.getText().toString();128         int age = Integer.parseInt(ageView.getText().toString());129         String sex = sexView.getText().toString();130         String like = likeView.getText().toString();131         String phone = phoneView.getText().toString();132         String data = dataView.getText().toString();133         Student student = new Student(id, name, age, sex, like, phone, data,null);134         return student;135     }136     137 }
复制代码

StudentDBHelper类

复制代码
 1 package cn.yj3g.student.db; 2  3 import cn.yj3g.student.entry.TableContanst; 4 import android.content.Context; 5 import android.database.sqlite.SQLiteDatabase; 6 import android.database.sqlite.SQLiteDatabase.CursorFactory; 7 import android.database.sqlite.SQLiteOpenHelper; 8 import android.util.Log; 9 10 public class StudentDBHelper extends SQLiteOpenHelper {11 12     private static final String TAG = "StudentDBHelper";13 14     public static final String DB_NAME = "student_manager.db";15     public static final int VERSION = 1;16     //构造方法17     public StudentDBHelper(Context context, String name, CursorFactory factory, int version) {18         super(context, name, factory, version);19 20     }21 22     public StudentDBHelper(Context context) {23         this(context, DB_NAME, null, VERSION);24     }25     //创建数据库26     @Override27     public void onCreate(SQLiteDatabase db) {28         Log.v(TAG, "onCreate");29         db.execSQL("create table "30                 + TableContanst.STUDENT_TABLE31                 + "(_id Integer primary key AUTOINCREMENT,"32                 + "name char,age integer, sex char, likes char, phone_number char,train_date date, "33                 + "modify_time DATETIME)");34     }35     //更新数据库36     @Override37     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {38         Log.v(TAG, "onUpgrade");39     }40 41 }
复制代码

Student类:

复制代码
  1 package cn.yj3g.student.entry;  2   3 import java.io.Serializable;  4   5 import android.view.View;  6 import android.widget.TextView;  7 import cn.yj3g.student.activity.R;  8   9 public class Student implements Serializable{ 10  11     private long id; 12     private String name; 13     private int age; 14     private String sex; 15     private String like; 16     private String phoneNumber; 17     private String trainDate; 18     private String modifyDateTime; 19      20      21     public Student() { 22         super(); 23     } 24  25     public Student(long id, String name, int age, String sex, String like, String phoneNumber, 26             String trainDate, String modifyDateTime) { 27         super(); 28         this.id = id; 29         this.name = name; 30         this.age = age; 31         this.sex = sex; 32         this.like = like; 33         this.phoneNumber = phoneNumber; 34         this.trainDate = trainDate; 35         this.modifyDateTime = modifyDateTime; 36     } 37      38     public Student(String name, int age, String sex, String like, String phoneNumber, 39             String trainDate, String modifyDateTime) { 40         super(); 41         this.name = name; 42         this.age = age; 43         this.sex = sex; 44         this.like = like; 45         this.phoneNumber = phoneNumber; 46         this.trainDate = trainDate; 47         this.modifyDateTime = modifyDateTime; 48     } 49  50     public long getId() { 51         return id; 52     } 53     public void setId(long id) { 54         this.id = id; 55     } 56     public String getName() { 57         return name; 58     } 59     public void setName(String name) { 60         this.name = name; 61     } 62     public int getAge() { 63         return age; 64     } 65     public void setAge(int age) { 66         this.age = age; 67     } 68     public String getSex() { 69         return sex; 70     } 71     public void setSex(String sex) { 72         this.sex = sex; 73     } 74     public String getLike() { 75         return like; 76     } 77     public void setLike(String like) { 78         this.like = like; 79     } 80     public String getPhoneNumber() { 81         return phoneNumber; 82     } 83     public void setPhoneNumber(String phoneNumber) { 84         this.phoneNumber = phoneNumber; 85     } 86     public String getTrainDate() { 87         return trainDate; 88     } 89     public void setTrainDate(String trainDate) { 90         this.trainDate = trainDate; 91     } 92     public String getModifyDateTime() { 93         return modifyDateTime; 94     } 95     public void setModifyDateTime(String modifyDateTime) { 96         this.modifyDateTime = modifyDateTime; 97     } 98     @Override 99     public int hashCode() {100         final int prime = 31;101         int result = 1;102         result = prime * result + age;103         result = prime * result + (int) (id ^ (id >>> 32));104         result = prime * result + ((like == null) ? 0 : like.hashCode());105         result = prime * result + ((modifyDateTime == null) ? 0 : modifyDateTime.hashCode());106         result = prime * result + ((name == null) ? 0 : name.hashCode());107         result = prime * result + ((phoneNumber == null) ? 0 : phoneNumber.hashCode());108         result = prime * result + ((sex == null) ? 0 : sex.hashCode());109         result = prime * result + ((trainDate == null) ? 0 : trainDate.hashCode());110         return result;111     }112     @Override113     public boolean equals(Object obj) {114         if (this == obj)115             return true;116         if (obj == null)117             return false;118         if (getClass() != obj.getClass())119             return false;120         Student other = (Student) obj;121         if (age != other.age)122             return false;123         if (id != other.id)124             return false;125         if (like == null) {126             if (other.like != null)127                 return false;128         } else if (!like.equals(other.like))129             return false;130         if (modifyDateTime == null) {131             if (other.modifyDateTime != null)132                 return false;133         } else if (!modifyDateTime.equals(other.modifyDateTime))134             return false;135         if (name == null) {136             if (other.name != null)137                 return false;138         } else if (!name.equals(other.name))139             return false;140         if (phoneNumber == null) {141             if (other.phoneNumber != null)142                 return false;143         } else if (!phoneNumber.equals(other.phoneNumber))144             return false;145         if (sex == null) {146             if (other.sex != null)147                 return false;148         } else if (!sex.equals(other.sex))149             return false;150         if (trainDate == null) {151             if (other.trainDate != null)152                 return false;153         } else if (!trainDate.equals(other.trainDate))154             return false;155         return true;156     }157     @Override158     public String toString() {159         return "Student [id=" + id + ", name=" + name + "]";160     }161 }
复制代码

常量TableContanst类:

复制代码
 1 package cn.yj3g.student.entry; 2  3 public final class TableContanst { 4      5     public static final String STUDENT_TABLE = "student"; 6      7     public static final class StudentColumns { 8         public static final String ID = "_id"; 9         public static final String NAME = "name";10         public static final String AGE = "age";11         public static final String SEX = "sex";12         public static final String LIKES = "likes";13         public static final String PHONE_NUMBER = "phone_number";14         public static final String TRAIN_DATE = "train_date";15         public static final String MODIFY_TIME = "modify_time";16     }17 }
复制代码

最后我将我的values里的strings.xml和AndroidManifest.xml附在下面,以供大家参考。

strings.xml:

复制代码
 1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3     <string name="hello">Hello World, TextStudentManager!</string> 4     <string name="app_name">学员管理系统</string> 5     <string name="information_write">学员信息修改</string> 6     <string name="button1"></string> 7     <string name="button2"></string> 8     <string name="box1">唱歌</string> 9     <string name="box2">跳舞</string>10     <string name="box3">健身</string>11     <string name="myButton">添加学员信息</string>12     <string name="spinner">请选择</string>    13 </resources>
复制代码

AndroidManifest.xml:

复制代码
 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3       package="cn.yj3g.student.activity" 4       android:versionCode="1" 5       android:versionName="1.0"> 6     <uses-sdk android:minSdkVersion="8" /> 7  8     <application android:icon="@drawable/student"  android:label="@string/app_name"> 9         <activity android:name=".StudentListActivity"10                   android:label="学员信息列表">11             <intent-filter>12                 <action android:name="android.intent.action.MAIN" />13                 <category android:name="android.intent.category.LAUNCHER" />14             </intent-filter>15         </activity>16         17          <activity android:name=".AddStudentActivity"18                   android:label="学员信息添加">19         </activity>20           <activity android:name=".ShowStudentActivity"21                   android:label="学员详细信息">22         </activity>23          <activity android:name=".StudentSearch"24                   android:label="学员信息查询">25         </activity>26          <activity android:name=".SearchResult"27                   android:label="查询结果">28         </activity>29         <provider 30         android:name=".MyStudentManagerProvider"31         android:authorities="cn.yj3g.student.activity.MyStudentManagerProvider"></provider>32         <uses-library android:name="android.test.runner" />  <!-- android测试包 -->33         34     </application>35     <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> 36     <instrumentation android:name="android.test.InstrumentationTestRunner"37           android:targetPackage="cn.yj3g.student.activity" android:label="Tests for My App" />38 </manifest>
复制代码


转自:http://www.cnblogs.com/zxl-jay/archive/2011/09/21/2182890.html#2302140

0 0