Android小白练习:登陆、注册

前言:学生时代的练习,放出来见见太阳!!!

登录注册(一)sqlite

之前开发曾经用Sqlite 写过登陆注册 ,回顾一下

创建一个UserData 

编写UserDataManager 通过sqllite 写数据库的一些基本操作管理数据 如插入、更新、删除 等等

在Loginactivity 里写一些 login 的函数 进行调用  只需要将参数传进去 调用函数方法 判断返回值结果

整体上 就是java 数据库的那一套逻辑 只是把数据库对象 换成了

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

public class UserDataManager {
    //一些宏定义和声明
    private static final String TAG = "UserDataManager";
    private static final String DB_NAME = "user_data";
    private static final String TABLE_NAME = "users";
    public static final String ID = "_id";
    public static final String USER_NAME = "user_name";
    public static final String USER_PWD = "user_pwd";

    private static final int DB_VERSION = 2;
    private Context mContext = null;

    //创建用户表
    private static final String DB_CREATE = "CREATE TABLE " + TABLE_NAME + " ("
            + ID + " integer primary key," + USER_NAME + " varchar,"
            + USER_PWD + " varchar" + ");";

    private SQLiteDatabase mSQLiteDatabase = null;
    private DataBaseManagementHelper mDatabaseHelper = null;

    //DataBaseManagementHelper继承自SQLiteOpenHelper
    private static class DataBaseManagementHelper extends SQLiteOpenHelper {

        DataBaseManagementHelper(Context context) {
            super(context, DB_NAME, null, DB_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            Log.i(TAG,"db.getVersion()="+db.getVersion());
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME + ";");
            db.execSQL(DB_CREATE);
            Log.i(TAG, "db.execSQL(DB_CREATE)");
            Log.e(TAG, DB_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.i(TAG, "DataBaseManagementHelper onUpgrade");
            onCreate(db);
        }
    }

    public UserDataManager(Context context) {
        mContext = context;
        Log.i(TAG, "UserDataManager construction!");
    }
    //打开数据库
    public void openDataBase() throws SQLException {
        mDatabaseHelper = new DataBaseManagementHelper(mContext);
        mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();
    }
    //关闭数据库
    public void closeDataBase() throws SQLException {
        mDatabaseHelper.close();
    }
    //添加新用户,即注册
    public long insertUserData(UserData userData) {
        String userName=userData.getUserName();
        String userPwd=userData.getUserPwd();
        ContentValues values = new ContentValues();
        values.put(USER_NAME, userName);
        values.put(USER_PWD, userPwd);
        return mSQLiteDatabase.insert(TABLE_NAME, ID, values);
    }
    //更新用户信息,如修改密码
    public boolean updateUserData(UserData userData) {
        //int id = userData.getUserId();
        String userName = userData.getUserName();
        String userPwd = userData.getUserPwd();
        ContentValues values = new ContentValues();
        values.put(USER_NAME, userName);
        values.put(USER_PWD, userPwd);
        return mSQLiteDatabase.update(TABLE_NAME, values,null, null) > 0;
        //return mSQLiteDatabase.update(TABLE_NAME, values, ID + "=" + id, null) > 0;
    }
    //
    public Cursor fetchUserData(int id) throws SQLException {
        Cursor mCursor = mSQLiteDatabase.query(false, TABLE_NAME, null, ID
                + "=" + id, null, null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }
    //
    public Cursor fetchAllUserDatas() {
        return mSQLiteDatabase.query(TABLE_NAME, null, null, null, null, null,
                null);
    }
    //根据id删除用户
    public boolean deleteUserData(int id) {
        return mSQLiteDatabase.delete(TABLE_NAME, ID + "=" + id, null) > 0;
    }
    //根据用户名注销
    public boolean deleteUserDatabyname(String name) {
        return mSQLiteDatabase.delete(TABLE_NAME, USER_NAME + "=" + name, null) > 0;
    }
    //删除所有用户
    public boolean deleteAllUserDatas() {
        return mSQLiteDatabase.delete(TABLE_NAME, null, null) > 0;
    }

    //
    public String getStringByColumnName(String columnName, int id) {
        Cursor mCursor = fetchUserData(id);
        int columnIndex = mCursor.getColumnIndex(columnName);
        String columnValue = mCursor.getString(columnIndex);
        mCursor.close();
        return columnValue;
    }
    //
    public boolean updateUserDataById(String columnName, int id,
                                      String columnValue) {
        ContentValues values = new ContentValues();
        values.put(columnName, columnValue);
        return mSQLiteDatabase.update(TABLE_NAME, values, ID + "=" + id, null) > 0;
    }
    //根据用户名找用户,可以判断注册时用户名是否已经存在
    public int findUserByName(String userName){
        Log.i(TAG,"findUserByName , userName="+userName);
        int result=0;
        Cursor mCursor=mSQLiteDatabase.query(TABLE_NAME, null, USER_NAME+"="+userName, null, null, null, null);
        if(mCursor!=null){
            result=mCursor.getCount();
            mCursor.close();
            Log.i(TAG,"findUserByName , result="+result);
        }
        return result;
    }
    //根据用户名和密码找用户,用于登录
    public int findUserByNameAndPwd(String userName,String pwd){
        Log.i(TAG,"findUserByNameAndPwd");
        int result=0;
        Cursor mCursor=mSQLiteDatabase.query(TABLE_NAME, null, USER_NAME+"="+userName+" and "+USER_PWD+"="+pwd,
                null, null, null, null);
        if(mCursor!=null){
            result=mCursor.getCount();
            mCursor.close();
            Log.i(TAG,"findUserByNameAndPwd , result="+result);
        }
        return result;
    }

}
public void login() {                                              //登录按钮监听事件
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();    //获取当前输入的用户名和密码信息
            String userPwd = mPwd.getText().toString().trim();
            SharedPreferences.Editor editor =login_sp.edit();
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);
            if(result==1){                                             //返回1说明用户名和密码均正确
                //保存用户名和密码
                editor.putString("USER_NAME", userName);
                editor.putString("PASSWORD", userPwd);

                //是否记住密码
                if(mRememberCheck.isChecked()){
                    editor.putBoolean("mRememberCheck", true);
                }else{
                    editor.putBoolean("mRememberCheck", false);
                }
                editor.commit();

                Intent intent = new Intent(LoginActivity.this,MainActivity.class) ;    //切换Login Activity至Main Activity
                startActivity(intent);
                finish();
                Toast.makeText(this, getString(R.string.login_success),Toast.LENGTH_SHORT).show();//登录成功提示
            }else if(result==0){
                Toast.makeText(this, getString(R.string.login_fail),Toast.LENGTH_SHORT).show();  //登录失败提示
            }
        }
    }

但是因为sqlite是Android 内置的的小型数据库,我决定将登陆、功能改为 用Bomb 后端云的方式 重新编写 整个数据的情况会更加明了,同时个人决定 为Android 端 搭建一个Java web 是管理员平台 ,这样公用一个云数据库 ,就可以轻松管理 用户以及其他数据源

这个就是为了学习理解sqlite 做练习学习用的 如果可以希望集成 GreenDao 这个开源框架,开发很方便。

详情见:https://greenrobot.org/greendao/

github:  https://github.com/greenrobot/greenDAO

 

登录注册(二)Bomb

用Bomb后端云实现注册、登陆,真是非常容易 本来想用 手机验证的方式 做登陆的,鉴于学生 ,没有经费,不想买短信条,所以换成简单。我用的Android studio开发环境 Bomb 真是很好用,感激。

    private void login() {
        String uName=mAccount.getText().toString();
        String uPwd=mPwd.getText().toString();

        MyUser myUser=new MyUser();
        myUser.setUsername(uName);
        myUser.setPassword(uPwd);
        myUser.login(new SaveListener<MyUser>() {

            @Override
            public void done(MyUser myUser, BmobException e) {
                if(e==null){
                    Toast.makeText(LoginActivity.this, getString(R.string.login_success),Toast.LENGTH_SHORT).show();//登录成功提示
                    Intent intent = new Intent(LoginActivity.this,MainActivity.class) ;    //切换Login Activity至Main Activity
                    startActivity(intent);
                    finish();
                }else {
                    Toast.makeText(LoginActivity.this, getString(R.string.login_fail),Toast.LENGTH_SHORT).show();  //登录失败提示
                }
            }
        });
        
    }
    private void userRegister() {
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString();
            String userPwd = mPwd.getText().toString();
            String userPwdCheck = mPwdCheck.getText().toString();

            if(userPwd.equals(userPwdCheck)==false){     //两次密码输入不一样
                Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();
                return ;
            } else {

                MyUser myUser=new MyUser();
                myUser.setUsername(userName);
                myUser.setPassword(userPwd);
                myUser.signUp(new SaveListener<MyUser>() {

                    @Override
                    public void done(MyUser myUser, BmobException e) {
                        if (e==null){
                            Toast.makeText(RegisterActivity.this, getString(R.string.register_success),Toast.LENGTH_SHORT).show();
                        Intent intent_Register_to_Login = new Intent(RegisterActivity.this,LoginActivity.class) ;    //切换User Activity至Login Activity
                        startActivity(intent_Register_to_Login);
                        finish();
                    }else {
                            Toast.makeText(RegisterActivity.this, getString(R.string.register_fail),Toast.LENGTH_SHORT).show();
                        }
                    }
                });

            }

        }

    }

相当于Sqlite 的真的是简单,方便啊,都给写完了!! 发现别人背景图 挺好看的,拿来用了

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的 Android Studio 登录注册界面的代码示例: 1. activity_login.xml ```xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="60dp" android:text="Login" android:textSize="30sp" android:textStyle="bold" android:layout_centerHorizontal="true"/> <EditText android:id="@+id/editTextEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/textView" android:layout_marginTop="40dp" android:hint="Email" android:inputType="textEmailAddress" android:padding="10dp" android:textColor="#000000" android:textSize="20sp" /> <EditText android:id="@+id/editTextPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/editTextEmail" android:layout_marginTop="20dp" android:hint="Password" android:inputType="textPassword" android:padding="10dp" android:textColor="#000000" android:textSize="20sp" /> <Button android:id="@+id/buttonLogin" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/editTextPassword" android:layout_marginTop="20dp" android:background="#009688" android:padding="10dp" android:text="LOGIN" android:textAllCaps="false" android:textColor="#ffffff" android:textSize="20sp" /> <TextView android:id="@+id/textViewRegister" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/buttonLogin" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:text="Don't have an account? Register now!" android:textColor="#000000" android:textSize="16sp" /> </RelativeLayout> ``` 2. activity_register.xml ```xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="60dp" android:text="Register" android:textSize="30sp" android:textStyle="bold" android:layout_centerHorizontal="true"/> <EditText android:id="@+id/editTextName" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/textView" android:layout_marginTop="40dp" android:hint="Name" android:inputType="text" android:padding="10dp" android:textColor="#000000" android:textSize="20sp" /> <EditText android:id="@+id/editTextEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/editTextName" android:layout_marginTop="20dp" android:hint="Email" android:inputType="textEmailAddress" android:padding="10dp" android:textColor="#000000" android:textSize="20sp" /> <EditText android:id="@+id/editTextPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/editTextEmail" android:layout_marginTop="20dp" android:hint="Password" android:inputType="textPassword" android:padding="10dp" android:textColor="#000000" android:textSize="20sp" /> <Button android:id="@+id/buttonRegister" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/editTextPassword" android:layout_marginTop="20dp" android:background="#009688" android:padding="10dp" android:text="REGISTER" android:textAllCaps="false" android:textColor="#ffffff" android:textSize="20sp" /> <TextView android:id="@+id/textViewLogin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/buttonRegister" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:text="Already have an account? Login now!" android:textColor="#000000" android:textSize="16sp" /> </RelativeLayout> ``` 3. LoginActivity.java ```java import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class LoginActivity extends AppCompatActivity { private EditText editTextEmail, editTextPassword; private Button buttonLogin; private TextView textViewRegister; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); editTextEmail = findViewById(R.id.editTextEmail); editTextPassword = findViewById(R.id.editTextPassword); buttonLogin = findViewById(R.id.buttonLogin); textViewRegister = findViewById(R.id.textViewRegister); buttonLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String email = editTextEmail.getText().toString().trim(); String password = editTextPassword.getText().toString().trim(); if (email.isEmpty()) { editTextEmail.setError("Email is required"); editTextEmail.requestFocus(); return; } if (password.isEmpty()) { editTextPassword.setError("Password is required"); editTextPassword.requestFocus(); return; } if (email.equals("example@gmail.com") && password.equals("12345")) { startActivity(new Intent(LoginActivity.this, MainActivity.class)); } else { Toast.makeText(LoginActivity.this, "Invalid email or password", Toast.LENGTH_SHORT).show(); } } }); textViewRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(LoginActivity.this, RegisterActivity.class)); } }); } } ``` 4. RegisterActivity.java ```java import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class RegisterActivity extends AppCompatActivity { private EditText editTextName, editTextEmail, editTextPassword; private Button buttonRegister; private TextView textViewLogin; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); editTextName = findViewById(R.id.editTextName); editTextEmail = findViewById(R.id.editTextEmail); editTextPassword = findViewById(R.id.editTextPassword); buttonRegister = findViewById(R.id.buttonRegister); textViewLogin = findViewById(R.id.textViewLogin); buttonRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name = editTextName.getText().toString().trim(); String email = editTextEmail.getText().toString().trim(); String password = editTextPassword.getText().toString().trim(); if (name.isEmpty()) { editTextName.setError("Name is required"); editTextName.requestFocus(); return; } if (email.isEmpty()) { editTextEmail.setError("Email is required"); editTextEmail.requestFocus(); return; } if (password.isEmpty()) { editTextPassword.setError("Password is required"); editTextPassword.requestFocus(); return; } Toast.makeText(RegisterActivity.this, "Registration successful", Toast.LENGTH_SHORT).show(); } }); textViewLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } } ``` 这是一个很简单的示例,你需要根据自己的需求来进行修改和完善。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南:-)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值