用户登录注册界面开发及用户信息管理案例详解

       刚开始接触Android编程,这算是我写的第一个简单工程,主要功能有:用户登录、注册、注销、修改密码、记住密码共5个基本操作,其内容涉及到以下几点:

       1:Button,TextView,TextEdit,ImageView,RatioButton等基本控件的使用;

       2:多个Activities之间的切换;

       3:使用Android本地数据库来管理用户信息。

       实现上述功能的主要参考资料:CSDN博客之星郭霖大牛写的《第一行代码—Android》,个人比较喜欢看纸质的资料,所以买了这本书,大牛的博客主页链接http://my.csdn.net/sinyu890807。其次是参考了网上的一个用户登录注册的程序,在此基础上按照自己的需求慢慢添加完善一些功能,并且将原来的单个avtivity换用多个activity实现,UI设计也更加漂亮美观。

        先上几个图【我在android6.0.1的真机上调试的】:

        下面是用户登录和用户注册界面。

       

       下面是用户密码修改和个人中心界面。

       

一、工程代码

        整个工程是在Android Studio 2.1.1环境下实现的,源码下载链接在末尾给出,下面是工程目录:          
        这里先贴出各个布局文件.xml,各个类内容和各个activity代码:

1:几个界面布局文件.xml

        login.xml【登录界面】
<?xml version="1.0" encoding="utf-8"?>            
        register.xml【注册界面】
<?xml version="1.0" encoding="utf-8"?>                
        resetpwd.xml【修改密码界面】
<?xml version="1.0" encoding="utf-8"?>                
        user.xml【个人中心】
<?xml version="1.0" encoding="utf-8"?>        

2:用户数据管理的类

       UserData.java 【用户数据
package com.example.foolishfan.user_v10;public class UserData {    private String userName;                  //用户名    private String userPwd;                   //用户密码    private int userId;                       //用户ID号    public int pwdresetFlag=0;    //获取用户名    public String getUserName() {             //获取用户名        return userName;    }    //设置用户名    public void setUserName(String userName) {  //输入用户名        this.userName = userName;    }    //获取用户密码    public String getUserPwd() {                //获取用户密码        return userPwd;    }    //设置用户密码    public void setUserPwd(String userPwd) {     //输入用户密码        this.userPwd = userPwd;    }    //获取用户id    public int getUserId() {                   //获取用户ID号        return userId;    }    //设置用户id    public void setUserId(int userId) {       //设置用户ID号        this.userId = userId;    }    public UserData(String userName, String userPwd) {  //这里只采用用户名和密码        super();        this.userName = userName;        this.userPwd = userPwd;    }}
       UserDataManager.java【用户管理】
package com.example.foolishfan.user_v10;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;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";//    public static final String SILENT = "silent";//    public static final String VIBRATE = "vibrate";    private static final int DB_VERSION = 2;    private Context mContext = null;    //创建用户book表    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;    }}

3:具体操作的实现代码,即各个activity

        Login.java【用户登录activity】
package com.example.foolishfan.user_v10;import android.app.Activity;import android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.CheckBox;import android.widget.EditText;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;public class Login extends Activity {                 //登录界面活动    public int pwdresetFlag=0;    private EditText mAccount;                        //用户名编辑    private EditText mPwd;                            //密码编辑    private Button mRegisterButton;                   //注册按钮    private Button mLoginButton;                      //登录按钮    private Button mCancleButton;                     //注销按钮    private CheckBox mRememberCheck;    private SharedPreferences login_sp;    private String userNameValue,passwordValue;    private View loginView;                           //登录    private View loginSuccessView;    private TextView loginSuccessShow;    private TextView mChangepwdText;    private UserDataManager mUserDataManager;         //用户数据管理类    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.login);        //通过id找到相应的控件        mAccount = (EditText) findViewById(R.id.login_edit_account);        mPwd = (EditText) findViewById(R.id.login_edit_pwd);        mRegisterButton = (Button) findViewById(R.id.login_btn_register);        mLoginButton = (Button) findViewById(R.id.login_btn_login);        mCancleButton = (Button) findViewById(R.id.login_btn_cancle);        loginView=findViewById(R.id.login_view);        loginSuccessView=findViewById(R.id.login_success_view);        loginSuccessShow=(TextView) findViewById(R.id.login_success_show);        mChangepwdText = (TextView) findViewById(R.id.login_text_change_pwd);        mRememberCheck = (CheckBox) findViewById(R.id.Login_Remember);        login_sp = getSharedPreferences("userInfo", 0);        String name=login_sp.getString("USER_NAME", "");        String pwd =login_sp.getString("PASSWORD", "");        boolean choseRemember =login_sp.getBoolean("mRememberCheck", false);        boolean choseAutoLogin =login_sp.getBoolean("mAutologinCheck", false);        //如果上次选了记住密码,那进入登录页面也自动勾选记住密码,并填上用户名和密码        if(choseRemember){            mAccount.setText(name);            mPwd.setText(pwd);            mRememberCheck.setChecked(true);        }        mRegisterButton.setOnClickListener(mListener);                      //采用OnClickListener方法设置不同按钮按下之后的监听事件        mLoginButton.setOnClickListener(mListener);        mCancleButton.setOnClickListener(mListener);        mChangepwdText.setOnClickListener(mListener);        ImageView image = (ImageView) findViewById(R.id.logo);             //使用ImageView显示logo        image.setImageResource(R.drawable.logo);        if (mUserDataManager == null) {            mUserDataManager = new UserDataManager(this);            mUserDataManager.openDataBase();                              //建立本地数据库        }    }    OnClickListener mListener = new OnClickListener() {                  //不同按钮按下的监听事件选择        public void onClick(View v) {            switch (v.getId()) {                case R.id.login_btn_register:                            //登录界面的注册按钮                    Intent intent_Login_to_Register = new Intent(Login.this,Register.class) ;    //切换Login Activity至User Activity                    startActivity(intent_Login_to_Register);                    finish();                    break;                case R.id.login_btn_login:                              //登录界面的登录按钮                    login();                    break;                case R.id.login_btn_cancle:                             //登录界面的注销按钮                    cancel();                    break;                case R.id.login_text_change_pwd:                             //登录界面的注销按钮                    Intent intent_Login_to_reset = new Intent(Login.this,Resetpwd.class) ;    //切换Login Activity至User Activity                    startActivity(intent_Login_to_reset);                    finish();                    break;            }        }    };    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(Login.this,User.class) ;    //切换Login Activity至User 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();  //登录失败提示            }        }    }    public void cancel() {           //注销        if (isUserNameAndPwdValid()) {            String userName = mAccount.getText().toString().trim();    //获取当前输入的用户名和密码信息            String userPwd = mPwd.getText().toString().trim();            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);            if(result==1){                                             //返回1说明用户名和密码均正确                Toast.makeText(this, getString(R.string.cancel_success),Toast.LENGTH_SHORT).show();//注销成功提示                mPwd.setText("");                mAccount.setText("");                mUserDataManager.deleteUserDatabyname(userName);            }else if(result==0){                Toast.makeText(this, getString(R.string.cancel_fail),Toast.LENGTH_SHORT).show();  //注销失败提示            }        }    }    public boolean isUserNameAndPwdValid() {        if (mAccount.getText().toString().trim().equals("")) {            Toast.makeText(this, getString(R.string.account_empty),                    Toast.LENGTH_SHORT).show();            return false;        } else if (mPwd.getText().toString().trim().equals("")) {            Toast.makeText(this, getString(R.string.pwd_empty),                    Toast.LENGTH_SHORT).show();            return false;        }        return true;    }    @Override    protected void onResume() {        if (mUserDataManager == null) {            mUserDataManager = new UserDataManager(this);            mUserDataManager.openDataBase();        }        super.onResume();    }    @Override    protected void onDestroy() {        super.onDestroy();    }    @Override    protected void onPause() {        if (mUserDataManager != null) {            mUserDataManager.closeDataBase();            mUserDataManager = null;        }        super.onPause();    }}
       Register.java【用户注册activity】
package com.example.foolishfan.user_v10;import android.app.Activity;import android.content.Intent;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 Register extends AppCompatActivity {    private EditText mAccount;                        //用户名编辑    private EditText mPwd;                            //密码编辑    private EditText mPwdCheck;                       //密码编辑    private Button mSureButton;                       //确定按钮    private Button mCancelButton;                     //取消按钮    private UserDataManager mUserDataManager;         //用户数据管理类    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.register);        mAccount = (EditText) findViewById(R.id.resetpwd_edit_name);        mPwd = (EditText) findViewById(R.id.resetpwd_edit_pwd_old);        mPwdCheck = (EditText) findViewById(R.id.resetpwd_edit_pwd_new);        mSureButton = (Button) findViewById(R.id.register_btn_sure);        mCancelButton = (Button) findViewById(R.id.register_btn_cancel);        mSureButton.setOnClickListener(m_register_Listener);      //注册界面两个按钮的监听事件        mCancelButton.setOnClickListener(m_register_Listener);        if (mUserDataManager == null) {            mUserDataManager = new UserDataManager(this);            mUserDataManager.openDataBase();                              //建立本地数据库        }    }    View.OnClickListener m_register_Listener = new View.OnClickListener() {    //不同按钮按下的监听事件选择        public void onClick(View v) {            switch (v.getId()) {                case R.id.register_btn_sure:                       //确认按钮的监听事件                    register_check();                    break;                case R.id.register_btn_cancel:                     //取消按钮的监听事件,由注册界面返回登录界面                    Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;    //切换User Activity至Login Activity                    startActivity(intent_Register_to_Login);                    finish();                    break;            }        }    };    public void register_check() {                                //确认按钮的监听事件        if (isUserNameAndPwdValid()) {            String userName = mAccount.getText().toString().trim();            String userPwd = mPwd.getText().toString().trim();            String userPwdCheck = mPwdCheck.getText().toString().trim();            //检查用户是否存在            int count=mUserDataManager.findUserByName(userName);            //用户已经存在时返回,给出提示文字            if(count>0){                Toast.makeText(this, getString(R.string.name_already_exist, userName),Toast.LENGTH_SHORT).show();                return ;            }            if(userPwd.equals(userPwdCheck)==false){     //两次密码输入不一样                Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();                return ;            } else {                UserData mUser = new UserData(userName, userPwd);                mUserDataManager.openDataBase();                long flag = mUserDataManager.insertUserData(mUser); //新建用户信息                if (flag == -1) {                    Toast.makeText(this, getString(R.string.register_fail),Toast.LENGTH_SHORT).show();                }else{                    Toast.makeText(this, getString(R.string.register_success),Toast.LENGTH_SHORT).show();                    Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;    //切换User Activity至Login Activity                    startActivity(intent_Register_to_Login);                    finish();                }            }        }    }    public boolean isUserNameAndPwdValid() {        if (mAccount.getText().toString().trim().equals("")) {            Toast.makeText(this, getString(R.string.account_empty),                    Toast.LENGTH_SHORT).show();            return false;        } else if (mPwd.getText().toString().trim().equals("")) {            Toast.makeText(this, getString(R.string.pwd_empty),                    Toast.LENGTH_SHORT).show();            return false;        }else if(mPwdCheck.getText().toString().trim().equals("")) {            Toast.makeText(this, getString(R.string.pwd_check_empty),                    Toast.LENGTH_SHORT).show();            return false;        }        return true;    }}
        Resetpwd.java【重新设置密码】
package com.example.foolishfan.user_v10;import android.app.Activity;import android.content.Intent;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.RelativeLayout;import android.widget.Toast;public class Resetpwd extends AppCompatActivity {    private EditText mAccount;                        //用户名编辑    private EditText mPwd_old;                        //密码编辑    private EditText mPwd_new;                        //密码编辑    private EditText mPwdCheck;                       //密码编辑    private Button mSureButton;                       //确定按钮    private Button mCancelButton;                     //取消按钮    private UserDataManager mUserDataManager;         //用户数据管理类    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.resetpwd);        mAccount = (EditText) findViewById(R.id.resetpwd_edit_name);        mPwd_old = (EditText) findViewById(R.id.resetpwd_edit_pwd_old);        mPwd_new = (EditText) findViewById(R.id.resetpwd_edit_pwd_new);        mPwdCheck = (EditText) findViewById(R.id.resetpwd_edit_pwd_check);        mSureButton = (Button) findViewById(R.id.resetpwd_btn_sure);        mCancelButton = (Button) findViewById(R.id.resetpwd_btn_cancel);        mSureButton.setOnClickListener(m_resetpwd_Listener);      //注册界面两个按钮的监听事件        mCancelButton.setOnClickListener(m_resetpwd_Listener);        if (mUserDataManager == null) {            mUserDataManager = new UserDataManager(this);            mUserDataManager.openDataBase();                              //建立本地数据库        }    }    View.OnClickListener m_resetpwd_Listener = new View.OnClickListener() {    //不同按钮按下的监听事件选择        public void onClick(View v) {            switch (v.getId()) {                case R.id.resetpwd_btn_sure:                       //确认按钮的监听事件                    resetpwd_check();                    break;                case R.id.resetpwd_btn_cancel:                     //取消按钮的监听事件,由注册界面返回登录界面                    Intent intent_Resetpwd_to_Login = new Intent(Resetpwd.this,Login.class) ;    //切换Resetpwd Activity至Login Activity                    startActivity(intent_Resetpwd_to_Login);                    finish();                    break;            }        }    };    public void resetpwd_check() {                                //确认按钮的监听事件        if (isUserNameAndPwdValid()) {            String userName = mAccount.getText().toString().trim();            String userPwd_old = mPwd_old.getText().toString().trim();            String userPwd_new = mPwd_new.getText().toString().trim();            String userPwdCheck = mPwdCheck.getText().toString().trim();            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd_old);            if(result==1){                                             //返回1说明用户名和密码均正确,继续后续操作                if(userPwd_new.equals(userPwdCheck)==false){           //两次密码输入不一样                    Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();                    return ;                } else {                    UserData mUser = new UserData(userName, userPwd_new);                    mUserDataManager.openDataBase();                    boolean flag = mUserDataManager.updateUserData(mUser);                    if (flag == false) {                        Toast.makeText(this, getString(R.string.resetpwd_fail),Toast.LENGTH_SHORT).show();                    }else{                        Toast.makeText(this, getString(R.string.resetpwd_success),Toast.LENGTH_SHORT).show();                        mUser.pwdresetFlag=1;                        Intent intent_Register_to_Login = new Intent(Resetpwd.this,Login.class) ;    //切换User Activity至Login Activity                        startActivity(intent_Register_to_Login);                        finish();                    }                }            }else if(result==0){                                       //返回0说明用户名和密码不匹配,重新输入                Toast.makeText(this, getString(R.string.pwd_not_fit_user),Toast.LENGTH_SHORT).show();                return;            }        }    }    public boolean isUserNameAndPwdValid() {        String userName = mAccount.getText().toString().trim();        //检查用户是否存在        int count=mUserDataManager.findUserByName(userName);        //用户不存在时返回,给出提示文字        if(count<=0){            Toast.makeText(this, getString(R.string.name_not_exist, userName),Toast.LENGTH_SHORT).show();            return false;        }        if (mAccount.getText().toString().trim().equals("")) {            Toast.makeText(this, getString(R.string.account_empty),Toast.LENGTH_SHORT).show();            return false;        } else if (mPwd_old.getText().toString().trim().equals("")) {            Toast.makeText(this, getString(R.string.pwd_empty),Toast.LENGTH_SHORT).show();            return false;        } else if (mPwd_new.getText().toString().trim().equals("")) {            Toast.makeText(this, getString(R.string.pwd_new_empty),Toast.LENGTH_SHORT).show();            return false;        }else if(mPwdCheck.getText().toString().trim().equals("")) {            Toast.makeText(this, getString(R.string.pwd_check_empty),Toast.LENGTH_SHORT).show();            return false;        }        return true;    }}
       User.java【用户个人中心】
package com.example.foolishfan.user_v10;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class User extends AppCompatActivity {    private Button mReturnButton;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.user);        mReturnButton = (Button)findViewById(R.id.returnback);    }    public void back_to_login(View view) {        Intent intent3 = new Intent(User.this,Login.class) ;        startActivity(intent3);        finish();    }}

二、功能分析

       上面工程涉及到的这些内容,在网上有很多写的很有参考价值的资料,建议可单独熟悉各个部分内容,然后添加功能到已有代码基础上,由于好多天后才整理的博客,缺少很多刚学习时遇到的种种错误及其解决方法,细节之处还望多交流。

<1>:Button,TextView,TextEdit,ImageView,RatioButton等基本控件的使用
<2>:多个Activities之间的切换
<3>:使用Android本地数据库来管理用户信息

1:登录功能

       通过登录按钮的监听事件实现登录,登录过程中需要判断用户名是否存在,密码是否正确,核心函数:
    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(Login.this,User.class) ;                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();  //登录失败提示            }        }    }

2:注册功能

       登录界面上点击注册按钮,进入对应监听事件,直接实现从Login的Activity到Register的Activity的跳转,然后在Register的Activity上实现用户注册,核心函数:

    public void register_check() {                                //确认按钮的监听事件        if (isUserNameAndPwdValid()) {            String userName = mAccount.getText().toString().trim();            String userPwd = mPwd.getText().toString().trim();            String userPwdCheck = mPwdCheck.getText().toString().trim();            //检查用户是否存在           int count=mUserDataManager.findUserByName(userName);            //用户已经存在时返回,给出提示文字            if(count>0){                Toast.makeText(this, getString(R.string.name_already_exist, userName),Toast.LENGTH_SHORT).show();                return ;            }            if(userPwd.equals(userPwdCheck)==false){     //两次密码输入不一样                Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();                return ;            } else {                UserData mUser = new UserData(userName, userPwd);                mUserDataManager.openDataBase();                long flag = mUserDataManager.insertUserData(mUser); //新建用户信息                if (flag == -1) {                    Toast.makeText(this, getString(R.string.register_fail),Toast.LENGTH_SHORT).show();                }else{                    Toast.makeText(this, getString(R.string.register_success),Toast.LENGTH_SHORT).show();                    Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;                      startActivity(intent_Register_to_Login);                    finish();                }            }        }    }

3:修改密码功能

      在登录界面点击“修改密码”即可进入对应的Resetpwd的Activity,实现用户密码的修改,核心函数:

    public void resetpwd_check() {                                //确认按钮的监听事件        if (isUserNameAndPwdValid()) {            String userName = mAccount.getText().toString().trim();            String userPwd_old = mPwd_old.getText().toString().trim();            String userPwd_new = mPwd_new.getText().toString().trim();            String userPwdCheck = mPwdCheck.getText().toString().trim();            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd_old);            if(result==1){                                             //返回1说明用户名和密码均正确,继续后续操作                if(userPwd_new.equals(userPwdCheck)==false){           //两次密码输入不一样                    Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();                    return ;                } else {                    UserData mUser = new UserData(userName, userPwd_new);                    mUserDataManager.openDataBase();                    boolean flag = mUserDataManager.updateUserData(mUser);                    if (flag == false) {                        Toast.makeText(this, getString(R.string.resetpwd_fail),Toast.LENGTH_SHORT).show();                    }else{                        Toast.makeText(this, getString(R.string.resetpwd_success),Toast.LENGTH_SHORT).show();                        mUser.pwdresetFlag=1;                        Intent intent_Register_to_Login = new Intent(Resetpwd.this,Login.class) ;                            startActivity(intent_Register_to_Login);                        finish();                    }                }            }else if(result==0){                                       //返回0说明用户名和密码不匹配,重新输入                Toast.makeText(this, getString(R.string.pwd_not_fit_user),Toast.LENGTH_SHORT).show();                return;            }        }    }

4:注销功能

       注销功能直接在登录界面,当用户名和密码均正确时,点击注销按钮将直接注销用户【各位可根据需求将注销放在个人中心里面进行操作】。核心函数:

    public void cancel() {           //注销        if (isUserNameAndPwdValid()) {            String userName = mAccount.getText().toString().trim();    //获取当前输入的用户名和密码信息            String userPwd = mPwd.getText().toString().trim();            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);            if(result==1){                                             //返回1说明用户名和密码均正确                Toast.makeText(this, getString(R.string.cancel_success),Toast.LENGTH_SHORT).show();//登录成功提示                mPwd.setText("");                mAccount.setText("");                mUserDataManager.deleteUserDatabyname(userName);            }else if(result==0){                Toast.makeText(this, getString(R.string.cancel_fail),Toast.LENGTH_SHORT).show();  //登录失败提示            }        }    }

5:记住密码

       当记住密码的RadioButton为真时,系统将记住此时用户登录的信息,用户在下次登录时可避免再次输入用户名和密码的麻烦,实现细节在Login的Activity中。这里给一个大牛用SharedPreferences做的记住密码连接:这里 


三、工程源码下载

       
        初学不久,工程代码中可能存在一些bug,望各位不吝指出,有个bug测试出来了,就是在记住密码之后对该账户进行密码修改后返回登录界面,此时记住的密码为原来的密码,不可登陆,我相信这个小bug是难不到你们的,^_^。         例程源码User_V2.0

更多相关文章

  1. Android菜鸟的成长笔记(3)——给QQ登录界面说So Easy
  2. Android(安卓)xutils 登录 注册
  3. 我的Android进阶之旅------>Android视频录制小例子
  4. Android回调——Android模块化编程
  5. Android修行之路——Dialog
  6. Android(安卓)按钮添加单击事件
  7. Android官方入门文档[6]添加Action按钮
  8. Android(安卓)之 AlertDialog 用户登录
  9. SeekBar

随机推荐

  1. fwrite函数的一般调用形式是什么?
  2. c语言的输入函数有哪些
  3. c语言提供的合法的数据类型关键字是什么
  4. 用c语言编写的程序需要用什么程序翻译后
  5. strncmp函数用法是什么
  6. c程序的执行是从什么开始到什么结束?
  7. c语言如何求最大值
  8. c语言提供的合法的数据类型关键字是什么?
  9. 对c语言的认识和想法是什么
  10. c语言console.WriteLine什么意思?