基于Android实现的学校疫情防控管理,项目采用SQLite来存储数据。
SQLite 简介
SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。SQLite 源代码不受版权限制。
什么是 SQLite?
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
为什么要用 SQLite?
-
不需要一个单独的服务器进程或操作的系统(无服务器的)。
-
SQLite 不需要配置,这意味着不需要安装或管理。
-
一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
-
SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
-
SQLite 是自给自足的,这意味着不需要任何外部的依赖。
项目效果截图
学生端:(上交健康表,申请请假,申请返校)
教师端:(上交教师健康表,申请入校)
辅导员:(审批请假,审批返校)
学院疫情负责人
学院疫情工作联系人
核心代码实现
登录
package com.app.disease;
import android.content.Intent;
import android.text.TextUtils;
import android.view.View;
import android.widget.Toast;
import com.app.disease.base.BaseActivity;
import com.app.disease.dao.UserDao;
import com.app.disease.databinding.ActivityLoginBinding;
import com.app.disease.entity.UserInfo;
public class LoginActivity extends BaseActivity {
private ActivityLoginBinding mBinding;
private UserDao mUserDao;
@Override
protected View getLayoutId() {
mBinding = ActivityLoginBinding.inflate(getLayoutInflater());
return mBinding.getRoot();
}
@Override
protected void setListener() {
mBinding.register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
}
});
mBinding.login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username = mBinding.username.getText().toString();
String password = mBinding.password.getText().toString();
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
Toast.makeText(LoginActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
} else {
UserInfo login = mUserDao.login(username);
if (null != login) {
if (login.getUsername().equals(username) && login.getPassword().equals(password)) {
if (login.getRegister_type().equals("学生")) {
UserInfo.setUserInfo(login);
startActivity(new Intent(LoginActivity.this, StudentMainActivity.class));
} else if (login.getRegister_type().equals("辅导员")) {
UserInfo.setUserInfo(login);
startActivity(new Intent(LoginActivity.this, InstructorMainActivity.class));
} else if (login.getRegister_type().equals("教师")) {
UserInfo.setUserInfo(login);
startActivity(new Intent(LoginActivity.this, TeacherMainActivity.class));
} else if (login.getRegister_type().equals("学院疫情工作联系人")) {
UserInfo.setUserInfo(login);
startActivity(new Intent(LoginActivity.this, ContactsMainActivity.class));
} else if (login.getRegister_type().equals("学院疫情负责人")) {
UserInfo.setUserInfo(login);
startActivity(new Intent(LoginActivity.this, PrincipalMainActivity.class));
} else {
showToast("用户名或密码错误");
}
} else {
showToast("请先注册");
}
}
}
}
});
}
@Override
protected void initData() {
mUserDao = new UserDao(this);
}
}
注册
package com.app.disease;
import android.text.TextUtils;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import com.app.disease.base.BaseActivity;
import com.app.disease.dao.UserDao;
import com.app.disease.databinding.ActivityRegisterBinding;
public class RegisterActivity extends BaseActivity {
protected ActivityRegisterBinding mBinding;
private UserDao mUserDao;
private String register_type = "学生";
@Override
protected View getLayoutId() {
mBinding = ActivityRegisterBinding.inflate(getLayoutInflater());
return mBinding.getRoot();
}
@Override
protected void setListener() {
mBinding.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
RadioButton rb_temp = findViewById(radioGroup.getCheckedRadioButtonId());
register_type = rb_temp.getText().toString();
}
});
mBinding.register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String username = mBinding.username.getText().toString();
String password = mBinding.password.getText().toString();
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
Toast.makeText(RegisterActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
} else {
int row = mUserDao.register(username, password, register_type);
if (row > 0) {
Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(RegisterActivity.this, "注册失败", Toast.LENGTH_SHORT).show();
}
finish();
}
}
});
}
@Override
protected void initData() {
mUserDao = new UserDao(this);
}
}
学生端主页
package com.app.disease;
import android.content.Intent;
import android.view.View;
import com.app.disease.base.BaseActivity;
import com.app.disease.databinding.ActivityStudentMianBinding;
import com.app.disease.entity.UserInfo;
/***
* 学生端主页
*/
public class StudentMainActivity extends BaseActivity {
private ActivityStudentMianBinding mBinding;
@Override
protected View getLayoutId() {
mBinding = ActivityStudentMianBinding.inflate(getLayoutInflater());
return mBinding.getRoot();
}
@Override
protected void setListener() {
mBinding.healthCode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(StudentMainActivity.this, HealthTableListActivity.class));
}
});
mBinding.leave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(StudentMainActivity.this, StudentLeaveListActivity.class));
}
});
mBinding.backSchool.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(StudentMainActivity.this, BackSchoolListActivity.class));
}
});
}
@Override
protected void initData() {
UserInfo userInfo = UserInfo.getUserInfo();
if (null != userInfo) {
mBinding.title.setText("欢迎" + userInfo.getUsername() + "学生");
}
}
}