許伶俐+董會蘭
摘要:針對分段收費系統(tǒng)中程序邏輯結構復雜、維護升級困難等問題,提出了一種在計費程序中運用區(qū)間編碼的方法,結合實際應用中的收費標準,闡述了區(qū)間編碼應用原理,給出了區(qū)間基于區(qū)間編碼的編程模型,并對區(qū)間編碼方法的性能和優(yōu)勢進行了討論。該方法可顯著改善程序的邏輯結構,方面計費程序維護和升級。
關鍵詞:區(qū)間編碼;計費程序;程序設計
中圖分類號:TP301
文獻標識碼:A 文章編號:1672-7800(2015)003-0034-02
0 引言
日常生活中,很多計費系統(tǒng)在不同時間段有不同的收費標準,例如電話通信計費、出租車計費、停車場收費和網吧計費等,在不同時段使用服務需要支付的費用往往相差較大。這些收費標準在數學上可使用分段函數來表示,但在使用編程語言實現時,需要比較復雜的分支選擇結構來描述[1],當計費系統(tǒng)劃分的收費區(qū)間較多時,程序的邏輯將變得非常復雜,如果程序設計使用了大量的“if… else…”選擇語句,那么程序的可讀性將變得極差[2-3],這不利于收費系統(tǒng)的維護和升級。為此,本文提出了一種區(qū)間編碼方法,可以有效簡化程序設計,給計費系統(tǒng)的維護和升級帶來方便。
1 算法設計
本文結合某停車場收費實例詳述算法原理,停車場收費規(guī)則如下:
將一晝夜劃分為兩個收費時間段:(T0,T1)和(T1,T0),例如白天計費時段(6:00-22:00)和夜晚計費時段(22:00-6:00)。不同區(qū)間有不同的收費標準,區(qū)間(T0,T1):第一計費時間單位收費x元,每超過一個計費單位按y元收費;區(qū)間(T1,T0):統(tǒng)一收費z元,不論時間長短。
對于停車超過一個晝夜的情況,整個晝夜計費為區(qū)間(T0,T1)和區(qū)間 (T1,T0)的計費之和,不足一晝夜的部分,依照上述規(guī)則按實際情況進行收費。在上述計費標準中,停車不滿一個計費時間單位的按一個計費時間單位計費。
1.1 區(qū)間模型
根據上述收費標準,一晝夜以24小時制表示,將00:00作為晝夜分界點[4],其極坐標如圖1所示。由于晝夜分界點的存在,實際上兩個收費區(qū)間被劃分為3個收費區(qū)間,即(T0,T1)、(T1,Td)和區(qū)間(Td,T0)。
1.2 計費區(qū)間編碼
根據一晝夜計費區(qū)間劃分情況,對每個計費區(qū)間進行二進制行編碼[5]。本計費系統(tǒng)中有3個計費區(qū)間,需要兩位二進制數來進行編碼。對于有N個計費區(qū)間的情況,編碼位數i與N滿足約束表達式:2i-1 對于任意的停車開始時間和停車結束時間都落在三者之中的任意一個區(qū)間,因此可以用一個區(qū)間對來表征一次停車,區(qū)間對用四位二進制數表示前兩位代表停車開始時間所在區(qū)間,后兩位代表收費結束時間所在區(qū)間,三區(qū)間的任意組合形成的區(qū)間對集合包括了所有計費情況。窮舉每一種組合可以得出每一種收費情況的編碼和計費表達式,收費編碼如表3所示。 2 編程模型 根據計費編碼,可設計清晰的編程步驟,整個算法流程如圖2所示。整個程序設計基于switch分支選擇結構,首先計算t0~t1時間間隔內包含整個晝夜的數目,即時間間隔除24小時所得的商數,根據商數計算整晝夜收費價格,然后根據t0、t1所在區(qū)間確定收費編碼進而確定要采用的計費表達式,根據計費表達式計算不足一晝夜部分的計費價格,最后將與上述整晝夜收費價格相加得到總的收費價格。 計費編碼占4bit,可選用一個字節(jié)表示。例如停車開始時間為09:00,結束時間是當天23:00的情況,根據區(qū)間編碼,開始時間對應的區(qū)間碼為01,結束時間對應的區(qū)間碼為10,因此計費編碼為(0b00000001<<2)+0b00000010 ,即0110,值為6。 3 性能分析 與普通分段收費算法相比,引入區(qū)間編碼方法可以有效改善計費算法設計,利用區(qū)間排列組合方法,可以窮舉任意一種收費情況,防止遺漏;對區(qū)間進行編碼后,在設計程序時,使用switch…case…語句替代if…else…語句,同時利用switch語句的順序執(zhí)行特性,對相同的收費表達式進行合并。以上述停車場計費標準為例,使用區(qū)間編碼方法,至少可以省去12個“if…else…”語句對,極大改善了程序的邏輯結構保證了程序的可讀性;同時該算法具有很好的可擴展性,當計費區(qū)間增多,只需增加區(qū)間的編碼位數即可容納增加的計費區(qū)間。隨著區(qū)間增多,區(qū)間編碼方法對計費算法的輔助設計效果愈加明顯。 4 結語 本文主要闡述區(qū)間編碼方法在計費系統(tǒng)中的應用原理,所涉及的停車場收費標準是實際運用中的一個計費系統(tǒng)特例,在其它收費場合可能并不適用,例如收費規(guī)則中沒有考慮不同區(qū)間之間的緩沖時間問題,但它具有分段收費問題的一般特性,并不妨礙區(qū)間編碼方法的運用。對于其它分段計費系統(tǒng),可參照本文應用原理設計收費程序,改善程序的邏輯結構,方便計費系統(tǒng)的維護和升級。 參考文獻: [1] MARK ALLEN WEISS.數據結構與算法分析[M].北京:機械工業(yè)出版社,2004. [2] 劉偉峰,王智廣.細粒度并行計算編程模型研究[J].微電子學與計算機,2008,25(10):103-106. [3] 古思山,蔡樹彬,李師賢.從面向方面程序設計的定義到面向方面程序設計語言[J].計算機科學,2011,38(10):133-139. [4] 姜濤.地-電離層波導中甚低頻波晝夜過渡期特性研究[J].通訊電源技術,2014,31(3):43-45. [5] 朱付保,關佶紅,周水庚.基于區(qū)間編碼的GML索引與查詢[J].計算機科學,2008,35(3):65-67. (責任編輯:孫 娟)