实现生词本程序,并将所有生词数据存储到SQLite数据库当中。
要求:
(1)能够展示所有生词列表;
(2)能够根据用户输入的关键词搜索出相关生词列表;
(3)能够查看、编辑和删除某条生词记录;
(4)自己设计并完成程序界面;
(5)只需提交核心Java代码,界面需上传截图(不需要提交布局文件XML代码)

点击下载所有相关代码:LRF_使用Android实现生词本源码

WordDatabaseHelper.java:

package com.example.homework01wordsdir;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import androidx.annotation.Nullable;

public class WordDatabaseHelper extends SQLiteOpenHelper {
    public WordDatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    /**
     * 数据库不存在,第一次创建数据库时被自动调用,并且只被调用一次
     * @param db
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table WordTB(id integer primary key autoincrement,word varchar(20) unique,mean varchar(200))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

Words.java:

package com.example.homework01wordsdir;

public class Words {
    private int id;
    private String word;
    private String mean;

    public int getId() {
        return id;
    }

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

    public String getWord() {
        return word;
    }

    public void setWord(String word) {
        this.word = word;
    }

    public String getMean() {
        return mean;
    }

    public void setMean(String mean) {
        this.mean = mean;
    }

    public Words() {
    }

    public Words(String word, String mean) {
        this.word = word;
        this.mean = mean;
    }
}

MainActivity.java:

package com.example.homework01wordsdir.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;

import com.example.homework01wordsdir.R;
import com.example.homework01wordsdir.WordDatabaseHelper;
import com.example.homework01wordsdir.Words;

public class MainActivity extends AppCompatActivity {

    private LinearLayout linearQueryWord;
    private LinearLayout linearAddWord;
    private LinearLayout linearSeeMyDir;
    //创建数据库对象属性
    public static SQLiteDatabase db;
    private WordDatabaseHelper helper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取控件引用
        findViews();
        //设置监听器
        setListeners();
        //创建数据表
        helper = new WordDatabaseHelper(this, "GlossaryDB.db", null, 1);
        db = helper.getWritableDatabase();
    }

    private void setListeners() {
        MyListener myListener = new MyListener();
        linearQueryWord.setOnClickListener(myListener);
        linearAddWord.setOnClickListener(myListener);
        linearSeeMyDir.setOnClickListener(myListener);
    }

    class MyListener implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.linear_queryWord:
                    Intent intent1 = new Intent();
                    intent1.setClass(MainActivity.this, QueryWordActivity.class);
                    startActivity(intent1);
                    break;
                case R.id.linear_addWord:
                    Intent intent2 = new Intent();
                    intent2.setClass(MainActivity.this, AddWordActivity.class);
                    startActivity(intent2);
                    break;
                case R.id.linear_seeMyDir:
                    Intent intent3 = new Intent();
                    intent3.setClass(MainActivity.this, SeeMyDirActivity.class);
                    startActivity(intent3);
                    break;
            }
        }
    }

    private void findViews() {
        linearQueryWord = findViewById(R.id.linear_queryWord);
        linearAddWord = findViewById(R.id.linear_addWord);
        linearSeeMyDir = findViewById(R.id.linear_seeMyDir);
    }

}

QueryWordActivity.java:

package com.example.homework01wordsdir.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.example.homework01wordsdir.R;
import com.example.homework01wordsdir.activity.MainActivity;

public class QueryWordActivity extends AppCompatActivity {

    private EditText etWord;
    private Button btnSearch;
    private TextView tvShowResult;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_query_word);

        findViews();

        btnSearch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String input = etWord.getText().toString().trim();
                if (input.equals("") || input == null) {
                    tvShowResult.setText("请输入非空格英文字母,以确保查询结果正确!!");
                } else {
                    String where = "word like '%" + input + "%'";
                    Cursor resultCursor = queryData(where);
                    StringBuffer resultBuffer = new StringBuffer();
                    while (resultCursor.moveToNext()) {
                        String word = resultCursor.getString(resultCursor.getColumnIndex("word"));
                        String mean = resultCursor.getString(resultCursor.getColumnIndex("mean"));
                        resultBuffer.append(word + "\n" + mean + "\n");
                    }
                    if(resultBuffer.toString().trim().length()==0){
                        tvShowResult.setText("未搜索到您想要查询生词的相关内容!");
                    }else {
                        tvShowResult.setText(resultBuffer.toString());
                    }
                }
            }
        });
    }

    private void findViews() {
        etWord = findViewById(R.id.et_word);
        btnSearch = findViewById(R.id.btn_search);
        tvShowResult = findViewById(R.id.tv_showResult);
    }

    private Cursor queryData(String where) {
        return MainActivity.db.query("WordTB", null, where, null, null, null, null);
    }
}

AddWordActivity.java:

package com.example.homework01wordsdir.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.homework01wordsdir.R;
import com.example.homework01wordsdir.Words;

public class AddWordActivity extends AppCompatActivity {

    private EditText etWordAdd;
    private EditText etMeanAdd;
    private Button btnSubmitAdd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_word);

        findViews();
        btnSubmitAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String wordAdd = etWordAdd.getText().toString().trim();
                String meanAdd = etMeanAdd.getText().toString().trim();
                if(wordAdd.length() == 0 || meanAdd.length() == 0){
                    showAlertDialog();
                }else{
                    Words word = new Words(wordAdd,meanAdd);
                    int i = insertWord(word);
                    if(i > 0){
                        Toast.makeText(AddWordActivity.this,"添加生词成功",Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent();
                        intent.setClass(AddWordActivity.this, MainActivity.class);
                        startActivity(intent);
                    }else{
                        showAlert();
                    }
                }
            }
        });
    }

    private int insertWord(Words word) {
        ContentValues contentValues = new ContentValues();
        contentValues.put("word",word.getWord());
        contentValues.put("mean",word.getMean());
        return (int)MainActivity.db.insert("WordTB",null,contentValues);
    }

    private void showAlert() {
        new AlertDialog.Builder(AddWordActivity.this).setTitle("温馨提示")
                .setMessage("您已添加过该生词,添加生词失败!")
                .setPositiveButton("确定",null)
                .create().show();
    }

    private void showAlertDialog() {
        new AlertDialog.Builder(AddWordActivity.this).setTitle("温馨提示")
                .setMessage("请确保您已正确输入需要添加的生词和该生词的意思!")
                .setPositiveButton("确定",null)
                .create().show();
    }

    private void findViews() {
        etWordAdd = findViewById(R.id.et_wordAdd);
        etMeanAdd = findViewById(R.id.et_meanAdd);
        btnSubmitAdd = findViewById(R.id.btn_submitAdd);
    }
}

SeeMyDirActivity.java:

package com.example.homework01wordsdir.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.database.Cursor;
import android.os.Bundle;
import android.widget.ListView;

import com.example.homework01wordsdir.R;
import com.example.homework01wordsdir.Words;
import com.example.homework01wordsdir.WordsAdapter;
import com.example.homework01wordsdir.activity.MainActivity;

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

public class SeeMyDirActivity extends AppCompatActivity {

    private List<Words> wordsList = new ArrayList<>();
    private StringBuffer buffer = new StringBuffer();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_see_mydir);

        Cursor cursor = queryAllData();
        initData(cursor);
        initView();
    }

    private void initData(Cursor cursor) {
        while (cursor.moveToNext()) {
            String word = cursor.getString(cursor.getColumnIndex("word"));
            String mean = cursor.getString(cursor.getColumnIndex("mean"));
            buffer.append(word + ":" + mean + "/");
        }
        if(buffer.toString().trim().length() != 0){
            String[] strings = buffer.toString().split("/");
            for (int i = 0; i < strings.length; ++i) {
                String[] words = strings[i].split(":");
                for (int j = 0; j < words.length; ++j) {
                    if (j % 2 == 0) {
                        Words word = new Words(words[j], words[j + 1]);
                        wordsList.add(word);
                    }
                }
            }
        }
    }

    public void initView() {
        WordsAdapter wordsAdapter = new WordsAdapter(this, wordsList, R.layout.words_list);
        ListView wordListView = findViewById(R.id.lv_showWords);
        wordListView.setAdapter(wordsAdapter);
    }

    public Cursor queryAllData() {
        return MainActivity.db.query("WordTB", null, null, null, null, null, null);
    }

}

WordsAdapter.java:

package com.example.homework01wordsdir;

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.example.homework01wordsdir.activity.EditWordActivity;
import com.example.homework01wordsdir.activity.MainActivity;
import com.example.homework01wordsdir.activity.WordInfoActivity;

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

public class WordsAdapter extends BaseAdapter {
    private Context mContext;
    private List<Words> words = new ArrayList<Words>();
    private int itemLayoutRes;

    public WordsAdapter(Context mContext, List<Words> words, int itemLayoutRes) {
        this.mContext = mContext;
        this.words = words;
        this.itemLayoutRes = itemLayoutRes;
    }

    /*获得数据条数*/
    @Override
    public int getCount() {
        if(words != null){
            return words.size();
        }
        return 0;
    }

    /*获取每个item显示的数据对象*/
    @Override
    public Object getItem(int position) {
        if(words != null){
            return words.get(position);
        }
        return null;
    }

    /*获取每个item的id值*/
    @Override
    public long getItemId(int position) {
        return position;
    }

    /*获取item的视图对象*/
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //convertView每个item的视图对象
        //加载item的布局文件
        if (convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(mContext);//布局填充器
            convertView = inflater.inflate(itemLayoutRes, null);
        }

        //获取item中的控件引用
        final TextView tvWords = convertView.findViewById(R.id.tv_words);
        TextView tvMean = convertView.findViewById(R.id.tv_mean);
        Button btnSee = convertView.findViewById(R.id.btn_see);
        Button btnEdit = convertView.findViewById(R.id.btn_edit);
        Button btnDelete = convertView.findViewById(R.id.btn_delete);

        //设置控件内容
        tvWords.setText(words.get(position).getWord());
        tvMean.setText(words.get(position).getMean());

        //设置控件事件监听器
        btnSee.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String word = tvWords.getText().toString();
                if(word != null && !word.equals("")){
                    Intent intent = new Intent();
                    intent.setClass(mContext, WordInfoActivity.class);
                    intent.putExtra("word",word);
                    mContext.startActivity(intent);
                }else{
                    Toast.makeText(mContext.getApplicationContext(),"未获取到单词!",Toast.LENGTH_SHORT).show();
                }
            }
        });

        btnEdit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String word = tvWords.getText().toString();
                if(word != null && !word.equals("")){
                    Intent intent = new Intent();
                    intent.setClass(mContext, EditWordActivity.class);
                    intent.putExtra("word",word);
                    mContext.startActivity(intent);
                }else{
                    Toast.makeText(mContext.getApplicationContext(),"未获取到单词!",Toast.LENGTH_SHORT).show();
                }
            }
        });

        btnDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String word = tvWords.getText().toString();
                if(word != null && !word.equals("")){
                    String where = "word='" + word + "'";
                    int i = dropWord(where);
                    if(i > 0){
                        Intent intent = new Intent();
                        intent.setClass(mContext, MainActivity.class);
                        mContext.startActivity(intent);
                        Toast.makeText(mContext.getApplicationContext(),"删除成功!",Toast.LENGTH_SHORT).show();
                    }
                }else{
                    Toast.makeText(mContext.getApplicationContext(),"未获取到单词!",Toast.LENGTH_SHORT).show();
                }
            }
        });
        return convertView;
    }

    private int dropWord(String where) {
        return MainActivity.db.delete("WordTB",where,null);
    }

}

WordInfoActivity.java:

package com.example.homework01wordsdir.activity;

import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.example.homework01wordsdir.R;
import com.example.homework01wordsdir.activity.MainActivity;

public class WordInfoActivity extends AppCompatActivity {

    private TextView tvWordInfo;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_word_info);

        //获取控件
        tvWordInfo = findViewById(R.id.tv_wordInfo);

        Intent request = getIntent();

        String word = request.getStringExtra("word");
        String where = "word='"+word+"'";
        Cursor cursor = queryWordInfo(where);
        showWordInfo(cursor);
    }

    //将查询到的数据显示在界面
    private void showWordInfo(Cursor cursor) {
        StringBuffer buffer = new StringBuffer();
        while(cursor.moveToNext()){
            String word = cursor.getString(cursor.getColumnIndex("word"));
            String mean = cursor.getString(cursor.getColumnIndex("mean"));
            buffer.append("生词: " + word + "\n\n意思:\n" + mean+"\n");
            tvWordInfo.setText(buffer.toString());
        }
    }

    //根据单词拼写来查询该单词的详细信息
    private Cursor queryWordInfo(String where) {
        return MainActivity.db.query("WordTB", null,where,null, null,null,null);
    }


}

EditWordActivity.java:

package com.example.homework01wordsdir.activity;

import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.homework01wordsdir.R;

public class EditWordActivity extends AppCompatActivity {

    private EditText etWordChange;
    private EditText etMeanChange;
    private Button btnSubmitChange;
    private int id;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_edit_word);

        findViews();

        Intent request = getIntent();
        String word = request.getStringExtra("word");

        String where = "word='"+word+"'";
        Cursor cursor = queryWordInfo(where);
        while(cursor.moveToNext()){
            id = cursor.getInt(cursor.getColumnIndex("id"));
        }
        btnSubmitChange.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String wordChange = etWordChange.getText().toString().trim();
                String meanChange = etMeanChange.getText().toString().trim();
                if(wordChange.length() != 0 && meanChange.length() != 0){
                    int i = updateData(id,wordChange,meanChange);
                    if(i > 0){
                        Intent intent = new Intent();
                        intent.setClass(EditWordActivity.this, MainActivity.class);
                        startActivity(intent);
                        Toast.makeText(EditWordActivity.this,"编辑生词成功!",Toast.LENGTH_SHORT).show();
                    }else{
                        showFailAlertDialog();
                    }
                }else{
                    showAlertDialog();
                }
            }
        });
    }

    private void showFailAlertDialog() {
        new AlertDialog.Builder(EditWordActivity.this).setTitle("温馨提示")
                .setMessage("修改生词失败!")
                .setPositiveButton("确定",null)
                .create().show();
    }

    private void showAlertDialog() {
        new AlertDialog.Builder(EditWordActivity.this).setTitle("温馨提示")
                .setMessage("请确保您已正确输入修改后的生词和该生词的意思!")
                .setPositiveButton("确定",null)
                .create().show();
    }

    private int updateData(int id,String wordChange,String meanChange) {
        String where = "id=" + id;
        //使用封装更新的数据
        ContentValues cv = new ContentValues();
        cv.put("word",wordChange);
        cv.put("mean",meanChange);
        return MainActivity.db.update("WordTB",cv,where,null);
    }

    private void findViews() {
        etWordChange = findViewById(R.id.et_wordChange);
        etMeanChange = findViewById(R.id.et_meanChange);
        btnSubmitChange = findViewById(R.id.btn_submitChange);
    }

    //根据单词拼写来查询该单词的详细信息
    private Cursor queryWordInfo(String where) {
        return MainActivity.db.query("WordTB", null,where,null, null,null,null);
    }

}

首页显示的界面:

androidstudio单词本 安卓单词本开发_android

搜索单词/查询单词 界面:

androidstudio单词本 安卓单词本开发_android studio_02


(当只输入空格或者没有任何输入时,界面显示)

androidstudio单词本 安卓单词本开发_android studio_03

(当用户输入某关键词,且查询到相关生词结果时的界面)

androidstudio单词本 安卓单词本开发_android studio_04


(当用户输入某关键词,但查询不到相关结果时的界面显示)

androidstudio单词本 安卓单词本开发_androidstudio单词本_05

添加生词界面:

androidstudio单词本 安卓单词本开发_SQL_06

(当用户添加的生词已被添加过时,显示的界面)

androidstudio单词本 安卓单词本开发_androidstudio单词本_07

(当未输入生词或该生词意思,点击添加按钮时的界面显示)

androidstudio单词本 安卓单词本开发_android_08


(当生词添加成功时的界面显示)

androidstudio单词本 安卓单词本开发_sqlite_09

展示所有生词列表:

(当用户未添加任何生词时,界面只显示上方标题)

androidstudio单词本 安卓单词本开发_SQL_10

查看某一生词:

androidstudio单词本 安卓单词本开发_SQL_11

编辑某生词:

androidstudio单词本 安卓单词本开发_sqlite_12

(当未输入生词或该生词意思,点击提交按钮时的界面显示)

androidstudio单词本 安卓单词本开发_SQL_13

(当编辑成功时,界面显示)

androidstudio单词本 安卓单词本开发_androidstudio单词本_14

删除某生词记录:

(当点击某生词对应的删除按钮,删除成功后的界面显示)

androidstudio单词本 安卓单词本开发_android studio_15