1. В качестве примера сесть на поезд G71, сначала кодировать железнодорожную станцию (от 1 до последней остановки)
Вышеуказанный заполнитель кратко описан ниже: G71 имеет в общей сложности 18 участков. Затем идентификация сиденья нашего единственного сиденья может быть представлена бинарными строками 18-битной длины 100000000000000000000000. Каждая цифра представляет сайт. Он инициализируется в список билетов ниже перед выпуском билета каждый день. Данные следующие. Остальные билеты определяют максимальное количество оставшихся билетов на основе количества 0 в идентификации сиденья.
Сайты ограниченного происхождения и ограниченные сайты в конце в форме бронирования билетов могут быть гибко сопоставлены (это может достичь ограниченных сайтов в продаже)
2. Запрос оставшихся билетов
Если мы хотим запрашивать билет на сиденье второго класса G71 от сиденья второго класса от начальной станции Baoding East (3) на станцию Шаогуан (15) только необходимо выполнить следующий SQL (этот SQL может реализовать функции выбора сиденья и выбора автомобиля)
Выберите GUID, номер поезда, тип поезда, тип сиденья, номер перевозки, код сиденья, позиция сиденья из списка билетов
где to_number (substring (отметка сиденья, 3, 15)) = 0
и дата вылета = '2016-06-11'
и номер поезда код = 'g71'
и подстрока (Start Letricted Station, 3, 4) = 1
и подстрока (наконец -то прибытие на ограниченную станцию, 15, 16) = 1
и статус билета = 'для продажи'
и тип поезда = 'второй класс'
и положение сиденья = 'f'
3. Забронируйте билеты
3.1 Получите запись в соответствии с условиями запроса на втором этапе и измените статус билета на заблокирование
3.2 Оплата производится после успеха блокировки
3.2 После успешного платежа, билет от Баодирования в Шаогуан (000111111111111000 отмечается как 0) с оригинальным билетом, и статус билета изменен на продажу
10000000000000000000 | 000111111111111000 = 10011111111111000 Оставшийся логотип билета в настоящее время - динамический оставшийся билет
3.3 Если указанное время не оплачено, статус билета этой записи может быть восстановлен для продажи.
1001111111111111000^000111111111111000 = 10000000000000000000000000000000000000000000000000000000000 оставшийся билет и автоматически восстанавливает его.
4. Возврат билета
Получите билет от Baoding в Shaoguan (00011111111111000) и соответствующие билеты на отсутствие операции, а затем вы можете вернуться в пул билетов.
Ниже приведено соответствующий код Java
Импорт java.math.bigdecimal; public class maintest {public static void main (string [] args) {String ticketflag = ""; int beginstation =; int endstation =; long Betrintime = system.currenttimemillis (); String result = orderticket (билет, начало, EndStation); {System.out.println ("Неудача подписки");} else {System.out.println ("Результат после бронирования:" + result); // Если вы хотите отменить, сделайте это, строка b = buildticket (ticketflag.length (), negnstation, endstation); System.currentTimeMillis (); System.out.println ("Time -Consuming:" + (EndTime - BERINTIME));}/*** Бронирование билетов** @param ticketflag* @param beginstation* @param endstation* @return*/private Static orderticket (String ticketflag, int endstation, ind endstation) {String resture = "i; (CheckCanticket (TicketFlag, NegnStation, EndStation)) {String B = buildTicket (ticketflag.length (), beginstation, endstation); string currentTicked = toticket (ticketflag, b); System.out.println ("Результат перед билетом:" + ticketflag); билет** @param ticketflag* @param b* @return*/private static String releaseTicket (String ticketflag, String b) {stringBuilder tempst = new StringBuilder (""); int length = ticketflag.length (); for (int i =; i <length; i ++) {char tecketflag. '' && tempB == '') {tempSt.append("");} else {tempSt.append(tempA);}}return tempSt.toString();}/*** Create interval placeholder* * @param length* @param beginStation* @param endStation* @return*/private static String buildTicket(int length, int beginStation,int endStation) {StringBuilder ST = new StringBuilder (""); for (int i =; i <length; i ++) {if (i> = beginstation && i <endstation) {St. Append ("");} else {St.Append ("");}} System.out.println ("Создать интервал -билет:"+st.toString (); @param ticketflag* @param b* @return*/private static String toticket (String ticketflag, String b) {stringBuilder tempst = new StringBuilder (""); int length = ticketflag.length (); для (int i =; i <length; i ++) {char tempa = ticketflag.charat (i); == '') {tempst.append ("");} else {tempst.append (tempa);}} return tempst.tostring ();}/*** можно ли забронировать билеты** @param ticketflag* @param partestation* @param endstation* @return*/private static boolean checkecantict (string ticketflag, intstatation intstatation int -intemstatation) int -intemstatation int -inttation) int. result = false; string tempticket = ticketflag.substring (beginstation, endstation); bigdecimal b = new BigDecimal (Tempticket); if (b.equals (new bigdecimal ("")) {result = true;} return result;}}}}}}}}