文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

AndriodStudio利用ListView和数据库实现简单学生管理

2024-04-02 19:55

关注

本文实例为大家分享了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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯