安全知识普及系统6

在使用sqlite之后,终于成功完成了数据的增删改查功能,于是实现了登录的逻辑以及修改密码、注册的功能

public class EnrollActivity extends AppCompatActivity {
    Dao dao = new Dao(EnrollActivity.this);

    private EditText mPhoneNum;
    private EditText mPsw1;
    private EditText mPsw2;
    private EditText mUserName;

    private Button mEnrollButton;

    private String phonenum;
    private String psw1;
    private String psw2;
    private String username;

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

        mPhoneNum = (EditText) findViewById(R.id.phonenum);
        mPsw1 = (EditText) findViewById(R.id.pwd1);
        mPsw2 = (EditText) findViewById(R.id.pwd2);
        mUserName = (EditText) findViewById(R.id.username);
        mEnrollButton = (Button) findViewById(R.id.enroll);


        mEnrollButton.setOnClickListener(view -> {
            phonenum = mPhoneNum.getText().toString().trim();
            psw1 = mPsw1.getText().toString().trim();
            psw2 = mPsw2.getText().toString().trim();
            username = mUserName.getText().toString().trim();


            if (dao.queryy(phonenum)){
                String info = "该手机号已被注册";
                Toast.makeText(EnrollActivity.this, info, Toast.LENGTH_SHORT).show();
            }else{
                if (psw1.equals(psw2)){
                    Log.i("EnrollActivity.",psw1+"确认:"+psw2);
                    dao.add(phonenum,psw1,username);
                    String info = "注册成功,返回登录界面";
                    Toast.makeText(EnrollActivity.this, info, Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(EnrollActivity.this,LoginActivity.class);
                    startActivity(intent);
                }
                if (psw1 != psw2){
                    String info = "两次输入密码不一致";
                    Toast.makeText(EnrollActivity.this, info, Toast.LENGTH_LONG).show();
                }
            }

        });

    }
}
public class LoginActivity extends AppCompatActivity {


    private EditText mphonenum;
    private EditText mPassword;
    private Button mButtonLogin;
    private Button mButtonEnroll;
    private Button mButtonUpdate;

    private String phonenum;
    private String password;

    //检验用户是否存在
    private String checkAccount(String phonenum, String userPasswd){
        String loginInfo = "";
        Dao dao = new Dao(LoginActivity.this);
        Log.i("LoginActivity",phonenum+"   密码"+userPasswd);
        String getpsw = dao.queryuserbyphone(phonenum);


        if (getpsw != null){
            if (getpsw.equals(userPasswd)){
                loginInfo = "登录成功";
                Toast.makeText(LoginActivity.this, loginInfo, Toast.LENGTH_SHORT).show();
            }else{
                loginInfo = "密码错误";
                Toast.makeText(LoginActivity.this, loginInfo, Toast.LENGTH_SHORT).show();
                mPassword.requestFocus();
            }
        }else {
            loginInfo = "用户不存在";
            Toast.makeText(LoginActivity.this, loginInfo, Toast.LENGTH_SHORT).show();
            mphonenum.requestFocus();
        }
        return loginInfo;
    }


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

        mphonenum = (EditText) findViewById(R.id.phonenumlogin);
        mPassword = (EditText) findViewById(R.id.password);
        mButtonLogin = findViewById(R.id.denglu);
        mButtonEnroll = findViewById(R.id.enroll);
        mButtonUpdate = findViewById(R.id.update);

        mButtonLogin.setOnClickListener(v->{
            phonenum = mphonenum.getText().toString().trim();
            password = mPassword.getText().toString().trim();
            String info = checkAccount(phonenum,password);
            if (info.equals("登录成功")){
                Toast.makeText(LoginActivity.this, info, Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(LoginActivity.this,MainPageActivity.class);
                startActivity(intent);
            }
        });

        mButtonEnroll.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                //跳转到注册界面
                Intent intent = new Intent(LoginActivity.this,EnrollActivity.class);
                startActivity(intent);
            }
        });

        mButtonUpdate.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                //跳转到修改密码界面
                Intent intent = new Intent(LoginActivity.this,UpdateActivity.class);
                startActivity(intent);
            }
        });
    }
}
public class UpdateActivity extends AppCompatActivity {
    private Context context;
    Dao dao = new Dao(UpdateActivity.this);

    private EditText mphonenum;
    private EditText moldpsw;
    private EditText mpsw1;
    private EditText mpsw2;
    private Button mButton;

    private String phonenum;
    private String oldpsw;
    private String psw1;
    private String psw2;

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

        mphonenum = (EditText) findViewById(R.id.phonenumupdate);
        moldpsw = (EditText) findViewById(R.id.oldpsw);
        mpsw1 = (EditText) findViewById(R.id.UDpsw1);
        mpsw2 = (EditText) findViewById(R.id.UDpsw2);
        mButton = (Button) findViewById(R.id.updatebutton);

        mButton.setOnClickListener(view -> {
            phonenum = mphonenum.getText().toString().trim();
            oldpsw = moldpsw.getText().toString().trim();
            psw1 = mpsw1.getText().toString().trim();
            psw2 = mpsw2.getText().toString().trim();

            String getpsw = dao.queryuserbyphone(phonenum);
            Log.i("UpdateActivity",getpsw);
            if (oldpsw.equals(getpsw)){
                if (psw1.equals(psw2)){
                    if (dao.updatepsw(phonenum,psw1)){
                        String info = "修改成功,返回登录界面";
                        Toast.makeText(UpdateActivity.this, info, Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(UpdateActivity.this,LoginActivity.class);
                        startActivity(intent);
                    }else {
                        String info = "修改失败";
                        Toast.makeText(UpdateActivity.this, info, Toast.LENGTH_LONG).show();
                    }

                }else{
                    String info = "两次输入密码不一致";
                    Toast.makeText(UpdateActivity.this, info, Toast.LENGTH_LONG).show();
                }
            }else{
                String info = "账号或密码错误";
                Toast.makeText(UpdateActivity.this, info, Toast.LENGTH_LONG).show();
                Log.i("UpdateActivity","原密码"+getpsw+"  新密码"+psw1);
            }

        });

    }
}
public class Dao {
    private SQLiteDatabase db;
    private DBOpenHelper helper;

    public Dao(Context context) {
        helper = new DBOpenHelper(context, "newdata.db", null, 2);
    }

    public void add() {
        db = helper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("username", "test");
        values.put("password", "123456");
        values.put("age", 21);
        //数据库执行插入命令
        long rowid = db.insert("usersad", null, values);
        Log.i("myDbDemo", String.valueOf(rowid));
        if (rowid == -1)
            Log.i("myDbDemo", "数据插入失败!");
        else
            Log.i("myDbDemo", "数据插入成功!" + rowid);
    }

    public void add(String phonenum, String password, String username) {
        int pn = Integer.parseInt(phonenum);
        db = helper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("username", username);
        values.put("password", password);
        values.put("age", pn);
        long rowid = db.insert("usersad", null, values);
        if (rowid == -1)
            Log.i("myDbDemo", "数据插入失败!");
        else
            Log.i("myDbDemo", "数据插入成功!" + rowid);
    }

    public void delete() {
        db = helper.getWritableDatabase();
        db.delete("usersad", "username=?", new String[]{"test"});
    }

    public void updateaaa() {
        db = helper.getWritableDatabase();
        ContentValues values2 = new ContentValues();
        values2.put("username", "admin123");
        db.update("usersad", values2, "username=?", new String[]{"admin"});
    }

    public void qu() {
        db = helper.getWritableDatabase();
        //创建游标对象
        Cursor cursor = db.query("usersad",null,null,null,null,null,null);
        //利用游标遍历所有数据对象
        while (cursor.moveToNext()) {
            @SuppressLint("Range") String id = cursor.getString(cursor.getColumnIndex("id"));
            @SuppressLint("Range") String username = cursor.getString(cursor.getColumnIndex("username"));
            @SuppressLint("Range") int age = cursor.getInt(cursor.getColumnIndex("age"));
            Log.i("Mainactivity", "result: id=" + id + " username: " + username + "  age:" + age);
        }
        // 关闭游标,释放资源
        cursor.close();
    }

    public boolean queryy(String phonenum) {
        db = helper.getWritableDatabase();
        //创建游标对象
        Cursor cursor = db.query("usersad", new String[]{"id", "username", "age"}, "username=?or age =?", new String[]{"test", "20"}, null, null, null);
        //利用游标遍历所有数据对象
        while (cursor.moveToNext()) {
            @SuppressLint("Range") String id = cursor.getString(cursor.getColumnIndex("id"));
            @SuppressLint("Range") String username = cursor.getString(cursor.getColumnIndex("username"));
            @SuppressLint("Range") int age = cursor.getInt(cursor.getColumnIndex("age"));
            Log.i("Mainactivity", "result: id=" + id + " username: " + username + "  age:" + age);
            int in = Integer.parseInt(phonenum);
            if (age == in){
                return true;
            }
        }
        // 关闭游标,释放资源
        cursor.close();
        return false;
    }

    public String queryuserbyphone(String phonenum) {
        db = helper.getWritableDatabase();
        //创建游标对象
        Cursor cursor = db.query("usersad", new String[]{"password"}, " age=?", new String[]{phonenum}, null, null, null);
        //利用游标遍历所有数据对象
        while (cursor.moveToNext()) {
            @SuppressLint("Range") String password = cursor.getString(cursor.getColumnIndex("password"));
            Log.i("Dao", "result: password=" + password);
            int in = Integer.parseInt(phonenum);
            return password;
        }
        // 关闭游标,释放资源
        cursor.close();
        return null;
    }

    public boolean updatepsw(String phonenum,String psw) {
        db = helper.getWritableDatabase();
        ContentValues values2 = new ContentValues();
        values2.put("password", psw);
        Log.i("Dao",psw+"  账号:"+ new String[]{phonenum});
        db.update("usersad", values2, "age=?", new String[]{phonenum});
        return true;
    }

    public String queryusernamebyphone(String phonenum) {
        db = helper.getWritableDatabase();
        //创建游标对象
        Cursor cursor = db.query("usersad", new String[]{"username"}, " age=?", new String[]{phonenum}, null, null, null);
        //利用游标遍历所有数据对象
        while (cursor.moveToNext()) {
            @SuppressLint("Range") String username = cursor.getString(cursor.getColumnIndex("username"));
            Log.i("Dao", "result: username=" + username);
            int in = Integer.parseInt(phonenum);
            return username;
        }
        // 关闭游标,释放资源
        cursor.close();
        return null;
    }


}
public class DBOpenHelper extends SQLiteOpenHelper {
    public DBOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建数据库sql语句并执行

        String sql="create table usersad(id integer primary key autoincrement,username varchar(20),password varchar(20),age integer)";
        db.execSQL(sql);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        Log.i("DBOpenHelper","升级数据库");

        String sql = "alter table usersad add sex varchar(10)";

    }
}
public class MainActivity extends AppCompatActivity {

    private Button mLoginactivity;
    private Button mBtnButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mLoginactivity = findViewById(R.id.btn_login);
        mBtnButton = findViewById(R.id.btn_ceshi);

        mLoginactivity.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                //跳转到登陆界面演示页面
                Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                startActivity(intent);
            }
        });

        mBtnButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, TestActivity.class);
                startActivity(intent);
            }
        });


    }
}

 

posted @ 2022-06-14 20:34  海底小分队  阅读(29)  评论(0)    收藏  举报