前言
時下,智能手機越來越貼近我們的生活,越來越多的教師朋友,學生朋友都會用智能手 機,因為她們功能齊全,在手機上運行的軟件應有盡有,QQ、在線游戲,音樂影視…….。
對於大學生朋友,廣大教師朋友,能夠在自己的手機有一個動態的課程表程序,一來可以合理安 排空余時間,二來又不會誤了學習工作的時間,是一件非常不錯的事。本文,以微軟公司的移動手機
平台 WindowsMobile2003為基礎,簡單實現手機上的課表程序。
程序在 WindowsMobile2003 dopod818手機上測試通過。程序運行時,主界面如圖
程序 下載地http://nihg.org/blogview.asp?logID=403
開發平台與工具:
MS WindowsXp 組件 基於.net framework 1.1
Basic4ppc 5.8 (可到http://www.basic4ppc.cn/下載)
思路 與代碼:
Basic語言是眾多程序初學者的入門語言,開發手機程序,我們同樣也能使用她,使用 沒有基礎的朋友也能一看就會。程序的主要思路如下:
一、根據日期得到星期,然後讀取相應的 日課表。
日課表為了方便與美觀,直接做成bmp圖片文件,下面是空白的課表和根據自己的課程 已填好的課表,為了方便程序調用,直接將文件存為 1.bmp 2.bmp …..表示 周一 周二 的課表 ,以此類推。
空白表 1.bmp 2.bmp
程序的主界面如下 ,可見,我們為了盡量 減少動態加載的課表體積,只將界面中心部份的課表作成bmp文件,整個背景直接做在程序裡了。
實現讀取課表的代 碼如下:
我們在窗體上用一個 timer組件來實現
Sub Timer4_Tick ' 用來檢測當前日期並且讀取相應課表值得注意的是 else
' then 語句 換行很重 then 必須另起一行
If label32.Text ="Monday" Then
image3.LoadPicture("class1.bmp")
Else If label32.Text ="Tuesday" Then
image3.LoadPicture("class2.bmp")
Else If label32.Text ="Wednesday" Then
image3.LoadPicture("class3.bmp")
Else If label32.Text ="Thursday" Then
image3.LoadPicture("class4.bmp")
Else If label32.Text ="Friday" Then
image3.LoadPicture("class5.bmp")
Else
End If
End Sub
其中label32顯示當前的星期值,從下面timer3組件中得到值。
二、動態實時顯示當前課
課表的主要作用是,我們能實時查看當前是上課還是下課,是在上哪節課,於是 ,我們想到了用一個不同色澤的小矩形來指示。矩形對准哪 節課就是表示哪節課,而且可以自己定義三 個時間:我們用一個文本文件 time.txt 來存放課時間,其內容格式定義如下
第一節 08:00 08:05 08:45
第二節 10:05 10:10 10:50
第三節 11:05 11:10 11:50
第四節 12:05 12:10 12:50
第五節 13:00 13:05 12:25
第六節 14:05 14:10 13:25
第七節 13:33 13:35 14:15
第八節 16:05 16:10 16:50
////////////////文件內容說明////////////////
以上為本程序的時間表,您只要修改每節課的三個時間,其中
第一個時間為預備提示時間
第二個時間為真正上課時間
第三個時間為下課時間
每個時間一定要用上面的格式,並且每兩個時間之間用一個 空格 隔開
我們先用下面代碼讀出這些內容,放到窗體上,待用。
Sub Form2_Show
form2.minimizebox=true
FileOpen (c1, "time.txt",cRandom) '打開時間表,讀取時間
下面是每一節課的三個不同時間,分別放在不同的label上,要與當前時間作比較,以便用不同 的色澤顯示矩形提示塊
label8.Text = FileGet (c1, 7,5)
label9.Text = FileGet (c1, 13,5)
label10.Text = FileGet (c1,19,5)
label11.Text = FileGet (c1, 33,5)
label12.Text = FileGet (c1, 39,5)
label13.Text = FileGet (c1,45,5)
label14.Text = FileGet (c1, 59,5)
label15.Text = FileGet (c1, 65,5)
label16.Text = FileGet (c1,71,5)
label17.Text = FileGet (c1, 85,5)
label18.Text = FileGet (c1, 91,5)
label19.Text = FileGet (c1,97,5)
label20.Text = FileGet (c1, 111,5)
label21.Text = FileGet (c1, 117,5)
label22.Text = FileGet (c1,123,5)
label23.Text = FileGet (c1, 137,5)
label24.Text = FileGet (c1, 143,5)
label25.Text = FileGet (c1,149,5)
label26.Text = FileGet (c1, 163,5)
label27.Text = FileGet (c1, 169,5)
label28.Text = FileGet (c1,175,5)
label29.Text = FileGet (c1, 189,5)
label30.Text = FileGet (c1, 195,5)
label31.Text = FileGet (c1,201,5)
FileClose(c1)
End Sub
時間讀取完畢後,我們將課表每一行的坐標位置取出來,用下面的代碼就能實現實時顯示了。
Sub Timer3_Tick
x=Time(Now)
label5.Text =x
label7.Text =TimeS
label32.Text =DateDayOfweek (Now) '得到星期幾
If label5.Text =label8.Text Then
image4.Top =32
image4.Color =cgreen
Else If label5.Text =label9.Text Then
image4.Top =32
image4.Color =cred
Else If label5.Text =label10.Text Then
image4.Top =32
image4.Color =cblue
'label8 9 10 分別為第一節課的准備,上課,下課時間,32 為第一節課對應的行坐標,意 思就是在第一節課這一行,用三種色彩來指示,下面是每節課的不同色彩顯示
'''''''第2節課 ''''''''''''''
Else If label5.Text =label11.Text Then
image4.Top =52
image4.Color =cgreen
Else If label5.Text =label12.Text Then
image4.Top =52
image4.Color =cred
Else If label5.Text =label13.Text Then
image4.Top =52
image4.Color =cblue
''''''''''第3節課 '''''
Else If label5.Text =label14.Text Then
image4.Top =72
image4.Color =cgreen
Else If label5.Text =label15.Text Then
image4.Top =72
image4.Color =cred
Else If label5.Text =label16.Text Then
image4.Top =72
image4.Color =cblue
''''''''''''第4節課
Else If label5.Text =label17.Text Then
image4.Top =94
image4.Color =cgreen
Else If label5.Text =label18.Text Then
image4.Top =94
image4.Color =cred
Else If label5.Text =label19.Text Then
image4.Top =94
image4.Color =cblue
'''''''''''''第5節課
Else If label5.Text =label20.Text Then
image4.Top =118
image4.Color =cgreen
Else If label5.Text =label21.Text Then
image4.Top =118
image4.Color =cred
Else If label5.Text =label22.Text Then
image4.Top =118
image4.Color =cblue
''''''''''第6節課
Else If label5.Text =label23.Text Then
image4.Top =140
image4.Color =cgreen
Else If label5.Text =label24.Text Then
image4.Top =140
image4.Color =cred
Else If label5.Text =label25.Text Then
image4.Top =140
image4.Color =cblue
''''''''''第七節課
Else If label5.Text =label26.Text Then
image4.Top =162
image4.Color =cgreen
Else If label5.Text =label27.Text Then
image4.Top =162
image4.Color =cred
Else If label5.Text =label28.Text Then
image4.Top =162
image4.Color =cblue
'''''''''第八節課
Else If label5.Text =label29.Text Then
image4.Top =183
image4.Color =cgreen
Else If label5.Text =label30.Text Then
image4.Top =183
image4.Color =cred
Else If label5.Text =label31.Text Then
image4.Top =183
image4.Color =cblue
Else
image4.top =2000 ' 不符合條件,讓指針不可見
End If
End Sub
三、一個小小的關鍵所在
用basic4ppc 寫的程序,默認情況下,程序的退 出按鍵是 一個圓圈 裡面是 OK 如圖
點擊OK 後,程序就 直接退出了,即不能最小化,在後台一直運行, 這樣,下次啟動時,由於我們的程序是實時判斷某個時間點 ,即 第一節 08:00 08:05 08:45 程序只僅當處於這三個值時,才有顯示動作,如果是 08:06 就會造成不 能正確顯示,所以,我想到了,如何讓程序關閉後,一直在後台最小化運行,解決的方法是: 在程序最先初化 時,加入下面代碼
Sub App_Start
Form2.show
flb.New1("Form2",B4PObject(1))
flb.MinimizeBox = True
End Sub
這樣程序右上角原來的關閉按鈕 OK 變成現在的 X 了,如圖所示:
點 X 後 程序還在後台運行,用任務管理器激活後,發現提示塊顯示正常
當然,也可考慮到老師朋友們可能會有臨時課務,比哪某位老師下午最後一節課不在, 要你去代上,你可以做一個臨時課務,直接在此輸入要代的課即可。
呵,用起來也還真 不錯。
結束語
這是我在ppc手機上寫的第一個小工具,因為自己喜歡寫程序,有些都是生 活中碰到的問題,然後在睡前或睡醒前加點思索,於是就有了她。但願這小小拙作,能給您拋磚引玉, 使您有些動力去寫自己喜歡的作品。有興趣的朋友可以加以完善,比如上課時自動設為靜音或振動,下 課後再自動恢復等.