当前位置: 首页 > article >正文

网络资源模板--Android Studio 宿舍管理系统

目录

一、项目演示

二、项目测试环境

三、项目详情

四、完整的项目源码 


一、项目演示

网络资源模板--宿舍管理系统

二、项目测试环境

三、项目详情

登录注册页面

### 功能总结

1. **用户输入**:
   - 允许用户输入用户名和密码。

2. **登录验证**:
   - 检查用户名和密码是否为空。
   - 使用 MD5 加密进行密码验证。

3. **信息存储**:
   - 可选择保存用户名和密码到 `SharedPreferences`。

4. **自动填充**:
   - 启动时从 `SharedPreferences` 获取并填充已保存的用户信息。

5. **导航功能**:
   - 登录成功后跳转到主界面。
   - 提供跳转到注册界面的选项。

6. **返回操作**:
   - 点击返回键时结束当前活动。

 private void init() {
        // 绑定界面组件
        this.et_username = (EditText) findViewById(R.id.username);
        this.et_pwd = (EditText) findViewById(R.id.pwd);
        this.save_pwd = (CheckBox) findViewById(R.id.save_pwd);
        this.login = (Button) findViewById(R.id.loginBtn);
        this.tv_register = (TextView) findViewById(R.id.register);
        getUserInfo(); // 获取用户信息
        // 设置登录按钮的点击事件
        this.login.setOnClickListener(v -> {
            LoginActivity.this.getEditString(); // 获取输入的用户名和密码
            String md5 = MD5Utils.md5(LoginActivity.this.passWord); // 对密码进行MD5加密
            LoginActivity loginActivity = LoginActivity.this;
            loginActivity.spPsw = loginActivity.readPsw(loginActivity.userName); // 读取存储的密码

            // 验证用户名和密码
            if (TextUtils.isEmpty(LoginActivity.this.userName)) {
                Toast.makeText(loginActivity, "请输入用户名", Toast.LENGTH_SHORT).show();
            } else if (TextUtils.isEmpty(LoginActivity.this.passWord)) {
                Toast.makeText(loginActivity, "请输入密码", Toast.LENGTH_SHORT).show();
            } else if (md5.equals(LoginActivity.this.spPsw)) {
                // 登录成功
                Toast.makeText(loginActivity, "welcome!" + LoginActivity.this.userName, Toast.LENGTH_SHORT).show();
                loginActivity.saveLoginInfo(loginActivity.userName, LoginActivity.this.passWord); // 保存登录信息
                loginActivity.saveLoginStatus(true, loginActivity.userName); // 更新登录状态
                Intent intent = new Intent();
                intent.putExtra("isLogin", true); // 设置返回值
                LoginActivity.this.setResult(-1, intent);
                LoginActivity.this.finish(); // 结束当前活动
                LoginActivity.this.startActivity(new Intent(LoginActivity.this, MainActivity.class)); // 跳转到主界面
            } else if (LoginActivity.this.spPsw == null || TextUtils.isEmpty(LoginActivity.this.spPsw) || md5.equals(LoginActivity.this.spPsw)) {
                // 用户名不存在
                Toast.makeText(loginActivity, "此用户名不存在", Toast.LENGTH_SHORT).show();
            } else {
                // 密码错误
                Toast.makeText(loginActivity, "密码错误", Toast.LENGTH_SHORT).show();
            }
        });
        // 设置注册文本的点击事件
        this.tv_register.setOnClickListener(v -> {
            LoginActivity.this.startActivity(new Intent(LoginActivity.this, RegisterActivity.class)); // 跳转到注册界面
        });
    }

这是 `RegisterActivity` 的 `init()` 方法代码段,主要用于初始化注册界面的组件并处理用户注册逻辑。以下是功能总结:

### 功能总结

1. **界面组件初始化**:
   - 绑定用户名输入框、密码输入框、确认密码输入框及返回按钮。

2. **返回操作**:
   - 点击返回按钮时,结束当前活动。

3. **注册按钮点击事件**:
   - 获取输入的用户名和密码。
   - 验证输入:
     - 检查用户名、密码和确认密码是否为空。
     - 检查两次输入的密码是否一致。
   - 如果用户名已存在,显示提示信息。
   - 注册成功后,保存用户信息,并设置结果返回给上一个活动。

### 总结
此方法负责初始化注册界面的组件,验证用户输入,并实现注册逻辑。通过友好的提示提高用户体验。

 public void init() {
        this.et_username = (EditText) findViewById(R.id.username);
        this.et_pwd = (EditText) findViewById(R.id.pwd);
        this.et_pwd_sure = (EditText) findViewById(R.id.pwd2);
        findViewById(R.id.iv_back).setOnClickListener(v -> {
            RegisterActivity.this.finish();
        });
        Button button = (Button) findViewById(R.id.registerBtn);
        this.register = button;
        button.setOnClickListener(v -> {
            RegisterActivity.this.getEditString();
            if (TextUtils.isEmpty(RegisterActivity.this.userName)) {
                Toast.makeText(RegisterActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
            } else if (TextUtils.isEmpty(RegisterActivity.this.passWord)) {
                Toast.makeText(RegisterActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
            } else if (TextUtils.isEmpty(RegisterActivity.this.passWord_sure)) {
                Toast.makeText(RegisterActivity.this, "请再次输入密码", Toast.LENGTH_SHORT).show();
            } else if (!RegisterActivity.this.passWord.equals(RegisterActivity.this.passWord_sure)) {
                Toast.makeText(RegisterActivity.this, "输入两次的密码不一样", Toast.LENGTH_SHORT).show();
            } else {
                RegisterActivity registerActivity = RegisterActivity.this;
                if (registerActivity.isExistUserName(registerActivity.userName)) {
                    Toast.makeText(RegisterActivity.this, "此账户名已经存在", Toast.LENGTH_SHORT).show();
                    return;
                }
                Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
                RegisterActivity registerActivity2 = RegisterActivity.this;
                registerActivity2.saveRegisterInfo(registerActivity2.userName, RegisterActivity.this.passWord);
                Intent intent = new Intent();
                intent.putExtra("userName", RegisterActivity.this.userName);
                RegisterActivity.this.setResult(-1, intent);
                RegisterActivity.this.finish();
            }
        });
    }

首页

功能总结

  1. 界面组件初始化:

    • 创建并绑定多个按钮,用于不同的宿舍管理操作(添加、删除、修改、查询、搜索)。
  2. 按钮点击事件:

    • 每个按钮绑定相应的点击事件,点击后启动不同的活动(例如 AddDormitoryActivityDeleteDormitoryActivity 等)。
  3. 退出提示对话框:

    • 点击“返回”按钮时,弹出确认对话框,询问用户是否退出。
    • 用户可以选择“否”继续留在主界面或选择“是”退出并返回登录界面。
  4. 清理用户数据:

    • 退出时清除用户的共享偏好设置,确保用户状态重置。
 public void onClick(View view) {
        switch (view.getId()) {
            case R.id.add_dormitory:
                startActivity(new Intent(this, AddDormitoryActivity.class));
                return;
            case R.id.btn_back:
                DigLogShow();
                return;
            case R.id.delete_dormitory:
                startActivity(new Intent(this, DeleteDormitoryActivity.class));
                return;
            case R.id.mod_dormitory:
                startActivity(new Intent(this, ModDormitoryActivity.class));
                return;
            case R.id.query_dormitory:
                startActivity(new Intent(this, QueryDormitoryActivity.class));
                return;
            case R.id.search_dormitory:
                startActivity(new Intent(this, SearchDormitoryActivity.class));
                return;
            default:
                return;
        }
    }

信息录入页面

功能总结

  1. 界面组件初始化:

    • 创建并绑定多个输入框(例如宿舍号、入住人、人数、类别、入住时间、楼层、备注)及按钮(保存、返回)。
  2. 初始化数据:

    • 如果活动是用来修改宿舍信息,从意图中获取现有宿舍数据并填充到输入框。
  3. 保存按钮点击事件:

    • 验证输入框是否为空,确保用户输入完整的信息。
    • 如果输入有效:
      • 检查宿舍号是否已存在,若不存在则插入新记录;若存在则更新记录。
    • 成功后显示确认对话框。
  4. 对话框:

    • 使用对话框提示用户操作成功与否,并提供继续或退出的选项。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="54.0dip"
        android:layout_alignParentTop="true"
        android:background="@color/main">

        <ImageView
            android:id="@id/iv_back"
            android:layout_width="54.0dip"
            android:layout_height="54.0dip"
            android:padding="8.0dip"
            android:src="@drawable/ic_back"
            app:tint="@color/white" />

        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="宿舍信息录入"
            android:textColor="@color/white"
            android:textSize="18.0sp"
            android:textStyle="bold" />
    </FrameLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="30.0dip"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/add_tv_number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10.0dip"
                android:text="宿舍号"
                android:textColor="#ff000000"
                android:textSize="25.0sp" />

            <EditText
                android:id="@+id/add_et_number"
                android:layout_width="200.0dip"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20.0dip"
                android:layout_toRightOf="@id/add_tv_number"
                android:hint="请输入宿舍号"
                android:textSize="24.0sp" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/add_tv_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10.0dip"
                android:text="入住人"
                android:textColor="#ff000000"
                android:textSize="25.0sp" />

            <EditText
                android:id="@+id/add_et_name"
                android:layout_width="200.0dip"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20.0dip"
                android:layout_toRightOf="@id/add_tv_name"
                android:hint="请输入姓名"
                android:textSize="24.0sp" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/add_tv_much"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10.0dip"
                android:text="人数"
                android:textColor="#ff000000"
                android:textSize="25.0sp" />

            <EditText
                android:id="@+id/add_et_much"
                android:layout_width="200.0dip"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20.0dip"
                android:layout_toRightOf="@id/add_tv_much"
                android:hint="请输入人数"
                android:textSize="24.0sp" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <TextView
                android:id="@+id/add_tv_sex"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10.0dip"
                android:text="类别"
                android:textColor="#ff000000"
                android:textSize="25.0sp" />

            <EditText
                android:id="@+id/add_et_sex"
                android:layout_width="200.0dip"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20.0dip"
                android:layout_toRightOf="@id/add_tv_sex"
                android:hint="请输入类别"
                android:textSize="24.0sp" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/add_tv_birthday"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10.0dip"
                android:text="入住时间"
                android:textColor="#ff000000"
                android:textSize="25.0sp" />

            <EditText
                android:id="@+id/add_et_birthday"
                android:layout_width="150.0dip"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20.0dip"
                android:layout_toRightOf="@id/add_tv_birthday"
                android:hint="例2023-10"
                android:textSize="24.0sp" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/add_tv_address"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10.0dip"
                android:text="楼层"
                android:textColor="#ff000000"
                android:textSize="25.0sp" />

            <EditText
                android:id="@+id/add_et_address"
                android:layout_width="200.0dip"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20.0dip"
                android:layout_toRightOf="@id/add_tv_address"
                android:hint="请输入几楼"
                android:textSize="15.0sp" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/add_tv_des"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10.0dip"
                android:text="备注"
                android:textColor="#ff000000"
                android:textSize="25.0sp" />

            <EditText
                android:id="@+id/add_et_des"
                android:layout_width="200.0dip"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20.0dip"
                android:layout_toRightOf="@id/add_tv_des"
                android:hint="请输入备注"
                android:textSize="24.0sp" />
        </RelativeLayout>
    </LinearLayout>

    <Button
        android:id="@+id/btn_save"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="40.0dip"
        android:layout_marginTop="30.0dip"
        android:layout_marginRight="40.0dip"
        android:background="@drawable/btn_common"
        android:text="录入"
        android:textColor="#ffffffff"
        android:textSize="18.0sp" />
</LinearLayout>

修改信息页面

功能总结

  1. 设置布局:

    • 调用 setContentView 来加载 activity_mod_dormitory 布局。
  2. 初始化组件:

    • 获取并初始化列表视图 (ListView) 和输入框 (EditText)。
    • 创建一个数据列表 (mData) 用于存储宿舍信息。
  3. 设置适配器:

    • 创建自定义适配器 Adapter_update 并将其设置到 ListView
  4. 数据库实例化:

    • 初始化 DbDormitory 对象,用于后续的数据库操作。
  5. 返回按钮监听:

    • 设置返回按钮的点击监听器,当用户点击时,结束当前活动。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="54.0dip"
        android:layout_alignParentTop="true"
        android:background="@color/main">

        <ImageView
            android:id="@id/iv_back"
            android:layout_width="54.0dip"
            android:layout_height="54.0dip"
            android:padding="8.0dip"
            android:src="@drawable/ic_back"
            app:tint="@color/white" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="修改信息"
            android:textColor="@color/white"
            android:textSize="18.0sp"
            android:textStyle="bold" />
    </FrameLayout>

    <LinearLayout
        android:id="@+id/rl2"
        android:layout_width="fill_parent"
        android:layout_height="50.0dip"
        android:layout_marginTop="20.0dip"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/et_update"
            android:layout_width="250.0dip"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20.0dip"
            android:background="@drawable/dialog_btn_bg"
            android:hint="请输入宿舍号"
            android:paddingLeft="10.0dip"
            android:paddingTop="10.0dip"
            android:paddingBottom="10.0dip"
            android:textSize="16.0sp">

            <requestFocus />
        </EditText>

        <ImageView
            android:id="@+id/update_iv"
            android:layout_width="40.0dip"
            android:layout_height="40.0dip"
            android:layout_marginLeft="20.0dip"
            android:layout_toRightOf="@id/et_update"
            android:onClick="onClick"
            android:src="@drawable/query" />
    </LinearLayout>

    <ListView
        android:id="@+id/update_lv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/rl2"
        android:divider="#ffcdcdcd"
        android:dividerHeight="6.0dip"
        android:padding="10.0dip" />
</LinearLayout>

查询页面

删除页面

功能总结

  1. 设置布局:

    • 使用 setContentView 方法加载 activity_delete_dormitory 布局。
  2. 初始化组件:

    • 获取 ListView 和返回按钮 (ImageView) 的引用。
  3. 初始化数据库:

    • 创建 DbDormitory 对象,用于后续的数据库操作。
  4. 初始化数据列表:

    • 创建一个空的列表 mData,用于存储宿舍信息。
  5. 设置适配器:

    • 创建自定义适配器 Adapter_del,并将其设置为 ListView 的适配器。
  6. 数据加载:

    • 调用 loadData() 方法从数据库加载数据。
  7. 设置点击监听:

    • 设置返回按钮的点击事件,结束当前活动。

  @Override
    public void onCreate(Bundle bundle) {
        // Activity 创建时初始化视图、适配器及数据
        super.onCreate(bundle);
        setContentView(R.layout.activity_delete_dormitory);
        this.listView = (ListView) findViewById(R.id.del_lv);
        ivBack = findViewById(R.id.iv_back);
        this.dbDormitory = new DbDormitory(this);
        this.mData = new ArrayList();
        PrintStream printStream = System.out;
        printStream.println("长度为:" + this.mData.size());
        Adapter_del adapter_del = new Adapter_del(this, this.mData);
        this.adapter = adapter_del;
        this.listView.setAdapter((ListAdapter) adapter_del);
        loadData(); // 加载数据
        setLVClickListener(); // 设置列表项点击监听
        ivBack.setOnClickListener(v -> {
            finish();
        });
    }

四、完整的项目源码 

👇👇👇👇👇快捷获取方式👇👇👇👇👇


http://www.kler.cn/news/323873.html

相关文章:

  • 线上报名小程序怎么做
  • Spring--boot自动配置原理案例--阿里云--starter
  • C高级(Day21)
  • 【吊打面试官系列-MySQL面试题】实践中如何优化 MySQL?
  • 基于单片机的指纹打卡系统
  • 视频分割怎么弄?国内外Top 7视频剪辑软件大盘点,新媒体必看!
  • 一键自动化配置OpenHarmony编译环境
  • 花都狮岭寄宿自闭症学校:开启孩子的生命之门
  • 给Ubuntu虚拟机设置静态IP地址(固定IP)
  • 基于ASRPRO的语音应答
  • 基于php的在线租房管理系统
  • 如何使用Apache Kafka处理实时数据
  • 探究Spring的单例设计模式--单例Bean
  • 主从蓝牙配对_笔记(HC-05)
  • 阿里云图形化管理工具(oss-browser、oss浏览器、AcceassKeyId、AccessKeySecret)
  • Android 点击其他组件让输入框失去焦点
  • 基于php摄影门户网站
  • 手游和应用出海资讯:三七新游首月收入突破700万元;领英尝试推出游戏功能以增加用户使用时长
  • leetcode:LCR 169. 招式拆解 II(python3解法)
  • 智能Ai语音机器人的应用价值有哪些?
  • 【逐行注释】扩展卡尔曼滤波EKF和粒子滤波PF的效果对比,MATLAB源代码(无需下载,可直接复制)
  • window下 php 安装 lua扩展
  • Docker容器的使用
  • 银河麒麟v10 x86制作openssh 9.9p1 rpm二进制包(内含ssh-copy-id、显示openssl版本) —— 筑梦之路
  • 初始爬虫9
  • SSE协议
  • 如何使用ssm实现校园体育赛事管理系统的设计与实现+vue
  • SpringBoot使用hutool操作FTP
  • 不将“旧”,换新家电的门槛又被TCL拉低了
  • 探索未来IT技术的浩瀚星河:一场跨越时代的数字盛宴