1. ตัวอย่างรถไฟ G71 เป็นตัวอย่างแรกเข้ารหัสสถานีรถไฟ (จาก 1 ถึงจุดสุดท้าย)
ตัวยึดตำแหน่งข้างต้นอธิบายสั้น ๆ ด้านล่าง: G71 มีทั้งหมด 18 ไซต์ จากนั้นการระบุที่นั่งของที่นั่งเดี่ยวของเราสามารถแสดงด้วยสายไบนารีที่มีความยาวสิบแปดหลัก แต่ละหลักแสดงถึงไซต์ มันจะเริ่มต้นในรายการตั๋วด้านล่างก่อนออกตั๋วทุกวัน ตั๋วที่เหลือมีดังนี้ ตั๋วที่เหลือจะถูกกำหนดตามจำนวน 0 ในการระบุที่นั่ง
ไซต์ที่ถูก จำกัด ต้นกำเนิดและการสิ้นสุดเว็บไซต์ที่ จำกัด ในแบบฟอร์มการจองตั๋วสามารถจับคู่ได้อย่างยืดหยุ่น (ซึ่งสามารถบรรลุเว็บไซต์ที่ จำกัด การขาย)
2. ค้นหาตั๋วที่เหลืออยู่
หากเราต้องการสอบถามตั๋วเบาะที่นั่งชั้นสองของ G71 จากสถานีต้นทาง Baoding East Station (3) ไปยังสถานี Shaoguan (15) เท่านั้นที่ต้องดำเนินการ SQL ต่อไปนี้ (SQL นี้สามารถรับรู้ฟังก์ชั่นการเลือกที่นั่งและการเลือกรถยนต์)
เลือก GUID, หมายเลขรถไฟ, ประเภทรถไฟ, ประเภทที่นั่ง, หมายเลขรถ, รหัสที่นั่ง, ตำแหน่งที่นั่งจากรายการตั๋ว
where to_number (substring (เครื่องหมายที่นั่ง, 3, 15)) = 0
และวันที่ออกเดินทาง = '2016-06-11'
และรหัสหมายเลขรถไฟ = 'G71'
และ substring (เริ่มสถานี จำกัด , 3, 4) = 1
และ substring (ในที่สุดก็มาถึงสถานีที่ถูก จำกัด , 15, 16) = 1
และสถานะตั๋ว = 'ขาย'
และประเภทรถไฟ = 'ชั้นสอง'
และตำแหน่งที่นั่ง = 'f'
3. ตั๋วจอง
3.1 รับบันทึกตามเงื่อนไขการสืบค้นในขั้นตอนที่สองและเปลี่ยนสถานะตั๋วเป็นล็อค
3.2 การชำระเงินหลังจากล็อคสำเร็จ
3.2 หลังจากการชำระเงินสำเร็จแล้วตั๋วจาก Baoding ไปยัง Shaoguan (000111111111111000 ถูกทำเครื่องหมายเป็น 0) พร้อมตั๋วเดิมและสถานะตั๋วจะเปลี่ยนเป็นการขาย
1000000000000000000 | 000111111111111000 = 100111111111111000 โลโก้ตั๋วที่เหลืออยู่ในเวลานี้คือตั๋วที่เหลืออยู่
3.3 หากเวลาที่กำหนดไม่ได้ชำระสถานะตั๋วของบันทึกนี้สามารถเรียกคืนเพื่อขายได้
10011111111111111000^0001111111111111000 = 100000000000000000000000000000000000000000000000000000000 ตั๋วที่เหลือและคืนค่าโดยอัตโนมัติ
4. ตั๋วคืนเงิน
รับตั๋วจาก Baoding ไปยัง Shaoguan (00011111111111000) และตั๋วที่เกี่ยวข้องสำหรับการไม่ใช้งานและจากนั้นคุณสามารถกลับไปที่พูลตั๋วได้
ต่อไปนี้เป็นรหัส Java ที่เกี่ยวข้อง
นำเข้า java.math.bigdecimal; การบำรุงรักษาชั้นเรียนสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {สตริง ticketflag = ""; int artystation =; int endstation =; long begintime = system.currentTimeMillis () {system.out.println ("การสมัครสมาชิกล้มเหลว");} else {system.out.println ("ผลลัพธ์หลังจากการจอง:" + ผลลัพธ์); // ถ้าคุณต้องการยกเลิกให้ทำเช่นนี้สตริง b = buildTicket (ticketflag.length () System.currentTimeMillis (); System.out.println ("ใช้เวลานาน:" + (endtime - begintime));}/*** การจองตั๋ว*** @param Ticketflag* @param startstation* @param endstation* @return (checkcanticket (Ticketflag, startstation, endstation)) {string b = buildTicket (ticketflag.length (), startstation, endstation); สตริง currentticked = toticket (Ticketflag, b); system.out.println ("ผลลัพธ์ก่อนออกตั๋ว:" ตั๋ว** @param ticketflag* @param b* @return*/สตริงคงที่ส่วนตัว releaseticket (สตริง Ticketflag, String b) {StringBuilder tempst = new StringBuilder (""); int length = ticketflag.length (); (tempa == '' && tempb == '') {tempst.append ("");} else {tempst.append (tempa);}} return tempst.toString ();}/*** Endstation) {StringBuilder st = new StringBuilder (""); สำหรับ (int i =; i <length; i ++) {ถ้า (i> = startStation && i <endstation) {St.Append ("");} อื่น ๆ {St.Append (""); St.ToString ();}/*** ผลลัพธ์หลังจากจอง** @param TicketFlag* @param b* @return*/สตริงคงที่ส่วนตัว toticket (สตริง ticketflag, สตริง b) {StringBuilder tempst = new StringBuilder (""); tempb = b.charat (i); ถ้า (tempa == '' || tempb == '') {tempst.append ("");} else {tempst.append (tempa);}} returt tempst.toString ();}/*** Boolean Checkcanticket (สตริง Ticketflag, int startstation, int endstation) {boolean result = false; String tempticket = TicketFlag.substring (startstation, endstation); bigdecimal b = ใหม่ bigdecimal (tempticket);