前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >直接可用的Android studio学生信息管理系统

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

作者头像
砸漏
发布2020-11-04 13:15:10
3.8K1
发布2020-11-04 13:15:10
举报
文章被收录于专栏:恩蓝脚本恩蓝脚本

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

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

首先是程序提纲

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

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

类定义的Java文件

StudentDao StudnetDBHelper Student TableContanst

其他文件

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

下面看看我的文件目录

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

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

主界面是StudentListActivity

代码如下

java文件:StudentListActivity

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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

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

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

menu.xml

代码语言:javascript
复制
<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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<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

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

代码语言:javascript
复制
<?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文件中版本号之类的一些简单的问题,具体需要结合电脑的实际情况来修改即可。

欢迎指正。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档