目录
一、项目演示
二、项目测试环境
三、项目详情
四、完整的项目源码
一、项目演示
网络资源模板--宿舍管理系统
二、项目测试环境

三、项目详情
登录注册页面

### 功能总结
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();
            }
        });
    }首页

功能总结
-  界面组件初始化: - 创建并绑定多个按钮,用于不同的宿舍管理操作(添加、删除、修改、查询、搜索)。
 
-  按钮点击事件: - 每个按钮绑定相应的点击事件,点击后启动不同的活动(例如 AddDormitoryActivity、DeleteDormitoryActivity等)。
 
- 每个按钮绑定相应的点击事件,点击后启动不同的活动(例如 
-  退出提示对话框: - 点击“返回”按钮时,弹出确认对话框,询问用户是否退出。
- 用户可以选择“否”继续留在主界面或选择“是”退出并返回登录界面。
 
-  清理用户数据: - 退出时清除用户的共享偏好设置,确保用户状态重置。
 
 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;
        }
    }信息录入页面

功能总结
-  界面组件初始化: - 创建并绑定多个输入框(例如宿舍号、入住人、人数、类别、入住时间、楼层、备注)及按钮(保存、返回)。
 
-  初始化数据: - 如果活动是用来修改宿舍信息,从意图中获取现有宿舍数据并填充到输入框。
 
-  保存按钮点击事件: - 验证输入框是否为空,确保用户输入完整的信息。
- 如果输入有效: 
    - 检查宿舍号是否已存在,若不存在则插入新记录;若存在则更新记录。
 
- 成功后显示确认对话框。
 
-  对话框: - 使用对话框提示用户操作成功与否,并提供继续或退出的选项。
 
<?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>修改信息页面

功能总结
-  设置布局: - 调用 setContentView来加载activity_mod_dormitory布局。
 
- 调用 
-  初始化组件: - 获取并初始化列表视图 (ListView) 和输入框 (EditText)。
- 创建一个数据列表 (mData) 用于存储宿舍信息。
 
- 获取并初始化列表视图 (
-  设置适配器: - 创建自定义适配器 Adapter_update并将其设置到ListView。
 
- 创建自定义适配器 
-  数据库实例化: - 初始化 DbDormitory对象,用于后续的数据库操作。
 
- 初始化 
-  返回按钮监听: - 设置返回按钮的点击监听器,当用户点击时,结束当前活动。
 
<?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>查询页面

删除页面

功能总结
-  设置布局: - 使用 setContentView方法加载activity_delete_dormitory布局。
 
- 使用 
-  初始化组件: - 获取 ListView和返回按钮 (ImageView) 的引用。
 
- 获取 
-  初始化数据库: - 创建 DbDormitory对象,用于后续的数据库操作。
 
- 创建 
-  初始化数据列表: - 创建一个空的列表 mData,用于存储宿舍信息。
 
- 创建一个空的列表 
-  设置适配器: - 创建自定义适配器 Adapter_del,并将其设置为ListView的适配器。
 
- 创建自定义适配器 
-  数据加载: - 调用 loadData()方法从数据库加载数据。
 
- 调用 
-  设置点击监听: - 设置返回按钮的点击事件,结束当前活动。
 
  @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();
        });
    }
四、完整的项目源码
👇👇👇👇👇快捷获取方式👇👇👇👇👇



![[大语言模型-论文精读] Diffusion Model技术-通过时间和空间组合扩散模型生成复杂的3D人物动作](https://i-blog.csdnimg.cn/direct/036b96f856d24e0da802ef18ab88d59b.png)












![[spring]用MyBatis XML操作数据库 其他查询操作 数据库连接池 mysql企业开发规范 动态sql](https://i-blog.csdnimg.cn/direct/f2b12158898c4aec9f16b03f8f0f30c2.png)


