版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> C語(yǔ)言課程設(shè)計(jì)報(bào)告</b></p><p> 題 目 一個(gè)簡(jiǎn)易計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn) </p><p> 班 級(jí) </p><p> 學(xué) 號(hào) </p><p> 姓 名
2、 </p><p> 指導(dǎo)教師 </p><p> 成 績(jī) </p><p> 老師評(píng)語(yǔ): </p>
3、<p> 2010 年 6 月 25 </p><p><b> 目錄</b></p><p> 程序設(shè)計(jì)目的:………………………………………………1</p><p> 程序設(shè)計(jì)內(nèi)容:………………………………………………1</p><p> 課程設(shè)計(jì)所補(bǔ)充的內(nèi)容:補(bǔ)充的函數(shù)或算法…………3,4<
4、;/p><p> 系統(tǒng)總體設(shè)計(jì)………………………………………………….4</p><p> 系統(tǒng)詳細(xì)設(shè)計(jì)………………………………………5,6,7,8</p><p> 運(yùn)行結(jié)果………………………………………………8,9,10</p><p> 系統(tǒng)調(diào)試…………………………………………8,9,10,11</p><p&g
5、t; 課程設(shè)計(jì)體會(huì)總結(jié)………………………………8,9,10,11</p><p><b> 1 課程設(shè)計(jì)目的</b></p><p> ?。?).課程設(shè)計(jì)是一項(xiàng)綜合性實(shí)踐環(huán)節(jié),是對(duì)平時(shí)實(shí)驗(yàn)的一個(gè)補(bǔ)充,課程設(shè)計(jì)內(nèi)容包括課程的主要理論知識(shí),但由于C語(yǔ)言對(duì)初學(xué)者較難掌握,因而對(duì)一個(gè)完整的C語(yǔ)言程序不適合平時(shí)實(shí)驗(yàn)。通過(guò)課程設(shè)計(jì)可以達(dá)到綜合設(shè)計(jì)C語(yǔ)言程序的目的。</p
6、><p> ?。?)通過(guò)本課程設(shè)計(jì),可以培養(yǎng)獨(dú)立思考,綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識(shí)的能力,能更好地使用C語(yǔ)言的知識(shí),更好地了解C語(yǔ)言的好處和其可用性!掌握基本的程序設(shè)計(jì)過(guò)程和技巧,掌握基本的分析問(wèn)題和 利用計(jì)算機(jī)求解問(wèn)題的能力,具備初步的高級(jí)程序設(shè)計(jì)能力。為后續(xù)各門(mén)計(jì)算機(jī)課程的學(xué)習(xí)和畢業(yè)設(shè)計(jì)打下堅(jiān)實(shí)基礎(chǔ)!</p><p> ?。?)通過(guò)本程序訓(xùn)練程序設(shè)計(jì)的基本技能,掌握字符串的表示方法和字符串函數(shù)
7、的功能、自學(xué)掌握四則運(yùn)算的算法及WIN-TC的圖形操作的基本知識(shí)、鍵盤(pán)上特殊鍵的獲取及圖形方式下光標(biāo)的顯示。</p><p><b> 2 課程設(shè)計(jì)內(nèi)容</b></p><p> 目的:本課程的課程設(shè)計(jì)要求學(xué)生模擬實(shí)現(xiàn)一個(gè)簡(jiǎn)單計(jì)算器,要求(1)能夠?qū)崿F(xiàn)四則運(yùn)算,并能支持優(yōu)先級(jí)運(yùn)算。(2)三角與反三角運(yùn)算:如sinx,cosx等。(3)指數(shù)對(duì)數(shù)運(yùn)算:如log(x),
8、lnx,e的x次方等。(4)其他運(yùn)算:如X!,x的累加等。(4)不允許調(diào)用庫(kù)函數(shù),使用自行開(kāi)發(fā)的程序?qū)崿F(xiàn)常用函數(shù)運(yùn)算。(5)進(jìn)一步考慮計(jì)算器外觀設(shè)計(jì),用可視化界面給出計(jì)算器外觀、功能按鍵及輸入界面。</p><p> 使用說(shuō)明:執(zhí)行加法運(yùn)算,'—'表示執(zhí)行減法運(yùn)算,表示執(zhí)行乘法運(yùn)算,'/'表示除法運(yùn)算.‘Q’表示退出計(jì)算器‘C’表示清零,’=’表示得出結(jié)果'^'表
9、示執(zhí)行x的y次方,'e'表示執(zhí)行e的x次方操作,'&'表示執(zhí)行累加操作.,你可以可以用鍵盤(pán)上的上下左右鍵對(duì)光標(biāo)進(jìn)行移動(dòng),當(dāng)光標(biāo)移動(dòng)到計(jì)算器按鍵上時(shí),按ENTER即可執(zhí)行該鍵的操作!最后按“=”則可得出結(jié)果。</p><p> 3 課題設(shè)計(jì)的補(bǔ)充知識(shí)</p><p> 本程序通過(guò)int specialkey(void)和#include<co
10、nio.h>來(lái)實(shí)現(xiàn)對(duì)屏幕的操作,通過(guò)調(diào)用int arrow()函數(shù),int specialkey(void)和#include<conio.h>來(lái)實(shí)現(xiàn)對(duì)光標(biāo)的操作。計(jì)算機(jī)圖形采用Turbo C 2.0繪圖程序制作。 因此涉及C的圖形程序設(shè)計(jì)知識(shí)。此外,由于不允許調(diào)用庫(kù)函數(shù),則要自行開(kāi)發(fā)程序?qū)崿F(xiàn)sinx,cosx,e的x次方函數(shù)運(yùn)算,則可以根據(jù)冪級(jí)數(shù)的展開(kāi)式來(lái)設(shè)計(jì)實(shí)現(xiàn)其運(yùn)算的算法,而x的階乘和x的累加則可用for語(yǔ)句來(lái)
11、實(shí)現(xiàn)。</p><p> 最后,不得不說(shuō)說(shuō)四則運(yùn)算的算法,有兩種方法可以實(shí)現(xiàn):(1)利用堆棧實(shí)現(xiàn)四則運(yùn)算(2)還可以用遞歸整數(shù)的四則運(yùn)算。</p><p><b> sinx函數(shù)</b></p><p> #include<stdio.h></p><p> #include<math.h>
12、;</p><p><b> main()</b></p><p><b> {</b></p><p><b> int n=1;</b></p><p><b> float x;</b></p><p> doubl
13、e sum ,term;</p><p> printf("input x:");</p><p> scanf("%f",&x);</p><p><b> sum=x;</b></p><p><b> term=x;</b></p&
14、gt;<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> n=n+2;</b><
15、/p><p><b> }</b></p><p> while (fabs(term)>=1e-5);</p><p> printf("sin(x)=%f ",sum);</p><p><b> getch();</b></p><p>
16、 } </p><p><b> cosx函數(shù)</b></p><p> #include<stdio.h></p><p> #include<math.h> </p><p><b> main()</b></p>&
17、lt;p><b> {</b></p><p><b> int n=0;</b></p><p><b> float x;</b></p><p> double sum ,term;</p><p> printf("input x:"
18、);</p><p> scanf("%f",&x);</p><p><b> sum=1;</b></p><p><b> term=x;</b></p><p><b> do</b></p><p><
19、b> {</b></p><p> term=-term*x*x/((n+1)*(n+2));</p><p> sum=sum+term;</p><p><b> n=n+2;</b></p><p><b> }</b></p><p>
20、while (fabs(term)>=1e-5);</p><p> printf("cos(x)=%f ",sum);</p><p><b> getch();</b></p><p><b> }</b></p><p> 使用使只需要將其轉(zhuǎn)換為函數(shù),在com
21、puter函數(shù)中對(duì)其進(jìn)行調(diào)用即可</p><p><b> 4課程總體設(shè)計(jì)</b></p><p> main()函數(shù)首先初始化圖形系統(tǒng),然后調(diào)用計(jì)算器computer()進(jìn)行計(jì)算器的計(jì)算功能,當(dāng)計(jì)算器程序返回時(shí),關(guān)閉圖形系統(tǒng),結(jié)束程序。</p><p><b> 其系統(tǒng)模塊圖如下:</b></p>&
22、lt;p> 5.1系統(tǒng)詳細(xì)設(shè)計(jì) </p><p> 5.1.1主界面:畫(huà)一個(gè)帶標(biāo)題(calculator)的窗口,窗口最上面的光條顯示數(shù)字和運(yùn)算結(jié)果,光條下30個(gè)矩形塊模擬命令按鈕,按鈕上面顯示數(shù)字和運(yùn)算符號(hào),并且在按鈕上有圖形光標(biāo),通過(guò)移動(dòng)光標(biāo)鍵到所需位置,按回車(chē)鍵即可選擇相應(yīng)的符號(hào)。</p><p> 5.1.2main()主函數(shù):首先初始化圖形系統(tǒng)(Initializ
23、e函數(shù)),然后調(diào)用計(jì)算器computer()函數(shù)進(jìn)行計(jì)算器的計(jì)算功能,當(dāng)計(jì)算器程序返回時(shí),關(guān)閉圖形系統(tǒng)(Closegraph),結(jié)束程序。</p><p> 5.1.3initialize()初始化函數(shù):調(diào)用initgraph(&GraphDriver,&&GraphMode,”初始化系統(tǒng),將其裝入相應(yīng)的圖形驅(qū)動(dòng)器。圖形函數(shù)所用的屏顯模式由GraphMode所指向的整數(shù)值確定。用DETE
24、CT自動(dòng)檢測(cè)目前屏顯硬件的類(lèi)型,并選用最大分辨率的屏顯模式。為了方便設(shè)計(jì)計(jì)算器界面,在這個(gè)函數(shù)中你,獲取圖形屏幕的最大尺寸及縱橫比。</p><p> 5.1.4mwindow()主窗口函數(shù):設(shè)置視口大小為當(dāng)前窗口的一半,然后調(diào)用畫(huà)邊框函數(shù)drawboder()畫(huà)出邊框。</p><p> 5.1.5drawboder()畫(huà)邊框函數(shù):通過(guò)函數(shù)getviewsettings(&v
25、p)把有關(guān)當(dāng)前視口的信息裝入由vp所指向的結(jié)構(gòu)中。vp是struct viewporttype類(lèi)型,其結(jié)構(gòu)定義如下:</p><p> struct viewporttype</p><p> {int left,top,right,bottom;</p><p><b> int clip;</b></p><p&g
26、t;<b> }</b></p><p> 域left,top,right,bottom中分為左上角和右下角的坐標(biāo)。當(dāng)clip為0時(shí),不對(duì)超出視口邊界裁剪,否則裁剪以防止超出邊界。</p><p> 因窗口是屏幕的活動(dòng)部分,在這個(gè)活動(dòng)窗口將顯示輸出,為保持字符屏幕和圖形系統(tǒng)的獨(dú)立。字符屏幕的函數(shù)提供了窗口(window),而圖形系統(tǒng)提供了視口(ViewPort)
27、,當(dāng)屏幕用字符模式時(shí),左上角坐標(biāo)為(1,1),而在圖形狀態(tài)下,左上角坐標(biāo)為(0,0)。根據(jù)視口坐標(biāo),利用畫(huà)矩形函數(shù)rectangle()畫(huà)出邊框線。</p><p> 5.1.6computer()計(jì)算器函數(shù):這是主要函數(shù),實(shí)現(xiàn)了計(jì)算器的計(jì)算功能。先調(diào)用mwindow()函數(shù)顯示窗口,再在窗口中顯示計(jì)算器,最后接收按鍵進(jìn)行運(yùn)算。根據(jù)窗口大小設(shè)置按鈕大小和位置,設(shè)置了兩個(gè)單位變量width和height,圖形顯示
28、以這兩個(gè)變量為計(jì)算單位。圖中的符號(hào)按鈕利用setfillstyle()設(shè)置顏色來(lái)實(shí)體填充,再用把bar()函數(shù)畫(huà)矩形條,setcolor()函數(shù)設(shè)置邊框線顏色,rectangle()函數(shù)畫(huà)矩形邊框線,利用outtextxy()函數(shù)將預(yù)先存儲(chǔ)在str1中的字符串中的字符輸出,因outtextxy()輸出的時(shí)字符串,則應(yīng)利用sprintf()函數(shù)將要輸出的字符寫(xiě)入字符數(shù)組str2中,轉(zhuǎn)變?yōu)樽址?,然后輸出。界面設(shè)置好后,先在第一個(gè)按鈕位置顯
29、示圖標(biāo),此時(shí)可移動(dòng)和按下光標(biāo),變量m和n記錄光標(biāo)的位置,光標(biāo)移動(dòng)某個(gè)位置按回車(chē)后,則程序判斷所按的字符,進(jìn)行相應(yīng)處理:(1)若為數(shù)字或小數(shù)點(diǎn),則判斷是否為負(fù)數(shù),若是則將負(fù)號(hào)連接到字符串中,否則只連接所選的數(shù)字或小數(shù)點(diǎn),并顯示數(shù)據(jù)。(2)當(dāng)所選為“-“先判斷有無(wú)操作數(shù),沒(méi)有,則為負(fù)數(shù),做負(fù)號(hào)標(biāo)記,否則是做減法,做減</p><p> 5.1.7arrow()設(shè)計(jì)圖形鼠標(biāo)函數(shù):用fillpoly(8,raw)畫(huà)一個(gè)
30、由raw所指向的數(shù)組中定義的8個(gè)x、y坐標(biāo)點(diǎn)所圍成的封閉圖形,用當(dāng)前填充模式和顏色對(duì)該形狀進(jìn)行填充,利用imagesize()函數(shù)測(cè)試圖像大小,分配內(nèi)存區(qū)域,將圖像保存,再通過(guò)圖像的讀取函數(shù)getimage()和putimage()以及XOR-PUT操作實(shí)現(xiàn)光標(biāo)的顯示和隱藏。</p><p> 5.1.8speciallykey()讀取特殊鍵函數(shù):利用bioskey(1)讀取用戶所按鍵的信息,int biosk
31、ey(int cmb)函數(shù)原型在bios.h中,功能是完成直接按鍵操作。如果cmb是0 ,bioskey()返回下一個(gè)在鍵盤(pán)鍵入的值,即在等待到下一個(gè)鍵。如果cmb是1,bioskey()查詢(xún)是否按下一個(gè)鍵,當(dāng)按下一個(gè)鍵時(shí)返回非0值,否則返回0值,所以用while(bioskey(1)==0)語(yǔ)句等待按鍵</p><p> 5.2.模塊接口設(shè)計(jì)</p><p> int main()&
32、lt;/p><p> {initialize();</p><p> Computer();</p><p> Closegraph();</p><p> Return(0);</p><p><b> }</b></p><p> 先設(shè)置系統(tǒng)進(jìn)入圖形模式(調(diào)用i
33、nitialize()函數(shù)),即為模塊入口,然后調(diào)用computer()函數(shù)執(zhí)行計(jì)算器的計(jì)算功能,最后調(diào)用closegraph()函數(shù)來(lái)關(guān)閉圖形模式返回文本模式(模塊出口),再結(jié)束程序。</p><p><b> 5.3流程圖</b></p><p> Computer()函數(shù)流程圖</p><p><b> 總系統(tǒng)設(shè)計(jì)流程圖&
34、lt;/b></p><p><b> 6運(yùn)行結(jié)果</b></p><p><b> 運(yùn)算器主界面</b></p><p><b> 4的階乘運(yùn)算結(jié)果</b></p><p><b> cos0運(yùn)算結(jié)果</b></p><
35、p><b> e的平方運(yùn)算結(jié)果</b></p><p><b> Ln10的運(yùn)算結(jié)果</b></p><p><b> 7系統(tǒng)調(diào)試</b></p><p> 該計(jì)算器系統(tǒng)不能實(shí)現(xiàn)四則運(yùn)算功能,有望改進(jìn)!</p><p><b> 8課程設(shè)計(jì)體會(huì)總結(jié)&l
36、t;/b></p><p> 經(jīng)過(guò)一周的C語(yǔ)言課程設(shè)計(jì),使我加深了C語(yǔ)言程序的使用,并能達(dá)到基本上的運(yùn)用。同時(shí)也增強(qiáng)了動(dòng)手和實(shí)踐的能力。雖然在遇到了不少困難,但是正因?yàn)檫@些困難,我也學(xué)到了更多的東西。</p><p> 這次“簡(jiǎn)單計(jì)算器制作”的課程設(shè)計(jì)不僅讓我對(duì)C語(yǔ)言的的熟悉城的上升到了一個(gè)新的高度,是我在編程路上一個(gè)質(zhì)的飛躍。當(dāng)我看到一個(gè)具有圖形界面的計(jì)算器的模型成品出現(xiàn)在我的
37、面前時(shí),心中有著無(wú)限的感慨,原來(lái)編程也不是非常遙不可及的,原來(lái)在編程的趣味中能讓我學(xué)到更多有意思的知識(shí)!</p><p> 9實(shí)驗(yàn)指導(dǎo)書(shū)與參考書(shū)</p><p> 1.譚浩強(qiáng),《C程序設(shè)計(jì)(第三版)》,清華大學(xué)出版社,2005年。</p><p> 2.郭翠英,《C語(yǔ)言課程設(shè)計(jì)案例精編》,中國(guó)水利水電出版社,2004年。</p><p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)--一個(gè)簡(jiǎn)易計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)
- 設(shè)計(jì)一個(gè)簡(jiǎn)單計(jì)算器的c語(yǔ)言課程設(shè)計(jì)報(bào)告
- 高級(jí)語(yǔ)言課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- c語(yǔ)言課程設(shè)計(jì)--- 制作2.0版簡(jiǎn)易計(jì)算器
- c語(yǔ)言課程設(shè)計(jì)--計(jì)算器
- c語(yǔ)言課程設(shè)計(jì)--計(jì)算器
- java編程語(yǔ)言設(shè)計(jì)課程設(shè)計(jì)--- 簡(jiǎn)易計(jì)算器設(shè)計(jì)
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì)
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì)
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì)
- c語(yǔ)言計(jì)算器的編寫(xiě)課程設(shè)計(jì)
- 簡(jiǎn)易計(jì)算器的設(shè)計(jì)課程設(shè)計(jì)
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì) (3)
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì) (2)
- 簡(jiǎn)易計(jì)算器課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)----簡(jiǎn)易計(jì)算器
- vb課程設(shè)計(jì)簡(jiǎn)易計(jì)算器
- 微機(jī)課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- 簡(jiǎn)易計(jì)算器學(xué)生課程設(shè)計(jì)
- java課程設(shè)計(jì)報(bào)告---設(shè)計(jì)一個(gè)多功能計(jì)算器
評(píng)論
0/150
提交評(píng)論