国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

用Vb.net實(shí)現(xiàn)事務(wù)提醒

2015-10-22 12:12彭顯鋒韋仕麗李冬梅
科技創(chuàng)新導(dǎo)報 2015年24期
關(guān)鍵詞:實(shí)現(xiàn)方法

彭顯鋒 韋仕麗 李冬梅

摘 要:對于大多數(shù)單位而言,每天需要完成的工作很多,時常會因漏辦事務(wù)而對工作造成影響。已有的一些如鬧鐘、備忘錄等工具,很難滿足實(shí)際工作的需要。設(shè)計一個功能較為完善的事務(wù)提醒程序很有必要。該文以一個功能較為全面的事務(wù)提醒程序編制為例,從程序功能設(shè)計、實(shí)現(xiàn)的過程、具體編程方法等方面,詳細(xì)介紹了用Vb.net實(shí)現(xiàn)事務(wù)提醒的思路和編程方法,對于相似類型的事務(wù)提醒程序的編制有一定的參考價值。

關(guān)鍵詞:Vb.net 實(shí)現(xiàn) 事務(wù)提醒 方法

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2015)08(c)-0059-03

目前,對于大多數(shù)單位而言,每天需要完成的工作很多,時常會因漏辦事務(wù)而對工作造成影響。由于事務(wù)類型繁多,提醒周期也不盡相同,已有的一些如鬧鐘、備忘錄等工具,很難滿足實(shí)際工作的需要。因此,設(shè)計一個功能較為完善的事務(wù)提醒程序很有必要。

該文以一個功能較為全面的事務(wù)提醒程序編制為例,介紹用Vb.net實(shí)現(xiàn)事務(wù)提醒的思路和編程方法。

1 程序功能概述

程序能對節(jié)假日(包括法定和自定義節(jié)假日)、24節(jié)氣、自定義事務(wù)等進(jìn)行提醒。對于自定義任務(wù),還能按周期,如“僅一次、每天、每周、每月、每年”等進(jìn)行重復(fù)提醒,并可設(shè)置再次提醒時間。程序運(yùn)行主界面如“圖1”所示。

2 提醒功能的實(shí)現(xiàn)

2.1 “萬年歷”的制作

萬年歷是實(shí)現(xiàn)節(jié)假日(包括法定公農(nóng)歷節(jié)假日、自定義節(jié)假日等)提醒的基礎(chǔ)。

本程序建立了一個“公——農(nóng)歷轉(zhuǎn)換”的類,以公歷日期為參數(shù),通過該類可計算出相對應(yīng)的農(nóng)歷日期、星期、節(jié)假日日期、天干地支、星座等。主要實(shí)現(xiàn)方法如下。

2.1.1 公歷節(jié)假日的獲取

(1)定義如下數(shù)組并進(jìn)行初始化:

Dim sFtv() As Object={1,1,“元旦”,3,8,“婦女節(jié)”,3,23,“世界氣象日”}

其中:每個節(jié)日為3個元素,分別表示月、日和節(jié)日名。按此規(guī)律可加入自定義的節(jié)假日。

(2)下面的代碼可取得數(shù)組中定義的節(jié)假日月、日及節(jié)假日名稱。

Private SolarHolidayInfo()As SolarHolidayStruct

Private Structure SolarHolidayStruct

Dim Month As Integer

Dim Day As Integer Dim HolidayName As String

End Structure

‘取得節(jié)假日月、日及名稱

Dim b As Integer= UBound(sFtv) + 1

ReDim SolarHolidayInfo(b /3) ‘為數(shù)組重新分配存儲空間

For i=0To(b/3)-1

SolarHolidayInfo(i).Month = sFtv(i*3)‘月數(shù)

SolarHolidayInfo(i).Day = sFtv(i * 3 + 1)‘日數(shù)

SolarHolidayInfo(i).HolidayName = sFtv(i * 3 + 2)‘節(jié)假日名稱

Next

(3)用公歷的月、日數(shù)分別與SolarHolidayInfo(i).Month、SolarHolidayInfo(i).Day對比,如果相同,SolarHolidayInfo(i).HolidayName即為相應(yīng)日的公歷的節(jié)假日名稱。

2.1.2 農(nóng)歷節(jié)假日的獲取

定義如下數(shù)組并進(jìn)行初始化:

Dim lFtv() AsObject ={1,1,“春節(jié)”,1,15,“元宵”,5,5,“端午”,8,8, “苗族風(fēng)情節(jié)”}

先將公歷日期通過“公——農(nóng)歷轉(zhuǎn)換”類,得到相應(yīng)的農(nóng)歷日期。同前述“公歷節(jié)假日的獲取”方法,便可得到相應(yīng)日的農(nóng)歷的節(jié)假日名稱。

2.2 “24節(jié)氣”日期的計算

我國的萬年歷以紫金山天文臺發(fā)布的為標(biāo)準(zhǔn),通過公式法計算出的24節(jié)氣日期與標(biāo)準(zhǔn)日期有時會相差一天。為了與標(biāo)準(zhǔn)萬年歷一致,本軟件先將標(biāo)準(zhǔn)萬年歷中的24節(jié)氣日期存入數(shù)據(jù)庫(圖2),采用查表法得到24節(jié)氣的日期。

2.3 本程序中與日期、時間運(yùn)算相關(guān)的主要方法

2.3.1 日期、時間大小的比較

將需要比較的兩個日期、時間值轉(zhuǎn)化為24小時制的String類型,再用比較運(yùn)算符直接比較。此方法可以比較任意精度的日期、時間。例如:如下代碼能將當(dāng)前日期轉(zhuǎn)化為24小時制的String類型:

DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss”)

2.3.2 日期、時間加減

使用下面Date對象的方法可以實(shí)現(xiàn)日期、時間的加減運(yùn)算:AddYears, AddMonths, AddDays, AddHours, AddMinutes, AddSeconds, AddMilliseconds。

例:DateTime.Now.AddDays(x)‘當(dāng)前日期加x天(x可正可負(fù),負(fù)時為減)

DateTime.Now.AddHours(-x) ‘當(dāng)前日期減x小時

2.3.3 日期、時間差計算

DateDiff 函可以取得兩個日期的間隔,并且可以用年、月、日等單位傳回兩個日期的差距,語法為: DateDiff(間隔參數(shù), 日期一, 日期二)

間隔參數(shù)為: DateInterval.Year (年)DateInterval.Quarter (季)

DateInterval.Month(月)DateInterval.Day(日)

DateInterval.Week(周) DateInterval.Hour(時)

DateInterval.Minute (分) DateInterval.Second (秒)

2.4 “節(jié)假日、24節(jié)氣”提醒功能的實(shí)現(xiàn)

2.4.1“節(jié)假日”提醒

日歷中節(jié)假日較多,但并不是每個節(jié)假日均有提醒的必要。因此,可先將需要提醒的節(jié)假日存入一個表(圖3)。

(1)以當(dāng)前日期為初始參數(shù),調(diào)用“公——農(nóng)歷轉(zhuǎn)換”類,如果未返回節(jié)假日名稱、或返回的節(jié)假日不在“需要提醒的節(jié)日”表中,則日期加一天,再調(diào)用“公——農(nóng)歷轉(zhuǎn)換”類,直至返回最近的“需要提醒”的節(jié)假日名稱。

(2)查詢“節(jié)日再次提醒時間表”(圖4),如果記錄中的“節(jié)日名稱”與返回的需要提醒的公、農(nóng)歷節(jié)假日名稱均不相同,則刪除相關(guān)記錄,并直接進(jìn)行提醒。否則,如果有與返回的節(jié)假日名稱相同的記錄,并且當(dāng)前時間大于或等于“再次提醒時間”,則進(jìn)行提醒。

(3)計算出最近的“需要提醒”的節(jié)假日與當(dāng)前日相差天數(shù),進(jìn)行倒計時提醒,并允許設(shè)置“下次提醒時間”(圖5)。

2.4.2“24節(jié)氣”提醒

(1)從“24節(jié)氣表”中讀取“節(jié)氣日期”大于或等于當(dāng)前日期、并且小于或等于當(dāng)前日期加18天(因兩個節(jié)氣的日期間隔不可能大于18天)的節(jié)氣名稱,即為當(dāng)前需要提醒的節(jié)氣名稱。

(2)提醒方式以及“下次提醒時間”的設(shè)置與“節(jié)假日提醒”相同。

2.5 “自定義任務(wù)”提醒功能的實(shí)現(xiàn)

(1)任務(wù)登記:根據(jù)任務(wù)周期對需要提醒的任務(wù)進(jìn)行登記,生成任務(wù)表(圖6)。

(2)定時對任務(wù)表進(jìn)行查詢,按“提醒類型”對每條記錄進(jìn)行處理,以確定是否進(jìn)行提醒。

(3)“僅一次”提醒的實(shí)現(xiàn),①查詢“任務(wù)表”,如果當(dāng)前日期大于任務(wù)日期,則刪除該條任務(wù)記錄,不再提醒。②如果已經(jīng)設(shè)置了“下次提醒時間”,則當(dāng)當(dāng)前時間大于或等于“下次提醒時間”,才進(jìn)行提醒。否則,當(dāng)當(dāng)前日期大于或等于任務(wù)日期,就進(jìn)行提醒。進(jìn)行提醒時,可設(shè)置“下次提醒時間”。

(4)“每天”提醒的實(shí)現(xiàn),查詢?nèi)蝿?wù)表中相關(guān)任務(wù)是否在“下次提醒時間”中設(shè)置了“當(dāng)日不再提醒”,如已設(shè)置,則不作任何操作,否則,如果當(dāng)前時間大于或等于下次提醒時間,則進(jìn)行提醒。

(5)“每周、每月、每年”提醒的實(shí)現(xiàn),此類提醒功能的實(shí)現(xiàn),與“每天”提醒的方法基本相同,主要是根據(jù)日期進(jìn)行對比,確定是否需要提醒。但要注意的是:每個月的天數(shù)不完全相同。如果“每月或每年”提醒日期的號數(shù)大于相應(yīng)月的總天數(shù),運(yùn)算時應(yīng)予處理,否則會出現(xiàn)錯誤。當(dāng)提醒日期的號數(shù)大于相應(yīng)月總天數(shù)時,一般默認(rèn)提醒日期為月末。

3 結(jié)語

該文介紹了事務(wù)提醒程序編制的一些思路和編程方法,對于相似類型的事務(wù)提醒程序的編制有一定的參考價值。由于作者思維和知識面的局限,定有欠妥和不足之處,望各位同行提出寶貴意見。

參考文獻(xiàn)

[1] Bill Sheldon,Billy Hollis.NET 4.5與Visual Basic 2012高級編程[M].7版.北京:清華大學(xué)出版社,2014.

[2] 邵峰晶,于忠清,韓靜海,等.VB.NET程序設(shè)計[M].北京:電子工業(yè)出版社,2011.

猜你喜歡
實(shí)現(xiàn)方法
可能是方法不對
辦公室人員尚需制定個人發(fā)展規(guī)劃
蘇州信息學(xué)院教務(wù)管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)
淺析鐵路通信傳輸?shù)臉?gòu)成及實(shí)現(xiàn)方法
用對方法才能瘦
四大方法 教你不再“坐以待病”!
捕魚