Android开发----实现登录注册页面(创建本地数据库,对注册的账户密码进行存储)

这篇具有很好参考价值的文章主要介绍了Android开发----实现登录注册页面(创建本地数据库,对注册的账户密码进行存储)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现登录注册页面(创建本地数据库,对注册的账户密码进行存储)

写在前面:
本文实现了登录注册页面的开发,创建了本地数据库,存储注册的账户密码。注册账户为手机号,对账户为手机号进行了正则化验证。登录成功跳转至主页面。

20221028-实现登录注册功能

登录注册的业务流程图

安卓注册与登录开发,Android,数据库,android

页面展示

安卓注册与登录开发,Android,数据库,android安卓注册与登录开发,Android,数据库,android

源码如下:

首先说一下,项目部署是在原有项目新建两个activity(项目右键–new–activity–empty activity):LoginActivity(登录页面布局文件.xml文件和登录.java文件)和RegisterActivity(注册页面布局文件.XML和注册.java文件)两个活动,并新建DBOpenHelper.java(main文件夹右键–new–.java)类(这个类是封装数据库的类)。

1.登录页面部署activity_login.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:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".LoginActivity">

<!--    不能输入多行,要做数字判断-->
    <EditText
        android:id="@+id/et_username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入手机号"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:gravity="center_vertical"
        android:textSize="20sp"/>
<!--密码也要判断-->
    <EditText
        android:id="@+id/et_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:textSize="20sp"
        />
<!--    跳转到mainactivity-->
    <Button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        />
    <Button
        android:id="@+id/btn_register1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="还没有账号?点击注册"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        />
<!--    测试框 显示数据库存储的内容-->
<!-- 登录页面的最下面,设置了个通过输入的用户名调用数据库结果的测试的listview栏-->
    <ListView
        android:id="@+id/test_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
    />
</LinearLayout>

2.注册页面部署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=".RegisterActivity">
    <EditText
        android:id="@+id/et_register_username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入账号"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"/>
    <EditText
        android:id="@+id/et_register_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"/>
    <EditText
        android:id="@+id/et_again_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请再次输入密码进行确认"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"/>
    <Button
        android:id="@+id/btn_register"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="点击注册"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        />
</LinearLayout>

3.新建数据库java文件,DBOpenHelper.java

新建数据库,用来存储注册的用户名和密码

package com.domain.mainView;

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

public class DBOpenHelper extends SQLiteOpenHelper {

    //定义创建用户数据表的SQL语句  主键user数据库表 username和password字段
    final String CREATE_USER_SQL=
            "create table user(_id integer primary " + "key autoincrement , username, password)";
    public DBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version){
        super(context,name,null,version);
    }
    @Override
    //数据库第一次创建时被调用
    public void onCreate(SQLiteDatabase db){
        //创建用户列表 execSQL执行修改数据库内容的SQL语句
        db.execSQL(CREATE_USER_SQL);
    }

    @Override
    //版本号发生改变时使用
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //提示版本更新
        System.out.println("---版本更新----"+oldVersion+"--->"+newVersion);
    }
}

4.注册页面,RegisterActivity.java

package com.domain.mainView;

import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegisterActivity extends AppCompatActivity {
    public static final int RESULT_CODE_REGISTER=0;
    private Button btn_register;
    private EditText et_register_username,et_register_password,et_again_password;
    /*数据库成员变量*/
    private DBOpenHelper dbOpenHelper;
    
    String et_name;
    String et_password;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        //注册按钮
        btn_register=(Button) findViewById(R.id.btn_register);
        //用户名编辑框
        et_register_username= findViewById(R.id.et_register_username);
        //密码编辑框
        et_register_password=findViewById(R.id.et_register_password);
        //再次输入密码编辑框
        et_again_password=findViewById(R.id.et_again_password);
        
        /*实例化数据库变量dbOpenHelper*/
        dbOpenHelper=new DBOpenHelper(RegisterActivity.this,"user.db",null,1);

        btn_register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            //获取三个编辑框的内容
                String et_name=et_register_username.getText().toString();
                String et_password=et_register_password.getText().toString();
                String et_confirm=et_again_password.getText().toString();

                //判断异常情况弹窗
                //编辑框为空
                if(TextUtils.isEmpty(et_name)){
                    Toast.makeText(RegisterActivity.this,"用户名不能为空!",Toast.LENGTH_SHORT).show();
                    //对用户名进行手机号正则化验证,调用下面写的idTelPhoneNumber方法
                }else if(!isTelPhoneNumber(et_name)){
                    Toast.makeText(RegisterActivity.this,"请输入正确的手机号码!",Toast.LENGTH_SHORT).show();
                } else if(TextUtils.isEmpty(et_password)){
                    Toast.makeText(RegisterActivity.this,"密码不能为空!",Toast.LENGTH_SHORT).show();
                    //两次密码框内容不一致
                }else if(!TextUtils.equals(et_password,et_confirm)){
                    Toast.makeText(RegisterActivity.this,"密码不一致!",Toast.LENGTH_SHORT).show();
                } else{ 
                //存储注册的用户名和密码 把账号密码存储进数据库
                    insertData(dbOpenHelper.getReadableDatabase(),et_name,et_password);
                    Toast.makeText(RegisterActivity.this,"注册成功!",Toast.LENGTH_SHORT).show();
                }
                //关闭注册页面 跳转到登录页面
                RegisterActivity.this.finish();
            }
        });
    }
    /*正则化验证手机号码方法*/
    public static boolean isTelPhoneNumber(String mobile) {
        if (mobile != null && mobile.length() == 11) {
            Pattern pattern = Pattern.compile("^1[3|4|5|6|7|8|9][0-9]\\d{8}$");
            Matcher matcher = pattern.matcher(mobile);
            return matcher.matches();
        }else{
            return false;
        }
    }
    //创建数据库的insert方法 插入数据方法
    private void insertData(SQLiteDatabase readableDatabase, String username1, String password1){
        ContentValues values=new ContentValues();
        values.put("username",username1);
        values.put("password",password1);
        readableDatabase.insert("user",null,values);
    }
    //重写onDestroy()方法 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (dbOpenHelper != null) {
            dbOpenHelper.close();
        }
    }
}

5.登录页面,LoginActivity.java

package com.domain.mainView;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class LoginActivity extends AppCompatActivity {

    //定义登录Button 编辑框
    private Button btn_login;
    private EditText et_password,et_userName;
    /*定义数据库所需成员变量 */
    private DBOpenHelper dbOpenHelper;
    //数据库里存储的password
    String dbpassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        ListView test_text=(ListView)findViewById(R.id.test_text);
        //初始化
        initView();
        //注册完之后更新

        /*定义数据库对象 */
        dbOpenHelper=new DBOpenHelper(LoginActivity.this,"user.db",null,1);

        /*点击跳转至注册页面 【还没有账号?点击注册】按钮*/
        Button btn_register1=(Button)findViewById(R.id.btn_register1);
        btn_register1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //点击按钮跳转到注册页面
                Intent intent = new Intent(getApplicationContext(), RegisterActivity.class);
                //注册返回代码为0时,跳转
                startActivity(intent);
            }
        });
        
        //登录按钮单击事件
        btn_login=(Button)findViewById(R.id.btn_login);
        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //获取输入的密码框内容
                String etpassword=et_password.getText().toString();
                /*获取数据库里的数据*/
                //登录按钮获取要查询的账号
                String key=et_userName.getText().toString();
                Cursor cursor=dbOpenHelper.getReadableDatabase().query("user",null,"username = ?",new String[]{key},null,null,null);
                //创建ArrayList对象,用于保存用户数据结果
                ArrayList<Map<String,String>> resultList =new ArrayList<Map<String,String>>();//不用测试的话,直接遍历取值getstring(2)就行,创建数组可以省去。
                while(cursor.moveToNext()){
                    //将结果集中的数据存入HashMap
                    Map<String,String> map=new HashMap<>();
                    //取出查询结果第二列和第三列的值
                    //用户名
                    map.put("username",cursor.getString(1));
                    //密码
                    map.put("password",cursor.getString(2));
                    resultList.add(map);
          
                    //获取数据库中符合用户名的对应的密码
                    dbpassword=map.get("password");
                }
                //正则化判断输入的账号是否符合手机号格式
                if(!isTelPhoneNumber(key)){
                    Toast.makeText(LoginActivity.this,"请输入正确的手机号!",Toast.LENGTH_SHORT).show();
                }else if (resultList == null || resultList.size() == 0) { //如果数据库中没有查询的用户数据
                    //显示提示信息,没有相关记录
                    Toast.makeText(LoginActivity.this,
                            "该用户名未注册,请先注册", Toast.LENGTH_LONG).show();
                } else {
                /*R.layout.userdata_main、R.id.result_name, R.id.result_grade
                这里的是我登录页面里面有个测试框用来显示数据库中符合输入的用户名的结果的 
                等会写在下面把 只有一个userdata_main.xml */
                    SimpleAdapter simpleAdapter= new SimpleAdapter(LoginActivity.this, resultList,
                            R.layout.userdata_main, new String[]{"username", "password"}, new int[]{R.id.result_name, R.id.result_grade});
                    //将适配器和测试的listview关联,我这里的listview叫test_text        
                    test_text.setAdapter(simpleAdapter);

                    //查到了用户 对比输入的密码与数据库的密码是否一致 如果相等跳转到主页面去
                    if(etpassword.equals(dbpassword)){
                        Toast.makeText(LoginActivity.this,"登陆成功!",Toast.LENGTH_SHORT).show();
                        //跳转到Mainactivity
                        Intent intent=new Intent(LoginActivity.this,MainActivity.class);
                        startActivity(intent);
                        //关闭登录页面
                        LoginActivity.this.finish();
                    }else{
                        Toast.makeText(LoginActivity.this,"密码错误!",Toast.LENGTH_SHORT).show();
                    }
                };
            }
        });
    }
    /*正则化验证手机号码*/
    public static boolean isTelPhoneNumber(String mobile) {
        if (mobile != null && mobile.length() == 11) {
            Pattern pattern = Pattern.compile("^1[3|4|5|6|7|8|9][0-9]\\d{8}$");
            Matcher matcher = pattern.matcher(mobile);
            return matcher.matches();
        }else{
            return false;
        }
    }
    //定义初始化
    private void initView(){
        btn_login=findViewById(R.id.btn_login);
        et_userName=findViewById(R.id.et_username);
        et_password=findViewById(R.id.et_password);
    }

//    //重写onDestroy()方法
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (dbOpenHelper != null) {
            dbOpenHelper.close();
        }
    }
}

6.这里是我登录页面上最下面有个测试窗口布局调用的这个XML,
(这个窗口是用来显示,输入框输入的用户名与之匹配的数据库的结果的)userdata_main.XML(res文件夹–右键–new–layoutxml)

<?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">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/result_name"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/result_grade"/>
    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
</LinearLayout>
tips:要设置下点进APP就是Login登录页面哦在AndroidManifest.XML里面
 <activity
            android:name=".LoginActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            />
/*注意!!!这里同时要把mainactivity的exported属性改为false 并删除<intent-filter>属性*/
		   <activity
		    android:name=".MainActivity" 
            android:exported="false"/>

登录注册的所有内容都在这里啦!码字不易,来过的点个赞吧!
还有还有,Android新手一枚,实现的功能比较简单,也有很多问题还没考虑到,
有什么意见欢迎多多指教,有什么问题也欢迎留在评论区沟通交流哦!
下一篇:点击查看商城主页面底部导航栏的创建:使用Bottom Navigation Activity+Fragment+ViewPager实现底部导航栏
相关文章:
Android开发----实现应用启动页
Android开发----ViewPager实现广告轮播图
Android商城开发----点击左侧分类实现右侧更新为对应的商品列表
RecyclerView设置点击选中更改背景颜色 这里是更改选中效果
Android商城开发----点击加入购物车,购物车商品的增删减文章来源地址https://www.toymoban.com/news/detail-779643.html

到了这里,关于Android开发----实现登录注册页面(创建本地数据库,对注册的账户密码进行存储)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • arkTS开发鸿蒙OS应用(登录页面实现,连接数据库)

    喜欢的朋友可在抖音、小红书、微信公众号、哔哩哔哩搜索“淼学派对”。知乎搜索“编程淼”。

    2024年03月24日
    浏览(36)
  • Android studio 编写一个登录页面,并且具有注册功能

    1、创建登录界面,点击注册按钮,弹出注册窗口。 2、创建注册窗口,输入用户名和密码,在SQLite中存储用户名和密码。 3、注册成功,跳转到登录界面,进行登录。 4、注册成功,把用户名和密码保存到SharedPreferences中,登录时自动填充用户名和密码。           登录页

    2023年04月08日
    浏览(43)
  • Android Studio心得-创建登录注册项目

            首先先了解AndroidStudio是什么:Android Studio是一个由谷歌开发的Android应用程序开发环境,用于开发Android应用程序。它基于JetBrains IntelliJIDEA软件,并包含了许多定制化功能,包括易于使用的分析工具、内存分析工具和代码编辑器等,支持Java、Kotlin等多种编程语言。An

    2024年02月05日
    浏览(50)
  • 前端注册登录页面数据库交互(h5+css+php+mysql+axios)

    一个登录注册界面,并使用前端数据库实现登陆注册功能  首先是index.html 直接在index.html里面写了用axios,实现注册和登录 效果图 登录注册滑动实现 script.js style.css 然后是登录和注册的php login.php register.php

    2024年02月11日
    浏览(34)
  • HTML实现简单注册登录页面

    以下两个页面均只用HTML实现(其中注册若要添加号码与后面的登录密码判断,涉及到javascript的内容,本文只使用了html,后续会加上这些内容) 简单注册:(读者可以自行增加图片以及其他属性) 登录:    

    2024年02月11日
    浏览(36)
  • Android开发 登录注册设计

    用Android Studio 简单的实现登录注册 目录 一、登录界面 activity_login.xml 布局代码: login.java 代码:  二、注册界面  activity_register.xml布局代码: register.java 代码: 三、修改密码(忘记密码 ?) activity_update_password.xml布局代码: UpdatePassword.java 代码: 四、SQLite 与 SharedPreferences 

    2024年02月08日
    浏览(32)
  • 【安卓app开发一】Android Studio + Bmob后端云实现注册&登录账号、密码找回、意见反馈及数据可视化

    目录 前言 概览 Bmob后端云介绍 Bmob后端云与Android Studio配置 一、Bmob后端云  二、Android Studio配置 工具类 一、User类 二、Suit类 三、Code类 实现类  一、登录代码  二、注册代码  三、找回密码代码  四、想法反馈代码         本项目尚在开发阶段,主要针对的是安卓用户,通

    2024年02月08日
    浏览(47)
  • 登录和注册页面 - 验证码功能的实现

    目录 1. 生成验证码 2. 将本地验证码发布成 URL 3. 后端返回验证码的 URL 给前端 4. 前端将用户输入的验证码传给后端 5. 后端验证验证码 使用hutool 工具生成验证码. 1.1 添加 hutool 验证码依赖 1.2 创建验证码的控制器  application.propertities 中添加验证码保存路径 ( 末尾一定要带斜杆

    2024年02月15日
    浏览(28)
  • 使用Android Studio创建第一个小项目(登录页面)

    仅供参考,学习使用 我这里了就直接创建一个模块了 然后选择Empty Activity 接下来直接点finish 我没有艺术细胞,所以画的比较差,大家不要介意 点击下面我图片的箭头处 然后点击split ####删掉我图片中的内容 然后点回design 点击旁边的TextView,拖动到方框中来 接着我们让这个

    2024年02月07日
    浏览(45)
  • Node.js连接数据库 实现注册、登录、判断注册

    Node.js连接数据库实现注册,登录,在登录时检测账号是否进行注册。 此创建文件夹可以不是使用Vue-cli进行创建,只是简单创建文件夹便可。 使用npm进行mysql插件的安装,cmd黑窗口运行下列指令 此指令运行完成,文件夹根目录出现 node_modules 文件 黑窗口运行 npm init 指令,出现

    2024年02月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包