Wildflowerr / Reserve-Sell-Bus-Tickets

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Да се разработи симулация на продажба на автобусни билети с места в пикови дни до предварително зададени дестинации. Програмата трябва да поддържа продажбата на местата за един автобус дневно за всяка една от множество дестинации. При стартиране на системата, тя прочита входен файл със следния формат: <дестинация1>-<брой места>-<цена-на-билет> <дестинация2>-<брой места>-<цена-на-билет> <дестинация3>-<брой места>-<цена-на-билет> <дестинация4>-<брой места>-<цена-на-билет>

Например: Пловдив-48-18 Варна-48-30 Благоевград-33-15

Входният файл трябва да съдържа минимум 6 дестинации, като поне 2 от тях трябва да са с под 40 места. Клиентите на програмата могат да си закупят билет или на каса, или онлайн. Тези, които си купуват на каса, трябва да се редят на опашка, за да го направят, а тези които го правят онлайн, могат да купуват конкурентно. При закупуване на билет, клиентът заявява номера на мястото в автобуса, което иска да резервира. Номерата на местата започват от 1 и нарастват с 1, т.е. за 48-местен автобус, те ще са от 1 до 48. Ако даденото място е заето, на купувача се дава случайно свободно такова. Времето за закупуване на билет е 200 милисекунди онлайн и 1 секунда на каса. При успешна продажба на билет, в текстов файл се записва следния текст: Успешна продажба на място <номер на място> до <дестинация> на цена <цена>. Билетът е закупен <онлайн|на каса>.

Например: Успешна продажба на място 13 до Пловдив на цена 18 лева. Билетът е закупен онлайн.

Когато билетите за дадена линия свършат, не се отбелязва нищо в текстовия файл, а изкуственото забавяне при обработка на заявките става 0. Заявките за закупуване на билет онлайн или от каса се обработват на сървър, като се синхронизира операцията по закупуване на билет, за да не се получава дупликация в продадените билети/места. При закупуване на билет, клиентът (купувачът) изпраща заявка към сървъра, като указва по какъв начин купува билета (онлайн или на каса) и чака за отговор дали билетът му е бил закупен успешно или не, и кой номер билет е получил. На сървъра се пази информацията за дестинациите, цените на билетите и свободните места в подходяща структура.

При симулацията:

  1. За всяка една автобусна линия се стартират по 40 купувача, като 10 от тях са на касата, а останалите са онлайн.
  2. Когато симулацията приключи, на стандартния изход се извежда справка за: o Обща сума на продадените билети o Брой на продадените билети за всяка линия o Разбивка по линии, колко билети са продадени онлайн и колко - на каса o Свободните места за всяка линия

About


Languages

Language:Java 100.0%