c語言課程設(shè)計--一個簡易計算器的設(shè)計與實現(xiàn)_第1頁
已閱讀1頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  揚 州 大 學(xué)</b></p><p><b>  C語言課程設(shè)計報告</b></p><p>  題 目 一個簡易計算器的設(shè)計與實現(xiàn) </p><p>  班 級 </p><p>  學(xué) 號

2、 </p><p>  姓 名 </p><p>  指導(dǎo)教師 </p><p>  成 績 </p><p>  老師評語:

3、 </p><p>  揚州大學(xué)信息工程學(xué)院</p><p>  2010 年 6 月 25 </p><p><b>  目錄</b></p><p>  程序設(shè)計目的:………………………………………………1</p><p&g

4、t;  程序設(shè)計內(nèi)容:………………………………………………1</p><p>  課程設(shè)計所補充的內(nèi)容:補充的函數(shù)或算法…………3,4</p><p>  系統(tǒng)總體設(shè)計………………………………………………….4</p><p>  系統(tǒng)詳細(xì)設(shè)計………………………………………5,6,7,8</p><p>  運行結(jié)果…………………………………

5、……………8,9,10</p><p>  系統(tǒng)調(diào)試…………………………………………8,9,10,11</p><p>  課程設(shè)計體會總結(jié)………………………………8,9,10,11</p><p><b>  1 課程設(shè)計目的</b></p><p>  (1).課程設(shè)計是一項綜合性實踐環(huán)節(jié),是對平時實驗的一個補充,課

6、程設(shè)計內(nèi)容包括課程的主要理論知識,但由于C語言對初學(xué)者較難掌握,因而對一個完整的C語言程序不適合平時實驗。通過課程設(shè)計可以達(dá)到綜合設(shè)計C語言程序的目的。</p><p> ?。?)通過本課程設(shè)計,可以培養(yǎng)獨立思考,綜合運用所學(xué)有關(guān)相應(yīng)知識的能力,能更好地使用C語言的知識,更好地了解C語言的好處和其可用性!掌握基本的程序設(shè)計過程和技巧,掌握基本的分析問題和 利用計算機求解問題的能力,具備初步的高級程序設(shè)計能力。為后

7、續(xù)各門計算機課程的學(xué)習(xí)和畢業(yè)設(shè)計打下堅實基礎(chǔ)!</p><p> ?。?)通過本程序訓(xùn)練程序設(shè)計的基本技能,掌握字符串的表示方法和字符串函數(shù)的功能、自學(xué)掌握四則運算的算法及WIN-TC的圖形操作的基本知識、鍵盤上特殊鍵的獲取及圖形方式下光標(biāo)的顯示。</p><p><b>  2 課程設(shè)計內(nèi)容</b></p><p>  目的:本課程的課程設(shè)計

8、要求學(xué)生模擬實現(xiàn)一個簡單計算器,要求(1)能夠?qū)崿F(xiàn)四則運算,并能支持優(yōu)先級運算。(2)三角與反三角運算:如sinx,cosx等。(3)指數(shù)對數(shù)運算:如log(x),lnx,e的x次方等。(4)其他運算:如X!,x的累加等。(4)不允許調(diào)用庫函數(shù),使用自行開發(fā)的程序?qū)崿F(xiàn)常用函數(shù)運算。(5)進(jìn)一步考慮計算器外觀設(shè)計,用可視化界面給出計算器外觀、功能按鍵及輸入界面。</p><p>  使用說明:執(zhí)行加法運算,'

9、;—'表示執(zhí)行減法運算,表示執(zhí)行乘法運算,'/'表示除法運算.‘Q’表示退出計算器‘C’表示清零,’=’表示得出結(jié)果'^'表示執(zhí)行x的y次方,'e'表示執(zhí)行e的x次方操作,'&'表示執(zhí)行累加操作.,你可以可以用鍵盤上的上下左右鍵對光標(biāo)進(jìn)行移動,當(dāng)光標(biāo)移動到計算器按鍵上時,按ENTER即可執(zhí)行該鍵的操作!最后按“=”則可得出結(jié)果。</p><

10、;p>  3 課題設(shè)計的補充知識</p><p>  本程序通過int specialkey(void)和#include<conio.h>來實現(xiàn)對屏幕的操作,通過調(diào)用int arrow()函數(shù),int specialkey(void)和#include<conio.h>來實現(xiàn)對光標(biāo)的操作。計算機圖形采用Turbo C 2.0繪圖程序制作。 因此涉及C的圖形程序設(shè)計知識。此外,由于

11、不允許調(diào)用庫函數(shù),則要自行開發(fā)程序?qū)崿F(xiàn)sinx,cosx,e的x次方函數(shù)運算,則可以根據(jù)冪級數(shù)的展開式來設(shè)計實現(xiàn)其運算的算法,而x的階乘和x的累加則可用for語句來實現(xiàn)。</p><p>  最后,不得不說說四則運算的算法,有兩種方法可以實現(xiàn):(1)利用堆棧實現(xiàn)四則運算(2)還可以用遞歸整數(shù)的四則運算。</p><p><b>  sinx函數(shù)</b></p&g

12、t;<p>  #include<stdio.h></p><p>  #include<math.h></p><p><b>  main()</b></p><p><b>  {</b></p><p><b>  int n=1;</b

13、></p><p><b>  float x;</b></p><p>  double sum ,term;</p><p>  printf("input x:");</p><p>  scanf("%f",&x);</p><p>&

14、lt;b>  sum=x;</b></p><p><b>  term=x;</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  term=-term*x*x/((n+1)*(n+2));</p

15、><p>  sum=sum+term;</p><p><b>  n=n+2;</b></p><p><b>  }</b></p><p>  while (fabs(term)>=1e-5);</p><p>  printf("sin(x)=%f &q

16、uot;,sum);</p><p><b>  getch();</b></p><p>  } </p><p><b>  cosx函數(shù)</b></p><p>  #include<stdio.h></p><p>  #in

17、clude<math.h> </p><p><b>  main()</b></p><p><b>  {</b></p><p><b>  int n=0;</b></p><p><b>  float x;</b></p&g

18、t;<p>  double sum ,term;</p><p>  printf("input x:");</p><p>  scanf("%f",&x);</p><p><b>  sum=1;</b></p><p><b>  term

19、=x;</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  term=-term*x*x/((n+1)*(n+2));</p><p>  sum=sum+term;</p><p><b>  

20、n=n+2;</b></p><p><b>  }</b></p><p>  while (fabs(term)>=1e-5);</p><p>  printf("cos(x)=%f ",sum);</p><p><b>  getch();</b>&l

21、t;/p><p><b>  }</b></p><p>  使用使只需要將其轉(zhuǎn)換為函數(shù),在computer函數(shù)中對其進(jìn)行調(diào)用即可</p><p><b>  4課程總體設(shè)計</b></p><p>  main()函數(shù)首先初始化圖形系統(tǒng),然后調(diào)用計算器computer()進(jìn)行計算器的計算功能,當(dāng)計算器

22、程序返回時,關(guān)閉圖形系統(tǒng),結(jié)束程序。</p><p><b>  其系統(tǒng)模塊圖如下:</b></p><p>  5.1系統(tǒng)詳細(xì)設(shè)計 </p><p>  5.1.1主界面:畫一個帶標(biāo)題(calculator)的窗口,窗口最上面的光條顯示數(shù)字和運算結(jié)果,光條下30個矩形塊模擬命令按鈕,按鈕上面顯示數(shù)字和運算符號,并且在按鈕上有圖形光標(biāo),通過

23、移動光標(biāo)鍵到所需位置,按回車鍵即可選擇相應(yīng)的符號。</p><p>  5.1.2main()主函數(shù):首先初始化圖形系統(tǒng)(Initialize函數(shù)),然后調(diào)用計算器computer()函數(shù)進(jìn)行計算器的計算功能,當(dāng)計算器程序返回時,關(guān)閉圖形系統(tǒng)(Closegraph),結(jié)束程序。</p><p>  5.1.3initialize()初始化函數(shù):調(diào)用initgraph(&GraphD

24、river,&&GraphMode,”初始化系統(tǒng),將其裝入相應(yīng)的圖形驅(qū)動器。圖形函數(shù)所用的屏顯模式由GraphMode所指向的整數(shù)值確定。用DETECT自動檢測目前屏顯硬件的類型,并選用最大分辨率的屏顯模式。為了方便設(shè)計計算器界面,在這個函數(shù)中你,獲取圖形屏幕的最大尺寸及縱橫比。</p><p>  5.1.4mwindow()主窗口函數(shù):設(shè)置視口大小為當(dāng)前窗口的一半,然后調(diào)用畫邊框函數(shù)drawb

25、oder()畫出邊框。</p><p>  5.1.5drawboder()畫邊框函數(shù):通過函數(shù)getviewsettings(&vp)把有關(guān)當(dāng)前視口的信息裝入由vp所指向的結(jié)構(gòu)中。vp是struct viewporttype類型,其結(jié)構(gòu)定義如下:</p><p>  struct viewporttype</p><p>  {int left,top,r

26、ight,bottom;</p><p><b>  int clip;</b></p><p><b>  }</b></p><p>  域left,top,right,bottom中分為左上角和右下角的坐標(biāo)。當(dāng)clip為0時,不對超出視口邊界裁剪,否則裁剪以防止超出邊界。</p><p>  

27、因窗口是屏幕的活動部分,在這個活動窗口將顯示輸出,為保持字符屏幕和圖形系統(tǒng)的獨立。字符屏幕的函數(shù)提供了窗口(window),而圖形系統(tǒng)提供了視口(ViewPort),當(dāng)屏幕用字符模式時,左上角坐標(biāo)為(1,1),而在圖形狀態(tài)下,左上角坐標(biāo)為(0,0)。根據(jù)視口坐標(biāo),利用畫矩形函數(shù)rectangle()畫出邊框線。</p><p>  5.1.6computer()計算器函數(shù):這是主要函數(shù),實現(xiàn)了計算器的計算功能。先

28、調(diào)用mwindow()函數(shù)顯示窗口,再在窗口中顯示計算器,最后接收按鍵進(jìn)行運算。根據(jù)窗口大小設(shè)置按鈕大小和位置,設(shè)置了兩個單位變量width和height,圖形顯示以這兩個變量為計算單位。圖中的符號按鈕利用setfillstyle()設(shè)置顏色來實體填充,再用把bar()函數(shù)畫矩形條,setcolor()函數(shù)設(shè)置邊框線顏色,rectangle()函數(shù)畫矩形邊框線,利用outtextxy()函數(shù)將預(yù)先存儲在str1中的字符串中的字符輸出,因

29、outtextxy()輸出的時字符串,則應(yīng)利用sprintf()函數(shù)將要輸出的字符寫入字符數(shù)組str2中,轉(zhuǎn)變?yōu)樽址?,然后輸出。界面設(shè)置好后,先在第一個按鈕位置顯示圖標(biāo),此時可移動和按下光標(biāo),變量m和n記錄光標(biāo)的位置,光標(biāo)移動某個位置按回車后,則程序判斷所按的字符,進(jìn)行相應(yīng)處理:(1)若為數(shù)字或小數(shù)點,則判斷是否為負(fù)數(shù),若是則將負(fù)號連接到字符串中,否則只連接所選的數(shù)字或小數(shù)點,并顯示數(shù)據(jù)。(2)當(dāng)所選為“-“先判斷有無操作數(shù),沒有,則

30、為負(fù)數(shù),做負(fù)號標(biāo)記,否則是做減法,做減</p><p>  5.1.7arrow()設(shè)計圖形鼠標(biāo)函數(shù):用fillpoly(8,raw)畫一個由raw所指向的數(shù)組中定義的8個x、y坐標(biāo)點所圍成的封閉圖形,用當(dāng)前填充模式和顏色對該形狀進(jìn)行填充,利用imagesize()函數(shù)測試圖像大小,分配內(nèi)存區(qū)域,將圖像保存,再通過圖像的讀取函數(shù)getimage()和putimage()以及XOR-PUT操作實現(xiàn)光標(biāo)的顯示和隱藏。

31、</p><p>  5.1.8speciallykey()讀取特殊鍵函數(shù):利用bioskey(1)讀取用戶所按鍵的信息,int bioskey(int cmb)函數(shù)原型在bios.h中,功能是完成直接按鍵操作。如果cmb是0 ,bioskey()返回下一個在鍵盤鍵入的值,即在等待到下一個鍵。如果cmb是1,bioskey()查詢是否按下一個鍵,當(dāng)按下一個鍵時返回非0值,否則返回0值,所以用while(biosk

32、ey(1)==0)語句等待按鍵</p><p>  5.2.模塊接口設(shè)計</p><p>  int main()</p><p>  {initialize();</p><p>  Computer();</p><p>  Closegraph();</p><p>  Return(0)

33、;</p><p><b>  }</b></p><p>  先設(shè)置系統(tǒng)進(jìn)入圖形模式(調(diào)用initialize()函數(shù)),即為模塊入口,然后調(diào)用computer()函數(shù)執(zhí)行計算器的計算功能,最后調(diào)用closegraph()函數(shù)來關(guān)閉圖形模式返回文本模式(模塊出口),再結(jié)束程序。</p><p><b>  5.3流程圖</b&

34、gt;</p><p>  Computer()函數(shù)流程圖</p><p><b>  總系統(tǒng)設(shè)計流程圖</b></p><p><b>  6運行結(jié)果</b></p><p><b>  運算器主界面</b></p><p><b>  4的

35、階乘運算結(jié)果</b></p><p><b>  cos0運算結(jié)果</b></p><p><b>  e的平方運算結(jié)果</b></p><p><b>  Ln10的運算結(jié)果</b></p><p><b>  7系統(tǒng)調(diào)試</b></p

36、><p>  該計算器系統(tǒng)不能實現(xiàn)四則運算功能,有望改進(jìn)!</p><p><b>  8課程設(shè)計體會總結(jié)</b></p><p>  經(jīng)過一周的C語言課程設(shè)計,使我加深了C語言程序的使用,并能達(dá)到基本上的運用。同時也增強了動手和實踐的能力。雖然在遇到了不少困難,但是正因為這些困難,我也學(xué)到了更多的東西。</p><p> 

37、 這次“簡單計算器制作”的課程設(shè)計不僅讓我對C語言的的熟悉城的上升到了一個新的高度,是我在編程路上一個質(zhì)的飛躍。當(dāng)我看到一個具有圖形界面的計算器的模型成品出現(xiàn)在我的面前時,心中有著無限的感慨,原來編程也不是非常遙不可及的,原來在編程的趣味中能讓我學(xué)到更多有意思的知識!</p><p>  9實驗指導(dǎo)書與參考書</p><p>  1.譚浩強,《C程序設(shè)計(第三版)》,清華大學(xué)出版社,200

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論