Android程序设计之学校疫情防控管理

news2024/11/16 17:49:48

基于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() + "学生");
        }

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试工作的完整流程

需求评审:确保各部门需求理解一致。计划编写:根据重要核心程度来决定先测哪些功能后测哪些功能,测什么、谁来测、怎么测 a. 测什么:测哪些功能 b. 谁来测:具体的测试人员 c. 怎么测:具体测 功能、性能、兼容…

公众号免费搜题接口

公众号免费搜题接口 本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全! 1.想要给自己的公众号获得查题接口,只需要两步! 2.题库: 查题校园题库:查题校园题库后台(点击…

笔试强训(三十八)

目录一、选择题二、编程题2.1 蘑菇矩阵2.1.1 题目2.1.2 题解2.2 红与黑2.2.1 题目2.2.2 题解一、选择题 (1)下列关于URL的描述错误的是(A) A.http表名使用TCP协议 B.又名统一资源定位符,方便确定一个资源,…

邮件营销:怎么正确地收集邮件地址?

邮件营销提供了收件人和发件人双向沟通的平台,这对于企业来讲是一个很好的开发客户、和客户建立联系的方式。但是想要获得良好的营销效果,前提是我们需要拥有优质的联系人地址列表。怎么正确地收集邮件地址呢? 一般来讲,有三种邮…

2023年考PMP证书有什么意义?

每年都有一个关于 PMP 证书的意义的热门话题,PMP 证书必然是有意义的,不然怎么每年都有那么多人报考呢? 一、先给大家分析一下PMP 证书的使用场景 1、项目管理岗位招聘的门槛 PMP 是项目管理领域的一个权威公认证书,近几年受到的…

PROTAC——小分子化合物

PROTAC VS. 传统小分子 PROTAC 全称为 proteolysis-targeting chimeras (蛋白水解靶向嵌合分子),是一种杂合双功能小分子化合物,由三部分组成:靶蛋白配体、连接子 Linker、和 E3 连接酶配体,结构中两个配体之间通过 linker 相连&a…

Serverless 的前世今生

作者:阿里云用户组 从云计算到 Serverless 架构 大家好,我是阿里云 Serverless 产品经理刘宇,很高兴可以和大家一起探索 Serverless 架构的前世今生。 从云计算到云原生再到 Serverless 架构,技术飞速发展的轨迹都有一定规律可循…

Notch 信号通路的抑制剂、检测

近期,Cell 刊登了清华大学施一公课题组大作:Structural basis of γ-secretase inhibition and modulation by small molecule drugs,该文阐述了 γ-分泌酶结合三种小分子抑制剂 (GSI) 和一种调节剂 (GSM) 的冷冻电镜结构,并首次展…

Seata AT模式下的源码解析(一)

源码仓库:https://gitee.com/haijun1998/seata.git 分支source-read-1.5.0 1. GlobalTransactional GlobalTransactional 注解,提供给客户端来创建一个全局事务,GlobalTransactional 注解由 GlobalTransactionScanner 进行扫描,…

Java总结String类

String类专门用来表示字符串类型字符串构造的主要三种方法【学习一个类,先学习他的构造方法】 public class TestDemo1 {public static void main(String[] args) {String s1 "Hello";String s2 new String("Hello");char[] array {H,e,l,l…

[附源码]java毕业设计校园爱心支愿管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]SSM计算机毕业设计高校奖学金评定管理系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

基于PHP+MySQL校园网站的设计与实现

校园生活是很多大学生没好的回忆,为了能过让更多的校园风采展示给人们,我们通过PHP和MYSQL开发了本校园网站的设计与实现,通过本网站可以更好的展示校园内风采和美好生活 本系统分为前台和后台2部分,前台部分主要是展示校园内的一些风采和新闻信息,后台部分主要是给管理员对网站…

1、skywalking-介绍

1、skywalking 介绍 随着微服务的兴起与流行,一些微服务架构下的问题也会越来越突出,服务之间的依赖关系愈发复杂。 如果某个服务出现问题,寻找问题往往需要很长的时间,可能需要一个一个服务的查找问题,由此我们 就有了…

ARFoundation系列讲解 - 69 HumanBodyTracking2D

---------------------------------------------- 视频教程来源于网络,侵权必删! --------------------------------------------- 一、简介 HumanBodyTracking2D(身体跟踪2D)案例,当设备检查到人体时,会返回检测到人体关节点的2D屏幕空间位置(需要在iOS 13或更高版本的…

详细讲解Linux内存泄漏检测实现原理与实现

在使用没有垃圾回收的语言时(如 C/C),可能由于忘记释放内存而导致内存被耗尽,这叫 内存泄漏。由于内核也需要自己管理内存,所以也可能出现内存泄漏的情况。为了能够找出导致内存泄漏的地方,Linux 内核开发者…

Apache部署静态网站

Apache安装(Linux安装Apache)网站模板(https://sc.chinaz.com/moban) Apache配置https://httpd.apache.org/docs/2.4/vhosts/examples.html 1.编辑&#xff1a;/opt/apache/httpd-2.4.54/conf/httpd.conf # Ensure that Apache listens on port 80 Listen 80 <VirtualHost *…

Python-中北大学人工智能OpenCV人脸识别(根据图片训练数据,根据训练好的数据识别人脸)

文章目录1. 根据训练照片训练数据模型2. 根据训练的数据文件&#xff0c;进行人脸识别1. 根据训练照片训练数据模型 训练流程&#xff1a; 读取文件夹下的所有文件&#xff0c;使用PIL 库中的Image方法打开图片&#xff0c;并将其转化为灰度图片。加载人脸数据分类器&#xff…

jenkins集成maven环境

在jenkins服务搭建JDK和maven环境 参考: 服务器配置Maven环境 集成Maven环境 点击Manage Jenkins进入jenkins设置 点击Global Tool Configuration 进入全局工具设置 找到Maven 点击 Add Maven 安装maven插件 点击Manage Jenkins进入jenkins设置 点击Manage Plugins 插…

Flutter组件--Align和AnimatedAlign

示意图: Align介绍 Align 一般是用来确定子控件在父布局中的位置&#xff0c;比如居中、左上等多个对齐方式。 什么情况下使用Align? 当子组件需要设置位于父组件的某个位置时&#xff0c;需要用到Align. Align构造函数 const Align({Key? key,this.alignment Alignmen…