AndriodStudio利用ListView和数据库实现简单学生管理
本文实例为大家分享了AndriodStudio利用ListView和数据库实现简单学生管理的具体代码,供大家参考,具体内容如下
数据库的创建
package com.example.myapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
public class DbHelper extends SQLiteOpenHelper {
final String create_table="CREATE TABLE Student (_id integer primary key autoincrement,xm text,xh text,bj text,zy text,cj text)";
final String create_register="CREATE TABLE Register (_id integer primary key autoincrement,xm text,xh text)";
//创建两张表,一张student,一张register表
Context context;
public DbHelper(Context context,String dbname,int version){
super(context,dbname,null,version);
this.context=context;//上下文
}
@Override
public void onCreate(SQLiteDatabase db) {db.execSQL(create_table); db.execSQL(create_register);}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists Student");
db.execSQL("drop table if exists Register");
db.execSQL(create_table);
db.execSQL(create_register);
//完成创建
}
// 对表进行数据的插入方法
public void insert(String tableName, ContentValues values){
SQLiteDatabase db = getReadableDatabase();
db.insert(tableName,null,values);
Toast.makeText(context,"成功插入数据!",Toast.LENGTH_SHORT).show();
}
//查询表中所有
public Cursor queryAll(String tableName){
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.query(tableName,null,null,null,null,null,null);
return cursor;
}
//对表中的姓名和学号进行单独的查询
public Boolean queryByStudentXhAndXm(String tableName,String xm,String xh){
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.query(tableName,new String[]{"xm,xh"},"xm=? and xh=?",new String[]{xm,xh},null,null,null);
if (cursor.moveToFirst()) {
return true;
}else {
return false;
}
}
//删除表中数据的方法
public void delStudent(String id){
SQLiteDatabase db = getWritableDatabase();
db.delete("Student","_id=?",new String[]{id});
}
//对表进行更新
public void updateStudent(String id,ContentValues values){
SQLiteDatabase db = getWritableDatabase();
db.update("Student",values,"_id=?",new String[]{id});
}
}
创建了两张表格,一张用来储存学生信息,Student表:id(主键),姓名,学号,班级,专业,成绩。
一张register表:id(主键),姓名,学号。用来储存登录信息
其余类和其布局文件
MainActivity.class(登录界面)
package com.example.myapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText et1,et2;
Button btn1,btn2;
DbHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dbHelper=new DbHelper(MainActivity.this,"MyDataBase,",3);
setContentView(R.layout.activity_main);
et1=findViewById(R.id.et1);
et2=findViewById(R.id.et2);
btn1=findViewById(R.id.dl);
btn2=findViewById(R.id.zc);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String xm=et1.getText().toString();
String xh=et2.getText().toString();
if (xm.isEmpty()||xh.isEmpty()){
Toast.makeText(MainActivity.this,"姓名或者学号不可为空",Toast.LENGTH_SHORT).show();
}
if (dbHelper.queryByStudentXhAndXm("Register",xm,xh)){
Intent intent=new Intent(MainActivity.this,Manage.class);
startActivity(intent);
}
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,Register.class);
startActivity(intent);
}
});
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et1"
android:hint="输入姓名"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et2"
android:hint="学号"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/dl"
android:text="登录"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="注册"
android:id="@+id/zc"/>
</LinearLayout>
Register.class(注册界面)
package com.example.myapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Register extends AppCompatActivity {
EditText et1,et2;
Button btn1,btn2;
DbHelper dbHelper;
TextView show;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
dbHelper=new DbHelper(Register.this,"MyDataBase,",3);
et1=findViewById(R.id.xm_zc);
et2=findViewById(R.id.xh_zc);
show=findViewById(R.id.tv_show);
btn1=findViewById(R.id.qd_zc);
btn2=findViewById(R.id.fh);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String xm=et1.getText().toString();
String xh=et2.getText().toString();
if(TextUtils.isEmpty(xm)||TextUtils.isEmpty(xh)){
Toast.makeText(Register.this,"姓名或者学号不能为空",Toast.LENGTH_SHORT).show();
return;
}
ContentValues values = new ContentValues();
values.put("xm",xm);
values.put("xh",xh);
dbHelper.insert("Register",values);
showUser();
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(Register.this,MainActivity.class);
startActivity(intent);
}
});
}
public void showUser(){
Cursor cursor = dbHelper.queryAll("Register");
String str = "_id xm xh\n";
if (cursor.moveToFirst())
while (cursor.moveToNext()){
str += cursor.getString(0)+" ";
str += cursor.getString(1)+" ";
str += cursor.getString(2)+"\n";
};
show.setText(str);
}
}
activity_register.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Register">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/xm_zc"
android:hint="输入姓名"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/xh_zc"
android:hint="输入学号"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="确认注册"
android:id="@+id/qd_zc"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="返回上一层"
android:id="@+id/fh"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tv_show"/>
</LinearLayout>
Manage.class(管理界面)
package com.example.myapp;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class Manage extends AppCompatActivity {
ListView listView;
Button btn;
DbHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_manage);
AlertDialog.Builder builder = new AlertDialog.Builder(Manage.this);
dbHelper = new DbHelper(Manage.this,"MyDataBase,",3);
listView=findViewById(R.id.list);
dbHelper.getWritableDatabase();
renderListView();
btn=findViewById(R.id.new_list);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(Manage.this,NewStudent.class);
startActivityForResult(intent,1);
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long idi) {
Cursor cursor = dbHelper.queryAll("Student");
cursor.move(position+1);
String id = cursor.getString(cursor.getColumnIndex("_id"));
String xm = cursor.getString(cursor.getColumnIndex("xm"));
String xh = cursor.getString(cursor.getColumnIndex("xh"));
String bj = cursor.getString(cursor.getColumnIndex("bj"));
String zy = cursor.getString(cursor.getColumnIndex("zy"));
String cj = cursor.getString(cursor.getColumnIndex("cj"));
Intent intent = new Intent(Manage.this,NewStudent.class);
intent.putExtra("id",id);
intent.putExtra("xm",xm);
intent.putExtra("xh",xh);
intent.putExtra("bj",bj);
intent.putExtra("zy",zy);
intent.putExtra("cj",cj);
startActivityForResult(intent,2);
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long idi) {
Cursor cursor = dbHelper.queryAll("Student");
cursor.move(position+1);
String id = cursor.getString(cursor.getColumnIndex("_id"));//getColumnIndex("_id")得到这一列
String xm = cursor.getString(cursor.getColumnIndex("xm"));
builder.setTitle("删除确认").setMessage("是否确认删除学生"+xm);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dbHelper.delStudent(id);
renderListView();
}
});
builder.show();
return true;
}
});
}
private void renderListView() {
Cursor cursor = dbHelper.queryAll("Student");
String from[] = new String[]{"_id", "xm", "xh","bj","zy","cj"};
int to[] = new int[]{R.id.id,R.id.xm, R.id.xh, R.id.bj, R.id.zy, R.id.cj};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.listview, cursor, from, to, 0);
ListView listView = findViewById(R.id.list);
listView.setAdapter(adapter);
}
@Override
protected void onActivityResult(int reqCode,int resultCode,Intent intent){
super.onActivityResult(reqCode,resultCode,intent);
if (resultCode==RESULT_OK){
String xm = intent.getStringExtra("xm");
String xh = intent.getStringExtra("xh");
String bj = intent.getStringExtra("bj");
String zy = intent.getStringExtra("zy");
String cj = intent.getStringExtra("cj");
dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("xm",xm);
values.put("xh",xh);
values.put("bj",bj);
values.put("zy",zy);
values.put("cj",cj);
if (reqCode==1)
dbHelper.insert("Student",values);
else if (reqCode==2){
String id = intent.getStringExtra("id");
dbHelper.updateStudent(id,values);
}
renderListView();
}
}
}
activity_manage.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Manage">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/new_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加新学生" />
</LinearLayout>
对应的listview的布局文件,listview.xml
因为使用的是数据库来储存信息和调用,并没有重写对于listview的Adapter,而是使用Android自带的SimpleCursorAdapter类方法,用游标来储存,查看数据
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:text="id"/>
<TextView
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:text="姓名" />
<TextView
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:text="学号" />
<TextView
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:text="班级" />
<TextView
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:text="专业" />
<TextView
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:text="成绩" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/id"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1" />
<TextView
android:id="@+id/xm"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1" />
<TextView
android:id="@+id/xh"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1" />
<TextView
android:id="@+id/bj"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1" />
<TextView
android:id="@+id/zy"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1" />
<TextView
android:id="@+id/cj"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
对于新添加学生操作,使用NewStudent.class来完成
package com.example.myapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class NewStudent extends AppCompatActivity {
DbHelper dbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_student);
dbHelper=new DbHelper(NewStudent.this,"MyDataBase",3);
Intent priIntent = getIntent();
EditText et_xm = findViewById(R.id.et_xm);
EditText et_xh = findViewById(R.id.et_xh);
EditText et_bj = findViewById(R.id.et_bj);
EditText et_zy = findViewById(R.id.et_zy);
EditText et_cj = findViewById(R.id.et_cj);
String priId = priIntent.getStringExtra("id");
String prixm = priIntent.getStringExtra("xm");
String prixh = priIntent.getStringExtra("xh");
String pribj = priIntent.getStringExtra("bj");
String prizy = priIntent.getStringExtra("zy");
String pricj = priIntent.getStringExtra("cj");
et_xm.setText(prixm);
et_xh.setText(prixh);
et_bj.setText(pribj);
et_zy.setText(prizy);
et_cj.setText(pricj);
Button btn_confirm = findViewById(R.id.btn_confirm);
btn_confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText et_xm = findViewById(R.id.et_xm);
EditText et_xh = findViewById(R.id.et_xh);
EditText et_bj = findViewById(R.id.et_bj);
EditText et_zy = findViewById(R.id.et_zy);
EditText et_cj = findViewById(R.id.et_cj);
String xm = et_xm.getText().toString();
String xh = et_xh.getText().toString();
String bj = et_bj.getText().toString();
String zy = et_zy.getText().toString();
String cj = et_cj.getText().toString();
if (TextUtils.isEmpty(xm)||TextUtils.isEmpty(xh)){
Toast.makeText(NewStudent.this,"学号或者姓名不可为空",Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent();
intent.putExtra("_id",priId);
intent.putExtra("xm",xm);
intent.putExtra("xh",xh);
intent.putExtra("bj",bj);
intent.putExtra("zy",zy);
intent.putExtra("cj",cj);
setResult(RESULT_OK,intent);
finish();
}
});
}
}
activity_new_student.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".NewStudent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_xm"
android:hint="请输入姓名"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_xh"
android:hint="请输入学号"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_bj"
android:hint="请输入班级"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_zy"
android:hint="请输入专业"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/et_cj"
android:hint="请输入成绩"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn_confirm"
android:text="确定"
/>
</LinearLayout>
运行效果图:
登录页面:
注册界面:
管理界面:
对listview进行操作:单击
长按
对listview的添加:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341