桌面時(shí)鐘設(shè)計(jì)與實(shí)現(xiàn)_第1頁
桌面時(shí)鐘設(shè)計(jì)與實(shí)現(xiàn)_第2頁
桌面時(shí)鐘設(shè)計(jì)與實(shí)現(xiàn)_第3頁
桌面時(shí)鐘設(shè)計(jì)與實(shí)現(xiàn)_第4頁
桌面時(shí)鐘設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、  桌面時(shí)鐘設(shè)計(jì)與實(shí)現(xiàn)成員:李睿 江秀偉 許藝韜   專業(yè)班級 :通信11401  實(shí)踐日期: 2014年月6日-2014年1月17日 1  一、綜合訓(xùn)練目的與要求 本次面向?qū)ο缶幊虒?shí)踐是學(xué)習(xí)了C+面向?qū)ο蟪绦蛟O(shè)計(jì)之后進(jìn)行的必要的實(shí)踐性環(huán)節(jié)。由于各種原因,信息管理與信息系統(tǒng)專業(yè)是在學(xué)習(xí)了一年之后才安排了這個(gè)實(shí)習(xí),因?yàn)榫驮诳荚囍?,任?wù)有點(diǎn)繁重。本課綜合訓(xùn)練的目的和任務(wù): 1. 重溫和加深對 C+面向?qū)ο缶幊陶Z言的基本知識的理解和掌握; 2

2、. 掌握 C+語言編程和程序調(diào)試的基本技能; 3. 利用網(wǎng)絡(luò)資源,自己學(xué)習(xí)MFC或者Qt等相關(guān)軟件對頁面進(jìn)行布局; 4. 學(xué)會與他人協(xié)作進(jìn)行小軟件的設(shè)計(jì),遇到分歧時(shí),能夠處理得當(dāng),共同完成實(shí)踐要求。二、綜合訓(xùn)練任務(wù) (1)需求分析 隨著計(jì)算機(jī)的普及,人們對計(jì)算機(jī)的要求遠(yuǎn)不是當(dāng)初的進(jìn)行大型數(shù)據(jù)運(yùn)算和復(fù)雜數(shù)據(jù)分析了,人與人之間的日常交流,交易等等也都通過計(jì)算機(jī)來完成了。因?yàn)槭恰叭粘S闷贰保?dāng)然想讓它看起來舒服一些了,因此,人們對電腦桌面美觀實(shí)用的需求也達(dá)到了一定的程度,現(xiàn)在的生活節(jié)奏也快了,都希望在最短的時(shí)間內(nèi)完成最多

3、的事,獲取最大的信息量。人們?yōu)榱嗽谟糜?jì)算機(jī)工作的同時(shí),隨時(shí)了解時(shí)間,不錯(cuò)過自己的行程安排。都會在電腦桌面安裝一個(gè)顯示時(shí)間日歷的小工具,所以桌面時(shí)鐘的需求還是挺大的。 (2)任務(wù) 桌面時(shí)鐘是日常小工具,所以良好的人機(jī)界面應(yīng)該做到 采用面向?qū)ο笏枷朐O(shè)計(jì)實(shí)現(xiàn)各種類 因?yàn)樯婕敖缑?,所以要運(yùn)用界面設(shè)計(jì),我們選擇采用QT做界面設(shè)計(jì) 能夠通過自學(xué)習(xí)運(yùn)用自帶函數(shù)來實(shí)現(xiàn)功能在實(shí)習(xí)期間,完成自己負(fù)責(zé)部分代碼的編寫和調(diào)試,并完成規(guī)范的實(shí)習(xí)論文三、總體設(shè)計(jì) (1)主要模塊劃分圖 1 主要模塊(2)模塊說明 圓盤時(shí)鐘:指的是圓盤時(shí)

4、鐘,也就是說,有時(shí)針分針秒針顯示的時(shí)鐘,這一模塊中,需要繪制各個(gè)時(shí)針。 電子時(shí)鐘:我們把它定義為向電子表那樣顯示的時(shí)鐘部分,每秒更新一次,并顯示出來。 日歷:日歷就是顯示當(dāng)前日歷,并能查詢前后的日歷。 整體布局:整體布局時(shí),分為水平布局和垂直布局,水平布局用來布局圓盤時(shí)鐘和電子時(shí)鐘并行排列,組合之后,和日歷的布局用垂直布局完成。圓盤時(shí)鐘和電子時(shí)鐘的單布局也是用垂直布局完成的。四、詳細(xì)設(shè)計(jì)說明 (1)類圖(2)設(shè)計(jì)說明 圓盤時(shí)鐘:指的是圓盤時(shí)鐘,也就是說,有時(shí)針分針秒針顯示的時(shí)鐘,這一模塊中,需要繪制各個(gè)時(shí)針,有我的同伴完成,具體實(shí)現(xiàn)過程我也限于

5、了解,是先把默認(rèn)原點(diǎn)坐標(biāo)移動到中心處,然后分別畫刷填充等,定義好指針的形狀顏色后,分別畫出時(shí)針分針秒針,讀取當(dāng)前時(shí)間,將各指針每段時(shí)間應(yīng)該旋轉(zhuǎn)的角度計(jì)算并設(shè)定好,就構(gòu)成了圓盤時(shí)鐘了。 電子時(shí)鐘:我們把它定義為向電子表那樣顯示的時(shí)鐘部分,每秒更新一次,并顯示出來。默認(rèn)狀態(tài)下,顯示的數(shù)字位數(shù)(包括他們之間的冒號)為5為,這時(shí)候,顯示的只有小時(shí)和分鐘。所以要先將它改為8位的格式,讓它把小時(shí)、分鐘、秒鐘都顯示出來。 日歷:日歷就是顯示當(dāng)前日歷,并能查詢前后的日歷。首先要為日歷創(chuàng)建一個(gè)表格布局,并將其設(shè)置成布局尺寸不變,就是說,日歷的布局不會隨著窗口的拉大而改變大小。用setGrid

6、Visible(true)將表格線設(shè)置為顯示,這樣就能在日歷版面看到網(wǎng)格線,比較適合大家的審美習(xí)慣。把日歷表添加到表格布局中,這就算初步完成了日歷表格的顯示了。 當(dāng)然了,總體模塊除了以上三個(gè)主要部分,還有對整體的布局也是不可或缺的。因此,還有一個(gè)重要的模塊便是整體布局,整體布局時(shí),分為水平布局和垂直布局,水平布局用來布局圓盤時(shí)鐘和電子時(shí)鐘并行排列,組合之后,和日歷的布局用垂直布局完成。圓盤時(shí)鐘和電子時(shí)鐘的單布局也是用垂直布局完成的。(3)具體類說明 /*因?yàn)榍懊嬉呀?jīng)提到過同伴負(fù)責(zé)的部分,在這一塊就不做說明*/ calender類 Calender類用來實(shí)

7、現(xiàn)日歷的顯示,繼承了QT里的基類QWidget,定義了一個(gè)public成員變量calender(),用來聲明日歷的構(gòu)造函數(shù)。Private成員變量createPreviewGroupBox()聲明日歷框中的函數(shù)。設(shè)計(jì)的兩個(gè)函數(shù): 1.calender(),設(shè)計(jì)日歷類,實(shí)現(xiàn)創(chuàng)建日歷表格、創(chuàng)建表格布局對象,還有一些基本設(shè)置。 2.createPreviewGroupBox(),設(shè)計(jì)日歷表格框里的布局,將日歷導(dǎo)入表格布局中,再將表格布局添加到窗口部件“日歷查詢”分組框中。 mainclock類Mainclock類用來實(shí)現(xiàn)總體布局,將圓盤時(shí)鐘、電子時(shí)鐘、日歷有機(jī)結(jié)合起來,

8、使得人機(jī)界面友好美觀。在繼承基類情況下,定義了一個(gè)public成員變量mainclock.在源文件中進(jìn)行詳細(xì)設(shè)計(jì)說明。首先是窗口類,設(shè)計(jì)窗口的標(biāo)題,用庫函數(shù)中的Qdate獲取當(dāng)前時(shí)間,以便程序進(jìn)行。然后,創(chuàng)建圓盤時(shí)鐘對象,對圓盤時(shí)鐘在總布局中的位置怎么顯示進(jìn)行具體設(shè)置,并設(shè)置分組框標(biāo)題。其次,設(shè)置當(dāng)前日期(年月日),創(chuàng)建電子時(shí)鐘對象,電子時(shí)鐘和當(dāng)前日期設(shè)為垂直布局,他們組合后,與圓盤時(shí)鐘的布局為水平布局。最后,創(chuàng)建日歷對象,將日歷添加到布局當(dāng)中。詳細(xì)設(shè)計(jì)見代碼。這就算完成了總體布局了。 main類主類,用來將所有的類組合起來,為總程序服務(wù),控制整個(gè)桌面時(shí)鐘的運(yùn)行。#include &

9、lt;windows.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <math.h>#define pi 3.1415926LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) MSG Message; WNDCLAS

10、S WndClass; WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH); WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); WndClass.hIcon=LoadIcon(NULL,"END"); WndClass.hInstance=hInstance; WndClass.lpfnWndProc=WndProc; WndClass.lpszClassName="

11、WinFill" WndClass.lpszMenuName=NULL; WndClass.style=CS_HREDRAW|CS_VREDRAW; RegisterClass(&WndClass); HWND hWnd; hWnd=CreateWindow("WinFill", /生成窗口 "時(shí) 鐘 ", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); ShowWindow(hWnd,nCmdShow); /顯

12、示窗口 UpdateWindow(hWnd); while(GetMessage(&Message,0,0,0) /消息循環(huán) TranslateMessage(&Message); DispatchMessage(&Message); return Message.wParam; int m=1,n=60;int p,q=12; /VOID WINAPI GetLocalTime(LPSYSTEMTIME lpSystemTime); /獲取當(dāng)前系統(tǒng)時(shí)間函LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wPa

13、ram,LPARAM lParam) HDC hdc; PAINTSTRUCT ps; SYSTEMTIME lpSystemTime; HPEN hpen,HourPen,MinutePen,SecondPen; switch(message) case WM_PAINT: GetLocalTime(&lpSystemTime); hdc=BeginPaint(hwnd,&ps); hpen=CreatePen(PS_SOLID,4,RGB(0,255,255); SelectObject(hdc,hpen); Ellipse(hdc,200,200,400,400); El

14、lipse(hdc,295,295,305,305); double Rad,RadS; /RadS=2*pi*m/n; hpen=CreatePen(PS_SOLID,3,RGB(255,0,0); SelectObject(hdc,hpen); for(p=0;p<=q;p+) Rad=2*pi*p/q; MoveToEx(hdc,(int)(300+100*sin(Rad),(int)(300-100*cos(Rad),NULL); LineTo(hdc,(int)(300+80*sin(Rad),(int)(300-80*cos(Rad); m=(double)lpSystemT

15、ime.wSecond; RadS=2*pi*m/n; SecondPen=CreatePen(PS_SOLID,2,RGB(0,255,0); SelectObject(hdc,SecondPen); MoveToEx(hdc,300,300,NULL); LineTo(hdc,(int)(300+80*sin(RadS),(int)(300-80*cos(RadS); m=(double)(lpSystemTime.wMinute*60.0+lpSystemTime.wSecond); RadS=2*pi*m/n; MinutePen=CreatePen(PS_SOLID,3,RGB(0,

16、255,255); SelectObject(hdc,MinutePen); MoveToEx(hdc,300,300,NULL); LineTo(hdc,(int)(300+60*sin(RadS/60.0),(int)(300-60*cos(RadS/60.0); m=(double)(lpSystemTime.wHour*3600.0+lpSystemTime.wMinute*60.0+lpSystemTime.wSecond); RadS=2*pi*m/n; HourPen=CreatePen(PS_SOLID,4,RGB(255,255,0); SelectObject(hdc,Ho

17、urPen); MoveToEx(hdc,300,300,NULL); LineTo(hdc,(int)(300+40*sin(5*RadS/3600.0),(int)(300-40*cos(5*RadS/3600.0); if(1) Sleep(1000); InvalidateRect(hwnd,NULL,1); m+; EndPaint(hwnd,&ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd,message,wParam,lParam); re

18、turn 0;4設(shè)計(jì)結(jié)果與分析  1) 通過這次課程設(shè)計(jì),加強(qiáng)了我們動手、思考和解決問題的能力。而且在設(shè)計(jì)過程中,經(jīng)常會遇到這樣那樣的情況,就是心里想老著這樣的接法可以行得通,經(jīng)過老師一點(diǎn)撥就放棄了這種想法。 2) 我沉得做課程設(shè)計(jì)同時(shí)也是對課本知識的鞏固和加強(qiáng),由于課本上的知識太多,平時(shí)課間的學(xué)習(xí)并不能很好的理解和運(yùn)用各個(gè)函數(shù)的功能,而且考試內(nèi)容有限,所以在這次課程設(shè)計(jì)過程中,我們了解了很多函數(shù)的功能,并且對于其在程序中的使用有了更多的認(rèn)識。3) 平時(shí)看課本時(shí),有時(shí)問題老是弄不懂,做完課程設(shè)計(jì),那些問題就迎刃而解了。而且還可以記住很

19、多東西。比如一些程序功能的實(shí)現(xiàn),平時(shí)看課本,這次看了,下次就忘了,通過動手實(shí)踐讓我們對各個(gè)函數(shù)印象深刻。認(rèn)識來源于實(shí)踐,實(shí)踐是認(rèn)識的動力和最終目的,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。所以這兩個(gè)星期的課程設(shè)計(jì)對我們的作用是非常大的。經(jīng)過兩個(gè)星期的學(xué)習(xí),過程曲折可謂一語難盡。在此期間我們也失落過,也曾一度熱情高漲。從開始時(shí)滿富盛激情到最后汗水背后的復(fù)雜心情,點(diǎn)點(diǎn)滴滴無不令我回味無長。此次課程設(shè)計(jì),學(xué)到了很多課內(nèi)學(xué)不到的東西,比如獨(dú)立思考解決問題,出現(xiàn)差錯(cuò)的隨機(jī)應(yīng)變,和與人合作共同提高,都受益非淺,今后的制作應(yīng)該更輕松,自己也都能扛的起并高質(zhì)量的完成項(xiàng)目。在此,感謝孫老師的細(xì)心指導(dǎo),也同樣謝謝其他各組同學(xué)的

20、無私幫助!5小結(jié)   在這次的課題設(shè)計(jì)中,更具體的了解到本次課題設(shè)計(jì)所需要的元件,比如元件的原理和使用用途,以及需要注意的地方。更進(jìn)一步地熟悉了芯片的結(jié)構(gòu)及掌 握了各芯片的工作原理和其具體的使用方法,鍛煉了自己獨(dú)立思考問題的能力和 通過查看相關(guān)資料來解決問題的習(xí)慣。 在設(shè)計(jì)的過程中,選擇適合的元件是重要的,但更需要懂得把各個(gè)元件之間 恰當(dāng)?shù)慕M裝在一起。任何一個(gè)元件的設(shè)計(jì)最終需要市場,選擇元件的過程中還要考慮芯片的市場價(jià)值,盡量使用功能俱全, 價(jià)格便宜的元件。以符合市場的需要。當(dāng)安裝與調(diào)試做好之后,做成 W

21、ORD 文檔,在這過程中,又對 WORD 的文檔進(jìn) 一步的學(xué)習(xí)和使用,更利于了我的學(xué)習(xí).智能儀表課程設(shè)計(jì)是自動化專業(yè)的專業(yè)實(shí)踐課程。 本課程的任務(wù)是通過設(shè)計(jì)完成一個(gè)具有完整功能的單片機(jī)系統(tǒng),是學(xué)生掌握目前典型自動化儀表的一般設(shè)計(jì)要求和設(shè)計(jì)方法,掌握開發(fā)及設(shè)計(jì)工具的使用方法,通過這一設(shè)計(jì)實(shí)踐過程,鍛煉學(xué)生的動手能力和分析、解決問題的能力;培養(yǎng)對所學(xué)知識的綜合應(yīng)用能力。 隨著人們生活水平的不斷提高,單片機(jī)控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機(jī)技術(shù)入

22、手,一切向著數(shù)字化控制,智能化控制方向發(fā)展本設(shè)計(jì)是數(shù)據(jù)采集及處理,顯示系統(tǒng)與單片機(jī)有效結(jié)合,本設(shè)計(jì)是通過在“單片機(jī)原理及應(yīng)用”課堂上學(xué)習(xí)的知識的綜合應(yīng)用,以及查閱資料,培養(yǎng)一種自學(xué)的能力。并且引導(dǎo)一種創(chuàng)新的思維,把學(xué)到的知識應(yīng)用到日常生活當(dāng)中。在設(shè)計(jì)的過程中,不斷的學(xué)習(xí),思考和同學(xué)間的相互討論,運(yùn)用科學(xué)的分析問題的方法解決遇到的困難,掌握單片機(jī)系統(tǒng)一般的開發(fā)流程,學(xué)會對常見問題的處理方法,積累設(shè)計(jì)系統(tǒng)的經(jīng)驗(yàn),充分發(fā)揮教學(xué)與實(shí)踐的結(jié)合。全能提高個(gè)人系統(tǒng)開發(fā)的綜合能力,開拓了思維,為今后能在相應(yīng)工作崗位上的工作打下了堅(jiān)實(shí)的基礎(chǔ)帶秒表/時(shí)鐘計(jì)時(shí)器,萬年歷的顯示屏設(shè)計(jì)。  基本功能

23、要求: 1. 可動態(tài)左右,上下顯示“中國計(jì)量學(xué)院歡迎你”; 2. 在5秒按鍵無操作則以24h(小時(shí))計(jì)時(shí)方式顯示時(shí)、分、秒; 3. 使用按鍵開關(guān)可實(shí)現(xiàn)時(shí)分調(diào)整; 4. 具有鬧鐘功能,聲光提示擴(kuò)展功能: 1. 數(shù)字時(shí)鐘/圓形時(shí)鐘顯示可轉(zhuǎn)換; 2. 顯示漢字可設(shè)置; 3. 可232通訊顯示計(jì)算機(jī)傳送字符; 4. 其他擴(kuò)展功能。方案確定 經(jīng)過小組全體組員討論,最終確立方案制作時(shí)鐘。在時(shí)鐘基本功能實(shí)現(xiàn)的基礎(chǔ)上,小組成員對擴(kuò)展功能進(jìn)行討

24、論并達(dá)成共識。最終決定設(shè)計(jì)的時(shí)鐘除基本功能外,還具有以下擴(kuò)展功能: 1. 可以顯示,設(shè)置年,月,日,并且有閏年補(bǔ)償功能。2.  2. 可以上下滾動左右滑動顯示字符串功能;3.  3. 可以自定義漢字功能; 4. 可以232通訊,顯示出字符功能;5.  5. 具有溫度顯示功能;6.  6. 具有斷電時(shí)間保護(hù)功能。通過此次課程設(shè)計(jì),單片機(jī)系統(tǒng)的設(shè)計(jì)能力有了很大的提高。  因?yàn)橐郧皡⒁娺^學(xué)校的電子設(shè)計(jì)大賽,我負(fù)責(zé)的是硬件,本著全面發(fā)展的原則,我這次負(fù)責(zé)軟件,工訓(xùn)的張科曾說過,“數(shù)字

25、鐘就是軟件編程,如果把數(shù)字鐘的程序變好,以后就沒有編不出的程序了”,雖然因?yàn)榛锇閭兊倪x擇,最終沒能才加成次培訓(xùn),但是我還是深深地記住了這句話,在這次課程設(shè)計(jì)里,我從一開始負(fù)責(zé)的就是軟件,看數(shù)據(jù)手冊,寫驅(qū)動,調(diào)試,優(yōu)化,每個(gè)白天,每個(gè)夜晚,我都在全身心的投入其中,終于在開發(fā)板上實(shí)現(xiàn)了全部功能,先于硬件做出結(jié)果,然后由于硬件有錯(cuò)誤,我有參與了硬件的調(diào)試,和與軟件的整合,在這半個(gè)月里,我獲得了很大的提高,以前一些不熟悉的知識,方法,現(xiàn)在掌握了,不知道的知識,現(xiàn)在熟悉了,希望以后又更多的機(jī)會。在這次課程設(shè)計(jì)中,我們團(tuán)隊(duì)配合的很好,在開始分工明確,并且經(jīng)常討論。 雖然遇到過分歧,但大家各抒己見,進(jìn)行思想風(fēng)暴,發(fā)現(xiàn)問題,討論問題,解決問題,我們一次又一次的進(jìn)行這個(gè)工作,終于在我們?nèi)瑢W(xué)的配合下完成了這個(gè)課程設(shè)計(jì),鍛煉了我的團(tuán)隊(duì)合作能力。圓盤時(shí)鐘:指的是圓盤時(shí)鐘,也就是說,有時(shí)針分針秒針顯示的時(shí)鐘,這一模塊中,需要繪制各個(gè)時(shí)針,有我的同伴完成,具體實(shí)現(xiàn)過程我也限于了解,是先把默認(rèn)原點(diǎn)坐標(biāo)移動到中心處,然后分別畫刷填充等,定義好指針的形

溫馨提示

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

最新文檔

評論

0/150

提交評論