一个由androidstudio开发的简单的员工管理系统,使用SQLite数据库操作、HTTP网络连接操作、调用系统服务。

一、部分页面效果

二、代码结构

三、各种样式 

 四、部分代码(后附源码免费下载)

(1)注册界面:

1)activity代码:
package edu.cn.bookadminister;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class RegisterActivity extends AppCompatActivity {
    private EditText et_username,et_pwd,et_pwd_sure;
    private Button register;
    private String userName,passWord,passWord_sure;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        init();
    }
    public void init(){
        //获取对应控件
        et_username = (EditText)findViewById(R.id.username);
        et_pwd = (EditText)findViewById(R.id.pwd);
        et_pwd_sure = (EditText)findViewById(R.id.pwd2);
        register = (Button)findViewById(R.id.registerBtn);
        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getEditString();
		//当输入框为空时弹出以下内容,即用户名、密码不能为空
                if(TextUtils.isEmpty(userName)){
                    Toast.makeText(RegisterActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
                    return;
                }else if(TextUtils.isEmpty(passWord)){
                    Toast.makeText(RegisterActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
                    return;
                }else if(TextUtils.isEmpty(passWord_sure)){
                    Toast.makeText(RegisterActivity.this, "请再次输入密码", Toast.LENGTH_SHORT).show();
                    return;
                }else if(!passWord.equals(passWord_sure)){   //检验两次密码是否一样
                    Toast.makeText(RegisterActivity.this, "输入两次的密码不一样", Toast.LENGTH_SHORT).show();
                    return;
                    /**
                     *从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名
                     */
                }else if(isExistUserName(userName)){
                    Toast.makeText(RegisterActivity.this, "此账户名已经存在", Toast.LENGTH_SHORT).show();
                    return;
                }else{
                    Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
                    //把账号、密码和账号标识保存到sp里面
                    /**
                     * 保存账号和密码到SharedPreferences中
                     */
                    saveRegisterInfo(userName, passWord);
                    //注册成功后把账号传递到LoginActivity.java中(MainActivity.java)
                  // 返回值到loginActivity显示
                    Intent data = new Intent();
                    data.putExtra("userName", userName);
                    setResult(RESULT_OK, data);
                    //RESULT_OK为Activity系统常量,状态码为-1,
                    // 表示此页面下的内容操作成功将data返回到上一页面,如果是用back返回过去的则不存在用setResult传递data值
                    Intent intent = new Intent(RegisterActivity.this,LoginActivity.class);
                    startActivity(intent);
                    RegisterActivity.this.finish();
                }
            }
        });
    }
    private void getEditString(){
        userName = et_username.getText().toString().trim();
        passWord = et_pwd.getText().toString().trim();
        passWord_sure = et_pwd_sure.getText().toString().trim();
    }
    /**
     * 从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名
     */
    private boolean isExistUserName(String userName){
        boolean has_userName = false;
        //mode_private SharedPreferences sp = getSharedPreferences( );
        // "loginInfo", MODE_PRIVATE
        SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);
        //获取密码
        String spPsw = sp.getString(userName, "");//传入用户名获取密码
        //如果密码不为空则确实保存过这个用户名
        if(!TextUtils.isEmpty(spPsw)) {
            has_userName=true;
        }
        return has_userName;
    }
    /**
     * 保存账号和密码到SharedPreferences中SharedPreferences
     */
    private void saveRegisterInfo(String userName,String psw){
        String md5Psw = MD5Utils.md5(psw);//把密码用MD5加密
        //loginInfo表示文件名, mode_private SharedPreferences sp = getSharedPreferences( );
        SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);
        //获取编辑器, SharedPreferences.Editor  editor -> sp.edit();
        SharedPreferences.Editor editor = sp.edit();
        //以用户名为key,密码为value保存在SharedPreferences中
        //key,value,如键值对,editor.putString(用户名,密码);
        editor.putString(userName, md5Psw);
        //提交修改 editor.commit();
        editor.commit();
    }
    public void onBackPressed() {
        Intent intent = new Intent();
        intent.setClass(RegisterActivity.this,LoginActivity.class);
        startActivity(intent);
        //关闭原来activity
        RegisterActivity.this.finish();
    }
}


2)布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/bg2"
    android:padding="10dp"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/tv"
            android:layout_width="match_parent"
            android:layout_height="120dp"
            android:gravity="center"
            android:text="注册管理员"
            android:textSize="30sp"
            android:textColor="#516D2C"/>

        <ImageView
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:src="@drawable/register"
            android:layout_gravity="center"
            android:layout_marginBottom="20dp"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="horizontal"
            android:layout_marginTop="10dp">

            <ImageView
                android:layout_width="30dp"
                android:layout_height="40dp"
                android:layout_gravity="center"
                android:src="@drawable/manager"
                android:layout_marginRight="5dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:text="用户:"
                android:textSize="20sp"
                android:gravity="center"
                android:textColor="#000000"/>

            <EditText
                android:id="@+id/username"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:hint="请输入用户名"
                android:background="@drawable/editext_selector"
                android:textSize="20sp"
                android:textColor="#000000"
                android:inputType="text"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:gravity="left|center"
                android:maxLength="20"
                android:paddingLeft="10dp"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="horizontal"
            android:layout_marginTop="10dp">

            <ImageView
                android:layout_width="30dp"
                android:layout_height="50dp"
                android:src="@drawable/password"
                android:layout_marginRight="5dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:text="密码:"
                android:textSize="20sp"
                android:gravity="center"
                android:textColor="#000000"/>

            <EditText
                android:id="@+id/pwd"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:hint="请输入密码"
                android:background="@drawable/editext_selector"
                android:textSize="20sp"
                android:textColor="#000000"
                android:inputType="textPassword"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:gravity="left|center"
                android:maxLength="20"
                android:paddingLeft="10dp"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="horizontal"
            android:layout_marginTop="10dp">

            <ImageView
                android:layout_width="30dp"
                android:layout_height="50dp"
                android:src="@drawable/key"
                android:layout_marginRight="5dp"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:text="确认密码:"
                android:textSize="20sp"
                android:gravity="center"
                android:textColor="#000000"/>

            <EditText
                android:id="@+id/pwd2"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:hint="请确认密码"
                android:background="@drawable/editext_selector"
                android:textSize="20sp"
                android:textColor="#000000"
                android:inputType="textPassword"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="5dp"
                android:gravity="left|center"
                android:maxLength="20"
                android:paddingLeft="10dp"/>
        </LinearLayout>

        <Button
            android:id="@+id/registerBtn"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:text="注册"
            android:gravity="center"
            android:textSize="20sp"
            android:textColor="#FFFFFF"
            android:background="@drawable/btn_selector"
            android:layout_marginTop="15dp"/>


    </LinearLayout>





(2)登录界面:
package edu.cn.bookadminister;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class  LoginActivity extends AppCompatActivity {
    private Button login;
    private TextView tv_register;
    private EditText et_username,et_pwd;
    private CheckBox save_pwd;
    private String userName,passWord,spPsw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        init();
    }
    private void init() {
        et_username = (EditText) findViewById(R.id.username);
        et_pwd = (EditText) findViewById(R.id.pwd);
        save_pwd = (CheckBox) findViewById(R.id.save_pwd);
        login = (Button)findViewById(R.id.loginBtn);
        tv_register = (TextView) findViewById(R.id.register);
        //获取记住的账号密码
        getUserInfo();
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //开始登录
                getEditString();
                //对当前用户输入的密码进行MD5加密再进行比对判断, MD5Utils.md5( ); psw 进行加密判断是否一致
                String md5Psw= MD5Utils.md5(passWord);
                // md5Psw ; spPsw 为 根据从SharedPreferences中用户名读取密码
                // 定义方法 readPsw为了读取用户名,得到密码
                spPsw = readPsw(userName);
                // TextUtils.isEmpty
                if(TextUtils.isEmpty(userName)){
                    Toast.makeText( LoginActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
                    return;
                }else if(TextUtils.isEmpty(passWord)){
                    Toast.makeText( LoginActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
                    return;
                    // md5Psw.equals(); 判断,输入的密码加密后,是否与保存在SharedPreferences中一致
                }else if(md5Psw.equals(spPsw)){
                    //一致登录成功
                    Toast.makeText( LoginActivity.this, "welcome!"+ userName, Toast.LENGTH_SHORT).show();
                    //保存登录状态,在界面保存登录的用户名 定义个方法 saveLoginStatus boolean 状态 , userName 用户名
                    saveLoginInfo(userName,passWord);
                    //getUserInfo();
                    saveLoginStatus(true, userName);
                    //登录成功后关闭此页面进入主页
                    Intent data = new Intent();
                    //data.putExtra( ); name , value ;
                    data.putExtra("isLogin",true);
                    //RESULT_OK为Activity系统常量,状态码为-1
                    // 表示此页面下的内容操作成功将data返回到上一页面,如果是用back返回过去的则不存在用setResult传递data值
                    setResult(RESULT_OK,data);
                    //销毁登录界面
                    LoginActivity.this.finish();
                    //跳转到主界面,登录成功的状态传递到 MainActivity 中
                    startActivity(new Intent( LoginActivity.this, MainActivity.class));
                    return;
                }else if((spPsw!=null&&!TextUtils.isEmpty(spPsw)&&!md5Psw.equals(spPsw))){
                    Toast.makeText( LoginActivity.this, "密码错误", Toast.LENGTH_SHORT).show();
                    return;
                }else{
                    Toast.makeText( LoginActivity.this, "此用户名不存在", Toast.LENGTH_SHORT).show();
                }
            }
        });
        tv_register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //为了跳转到注册界面,并实现注册功能
                Intent intent=new Intent( LoginActivity.this,RegisterActivity.class);
                startActivity(intent);
                LoginActivity.this.finish();
            }
        });

    }
    private void getEditString(){
        userName = et_username.getText().toString().trim();
        passWord = et_pwd.getText().toString().trim();
    }
    public void saveLoginInfo(String userName, String passWord){
        //获取SharedPreferences对象
        boolean CheckBoxLogin = save_pwd.isChecked();
        SharedPreferences sp = getSharedPreferences("userInfo", MODE_PRIVATE);
        //获取Editor对象
        SharedPreferences.Editor editor = sp.edit();
        if (CheckBoxLogin){
            //设置参数
            editor.putString("username", userName);
            editor.putString("password", passWord);
            editor.putBoolean("checkboxBoolean",true);
            //提交
            editor.commit();
        }else {
            editor.putString("username", null);
            editor.putString("password", null);
            editor.putBoolean("checkboxBoolean", false);
            editor.commit();
        }
    }

    private String readPsw(String userName){
        //getSharedPreferences("loginInfo",MODE_PRIVATE);
        //"loginInfo",mode_private; MODE_PRIVATE表示可以继续写入
        SharedPreferences sp  = getSharedPreferences("loginInfo", MODE_PRIVATE);
        //sp.getString() userName, "";
        return sp.getString(userName , "");
    }
    /**
     *保存登录状态和登录用户名到SharedPreferences中
     */
    private void saveLoginStatus(boolean status,String userName){
        //saveLoginStatus(true, userName);
        //loginInfo表示文件名  SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
        SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);
        //获取编辑器
        SharedPreferences.Editor editor = sp.edit();
        //存入boolean类型的登录状态
        editor.putBoolean("isLogin", status);
        //存入登录状态时的用户名
        editor.putString("loginUserName", userName);
        //提交修改
        editor.commit();
    }
    /**
     * 注册成功的数据返回至此
     * @param requestCode 请求码
     * @param resultCode 结果码
     * @param data 数据
     */
    @Override
    //显示数据, onActivityResult
    //startActivityForResult(intent, 1); 从注册界面中获取数据
    //int requestCode , int resultCode , Intent data
    // LoginActivity -> startActivityForResult -> onActivityResult();
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        //super.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
        if(data!=null){
            //是获取注册界面回传过来的用户名
            // getExtra().getString("***");
            String userName=data.getStringExtra("userName");
            if(!TextUtils.isEmpty(userName)){
                //设置用户名到 et_user_name 控件
                et_username.setText(userName);
                //et_user_name控件的setSelection()方法来设置光标位置
                et_username.setSelection(userName.length());
            }
        }
    }
    public  void getUserInfo(){
        SharedPreferences sp = null;
        sp = this.getSharedPreferences("userInfo", Context.MODE_PRIVATE);
        if (sp.getBoolean("checkboxBoolean", false))
        {
            et_username.setText(sp.getString("username", null));
            et_pwd.setText(sp.getString("password", null));
            save_pwd.setChecked(true);
        }else{
            et_username.setText(sp.getString("username", userName));
            et_pwd.setText(sp.getString("password", passWord));
            save_pwd.setChecked(false);
        }
    }
    public void onBackPressed() {
        LoginActivity.this.finish();
    }
}





(3)登录之后显示登录成功的提示语:
package edu.cn.bookadminister;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;

public class WelcomeActivity extends AppCompatActivity {
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_welcome);
            Handler handler = new Handler();
            //当计时结束,跳转至主界面
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    Intent intent = new Intent(WelcomeActivity.this, LoginActivity.class);
                    startActivity(intent);
                    WelcomeActivity.this.finish();
                }
            }, 3000);
        }
    }





(4)主界面:
package edu.cn.bookadminister;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import java.io.Serializable;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button bt_createe;
    private Button bt_updatee;
    private Button bt_deletee;
    private Button bt_read;

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

        bt_createe = findViewById(R.id.bt_createe);
        bt_createe.setOnClickListener(this);

        bt_updatee = findViewById(R.id.bt_updatee);
        bt_updatee.setOnClickListener(this);

        bt_deletee = findViewById(R.id.bt_deletee);
        bt_deletee.setOnClickListener(this);

        bt_read = findViewById(R.id.bt_read);
        bt_read.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.bt_createe){
            // 准备跳到下一个活动页面,studentList
            Intent intent = new Intent(MainActivity.this, AddbooksActivity.class);
            startActivityForResult(intent, 0);
        }else if (v.getId() == R.id.bt_updatee){
            // 准备跳到下一个活动页面,studentList
            Intent intent = new Intent(MainActivity.this, UpdateBooksActivity.class);
            startActivityForResult(intent, 1);
        }else if (v.getId() == R.id.bt_deletee){
            // 准备跳到下一个活动页面,studentList
            Intent intent = new Intent(MainActivity.this, DeleteBooksActivity.class);
            startActivityForResult(intent, 2);
        }else if (v.getId() == R.id.bt_read){
            // 准备跳到下一个活动页面,studentList
            Intent intent = new Intent(MainActivity.this, QueryBooksActivity.class);
            startActivityForResult(intent, 3);
        }
    }
}





(5)添加记录界面:
package edu.cn.bookadminister;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;

public class AddbooksActivity extends AppCompatActivity implements View.OnClickListener {
    //组件定义
    private EditText etStudentid;
    private EditText etStudentname;
    private EditText etMajoy;
    private EditText etBooknum;

    private Button btnAdd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_addbooks);
        //初始化界面
        initView();
    }

    //初始化界面
    private void initView() {
        etStudentid=(EditText)findViewById(R.id.et_studentid);
        etStudentname = (EditText) findViewById(R.id.et_studentname);
        etMajoy = (EditText) findViewById(R.id.et_majoy);
        etBooknum = (EditText) findViewById(R.id.et_booknum);

        btnAdd = (Button) findViewById(R.id.btn_add);
        //设置按钮的点击事件
        btnAdd.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        //当单击“添加”按钮时,获取添加信息
        String studentid=etStudentid.getText().toString().trim();
        String studentname = etStudentname.getText().toString().trim();
        String majoy = etMajoy.getText().toString().trim();
        String booknum = etBooknum.getText().toString();


        //检验信息是否正确
        if (TextUtils.isEmpty(studentid)) {
            Toast.makeText(this, "请输入员工工号", Toast.LENGTH_SHORT).show();
            return;
        }
        if (TextUtils.isEmpty(studentname)) {
            Toast.makeText(this, "请输入员工姓名", Toast.LENGTH_SHORT).show();
            return;
        }
        if (TextUtils.isEmpty(majoy)) {
            Toast.makeText(this, "请输入入职时间", Toast.LENGTH_SHORT).show();
            return;
        }
        if (TextUtils.isEmpty(booknum)) {
            Toast.makeText(this, "请输入所属部门", Toast.LENGTH_SHORT).show();
            return;
        }

        //添加借书信息
        Book o =new Book();
        o.studentid= studentid;
        o.studentname = studentname;
        o.majoy = majoy;
        o.booknum= booknum;

        //创建数据库访问对象
        BooksDAO dao = new BooksDAO(getApplicationContext());
        //打开数据库
        dao.open();
        //执行数据库访问方法
        long result = dao.addBooks(o);

        if (result > 0) {
            Toast.makeText(this, "添加成功", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "添加失败", Toast.LENGTH_SHORT).show();
        }
        //关闭数据库
        dao.close();
        //关闭活动
        finish();

    }
}





(6)每次添加、修改、删除数据时打开数据库的功能的代码:
package edu.cn.bookadminister;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;

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

public class BooksDAO {
    private Context context;
    private MyDBHelper dbHelper;
    private SQLiteDatabase db;

    //构造函数
    public BooksDAO(Context context) {
        this.context = context;
    }

    //打开数据库
    public void open() throws SQLiteException {
        dbHelper = new MyDBHelper(context);
        try {
            db = dbHelper.getWritableDatabase();
        } catch (SQLiteException ex) {
            db = dbHelper.getReadableDatabase();
        }
    }

    //关闭数据库
    public void close() {
        if (db != null) {
            db.close();
            db = null;
        }
    }


    //添加借书信息
    public long addBooks(Book o) {
        // 创建ContentValues对象
        ContentValues values = new ContentValues();
        // 向该对象中插入键值对
        values.put("studentid", o.studentid);
        values.put("studentname", o.studentname);
        values.put("majoy", o.majoy);
        values.put("booknum", o.booknum);

        // 调用insert()方法将数据插入到数据库当中
        return db.insert("tb_Books", null, values);
    }

    //删除指定借书信息
    public int deletBooks(Book o) {
        return db.delete("tb_Books", "studentid=?", new String[]{String.valueOf(o.studentid)});
    }

    //修改指定借书信息
    public int updateBooks(Book o) {
        ContentValues value = new ContentValues();
        value.put("studentname", o.studentname);
        value.put("majoy", o.majoy);
        value.put("booknum", o.booknum);
        return db.update("tb_Books", value, "studentid=?", new String[]{String.valueOf(o.studentid)});
    }

    //根据学生学号查找订单
    public Book getBooks(String studentid) {
        //查询学生
        Cursor cursor = db.query("tb_Books", null, "studentid=?", new String[]{studentid}, null, null, null);
       Book o = new Book();
        while (cursor.moveToNext()) {
            o.studentid = cursor.getString(cursor.getColumnIndex("studentid"));
            o.studentname = cursor.getString(cursor.getColumnIndex("studentname"));
            o.majoy = cursor.getString(cursor.getColumnIndex("majoy"));
            o.booknum = cursor.getString(cursor.getColumnIndex("booknum"));

        }
        return o;
    }

    //查找所有借书信息
    public ArrayList<Map<String, Object>> getAllbooks() {
        ArrayList<Map<String, Object>> listBooks = new ArrayList<Map<String, Object>>();
        Cursor cursor = db.query("tb_Books", null, null, null, null, null,null);

        int resultCounts = cursor.getCount();  //记录数
        if (resultCounts == 0 ) {
            return null;
        } else {
            while (cursor.moveToNext()) {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("studentid", cursor.getString(cursor.getColumnIndex("studentid")));
                map.put("studentname", cursor.getString(cursor.getColumnIndex("studentname")));
                map.put("majoy", cursor.getString(cursor.getColumnIndex("majoy")));
                map.put("booknum", cursor.getString(cursor.getColumnIndex("booknum")));

                listBooks.add(map);
            }
            return listBooks;
        }
    }
}





(7)添加、删除、修改之后查看记录的代码:
package edu.cn.bookadminister;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.util.List;
import java.util.Map;

public class QueryBooksActivity extends AppCompatActivity {
    //定义组件
    ListView listView=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_query_books);
        setTitle("查看记录");
        //初始化界面
        initView();
    }

    private void initView() {
        //建立数据库访问对象
        BooksDAO dao=new BooksDAO(getApplicationContext());
        //打开数据库
        dao.open();
        //调用数据库访问方法
        List<Map<String,Object>> mOrderData=dao.getAllbooks();
        //获取组件
        listView=(ListView)findViewById(R.id.lst_orders);
        //定义数据源
        String[] from={"studentid","studentname","majoy","booknum"};
        //定义布局控件ID
        int[] to={R.id.tv_lst_studentid,R.id.tv_lst_studentname,R.id.tv_lst_majoy,R.id.tv_lst_booknum};
        SimpleAdapter listItemAdapter=new SimpleAdapter(QueryBooksActivity.this,mOrderData,R.layout.item_list,from,to);
        //添加并显示
        listView.setAdapter(listItemAdapter);
        //关闭数据库
        dao.close();
    }
}





(8)修改记录界面:
package edu.cn.bookadminister;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class UpdateBooksActivity extends AppCompatActivity implements View.OnClickListener{
    //组件定义
    private EditText etStudentid;
    private Button btnSearch;
    private EditText etStudentname;
    private EditText etMajoy;
    private EditText etBooknum;

    private Button btnEdit;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_update_books);
        initView();
    }

    private void initView() {
        etStudentid=(EditText) findViewById(R.id.et_studentid);
        btnSearch=(Button) findViewById(R.id.btn_search);
        etStudentname=(EditText)findViewById(R.id.et_studentname);
        etMajoy=(EditText)findViewById(R.id.et_majoy);
        etBooknum=(EditText)findViewById(R.id.et_booknum);

        btnEdit= (Button) findViewById(R.id.btn_edit);
        //设置按钮的点击事件
        btnSearch.setOnClickListener((View.OnClickListener) this);
        btnEdit.setOnClickListener((View.OnClickListener) this);
    }
    @Override
    public void onClick(View v)
    {
        switch(v.getId())
        {
            case R.id.btn_search:   //查询操作
                searchOrder();
                break;
            case R.id.btn_edit:    //更新操作
                updateOrder();
                break;
        }
    }
    //查询操作
    private void searchOrder() {
        String studentid=etStudentid.getText().toString().trim();  //获取用户输入
        //建立数据库访问对象
        BooksDAO dao=new BooksDAO(getApplicationContext());
        //打开数据库
        dao.open();
        //调用数据库访问方法
        Book o=dao.getBooks(studentid);
        //将数据填入控件
        etStudentname.setText(o.studentname);
        etMajoy.setText(o.majoy);
        etBooknum.setText(o.booknum);

        //关闭数据库
        dao.close();
    }
    //修改操作
    private void updateOrder() {
        Book o=new Book();
        o.studentid=etStudentid.getText().toString().trim();
        o.studentname=etStudentname.getText().toString().trim();
        o.majoy=etMajoy.getText().toString().trim();
        o.booknum=etBooknum.getText().toString().trim();

        //创建数据库访问对象
        BooksDAO dao=new BooksDAO(getApplicationContext());
        //打开数据库
        dao.open();
        //执行数据库访问方法
        long result= dao.updateBooks(o);
        if(result>0) {
            Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(this, "修改失败", Toast.LENGTH_SHORT).show();
        }
        //关闭数据库
        dao.close();
    }
}





(9)删除记录界面:
package edu.cn.bookadminister;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class DeleteBooksActivity extends AppCompatActivity  implements View.OnClickListener{

    private EditText etStudentid;
    private Button btnSearch;
    private EditText etStudentname;
    private EditText etMajoy;
    private EditText etBooknum;

    private Button btnDelete;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_delete_books);
        initView();
    }

    private void initView() {
        etStudentid=(EditText) findViewById(R.id.et_studentid);
        btnSearch=(Button) findViewById(R.id.btn_search);
        etStudentname=(EditText)findViewById(R.id.et_studentname);
        etMajoy=(EditText)findViewById(R.id.et_majoy);
        etBooknum=(EditText)findViewById(R.id.et_booknum);

        btnDelete= (Button) findViewById(R.id.btn_delete);
        //设置按钮的点击事件
        btnSearch.setOnClickListener((View.OnClickListener) this);
        btnDelete.setOnClickListener((View.OnClickListener) this);
    }

    @Override
    public void onClick(View v)
    {
        switch(v.getId())
        {
            case R.id.btn_search:   //查询操作
                searchOrder();
                break;
            case R.id.btn_delete:    //删除操作
                deleteOrder();
                break;
        }
    }
    //查找借书信息
    private void searchOrder() {
        String studentid=etStudentid.getText().toString().trim();  //获取用户输入
        //建立数据库访问对象
        BooksDAO dao=new BooksDAO(getApplicationContext());
        //打开数据库
        dao.open();
        //调用数据库访问方法
        Book o=dao.getBooks(studentid);
        //将数据填入控件
        etStudentname.setText(o.studentname);
        etMajoy.setText(o.majoy);
        etBooknum.setText(o.booknum);

        //关闭数据库
        dao.close();
    }
    //删除借书信息
    private void deleteOrder() {
        Book o=new Book();
        o.studentid=etStudentid.getText().toString().trim();
        //创建数据库访问对象
        BooksDAO dao=new BooksDAO(getApplicationContext());
        //打开数据库
        dao.open();
        //执行数据库访问方法
        int result= dao.deletBooks(o);
        if(result>0) {
            Toast.makeText(this, "删除成功", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(this, "删除失败", Toast.LENGTH_SHORT).show();
        }
        //关闭数据库
        dao.close();
    }
}





(10)一些控件的样式或效果改变的xml文件:
1)按钮按下和弹起之后的颜色和形状变化(效果在之前视频中查看;这里只选取部分的来说明,其他的与这些大同小异):
<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <!--按钮按下时-->
    <item android:state_pressed="true">
        <shape>
            <!--设置圆角-->
            <corners android:radius="20dp"/>
            <!--设置背景颜色-->
            <solid android:color="#A103A9F4"/>
        </shape>
    </item>
    <!--按钮弹起时-->
    <item>
        <shape>
            <!--设置圆角-->
            <corners android:radius="100dp"/>
            <!--设置背景颜色-->
            <solid android:color="#A94CAF50"/>
        </shape>
    </item>

</selector>


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#009688"/>
    <corners android:radius="30dp"/>
    <stroke android:width="1dp" android:color="#ffaaaaaa"/>
    <padding android:bottom="2dp" android:left="2dp" android:right="2dp" android:top="2dp" />
</shape>

布局文件中使用selector.Xml文件进行调用:
 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/shape_btn_pressed"/>
    <item android:drawable="@drawable/shape_btn_normal"/>
</selector>





2)编辑文本框时文本框的变化:


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!--设置圆角-->
    <corners android:radius="18dp"/>
    <!--设置背景颜色-->
    <solid android:color="#704CAF50"/>
</shape>

与Button的类似,布局文件中使用selector.Xml文件进行调用:
 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:drawable="@drawable/shape_edit_focus"/>
    <item android:drawable="@drawable/shape_edit_normal"/>
</selector>





 

 

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐