C語言課程設(shè)計報告格式_第1頁
C語言課程設(shè)計報告格式_第2頁
C語言課程設(shè)計報告格式_第3頁
C語言課程設(shè)計報告格式_第4頁
C語言課程設(shè)計報告格式_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、優(yōu)質(zhì)文本C程序課程設(shè)計設(shè)計題目:圖形時鐘 專 業(yè): 班 級: 姓 名: 指導(dǎo)教師: 2016 年 秋季 學(xué)期目錄1.設(shè)計任務(wù)-P22.系統(tǒng)總體模塊設(shè)計,給出模塊圖- P33.小組任務(wù)分工,描述每個人應(yīng)完成的任務(wù)- P44.子系統(tǒng)設(shè)計方案-P45.子系統(tǒng)主要程序流程圖,并附文字說明-P5-P96.詳細代碼及運行結(jié)果附主要代碼-P9-P147.個人設(shè)計小結(jié)與心得體會- P158.小組設(shè)計總結(jié)獨立完成的不寫- P161. 設(shè)計任務(wù):l 在屏幕上顯示一個圖形時鐘用程序繪制一個與時鐘樣式相似即可,時間與系統(tǒng)時間一致,且要隨著時間的走動準確的走動;l 在鐘表轉(zhuǎn)動過程中實現(xiàn)“滴答聲;l 實現(xiàn)整點報時;l 實

2、現(xiàn)鬧鐘的功能包括設(shè)定,停止,延時。預(yù)期結(jié)果圖為:2.系統(tǒng)總體模塊設(shè)計,給出模塊圖: 在編程過程中主要包括:² 編程前準備:要學(xué)習(xí)中的graphics,了解如何在VC中應(yīng)用它;學(xué)會圖形函數(shù)的根本使用方法。² 編程中:分為主函數(shù)和子程序;包括畫表盤、獲取電腦時間確定指針轉(zhuǎn)動、控制聲音的函數(shù)、鬧鐘函數(shù)設(shè)定、中斷和延時、整點報時。² 總體模塊圖為:開始先圖形方式初始化initgraph()確定表盤中心坐標直接用define定義,寫出畫表盤的函數(shù)包括實心圓函數(shù):fillcircle,畫刻度函數(shù)line()獲取電腦時間(time ( ),使指針轉(zhuǎn)動。畫靜態(tài)指針的函數(shù)為定義的v

3、oid draw()。整點報時,利用if語句,和整點報時聲音函數(shù)void Highclick()設(shè)定鬧鈴,應(yīng)用if語句,聲音控制函數(shù)為void Naoling()指針轉(zhuǎn)動的聲音控制函數(shù)void Click()結(jié)束3.小組任務(wù)分工,描述每個人應(yīng)完成的任務(wù):l 編寫程序:;l 方案書:XX;l 制作ppt:XX;l 報告書:XX;l ppt辯論:XX。4.子系統(tǒng)設(shè)計方案每人一份: l XX:1先畫出表盤;2獲取系統(tǒng)時間;3由獲取的時間計算畫出表針,每秒刷屏一次實現(xiàn)鐘表的轉(zhuǎn)動;4編寫控制聲音的函數(shù),為實現(xiàn)表針轉(zhuǎn)動滴答聲,整點報時,鬧鐘聲音做準備; 5編寫設(shè)定鬧鐘的函數(shù);6優(yōu)化外觀,給表盤添顏色。l

4、:(1) 畫表盤;(2) 畫指針;(3) 獲取系統(tǒng)時間;(4) 調(diào)用2中的函數(shù),使指針轉(zhuǎn)起來,到達根本要求。綜合考慮,以第一個方案為最終方案。5.子系統(tǒng)主要程序流程圖,并附文字說明每人一份:l XX:畫指針的程序流程圖:開始float endx,endy;float a_sec,a_min,a_hour;a_sec=(sec)*2*pi/60;a_min=(min)*2*pi/60+a_sec/60;a_hour=(hour)*2*pi/12+a_min/12;endx=midx+100*sin(a_hour);endy=midy-100*cos(a_hour);setcolor(BLUE);

5、line(midx,midy,endx,endy);endx=midx+170*sin(a_min);endy=midy-170*cos(a_min);setcolor(RED);line(midx,midy,endx,endy);endx=midx+180*sin(a_sec);endy=midy-180*cos(a_sec);setcolor(WHITE);line(midx,midy,endx,endy);結(jié)束指針的轉(zhuǎn)動流程圖:開始Time_t temp; struct tm *p;P=localtime(&temp);draw(p->tm_hour,p->tm_mi

6、n,p->tm-sec);結(jié)束closedevice注:a_sec=(sec)*2*pi/60;a_min=(min)*2*pi/60+a_sec/60;a_hour=(hour)*2*pi/12+a_min/12;為將獲得的時間轉(zhuǎn)化為角度的算法;endx=midx+100*sin(a_hour);endy=midy-100*cos(a_hour);為時針末端坐標的計算;endx=midx+170*sin(a_min);endy=midy-170*cos(a_min);為分針末端角度的計算;endx=midx+180*sin(a_sec);endy=midy-180*cos(a_sec)

7、 ;位秒針末端角度的計算;其中midx和midy為圓心坐標,100,170,180為指針長度,a_min為獲取電腦時間之后換算的指針所指角度。setcolor(BLUE);為控制指針顏色的函數(shù);line(midx,midy,endx,endy);為畫指針的函數(shù),括號里邊是指針的兩端坐標。最后采用closedevice()函數(shù)清屏。鬧鐘的設(shè)定流程圖:開始closegraph()closegraph();char p;start1:system("cls");printf("是否設(shè)定鬧鐘:(y/n/s)?");p=getch();if(p='y

8、9;)system("cls");printf("請輸入鬧鈴時間n");printf("小時:");scanf("%d",&h);system("cls");printf("%02d:",h);printf("n分鐘:");scanf("%d",&m);system("cls");printf("鬧鈴時間:n");printf("%02d:%02dn",h,m)

9、;getch();goto start;getch();else if(p='n')goto start;else if(p='s')m=m+1;goto start;elsesystem("cls");goto start1;if(p->tm_hour=h&&p->tm_min=m)Naoling();Sleep(830);if(p->tm_hour=h&&p->tm_min=m)Naoling();cleardevice();結(jié)束注:設(shè)鬧鐘時首先要用closegraph()函數(shù)清屏,

10、進入選擇設(shè)定鬧鐘的界面;system(“clrs)為清屏,每輸入一次清一次屏。應(yīng)用goto進入start或start1局部的運行。 鬧鐘的聲音控制函數(shù)為:void Naoling()Beep(2000,200);。l XX: 整點報時流程圖:開始if(p->tm_min=0&&p->tm_sec=0)Highclick();else Click();Time_t temp; struct tm *p;P=localtime(&temp);結(jié)束注:當獲取的時間里分鐘和秒都為零時,高聲報時Highclick(),否那么為普通聲音Click()??刂坡曇舻暮瘮?shù)要用

11、到C/C+里邊的Beep(x,y)函數(shù),其中x是指聲音的頻率,其值為37到32767,單位為Hz,y為持續(xù)時間,單位為毫秒。Highclick()函數(shù)為:void Highclick()Beep(1000,200);Sleep(CLICKDELAY);;Click()函數(shù)為:void Click()Beep (700,100);Sleep(CLICKDELAY); 。程序應(yīng)用函數(shù)說明:畫表盤時,用到graphics里邊的:fillcirclex,y,r/畫實心圓;setfillcolor(BLUE)/給實心圓添顏色;括號里邊的顏色根據(jù)需要自定義;setcolor/給線添顏色;setbkcolo

12、r()/改變背景顏色;line(x1,y1,x2,y2)/兩端點畫線;outtextxy(x,y,“)/用來給表盤指定位置添加數(shù)字1-12;start: goto /實現(xiàn)鬧鐘功能選擇頁面和模擬表盤頁面之間的切換;6.詳細代碼及運行結(jié)果:(1)詳細代碼:#include <graphics.h>#include<stdio.h>#include<conio.h>#include<math.h>#include<dos.h>#include<time.h>#define pi 3.1415926#define midx 320

13、#define midy 240#define CLICK 100#define CLICKDELAY 30void main() /函數(shù)聲明void draw(int hour,int min,int sec); void Click();void Highclick();void Naoling();int gdriver, gmode,h,m;start:gdriver=DETECT; gmode=0;initgraph(&gdriver, &gmode, ""); /初始化圖形模式setbkcolor(WHITE); /設(shè)置背景顏色 cleardev

14、ice();while(!kbhit()setfillcolor(LIGHTGRAY); /給表盤添顏色setcolor(BLACK);fillcircle(320,240,215); /畫實心圓盤fillcircle(320,240,170);setfillcolor(YELLOW);fillcircle(320,240,4);setcolor(YELLOW); /給刻度添顏色line(120,240,150,240); /9line(320,40,320,70); /12line(520,240,490,240); /3line(320,440,320,410); /6line(410,3

15、95.7,400,378.4); /5line(475.7,330,458.4,320); /4 line(475.7,150,458.4,160); /2line(410,84.3,400,101.6); /1line(230,84.3,240,101.6); /11 line(164.3,150,181.6,160); /10line(164.3,330,181.6,320); /8line(230,395.7,240,378.4); /7setcolor(RED);/給表盤添數(shù)字 outtextxy(319.9,36,"12"); outtextxy(118,238,

16、"9"); outtextxy(519,238,"3"); outtextxy(320,435,"6"); outtextxy(418,411,"5"); outtextxy(490,337,"4"); outtextxy(493.2,139.9,"2"); outtextxy(419.9,66.8,"1"); outtextxy(215,63,"11"); outtextxy(143,136,"10"); outt

17、extxy(146.8,340,"8"); outtextxy(220,413.2,"7");/獲取系統(tǒng)時間 time_t temp; struct tm *p;time(&temp);p=localtime(&temp);draw( p->tm_hour,p->tm_min,p->tm_sec); /調(diào)用畫指針函數(shù)if(p->tm_min=0&&p->tm_sec=0) /整點報時Highclick();elseClick();if(p->tm_hour=h&&p-&g

18、t;tm_min=m) /鬧鐘Naoling();Sleep(830); if(p->tm_hour=h&&p->tm_min=m)Naoling();cleardevice(); /清屏closegraph(); /關(guān)閉模擬時鐘界面,進入設(shè)定鬧鐘功能選擇界面char p;start1:system("cls");printf("是否設(shè)定鬧鐘:(y/n/s)?"); p=getch(); /獲得指令if(p='y') /執(zhí)行指令system("cls"); /清屏printf("請

19、輸入鬧鈴時間n");printf("小時:");scanf("%d",&h);system("cls");printf("%02d:",h);printf("n分鐘:");scanf("%d",&m);system("cls");printf("鬧鈴時間:n");printf("%02d:%02dn",h,m);getch(); goto start; /返回模擬時鐘界面else if(p=

20、'n')goto start;else if(p='s') /鬧鐘的延時m=m+5; /延時五分鐘goto start;elsesystem("cls");goto start1;void draw(int hour,int min,int sec)/定義畫指針函數(shù)float endx,endy;float a_sec,a_min,a_hour;/根據(jù)獲取時間計算對應(yīng)指針角度a_sec=(sec)*2*pi/60;a_min=(min)*2*pi/60+a_sec/60;a_hour=(hour)*2*pi/12+a_min/12;/計算末端

21、坐標endx=midx+100*sin(a_hour);endy=midy-100*cos(a_hour);setcolor(BLUE); /給時針添顏色line(midx,midy,endx,endy);/利用line函數(shù)畫指針endx=midx+170*sin(a_min);endy=midy-170*cos(a_min);setcolor(RED);line(midx,midy,endx,endy);endx=midx+180*sin(a_sec);endy=midy-180*cos(a_sec);setcolor(WHITE);line(midx,midy,endx,endy);void Click() /定義控制指針轉(zhuǎn)動的滴答聲函數(shù)Beep (

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論