Android利用sqlite制作简单登录界面

Android利用sqlite制作简单登录界面

最近学了一波android,自己尝试做了一波登录界面,分享出来,请求各位大佬不吝斧正

简单需求如下:

需求描述

界面展示:

主页面
注销界面
注册界面

核心代码段:

帮助类MyDatabaseHelper.class:
package com.example.androidlogin;

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

import androidx.annotation.Nullable;

public class MyDatabaseHelper extends SQLiteOpenHelper {
    public MyDatabaseHelper(@Nullable LoginActivity context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, null, version);
    }
    public MyDatabaseHelper(@Nullable LogoutActivity context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, null, version);
    }
    public MyDatabaseHelper(@Nullable RegisterActivity context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, null, version);
    }
    public static final String usertable="create table usertable("
            +"_id Varchar(10) primary key,"
            +"password Varchar(10))";
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(usertable);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("drop table if exists usertable");
        onCreate(db);
    }
}

登录逻辑代码:

package com.example.androidlogin;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
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;

import java.util.List;

public class LoginActivity<useraccount> extends Activity {
    private Button zhuxiao;
    private Button denglu;
    private Button zhuche;
    private EditText useraccount;
    private EditText password;
    private MyDatabaseHelper dbhelper;

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

        dbhelper=new MyDatabaseHelper(this,"user.db",null,1);
        final SQLiteDatabase db=dbhelper.getWritableDatabase();

        Button zhuxiao = (Button) findViewById(R.id.zhuxiao);
        Button denglu = (Button) findViewById(R.id.denglu);
        Button zhuche = (Button) findViewById(R.id.zhuche);
        final EditText useraccount = (EditText) findViewById(R.id.account);
        final EditText password = (EditText) findViewById(R.id.pwd);

        denglu.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                String password_check=password.getText().toString();
                String usercount = useraccount.getText().toString();
                String passwordcheck = null;
                if (usercount == null||"".equals(usercount)) {
                    Toast.makeText(LoginActivity.this,"请输入账号!",Toast.LENGTH_SHORT).show();
                }
                else {
                    Cursor cursor=db.rawQuery("select password from usertable where _id=?",new String[]{usercount});
                    while (cursor.moveToNext()) {
                        passwordcheck=cursor.getString(0);
                    }
                    cursor.close();
                    if(password_check.equals(passwordcheck)){
                        Intent choose=new Intent(LoginActivity.this,ChooseActivity.class);
                        startActivity(choose);
                    }
                    else{
                        Toast.makeText(LoginActivity.this,"密码不正确",Toast.LENGTH_SHORT).show();
                    }

                }
            }
        });
        zhuxiao.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent zhu_xiao=new Intent(LoginActivity.this,LogoutActivity.class);
                startActivity(zhu_xiao);
            }
        });
        zhuche.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent zhu_che=new Intent(LoginActivity.this,RegisterActivity.class);
                startActivity(zhu_che);
            }
        });
    }
}

注销逻辑代码:

package com.example.androidlogin;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
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 LogoutActivity extends Activity {
    private MyDatabaseHelper dbhelper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_logout);

        Button querenzhuxiao=(Button)findViewById(R.id.queren_zhuxiao);
        final EditText zhuxiaoaccount=(EditText)findViewById(R.id.zhuxiao_account);
        dbhelper=new MyDatabaseHelper(this,"user.db",null,1);
        final SQLiteDatabase db=dbhelper.getWritableDatabase();

        querenzhuxiao.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v) {
                String zxaccount=zhuxiaoaccount.getText().toString();
                String zx_account=null;
                if(zxaccount==null||"".equals(zxaccount)){
                    Toast.makeText(LogoutActivity.this,"请输入账号",Toast.LENGTH_SHORT).show();
                }
                else {
                    Cursor cursor=db.rawQuery("select _id from usertable where _id=?",new String[]{zxaccount});
                    while (cursor.moveToNext()) {
                        zx_account=cursor.getString(0);
                    }
                    cursor.close();
                    if(zxaccount.equals(zx_account)){
                        db.execSQL("delete from usertable where _id=?",new String[]{zxaccount});
                        db.close();
                        Toast.makeText(LogoutActivity.this,"已成功注销账号,请返回登录界面!",Toast.LENGTH_SHORT).show();
                    }
                    else {
                        Toast.makeText(LogoutActivity.this,"该账号不存在",Toast.LENGTH_SHORT).show();
                    }
                }
            }
        });
    }
}

注册界面:

package com.example.androidlogin;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
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 RegisterActivity extends Activity {
    private MyDatabaseHelper dbhelper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        final EditText usercount=(EditText)findViewById(R.id.account);
        final EditText password=(EditText)findViewById(R.id.pwd);
        Button querenzhuche=(Button)findViewById(R.id.queren_zhuche);

        dbhelper=new MyDatabaseHelper(this,"user.db",null,1);
        final SQLiteDatabase db=dbhelper.getWritableDatabase();

        querenzhuche.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String useraccount=usercount.getText().toString();
                String passwod=password.getText().toString();
                String useraccount_check=null;
                if(useraccount==null||"".equals(useraccount))
                    Toast.makeText(RegisterActivity.this,"请输入账号",Toast.LENGTH_SHORT).show();
                else {
                    Cursor cursor=db.rawQuery("select _id from usertable where _id=?",new String[]{useraccount});
                    while (cursor.moveToNext()) {
                        useraccount_check=cursor.getString(0);
                    }
                    cursor.close();
                    if(useraccount.equals(useraccount_check))
                        Toast.makeText(RegisterActivity.this,"账号已注册,请重新输入",Toast.LENGTH_SHORT).show();
                    else {
                        db.execSQL("insert into usertable values(?,?)",new String[]{useraccount,passwod});
                        db.close();
                        Toast.makeText(RegisterActivity.this,"已成功注册,请返回登陆界面登录!",Toast.LENGTH_SHORT).show();

                    }

                }

            }
        });
    }
}

本需求主要问题是 如何取出后台数据与当前输入数据比较 ,也就是说如何实现 if…else…结构。

我再贴一个布局文件,其他两个布局文件可参考着做

<?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:background="@drawable/login_background"
    <!--使界面上方的工程名和背景留白透明,如果这样做要记得修改活动逻辑代码中要继承Activity而不是AppCompatActivity-->
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    tools:context=".LoginActivity"

    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="欢迎使用"
        android:textSize="50dp"
        android:textColor="#6eaae8"
        android:gravity="center"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginTop="150dp"
        android:gravity="center">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center"
            android:layout_marginTop="20dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingLeft="5dp"
                android:textColor="#000000"
                android:text="账号:" />

            <EditText
                android:layout_width="220dp"
                android:layout_height="wrap_content"
                android:inputType="none"
                android:singleLine="true"
                android:id="@+id/account"
                android:layout_marginLeft="20dp"
                android:hint="请输入账号"
                android:gravity="center_horizontal"
                android:background="@drawable/round_box"/>
        </LinearLayout>

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

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="5dp"
                android:text="密码:"
                android:textColor="#000000"/>

            <EditText
                android:id="@+id/pwd"
                android:layout_width="220dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:hint="请输入密码"
                android:gravity="center_horizontal"
                android:background="@drawable/round_box"
                android:inputType="textPassword"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center"
            android:layout_marginTop="20dp">

            <Button
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:background="@drawable/button"
                android:layout_marginRight="50dp"
                android:id="@+id/zhuxiao"
                android:gravity="center"
                android:hint="去注销"/>

            <Button
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:id="@+id/denglu"
                android:background="@drawable/button"
                android:text="登录"/>

            <Button
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:hint="去注册"
                android:id="@+id/zhuche"
                android:background="@drawable/button"
                android:layout_marginLeft="50dp"
                android:gravity="center" />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>
  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio 登陆注册界面的代码含义可能因具体实现而有所不同,但一般包括以下内容: 1. 布局文件:XML 文件中定义了登陆注册界面的布局,包括各种 View 组件的位置、大小和样式等属性。 2. Activity 类:Java 或 Kotlin 代码中实现了登陆注册界面的逻辑,包括处理用户输入、响应按钮点击事件、调用后端接口等。 3. 数据库操作:如果需要保存用户信息,可能需要使用 SQLite 数据库或其他数据库技术进行数据存储和读取。 4. 网络请求:如果需要与服务器进行通信,可能需要使用 Retrofit、Volley 或其他网络请求库进行 HTTP 请求和响应的处理。 5. 加密算法:为了保护用户密码等敏感信息,可能需要使用加密算法进行数据加密和解密处理。 总之,Android Studio 登陆注册界面的代码含义主要涉及 UI 布局、页面逻辑、数据存储、网络请求和数据安全等方面。 ### 回答2: Android Studio的登陆注册界面代码主要涉及用户身份验证和账户管理功能。在用户打开该界面时,可以通过输入账号和密码来验证用户的身份。 1. 首先,在代码中会定义两个EditText控件,用于输入账号和密码。通过findViewById()方法获取对应的视图控件。 2. 接下来,我们需要定义一个Button控件,用于点击登录和注册。同样,我们通过findViewById()方法获取对应的视图控件。 3. 在注册按钮点击事件中,我们会获取EditText中输入的账号和密码,并进行合法性检查,确保账号和密码都符合预设的规则。 4. 如果账号和密码合法,我们将会使用SharedPreferences或者将数据存储至数据库中,将新注册的账号和密码保存下来,供登录时使用。 5. 每次用户登录时,点击登录按钮的事件中,我们会将用户输入的账号和密码与之前注册的账号和密码进行匹配。如果匹配成功,则登录成功,进入主界面;如果匹配失败,则提示用户账号或密码错误。 6. 登录成功后,我们可以将用户的账号和密码保存在本地,以便下次登录时可以自动填充账号和密码。 7. 对于忘记密码的情况,可以设置找回密码按钮,点击按钮后会要求用户输入注册时使用的邮箱或手机号码等信息,然后向用户发送邮件或短信等方式重置密码。 8. 登录注册界面代码也可以进行界面美化,例如配置登录背景图片、添加动画效果等,以提升用户体验。 总体来说,登录注册界面代码主要是为用户提供了账号注册和登录的功能,通过编辑和检查账号以及密码的合法性,确保用户身份的安全和准确性。同时,也提供了找回密码功能,方便用户在遗忘账号或密码时进行重置。 ### 回答3: Android Studio 登录注册界面代码含义如下: 1. 布局文件(XML):布局文件用于定义界面的组件以及其排列方式,通过设置不同的属性来控制布局的样式和行为。 2. 控件(Widgets):界面的组件,如文本框、按钮、图片等,用于接收用户的输入或展示相关信息。 3. ID(id):每个控件都有一个唯一的ID,用来在代码中找到并操作具体的控件。 4. String 资源文件(res/values/strings.xml):用于存放界面中显示的文本信息,通过给文本设置ID,可以方便地在代码中进行调用和修改。 5. Intent(显式和隐式):通过Intent实现不同界面间的跳转,可以通过指定目标界面的类名(显式)或者Action和Category(隐式)来启动对应的界面。 6. 点击事件(onClick):为按钮等控件设置的监听器,通过触发点击事件来执行相应的操作,如验证用户的输入信息等。 7. Shared Preferences:用于存储简单的键值对数据,可以通过SharedPreferences对象来读取和修改数据,实现用户信息的保存和读取。 8. 数据验证:通过正则表达式等方法对用户输入的数据进行验证,确保数据的合法性。 9. 网络请求:通过网络请求库(如Volley、OkHttp等)实现与服务器的数据交互,如登录验证、注册等操作。 10. 数据库操作:通过SQLite等数据库技术实现数据的增删改查功能,用于存储用户注册信息等。 以上是Android Studio 登录注册界面代码的一些常见含义,通过这些代码可以实现用户界面的设计和交互功能,以及与服务器或本地数据库的数据交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值