Проект GUI (ООП)
1200 UAHНаписать программу, которая будет служить для управления застройщиком сетью жилых комплексов. Застройщик может владеть несколькими микрорайонами, а в составе микрорайонов может быть много блоков, в которых имеется любое (конечное) количество квартир для сдачи в аренду. В каждой комнате может проживать любое количество людей, информация о которых должна храниться (объекты класса Person), однако всегда первым человеком, который начинает аренду квартиры, является лицо, ответственное за плату за аренду.
В рамках аренды квартиры (только если человек арендует квартиру в пределах микрорайона) предусмотрена возможность дополнительной аренды закрытого парковочного места, в рамках которого можно арендовать транспортные средства, а также различные предметы.
Каждая квартира и парковочное место имеют информацию о своей полезной площади, а также уникальный идентификационный номер, с помощью которого мы можем однозначно определить объект, символизирующий квартиру или парковочное место.
Арендатор может свободно регистрировать и выписывать людей из квартиры, а также, если у него есть парковочное место, он может взымать и изымать предметы и транспортные средства. У каждого человека может быть арендовано несколько квартир и парковочных мест, если суммарное количество арендованных квартир и парковочных мест конкретным лицом (арендатором) не превышает 5. В каждой комнате может быть только один арендатор за один раз.
Необходимо обеспечить, чтобы идентификаторы помещений были уникальными и создавались автоматически при создании объекта типа Mieszkanie и MiejsceParkingowe. Размер полезной площади в случае указанных типов помещений должен быть предоставлен при создании объекта помещения.
Возможны два способа указать размер комнаты:
* путем подачи объема в кубических метрах
* путем указания размеров помещения в виде длины, ширины и высоты после размещения (для простоты предполагаем, что помещение представляет собой кубоид. Таким образом, полезная площадь помещения вычисляется при создании объекта на основе передаваемых значений).
Помещение для конкретного арендатора также имеет дату начала аренды и дату окончания аренды. Если дата окончания срока действия аренды истекает, то выдается письмо (объект типа File), которое записывается в объект класса, определяющий конкретного владельца.
В задаче также должен быть реализован механизм прошедшего времени за промежуточными потоками. Нить должна каждые 5 секунд перемещать дату на 1 день вперед, имитируя поток времени. Параллельно должны каждые 10 секунд проверяться вопросы сдачи в аренду, все ли помещения еще находятся в процессе сдачи в аренду, или, может быть, аренда помещения уже прекратилась.
Если договор аренды продлен или арендная плата отменена арендатором, письмо о долге удаляется из файла лица.
Если арендатор не продлевает аренду в течение 30 дней, необходимо очистить помещение, аренда которого закончилась, а письмо остается в файле.
Для квартиры мы проводим выселение людей, проживающих в этой квартире.
В случае парковочного места, в первую очередь мы проверяем, находится ли на парковочном месте автомобиль. Если это так, то в связи с ускоренным решением судебных приставов он будет продан (с точки зрения программы мы удаляем объект из помещения), а стоимость продажи покрывает аренда помещения на ближайшие 2 месяца. Если не было транспортного средства, то утилизации подлежат все хранимые вещи на парковочном месте.
Лицо имеет более чем указанную ранее информацию такие данные, как имя, фамилия, PESEL, адрес, дата рождения.
Если арендовать квартиру хочет человек с больше, чем тремя долгами (по крайней мере 3 объекта типа File) на арендных площадях на фоне всего микрорайона, должно быть исключение ProblematicTenantException с сообщением – „Osoba X posiadała już najem pomieszczeń: lista_pomieszczen”, где X это имя и фамилия человека, а lista_pomieszczen определяет в аренду помещения, которые были наняты.
Каждый из предметов и транспортных средств имеют сохраненную информацию о названии и поле, которое он занимает. Площадь, занимаемая объектом / транспортным средством, может быть обеспечена двумя способами, как и в случае с помещением.
Транспортные средства делятся на различающие их типы:
•вездеход,
* городской автомобиль,
•лодка,
•мотоцикл,
•амфибия
Каждый из транспортных средств, кроме названия и поверхности, должен обладать характеристиками, характерными для данного типа транспортного средства (например, объем двигателя, Тип транспортного средства, тип двигателя и т.д.). Для каждого типа автомобиля могут повторяться характерные черты, однако, по крайней мере, одна должна быть различна на фоне других транспортных средств.
Если вы помещаете каждый предмет или транспортное средство в комнату, мы должны убедиться, что помещение способно разместить этот объект. Если это не так, возникает исключение TooManyThingsException с сообщением „Remove some old items to insert a new item”.
Состояние лиц, проживающих в микрорайоне вместе со всеми данными о лицах, арендуемых квартирах, предметах и т.д. он должен быть сохранен при выборе в меню соответствующей функции. Информация, хранящаяся в файле, должна быть сохранена четко и легко для человека, соблюдая следующие правила:
* Комнаты должны быть отсортированы по возрастанию в соответствии с размером комнаты.
* Содержимое комнаты должно быть Отсортировано по убыванию по размеру предмета если это то же самое по имени.
Принцип работы программы:
* В методе main необходимо создать микрорайон с не менее чем десятью готовыми помещениями различного типа и размера и несколькими (минимум 5) готовыми людьми. С предварительно распределенными арендами и размещенными предметами на парковочных местах.
* При запуске программы, пользователь должен иметь возможность через командную консоль вызывать все указанные функциональные возможности.
- завершить программу в любое время
- выбрать, какой человек (никакой логин не требуется, достаточно указать например уникальный номер человека)
- выписывать свои данные, включая арендованные помещения
- просмотр свободных номеров
- аренда нового помещения, предварительно выбрав его
- выбор помещения, которое арендует человек, и просмотр содержимого помещения
- вставлять новые транспортные средства / предметы, помня, чтобы не переполнить комнату
- изъятие предметов или транспортных средств.
- выполнить команду для записи текущего состояния недвижимости в файл
Примечание:
* Важной частью проекта является использование наследования, выводов, интерфейсов или абстрактных классов, лямбда-выражений, общих типов, дополнительных функциональных возможностей или структур и других характерных элементов.
*Также прошу описывать все в комментариях, ваши действия, то есть, что выполняет данный метод, для чего нужно это и т.д.
-
2125 226 0 1 Доброго дня, виконаю ваше завдання. Напишу на java, пропишу коментарі
Актуальные фриланс-проекты в категории Java
Разработка Android-приложения плеера для сервиса онлайн-ТВ
27 000 UAH
Нужен Android-разработчик для создания нативного Android-приложения для сервиса онлайн-ТВ. Планируется две версии: для мобильных устройств: смартфоны и планшеты; для Android TV / Android STB: телевизионные приставки. Ориентировочные сроки: до 3 месяцев. Ориентировочный… Java, Разработка под Android ∙ 24 дня 21 час назад ∙ 31 ставка |