歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

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

  • 資源ID:39494535       資源大?。?span id="011dmh6" class="font-tahoma">602.50KB        全文頁數(shù):27頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

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

課 程 設(shè) 計(jì) 報(bào) 告課程名稱 C語言程序設(shè)計(jì) 課題名稱 機(jī)械時(shí)鐘的設(shè)計(jì) 專 業(yè) 電子信息 班 級 學(xué) 號 姓 名 指導(dǎo)教師 湖南工程學(xué)院課 程 設(shè) 計(jì) 任 務(wù) 書課程名稱 C語言程序設(shè)計(jì) 課 題 機(jī)械時(shí)鐘設(shè)計(jì) 專業(yè)班級 學(xué)生姓名 學(xué) 號 指導(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é)體會137.程序源代碼134機(jī)械時(shí)鐘程序報(bào)告一、 需求分析根據(jù)老師的要求,要在屏幕上顯示一個(gè)機(jī)械時(shí)鐘并且顯示當(dāng)前的數(shù)字時(shí)鐘以及日歷。根據(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í)鐘的秒數(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;i<60;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 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);設(shè)計(jì)簡單的表盤,即四個(gè)半徑分別為2,110,170,180的同心圓。做刻度,在半徑為110的圓盤上標(biāo)出1到12點(diǎn)的位置,用半徑為5小圓圈表示。在半徑為170的圓盤上用標(biāo)出1到12點(diǎn)的位置,用半徑分別為2和五的同心圓表示,在1到六十的刻度上用半徑為2的小圓圈表示,在3、6、9、12點(diǎn)的位置用邊長為10的填充正方形表示。另外,在畫圖界面上顯示一些必要的文字。2、畫表針,顯示數(shù)字時(shí)鐘,顯示日歷void 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);sy=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);_stprintf(str2,"%d",m);_stprintf(str3,"%d",h);setfont(20,16,"宋體");if(h>9)outtextxy(450,200,str3);elseouttextxy(450,200,"0");outtextxy(465,200,str3);outtextxy(490,200,":");if(m>9)outtextxy(510,200,str2);elseouttextxy(510,200,"0");outtextxy(525,200,str2);outtextxy(550,200,":");if(s>9)outtextxy(570,200,str1);elseouttextxy(570,200,"0");outtextxy(585,200,str1);void fun5(int d,int 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(e<10)outtextxy(445,120,0);outtextxy(465,120,str2);elseouttextxy(445,120,str2);outtextxy(480,120,c2);if(f<10)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,"星期四");break;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è)置不同的大小、長度與顏色,以便用戶的區(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("請問你是要修改時(shí)間還是修改日期n");printf("*n");printf("* 修改時(shí)間請按“1”,然后回車 *n");printf("* 修改日期請按“2”,然后回車 *n");printf("* 退出請按“3”,然后回車 *n");printf("*n");scanf("%d",&m);switch(m)case 1:printf("請輸入當(dāng)前是幾點(diǎn)幾分幾秒,用逗號隔開n");scanf("%d,%d,%d",a,b,c);printf("請問是否繼續(xù)修改日期n");printf("*n");printf("*繼續(xù)修改請按“1”,退出請按“2”*n");printf("*n");scanf("%d",&n);if(n=2)break;case 2: printf("請輸入當(dāng)前是哪年哪月哪日星期幾,用逗號隔開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();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&&e<8)|(e%2=0&&e>7)&&f=31)/日歷進(jìn)制e+;if(e%2=0&&e<8)|(e%2=1&&e>7)&&f=30)e+;if(e%2=1&&e<8)|(e%2=0&&e>7)&&f>31)f=f%31;if(e%2=0&&e<8)|(e%2=1&&e>7)&&f>30)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;主函數(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í)鐘的界面。五、 參考資料C語言程序設(shè)計(jì)方法鄧文心 張宏烈主編哈爾濱工業(yè)大學(xué)出版社出版六、 總結(jié)體會本次程序設(shè)計(jì)按照老師的要求是未完成一個(gè)機(jī)械時(shí)鐘的現(xiàn)實(shí),由于我所學(xué)C語言知識的局限,基本不知道該從何下手。但是我根據(jù)程序的要求首先從簡單地方開始入手,即搜集此次程序設(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í),我在一開始便在網(wǎng)上搜到了一個(gè)機(jī)械時(shí)鐘的模板,但是由于畫圖函數(shù)庫不能通過,模板也不能運(yùn)行。但是,自我安裝了EasyX程序后我在網(wǎng)上搜的程序已經(jīng)能夠正常運(yùn)行,這使我非常欣喜。我瀏覽了一下模板程序,其實(shí),我主要是看了它的一些注釋和一些特殊的函數(shù),然后我便開始編程了。我在圖書館接了一本語言程序設(shè)計(jì),那本書講的是在上編譯的,但是里面有一章專門講的是語言畫圖,里面提到了許多用于畫圖的庫函數(shù),我仔細(xì)的看了那一章,體會了那些函數(shù)的用法,到此,我的前期準(zhǔn)備工作算是做完了。老實(shí)說,此次程序設(shè)計(jì)我感覺像是對畫圖函數(shù)的一種深刻的理解吧。基本上我做的一切都建立在畫圖界面上?;蛟S是因?yàn)闇?zhǔn)備充分,很快,我就完成了機(jī)械時(shí)鐘的設(shè)計(jì),并開始設(shè)計(jì)其他東西。一天老師檢查成果,聽到我說參考了網(wǎng)上的模板,不怎么高興,說如果什么都去網(wǎng)上查不自己動(dòng)腦想想,怎么能得到進(jìn)步了,于是便對我提了進(jìn)一步的要求,即顯示數(shù)字時(shí)鐘與日歷,還要完成時(shí)鐘日歷的修改功能。在完成機(jī)械時(shí)鐘后這些好像對我來說不是什么難題了,不久我便完成了整個(gè)程序的設(shè)計(jì)。在本次的程序設(shè)計(jì)中,我的確收益匪淺。通過對語言的進(jìn)一步了解,我開始明白我在書上學(xué)到的知識是十分有限的,要想提高自己的編程能力,不僅要扎實(shí)語言的基礎(chǔ),同時(shí)還要更多閱讀其他的相關(guān)資料,豐富自己的知識,這樣在編程方面才可能得到進(jìn)一步的提高。七、 源程序#include <graphics.h>/圖形庫頭文件#include<stdio.h>/輸入輸出頭文件#include <conio.h>#include <math.h>#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);sy=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);_stprintf(str2,"%d",m);_stprintf(str3,"%d",h);setfont(20,16,"宋體");if(h>9)outtextxy(450,200,str3);elseouttextxy(450,200,"0");outtextxy(465,200,str3);outtextxy(490,200,":");if(m>9)outtextxy(510,200,str2);elseouttextxy(510,200,"0");outtextxy(525,200,str2);outtextxy(550,200,":");if(s>9)outtextxy(570,200,str1);elseouttextxy(570,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 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(e<10)outtextxy(445,120,0);outtextxy(465,120,str2);elseouttextxy(445,120,str2);outtextxy(480,120,c2);if(f<10)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,"星期四");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(i=0;i<60;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í)間日期int m,n;printf("請問你是要修改時(shí)間還是修改日期n");printf("*n");printf("* 修改時(shí)間請按“1”,然后回車 *n");printf("* 修改日期請按“2”,然后回車 *n");printf("* 退出請按“3”,然后回車 *n");printf("*n");scanf("%d",&m);switch(m)case 1:printf("請輸入當(dāng)前是幾點(diǎn)幾分幾秒,用逗號隔開n");scanf("%d,%d,%d",a,b,c);printf("請問是否繼續(xù)修改日期n");printf("*n");printf("*繼續(xù)修改請按“1”,退出請按“2”*n");printf("*n");scanf("%d",&n);if(n=2)break;case 2: printf("請輸入當(dāng)前是哪年哪月哪日星期幾,用逗號隔開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();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&&e<8)|(e%2=0&&e>7)&&f=31)/日歷進(jìn)制e+;if(e%2=0&&e<8)|(e%2=1&&e>7)&&f=30)e+;if(e%2=1&&e<8)|(e%2=0&&e>7)&&f>31)f=f%31;if(e%2=0&&e<8)|(e%2=1&&e>7)&&f>30)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

注意事項(xiàng)

本文(機(jī)械時(shí)鐘程序報(bào)告 本科畢業(yè)設(shè)計(jì)(論文))為本站會員(1666****666)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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