九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

機(jī)械時(shí)鐘程序報(bào)告 本科畢業(yè)設(shè)計(jì)(論文)

上傳人:1888****888 文檔編號(hào):37032782 上傳時(shí)間:2021-11-01 格式:DOC 頁數(shù):27 大?。?02.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
機(jī)械時(shí)鐘程序報(bào)告 本科畢業(yè)設(shè)計(jì)(論文)_第1頁
第1頁 / 共27頁
機(jī)械時(shí)鐘程序報(bào)告 本科畢業(yè)設(shè)計(jì)(論文)_第2頁
第2頁 / 共27頁
機(jī)械時(shí)鐘程序報(bào)告 本科畢業(yè)設(shè)計(jì)(論文)_第3頁
第3頁 / 共27頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《機(jī)械時(shí)鐘程序報(bào)告 本科畢業(yè)設(shè)計(jì)(論文)》由會(huì)員分享,可在線閱讀,更多相關(guān)《機(jī)械時(shí)鐘程序報(bào)告 本科畢業(yè)設(shè)計(jì)(論文)(27頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、課 程 設(shè) 計(jì) 報(bào) 告課程名稱 C語言程序設(shè)計(jì) 課題名稱 機(jī)械時(shí)鐘的設(shè)計(jì) 專 業(yè) 電子信息 班 級(jí) 學(xué) 號(hào) 姓 名 指導(dǎo)教師 湖南工程學(xué)院課 程 設(shè) 計(jì) 任 務(wù) 書課程名稱 C語言程序設(shè)計(jì) 課 題 機(jī)械時(shí)鐘設(shè)計(jì) 專業(yè)班級(jí) 學(xué)生姓名 學(xué) 號(hào) 指導(dǎo)老師 審 批 一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求1 設(shè)計(jì)內(nèi)容:機(jī)械時(shí)鐘系統(tǒng)在屏幕上實(shí)現(xiàn)一個(gè)機(jī)械時(shí)鐘,并且能夠通過鍵盤上的按鍵完成時(shí)間的修改。目 錄1.需求分析12程序總體設(shè)計(jì)13.程序詳細(xì)設(shè)計(jì)24.程序運(yùn)行結(jié)果115.參考資料136.總結(jié)體會(huì)137.程序源代碼134機(jī)械時(shí)鐘程序報(bào)告一、 需求分析根據(jù)老師的要求,要在屏幕上顯示一個(gè)機(jī)械時(shí)鐘并且顯示當(dāng)前的數(shù)字時(shí)鐘以及日歷

2、。根據(jù)老師的要求,本程序要顯示機(jī)械時(shí)鐘就必須通過畫圖函數(shù)將機(jī)械表畫出來。另外,本程序還用到延時(shí)函數(shù),實(shí)現(xiàn)秒針,分針,時(shí)針的轉(zhuǎn)動(dòng)。樹立起總體思想就開始設(shè)計(jì)整個(gè)程序。二、 程序總體設(shè)計(jì)本程序包含了一個(gè)主函數(shù)和六個(gè)子函數(shù),主函數(shù)完成初始化時(shí)間(獲取系統(tǒng)時(shí)間)以及時(shí)鐘與日歷的進(jìn)制,同時(shí)還是調(diào)節(jié)六個(gè)子函數(shù)共同完成整個(gè)程序功能的實(shí)現(xiàn)。六個(gè)子函數(shù)分別完成顯示機(jī)械表針和數(shù)字時(shí)鐘、顯示界面上的文字、顯示日歷、做表盤、做刻度以及重新設(shè)置程序的時(shí)間與日歷。流程圖如下:主函數(shù),獲取系統(tǒng)時(shí)間,完成時(shí)鐘日歷進(jìn)制,設(shè)置畫圖窗口。做表盤,做刻度,做畫圖界面上一些無需變化的文字。畫表針,顯示數(shù)字時(shí)鐘,顯示日歷延時(shí)一秒。時(shí)鐘的秒

3、數(shù)加一,并按時(shí)間進(jìn)制控制其他時(shí)間項(xiàng)目輸入現(xiàn)在的時(shí)間,并將該程序時(shí)鐘的時(shí)間改成輸入的時(shí)間擦去表針,擦去數(shù)字時(shí)針,擦去日歷上回隨時(shí)間變化的東西。按r鍵,進(jìn)入修改界面三、 程序的詳細(xì)設(shè)計(jì)1、畫表盤、做刻度、顯示界面上一些無需改動(dòng)的文字void fun2()/做表盤setcolor(WHITE);circle(220,240,180);circle(220,240,170);circle(220,240,2);circle(220,240,110);void fun3()/做刻度int i,ix,iy,ix1,iy1;double i1;for(i=0;i9)outtextxy(450,200,str

4、3);elseouttextxy(450,200,0);outtextxy(465,200,str3);outtextxy(490,200,:);if(m9)outtextxy(510,200,str2);elseouttextxy(510,200,0);outtextxy(525,200,str2);outtextxy(550,200,:);if(s9)outtextxy(570,200,str1);elseouttextxy(570,200,0);outtextxy(585,200,str1);void fun5(int d,int e,int f,int g) /日歷的顯示char c1

5、=年,c2=月,c3=日;setfont(30,22,宋體);TCHAR str15,str25,str35;_stprintf(str1,%d,d);_stprintf(str2,%d,e);_stprintf(str3,%d,f);setfont(35,25,宋體);setcolor(RED);outtextxy(440,70,str1);outtextxy(550,70,c1);setfont(20,18,宋體);setcolor(WHITE);if(e10)outtextxy(445,120,0);outtextxy(465,120,str2);elseouttextxy(445,12

6、0,str2);outtextxy(480,120,c2);if(f10)outtextxy(520,120,0);outtextxy(540,120,str3);elseouttextxy(520,120,str3);outtextxy(560,120,c3);setcolor(CYAN);switch(g)case 1: outtextxy(460,160,星期一);break;case 2: outtextxy(460,160,星期二);break;case 3: outtextxy(460,160,星期三);break;case 4: outtextxy(460,160,星期四);br

7、eak;case 5: outtextxy(460,160,星期五);break;case 6: outtextxy(460,160,星期六);break;case 7: outtextxy(460,160,星期日);break;通過獲取的系統(tǒng)時(shí)間,計(jì)算出個(gè)表針的角度以及表針的終點(diǎn),畫出表針,并設(shè)置不同的大小、長(zhǎng)度與顏色,以便用戶的區(qū)分。在機(jī)械時(shí)鐘的右側(cè),顯示出從系統(tǒng)獲得的日歷。3、修改部分void fun6(int *a,int *b,int *c,int *d,int *e,int *f,int *g)/重新設(shè)定時(shí)間日期int m,n;printf(請(qǐng)問你是要修改時(shí)間還是修改日期n);pr

8、intf(*n);printf(* 修改時(shí)間請(qǐng)按“1”,然后回車 *n);printf(* 修改日期請(qǐng)按“2”,然后回車 *n);printf(* 退出請(qǐng)按“3”,然后回車 *n);printf(*n);scanf(%d,&m);switch(m)case 1:printf(請(qǐng)輸入當(dāng)前是幾點(diǎn)幾分幾秒,用逗號(hào)隔開n);scanf(%d,%d,%d,a,b,c);printf(請(qǐng)問是否繼續(xù)修改日期n);printf(*n);printf(*繼續(xù)修改請(qǐng)按“1”,退出請(qǐng)按“2”*n);printf(*n);scanf(%d,&n);if(n=2)break;case 2: printf(請(qǐng)輸入當(dāng)前是哪

9、年哪月哪日星期幾,用逗號(hào)隔開n); scanf(%d,%d,%d,%d,d,e,f,g); break; 通過使用指針,更該當(dāng)前時(shí)鐘程序的當(dāng)前時(shí)間與日歷,并將其反饋到主函數(shù)。4、主函數(shù)void main() /主函數(shù) 獲取系統(tǒng)時(shí)間 給各個(gè)函數(shù)傳送相關(guān)的時(shí)間信息int a=0,b=0,c=0,d,e,f,g,h=1;SYSTEMTIME t;GetLocalTime(&t); a=t.wHour;b=t.wMinute;c=t.wSecond;d=t.wYear;e=t.wMonth;f=t.wDay;g=t.wDayOfWeek;initgraph(640, 480);fun3();fun2(

10、);fun4();setwritemode(R2_XORPEN);while(h=1)fun1(a,b,c);fun5(d,e,f,g);Sleep(1000);fun1(a,b,c);fun5(d,e,f,g);c+;if(c%60=0)b+;if(b%60=0)a+;if(a%24=0)f+;g+;if(e%2=1&e7)&f=31)/日歷進(jìn)制e+;if(e%2=0&e7)&f=30)e+;if(e%2=1&e7)&f31)f=f%31;if(e%2=0&e7)&f30)f=f%30;char str;if(kbhit()!=0)str=getch();if(str=r|str=R)clo

11、segraph();fun6(&a,&b,&c,&d,&e,&f,&g);initgraph(640, 480);fun3();fun2();fun4();setwritemode(R2_XORPEN);else h+;closegraph(); e=e%12;主函數(shù),獲取系統(tǒng)時(shí)間,完成各個(gè)函數(shù)之間的數(shù)據(jù)交換,實(shí)現(xiàn)各個(gè)函數(shù)之間所要求的功能。四、 程序的運(yùn)行結(jié)果1、 時(shí)鐘界面,在設(shè)置的畫圖窗口中顯示出機(jī)械時(shí)鐘,數(shù)字時(shí)鐘,日歷,以及其他一些文字說明。運(yùn)行圖如下:上圖即為運(yùn)行程序是的結(jié)果2、 當(dāng)運(yùn)行程序后按r鍵,程序立刻進(jìn)入時(shí)間修改界面,運(yùn)行圖如下:輸入上圖數(shù)字后,回車,可得下圖該圖為修改后機(jī)械時(shí)鐘

12、的界面。五、 參考資料C語言程序設(shè)計(jì)方法鄧文心 張宏烈主編哈爾濱工業(yè)大學(xué)出版社出版六、 總結(jié)體會(huì)本次程序設(shè)計(jì)按照老師的要求是未完成一個(gè)機(jī)械時(shí)鐘的現(xiàn)實(shí),由于我所學(xué)C語言知識(shí)的局限,基本不知道該從何下手。但是我根據(jù)程序的要求首先從簡(jiǎn)單地方開始入手,即搜集此次程序設(shè)計(jì)需要用到的庫函數(shù)。于是我從網(wǎng)絡(luò)上找到了延時(shí)是函數(shù)Sleep(),并且知道C語言上有一個(gè)畫圖函數(shù)庫,其頭文件是graphics.h,該頭文件沒有包含在我所使用的V里面,經(jīng)過經(jīng)一步的搜索,我從網(wǎng)上得知知要在上安裝EasyX程序即可使我使用的能夠正常的使用畫圖函數(shù)庫里的函數(shù),我半信半疑的按照網(wǎng)上的說法做了,并達(dá)到了預(yù)期的效果。其實(shí),我在一開始

13、便在網(wǎng)上搜到了一個(gè)機(jī)械時(shí)鐘的模板,但是由于畫圖函數(shù)庫不能通過,模板也不能運(yùn)行。但是,自我安裝了EasyX程序后我在網(wǎng)上搜的程序已經(jīng)能夠正常運(yùn)行,這使我非常欣喜。我瀏覽了一下模板程序,其實(shí),我主要是看了它的一些注釋和一些特殊的函數(shù),然后我便開始編程了。我在圖書館接了一本語言程序設(shè)計(jì),那本書講的是在上編譯的,但是里面有一章專門講的是語言畫圖,里面提到了許多用于畫圖的庫函數(shù),我仔細(xì)的看了那一章,體會(huì)了那些函數(shù)的用法,到此,我的前期準(zhǔn)備工作算是做完了。老實(shí)說,此次程序設(shè)計(jì)我感覺像是對(duì)畫圖函數(shù)的一種深刻的理解吧?;旧衔易龅囊磺卸冀⒃诋媹D界面上?;蛟S是因?yàn)闇?zhǔn)備充分,很快,我就完成了機(jī)械時(shí)鐘的設(shè)計(jì),并開

14、始設(shè)計(jì)其他東西。一天老師檢查成果,聽到我說參考了網(wǎng)上的模板,不怎么高興,說如果什么都去網(wǎng)上查不自己動(dòng)腦想想,怎么能得到進(jìn)步了,于是便對(duì)我提了進(jìn)一步的要求,即顯示數(shù)字時(shí)鐘與日歷,還要完成時(shí)鐘日歷的修改功能。在完成機(jī)械時(shí)鐘后這些好像對(duì)我來說不是什么難題了,不久我便完成了整個(gè)程序的設(shè)計(jì)。在本次的程序設(shè)計(jì)中,我的確收益匪淺。通過對(duì)語言的進(jìn)一步了解,我開始明白我在書上學(xué)到的知識(shí)是十分有限的,要想提高自己的編程能力,不僅要扎實(shí)語言的基礎(chǔ),同時(shí)還要更多閱讀其他的相關(guān)資料,豐富自己的知識(shí),這樣在編程方面才可能得到進(jìn)一步的提高。七、 源程序#include /圖形庫頭文件#include/輸入輸出頭文件#inc

15、lude #include #define PI 3.1415926void fun1(int h,int m,int s)/畫時(shí)鐘、分鐘、秒鐘,顯示數(shù)字時(shí)鐘double h1,m1,s1;int hx,hy,mx,my,sx,sy;s=s%60;m=m%60;h=h%24;s1=s*PI/30;m1=m*PI/30;h1=(h%12)*PI/6+m*PI/360;hx=int(220+100*sin(h1);hy=int(240-100*cos(h1);mx=int(220+140*sin(m1);my=int(240-140*cos(m1);sx=int(220+160*sin(s1);s

16、y=int(240-160*cos(s1);setlinestyle(PS_SOLID, NULL, 2); setcolor(RED);line(220,240,sx,sy);setlinestyle(PS_SOLID, NULL, 6); setcolor(LIGHTGRAY);line(220,240,mx,my);setlinestyle(PS_SOLID, NULL, 10); setcolor(WHITE);line(220,240,hx,hy);TCHAR str15,str25,str35;setfont(20,18,宋體);_stprintf(str1,%d,s);_stpr

17、intf(str2,%d,m);_stprintf(str3,%d,h);setfont(20,16,宋體);if(h9)outtextxy(450,200,str3);elseouttextxy(450,200,0);outtextxy(465,200,str3);outtextxy(490,200,:);if(m9)outtextxy(510,200,str2);elseouttextxy(510,200,0);outtextxy(525,200,str2);outtextxy(550,200,:);if(s9)outtextxy(570,200,str1);elseouttextxy(5

18、70,200,0);outtextxy(585,200,str1);void fun4()/做界面上的文字char s1=機(jī)械時(shí)鐘,s2=按r鍵重設(shè)時(shí)間,s3=按其他鍵退出,s4=制作人楊自然;setfont(50,40,黑體);setcolor(RED);outtextxy(80,0,s1);setfont(22,16,宋體);setcolor(BLUE);outtextxy(420,250,s2);outtextxy(420,300,s3);setcolor(BLUE);setfont(18,12,宋體);outtextxy(400,455,s4);void fun5(int d,int

19、e,int f,int g) /日歷的顯示char c1=年,c2=月,c3=日;setfont(30,22,宋體);TCHAR str15,str25,str35;_stprintf(str1,%d,d);_stprintf(str2,%d,e);_stprintf(str3,%d,f);setfont(35,25,宋體);setcolor(RED);outtextxy(440,70,str1);outtextxy(550,70,c1);setfont(20,18,宋體);setcolor(WHITE);if(e10)outtextxy(445,120,0);outtextxy(465,12

20、0,str2);elseouttextxy(445,120,str2);outtextxy(480,120,c2);if(f10)outtextxy(520,120,0);outtextxy(540,120,str3);elseouttextxy(520,120,str3);outtextxy(560,120,c3);setcolor(CYAN);switch(g)case 1: outtextxy(460,160,星期一);break;case 2: outtextxy(460,160,星期二);break;case 3: outtextxy(460,160,星期三);break;case

21、4: outtextxy(460,160,星期四);break;case 5: outtextxy(460,160,星期五);break;case 6: outtextxy(460,160,星期六);break;case 7: outtextxy(460,160,星期日);break;void fun2()/做表盤setcolor(WHITE);circle(220,240,180);circle(220,240,170);circle(220,240,2);circle(220,240,110);void fun3()/做刻度int i,ix,iy,ix1,iy1;double i1;for

22、(i=0;i60;i+)i1=i*PI/30;ix=int(220+165*sin(i1);iy=int(240-165*cos(i1);ix1=int(220+105*sin(i1);iy1=int(240-105*cos(i1);setcolor(WHITE);if(i%15=0)bar(ix-5,iy-5,ix+5,iy+5);elsecircle(ix,iy,2);if(i%5=0)circle(ix1,iy1,5);circle(ix,iy,5);void fun6(int *a,int *b,int *c,int *d,int *e,int *f,int *g)/重新設(shè)定時(shí)間日期i

23、nt m,n;printf(請(qǐng)問你是要修改時(shí)間還是修改日期n);printf(*n);printf(* 修改時(shí)間請(qǐng)按“1”,然后回車 *n);printf(* 修改日期請(qǐng)按“2”,然后回車 *n);printf(* 退出請(qǐng)按“3”,然后回車 *n);printf(*n);scanf(%d,&m);switch(m)case 1:printf(請(qǐng)輸入當(dāng)前是幾點(diǎn)幾分幾秒,用逗號(hào)隔開n);scanf(%d,%d,%d,a,b,c);printf(請(qǐng)問是否繼續(xù)修改日期n);printf(*n);printf(*繼續(xù)修改請(qǐng)按“1”,退出請(qǐng)按“2”*n);printf(*n);scanf(%d,&n);i

24、f(n=2)break;case 2: printf(請(qǐng)輸入當(dāng)前是哪年哪月哪日星期幾,用逗號(hào)隔開n); scanf(%d,%d,%d,%d,d,e,f,g); break; void main() /主函數(shù) 獲取系統(tǒng)時(shí)間 給各個(gè)函數(shù)傳送相關(guān)的時(shí)間信息int a=0,b=0,c=0,d,e,f,g,h=1;SYSTEMTIME t;GetLocalTime(&t); a=t.wHour;b=t.wMinute;c=t.wSecond;d=t.wYear;e=t.wMonth;f=t.wDay;g=t.wDayOfWeek;initgraph(640, 480);fun3();fun2();fun

25、4();setwritemode(R2_XORPEN);while(h=1)fun1(a,b,c);fun5(d,e,f,g);Sleep(1000);fun1(a,b,c);fun5(d,e,f,g);c+;if(c%60=0)b+;if(b%60=0)a+;if(a%24=0)f+;g+;if(e%2=1&e7)&f=31)/日歷進(jìn)制e+;if(e%2=0&e7)&f=30)e+;if(e%2=1&e7)&f31)f=f%31;if(e%2=0&e7)&f30)f=f%30;char str;if(kbhit()!=0)str=getch();if(str=r|str=R)closegraph();fun6(&a,&b,&c,&d,&e,&f,&g);initgraph(640, 480);fun3();fun2();fun4();setwritemode(R2_XORPEN);else h+;closegraph(); e=e%12;if(e=0)e=12;23

展開閱讀全文
溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!