目录


一.主界面:登录界面

二.功能:注册

三.功能:修改密码

四.功能:显示数据

五.功能:找回密码



一.主界面:登录界面

        (1)要实现的功能:登录,记住密码,下次自动登录。

        (2)需要的技术:数据库查询,SharedPreferences,接口的实现

        (3)实现思路:
   
    记住密码:通过SharedPreferences向user.info写值,user为记住的用户名, pass为记住的密码

        自动登录:在记住密码的基础上向userinfo写入一个zddl字段的值,如果值为1调用登录接口

        避免重复代码:定义接口实现登录

       登录界面的界面xml:activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 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"
    tools:context="com.example.fjfz.myapplication.MainActivity">

    TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="24dp"
        android:layout_y="99dp"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="165dp"
        android:layout_y="150dp"
        android:text="用户名:"
        tools:layout_editor_absoluteX="169dp"
        tools:layout_editor_absoluteY="99dp" />

    <EditText
        android:id="@+id/user"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="251dp"
        android:layout_y="127dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="262dp"
        tools:layout_editor_absoluteY="186dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="167dp"
        android:layout_y="213dp"
        android:text="密码"
        tools:layout_editor_absoluteX="122dp"
        tools:layout_editor_absoluteY="242dp" />

    <EditText
        android:id="@+id/pass"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="253dp"
        android:layout_y="189dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="173dp"
        tools:layout_editor_absoluteY="302dp" />

    <Button
        android:id="@+id/btdl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="185dp"
        android:layout_y="315dp"
        android:text="登录"
        tools:layout_editor_absoluteX="239dp"
        tools:layout_editor_absoluteY="273dp" />

    <CheckBox
        android:id="@+id/jzmm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="172dp"
        android:layout_y="262dp"
        android:text="记住密码"
        tools:layout_editor_absoluteX="41dp"
        tools:layout_editor_absoluteY="220dp" />

    <CheckBox
        android:id="@+id/zddl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="354dp"
        android:layout_y="261dp"
        android:text="自动登录"
        tools:layout_editor_absoluteX="382dp"
        tools:layout_editor_absoluteY="292dp" />

    <Button
        android:id="@+id/btzc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="302dp"
        android:layout_y="314dp"
        android:text="注册"
        tools:layout_editor_absoluteX="418dp"
        tools:layout_editor_absoluteY="318dp" />

    <Button
        android:id="@+id/btzh"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="415dp"
        android:layout_y="310dp"
        android:text="找回密码"
        tools:layout_editor_absoluteX="329dp"
        tools:layout_editor_absoluteY="370dp" />


    <Button
        android:id="@+id/btxg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="375dp"
        android:layout_y="378dp"
        android:text="修改密码"
        tools:layout_editor_absoluteX="329dp"
        tools:layout_editor_absoluteY="370dp" />

    <Button
        android:id="@+id/btxs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="240dp"
        android:layout_y="374dp"
        android:text="显示密码"
        tools:layout_editor_absoluteX="329dp"
        tools:layout_editor_absoluteY="370dp" />

</AbsoluteLayout>

代码:MainActivity.java

package com.example.fjfz.myapplication;

import android.content.ContentValues;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    void login() {
        Cursor cursor=db.query("user",null,"user=? and pass=?",new String[]{user.getText().toString(),pass.getText().toString()},null,null,null);
        if (cursor.getCount() > 0) {
            Toast.makeText(getApplicationContext(),"登录成功",Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getApplicationContext(),"登录失败",Toast.LENGTH_LONG).show();
        }
    }


    EditText user,pass;
    Button btdl,btzc,btxs,btzh,btxg;
    SQLiteDatabase db;
    ContentValues values;
    SharedPreferences sharedPreferences;
    SharedPreferences.Editor editor;
    CheckBox jzmm,zddl;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        user=findViewById(R.id.user);
        pass=findViewById(R.id.pass);
        btdl=findViewById(R.id.btdl);
        jzmm=findViewById(R.id.jzmm);
        zddl=findViewById(R.id.zddl);
        sharedPreferences=getSharedPreferences("userinfo",MODE_PRIVATE);
        editor=sharedPreferences.edit();
        db=openOrCreateDatabase("user.db",MODE_PRIVATE,null);
        db.execSQL("create table if not exists user(user text,pass text)");
        values=new ContentValues();
        user.setText(sharedPreferences.getString("user",""));
        pass.setText(sharedPreferences.getString("pass",""));
        String a=sharedPreferences.getString("zddl","");
        btzc=findViewById(R.id.btzc);
        btxs=findViewById(R.id.btxs);
        btzh=findViewById(R.id.btzh);


       btxg=findViewById(R.id.btxg);

       btxs.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               startActivity(new Intent(getApplicationContext(),XSMM.class));
           }
       });
       btzh.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               startActivity(new Intent(getApplicationContext(),ZHMM.class));
           }
       });
       btxg.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               startActivity(new Intent(getApplicationContext(),XG.class));
           }
       });





        btzc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(getApplicationContext(),REG.class));
            }
        });





        if (!TextUtils.isEmpty(user.getText().toString()) && !TextUtils.isEmpty(pass.getText().toString())) {
          if (a.equals("1")) {
              zddl.setChecked(true);
              login();
          } else {
              jzmm.setChecked(true);
          }


        }

        btdl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if (zddl.isChecked()) {
                    editor.putString("user",user.getText().toString());
                    editor.putString("pass",pass.getText().toString());
                    editor.putString("zddl","1");
                    editor.commit();
                } else {
                    editor.putString("user","");
                    editor.putString("pass","");
                    editor.putString("zddl","");
                    editor.commit();
                }
                if (jzmm.isChecked()) {
                    editor.putString("user",user.getText().toString());
                    editor.putString("pass",pass.getText().toString());
                    editor.commit();
                } else {
                    editor.putString("user","");
                    editor.putString("pass","");
                    editor.commit();
                }


                login();
            }
        });
    }
}

二.功能:注册

        (1)要实现的功能:注册,判断密码合法性(需要具备字母或数字)

        (2)需要的技术:list的使用,字符的截取

        (3)实现思路:

        判断密码合法性:设定String类型的Arraylist,循环list,判断输入框是否包含此字符串

        

注册界面的界面xml:activity_reg.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 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"
    tools:context="com.example.fjfz.myapplication.REG">


    TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_x="24dp"
    android:layout_y="99dp"
    android:text="Hello World!"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="165dp"
        android:layout_y="150dp"
        android:text="用户名:"
        tools:layout_editor_absoluteX="169dp"
        tools:layout_editor_absoluteY="99dp" />

    <EditText
        android:id="@+id/user"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="251dp"
        android:layout_y="127dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="262dp"
        tools:layout_editor_absoluteY="186dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="167dp"
        android:layout_y="213dp"
        android:text="密码"
        tools:layout_editor_absoluteX="122dp"
        tools:layout_editor_absoluteY="242dp" />

    <EditText
        android:id="@+id/pass"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="253dp"
        android:layout_y="189dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="173dp"
        tools:layout_editor_absoluteY="302dp" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="169dp"
        android:layout_y="273dp"
        android:text="确定密码"
        tools:layout_editor_absoluteX="122dp"
        tools:layout_editor_absoluteY="242dp" />

    <EditText
        android:id="@+id/qdmm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="257dp"
        android:layout_y="245dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="173dp"
        tools:layout_editor_absoluteY="302dp" />




    <Button
        android:id="@+id/btzc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="270dp"
        android:layout_y="310dp"
        android:text="注册"
        tools:layout_editor_absoluteX="239dp"
        tools:layout_editor_absoluteY="273dp" />

</AbsoluteLayout>

注册界面的代码:REG.java

package com.example.fjfz.myapplication;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
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 REG extends AppCompatActivity {
    EditText user,pass,qdmm;
    Button btzc;
    SQLiteDatabase db;
    ContentValues values;
    int canreg=0;
    String list1="1234567890";
    String list="abcdefghijklmnopqrstwuvxyzABCDEFGHIJKLMNOPQRSTWVUXYZ";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_reg);
        user=findViewById(R.id.user);
        pass=findViewById(R.id.pass);
        qdmm=findViewById(R.id.qdmm);
        btzc=findViewById(R.id.btzc);
        db=openOrCreateDatabase("user.db",MODE_PRIVATE,null);
        db.execSQL("create table if not exists user(user text,pass text)");
        values=new ContentValues();
        canreg=0;
        btzc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (!TextUtils.isEmpty(user.getText()) &&!TextUtils.isEmpty(pass.getText().toString()) && !TextUtils.isEmpty(qdmm.getText().toString())) {
                    if (pass.getText().toString().length() < 8) {
                        canreg=0;
                    } else {
                        for (int i=0;i<=list.length();i++) {
                            if (pass.getText().toString().indexOf(list.substring(i,i)) != -1 ) {
                                canreg=1;
                                break;
                            } else {
                                canreg=0;
                            }
                        }
                        for (int i=0;i<=list1.length();i++) {
                            if (pass.getText().toString().indexOf(list1.substring(i,i)) != -1 ) {
                                canreg=1;
                                break;
                            } else {
                                canreg=0;
                            }
                        }


                    }
                    if (canreg==1) {
                        Cursor cursor=db.query("user",null,"user=?",new String[]{user.getText().toString()},null,null,null);
                        if (cursor.getCount() > 0) {
                            Toast.makeText(getApplicationContext(),"用户名,密码已存在",Toast.LENGTH_LONG).show();
                        }  else {
                            values.clear();
                            values.put("user",user.getText().toString());
                            values.put("pass",pass.getText().toString());
                            db.insert("user",null,values);
                            Toast.makeText(getApplicationContext(),"注册成功",Toast.LENGTH_LONG).show();
                        }
                    } else {
                        Toast.makeText(getApplicationContext(),"密码必须八位并包含数字和英文字符",Toast.LENGTH_LONG).show();
                    }
                } else {
                    Toast.makeText(getApplicationContext(),"用户名密码不能为空",Toast.LENGTH_LONG).show();
                }
            }
        });

    }
}

三.功能:修改密码

        (1)要实现的功能:修改密码

        (2)需要的技术:无

        (3)实现思路:直接在登录的基础上,如果成功登录,则更新新的密码到数据库

修改密码界面的界面xml:activity_xg.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 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"
    tools:context="com.example.fjfz.myapplication.XG">


    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_x="24dp"
    android:layout_y="99dp"
    android:text="Hello World!"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="165dp"
        android:layout_y="150dp"
        android:text="用户名:"
        tools:layout_editor_absoluteX="169dp"
        tools:layout_editor_absoluteY="99dp" />

    <EditText
        android:id="@+id/user"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="251dp"
        android:layout_y="127dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="262dp"
        tools:layout_editor_absoluteY="186dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="167dp"
        android:layout_y="213dp"
        android:text="密码"
        tools:layout_editor_absoluteX="122dp"
        tools:layout_editor_absoluteY="242dp" />

    <EditText
        android:id="@+id/pass"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="253dp"
        android:layout_y="189dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="173dp"
        tools:layout_editor_absoluteY="302dp" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="169dp"
        android:layout_y="273dp"
        android:text="新密码"
        tools:layout_editor_absoluteX="122dp"
        tools:layout_editor_absoluteY="242dp" />

    <EditText
        android:id="@+id/xmm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="257dp"
        android:layout_y="245dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="173dp"
        tools:layout_editor_absoluteY="302dp" />


    <Button
        android:id="@+id/btxg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="270dp"
        android:layout_y="310dp"
        android:text="修改密码"
        tools:layout_editor_absoluteX="239dp"
        tools:layout_editor_absoluteY="273dp" />

</AbsoluteLayout>

修改密码的代码:XG.java

package com.example.fjfz.myapplication;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class XG extends AppCompatActivity {
    SQLiteDatabase db;
    ContentValues values;
    EditText user,pass,xmm;
    Button btxg;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xg);
        values=new ContentValues();
        db=openOrCreateDatabase("user.db",MODE_PRIVATE,null);
        db.execSQL("create table if not exists user(user text,pass text)");
        btxg=findViewById(R.id.btxg);
        user=findViewById(R.id.user);
        pass=findViewById(R.id.pass);
        xmm=findViewById(R.id.xmm);
        btxg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Cursor cursor=db.query("user",null, "user=? and pass=?",new String[]{user.getText().toString(),pass.getText().toString()},null,null,null);
                if (cursor.getCount() > 0) {
                    values.clear();
                    values.put("user",user.getText().toString());
                    values.put("pass",xmm.getText().toString());
                    db.update("user",values,"user=?",new String[]{user.getText().toString()});
                    Toast.makeText(getApplicationContext(),"修改成功",Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(getApplicationContext(),"密码错误",Toast.LENGTH_LONG).show();
                }

            }
        });


    }
}

四.功能:显示数据

        (1)要实现的功能:将读取的数据显示在listview

        (2)需要的技术:读取数据库,listview加入数据

        (3)实现思路:无

显示界面的界面xml:activity_xsmm.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 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"
    tools:context="com.example.fjfz.myapplication.XSMM">

    <ListView
        android:id="@+id/list1"
        android:layout_width="140dp"
        android:layout_height="447dp"
        android:layout_x="214dp"
        android:layout_y="0dp"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp" />

    <ListView
        android:id="@+id/list2"
        android:layout_width="140dp"
        android:layout_height="447dp"
        android:layout_x="357dp"
        android:layout_y="2dp"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp" />

</AbsoluteLayout>

显示界面的代码:XSMM.java

package com.example.fjfz.myapplication;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

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

public class XSMM extends AppCompatActivity {
    ListView list1,list2;
    SQLiteDatabase db;
    List<String> user=new ArrayList<String>();
    List<String> pass=new ArrayList<String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xsmm);
        list1=findViewById(R.id.list1);
        list2=findViewById(R.id.list2);
        db=openOrCreateDatabase("user.db",MODE_PRIVATE,null);
        db.execSQL("create table if not exists user(user text,pass text)");
        Cursor cursor=db.query("user",null,null,null,null,null,null);
        while (cursor.moveToNext()) {
            user.add(cursor.getString(cursor.getColumnIndex("user")));
            pass.add(cursor.getString(cursor.getColumnIndex("pass")));
            ArrayAdapter<String> user1=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,user);
            ArrayAdapter<String> pass1=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,pass);
            list1.setAdapter(user1);
            list2.setAdapter(pass1);
        }
    }
}

五.功能:找回密码

        (1)要实现的功能:用户输入二级密码,找回密码

        (2)需要的技术:读取数据库数据

        (3)实现思路:

       二级密码实现:这里写死的123456,一般情况是写入数据库另外的键值,查询是否正确参考登录。

找回密码界面的界面xml:activity_zhmm.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 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"
    tools:context="com.example.fjfz.myapplication.ZHMM">
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="165dp"
        android:layout_y="150dp"
        android:text="用户名:"
        tools:layout_editor_absoluteX="169dp"
        tools:layout_editor_absoluteY="99dp" />

    <EditText
        android:id="@+id/user"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="251dp"
        android:layout_y="127dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="262dp"
        tools:layout_editor_absoluteY="186dp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="167dp"
        android:layout_y="213dp"
        android:text="密码"
        tools:layout_editor_absoluteX="122dp"
        tools:layout_editor_absoluteY="242dp" />

    <EditText
        android:id="@+id/pass"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="253dp"
        android:layout_y="189dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="173dp"
        tools:layout_editor_absoluteY="302dp" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="169dp"
        android:layout_y="273dp"
        android:text="二级密码"
        tools:layout_editor_absoluteX="122dp"
        tools:layout_editor_absoluteY="242dp" />

    <EditText
        android:id="@+id/ejmm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="257dp"
        android:layout_y="245dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="173dp"
        tools:layout_editor_absoluteY="302dp" />


    <Button
        android:id="@+id/btzh"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="299dp"
        android:layout_y="316dp"
        android:text="找回密码"
        tools:layout_editor_absoluteX="239dp"
        tools:layout_editor_absoluteY="273dp" />
</AbsoluteLayout>

  找回密码的代码:ZHMM.java:

package com.example.fjfz.myapplication;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class ZHMM extends AppCompatActivity {
    EditText user,pass,ejmm;
    Button btzh;
    SQLiteDatabase db;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zhmm);
        //一般找回密码在注册的时候有二级密码
        user=findViewById(R.id.user);
        pass=findViewById(R.id.pass);
        ejmm=findViewById(R.id.ejmm);
        btzh=findViewById(R.id.btzh);
        db=openOrCreateDatabase("user.db",MODE_PRIVATE,null);
        db.execSQL("create table if not exists user(user text,pass text)");


        btzh.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Cursor cursor=db.query("user",null,null,null,null,null,null);
                if (ejmm.getText().toString().equals("123456")) { //二级密码一般要存入数据库,这里设置成123456
                    pass.setText("");
                    while (cursor.moveToNext()) {
                        if (cursor.getString(cursor.getColumnIndex("user")).equals(user.getText().toString())) {
                            pass.setText(cursor.getString(cursor.getColumnIndex("pass")));
                        }
                    }
                } else {
                    Toast.makeText(getApplicationContext(),"二级密码错误",Toast.LENGTH_LONG).show();
                }


            }
        });




    }
}

        


Developed by 福州机电工程职业技术学校 wh