基于VB6.0的定時(shí)任務(wù)隨機(jī)鈴聲鬧鐘_第1頁
基于VB6.0的定時(shí)任務(wù)隨機(jī)鈴聲鬧鐘_第2頁
基于VB6.0的定時(shí)任務(wù)隨機(jī)鈴聲鬧鐘_第3頁
基于VB6.0的定時(shí)任務(wù)隨機(jī)鈴聲鬧鐘_第4頁
基于VB6.0的定時(shí)任務(wù)隨機(jī)鈴聲鬧鐘_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、重慶理工大學(xué)專業(yè)綜合設(shè)計(jì)基于vb6.0的定時(shí)任務(wù)隨機(jī)鈴聲鬧鐘學(xué)生學(xué)號(hào): 學(xué)生姓名: 專業(yè)班級(jí): 指導(dǎo)教師: 起止日期: 2012.12 2013.1 重慶理工大學(xué)chongqing university of technology重慶理工大學(xué)專業(yè)綜合設(shè)計(jì)專業(yè)綜合設(shè)計(jì)任務(wù)書一、設(shè)計(jì)題目:基于bv6.0的隨機(jī)鈴聲定時(shí)任務(wù)鬧鐘二、設(shè)計(jì)目的:1、掌握microsoft visual basic 6.0的基本操作;2、掌握microsoft visual basic 6.0中基本和部分進(jìn)階控件的使用;3、熟練掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)方法;4、掌握利用setup factory 9.0打包成安裝包的方法。三

2、、設(shè)計(jì)任務(wù)及要求: 設(shè)計(jì)并實(shí)現(xiàn)定時(shí)任務(wù)的鬧鐘。下載microsoft visual basic 6.0。鬧鐘具有以下基本功能:1、具有日期、星期、時(shí)、分、秒顯示;2、具有定時(shí)執(zhí)行程序和關(guān)機(jī)、重啟的功能;3、具有隨機(jī)調(diào)用鈴聲的功能。四、設(shè)計(jì)時(shí)間及進(jìn)度安排:設(shè)計(jì)時(shí)間共三周(2012.12.192013.1.7),具體安排如下表:周安排設(shè) 計(jì) 內(nèi) 容設(shè)計(jì)時(shí)間第一周查閱相關(guān)資料,掌握一些程序的設(shè)計(jì)方法。2012.12.192012.12.26第二周進(jìn)行主程序的設(shè)計(jì)。2012.12.272013.1.2第三周調(diào)試、完善、測(cè)試程序。2013.1.32013.1.7五、指導(dǎo)教師評(píng)語及學(xué)生成績指導(dǎo)教師評(píng)語:年

3、 月 日成績指導(dǎo)教師(簽字):- i -目 錄專業(yè)綜合設(shè)計(jì)任務(wù)書i第1章 任務(wù)的提出1第2章 方案論證22.1 已有鬧鐘軟件的參考22.2 軟件隨機(jī)函數(shù)22.2.1 rnd函數(shù)22.2.2 randomize32.3 數(shù)組的使用3第3章 程序設(shè)計(jì)43.1 主窗口43.1.1 主窗口mainform.frm43.1.2 主窗口編程界面43.2 設(shè)置窗口63.2.1 設(shè)置窗口setform.frm63.2.2 設(shè)置窗口編程界面7第4章 程序調(diào)試運(yùn)行安裝94.1 調(diào)試錯(cuò)誤94.1.1 實(shí)時(shí)錯(cuò)誤 7694.1.2 實(shí)時(shí)錯(cuò)誤 994.1.3 實(shí)時(shí)錯(cuò)誤 13104.1.4 “確定”按鈕無用104.1.5

4、程序退出不完全104.2 程序運(yùn)行114.2.1 鬧鐘的設(shè)置114.2.2 鬧鐘的運(yùn)行124.3 程序打包134.4 結(jié)束語14參考文獻(xiàn)15附錄16附錄一 程序完整代碼16主窗口(mainform.frm)16設(shè)置窗口(setform.frm)18附錄二 參考程序代碼19附錄三 程序流程圖23- 21 -第1章 任務(wù)的提出專業(yè)綜合設(shè)計(jì)是學(xué)生理論聯(lián)系實(shí)際的重要實(shí)踐教學(xué)環(huán)節(jié),是對(duì)學(xué)生進(jìn)行的一次綜合性專業(yè)設(shè)計(jì)訓(xùn)練。通過專業(yè)綜合設(shè)計(jì)使學(xué)生獲得以下幾方面能力,為畢業(yè)設(shè)計(jì)(論文)奠定基礎(chǔ)?,F(xiàn)代人的生活節(jié)奏越來越快,電腦也已經(jīng)成為了人們不可缺少的一個(gè)可以說是日常生活用品的東西,它已經(jīng)完全融入了我們的生活。于

5、是,在電腦上掌控時(shí)間的想法便應(yīng)運(yùn)而生。這個(gè)鬧鐘小軟件的設(shè)計(jì)想法就由此而來。第2章 方案論證全國進(jìn)行軟件設(shè)計(jì)的學(xué)生很多都進(jìn)行過鬧鐘的設(shè)計(jì),將變量進(jìn)行隨機(jī)取值的語句也很常見,所以這個(gè)方案具體實(shí)施起來難度不會(huì)太大。2.1 已有鬧鐘軟件的參考圖 2-1 已有鬧鐘主界面 圖2-1是華東理工大學(xué)長江學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)甘文俊學(xué)生的鬧鐘程序主界面?;谛〗M三人能力所限,本組所完成的鬧鐘軟件是以甘文俊同學(xué)的作品作為主要參考對(duì)象的,所以不可避免地在程序代碼或界面設(shè)計(jì)上有一定的雷同,但絕大部分是小組成員獨(dú)立完成的。經(jīng)一段時(shí)間的學(xué)習(xí),總結(jié)本次設(shè)計(jì)所用到的隨機(jī)過程的基本原理為2.22.3章節(jié)。2.2 軟件隨機(jī)函數(shù)

6、2.2.1 rnd函數(shù)在microsoft visual basic 6.0 sp6編寫環(huán)境中,隨機(jī)過程的實(shí)現(xiàn)是調(diào)用程序中的rnd函數(shù)。它是通過計(jì)算機(jī)通過計(jì)算得到的偽隨機(jī)方法,不過這不影響本軟件的編寫。使用rnd函數(shù)后,程序返回一個(gè)包含隨機(jī)數(shù)值的single。要實(shí)現(xiàn)一個(gè)整數(shù)的隨機(jī)具體的代碼如下:int (upperbound - lowerbound + 1) * rnd + lowerbound) (2-1)上段代碼中,upperbound是隨機(jī)數(shù)范圍的上限,lowerbound是隨機(jī)數(shù)范圍的下限。例如要實(shí)現(xiàn)隨機(jī)生成1到5之間的整數(shù)的代碼如下:dim tt = int(5 * rnd) +

7、1) (2-2)2.2.2 randomize在microsoft visual basic 6.0環(huán)境下,僅使用代碼2-2會(huì)得到一些重復(fù)的隨機(jī)數(shù)序列。假如使用代碼2-2得到的隨機(jī)數(shù)序列為3-1-2-5-1,那么在下個(gè)隨機(jī)過程后得到的序列也為3-1-2-5-1。要想得到不重復(fù)的隨機(jī)數(shù)序列,則需要在調(diào)用rnd函數(shù)前使用randomize。如果這樣,那么第二次隨機(jī)過程后得到的隨機(jī)數(shù)序列則可能為2-2-5-3-4。代碼2-2則變?yōu)椋篸im trandomizet = int(5* rnd) + 1) (2-3)2.3 數(shù)組的使用數(shù)組是在程序設(shè)計(jì)中為了處理方便把具有相同類型的若干變量按有序的形式組織起

8、來的一種形式,這些按序排列的同類數(shù)據(jù)元素的集合成為數(shù)組。在本軟件中,在sound文件夾下的所有*.mp3和*.wma音頻文件即為“相同類型的若干變量”,要在程序中方便地使用這些音頻文件就要用到數(shù)組。若把a(bǔ)定義為數(shù)組的名稱,數(shù)組的元素為每個(gè)音頻的地址,則數(shù)組的定義為:dim a() as string (2-4)代碼2-4中,括號(hào)中是用來設(shè)定數(shù)組a的范圍的,若沒有特殊要求,在定義數(shù)組的時(shí)候一般不寫,避免出現(xiàn)“下標(biāo)越界”的錯(cuò)誤。本次設(shè)計(jì)中所涉及到的均為一維數(shù)組,二維數(shù)組不予說明。第3章 程序設(shè)計(jì)3.1 主窗口3.1.1 主窗口mainform.frm圖 3-1 程序主窗口如圖3-1所示,為本軟件的

9、打開后的主窗口。提示有日期、星期、時(shí)間、設(shè)定時(shí)間,用戶可交互的有設(shè)定鬧鐘提示信息文本框、鬧鐘開始按鈕、鬧鐘停止按鈕、設(shè)定按鈕和退出按鈕。在輸入鬧鐘提示信息的文本框內(nèi),用戶可輸入設(shè)定時(shí)間到后,鬧鐘所彈出的提示信息。出于界面簡潔的考慮,作有30個(gè)字的字?jǐn)?shù)限制。用戶在設(shè)定好鬧鐘后,須點(diǎn)擊“開始”按鈕,鬧鐘才會(huì)開始工作。同樣,不希望鬧鐘工作時(shí),只需點(diǎn)擊“停止”按鈕即可。(圖中鬧鐘尚未點(diǎn)擊“開始”按鈕,“停止”按鈕處于不可用狀態(tài)。)3.1.2 主窗口編程界面圖 3-2 主窗口vb界面vb編程中主窗口的控件擺放如圖3-2.。其中含有l(wèi)abel標(biāo)簽5個(gè),commandbutton按鈕4個(gè),timer時(shí)間控件

10、2個(gè),textbox文本框2個(gè),filelistbox文件表1個(gè),windowsmediaplayer多媒體播放控件1個(gè)。其中l(wèi)abel1顯示的是日期和星期提示,label2顯示的是時(shí)間;label3和label4是固定文字提示;label5是鬧鐘設(shè)定時(shí)間提示。textbox1是輸入鬧鐘提示信息的,textbox3是作保存用戶指定定時(shí)啟動(dòng)程序路徑之用。filelistbox讀取的sound文件夾下文件。windowsmediaplayer控件用來進(jìn)行鈴聲的播放。timer時(shí)鐘控件是vb中與時(shí)間有關(guān)的一個(gè)控件,在這次設(shè)計(jì)中,應(yīng)用到了兩個(gè)timer,他們起到軟件“啟動(dòng)鬧鐘”的功能。兩個(gè)timer的

11、interval屬性都設(shè)置為1000,其意義是“返回/設(shè)置兩次調(diào)用timer控件的timer事件間隔的毫秒數(shù)”為1000,即每秒觸發(fā)一次timer事件。timer2是啟動(dòng)程序時(shí)其enable值 = true的控件,他的作用是在啟動(dòng)時(shí)顯示日期、星期、時(shí)間以及判斷安裝路徑下是否有“sound”文件夾,若沒有則創(chuàng)建該創(chuàng)建該文件夾,以免程序運(yùn)行后出現(xiàn)“找不到路徑”錯(cuò)誤。判斷語句采用“dir”語句。其代碼如下:if dir(app.path + sound, vbdirectory) = thenmkdir (app.path + sound) (3-1)在點(diǎn)擊“開始”按鈕后,timer1的enable

12、 = true,timer2的enable = false,timer1和timer2交換工作。timer1是本軟件的核心控件,它是鬧鐘功能得以實(shí)現(xiàn)的基礎(chǔ)。它共有以下幾個(gè)功能代碼:1. 讀入安裝路徑下“sound”文件夾下的mp3和wma音頻文件file1.path = app.path + sound file1.pattern = *.mp3;*.wmaredim a(0 to file1.listcount + 1) as string for i = 0 to file1.listcounta(i) = file1.path & & file1.list(i)next (3-2)代碼3

13、-2中,redim語句下數(shù)組a的上限為file.listcount + 1的原因是后面的數(shù)組a(i)的下標(biāo)為i,本段代碼運(yùn)行后的i值變?yōu)槲募A中音頻文件的數(shù)量+1,為避免出現(xiàn)“下標(biāo)越界”的錯(cuò)誤,故要修改上限。這樣,音頻文件的路徑就存入了數(shù)組a(i)中。2. 鬧鐘響鈴功能首先判定用戶設(shè)置的是否為鬧鐘,如果是,那么當(dāng)設(shè)定時(shí)間到后,啟動(dòng)鈴聲并彈出對(duì)話框提醒用戶。在啟動(dòng)鈴聲之前,還要進(jìn)行指定文件夾下是否有文件的判斷,若有則進(jìn)行鈴聲隨機(jī),若沒有則播放默認(rèn)鈴聲。其具體代碼為:if dir(file1.path & *.*) = thenwindowsmediaplayer1.url = app.path

14、+ alarm.mp3windowsmediaplayer1.controls.playelse: randomizerd = int(i - 1) * rnd + 0) windowsmediaplayer1.url = a(rd)windowsmediaplayer1.controls.playend if (3-3)在代碼3-3中,由于i值比讀取文件數(shù)量多1,故在隨機(jī)過程中需 -1,使隨機(jī)數(shù)的上限正確;而程序默認(rèn)每個(gè)文件的編號(hào)從0開始,所以隨機(jī)過程的下限設(shè)置為0。3. 重啟功能若用戶設(shè)置的定時(shí)任務(wù)為重啟,則執(zhí)行如下代碼:shell shutdown -r -t 30 (3-4)4. 關(guān)機(jī)

15、功能若用戶設(shè)置的定時(shí)任務(wù)為關(guān)機(jī),則執(zhí)行如下代碼:shell shutdown -s -t 30 (3-5)5. 定時(shí)執(zhí)行程序功能若用戶設(shè)置的定時(shí)任務(wù)為啟動(dòng)程序,則執(zhí)行如下代碼:shell text3.texttimer1.enabled = falsetimer2.enabled = true (3-6)在上面的3條語句中,shell的功能同在“運(yùn)行”中輸入相應(yīng)語句。3.2 設(shè)置窗口3.2.1 設(shè)置窗口setform.frm通過點(diǎn)擊主窗口中的“設(shè)定”按鈕進(jìn)入鬧鐘的設(shè)定程序,其運(yùn)行界面為:圖 3-3 設(shè)定窗口設(shè)定窗口分為上下兩個(gè)框架。上框架為時(shí)間設(shè)定框架,包含有設(shè)定的提示時(shí)間,默認(rèn)是00:00:

16、00,設(shè)定的動(dòng)作,默認(rèn)為鬧鐘。還有選擇設(shè)定時(shí)間和動(dòng)作的下拉菜單,以及確認(rèn)添加/修改提醒時(shí)間的按鈕。下框架為啟動(dòng)程序設(shè)定框架。當(dāng)用戶選擇的動(dòng)作為“啟動(dòng)程序時(shí)”下方的“瀏覽”可用,用戶可以選擇一個(gè)可執(zhí)行文件(*.exe)來作為定時(shí)啟動(dòng)目標(biāo)。框架中有程序名的提示以及程序路徑的提示/輸入框。3.2.2 設(shè)置窗口編程界面vb中設(shè)置窗口的控件擺放如圖3-4。上下兩個(gè)frame框架包含有兩個(gè)不同的部分。上部分frame的caption為時(shí)間設(shè)定。其中有固定文字提示的label1和label3,提示設(shè)定時(shí)間的label2,提示設(shè)定動(dòng)作的label4。有combobox4個(gè):combo1、combo2、comb

17、o3、combo4,分別設(shè)置時(shí)間“時(shí)”“分”“秒”和設(shè)置“動(dòng)作”。以及一個(gè)確認(rèn)commandbutton按鈕。下部分frame的caption為啟動(dòng)程序設(shè)定。其中有一個(gè)固定文字提示label5,提示啟動(dòng)程序名的label6,和鍵入/提示啟動(dòng)路徑的textbox,以及瀏覽路徑command按鈕。在框架之外是設(shè)置窗口的確定和取消commandbutton按鈕,以及一個(gè)文件選擇控件commondialog。當(dāng)點(diǎn)擊“瀏覽”按鈕選擇執(zhí)行程序路徑時(shí),顯示commondialog1,控件只可讀*.exe文件。當(dāng)用戶選擇完成以后,text1顯示所選路徑,label6的caption顯示所選文件的文件名,其具體

18、代碼如下:圖 3-4 設(shè)定窗口vb界面commondialog1.filter = 可執(zhí)行文件(*.exe)|*.exe commondialog1.filterindex = 1commondialog1.showopentext1.text = commondialog1.filenamelabel6.caption = dir(text1.text) (3-7)點(diǎn)擊窗口“確定”按鈕,彈出確定保存提示框,當(dāng)用戶確定后,通過代碼3-8把設(shè)定的時(shí)間信息和程序啟動(dòng)路徑信息賦給主窗口中的控件,以達(dá)到“確定保存”的目的。mainform.label5.caption = label2.caption

19、mainform.text3.text = label6.caption (3-8)第4章 程序調(diào)試運(yùn)行安裝4.1 調(diào)試錯(cuò)誤4.1.1 實(shí)時(shí)錯(cuò)誤 76代碼3-1起到了一個(gè)判斷是否有文件夾的作用。在調(diào)試中,由于安裝路徑下沒有“sound”文件夾,并且沒有加入代碼3-1,則就會(huì)出現(xiàn)路徑未找到的實(shí)時(shí)錯(cuò)誤。圖 4-1 實(shí)時(shí)錯(cuò)誤 764.1.2 實(shí)時(shí)錯(cuò)誤 9代碼3-2和代碼3-3的隨機(jī)過程,數(shù)組a()和i值的設(shè)置以及rnd函數(shù)的使用不當(dāng)都會(huì)帶來實(shí)時(shí)錯(cuò)誤9(圖4-2),及下標(biāo)越界。圖 4-2 實(shí)時(shí)錯(cuò)誤9“下標(biāo)越界”是指在程序中引用了不存在的數(shù)組元素,使得下標(biāo)可能比下標(biāo)范圍大或小,或是在應(yīng)用程序中這一邊的數(shù)

20、組沒有指定范圍。檢查數(shù)組的聲明以確認(rèn)其上界和下界。解決辦法之一是數(shù)組重新指定范圍,使用 ubound 和 lbound 函數(shù)來決定數(shù)組訪問。如果索引指定為變量,應(yīng)檢查變量名的拼寫。4.1.3 實(shí)時(shí)錯(cuò)誤 13在設(shè)置窗口setform.frm中,因?yàn)闆]有加入相應(yīng)的避錯(cuò)提示,導(dǎo)致在賦給label2.caption時(shí)間變量的時(shí)候出現(xiàn)類型不匹配的實(shí)時(shí)錯(cuò)誤(圖4-3)。其解決辦法是加入避錯(cuò)提示代碼(4-1)。圖4-3 實(shí)時(shí)錯(cuò)誤 13if combo1.text = then msgbox (請(qǐng)選擇時(shí)!) elseif combo2.text = then msgbox (請(qǐng)選擇分!) elseif com

21、bo3.text = then msgbox (請(qǐng)選擇秒!)else: t = combo1.text & : & combo2.text & : & combo3.textlabel2.caption = tend if (4-1)4.1.4 “確定”按鈕無用在設(shè)定窗口無論點(diǎn)擊“確定”與否,其設(shè)定的時(shí)間和動(dòng)作信息都會(huì)賦給主窗口。出現(xiàn)這個(gè)問題的原因是沒有加入過渡變量而直接使用了設(shè)定窗口中的值,導(dǎo)致主窗口忽視了“確定”按鈕的功能,顯得按鈕功能失效。其解決辦法是加入代碼3-8。4.1.5 程序退出不完全最后進(jìn)行測(cè)試時(shí),關(guān)閉程序之后,我們發(fā)現(xiàn)在任務(wù)管理器中還存在有程序的進(jìn)程。后來研究發(fā)現(xiàn)是寫退出代碼

22、的時(shí)候忽略了設(shè)置窗口,僅把主窗口的“退出”按鈕代碼寫為4-2的形式。private sub exit_click()unload meend sub (4-2)其解決代碼為4-3:private sub exit_click()unload meunload setformend sub (4-3)4.2 程序運(yùn)行4.2.1 鬧鐘的設(shè)置如圖4-4,以鬧鐘為測(cè)試對(duì)象,把鬧鐘提醒時(shí)間設(shè)定為15:00:00。圖 4-4 測(cè)試鬧鐘設(shè)置界面點(diǎn)擊下方“確定”按鈕后出現(xiàn)圖4-5的提示框,確認(rèn)后提示設(shè)定成功(圖4-6)。圖 4-5 設(shè)置保存提示圖 4-6 設(shè)定成功提示4.2.2 鬧鐘的運(yùn)行設(shè)定成功后,主窗口提

23、示設(shè)定時(shí)間,并且隨時(shí)可修改提示文字。點(diǎn)擊“開始”按鈕,鬧鐘開始工作。(圖4-7)圖 4-7 鬧鐘的運(yùn)行到達(dá)設(shè)定時(shí)間,程序彈出提示信息(圖4-8),并響起默認(rèn)鈴聲。圖 4-8 設(shè)定時(shí)間到在以上測(cè)試中,安裝路徑的sound文件夾下并沒有鈴聲,所以提示鈴聲為默認(rèn)。以后多次測(cè)試時(shí),我們加入了5個(gè)音頻文件,并實(shí)現(xiàn)了隨機(jī)播放的效果。重啟、關(guān)機(jī)、啟動(dòng)任務(wù)等測(cè)試均取得了成功,在此不一一列舉。4.3 程序打包由于軟件在microsoft visual basic 6.0下編譯,并使用了一些默認(rèn)控件以外的控件,如commondiaglog和windowsmediaplayer控件,這就導(dǎo)致在沒有安裝vb軟件的計(jì)算

24、機(jī)上無法運(yùn)行本程序。于是需要進(jìn)行程序打包操作,把程序運(yùn)行需要的文件打包成一個(gè)安裝文件,在沒有vb軟件的計(jì)算機(jī)上進(jìn)行安裝,以保證軟件的正常運(yùn)行。我們采用的是利用setup factory 9.0這款軟件來進(jìn)行打包,它會(huì)自動(dòng)掃描在編寫軟件時(shí)用到的控件,并把控件打包成*.ocx文件,在安裝整個(gè)程序的時(shí)候安裝在系統(tǒng)盤下的windowssystem32(winxp/vista/win7)文件夾下。圖 4-9打包部分界面在進(jìn)行好相關(guān)的設(shè)置之后,點(diǎn)擊“構(gòu)建”按鈕即可開始文件的打包工作。靜待一段時(shí)間后,打包完成(圖4-10)得到完整的安裝文件。圖 4-10 打包完成界面4.4 結(jié)束語經(jīng)過數(shù)天的程序設(shè)計(jì)和調(diào)試,

25、本次設(shè)計(jì)終于取得了成功,軟件正常運(yùn)行,大小bug排除了十余個(gè),得到了最終軟件成品。結(jié)論通過本次為期三周的專業(yè)綜合設(shè)計(jì),我們小組最終做出了一個(gè)軟件鬧鐘成品,它是我們小組成員心血的結(jié)晶。小組在參考了數(shù)個(gè)已有鬧鐘軟件后,發(fā)現(xiàn)并沒有我們作品所設(shè)計(jì)的隨機(jī)播放鈴聲功能,所以我們決定把它作為一個(gè)創(chuàng)新點(diǎn)來進(jìn)行設(shè)計(jì)。并且也很少有定時(shí)任務(wù)這一功能。雖然我們知道定時(shí)任務(wù)在windows系統(tǒng)的“計(jì)劃任務(wù)”功能里已經(jīng)很完善了,但是我們還是想自己親手做一做,把它集成到一個(gè)軟件里面。這次的設(shè)計(jì)充分鍛煉了我們的實(shí)際動(dòng)手操作和變成能力,是對(duì)所學(xué)知識(shí)的一次檢驗(yàn)。在整個(gè)過程中,設(shè)計(jì)和調(diào)試各占了一半的時(shí)間,這使我們懂得了調(diào)試程序的重

26、要性。當(dāng)然也還有這個(gè)小軟件不足的地方,即是還沒有實(shí)現(xiàn)循環(huán)鬧鐘和多個(gè)鬧鐘的功能。初步了解后,需要把鬧鐘設(shè)置的時(shí)間以文檔形式存儲(chǔ)起來,在下次啟動(dòng)的時(shí)候調(diào)用文檔數(shù)據(jù)。由于時(shí)間有限,我們并沒有進(jìn)行相關(guān)的設(shè)計(jì)。最后要感謝王飛指導(dǎo)老師在設(shè)計(jì)過程中對(duì)我們小組的督促和建議,以及張子木同學(xué)在設(shè)計(jì)過程中給予的一些幫助和建議。沒有他們,本次設(shè)計(jì)不會(huì)順利完成。參考文獻(xiàn)1 明日科技. visual basic從入門到精通m.第三版. 北京:清華大學(xué)出版社,20122 王學(xué)軍,張玉梅 主編. visual basic程序設(shè)計(jì)m. 北京:中國鐵道出版社,20083 楊克玉 主編. vb6.0程序設(shè)計(jì)實(shí)訓(xùn)教程m. 北京:機(jī)械

27、工業(yè)出版社,20054 胡鳴 主編. windows網(wǎng)絡(luò)編程技術(shù)m. 北京:科學(xué)出版社,20085 董正言 主編. 面向?qū)ο蟪绦蛟O(shè)計(jì). 北京:清華大學(xué)出版社,2010.86 甘文俊. 附錄附錄一 程序完整代碼主窗口(mainform.frm)dim a() as stringprivate sub mainform_load() mainform.autoredraw = true windowsmediaplayer1.settings.volume = 100end subprivate sub form_queryunload(cancel as integer, unloadmode

28、as integer) if msgbox(確定退出?, vbyesno) = vbno then 退出確認(rèn) cancel = 1 end ifend subprivate sub set_click() setform.show mainform.enabled = falseend subprivate sub exit_click() unload me unload setformend subprivate sub start_click() timer2.enabled = false 點(diǎn)擊開始兩個(gè)timer交換工作 timer1.enabled = true stopalarm.

29、enabled = true start.enabled = falseend subprivate sub stopalarm_click() timer2.enabled = true timer1.enabled = false start.enabled = true stopalarm.enabled = false if setform.label4 = 關(guān)機(jī) then shell shutdown -a elseif setform.label4 = 重啟 then shell shutdown -a end ifend subprivate sub timer1_timer()

30、 時(shí)間顯示 label1.caption = 今天是 & year(date) & 年 & month(date) & 月 & day(date) & 日 & 星期 & weekday(now) - 1 label2.caption = time$ file1.path = app.path + sound 讀取安裝路徑sound文件夾下的音頻文件 file1.pattern = *.mp3;*.wma redim a(0 to file1.listcount + 1) as string 文件讀入數(shù)組 for i = 0 to file1.listcount a(i) = file1.pat

31、h & & file1.list(i) next dim settime as date settime = label5.caption 鬧鐘定時(shí)任務(wù)主程序 if setform.label4 = 鬧鐘 then if time$ = settime then if dir(file1.path & *.*) = then windowsmediaplayer1.url = app.path + alarm.mp3 windowsmediaplayer1.controls.play else: randomize rd = int(i - 1) * rnd + 0) 隨機(jī)過程 windows

32、mediaplayer1.url = a(rd) windowsmediaplayer1.controls.play end if if text1.text = then if msgbox(設(shè)定時(shí)間到!, vbokonly, 設(shè)定時(shí)間到!) = vbok then windowsmediaplayer1.controls.stop timer1.enabled = false timer功能交換 timer2.enabled = true stopalarm.enabled = false start.enabled = true end if elseif msgbox(text1.te

33、xt, vbokonly, 設(shè)定時(shí)間到!) = vbok then windowsmediaplayer1.controls.stop timer1.enabled = false timer2.enabled = true stopalarm.enabled = false start.enabled = true end if end if elseif setform.label4 = 重啟 then if time$ = settime then shell shutdown -r -t 30 end if elseif setform.label4 = 關(guān)機(jī) then if time

34、$ = settime then shell shutdown -s -t 30 end if else: if time$ = settime then shell text3.text timer1.enabled = false timer2.enabled = true stopalarm.enabled = false start.enabled = true end if end ifend subprivate sub timer2_timer() label1.caption = 今天是 & year(date) & 年 & month(date) & 月 & day(date

35、) & 日 & 星期 & weekday(now) - 1 label2.caption = time$ 判斷文件夾存在,否則創(chuàng)建該文件夾 if dir(app.path + sound, vbdirectory) = then mkdir (app.path + sound) end ifend sub設(shè)置窗口(setform.frm)dim filename as stringdim t as dateoption explicitprivate sub combo4_click() label4.caption = combo4.textend subprivate sub comman

36、d1_click() commondialog1.filter = 可執(zhí)行文件(*.exe)|*.exe 文件選擇 commondialog1.filterindex = 1 commondialog1.showopen text1.text = commondialog1.filename label6.caption = dir(text1.text)end subprivate sub command2_click() 保存提示 if msgbox(確定保存?, vbyesno) = vbyes then setform.hide mainform.enabled = true main

37、form.show mainform.label5.caption = label2.caption mainform.text3.text = label6.caption msgbox (設(shè)定成功,請(qǐng)點(diǎn)擊【開始】激活鬧鐘!) end ifend subprivate sub command3_click() setform.hide mainform.enabled = true mainform.showend subprivate sub command4_click() 避錯(cuò)提示 if combo1.text = then msgbox (請(qǐng)選擇時(shí)!) elseif combo2.t

38、ext = then msgbox (請(qǐng)選擇分!) elseif combo3.text = then msgbox (請(qǐng)選擇秒!) else: t = combo1.text & : & combo2.text & : & combo3.text label2.caption = t end if if label4.caption = 啟動(dòng)程序 then command1.enabled = true end ifend sub附錄二 參考程序代碼1、自動(dòng)加載form1,初始化所有控件的數(shù)據(jù),并且讀取指定路徑的文件中數(shù)據(jù),然后將讀出的數(shù)據(jù)用選擇排序法,按先后順序排序,最后記錄比統(tǒng)時(shí)間大的最

39、小時(shí)間數(shù)據(jù),以便鬧鐘判斷。、private sub form_load()dim i as integer, a as integer, tmp as datefilenum = freefileopen d:time.dat for random as filenum len = len(t(i)lastrecord = lof(filenum) / len(t(i)if lastrecord 0 thenredim t(lastrecord - 1), t1(lastrecord - 1)elseredim t(0), t1(0)end iffor i = 1 to lastrecordg

40、et filenum, i, t(i - 1)t1(i - 1) = timeserial(val(t(i - 1).shizhong), val(t(i - 1).fenzhong), 0)next iclose filenumfor i = 0 to lastrecord - 2 for a = i + 1 to lastrecord - 1 if t1(a) t1(i) then tmp = t1(a) t1(a) = t1(i) t1(i) = tmp end if next anext ifor i = 0 to lastrecord - 1if t1(i) time thenb =

41、 t1(i)exit forend ifif i = lastrecord - 1 thenb = t1(0)exit forend ifnext iend sub2、單擊command1加載form2,以便用戶設(shè)定鬧鐘時(shí)間和鬧鐘音樂。并且同時(shí)是form1失效。 private sub command1_click()form2.showform1.enabled = falseend sub3、加載form2,使得form2的所有控件初始化數(shù)據(jù),然后用戶可以設(shè)置多個(gè)鬧鐘時(shí)間,并將其存儲(chǔ)在指定的文件中,以供以后讀取。 用戶還可以設(shè)定鬧鐘音樂,系統(tǒng)記錄下音樂路徑,并在label1中顯示。priv

42、ate t as timepublic filenum as integerpublic lastrecord as longpublic position as longprivate sub command1_click()commondialog1.filter = allfile(*.*)|*.*|音樂(.mp3)|*.mp3|音頻(.wma)|*.wmacommondialog1.filterindex = 2commondialog1.showopenlabel1.caption = commondialog1.filenameend subprivate sub command2

43、_click()msgbox 確定保存, 33, 確定close filenumunload meform1.enabled = trueend subprivate sub command3_click()unload meform1.enabled = trueend subprivate sub form_load()dim d as string, our as string, min as string, i as integera = 0filenum = freefileopen d:time.dat for random as filenum len = len(t)if lo

44、f(filenum) 0 thenlastrecord = lof(filenum) / len(t)for i = 1 to lastrecord get filenum, i, t d = t.shiduan our = t.shizhong min = t.fenzhong list1.list(i - 1) = d list1.list(i - 1) = list1.list(i - 1) & our list1.list(i - 1) = list1.list(i - 1) & : list1.list(i - 1) = list1.list(i - 1) & minnext iend ifend subprivate sub command4_click()list1.additem combo1.t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論