Skip to main content

"Хотелски Резервации" 🏨🗓️

Splash

Условие на задачата

Създайте многонишково конзолно приложение на Java, което позволява на клиентите да резервират, проверяват и анулират стаи, докато сървърът управлява резервациите и поддържа актуален списък на свободните стаи.

Цели на задачата

  • Разработване на клиент-сървър архитектура за управление на хотелски резервации.
  • Имплементиране на многонишкова обработка и синхронизация за предотвратяване на конфликти при резервации.
  • Предоставяне на функционалност за проверка, резервация и анулиране на стаи от страна на клиентите.

Стъпки за Реализация

1. Клас Room:

  • Създайте клас Room с атрибути като номер на стаята, тип, цена и състояние (свободна/заета).
  • Методи за връщане на състоянието и информацията за стаята.

2. Клас HotelServer:

  • Сървър, който управлява стаите и резервациите.
  • Използване на ServerSocket за приемане на клиентски връзки.
  • Списък със стаите и методи за управление на резервациите.
  • Синхронизация на методите за предотвратяване на едновременна резервация на една и съща стая.

3. Клас HotelClient:

  • Клиентски интерфейс за резервации, проверка и анулиране на стаи.
  • Връзка със сървъра чрез Socket и комуникация чрез потоци.

  1. Клас ClientHandler:
  • Обработва всяка клиентска връзка в отделна нишка.
  • Чете команди от клиента и извършва съответните операции на сървъра.
  • Изпраща обратно информация до клиента.

5. Синхронизация и Многонишковост:

  • Използвайте ключовата дума synchronized за синхронизиране на методите, които управляват резервациите и стаите.
  • Уверете се, че вашата система може да обработва множество клиенти едновременно без конфликти.

6. Тестване и Валидация:

  • Тествайте системата за различни сценарии: резервация, проверка и анулиране на стаи.
  • Уверете се, че системата правилно управлява конкурентни заявки.

Технически Аспекти

  • Мрежово Програмиране: Разбиране и прилагане на сокети за комуникация между клиент и сървър.
  • Многонишково Програмиране: Умения за създаване и управление на нишки в Java.
  • Синхронизация: Прилагане на синхронизирани методи за предотвратяване на конкурентен достъп.