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

网络资源模板--Android Studio 停车场管理系统

目录

一、项目演示

二、项目测试环境

三、项目详情

四、完整的项目源码 


一、项目演示

网络资源模板--停车管理

二、项目测试环境

三、项目详情

软件已实现以下几个功能:
一、用户角色
1.1 浏览附近的景点(商场/医院/学校…);
1.2 查看景点(商场/学校…)附近的停车场;
1.3 查看停车场还有哪些车位;
1.4 预约车位;
1.5 查看有哪些车位租赁;
1.6 发布车位租赁信息;
1.7 租赁车位;
1.8 订单查看删除,以及缴费功能;
1.9 用户个人信息管理;
1.10 用户反馈;

二、管理员角色
2.1 用户管理;
2.2 地点管理;
2.3 停车场管理;
2.4 车位管理;
2.5 租赁管理;
2.6 用户反馈信息查阅;

三、数据库实现
3.1 使用Android自带数据库sqlite;

登录页

1. **视图初始化**:
   - 从布局中获取用户界面组件,包括用户名输入框、密码输入框、保存密码复选框、管理员复选框、登录按钮和注册按钮。

2. **共享偏好设置**:
   - 获取名为 `"info"` 的共享偏好设置(`SharedPreferences`)。
   - 检查是否保存了用户信息。如果用户上次勾选了“保存”,则从共享偏好中读取并填充用户名和密码到相应的输入框,并勾选保存复选框。

3. **按钮点击事件**:
   - 为登录按钮设置点击事件处理器:
     - 当用户点击登录按钮时,调用 `handleLogin` 方法进行登录处理,传入用户名、密码、管理员复选框、共享偏好设置和保存复选框状态。
   - 为注册按钮设置点击事件处理器:
     - 当用户点击注册按钮时,启动注册活动 (`RegisterActivity`)。

整体来说,该方法负责初始化用户登录界面、恢复用户上次登录的状态,并处理登录和注册的用户交互。

  private void initView() {
        EditText mUsername = findViewById(R.id.et_username);
        EditText mPassword = findViewById(R.id.et_password);
        CheckBox mSave = findViewById(R.id.cb_isSave);
        CheckBox mAdmin = findViewById(R.id.cb_isAdmin);
        Button mLogin = findViewById(R.id.btn_login);
        TextView mRegister = findViewById(R.id.btn_register);
        SharedPreferences sp = getSharedPreferences("info", 0);

        if (sp.getBoolean("isChecked", false)) {
            String username = sp.getString("username", "");
            String pwd = sp.getString("password", "");
            mUsername.setText(username);
            mPassword.setText(pwd);
            mSave.setChecked(true);
        }

        mLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                handleLogin(mUsername, mPassword, mAdmin, sp, mSave);
            }
        });

        mRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
            }
        });
    }

注册页面

1. **获取输入**:
   - 从三个输入框中获取用户名和密码(及确认密码),并去除前后空格。

2. **输入验证**:
   - 检查用户名、密码和确认密码是否为空:
     - 如果全部为空,显示提示消息“请检查输入信息”。
   - 检查密码和确认密码是否一致:
     - 如果一致,继续进行注册。
     - 如果不一致,显示提示消息“两次输入密码不一致”。

3. **账户唯一性检查**:
   - 使用数据库助手检查数据库中是否已存在相同用户名的账户:
     - 如果不存在,则插入新用户记录(创建 `UserBean` 对象并保存)。
     - 显示注册成功的消息,并结束当前活动(`finish()`)。
     - 如果已存在,则显示提示消息“账户已被注册”。

整体来说,该方法负责处理用户注册的逻辑,包括输入验证、数据库检查和成功提示,确保注册过程的正确性和用户体验。

  public void handleRegister(EditText mUsername, EditText mPassword, EditText mPassword2, View v) {
        String username = mUsername.getText().toString().trim();
        String password = mPassword.getText().toString().trim();
        String password2 = mPassword2.getText().toString().trim();
        if (username.isEmpty() && password.isEmpty() && password2.isEmpty()) {
            ToastUtil.show(this, "请检查输入信息");
        } else if (password.equals(password2)) {
            if (!DatabaseUtils.getHelper().isExistsBySQL(UserBean.class, "username=?", new String[]{username}).booleanValue()) {
                DatabaseUtils.getHelper().insert(new UserBean(username, password, "consumer", 100.0d));
                ToastUtil.show(this, "注册成功");
                finish();
            } else {
                ToastUtil.show(this, "账户已被注册");
            }
        } else {
            ToastUtil.show(this, "两次输入密码不一致");
        }
    }

用户首页

### 1. `setupBanner(View view)`
- **初始化横幅**:
  - 从布局中获取横幅组件(`Banner`)。
  - 创建一个整数列表,并添加两张横幅图片资源。
  - 设置横幅的图片资源。

- **圆角设置**:
  - 使用 `ViewOutlineProvider` 为横幅设置圆角矩形的外观,圆角半径为20。

- **图片加载**:
  - 设置自定义的图片加载器,使用 Glide 加载横幅图片到指定的 `ImageView` 中。

- **启动横幅**:
  - 启动横幅显示,开始轮播。

### 2. `setupWeather(View view)`
- **获取和显示天气信息**:
  - 初始化 `WeatherBean` 对象,通过当前星期几获取天气数据。
  - 将天气情况、天气温度和限行信息显示在相应的 `TextView` 中。

### 3. `setupCardViewClickListeners(View view)`
- **设置卡片视图的点击事件**:
  - 定义卡片视图的 ID 数组和相应的类型及容器代码。
  - 遍历每个卡片视图 ID,设置点击监听器:
    - 如果容器代码不为 -1,调用 `ContainerActivity.go` 方法,传递相应的代码。
    - 如果为 -1,则调用 `openOtherActivity` 方法,打开对应类型的其他活动。

整体来说,这些方法负责初始化和配置主页的各个部分,提供用户友好的界面和交互体验。

  private void setupBanner(View view) {
        Banner banner = view.findViewById(R.id.home_banner);
        List<Integer> images = new ArrayList<>();
        images.add(R.drawable.banner1);
        images.add(R.drawable.banner2);
        banner.setImages(images);
        banner.setOutlineProvider(new ViewOutlineProvider() {
            @Override
            public void getOutline(View view, Outline outline) {
                outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), 20);
            }
        });
        banner.setClipToOutline(true);
        banner.setImageLoader(new ImageLoader() {
            @Override
            public void displayImage(Context context, Object path, ImageView imageView) {
                Glide.with(context).load((Integer) path).into(imageView);
            }
        });
        banner.start();
    }

    private void setupWeather(View view) {
        WeatherBean weatherBean = WeatherBean.initWeather(DateUtils.getWeekDay());
        ((TextView) view.findViewById(R.id.home_weather)).setText(weatherBean.getWeather());
        ((TextView) view.findViewById(R.id.home_weather_number)).setText(weatherBean.getWeatherNumber());
        ((TextView) view.findViewById(R.id.home_limit_number)).setText(weatherBean.getLimitLine());
    }

    private void setupCardViewClickListeners(View view) {
        int[] cardViewIds = {
                R.id.home_attractions, R.id.home_shop, R.id.home_Hospital,
                R.id.home_school, R.id.home_train, R.id.home_hotel,
                R.id.home_subway, R.id.home_other
        };
        String[] types = {"", "商场", "医院", "学校", "火车站", "酒店", "", ""};
        int[] containerCodes = {1, -1, -1, -1, -1, -1, 4, 3};

        for (int i = 0; i < cardViewIds.length; i++) {
            int id = cardViewIds[i];
            String type = types[i];
            int code = containerCodes[i];
            view.findViewById(id).setOnClickListener(v -> {
                if (code != -1) {
                    ContainerActivity.go(getContext(), "", code);
                } else {
                    openOtherActivity(type);
                }
            });
        }
    }

四、完整的项目源码 

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


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

相关文章:

  • 基于深度学习的视频内容理解
  • 【移动端】事件基础
  • 什么是区块链桥?
  • 系统设计,如何设计一个秒杀功能
  • SpringBoot基础(四):bean的多种加载方式
  • 【Redis】持久化(上)---RDB
  • 【AI知识点】如何对包含异常值的数据进行归一化处理?
  • 使用 Python 实现无人机避障的人工势场算法
  • 简洁之道 - React Hook Form
  • 0108 Spring Boot启动过程
  • wsl中git difftool調用beyond compare
  • 贪心算法.
  • Metal 之旅之MTLLibrary
  • 【目标检测】集装箱编码检测数据集3420张VOC+YOLO格式
  • 智能制造的人机料法环的内涵
  • php获取远程https内容时提示 PHP Warning: copy(): Unable to find the wrapper “https“ 解决方法
  • Vue/组件的生命周期
  • 【数据结构】【队列】算法汇总
  • 电脑提示d3dcompiler_47.dll缺失怎么修复,仔细介绍dll的解决方法
  • netty之Netty与SpringBoot整合