




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
念隊科故號院課程設(shè)計報告題目課程名稱結(jié)構(gòu)化程序設(shè)計課程設(shè)計院部名稱專業(yè)班級學(xué)生姓名王蕾學(xué)號課程設(shè)計地點課程設(shè)計學(xué)時指導(dǎo)教師金陵科技學(xué)院教務(wù)處制目錄第一章課程設(shè)計的目的和要求C語言課程設(shè)計的目的C語言課程設(shè)計實現(xiàn)的要求第二章課程設(shè)計的任務(wù)內(nèi)容第三章詳細設(shè)計說明3.1程序系統(tǒng)的結(jié)構(gòu)3.1.1實驗設(shè)備及環(huán)境:(軟、硬件環(huán)境)3.2模塊描述3.2.1指針式時鐘數(shù)字式時鐘輸出項3.4算法3.5流程圖函數(shù)說明接口3.8調(diào)試結(jié)果第四章軟件使用說明4.1軟件使用說明及出現(xiàn)的問題運行結(jié)果第五章課程設(shè)計心得與體會附錄1:參考文獻附錄2:修改后的源代碼模擬時鐘轉(zhuǎn)動程序第一章課程設(shè)計的目的和要求C語言課程設(shè)計的目的加深對講授內(nèi)容的理解,尤其是一些語法規(guī)定。通過課程設(shè)計,自然地、熟練地掌握。熟悉所用的計算機系統(tǒng)的操作方法,也就是熟悉語言程序開發(fā)的環(huán)境。學(xué)會上機調(diào)試程序。通過編程最終使程序運行結(jié)果為電腦屏幕顯示模擬時鐘,并正常運行顯示表針時間。C語言課程設(shè)計實現(xiàn)的要求能模擬機械鐘表行走;在屏幕上顯示一個活動時鐘;程序界面設(shè)計合理,色彩得體大方,顯示正確;各指針運動規(guī)律正確;要準確地利用數(shù)字顯示日期和時間并且可以根據(jù)用戶的需求更改當前時間(指針式時鐘與數(shù)字式時鐘實現(xiàn)同步更改);數(shù)字式時鐘的時間顯示與指針式時鐘顯示一致;可以通過上下鍵改變當前的時、分、秒;改的時間是小時、分鐘、還是秒數(shù);通過Tab鍵切換按Esc時程序退出。第二章課程設(shè)計的任務(wù)內(nèi)容要熟練掌握C語言的基本知識:數(shù)據(jù)類型(整形、實型、字符型、指針、數(shù)組、結(jié)構(gòu)等);運算類型(算術(shù)運算、邏輯運算、自增自減運算、賦值運算等)程序結(jié)構(gòu)(順序結(jié)構(gòu)、判斷選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu));大程序的功能分解方法(即函數(shù)的使用)等。用C語言實現(xiàn)一個模擬時鐘轉(zhuǎn)動程序;Graphics函數(shù)庫。提出總體方案的設(shè)計思想和原理,繪制程序流程圖和描述程序的功能,并說明程序的特點和難點。能模擬機械鐘表行走;要準確地利用數(shù)字顯示日期和時間;在屏幕上顯示一個活動時鐘;程序界面設(shè)計合理,色彩得體大方,顯示正確;各指針運動規(guī)律正確;數(shù)字式時鐘的時間顯示與指針式時鐘顯示一致;按任意鍵時程序退出。模擬時鐘是一種集計時器和時鐘顯示于一體的程序。編寫一個指針式時鐘程序,此程序在屏幕正中有一個指針式鐘面,窗口標題以數(shù)字方式顯示日期和時間。指針式的時鐘表盤為橢圓形或圓形,并且圓周上有分布均勻的12個刻度,刻度要求顯示清楚,鐘面上有長度不相同的指針,即時針、分針、秒針,指針的運動要求具有規(guī)律性,且為順時針。數(shù)字鐘顯示時間的格式是年月日時分秒,小時為24進制,分鐘和秒是60進制,指針式的時鐘和數(shù)字式的時鐘顯示的時間同步,且兩個時鐘所顯示的時間與計算機的系統(tǒng)時間一致。第三章詳細設(shè)計說明3.1程序系統(tǒng)的結(jié)構(gòu)圖3.1功能模塊圖3.1.1實驗設(shè)備及環(huán)境:(軟、硬件環(huán)境)WindowsXP操作系統(tǒng)WinTCIDEC語言開發(fā)環(huán)境Hp筆記本3.2模塊描述3.2.1指針式時鐘指針式的時鐘表盤為圓形,并且圓周上有分布均勻的12個較大刻度和六十個較小的刻度,刻度顯示清楚,分別表示小時、分鐘和秒數(shù)鐘面上有長度不相同的指針,即時針、分針、秒針,指針的運動具有規(guī)律性,為順時針。3.2.2數(shù)字式時鐘數(shù)字鐘顯示時間的格式是時分秒,小時為24進制,分鐘和秒是60進制,指針式的時鐘和數(shù)字式的時鐘顯示的時間同步,且兩個時鐘所顯示的時間與計算機的系統(tǒng)時間一致。3.3輸出項數(shù)字式時鐘輸出“%d時%d分%d秒”。3.4算法#define宏定義部分定義變量。利用函數(shù)circle(a,b,c)定義圓即表盤及軸心,其中(a,b)為圓心坐標,c為半徑。利用函數(shù)setbkcolor、setcolor設(shè)置顏色。gettime(t)獲取電腦時間進行顯示sound()、delay()函數(shù)設(shè)置表針走動聲音對應(yīng)走動刻度。應(yīng)用c語言庫函數(shù)進行表盤及顏色的的處理,編寫表針運算函數(shù),及表針影像顏色覆蓋處理詳見程序注釋。不論何種指針,每次轉(zhuǎn)動均以n/30孤度(一秒的角度)為基本單位,且都以表盤中心為轉(zhuǎn)動圓心。計算指針端點(x,y)的公式如下:x二圓心乂坐標指針長度*cos(指針方向角)y二圓心)坐標指針長度*sin(指針方向角)注重,指針長度是指自圓心至指針一個端點的長度(是整個指針的一部分),由于指針可以跨越圓心,因此一個指針需要計算兩個端點。三個指針的運動是相關(guān)聯(lián)的,秒針轉(zhuǎn)一圈引起分針運動一格,分針轉(zhuǎn)一圈引起時針運動一格,因此應(yīng)該使用消息來處理指針的運動。3.5流程圖圖3.2程序流程圖3.6函數(shù)說明繪制小時的圓點:x=100*sin((h*60+m)/360*PI)+451;y=200-100*cos((h*60+m)/360*PI);繪制表示分鐘或秒鐘的圓點:x=100*sin(m/30*PI)+451;y=200-100*cos(m/30*PI);由于表是順時針轉(zhuǎn)動,我們的角度習(xí)慣上使用逆時針,所以我們使用自己校正后的角度值,從12點開始,按順時針重新排列三角函數(shù)值,加入對角度正負的校正。1、程序與處理包括加載頭文件,定義常量、變量、結(jié)構(gòu)體數(shù)組和函數(shù)原型聲明。主函數(shù)main()main()函數(shù)主要實現(xiàn)了對電子時鐘的初始化工作,及clockhandle()函數(shù)的調(diào)用。main(){intdriver,mode=0,i,j;driver=DETECT;/*自動檢測顯示設(shè)備*/initgraph(&driver,&mode,"")/*初始化圖形系統(tǒng)*/setlinestyle(0,0,3);/*設(shè)置當前畫線寬度和類型:設(shè)置三點寬實線*/setbbcolor(0);/*用調(diào)色板設(shè)置當前背景顏色*/setcolor(9);/*設(shè)置當前畫線顏色*/2、在電子表的左邊打印幫助提示信息,相當于軟件的使用說明。3、時鐘按鍵控制模塊在電子時鐘中,按鍵控制模塊最主要的工作就是必須能讀取用戶按鍵,對按鍵值進行判斷,并調(diào)用相應(yīng)函數(shù)來執(zhí)行相關(guān)操作。intkeyhandle(intkey,intcount)/*鍵盤控制*/4、數(shù)字時鐘處理模塊在數(shù)字時鐘處理模塊中,主要實現(xiàn)數(shù)字時鐘的顯示和數(shù)字時鐘的修改。其中,在數(shù)字時鐘的修改中,用戶可先按Tab鍵定位需要修改內(nèi)容的位置,然后通過按光標上移或下移鍵來修改當前時間。它的主要工作如下:調(diào)用digitclock(intx,inty,intclock函數(shù),在數(shù)字時鐘r指定位置顯示時、分、秒,其中digithour(doubleh)、intdigithour(doubleh)和digitsec(doubles)用于完成數(shù)值的型向int型轉(zhuǎn)換。調(diào)用drawcursor(intcount)、clearcursor(intcount)函數(shù)來完成舊光標的擦除和新光標的繪制。首先定義一些時鐘常用的宏和定義處理時鐘的一些函數(shù)及保存數(shù)據(jù)的變量:intkeyhandle(int,int);/*鍵盤按鍵判斷,并調(diào)用相關(guān)函數(shù)處理*/inttimeupchange(int);/*處理上移按鍵*/inttimedownchange(int);/*處理下移按鍵*/intdigithour(double);/*將double型的小時數(shù)轉(zhuǎn)換成int型*/intdigitmin(double);/*將double型的分鐘數(shù)轉(zhuǎn)換成int型*/intdigitsec(double);/*將double型的秒鐘數(shù)轉(zhuǎn)換成int型*/voiddigitclock(int,int,int);/*在指定位置顯示時鐘或分鐘或秒鐘數(shù)*/voiddrawcursor(int);/*繪制一個光標*/voidclearcursor(int);/*消除前一個光標*/voidclockhandle();/*時鐘處理*/doubleh,m,s;/*全局變量:小時,分,秒*/doublex,x1,x2,y,y1,y2;/*全局變量:坐標值*/structtimet[1];/*定義一個time結(jié)構(gòu)類型的數(shù)組*/3.7接口1.#include<graphics.h>TurbeC中重要的函數(shù)庫,VisualC++6.0和DevC++都不支持(VC和DEV都支持C項目)Graphics,可憐我上網(wǎng)找了半天終于找到了合適的IDEWinTc本程序中的指針式時鐘和數(shù)字式時鐘的繪制都要靠它的例如:intdriver,mode=0,i,j;driver=DETECT;/*自動檢測顯示設(shè)備*/initgraph(&driver,&mode,"");/*初始化圖形系統(tǒng)*/setlinestyle(0,0,3);/*設(shè)置當前畫線寬度和類型:設(shè)置三點寬實線*/setbkcolor(0);/*用調(diào)色板設(shè)置當前背景顏色*/setcolor(9);/*設(shè)置當前畫線顏色*/line(82,430,558,430);line(70,62,70,418);line(82,50,558,50);line(570,62,570,418);line(70,62,570,62);line(76,56,297,56);line(340,56,564,56);/*畫主體框架的邊直線*/#include<stdio.h>標準的C的輸入輸出流函數(shù)主要用它來控制字符串的某些操作#include<math.h>?學(xué)函數(shù)庫,一些數(shù)學(xué)計算的公式的具體實現(xiàn)是放在math.h里。#include<dos.h>就是最早黑白界面下的操作使用的一些方法和接口的函數(shù)庫3.8調(diào)試結(jié)果(在多次嘗試截屏無果后,痛下決定用相機拍下來了)
圖3.3運行結(jié)果第四章軟件使用說明4.1軟件使用說明及出現(xiàn)的問題在WinTC中新建一個cpp源文件,然后輸入代碼。運行后顯示一個正在行走的機械時鐘。機械時鐘下方為數(shù)字式時鐘,可根據(jù)需要修改當前時間,該程序全屏顯示,在屏幕的左半邊為操作提示(Tab:CursorMove;Up:Time++;Down:Time--;ESC:QuittheSystem;)和一句警示語:Nothingismoreimportantthantime,可根據(jù)提示進行你想要的操作。按ESC退出。4.2運行結(jié)果圖4.1運行結(jié)果第五章課程設(shè)計心得與體會經(jīng)過一個半學(xué)期對《C課程設(shè)計》的學(xué)習(xí),我們學(xué)習(xí)了理論知識,了解了C語言程序設(shè)計的思想,這些知識都為我們的下一步學(xué)習(xí)打下了堅實的基礎(chǔ)。通過課程設(shè)計,一方面是為了檢查我們一個半學(xué)期來我們學(xué)習(xí)的成果,另一方面也是為了讓我們進一步的掌握和運用它,同時也讓我們認清自己的不足之處和薄弱環(huán)節(jié),加以彌補和加強。通過對模擬時鐘的設(shè)計進一步的鞏固了用C編寫程序,并且有利于更好的掌握程序設(shè)計語言!同時也認識到了結(jié)構(gòu)化語言的不足之處,為我們以后學(xué)習(xí)面向?qū)ο笳Z埋下伏筆。在模擬時鐘的編寫過程中也體會到了做事情一頂要細心、認真。更加知道了要掌握好基礎(chǔ)知識。還有體會到了成功的感覺!通過本項課程設(shè)計也培養(yǎng)了我獨立思考、綜合運用所學(xué)有關(guān)相應(yīng)知識的能力,掌握工程軟件設(shè)計的基本方法,強化上機動手編程能力,闖過理論與實踐相結(jié)合的難關(guān)!由于C程序設(shè)計語言是近年在國內(nèi)外得到迅速推廣應(yīng)用的一種語言。據(jù)51CTO2010的語言排行榜,C語言是程序員使用率第二高的語言,僅次于面向?qū)ο蟮腏ava語言,是使用率最高的面向結(jié)構(gòu)的編程語言。它功能豐富,表達能力強,使用靈活方便,應(yīng)用面廣,目標程序效率高,可移植性好,既具有高級語言的優(yōu)點,又具有低級語言的許多特點。通過這次的程序設(shè)計更加了解了語言設(shè)計的好處和其可用性!在這次課程設(shè)計中也知道了自己的動手能力不強有待進一部的提高!在設(shè)計過程中不能夠把書本上的知識與實踐相結(jié)合,這也就增加了設(shè)計不好該程序的想法!在設(shè)計過程中的一次次設(shè)計錯誤增加了我放棄的想法!不過經(jīng)過自己的獨立思考和同學(xué)的幫助終于完成了課程設(shè)計!完成該程序后想起自己以前的每一次對自己失去信心,就覺得并不是在知識掌握上打敗了,而是自己對自己缺乏信心!只要自己對自己不失去信心相信就可以完成那些以前認為完成不了的事情!也讓我懂得了要想成功首先就必須有很強的自信心!懂得了自己以后要在做任何事情時都要自信!當自己都不相信自己能夠成功時還可能會獲得成功嗎?在課程設(shè)計的過程中也知道了自己在以前的學(xué)習(xí)中有很大的不足導(dǎo)致在設(shè)計過程中出現(xiàn)了很多的問題,有些地方看不懂也不知道怎么去設(shè)計,但是在設(shè)計過程中也學(xué)習(xí)了很多,掌握了自己以前沒有學(xué)好的知識,雖然一時可以掌握完以前沒有學(xué)好的知識,不過也給自己敲響了警鐘,在學(xué)習(xí)中不可以伏于表面,要想學(xué)好每一門課程都要踏踏實實,做什么都不是給別人看的!都是要更好的掌握該門知識,提高自己的自身的修養(yǎng),提高自己的能力!為以后的工作打下良好的知識基礎(chǔ)和技能基礎(chǔ)!附錄1:教材及參考書序號書名編者出版社版本1C語言課程設(shè)計案例精編姜靈芝、余健清華大學(xué)出版社2008.12C語言課程設(shè)計案例精編郭翠英中國水利水電出版社2004.33C語言程序設(shè)計田祥宏主編西安電子科技大學(xué)出版社2007.12附錄二:/*電子時鐘源代碼*/#include<graphics.h>#include<stdio.h>#include<math.h>#include<dos.h>#include<string.h>#include<conio.h>#definePI3.1415926/*定義常量*/#defineUP0x4800/*上移f鍵:修改時間*/#defineDOWN0x5000/*下移I鍵:修改時間*/#defineESC0x11b/*ESC鍵:退出系統(tǒng)*/#defineTAB0xf09/*TAB鍵:移動光標*//*函數(shù)聲明*/intkeyhandle(int,int);/*鍵盤按鍵判斷,并調(diào)用相關(guān)函數(shù)處理*/inttimeupchange(int);/*處理上移按鍵*/inttimedownchange(int);/*處理下移按鍵*/intdigithour(double);/*將double型的小時數(shù)轉(zhuǎn)換成int型*/intdigitmin(double);/*將double型的分鐘數(shù)轉(zhuǎn)換成int型*/intdigitsec(double);/*將double型的秒鐘數(shù)轉(zhuǎn)換成int型*/voiddigitclock(int,int,int);/*在指定位置顯示時鐘或分鐘或秒鐘數(shù)*/voiddrawcursor(int);/*繪制一個光標*/voidclearcursor(int);/*消除前一個光標*/voidclockhandle();/*時鐘處理*/doubleh,m,s;/*全局變量:小時,分,秒*/doublex,x1,x2,y,y1,y2;/*全局變量:坐標值*/structtimet[1];/*定義一個time結(jié)構(gòu)類型的數(shù)組*/main(){intdriver,mode=0,i,j;driver=DETECT;/*自動檢測顯示設(shè)備*/initgraph(&driver,&mode,"");/*初始化圖形系統(tǒng)*/添加內(nèi)容:/*為防止圖形初始化時發(fā)生異常出現(xiàn)錯誤時將出現(xiàn)有好的提示界面*/errorcode=graphresult()if(errorcode!=grOk)/*圖形初始化時出現(xiàn)錯誤*/{printf("Graphicserror:%s/n",grapherrormsg(errorcode));printf("Pressanykeytohalt:");getch();exit(1);/*returnwitherrorcode*/}/*setlinestyle(0,0,3);/*設(shè)置當前畫線寬度和類型:設(shè)置三點寬實線*/函數(shù)名:setlinestyle功能:設(shè)置當前畫線寬度和類型用法:voidfarsetlinestyle(intlinestyle,unsignedpattern,intwidth);linestyle為整數(shù)型,用來定義所畫直線類型pattern為無符號整數(shù)型,該參數(shù)在需要用戶自定義線型時使用,如果是使用系統(tǒng)預(yù)定義的線型則參數(shù)取0值width為整數(shù)型,用來指定所畫直線的粗細SOLID_LINE0實線DOTTED_LINE1點線CNTER_LINE2中心線DASHED_LINE3虛線USERBIT_LINE4用戶自定義線型此處我稍作修改:*/setlinestyle(0,0,3);/*設(shè)置當前畫線寬度和類型:設(shè)置四點寬點線線setbkcolor(0);/*用調(diào)色板設(shè)置當前背景顏色*//*可以讓用戶選擇系統(tǒng)支持的顏色作為背景色*/intbkcol,maxcolor,x=10,y=10;charIsOK;maxcolor=getmaxcolor();for(bkcol=0;bkcol<=maxcolor;bkcol++){/*清理屏幕*/cleardevice();/*設(shè)置新的背景色*/setbkcolor(bkcol);/*outputamesssage*/if(bkcol==WHITE)setcolor(EGA_BLUE);sprintf(msg,"Backgroundcolor:%d",bkcol);outtextxy(x,y,msg);IsOK=getch();if(IsOK==Y)break;}setcolor(9);/*設(shè)置當前畫線顏色*/line(82,430,558,430);line(70,62,70,418);line(82,50,558,50);line(570,62,570,418);line(70,62,570,62);line(76,56,297,56);line(340,56,564,56);/*畫主體框架的邊直線*//*arc(intx,inty,intstangle,intendangle,intradius)*/arc(82,62,90,180,12);arc(558,62,0,90,12);setlinestyle(0,0,3);arc(82,418,180,279,12);setlinestyle(0,0,3);arc(558,418,270,360,12);/*畫主體框架的邊角弧線*/setcolor(15);outtextxy(300,53,"CLOCK");/*顯示標題*/setcolor(7);rectangle(342,72,560,360);/*畫一個矩形,作為時鐘的框架*/setwritemode(0);/*規(guī)定畫線的方式。mode=0,則表示畫線時將所畫位置的原來信息覆蓋*/setcolor(15);outtextxy(433,75,"CLOCK");/*時鐘的標題*/setcolor(7);line(392,310,510,310);line(392,330,510,330);arc(392,320,90,270,10);arc(510,320,270,90,10);/*繪制電子動畫時鐘下的數(shù)字時鐘的邊框架*//*繪制數(shù)字時鐘的時分秒的分隔符*/setcolor(5);for(i=431;i<=470;i+=39)for(j=317;j<=324;j+=7){setlinestyle(0,0,3);circle(i,j,1);/*以(i,y)為圓心,1為半徑畫圓*/}setcolor(15);line(424,315,424,325);/*在運行電子時鐘前先畫一個光標*//*繪制表示小時的圓點*/for(i=0,m=0,h=0;i<=11;i++,h++){x=100*sin((h*60+m)/360*PI)+451;y=200-100*cos((h*60+m)/360*PI);setlinestyle(0,0,4);//在指針式時鐘周圍顯示數(shù)字,使更易讀數(shù)circle(x,y,2);setlinestyle(0,0,1);x=110*sin((h*60+m)/360*PI)+451;//在半徑的延伸處顯示圓點代表的小時y=200-110*cos((h*60+m)/360*PI);if(h==0){h=12;charbuffer1[10];outtextxy(x,y,buffer1);sprintf(buffer1,"%d”,h);outtextxy(x,y,buffer1);h=0;//不要忘記將h再次賦值為0}else{charbuffer1[10];outtextxy(x,y,buffer1);sprintf(buffer1,"%d”,h);outtextxy(x,y,buffer1);}〃將表示小時的圓點用更大的圓點與畫出/*繪制表示分鐘或秒鐘的圓點*/for(i=0,m=0;i<=59;m++,i++){x=100*sin(m/30*PI)+451;y=200-100*cos(m/30*PI);setlinestyle(0,0,1);circle(x,y,1);}/*在電子表的左邊打印幫助提示信息*/setcolor(4);outtextxy(184,125,"HELP");setcolor(15);outtextxy(182,125,"HELP");setcolor(5);outtextxy(140,185,"TAB:Cursormove");outtextxy(140,225,"UP:Time++");outtextxy(140,265,"DOWN:Time--");outtextxy(140,305,"ESC:Quitsystem!");outtextxy(140,345,"Version:2.0");setcolor(12);outtextxy(150,400,"Nothingismoreimportantthantime!");clockhandle();/*開始調(diào)用時鐘處理程序*/closegraph();/*關(guān)閉圖形系統(tǒng)*/return0;/*表示程序正常結(jié)束,向操作系統(tǒng)返回一個0值*/}voidclockhandle(){intk=0,count;setcolor(15);gettime(t);/*取得系統(tǒng)時間,保存在time結(jié)構(gòu)類型的數(shù)組變量中*/h=t[0].ti_hour;m=t[0].ti_min;x=50*sin((h*60+m)/360*PI)+451;/*時針的x坐標值*/y=200-50*cos((h*60+m)/360*PI);/*時針的y坐標值*/line(451,200,x,y);/*在電子表中繪制時針*/x1=80*sin(m/30*PI)+451;/*分針的x坐標值*/y1=200-80*cos(m/30*PI);/*分針的y坐標值*/line(451,200,x1,y1);/*在電子表中繪制分針*/digitclock(408,318,digithour(h));/*在數(shù)字時鐘中,顯示當前的小時值*/digitclock(446,318,digitmin(m));/*在數(shù)字時鐘中,顯示當前的分鐘值*/setwritemode(1);/*規(guī)定畫線的方式,如果mode=1,則表示畫線時用現(xiàn)在特性的線與所畫之處原有的線進行異或(XOR)操作,實際上畫出的線是原有線與現(xiàn)在規(guī)定的線進行異或后的結(jié)果。因此,當線的特性不變,進行兩次畫線操作相當于沒有畫線,即在當前位置處清除了原來的畫線*/for(count=2;k!=ESC;){/*開始循環(huán),直至用戶按下ESC鍵結(jié)束循環(huán)*/setcolor(12);/*淡紅色*/sound(500);/*以指定頻率打開PC揚聲器,這里頻率為500Hz*/delay(700);/*發(fā)一個頻率為500Hz的音調(diào),維持700毫秒*/sound(200);/*以指定頻率打開PC揚聲器,這里頻率為200Hz*/delay(300);〃呵呵聲音怪怪的sound(600);/*以指定頻率打開PC揚聲器,這里頻率為500Hz*/delay(800);/*發(fā)一個頻率為500Hz的音調(diào),維持700毫秒*/sound(400);/*以指定頻率打開PC揚聲器,這里頻率為200Hz*/delay(200);/*以上兩種不同頻率的音調(diào),可仿真鐘表轉(zhuǎn)動時的嘀噠聲*/nosound();/*關(guān)閉PC揚聲器*/s=t[0].ti_sec;m=t[0].ti_min;h=t[0].ti_hour;x2=98*sin(s/30*PI)+451;/*秒針的x坐標值*/y2=200-98*cos(s/30*PI);/*秒針的y坐標值*/line(451,200,x2,y2);/*繪制秒針*//*利用此循環(huán),延時一秒*/while(t[0].ti_sec==s&&t[0].ti_min==m&&t[0].ti_hour==h){gettime(t);/*取得系統(tǒng)時間*/if(bioskey(1)!=0){k=bioskey(0);count=keyhandle(k,count);if(count==5)count=1;}}setcolor(15);digitclock(485,318,digitsec(s)+1);/*數(shù)字時鐘增加1秒*/setcolor(12);/*淡紅色*/x2=98*sin(s/30*PI)+451;y2=200-98*cos(s/30*PI);line(451,200,x2,y2);/*用原來的顏色在原來位置處再繪制秒針,以達到清除當前秒針的目的*//*分鐘處理*/if(t[0].ti_min!=m){/*若分鐘有變化*//*消除當前分針*/setcolor(15);/*白色*/x1=80*sin(m/30*PI)+451;y1=200-80*cos(m/30*PI);line(451,200,x1,y1);/*繪制新的分針*/m=t[0].ti_min;digitclock(446,318,digitmin(m));/*在數(shù)字時鐘中顯示新的分鐘值*/x1=80*sin(m/30*PI)+451;y1=200-80*cos(m/30*PI);line(451,200,x1,y1);}/*小時處理*/if((t[0].ti_hour*60+t[0].ti_min)!=(h*60+m))</*若小時數(shù)有變化*//*消除當前時針*/setcolor(15);/*白色*/x=50*sin((h*60+m)/360*PI)+451;/*50:時鐘的長度(單位:像素),451:圓心的x坐標值*/y=200-50*cos((h*60+m)/360*PI);line(451,200,x,y);/*繪制新的時針*/h=t[0].ti_hour;digitclock(408,318,digithour(h));x=50*sin((h*60+m)/360*PI)+451;y=200-50*cos((h*60+m)/360*PI);line(451,200,x,y);}}}intkeyhandle(intkey,intcount)/*鍵盤控制*/{switch(key){caseUP:timeupchange(count-1);/*因為count的初始值為2,所以此處減1*/break;caseDOWN:timedownchange(count-1);/*因為count的初始值為2,所以此處減1*/break;caseTAB:setcolor(15);clearcursor(count);/*清除原來的光標*/drawcursor(count);/*顯示一個新的光標*/count++;break;}returncount;}inttimeupchange(intcount)/*處理光標上移的按鍵*/{if(count==1){t[0].ti_hour++;if(t[0].ti_hour==24)t[0].
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人工建筑勞務(wù)合同范本
- 入園合同范例
- 個人陶瓷采購合同范本
- 勞務(wù)派遣補充合同范本
- 切磚清工合同范本
- 光明果蔬配送合同范本
- 借款合同范本網(wǎng)上查詢
- 轉(zhuǎn)租飯店合同范本
- 凈化車間改造工程合同范本
- 會所會籍合同范本
- 2024年注冊安全工程師考試題庫【含答案】
- 第2課《樹立科學(xué)的世界觀》第2框《用科學(xué)世界觀指導(dǎo)人生發(fā)展》-【中職專用】《哲學(xué)與人生》同步課堂課件
- 《書籍裝幀設(shè)計》 課件 項目2 書籍裝幀設(shè)計要素
- 妊娠期合并癥婦女的護理-妊娠合并心臟病的護理(婦產(chǎn)科護理課件)4EX
- 南航航空安全員培訓(xùn)
- 中職語文高教版基礎(chǔ)模塊上冊《風(fēng)景談》公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 汪小蘭有機化學(xué)課件第四版
- Unit1 My day 單元作業(yè)設(shè)計(素材)人教PEP版英語五年級下冊
- 贏的思考與態(tài)度課件
- 2024年2月國考海關(guān)面試題目及參考答案
- TZSA 158-2023 雙引擎分布式視頻處理器技術(shù)規(guī)范
評論
0/150
提交評論