Vue+SpringBoot создает интеллектуальную систему управления парковками (с документацией по исходному коду)
Vue+SpringBoot создает интеллектуальную систему управления парковками (с документацией по исходному коду)

Домашняя страница автораDesigner Сяо Чжэн Об авторе:JavaИнженер-программист полного стека,Из Нинбо, Чжэцзян,Отвечает за разработку проекта ОА управляющей компании.,Фокус на программном обеспечении частичная разработка, настройка системы, удаленное техническое руководство. CSDN Academy, сертифицированный инструктор Blue Bridge Cloud Course, высококлассный создатель в области полного стека.

Исходный код проекта и загрузка документации:https://download.csdn.net/download/qq_41464123/87894045

Сообщение об обсуждении проекта/предварительном просмотре документа:https://bbs.csdn.net/topics/615889652

Номер проекта:S005

1. Аннотация

Благодаря непрерывному развитию экономики нашей страны, уровень жизни людей также улучшается с каждым днем, их желание ходить по магазинам и путешествовать становится все сильнее и сильнее, а также растет спрос на транспорт. В некоторых крупных коммерческих местах поток людей и транспортных средств чрезвычайно велик, а также возросла нагрузка на дороги, поэтому решение проблемы городских парковок становится все более актуальным. С этой точки зрения, решение проблемы парковки в торговых центрах и других местах с большим потоком людей является ключом к решению проблемы заторов на дорогах.

Подводя итог, можно сказать, что разработка интеллектуальной системы управления парковками может упростить процесс парковки для людей и повысить эффективность парковки, тем самым решая проблему заторов, экономя время людей и косвенно способствуя экономическому развитию. Система, изучаемая в этой статье, была разработана с использованием JAVA, а применение интеллектуальной системы управления парковками дало замечательные результаты. Благодаря работе интеллектуальной системы управления парковкой, парковка реализует автоматизацию въезда и выезда транспортных средств, усовершенствование управления парковкой и стандартизацию процессов зарядки, тем самым повышая эффективность и точность управления парковкой и обеспечивая более полная и точная основа для поддержки данных по управлению парковками.

  • внешний интерфейс:Vue 2.7.10
  • задняя часть:Spring Boot 3.1.10
  • база данных:MySQL 8.0.31

2. Содержание исследования

Можно ли парковкууправлятьсистемавключеноМодуль управления владельцем автомобиля, модуль управления транспортным средством, модуль парковки, модуль записи парковки, модуль IC-карты, модуль сообщения об утере IC-карты,Также включает собственное управление пользователем системы, управление отделом, управление ролью, управление меню. лат, журнал управления, словарь данных управлять, управление файлами, отображение диаграммы и другие базовые модули.,Умная парковка управляетсистемой ролевого контроля доступа,Для автовладельцев и персонала парковок,Разрешения могут быть уточнены до уровня кнопок.,Вы можете настраивать роли и назначать разрешения.,Система подходит для разработки точных требований к ограничениям разрешений.

S005 Запись экрана интеллектуальной системы управления парковкой

A. Функции терминала владельца автомобиля

В том числе: модуль моего автомобиля, модуль парковки, моя IC-карта и другие модули.

  1. Мой модуль автомобиль: используется владельцами автомобилей для запроса данных о своих транспортных средствах, внешний вид. интерфейсиспользоватьView Используйте компонент «Таблица» библиотеки компонентов пользовательского интерфейса для реализации предварительного просмотра таблицы, включая номерной знак транспортного средства, водительские права, тип транспортного средства, имя владельца и т. д. Если у вас есть какие-либо возражения, вы можете обратиться к компоненту «Кнопка» и запросить возврат. частьAPI-интерфейс для реализации функций.
  2. Модуль «Моя парковка»: используется автовладельцами для запроса парковки собственных транспортных средств, данные внешнего вида. интерфейсиспользоватьView Это реализуется с помощью компонента «Форма» библиотеки компонентов пользовательского интерфейса. Отправьте данные формы, введенные пользователем, включая номерной знак транспортного средства, время начала парковки, время окончания парковки, плату за парковку и т. д. Если у вас есть какие-либо возражения. Чтобы получить данные, вы можете обратиться к сотрудникам системы управления для проверки.
  3. Мой парковочный модуль: используется владельцами автомобилей для запроса данных своих собственных IC-карт, внешний вид. интерфейсиспользоватьView Это реализуется с использованием компонента «Список» библиотеки компонентов пользовательского интерфейса, включающего номер IC-карты, дату выпуска карты, лицо, выдавшее карту, номер телефона службы и т. д. В случае утери IC-карты процедуру сообщения об утере можно инициировать онлайн.

B. Функция парковочного персонала

В том числе: управление транспортными средствами, управление парковкой, модули управления IC-картами. (Совет: вы можете добавлять роли самостоятельно и визуально назначать разрешения меню)

  1. Управление транспортным средством: принимает заявки от владельцев транспортных средств на добавление, редактирование и удаление транспортных средств. Добавления, удаления, модификации и запросы выполняются mybatis.
  2. Управление парковкой: принять бизнес-обновление данных о парковке, предложенное владельцем автомобиля, обновить функцию сзади. часть реализована mybatis.
  3. IC-карта управляет: принимает отчет о потерях, открытие карты и пополнение баланса, предложенное владельцем автомобиля, функция задняя. часть реализована mybatis.

C. Функции системного администратора

На основе всех функций владельцев автомобилей и персонала парковки можно изменять и поддерживать разрешения системных ролей, обновлять правила взимания платы за парковку, внедрять управление доступом на основе ролей RABC, а для реализации контроля аутентификации использовать структуру безопасности Spring.

1. Модуль парковочного места

Парковочные места являются неотъемлемой частью города и имеют большое значение в жизни, работе и мобильности города и людей. С ускорением урбанизации и увеличением количества автомобилей проблема городских заторов становится все более очевидной. Если имеется достаточно парковочных мест, можно лучше направить движение, предотвратить дорожный хаос и уменьшить заторы. Эффективность вождения транспортного средства в городе зависит от количества и расположения парковочных мест. Хорошее планирование и управление парковочными местами может повысить эффективность парковки транспортных средств, уменьшить заторы на дорогах и повысить эффективность городского транспорта. Наличие парковочных мест напрямую влияет на удобство поездок граждан. Когда парковочных мест мало, горожанам сложно выехать. Если парковочных мест будет достаточно, поездка граждан будет более удобной и комфортной. Наличие парковочных мест также повлияет на привлекательность территории торгового центра. В случае нехватки парковочных мест потребители будут выбирать другие торговые центры, что повлияет на экономическое развитие.

2. Автомобильный модуль

Модуль транспортного средства является одним из ключевых компонентов интеллектуальной системы управления парковкой и используется для записи, управления и мониторинга информации и состояния транспортного средства. Модуль транспортного средства может автоматизировать въезд и выезд транспортных средств, а также обработку данных, тем самым повышая эффективность и точность управления парковкой. Благодаря модулю транспортного средства парковка может предоставить пользователям более умные и удобные услуги, сокращая время ожидания и количество неприятных ощущений. Модуль транспортного средства может эффективно контролировать поток транспортных средств, уменьшать заторы на дорогах и решать проблемы заторов на городском транспорте. Модули транспортных средств могут записывать и контролировать въезд и выезд транспортных средств, что может снизить проблемы безопасности, такие как вторжение на территорию и угон транспортного средства. Модуль транспортного средства имеет важное исследовательское значение в системе управления парковками. Он может повысить эффективность и качество обслуживания парковок, уменьшить заторы на городских дорогах, усилить контроль и управление безопасностью, а также обеспечить поддержку данных для управления парковками.

3. Модуль записи парковки.

Записи о парковке — это эффективные записи и управление местом парковки транспортных средств, временем пребывания, статусом выставления счетов и другой информацией. Записи о парковке позволяют владельцам автомобилей точно знать, где и когда были припаркованы их автомобили, предотвращая кражу транспортных средств и другие проблемы безопасности. С помощью записей о парковке можно получить такую ​​информацию, как использование парковочных мест и поток парковок, что позволяет менеджерам парковок лучше анализировать и формулировать стратегии парковки, а также поддерживать порядок и безопасность парковки. Записи о парковке также можно использовать для усовершенствованного управления, например, для улучшения использования парковок и эффективности управления за счет дифференцированной политики ценообразования для конкретных часов пик и конкретных ситуаций. С помощью записей о парковке мы можем понять привычки и потребности владельцев автомобилей в парковке, обеспечить более качественные услуги парковки для владельцев автомобилей, а также улучшить качество обслуживания и удобство пользования парковкой.

4. Модуль IC-карты

IC-карта — это аббревиатура смарт-карты. Владельцы автомобилей могут иметь одну или несколько IC-карт для оплаты парковки. Поля IC-карты включают номер IC-карты, дату выдачи карты, владельца, ответственное лицо, номер телефона службы, баланс, создание автомобиля. Владелец может подать заявку на получение новой IC-карты в зависимости от человека и времени создания, а администратор парковки может добавлять, сообщать об утере, редактировать и условно запрашивать IC-карту владельца автомобиля.

5. Модуль сообщения о потере IC-карты

IC-карта является физической картой, и владелец автомобиля неизбежно потеряет или повредит ее. В этом случае оплата парковки не может быть завершена. Для этого необходимо создать модуль отчета об утере IC-карты, чтобы заменить отчетную карточку владельца автомобиля. Новая IC-карта Поля отчета об утере IC-карты включают исходный номер карты, номер новой карты, заявителя, дату подачи заявления, статус заявки, статус рассмотрения, ответственное лицо и время создания. Владелец автомобиля может выбрать IC-карту под своей картой. имя, чтобы подать заявку на отчет о потере, а администратор парковки может просмотреть заявку владельца автомобиля на отчет о потере IC-карты.

3. Дисплей интерфейса

3.1 Войдите и зарегистрируйтесь

Код Vue для интерфейса входа выглядит следующим образом.

Язык кода:javascript
копировать
<Tabs v-model="tabName" @on-click="changeTabName" class="loginTab">
    <TabPane label="Пароль аккаунта Авторизоваться" name="userAndPassword">
        <Form ref="usernameLoginForm" :model="form" :rules="usernameLoginFormRules" class="form">
            <FormItem prop="username" class="loginInput">
                <Row>
                    <Input v-model="form.username" size="large" clearable placeholder="Авторизоватьсясчет" autocomplete="off">
                    <Icon class="iconfont icon-yonghu" slot="prefix" style="line-height:50px" />
                    </Input>
                </Row>
            </FormItem>
            <FormItem prop="password">
                <Input style="height:50px;line-height:50px" type="password" v-model="form.password" size="large" Placeholder="Пожалуйста, введите пароль для Авторизации" password autocomplete="off">
                <Icon class="iconfont icon-mima1" slot="prefix" style="line-height:50px" />
                </Input>
            </FormItem>
            <FormItem prop="imgCode">
                <Row type="flex" justify="space-between" style="align-items: center;overflow: hidden;">
                    <Input v-model="form.imgCode" size="large" clearable Placeholder="Пожалуйста, введите код подтверждения" :maxlength="10" class="input-verify" />
                    <div class="code-image" style="position:relative;font-size:12px;">
                        <Spin v-if="loadingCaptcha" fix></Spin>
                        <img :src="captchaImg" @click="getCaptchaImg" alt="Не удалось загрузить код подтверждения" style="width:110px;cursor:pointer;display:block" />
                    </div>
                </Row>
            </FormItem>
        </Form>
        <Row type="flex" justify="space-between" align="middle">
            <Checkbox v-model="saveLogin" size="large">Это автоматически?Авторизоваться</Checkbox>
            <router-link to="/regist">
                <a class="forget-pass">没有счет?Нажмите здесь, чтобы зарегистрироваться</a>
            </router-link>
        </Row>
        <Row>
            <Button class="login-btn" type="primary" size="large" :loading="loading" @click="submitLogin" long>
                <span v-if="!loading" style="letter-spacing:20px; font-weight:bold">Авторизоваться</span>
                <span v-else>являются Авторизоваться...пожалуйста, подождите}</span>
            </Button>
        </Row>
    </TabPane>
    <TabPane label="Код сканирования Enterprise WeChat" name="mobile">
        <div id="qywxsmqywxsm"></div>
    </TabPane>
</Tabs>

Основной код для запроса пользователей (автовладельцев) выглядит следующим образом.

Язык кода:javascript
копировать
@RequestMapping(value = "/getUserList", method = RequestMethod.GET)
@ApiOperation(value = «Опрос всех автовладельцев»)
public Result<List<User>> getUserList(@RequestParam Integer type){
    QueryWrapper<User> qw = new QueryWrapper<>();
    qw.eq("type",type);
    return new ResultUtil<List<User>>().setData(iUserService.list(qw));
}

3.2 Модуль автомобиля

Язык кода:javascript
копировать
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = «Проверить автомобиль»)
public Result<IPage<Vehicle>> getByPage(@ModelAttribute Vehicle vehicle ,@ModelAttribute PageVo page){
    QueryWrapper<Vehicle> qw = new QueryWrapper<>();
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<User> userQw = new QueryWrapper<>();
    userQw.eq("id",currUser.getId());
    userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND role_id = '1536606659751841799'");
    if(iUserService.count(userQw) < 1L) {
        qw.eq("owner_id",currUser.getId());
    }
    if(!ZwzNullUtils.isNull(vehicle.getCarNumber())) {
        qw.like("car_number",vehicle.getCarNumber());
    }
    if(!ZwzNullUtils.isNull(vehicle.getCarType())) {
        qw.like("car_type",vehicle.getCarType());
    }
    if(!ZwzNullUtils.isNull(vehicle.getOwnerName())) {
        qw.like("owner_name",vehicle.getOwnerName());
    }
    IPage<Vehicle> data = iVehicleService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<Vehicle>>().setData(data);
}
Язык кода:javascript
копировать
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = «Добавить новый автомобиль»)
public Result<Vehicle> insert(Vehicle vehicle){
    User user = iUserService.getById(vehicle.getOwnerId());
    if(user == null) {
        return ResultUtil.error("Владелец не существует");
    }
    vehicle.setOwnerName(user.getNickname());
    iVehicleService.saveOrUpdate(vehicle);
    return new ResultUtil<Vehicle>().setData(vehicle);
}
Язык кода:javascript
копировать
@RequestMapping(value = "/update", method = RequestMethod.POST)
@ApiOperation(value = «Редактировать автомобиль»)
public Result<Vehicle> update(Vehicle vehicle){
    User user = iUserService.getById(vehicle.getOwnerId());
    if(user == null) {
        return ResultUtil.error("Владелец не существует");
    }
    vehicle.setOwnerName(user.getNickname());
    iVehicleService.saveOrUpdate(vehicle);
    return new ResultUtil<Vehicle>().setData(vehicle);
}

3.3 Модуль парковочного места

Язык кода:javascript
копировать
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = «Проверьте парковочное место»)
public Result<IPage<ParkingSpace>> getByPage(@ModelAttribute ParkingSpace parkingSpace ,@ModelAttribute PageVo page){
    QueryWrapper<ParkingSpace> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(parkingSpace.getTitle())) {
        qw.like("title",parkingSpace.getTitle());
    }
    if(!ZwzNullUtils.isNull(parkingSpace.getStatus())) {
        qw.eq("status",parkingSpace.getStatus());
    }
    IPage<ParkingSpace> data = iParkingSpaceService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<ParkingSpace>>().setData(data);
}
Язык кода:javascript
копировать
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = «Новое парковочное место»)
public Result<ParkingSpace> insert(ParkingSpace parkingSpace){
    if(Objects.equals(0, parkingSpace.getSortOrder().compareTo(BigDecimal.ZERO))) {
        parkingSpace.setSortOrder(BigDecimal.valueOf(iParkingSpaceService.count() + 1L));
    }
    iParkingSpaceService.saveOrUpdate(parkingSpace);
    return new ResultUtil<ParkingSpace>().setData(parkingSpace);
}

3.4 Модуль данных парковки

Язык кода:javascript
копировать
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = «Проверьте записи о парковке»)
public Result<IPage<ParkingData>> getByPage(@ModelAttribute ParkingData parkingData ,@ModelAttribute PageVo page){
    QueryWrapper<ParkingData> qw = new QueryWrapper<>();
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<User> userQw = new QueryWrapper<>();
    userQw.eq("id",currUser.getId());
    userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND role_id = '1536606659751841799'");
    if(iUserService.count(userQw) < 1L) {
        qw.eq("owner_id",currUser.getId());
    }
    if(!ZwzNullUtils.isNull(parkingData.getCarNumber())) {
        qw.like("car_number",parkingData.getCarNumber());
    }
    if(!ZwzNullUtils.isNull(parkingData.getOwner())) {
        qw.like("owner",parkingData.getOwner());
    }
    IPage<ParkingData> data = iParkingDataService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<ParkingData>>().setData(data);
}
Язык кода:javascript
копировать
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = «Добавить запись о парковке»)
public Result<ParkingData> insert(ParkingData parkingData){
    Vehicle car = iVehicleService.getById(parkingData.getCarId());
    if(car == null) {
        return ResultUtil.error("Транспортное средство не существует");
    }
    // Определить баланс
    QueryWrapper<IcCard> icQw = new QueryWrapper<>();
    icQw.eq("user_id",car.getOwnerId());
    icQw.last("limit 1");
    IcCard ic = iIcCardService.getOne(icQw);
    if(ic == null) {
        return ResultUtil.error("У вас нет IC-карты, подайте заявку");
    }
    if(parkingData.getCost().compareTo(ic.getBalance()) > 0) {
        return ResultUtil.error("Баланс вашей IC-карты недостаточен");
    }
    // Записыватьданные    parkingData.setCarNumber(car.getCarNumber());
    parkingData.setOwnerId(car.getOwnerId());
    parkingData.setOwner(car.getOwnerName());
    iParkingDataService.saveOrUpdate(parkingData);
    ic.setBalance(ic.getBalance().subtract(parkingData.getCost()));
    iIcCardService.saveOrUpdate(ic);
    return new ResultUtil<ParkingData>().setData(parkingData);
}

3.5 Модуль файла IC-карты

Язык кода:javascript
копировать
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = «Карта запроса IC»)
public Result<IPage<IcCard>> getByPage(@ModelAttribute IcCard icCard ,@ModelAttribute PageVo page){
    QueryWrapper<IcCard> qw = new QueryWrapper<>();
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<User> userQw = new QueryWrapper<>();
    userQw.eq("id",currUser.getId());
    userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND role_id = '1536606659751841799'");
    if(iUserService.count(userQw) < 1L) {
        qw.eq("user_id",currUser.getId());
    }
    if(!ZwzNullUtils.isNull(icCard.getCarNumber())) {
        qw.like("car_number",icCard.getCarNumber());
    }
    if(!ZwzNullUtils.isNull(icCard.getWorkUser())) {
        qw.like("work_user",icCard.getWorkUser());
    }
    IPage<IcCard> data = iIcCardService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<IcCard>>().setData(data);
}
Язык кода:javascript
копировать
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = «Добавить IC-карту»)
public Result<IcCard> insert(IcCard icCard){
    User user = iUserService.getById(icCard.getUserId());
    if(user == null) {
        return ResultUtil.error("Владелец не существует");
    }
    icCard.setUserName(user.getNickname());
    User currUser = securityUtil.getCurrUser();
    icCard.setWorkUser(currUser.getNickname());
    icCard.setDate(DateUtil.today());
    iIcCardService.saveOrUpdate(icCard);
    return new ResultUtil<IcCard>().setData(icCard);
}
Язык кода:javascript
копировать
@RequestMapping(value = "/recharge", method = RequestMethod.POST)
@ApiOperation(value = «пополнить»)
public Result<Object> recharge(@RequestParam String id, @RequestParam BigDecimal number){
    IcCard ic = iIcCardService.getById(id);
    if(ic == null) {
        return ResultUtil.error("IC-карта не существует");
    }
    ic.setBalance(ic.getBalance().add(number));
    iIcCardService.saveOrUpdate(ic);
    return ResultUtil.success();
}

3.6 Модуль сообщения о потере IC-карты

Язык кода:javascript
копировать
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = «Запрос сообщить об утере IC-карты»)
public Result<IPage<IcCardLoss>> getByPage(@ModelAttribute IcCardLoss icCardLoss ,@ModelAttribute PageVo page){
    QueryWrapper<IcCardLoss> qw = new QueryWrapper<>();
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<User> userQw = new QueryWrapper<>();
    userQw.eq("id",currUser.getId());
    userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND role_id = '1536606659751841799'");
    if(iUserService.count(userQw) < 1L) {
        qw.eq("apply_id",currUser.getId());
    }
    if(!ZwzNullUtils.isNull(icCardLoss.getCarNumber())) {
        qw.like("car_number",icCardLoss.getCarNumber());
    }
    if(!ZwzNullUtils.isNull(icCardLoss.getApplyUser())) {
        qw.like("apply_user",icCardLoss.getApplyUser());
    }
    if(!ZwzNullUtils.isNull(icCardLoss.getStatus())) {
        qw.eq("status",icCardLoss.getStatus());
    }
    IPage<IcCardLoss> data = iIcCardLossService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<IcCardLoss>>().setData(data);
}
Язык кода:javascript
копировать
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = «Отчет о потере новой IC-карты»)
public Result<IcCardLoss> insert(IcCardLoss icCardLoss){
    IcCard ic = iIcCardService.getById(icCardLoss.getCarId());
    if(ic == null) {
        return ResultUtil.error("IC-карта не существует");
    }
    icCardLoss.setCarNumber(ic.getCarNumber());
    User currUser = securityUtil.getCurrUser();
    icCardLoss.setApplyId(currUser.getId());
    icCardLoss.setApplyUser(currUser.getNickname());
    iIcCardLossService.saveOrUpdate(icCardLoss);
    return new ResultUtil<IcCardLoss>().setData(icCardLoss);
}
Язык кода:javascript
копировать
@RequestMapping(value = "/audit", method = RequestMethod.POST)
@ApiOperation(value = «Аудит отчета об утере IC-карты»)
public Result<Object> audit(@RequestParam String id){
    IcCardLoss cl = iIcCardLossService.getById(id);
    if(cl == null) {
        return ResultUtil.error("Убыточный ордер не существует");
    }
    cl.setStatus("Проверено");
    iIcCardLossService.saveOrUpdate(cl);
    IcCard ic = iIcCardService.getById(cl.getCarId());
    if(ic != null) {
        ic.setCarNumber(cl.getNewNumber());
        iIcCardService.saveOrUpdate(ic);
    }
    return ResultUtil.success();
}

3.7 Базовые модули системы

Интеллектуальная система управления парковками – это высокотехнологичный программный продукт, используемый для комплексного обслуживания парковок под компьютерным управлением. По словам специалистов, интеллектуальная система управления парковками была запущена в 2013 году. Система постоянно совершенствуется, и ее функции все больше соответствуют требованиям. В соответствии с реальными потребностями работа интеллектуальной системы управления парковкой стала более удобной для пользователя.

В нашей стране системы управления интеллектуальными парковками постепенно развивались с появлением большого количества общественных парковок в Китае. Первоначальная система управления интеллектуальными парковками в Китае постепенно развивалась на основе внедрения и усвоения аналогичных зарубежных систем, и на этой основе непрерывно. улучшение имеет более всеобъемлющее значение. В целом разработка интеллектуальных систем управления парковкой и стандартного программного обеспечения находится на высокой стадии, но эти требования не статичны, и интеллектуальные системы управления парковкой будут продолжать развиваться с течением времени.

boy illustration
Как настроить размер экрана в PR. Учебное пособие по настройке размера видео в PR [подробное объяснение]
boy illustration
Элегантный и мощный: упростите операции ElasticSearch с помощью easy-es
boy illustration
Проект аутентификации по микросервисному токену: концепция и практика
boy illustration
【Java】Решено: org.springframework.http.converter.HttpMessageNotWritableException.
boy illustration
Изучите Kimi Smart Assistant: как использовать сверхдлинный текст, чтобы открыть новую сферу эффективной обработки информации
boy illustration
Начало работы с Docker: использование томов данных и монтирования файлов для хранения и совместного использования данных
boy illustration
Использование Python для реализации автоматической публикации статей в публичном аккаунте WeChat
boy illustration
Разберитесь в механизме и принципах взаимодействия потребителя и брокера Kafka в одной статье.
boy illustration
Spring Boot — использование Resilience4j-Circuitbreaker для реализации режима автоматического выключателя_предотвращения каскадных сбоев
boy illustration
13. Springboot интегрирует Protobuf
boy illustration
Примечание. Инструмент управления батареями Dell Dell Power Manager
boy illustration
Общая интерпретация класса LocalDate [java]
boy illustration
[Базовые знания ASP.NET Core] -- Веб-API -- Создание и настройка веб-API (1)
boy illustration
Настоящий бой! Подключите Passkey к своему веб-сайту для безопасного входа в систему без пароля.
boy illustration
Руководство по настройке Nginx: как найти, интерпретировать и оптимизировать настройки Nginx в Linux
boy illustration
Typecho отображает использование памяти сервера
boy illustration
Как вставить элемент перед указанным ключом в ассоциативный массив в PHP
boy illustration
swagger2 экспортирует API как текстовый документ (реализация Java) [легко понять]
boy illustration
Выбор фреймворка nodejs Express koa egg MidwayJS сравнение NestJS
boy illustration
Руководство по загрузке, установке и использованию SVN «Рекомендуемая коллекция»
boy illustration
Интерфейс PHPforwarding_php отправляет запрос на получение
boy illustration
Создавайте и защищайте связь в реальном времени с помощью SignalR и Azure Active Directory.
boy illustration
ВичатПубличная платформаразвивать(три)——ВичатQR-кодгенерировать&Сканировать кодсосредоточиться на
boy illustration
[Углубленное понимание Java IO] Используйте InputStreamReader для чтения содержимого файла и легкого выполнения задач преобразования текста.
boy illustration
сравнение строк PHP
boy illustration
9 сценариев асинхронного сбоя @Async
boy illustration
Эффективная обработка запланированных задач: углубленное изучение секретов библиотеки APScheduler на Python
boy illustration
Рекомендации по облегченному артефакту развязки внутренних компонентов Spring Event (событие Spring)
boy illustration
Go: Лесоруб-лесоруб на колесах Введение
boy illustration
Основы серверной разработки: технология кэширования, которую должен освоить каждый программист