Android 数据库编程SQLite实现学生信息管理应用

Posted Pistachiout

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 数据库编程SQLite实现学生信息管理应用相关的知识,希望对你有一定的参考价值。

android 数据库编程SQLite

一、实验内容

1. 构建应用界面布局

(1)新建一个安卓工程,在默认的layout主界面中添加一个列表(ListView),列表绑定一个SimpleAdapter关联学生信息(学号、姓名)。
(2)为ListView添加上下文菜单,菜单中包含两个选项(修改学生,删除学生),分别对应学生信息的修改和删除操作。为每个选项添加点击事件完成相应的操作,其中点击修改学生时启动“updateStu”Activity组件。
(3)在ListView下方添加一个按钮(Button),内容为“添加学生”,为按钮添加点击事件,单击按钮是启动“addStu”Activity组件。
(4)为“updateStu”和“addStu”Activity组件构建对应的layout界面stuinfo.xml,添加对应的文本框和输出框显示某一个学生的信息(学号、姓名、性别、电话),添加确认按钮(Button)。注意:当由“addStu”Activity启动此界面时,相关输入内容为空白,当由“updateStu”Activity启动此界面时,相关输入内容为该学生的原始信息。

2. 利用SQLite构建数据库交互组件

(1)新建一个DpHelper类继承SQLiteOpenHelper,通过构建方法启动数据库连接。构建createtable()方法完成建表操作,在数据库中建立一个学生信息表:
在这里插入图片描述
(2)构建insert(String id, String name, String sex, String phone)方法实现插入记录操作,构建 delete(String id)方法实现删除记录操作,构建update(String id, String name, String sex, String phone)方法实现更新记录操作,构建select(String id)方法实现查询某一记录操作,构建selectAll()方法实现查询所有记录操作。

3. 实现学生信息管理应用

(1)完善相关代码,实现学生信息管理应用的基本功能。包括:

  1. 学生信息列表:进入应用程序后,在ListView中自动加载所有已有学生的信息(学号,姓名)。
  2. 添加学生:单击“添加学生”按钮,打开相应的界面stuinfo.xml填写新学生信息,单击“确认”按钮后完成
  3. 添加学生操作。要求程序能够识别用户输入完整性(学号、姓名为必填项),如果新学生学号与现有学生相同,应提示更换学号。添加完成后返回主界面,同时更新ListView的内容。
  4. 删除学生:根据ListView长按位置得到要删除的学生的学号信息,完成删除操作,删除后更新ListView的内容。
  5. 修改学生:根据ListView长按位置得到要修改的学生的相关信息,打开相应的界面stuinfo.xml,将学生原始信息自动填入对应的输入框中,点击确认按钮后完成更新学生信息操作。要求程序能够识别用户输入完整性(学号、姓名为必填项),如果新学生学号与现有学生相同,应提示更换学号。修改完成后返回主界面,同时更新ListView的内容。

(2)测试相关功能,添加若干条学生信息(3条以上),再进行信息修改、删除操作的测试。

二:演示截图

数据库:在这里插入图片描述

没有填入数据时,显示学生,姓名,性别,手机:

在这里插入图片描述

插入学生数据:

在这里插入图片描述

插入数据后:

在这里插入图片描述

单击某行进行学生信息修改:在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

长按提示是否删除,确认后删除:

在这里插入图片描述

在这里插入图片描述

如果添加的学号重复:提示学号重复

在这里插入图片描述

实现代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:layout_width="@dimen/item_no_width"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:textSize="@dimen/item_font_size"
            android:text="@string/no"/>
        <TextView
            android:layout_width="@dimen/item_name_width"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:textSize="@dimen/item_font_size"
            android:text="@string/name"/>
        <TextView
            android:layout_width="@dimen/item_name_width"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:textSize="@dimen/item_font_size"
            android:text="性别:"/>
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:textSize="@dimen/item_font_size"
            android:text="@string/phone"/>

    </LinearLayout>

    <ListView
        android:id="@+id/lv_contact"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

    </ListView>

    <Button
        android:id="@+id/btn_add"
        android:layout_width="411dp"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_marginTop="@dimen/margin_fix"
        android:background="@color/btn_blue"
        android:text="@string/add"
        android:textSize="@dimen/btn_add_size" />

</LinearLayout>

<?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="horizontal">
    <TextView
        android:layout_width="@dimen/item_no_width"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:id="@+id/contact_no"
        android:textSize="@dimen/item_font_size"/>
    <TextView
        android:layout_width="@dimen/item_name_width"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:id="@+id/contact_name"
        android:textSize="@dimen/item_font_size"/>

    <TextView
        android:id="@+id/contact_sex"
        android:layout_width="90dp"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:textSize="@dimen/item_font_size" />

    <TextView
        android:id="@+id/contact_phonenumber"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:textSize="@dimen/item_font_size" />
</LinearLayout>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.wsine.west.exp7.DetailActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:id="@+id/detail_title"
        android:textSize="@dimen/title_size"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/no"
            android:textSize="@dimen/label_size"
            android:gravity="center_vertical"/>
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Et_no"
            android:textSize="@dimen/label_size"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/name"
            android:textSize="@dimen/label_size"
            android:gravity="center_vertical"/>
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Et_name"
            android:textSize="@dimen/label_size"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="性别:"
            android:textSize="@dimen/label_size"
            android:gravity="center_vertical"/>
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Et_sex"
            android:textSize="@dimen/label_size"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/phone"
            android:textSize="@dimen/label_size"
            android:gravity="center_vertical"/>
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/Et_phone"
            android:textSize="@dimen/label_size"/>
    </LinearLayout>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/margin_fix"
        android:layout_gravity="center"
        android:id="@+id/btn_confirm"
        android:textSize="@dimen/btn_add_size"
        android:text="@string/confirm"
        android:background="@color/btn_blue"/>

</LinearLayout>

package com.wsine.west.exp7;

/**
 * Created by West on 2015/11/25.
 */
public class Contact {
    private  int id;
    private String no;
    private String sex;
    private String name;
    private String phoneNumber;

    public Contact(String no, String name, String sex, String phoneNumber) {
        this.no = no;
        this.sex = sex;
        this.name = name;
        this.phoneNumber = phoneNumber;
    }

    public Contact(int id, String no, String name, String sex, String phoneNumber) {
        this.id = id;
        this.no = no;
        this.sex = sex;
        this.name = name;
        this.phoneNumber = phoneNumber;
    }

    public Contact() {}
    public Contact(String _name, String _phoneNumber) {
        this.name = _name;
        this.phoneNumber = _phoneNumber;
    }
    public Contact(String _no, String _name, String _phoneNumber) {
        this.no = _no;
        this.name = _name;
        this.phoneNumber = _phoneNumber;
    }

    public String getNo() { return no; }
    public void setNo(String _no) { this.no = _no; }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getName() { return name; }
    public void setName(String _name) { this.name = _name; }
    public String getPhoneNumber() { return phoneNumber; }
    public void setPhoneNumber(String _phoneNumber) { this.phoneNumber = _phoneNumber; }

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }
}

package com.wsine.west.exp7;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created by West on 2015/11/25.
 */
public class MySimpleAdapter extends SimpleAdapter {
    private ArrayList<Map<String, String>> mData;

    public ArrayList<Map<String, String>> getmData() {
        return mData;
    }

    public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data,
                           int resource, String[] from, int[] to) {
        super(context, data, resource, from, to);
        this.mData = (ArrayList<Map<String, String>>)data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final int mPosition = position;
        return super.getView(position, convertView, parent);
    }
}

package com.wsine.west.exp7;

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;

import static android.widget.Toast.LENGTH_SHORT;

/**
 * Created by West on 2015/11/25.
 */
public class MyDatabaseHelper extends SQLiteOpenHelper {
    private static final String DB_NAME = "Contacts.db";
    private static final String TABLE_NAME = "Contacts";
    private static final int DB_VERSION = 1;

    public MyDatabaseHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_TABLE = "create table " + TABLE_NAME
                + " (_id integer primary key autoincrement, "
                + "_no text not null, "
                + "_name text not null, "
                + "_sex text,"
                + "_pnumber text);";
        db.execSQL(CREATE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String DROP_TABLE = "DROP TABLE IF exists " + TABLE_NAME;
        db.execSQL(DROP_TABLE);
        onCreate(db);
    }

    public long insert(Contact entity) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("_no", entity.getNo());
        values.put("_name", entity.getName());
        values.put("_sex", entity.getSex());
        values.put("_pnumber", entity.getPhoneNumber());
        long id = db.insert(TABLE_NAME, null, values);
        db.close();
        return id;
    }

    public int update(Contact entity,String oldNo) {
        SQLiteDatabase db = getWritableDatabase();
        String whereClause = "_no = ?";
        String[] whereArgs = { oldNo};

        ContentValues values = new ContentValues();
        values.put("_no", entity.getNo());
        values.put("_name", entity.getName());
        values.put("_sex", entity.getSex());
        values.put("_pnumber", entity.getPhoneNumber());
        int rows = db.update(TABLE_NAME, values, whereClause, whereArgs);
        db.close();
        return rows;
    }

    public int delete(Contact entity) {
        SQLiteDatabase db = getWritableDatabase();
        String whereClause = "_no = ?";
        String[] whereArgs = { entity.getNo() };

        int rows = db.delete(TABLE_NAME, whereClauseKotlin实现简单的学生信息管理系统

Android:如何将子表与父表 Sqlite 连接起来

Android SQLite数据库基本操作

无法在 SQLite 数据库 Android 上插入数据

将用户输入编辑文本与SQLite数据库Android Java进行比较

iOS之Sqlite3封装