【鸿蒙】鸿蒙App应用-《记账软件》登录,注册,找回密码功能

这篇具有很好参考价值的文章主要介绍了【鸿蒙】鸿蒙App应用-《记账软件》登录,注册,找回密码功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.登录功能

从【鸿蒙】鸿蒙App应用-《记账软件》开发步骤欢迎引导页进入之后,完成登录功能。界面效果如图

【鸿蒙】鸿蒙App应用-《记账软件》登录,注册,找回密码功能

2.布局文件的搭建

在layout文件夹下新建xml文件,布局代码如下:

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:orientation="vertical">

    <Text
        ohos:height="match_content"
        ohos:background_element="#FFDA44"
        ohos:width="match_parent"
        ohos:text="登 录"
        ohos:padding="10fp"
        ohos:text_alignment="center"
        ohos:text_font="HwChinese-medium"
        ohos:text_weight="1200"
        ohos:text_color="#000"
        ohos:text_size="25fp"/>

    <DirectionalLayout
        ohos:height="match_content"
        ohos:width="match_parent"
        ohos:weight="2"
        ohos:orientation="vertical">

        <DirectionalLayout
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:alignment="vertical_center"
            ohos:background_element="$graphic:background_textfield"
            ohos:margin="20fp"
            ohos:orientation="horizontal">

            <Image
                ohos:height="50vp"
                ohos:width="50vp"
                ohos:image_src="$media:lr_ico_phone"
                ohos:left_margin="10vp"
                ohos:scale_mode="stretch"/>

            <TextField
                ohos:id="$+id:tv_user"
                ohos:height="match_content"
                ohos:width="match_parent"
                ohos:hint="手机号"
                ohos:text_input_type="pattern_number"
                ohos:hint_color="#aaaaaa"
                ohos:padding="15vp"
                ohos:text_color="#aaaaaa"
                ohos:text_size="20fp"/>

        </DirectionalLayout>

        <DirectionalLayout
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:alignment="vertical_center"
            ohos:background_element="$graphic:background_textfield"
            ohos:left_margin="20fp"
            ohos:orientation="horizontal"
            ohos:right_margin="20fp">

            <Image
                ohos:height="50vp"
                ohos:width="50vp"
                ohos:image_src="$media:lr_ico_pass"
                ohos:left_margin="10vp"
                ohos:scale_mode="stretch"/>

            <TextField
                ohos:id="$+id:tv_psd"
                ohos:height="match_content"
                ohos:width="match_parent"
                ohos:hint="账号密码"
                ohos:text_input_type="pattern_password"
                ohos:hint_color="#aaaaaa"
                ohos:padding="15vp"
                ohos:text_color="#aaaaaa"
                ohos:text_size="20fp"/>

        </DirectionalLayout>

        <Button
            ohos:id="$+id:btn_login"
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:background_element="$graphic:background_button_login"
            ohos:margin="20fp"
            ohos:padding="10fp"
            ohos:text="登录"
            ohos:text_color="#ffffff"
            ohos:text_size="25fp"
            />

        <DirectionalLayout
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:left_margin="20fp"
            ohos:orientation="horizontal"
            ohos:right_margin="20fp">

            <Text
                ohos:id="$+id:tv_register"
                ohos:height="match_content"
                ohos:width="match_content"
                ohos:text="注册"
                ohos:text_alignment="left"
                ohos:text_color="#FFDA44"
                ohos:text_size="20fp"
                ohos:weight="1"/>

            <Text
                ohos:id="$+id:tv_findpsd"
                ohos:height="match_content"
                ohos:width="match_content"
                ohos:text="找回密码"
                ohos:text_alignment="right"
                ohos:text_color="#FFDA44"
                ohos:text_size="20fp"
                ohos:weight="1"/>
        </DirectionalLayout>
    </DirectionalLayout>

    <DirectionalLayout
        ohos:height="match_content"
        ohos:width="match_parent"
        ohos:weight="1"
        ohos:orientation="vertical">
        <Text
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:text_size="20fp"
            ohos:text_alignment="center"
            ohos:text_color="#666"
            ohos:text="*第三方账号快速登录*"/>
        <DirectionalLayout
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:margin="30fp"
            ohos:alignment="horizontal_center"
            ohos:orientation="horizontal">

            <DirectionalLayout
                ohos:height="match_content"
                ohos:width="match_content"
                ohos:weight="1"
                ohos:alignment="center">
                <Image
                    ohos:height="60fp"
                    ohos:width="60fp"
                    ohos:scale_mode="stretch"
                    ohos:image_src="$media:loadweixin"/>
                <Text
                    ohos:height="match_content"
                    ohos:width="match_content"
                    ohos:text_size="20fp"
                    ohos:text="微信"/>
            </DirectionalLayout>
            <DirectionalLayout
                ohos:height="match_content"
                ohos:width="match_content"
                ohos:weight="1"
                ohos:alignment="center">
                <Image
                    ohos:height="60fp"
                    ohos:width="60fp"
                    ohos:scale_mode="stretch"
                    ohos:image_src="$media:qq"/>
                <Text
                    ohos:height="match_content"
                    ohos:width="match_content"
                    ohos:text_size="20fp"
                    ohos:text="QQ"/>
            </DirectionalLayout>
            <DirectionalLayout
                ohos:height="match_content"
                ohos:width="match_content"
                ohos:weight="1"
                ohos:alignment="center">
                <Image
                    ohos:height="60fp"
                    ohos:width="60fp"
                    ohos:scale_mode="stretch"
                    ohos:image_src="$media:weibo"/>
                <Text
                    ohos:height="match_content"
                    ohos:width="match_content"
                    ohos:text_size="20fp"
                    ohos:text="微博"/>
            </DirectionalLayout>

        </DirectionalLayout>

    </DirectionalLayout>

</DirectionalLayout>

 在graphic文件夹中新建background_button_login.xml文件,用于控制登录按钮的显示样式

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:shape="rectangle">
    <corners
        ohos:radius="20"
        />
    <solid
        ohos:color="#FFE3C33F"/>
</shape>

 在graphic文件夹中新建background_textfield.xml文件,用于控制手机号和密码输入框的边框样式

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:shape="rectangle">
    <corners
        ohos:radius="20"
        />
    <solid
        ohos:color="#FFffff"/>
    <stroke
        ohos:color="#FFDA44"
        ohos:width="10"/>
</shape>

 结合当前组件和资源图片文本搭建登陆页面的布局,主题以黄色为主。

3.创建LoginAbilitySlice类完成登录功能

在src文件夹下的包中新建登录的界面,并继承至BaseAilitySlice基类。

加载布局之后,定义initView方法,初始化这些组件的对象。

/**
     * 初始化组件
     */
    private void initView() {
        tv_user= (Text) this.findComponentById(ResourceTable.Id_tv_user);
        tv_findpsd= (Text) this.findComponentById(ResourceTable.Id_tv_findpsd);
        tv_psd= (Text) this.findComponentById(ResourceTable.Id_tv_psd);
        tv_register= (Text) this.findComponentById(ResourceTable.Id_tv_register);
        btn_login= (Button) this.findComponentById(ResourceTable.Id_btn_login);
        tv_register.setClickedListener(listener);
        tv_findpsd.setClickedListener(listener);
        btn_login.setClickedListener(listener);
    }

设置登录按钮,注册,找回密码的监听事件

private Component.ClickedListener listener =new Component.ClickedListener() {
        @Override
        public void onClick(Component component) {
            switch (component.getId()){
                case ResourceTable.Id_btn_login:
                    //登录按钮
                    String name=tv_user.getText();
                    String psd=tv_psd.getText();
                    Map map=new HashMap();
                    map.put("phone",name);
                    map.put("psd",psd);
                    User user= DBUtil.getInstance(rs).login("tb_user",map);
                    if (user==null)
                        showToastDialogShort("登录失败");
                    else {
                        showToastDialogShort("登录成功");
                        CommonUtil.user=user;
                        present(new MainAbilitySlice(),new Intent());
                        terminate();
                    }
                    break;
                case ResourceTable.Id_tv_register:
                    //注册
                    present(new RegisterAilitySlice(),new Intent());
                    break;
                case ResourceTable.Id_tv_findpsd:
                    //找回密码
                    break;
            }
        }
    };

完整代码如下:

package com.example.bookkeepproject.slice;

import com.example.bookkeepproject.ResourceTable;
import com.example.bookkeepproject.entity.User;
import com.example.bookkeepproject.utils.CommonUtil;
import com.example.bookkeepproject.utils.DBUtil;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.agp.components.Text;

import java.util.HashMap;
import java.util.Map;

/**
 * 主子界面
 */
public class LoginAbilitySlice extends BaseAbilitySlice {
    private Text tv_user,tv_psd,tv_register,tv_findpsd;
    private Button btn_login;
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_login);
        initView();
    }

    /**
     * 初始化组件
     */
    private void initView() {
        tv_user= (Text) this.findComponentById(ResourceTable.Id_tv_user);
        tv_findpsd= (Text) this.findComponentById(ResourceTable.Id_tv_findpsd);
        tv_psd= (Text) this.findComponentById(ResourceTable.Id_tv_psd);
        tv_register= (Text) this.findComponentById(ResourceTable.Id_tv_register);
        btn_login= (Button) this.findComponentById(ResourceTable.Id_btn_login);
        tv_register.setClickedListener(listener);
        tv_findpsd.setClickedListener(listener);
        btn_login.setClickedListener(listener);
    }

    private Component.ClickedListener listener =new Component.ClickedListener() {
        @Override
        public void onClick(Component component) {
            switch (component.getId()){
                case ResourceTable.Id_btn_login:
                    //登录按钮
                    String name=tv_user.getText();
                    String psd=tv_psd.getText();
                    Map map=new HashMap();
                    map.put("phone",name);
                    map.put("psd",psd);
                    User user= DBUtil.getInstance(rs).login("tb_user",map);
                    if (user==null)
                        showToastDialogShort("登录失败");
                    else {
                        showToastDialogShort("登录成功");
                        CommonUtil.user=user;
                        present(new MainAbilitySlice(),new Intent());
                        terminate();
                    }
                    break;
                case ResourceTable.Id_tv_register:
                    //注册
                    present(new RegisterAilitySlice(),new Intent());
                    break;
                case ResourceTable.Id_tv_findpsd:
                    //找回密码
                    break;
            }
        }
    };

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

 4.定义用户实体类

完成登录功能需要获得当前登录的用户的个人信息,并进行存储。

package com.example.bookkeepproject.entity;

public class User {
    private int id;
    private String name;
    private String psd;
    private String phone;
    private String sex;
    private int age;

    public User(int id, String name, String psd, String phone, String sex, int age) {
        this.id = id;
        this.name = name;
        this.psd = psd;
        this.phone = phone;
        this.sex = sex;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", psd='" + psd + '\'' +
                ", phone='" + phone + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPsd() {
        return psd;
    }

    public void setPsd(String psd) {
        this.psd = psd;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

 5.创建Sqlite关系型数据库

新建一个工具包Utils,在该包下存放整个项目需要用的工具类,这里需要创建数据库工具类以及执行sql的工具类

5.1创建数据库工具类

在utils包下新建MyHelper类继承至RdbOpenCallback类,实现抽象类中为实现的方法。

package com.example.bookkeepproject.utils;

import ohos.app.Context;
import ohos.data.DatabaseHelper;
import ohos.data.preferences.Preferences;
import ohos.data.rdb.RdbOpenCallback;
import ohos.data.rdb.RdbStore;
import ohos.data.rdb.StoreConfig;

/**
 * 创建sqlite数据库的辅助类
 */
public class MyHelper extends RdbOpenCallback {
    DatabaseHelper db;
    private RdbStore rs;
    private static MyHelper helper;
    private Preferences preferences;
    // id,name,info,type
    private String tb_user = "create table tb_user(id Integer primary key autoincrement,name,phone,psd,sex,age)";
    //支出,收入类型,具体支出,收入来源,来源的图片,年,月,日,金额,备注信息
    private String tb_jz = "create table tb_jz(id Integer primary key autoincrement,userid,type,subtype,image,year,month,day,money,info)";
    //单例设计模式
    public static RdbStore getInstance(Context context,String DBName){
        if (helper==null)
            helper=new MyHelper(context,DBName);
        return helper.rs;

    }

    public static Preferences getInstance(String fileName,Context context){
        if (helper==null)
            helper=new MyHelper(fileName,context);
        return helper.preferences;

    }

    public MyHelper(String fileName,Context context) {
        db=new DatabaseHelper(context);
        preferences=db.getPreferences(fileName);
    }

    public MyHelper(Context context,String DBName) {
        db=new DatabaseHelper(context);
        //创建数据库
        StoreConfig config=StoreConfig.newDefaultConfig(DBName);
        rs=db.getRdbStore(config,1,this,null);
    }

    @Override
    public void onCreate(RdbStore rdbStore) {
        //创建表
        rdbStore.executeSql(tb_user);
        rdbStore.executeSql(tb_jz);
        rdbStore.executeSql("insert into tb_user(name,phone,psd,sex,age) values('1','1','1','1',1)");
    }

    @Override
    public void onUpgrade(RdbStore rdbStore, int i, int i1) {
        System.out.println("版本已更新");
    }
}

必须实现构造方法,以及创建数据库的方法和版本更新的方法

5.2 创建执行sql操作类

在utils包中新建DBUtil工具类,并采用单例模式减少对象的重复创建而导致影响软件运行速度。

package com.example.bookkeepproject.utils;

import com.example.bookkeepproject.entity.BookKeepInfo;
import com.example.bookkeepproject.entity.User;
import ohos.app.Context;
import ohos.data.rdb.RdbPredicates;
import ohos.data.rdb.RdbStore;
import ohos.data.rdb.ValuesBucket;
import ohos.data.resultset.ResultSet;

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

/**
 * 数据库工具类
 */
public class DBUtil {
    public static DBUtil db;
    private static RdbStore rs;

    //单例设计模式
    public static DBUtil getInstance(RdbStore rs) {
        if (db == null)
            db = new DBUtil();
        DBUtil.rs = rs;
        return db;
    }


   

    /**
     * 登录功能
     *
     * @param tableName
     * @param map
     * @return
     */
    public User login(String tableName, Map<String, Object> map) {
        User user = null;
        //定义要查询的字段数组
        String[] columns = new String[]{"id", "name", "age", "phone", "sex", "psd"};
        //设置要查询的表,以及查询的条件
        RdbPredicates rdbPredicates = new RdbPredicates(tableName);
        for (Map.Entry<String, Object> e : map.entrySet()) {
            rdbPredicates.equalTo(e.getKey(), (String) e.getValue());
        }
        ResultSet resultSet = rs.query(rdbPredicates, columns);
        if (resultSet.goToNextRow()) {
            int id = resultSet.getInt(resultSet.getColumnIndexForName("id"));
            String name = resultSet.getString(resultSet.getColumnIndexForName("name"));
            String psd = resultSet.getString(resultSet.getColumnIndexForName("psd"));
            String phone = resultSet.getString(resultSet.getColumnIndexForName("phone"));
            String sex = resultSet.getString(resultSet.getColumnIndexForName("sex"));
            int age = resultSet.getInt(resultSet.getColumnIndexForName("age"));
            user = new User(id, name, psd, phone, sex, age);
        }
        return user;
    }


}

6.注册功能

通过从登录的界面点击“注册”进行页面跳转至注册界面,完成注册的功能操作。

【鸿蒙】鸿蒙App应用-《记账软件》登录,注册,找回密码功能

6.1新建注册页面的xml布局文件

 在layout文件夹中新建xml文件,布局代码如下:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    >

    <DirectionalLayout
        ohos:height="match_content"
        ohos:width="match_parent"
        ohos:orientation="vertical">

        <Text
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:background_element="#FFDA44"
            ohos:padding="10fp"
            ohos:text="注 册"
            ohos:text_alignment="center"
            ohos:text_color="#000"
            ohos:text_font="HwChinese-medium"
            ohos:text_size="25fp"
            ohos:text_weight="1200"/>

        <DirectionalLayout
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:alignment="vertical_center"
            ohos:background_element="$graphic:background_textfield"
            ohos:left_margin="20fp"
            ohos:right_margin="20fp"
            ohos:top_margin="10fp"
            ohos:bottom_margin="10fp"
            ohos:orientation="horizontal">

            <TextField
                ohos:id="$+id:re_user"
                ohos:height="match_content"
                ohos:width="match_parent"
                ohos:hint="用户名"
                ohos:hint_color="#aaaaaa"
                ohos:padding="15vp"
                ohos:text_color="#aaaaaa"
                ohos:text_size="20fp"/>

        </DirectionalLayout>

        <DirectionalLayout
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:alignment="vertical_center"
            ohos:background_element="$graphic:background_textfield"
            ohos:left_margin="20fp"
            ohos:right_margin="20fp"
            ohos:top_margin="10fp"
            ohos:bottom_margin="10fp"
            ohos:orientation="horizontal">

            <TextField
                ohos:id="$+id:re_psd"
                ohos:height="match_content"
                ohos:width="match_parent"
                ohos:hint="密码"
                ohos:text_input_type="pattern_password"
                ohos:hint_color="#aaaaaa"
                ohos:padding="15vp"
                ohos:text_color="#aaaaaa"
                ohos:text_size="20fp"/>

        </DirectionalLayout>

        <DirectionalLayout
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:alignment="vertical_center"
            ohos:background_element="$graphic:background_textfield"
            ohos:left_margin="20fp"
            ohos:right_margin="20fp"
            ohos:top_margin="10fp"
            ohos:bottom_margin="10fp"
            ohos:orientation="horizontal">

            <TextField
                ohos:id="$+id:re_phone"
                ohos:height="match_content"
                ohos:width="match_parent"
                ohos:hint="手机号"
                ohos:hint_color="#aaaaaa"
                ohos:text_input_type="pattern_number"
                ohos:padding="15vp"
                ohos:text_color="#aaaaaa"
                ohos:text_size="20fp"/>

        </DirectionalLayout>


        <DirectionalLayout
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:alignment="vertical_center"
            ohos:background_element="$graphic:background_textfield"
            ohos:left_margin="20fp"
            ohos:right_margin="20fp"
            ohos:top_margin="10fp"
            ohos:bottom_margin="10fp"
            ohos:orientation="horizontal">


            <TextField
                ohos:id="$+id:re_age"
                ohos:height="match_content"
                ohos:width="match_parent"
                ohos:hint="年龄"
                ohos:text_input_type="pattern_number"
                ohos:hint_color="#aaaaaa"
                ohos:padding="15vp"
                ohos:text_color="#aaaaaa"
                ohos:text_size="20fp"/>

        </DirectionalLayout>


        <DirectionalLayout
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:alignment="vertical_center"
            ohos:background_element="$graphic:background_textfield"
            ohos:left_margin="20fp"
            ohos:right_margin="20fp"
            ohos:top_margin="10fp"
            ohos:bottom_margin="10fp"
            ohos:orientation="horizontal">

            <TextField
                ohos:id="$+id:re_sex"
                ohos:height="match_content"
                ohos:width="match_parent"
                ohos:hint="性别"
                ohos:hint_color="#aaaaaa"
                ohos:padding="15vp"
                ohos:text_color="#aaaaaa"
                ohos:text_size="20fp"/>

        </DirectionalLayout>


        <DirectionalLayout
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:alignment="vertical_center"
            ohos:background_element="$graphic:background_textfield"
            ohos:left_margin="20fp"
            ohos:right_margin="20fp"
            ohos:top_margin="10fp"
            ohos:bottom_margin="10fp"
            ohos:orientation="horizontal">

            <TextField
                ohos:id="$+id:re_code"
                ohos:height="match_content"
                ohos:width="match_content"
                ohos:hint="验证码"
                ohos:hint_color="#aaaaaa"
                ohos:padding="15vp"
                ohos:text_color="#aaaaaa"
                ohos:text_size="20fp"
                ohos:weight="1"/>

            <Text
                ohos:id="$+id:tv_code"
                ohos:height="50fp"
                ohos:width="80fp"
                ohos:text="1234"
                ohos:text_color="#FFDA44"
                ohos:text_font="HwChinese-medium"
                ohos:text_size="25fp"
                ohos:text_weight="1000"/>

        </DirectionalLayout>


        <Button
            ohos:id="$+id:btn_register"
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:background_element="$graphic:background_button_login"
            ohos:left_margin="20fp"
            ohos:right_margin="20fp"
            ohos:top_margin="10fp"
            ohos:bottom_margin="10fp"
            ohos:padding="10fp"
            ohos:text="注册"
            ohos:text_color="#ffffff"
            ohos:text_size="25fp"
            />

    </DirectionalLayout>
</ScrollView>

6.2创建RegisterAbilitySlice界面

在slice包中新建AbilitySlice类继承至BaseAbilitySlice类,代码如下:

package com.example.bookkeepproject.slice;

import com.example.bookkeepproject.ResourceTable;
import com.example.bookkeepproject.utils.DBUtil;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.agp.components.Text;
import ohos.agp.components.TextField;
import ohos.data.rdb.ValuesBucket;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class RegisterAilitySlice extends BaseAbilitySlice {
    private TextField re_user,re_psd,re_phone,re_age,re_sex,re_code;
    private Text tv_code;
    private Button btn_register;
    private int code;
    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        this.setUIContent(ResourceTable.Layout_ability_register);
        initView();
        showRandomCode();
    }

    private void initView() {
        re_age= (TextField) this.findComponentById(ResourceTable.Id_re_age);
        re_user= (TextField) this.findComponentById(ResourceTable.Id_re_user);
        re_psd= (TextField) this.findComponentById(ResourceTable.Id_re_psd);
        re_phone= (TextField) this.findComponentById(ResourceTable.Id_re_phone);
        re_sex= (TextField) this.findComponentById(ResourceTable.Id_re_sex);
        re_code= (TextField) this.findComponentById(ResourceTable.Id_re_code);
        tv_code= (Text) this.findComponentById(ResourceTable.Id_tv_code);
        btn_register= (Button) this.findComponentById(ResourceTable.Id_btn_register);
        tv_code.setClickedListener(listener);
        btn_register.setClickedListener(listener);
    }
    private Component.ClickedListener listener=new Component.ClickedListener() {
        @Override
        public void onClick(Component component) {
            switch (component.getId()){
                case ResourceTable.Id_tv_code:
                    showRandomCode();
                    break;
                case ResourceTable.Id_btn_register:
                    String user=re_user.getText();
                    String psd=re_psd.getText();
                    String phone=re_phone.getText();
                    String age=re_age.getText();
                    String sex=re_sex.getText();
                    String code=re_code.getText();
                    Map map=new HashMap();
                    map.put("phone",phone);
                    if (code==null||"".equals(code))
                        showToastDialogShort("验证码不能为空");
                    else if (!code.equals(String.valueOf(RegisterAilitySlice.this.code))) {
                        showToastDialogShort("验证码不正确");
                        showRandomCode();
                        re_code.setText("");
                    }else if(DBUtil.getInstance(rs).selectPhone("tb_user",map)){
                        showToastDialogShort("该手机号已被注册,请重新注册");
                        re_code.setText("");
                        re_age.setText("");
                        re_phone.setText("");
                        re_psd.setText("");
                        re_sex.setText("");
                        re_user.setText("");
                        showRandomCode();
                    }else {
                        ValuesBucket vb = new ValuesBucket();
                        vb.putString("name",user);
                        vb.putString("psd",psd);
                        vb.putString("phone",phone);
                        vb.putString("sex",sex);
                        vb.putInteger("age",Integer.parseInt(age));
                        long i= DBUtil.getInstance(rs).insert("tb_user",vb);
                        if (i>0) {
                            showToastDialogShort("注册成功");
                            terminate();
                        }else {
                            showToastDialogShort("注册失败");
                            re_code.setText("");
                            re_age.setText("");
                            re_phone.setText("");
                            re_psd.setText("");
                            re_sex.setText("");
                            re_user.setText("");
                            showRandomCode();
                        }
                    }
                    break;
            }
        }
    };

    private void showRandomCode() {
        code=new Random().nextInt(9000)+1000;
        tv_code.setText(code+"");
    }
}

6.3 完成数据库的数据添加操作

在DButils工具类中定义查询当前手机号是否存在,用于判断注册的时候出现相同手机号

 /**
     * 验证手机号是否已被注册
     *
     * @param tableName
     * @param map
     * @return
     */
    public boolean selectPhone(String tableName, Map<String, Object> map) {
        boolean is = false;
        //定义要查询的字段数组
        String[] columns = new String[]{"id", "name", "age", "phone", "sex", "psd"};
        //设置要查询的表,以及查询的条件
        RdbPredicates rdbPredicates = new RdbPredicates(tableName);
        for (Map.Entry<String, Object> e : map.entrySet()) {
            rdbPredicates.equalTo(e.getKey(), (String) e.getValue());
        }
        ResultSet resultSet = rs.query(rdbPredicates, columns);
        if (resultSet.goToNextRow())
            is = true;
        return is;
    }

在DBUtils工具类中定义执行插入数据的操作方法

 //添加
    public long insert(String tableName, ValuesBucket vb) {
        return rs.insert(tableName, vb);
    }

点击注册的时候进行判断验证码是否一致,或者注册信息是否全面,如果不符合要求则清空用户填写的所有数据,同时刷新验证码,重新注册,直到注册成功。注册成功后,销毁当前页面,回到上一页面,也就是登录页面,进行登录。登录成功后进入主页面。主界面效果图如下:

【鸿蒙】鸿蒙App应用-《记账软件》登录,注册,找回密码功能

主界面的功能将在后面的文章中展出,感谢大家的关注和阅读。文章来源地址https://www.toymoban.com/news/detail-471690.html

到了这里,关于【鸿蒙】鸿蒙App应用-《记账软件》登录,注册,找回密码功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vue项目实战——【基于 Vue3.x + Vant UI】实现一个多功能记账本(登录注册页面,验证码)

    系列内容 参考链接 基于 Vue3.x + Vant UI 的多功能记账本(一) 项目演示,涉及知识点 基于 Vue3.x + Vant UI 的多功能记账本(二) 搭建开发环境 基于 Vue3.x + Vant UI 的多功能记账本(三) 开发导航栏及公共部分 项目演示 Vue3 + Vant UI_多功能记账本 1、登录注册页面 页面设计,页面

    2024年02月03日
    浏览(68)
  • 电脑软件:office文档密码了怎么办,看完你就能自己找回了

    Word、Excel、PPT作为大家日常办公的使用最频繁的办公软件。对于一些涉及个人隐私或者涉及企业机密性的文档文件,我们经常会给自己的文档加上密码。 但有时候文档时间比较久了、或者密码太多了,有时候我们会把文档的密码给忘记了,如果密码忘记了怎么办,能找回来吗

    2024年02月08日
    浏览(49)
  • Android开发----实现登录注册页面(创建本地数据库,对注册的账户密码进行存储)

    写在前面: 本文实现了登录注册页面的开发,创建了本地数据库,存储注册的账户密码。注册账户为手机号,对账户为手机号进行了正则化验证。登录成功跳转至主页面。 20221028-实现登录注册功能 首先说一下,项目部署是在原有项目新建两个activity( 项目右键–new–activi

    2024年02月03日
    浏览(55)
  • 苹果iPhone手机APP应用图标隐藏怎么找回恢复显示在iPhone苹果手机桌面显示被隐藏的应用APP图标到iPhone苹果手机桌面?

    苹果iPhone手机APP应用图标隐藏怎么找回恢复显示在iPhone苹果手机桌面 1、如果使用的苹果iPhone手机APP应用图标被隐藏了,在手机桌面找不到只能通过搜索或APP资源库找到。 2、请在iPhone苹果手机负一屏或最后一屏的APP资源库找到被隐藏的APP应用图标长按后,选择添加到主屏幕;

    2024年02月13日
    浏览(63)
  • win10电脑开机绕过密码自动登录,微软官方提供修改注册表跳过登录设置方法

    有时候电脑异常重启,默认开机后由于必须登录导致很多开机启动项无法自动运行失去远程控制。 而且之前使用 netplwiz 用户账户设置自动登录的方法已经不能用了。 最新电脑自动登录设置方法: 计算机HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon 修改下面三个值

    2024年02月11日
    浏览(41)
  • Android Studio —— Activity组件(课后作业:登录和注册App)

    运行效果图   主界面(初始),注册界面,登录界面,主界面(注册和登录之后) 实现步骤 1.设计主界面,编写activity_main.xml 注:(1) 按钮的格式是自己设计的,如下 注:(2)需编写strings.xml 2.创建两个activity(会自动创建对应的layout布局文件)   3.设计登录和注册界面,编写

    2024年02月05日
    浏览(45)
  • Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

    在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的。最经典的就是密码了。如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的。 那么我们就需要对这些铭文进行加密。 现在市场是加密的方式已经

    2024年02月02日
    浏览(41)
  • [Kotlin]手把手教你写一个安卓APP(第一章注册登录)

    开发软件:Android Studio 1.创建项目默认选择Empty Activity                                                                      点击Next  2.生成项目设置包名选择开发语言(这里我用的是kotlin)  在生成项目后我们要做的就是添加需要的配置打开我们的app目录下的 buil

    2023年04月23日
    浏览(79)
  • arkTS开发鸿蒙OS应用(登录页面实现,连接数据库)

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

    2024年03月24日
    浏览(42)
  • 【uni-app2.0】实现登录页记住密码功能

    使用uni-app的 uni.setStorageSync() 和 uni.getStorageSync() 方法来存储和读取密码 在登录页中添加一个记住密码的 u-checkbox 选项,并在data里面添加一个 rememberPwd 的布尔值,在每次点击记住密码 change 的时候来记录用户的选择 在点击登录按钮执行的事件中,使用 uni.setStorageSync() 方法将【

    2024年02月15日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包