计算机专业课程设计报告c语言,计算机程序设计(C语言)课程设计报告.doc
計算機程序設計(C語言)課程設計報告.doc
計算機程序設計C語言課程設計報告題目電子動畫時鐘 學院 機電工程學院專業 班級090109班學號 姓名 指導教師 設計日期 一、概述選題背景 隨著社會的進步和科技的發展,電子鐘表逐漸成為了人們生活中不可缺少的一部分。設計思路(一)功能模塊設計,1.電子時鐘執行主流程2.電子時鐘界面顯示3.電子時鐘按鍵控制模塊4.時鐘動畫處理模塊(二)數據結構設計1.time結構體2.全局變量(三)函數功能描述1.keyhandle2.timeupchange3.timedownchange4.digitclock5.drawcursor6.clearcursor7.void clockhandle8.main(四)程序實現(五)運行結果。 二、概要設計2.1、數據結構 此程序中,使用了C語言的time結構體和幾個全局變量,1.time結構體struct timeunsigned char ti_min; /*分鐘*/unsigned char ti_hour; /*小時*/unsigned char ti_hund; /*百分之一秒*/unsigned char ti_sec; /*秒*/;time結構體定義在dos.h文件中,可用來保存系統的當前時間,其中各字段的值的含義如下。1.unsigned char ti_min保存分鐘值。2.unsigned char ti_hour保存小時。3.unsigned char ti_hund保存百分之一秒,例如,ti_hund500,表示1/500秒。4.unsigned char ti_sec保存秒數。2.2、全局變量 下面對程序用到的全局變量及數組進行說明.1. double h,m,s 此3個全局變量分別用來保存小時,分鐘,秒數。 2. double x,x1,x2,y,y1,y2保存數字時鐘中小時,分,秒在屏幕中顯示的坐標值。3.struct time t1定義一個time結構類型的數組,此數組只有t0一個元素。 2.3 模塊列表 1.時鐘動畫處理模塊時鐘動畫處理模塊主要由clockhandle函數來實現,程序中舊時鐘指針的擦除是借助setwritemodemode函數設置畫線的方式來實現。如果mode1,則表示畫線時用現在特性的線所畫之處原有的線性異或(XOR操作,實際上畫出的線是原有線與現在規定的線進行異或后的結果。因此,當線的特性不變時,進行兩次畫線操作相當于沒有畫線,即在當前位置處清除了原來的畫線。2.時鐘按鍵控制模塊在電子時鐘中,按鍵控制模塊最主要的工作就是必須能讀取用戶按鍵,對按鍵值進行判斷,并調用相應函數來執行相關操作。3.數字時鐘處理模塊(1)調用digitclockint x,int y,int clock函數。在數字時鐘r指定位置顯示時,分,秒,其中digithourdouble h,int digitourdouble h和digitsecdoubles用于完成數值的double型向int型轉換。(2)調用drawcursorint count,clearcursorint count函數來完成舊光標的擦除和新光標的繪制。2.4、程序結構圖(也就是模塊之間的關系) 數字時鐘模塊按鍵控模塊界面顯示模塊時鐘動畫處理模塊電子時鐘 三 、詳細設計3.1程序預處理模塊。包括加載頭文件,定義常量,變量,結構體數組和函數原型聲明。 3.2主控模塊main.main函數主要實現了對電子時鐘的初始化工作,及clockhandle函數的調用。3.3時鐘動畫處理模塊。3.4時針按鍵控制模塊。在電子時鐘中,按鍵控制模塊最主要的工作就是必須能讀取用戶按鍵,對按鍵值進行判斷,并調用相應函數來執行相關操作。流程圖如下。3.5數字時針處理模塊。在數字時鐘處理模塊中,主要實現數字時鐘的顯示和數字的時鐘修改。其中,在數字時鐘的修改中,用戶可以按Tab鍵定位需要修改的內容的位置,然后通過按光標上移或下移鍵來修改時間。四、調試程序錯誤1 錯誤現象Declaration syntan error錯誤原因聲明錯誤,缺分號。修改方法在聲明語句后添加分號。錯誤2 錯誤現象Two few parameters in call to setlinestyle in function main 錯誤原因語句缺少參數。 修改方法在main函數中找到缺少參數的語句添加相應的參數。錯誤3錯誤原因Function call missing)in function clockhandle錯誤原因在clockhandle函數調用的是后函數表達式缺少一個)。修改方法找到錯誤語句添加缺少的表達式符號。五、心得總結程序優點本程序旨在訓練學生的基本編程能力,本程序中涉及時間結構體,數組,繪圖等方面的知識,通過本程序的訓練使學生能對C語言有一個更深刻的了解。掌握利用C語言相關函數開發電子時鐘的基本原理,為進一步開發出高質量的程序打下堅實的基礎。程序缺點程序各個模塊之間的控制連接比較繁瑣,容易出現錯誤。六附程序清單includegraphics.hincludestdio.hincludemath.hincludedos.hdefine PI 3.1415926define UP 0 x4800define DOWN 0 x5000define Esc 0 x11bdefine TAB 0 xf09int keyhandle int,int;int timeupchange int;int timedownchange int;int digithour double;int digitmin double;int digitsec double;void digitclock int,int,int;void drawcursor int ;void clearcursor int ;void clockhandle ;double h,m,s ;double x,x1,x2,y,y1,y2;struct time t1 ; mainint driver,mode0,i,j;driver DETECT;initgraph setlinestyle 0,0,3;setbkcolor0;line82,430,558,430;line70,62,70,418;line82,50,558,50;line570,62,570,418;line70,62,570,62;line76,56,297,56;line340,56,564,56;/*arcint x, int y, int. stangle, int endangle, int radius*/arc82,62,90,180,12;arc558,62,0,90,12;setlinestyle 0,0,3;arc82,418,180,279,12;setlinestyle 0,0,3;arc558,418,270,360,12;setcolor15;outtextxy300,53,CLOCK;setcolor7;rectangle342,72,560,360;setwritemode0;setcolor15;outtextxy433,75,CLOCK;setcolor7;line392,310,510,310;line392,330,510,330;arc392,320,90,270,10;arc510,320,270,90,10;setcolor5;fori431;i470;i39 forj317;j324;j7 setlinestyle0,0,3; circlei,j,1;setcolor15 ;line424,315,424,325;fori0,m0,h0;i11;i,h x100*sin h*60m/360*PI451 ; y200-100*cos h*60m/360*PI ; setlinestyle0,0,3 ; circlex,y,1 ; fori0,m0 ;i59;m,i x100*sin m/30*PI451; y200-100*cosm/30*PI ; setlinestyle0,0,1 ; circlex,y,1 ;setcolor4 ;outtextxy182,125, HELP ;setcolor5 ;outtextxy140,185, TAB Cursor move ;outtextxy140,225, UP Time ;outtextxy140,265, DOWN Time ;outtextxy140,305, Esc Quit system ;outtextxy140,345, Version 2.0 ;setcolor12;outtextxy150,400, Nothing is more important than time ;clockhandle ;closegraph ;return0;void clockhandle int k0,count ;setcolor15 ;gettimet ;ht0.ti_hour ;mt0.ti_min ;x50*sinh*60m/360*PI451 ;y200-50*cosh*60m /360*PI ;line451,200,x,y;x180*sinm/30*PI 451 ;y1200-80*cosm/30*PI ;line451,200,x1,y1 ; digitclock408,318,digithourh; digitclock446,318,digitminm;setwritemode1 ;forcount2;kEsc; setcolor12 ; sound500; delay700; sound200; delay300;nosound ;st0.ti_sec ;mt0.ti_min ;ht0.ti_hour ;x298*sins/30*PI451 ;y2200-98*coss/30*PI ;line451,200,x2,y2 ;whilet0.ti_secst0.ti_minmt0.ti_hourh gettimet; ifbioskey10 kbioskey0; countkeyhandlek,count ; ifcount5 count1 ; setcolor15 ;digitclock 485,318,digitsecs1 ;setcolor12 ;x298*sins/30*PI451 ;y2200-98*coss/30*PI ;line451,200,x2,y2 ;ift0.ti_minm setcolor15 ; x180*sinm/30*PI451 ; y1200-80*cosm/30*PI ; line451,200,x1,y1 ;mt0.ti_min ;digitclock446,318,digitminm ;x180*sinm/30*PI451 ;y1200-80*cosm/30*PI ;line451,200,x1,y1 ;ift0.ti_hour*60t0.ti_minh*60m setcolor15 ;x50*sinh*60m/360*PI451 ; y200-50*cosh*60m/360*PI;line450,200,x,y ; ht0.ti_hour ; digitclock408,318,digithour h ;x50*sinh*60m/360*PI ;line451,200,x,y ;int keyhandleint key ,int count switchkey case UP timeupchangecount-1; break ;case DOWN timedownchange count-1 ;break ;case TAB setcolor 15 ;clearcursorcount ;drawcursorcount ;count ;break;return count ;int timeupchangeint count ifcount1 t0.ti_hour; ift0.ti_hour24 t0.ti_hour0; settimet ; if count2 t0.ti_min; ift0.ti_min60 t0.ti_min0 ; settimet ;ifcount3 t0.ti_sec;ift0.ti_sec60 t0.ti_sec0 ;settimet ;int timedownchangeint count ifcount1 t0.ti_hour ; ift0.ti_hour0 t0.ti_hour23 ; settimet ; ifcount2 t0.ti_min; ift0.ti_min0 t0.ti_min59 ; settimet ;ifcount3 t0.ti_sec ; ift0.ti_sec0 t0.ti_sec59; settime t ; void digitclockint x, int y, int clockchar buffer110; setfillstyle0,2 ; bar x,y,x15,328 ; if clock60 clock0 ; sprintfbuffer1,d,clock ; outtextxyx,y,buffer1 ;int digithourdouble h int i; fori0;i23;i ifhi return i ; int digitmindouble m int i ; fori0;i59 ;i ifmi return i;int digitsecdouble s int i; fori0; i59;i ifsi return i ;void drawcursor int countswitchcount case 1line 424,315,424,325;break ; case 2line465,315,465,325 ; break; case 3line505,315,505,325 ; break ; void clearcursor int count switchcount case 2 line 424,315,424,325 ; break ; case 3line 465,315,465,325 ; break ; case 1 line 505,315,505,325 ; break ; 結束
總結
以上是生活随笔為你收集整理的计算机专业课程设计报告c语言,计算机程序设计(C语言)课程设计报告.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构与算法(C++)– 树(Tree
- 下一篇: 解决MongoDB Compass