使用 Google 搜尋本站文章:
首頁 | 部落格 | ASP.NET 電子書 | 相簿 | News | 網站導讀 | 聯絡 Allen | 訂閱 RSS
 
since 2004 
 

略過巡覽連結。

題目 : 設計一個訂單編號產生器(2)

By Allen Kuo, 建立日期:2008/04/04 17:05 ,最後修改日期:2008/04/04 17:21
練習寫class
    加入書籤: 收進你的MyShare個人書籤

請先參考這篇文章 , 若做完那題的練習後,再來試試這題

假設訂單編號的規則是 yyyyMM99999, 也就是說, 前4碼是目前日期的西元年,第 5,6 碼是目前日期的月份, 若小於10, 就補零(例如01,02,....,09,10,11,12), 最後 N 碼是流水號, 可設定成每年, 每月歸零,從 1 重新開始

請在db裡儲存必要的資訊(自行規劃)

撰寫一個class OrderNumberGenerator2, 當程式呼叫它的 GetNumber() 時, 它可以傳回一個最新的編號, 並update上述db裡序號的值, 以便下一位再次呼叫它時, 可以取得下一個號碼

例如 :

OrderNumberGenerator2 obj = new OrderNumberGenerator2();

obj.LengthofSN=6; //指定最後要顯示幾碼的流水號, 預設長度是3

obj.ResetRule="byYear"; //指定流水號每年才歸零一次

//obj.ResetRule="byMonth"; //指定流水號每月歸零一次, 預設值是每月歸零一次

obj.Format="yyyyMMSN"; //指定傳回的格式(在此SN會被視為流水號), 例如傳回2008040000123

//obj.Format="yyyySN"; //指定傳回的格式, 例如傳回20080000123

//obj.Format="yyyy-MM-SN"; //指定傳回的格式, 例如傳回2008-04-0000123

string newID = obj.GetNumber(); //此 method 可傳回序號, 例如 200804000123

//string newID = obj.GetNumber("yyyy-MM-SN"); //此 method 可傳回自訂 Format 的序號, 例如 2008-04-0000123

 

註:

1.
如果同一個系統裡,有些程式設定成
obj.ResetRule="byYear";
有些程式卻設定成
obj.ResetRule="byMonth";
很有可能會造成一個系統裡編號混亂, 若您想用在實際的案子裡,或許可以考慮將各參數(例如流水號長度, 編號格式, 每月或每年歸零)只設定在web.config裡, 各程式去讀web.config裡的值

2.
這 class 若您設成
 obj.ResetRule="byMonth";  //每月流水號都歸零
但取得編號的格式卻是
string newID = obj.GetNumber("yyyy-SN");
那麼在 4 月 1 日與 5 月 1 日便很可能因為流水號每月歸零而傳回相同的值 (例如都是 2008-000001 ) , 若要用在實務上,請自行小心設定

 


回應


姓名: (必填)
Email:
內容: (必填)
驗證碼:   (請輸入圖片中的文字,不區分大小寫)

目前節點的文章 :

 瓶水相逢.Net C# 練習題系列
 如何自己找答案 - 比對字串是某存在某陣列元素
 String.IndexOf( ) 、 String.SubString( ) 、Regex 應用
 C# 練習題
 [練習]尋找 A byte陣列是否存在於 B byte 陣列中並傳回出現位置
 [練習] 資料解析的練習
 [影片]如何呈現各會議室預約明細
 題目 : 設計一個訂單編號產生器(1)
 題目 : 設計一個訂單編號產生器(2)
 題目 : 設計一個訂單編號產生器(3)
 題目:如何用DataLst做出2欄的版面
 計算列印頁數的程式練習

Copyright © AllenKuo.com , 2000 - 2014, Version 11.08