Bootstrap

Android记单词app(包含数据库)

一、功能与要求

 实现功能:设计与开发记单词系统的,系统功能包括用户登录、用户注册、单词操作(单词的添加、查询、修改及删除)以及忘记密码等。

指标要求:通过用户登录、用户注册、单词操作、忘记密等功能的设计与开发,掌握Android常用布局、控件的使用、监听器的设置以及Android数据库中SQLite数据库操作。

提交作品:项目设计报告。

二、方案设计

(一)UI布局设计

1. 登陆界面

该该界面采用LinearLayout布局,界面中包含整体界面采用线性布局布局方式,界面中包含TextView、EditText、Button等控件,布局设计如下图1所示:

图1 用户登录界面设计

2. 注册界面

该界面采用LinearLayout布局,界面中包含TextView、EditText、Button、RadioGroup、radioButton、toggleButton、checkBox、spinner等控件,布局设计如下图2所示:

图2 用户注册界面设计

3. 单词操作界面

该该界面采用LinearLayout布局,界面中包含textview、TableRow、EditText、Button、TableRow、ListView、RatingBar等控件,布局设计如下图3所示:

图3 单词操作界面设计

4. 忘记密码界面

该界面采用LinearLayout布局,界面中包含textview、EditText、Button等控件,布局设计如下图4所示:

图4 忘记密码界面

(二)业务流程图

在登录界面中,用户首先输入用户名和密码,点击“登录”按钮将用户输入的信息与数据库表中用户名密码进行匹配,如果正确,则跳转到单词操作页面,否则提示用户用户名密码有误。点击“注册按钮”跳转到注册页面,在注册页面中,通过输入注册信息,点击“注册按钮”将数据写入到数据库对应的表中,并提示用户注册成功。

具体的流程如下图所示:

图5 登陆注册流程图

三、项目实现步骤

步骤1:搭建开发环境。

步骤2:准备资源。

步骤3:界面设计。

步骤4:界面开发。

四、项目实现

(一)用户登录

界面如下图6所示:

前台核心代码如下:

<?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"
    android:background="@drawable/bg"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="500dp"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="right"
            android:text="用户名称:"
            android:textColor="#000000"
            android:textSize="24sp" />

        <EditText
            android:id="@+id/edname"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:hint="请输入用户名"
            android:inputType="textPersonName" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="right"
            android:text="用户密码:"
            android:textColor="#000000"
            android:textSize="24sp" />

        <EditText
            android:id="@+id/edpwd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:hint=" 请输入密码"
            android:inputType="numberPassword" />
    </LinearLayout>

    <Button
        android:id="@+id/btn_wjmm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:background="#00FFFFFF"
        android:text="忘记密码?"
        android:textColor="#000000"
        android:textSize="16sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn_login"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="登录"
            android:textSize="24sp" />

        <Button
            android:id="@+id/btn_reg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="注册"
            android:textSize="24sp" />
    </LinearLayout>
</LinearLayout>

 后台核心代码如下:

package com.example.word6;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
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 implements View.OnClickListener{
    private EditText edname,edpwd;
    private Button btn_login,btn_reg,btn_wjmm;
    private MyDBOpenHelper myDBOpenHelper;
    private SQLiteDatabase db;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initview();
        btn_wjmm.setOnClickListener(this);
        btn_reg.setOnClickListener(this);
        btn_login.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn_login:
                login();
                break;
            case R.id.btn_reg:
                Intent intent=new Intent(MainActivity.this,RegisterActivity.class);
                startActivity(intent);
                break;
            case R.id.btn_wjmm:
                Intent intent1=new Intent(MainActivity.this,UpdatePwdActivity.class);
                startActivity(intent1);
                break;
        }
    }

    //登录
    @SuppressLint("Range")
    private void login() {
        String name=edname.getText().toString();
        String pwd=edpwd.getText().toString();
        if(name.equals("")||pwd.equals("")){
            Toast.makeText(MainActivity.this,"用户名或密码不能为空",Toast.LENGTH_SHORT).show();
        }else {
            Cursor cursor=db.query("user_info",new String[]{"username","userpwd"},null,null,null,null,null);
            Boolean flag=false;
            while (cursor.moveToNext()){
                if(name.equals(cursor.getString(cursor.getColumnIndex("username")))
                        &&pwd.equals(cursor.getString(cursor.getColumnIndex("userpwd")))){
                    flag=true;
                    break;
                }
            
;