版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)</p><p><b> C語言</b></p><p><b> 設(shè)計(jì)報(bào)告</b></p><p><b> 設(shè)計(jì)題目:</b></p><p><b> 計(jì)算器</b></p><
2、;p><b> 二.選題背景:</b></p><p> 問題提出:在應(yīng)用電腦的過程中,往往需要使用計(jì)算器,來執(zhí)行簡(jiǎn)單的運(yùn)算,但系統(tǒng)提供的計(jì)算功能過于煩瑣,而且有些程序并不提供計(jì)算功能。</p><p> 為此,這里用C語言編制了幾個(gè)函數(shù),用于程序中時(shí),可達(dá)到計(jì)算的目的.</p><p><b> 三.設(shè)計(jì)思路:<
3、/b></p><p> 簡(jiǎn)單的計(jì)算器是對(duì)實(shí)數(shù)進(jìn)行簡(jiǎn)單的加,減,乘,除及簡(jiǎn)單的求冪運(yùn)算。本程序是通過簡(jiǎn)單的C語言的運(yùn)算函數(shù)來計(jì)算運(yùn)行,來實(shí)現(xiàn)計(jì)算器的基本功能。</p><p> 在實(shí)現(xiàn)過程中,應(yīng)用循環(huán)來判斷運(yùn)行相應(yīng)的函數(shù),即可達(dá)到簡(jiǎn)單的計(jì)算器的功能。</p><p><b> 四.設(shè)計(jì)分析:</b></p><p
4、> 1.應(yīng)用技術(shù)點(diǎn)及主要解決問題闡述</p><p> 通過計(jì)算器函數(shù),窗口函數(shù),設(shè)計(jì)鼠標(biāo)圖形函數(shù)及按鍵函數(shù)來構(gòu)成計(jì)算器的實(shí)體,需要解決的是定義計(jì)算器的外觀,及鼠標(biāo)的圖形及其應(yīng)用,尤其是鼠標(biāo)置于頂端時(shí),其下一步的循環(huán)返回另一個(gè)頂端。</p><p><b> 2.技術(shù)關(guān)鍵</b></p><p> 計(jì)算器函數(shù) computer()
5、的邊框,按鍵大小設(shè)計(jì),及鼠標(biāo)在同一行或列中的循環(huán)滾動(dòng),還有進(jìn)行運(yùn)算時(shí),按鍵不同,進(jìn)行響應(yīng)的運(yùn)算,窗口函數(shù)(mwindow()),設(shè)計(jì)鼠標(biāo)函數(shù)(arrow()),按鍵函數(shù)(specialkey())。</p><p><b> 五:程序流程圖</b></p><p> 六、程序清單:1、2、</p><p> #include <
6、;dos.h> /*DOS接口函數(shù)*/#include <math.h> /*數(shù)學(xué)函數(shù)的定義*/#include <conio.h> /*屏幕操作函數(shù)*/#include <stdio.h>
7、 /*I/O函數(shù)*/#include <stdlib.h> /*庫函數(shù)*/#include <stdarg.h> /*變量長度參數(shù)表*/#include <graphics.h> /*圖形函數(shù)*/#include <string.h>
8、 /*字符串函數(shù)*/#include <ctype.h> /*字符操作函數(shù)*/#define U</p><p> float num1=0,num2=0,result; /*操作數(shù)和計(jì)算結(jié)果變量*/</p><p> char cnum[5],str2[
9、20]={""},c,temp[20]={""};</p><p> char str1[]="1230.456+-789*/Qc=^%"; </p><p> /* 定義字符串在按鈕圖形上顯示的符號(hào) */</p><p> mwindow( "Calculator&quo
10、t; ); /* 顯示主窗口 */</p><p> color = 7; /*設(shè)置灰顏色值*/</p><p> getviewsettings( &vp ); /* 讀取當(dāng)前窗口的大小*/</p><p> width=(vp.righ
11、t+1)/10; /* 設(shè)置按鈕寬度 */</p><p> height=(vp.bottom-10)/10 ; /*設(shè)置按鈕高度 */</p><p> x = width /2; /*設(shè)置x的坐標(biāo)值*/</p><p> y = height/2;
12、 /*設(shè)置y的坐標(biāo)值*/</p><p> setfillstyle(SOLID_FILL, color+3);</p><p> bar( x+width*2, y, x+7*width, y+height );</p><p> /*畫一個(gè)二維矩形條顯示運(yùn)算數(shù)和結(jié)果*/</p><p>
13、 setcolor( color+3 ); /*設(shè)置淡綠顏色邊框線*/</p><p> rectangle( x+width*2, y, x+7*width, y+height );</p><p> /*畫一個(gè)矩形邊框線*/</p><p> setcolor(RED);
14、/*設(shè)置顏色為紅色*/</p><p> outtextxy(x+3*width,y+height/2,"0."); /*輸出字符串"0."*/</p><p> x =2*width-width/2; /*設(shè)置x的坐標(biāo)值*/</p><p> y =2*height+height/2
15、; /*設(shè)置y的坐標(biāo)值*/</p><p> for( j=0 ; j<4 ; ++j ) /*畫按鈕*/</p><p><b> {</b></p><p> for( i=0 ; i<5 ; ++i )</p><p><b>
16、; {</b></p><p> setfillstyle(SOLID_FILL, color);</p><p> setcolor(RED);</p><p> bar( x, y, x+width, y+height ); /*畫一個(gè)矩形條*/</p><p> rectangle( x, y, x+width,
17、 y+height );</p><p> sprintf(str2,"%c",str1[j*5+i]);</p><p> /*將字符保存到str2中*/</p><p> outtextxy( x+(width/2), y+height/2, str2);</p><p> x =x+width+ (width
18、 / 2) ; /*移動(dòng)列坐標(biāo)*/</p><p><b> }</b></p><p> y +=(height/2)*3; /* 移動(dòng)行坐標(biāo)*/</p><p> x =2*width-width/2; /*復(fù)位列坐標(biāo)*/</p><p>
19、;<b> }</b></p><p> x0=2*width;</p><p> y0=3*height;</p><p><b> x=x0;</b></p><p><b> y=y0;</b></p><p> gotoxy(x,y)
20、; /*移動(dòng)光標(biāo)到x,y位置*/</p><p> arrow(); /*顯示光標(biāo)*/</p><p> putimage(x,y,rar,XOR_PUT);</p><p><b> m=0;</b></p>&
21、lt;p><b> n=0;</b></p><p> strcpy(str2,""); /*設(shè)置str2為空串*/</p><p> while((v=specialkey())!=45) /*當(dāng)壓下Alt+
22、x鍵結(jié)束程序,否則執(zhí)行下面的循環(huán)*/</p><p><b> {</b></p><p> while((v=specialkey())!=ENTER) /*當(dāng)壓下鍵不是回車時(shí)*/</p><p><b> {</b></p><p> putimage(x,y,rar,XOR_PU
23、T); /*顯示光標(biāo)圖象*/</p><p> if(v==RIGHT) /*右移箭頭時(shí)新位置計(jì)算*/</p><p> if(x>=x0+6*width)</p><p> /*如果右移,移到尾,則移動(dòng)到最左邊字符位置*/</p><p><b> {<
24、;/b></p><p><b> x=x0;</b></p><p><b> m=0;</b></p><p><b> }</b></p><p><b> else</b></p><p><b>
25、 {</b></p><p> x=x+width+width/2; /*否則,右移到下一個(gè)字符位置*/</p><p> m++; /*左移箭頭時(shí)新位置計(jì)算*/</p><p> } </p><p> if(v==
26、LEFT) </p><p><b> if(x<=x0)</b></p><p><b> {</b></p><p> x=x0+6*width; /*如果移到頭,再左移,則移動(dòng)到最右邊字符位置*/</p><p><
27、;b> m=4;</b></p><p> } </p><p><b> else</b></p><p><b> {</b></p><p> x=x-width-width/2; /*否則,左移到前一個(gè)字符位置*
28、/</p><p> m--; /*左移箭頭時(shí)新位置計(jì)算*/</p><p> } </p><p> if(v==UP) </p><p><b>
29、 if(y<=y0)</b></p><p><b> {</b></p><p> y=y0+4*height+height/2; /*如果移到頭,再上移,則移動(dòng)到最下邊字符位置*/</p><p><b> n=3;</b></p><p> }
30、 </p><p><b> else</b></p><p><b> {</b></p><p> y=y-height-height/2; /*否則,移到上邊一個(gè)字符位置*/</p><p> n--; /*上移箭頭時(shí)新位置計(jì)算*/&
31、lt;/p><p> } </p><p> if(v==DOWN) </p><p> if(y>=7*height)</p><p><b> {</b></p><p>
32、; y=y0; /*如果移到尾,再下移,則移動(dòng)到最上邊字符位置*/</p><p><b> n=0;</b></p><p> } </p><p><b> else</b></p><p><b
33、> {</b></p><p> y=y+height+height/2; /*否則,移到下邊一個(gè)字符位置*/</p><p> n++; /*在新的位置顯示光標(biāo)箭頭*/</p><p> } </p>
34、<p> putimage(x,y,rar,XOR_PUT); </p><p><b> }</b></p><p> c=str1[n*5+m]; /*將字符保存到變量c中*/</p><p> if(isdigit(c)||c=='.') /*判斷是否是數(shù)字或小數(shù)點(diǎn)
35、*/</p><p><b> {</b></p><p> if(flag==-1) /*如果標(biāo)志為-1,表明為負(fù)數(shù)*/</p><p><b> {</b></p><p> strcpy(str2,"-");
36、 /*將負(fù)號(hào)連接到字符串中*/</p><p><b> flag=1;</b></p><p> } /*將標(biāo)志值恢復(fù)為1*/</p><p> sprintf(temp,"%c",c); /*將字符保存
37、到字符串變量temp中*/</p><p> strcat(str2,temp); /*將temp中的字符串連接到str2中*/</p><p> setfillstyle(SOLID_FILL,color+3);</p><p> bar(2*width+width/2,height/2,15*width/2,3*hei
38、ght/2);</p><p> outtextxy(5*width,height,str2); /*顯示字符串*/</p><p><b> }</b></p><p> if(c=='+')</p><p><b> {</b></p><
39、p> num1=atof(str2); /*將第一個(gè)操作數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)*/</p><p> strcpy(str2,""); /*將str2清空*/</p><p> act=1; /*做計(jì)算加法標(biāo)志值*/
40、</p><p> setfillstyle(SOLID_FILL,color+3);</p><p> bar(2*width+width/2,height/2,15*width/2,3*height/2);</p><p> outtextxy(5*width,height,"0."); /*顯示字符串*/</p&g
41、t;<p><b> }</b></p><p> if(c=='-')</p><p><b> {</b></p><p> if(strcmp(str2,"")==0) /*如果str2為空,說明是負(fù)號(hào),而不是減號(hào)*/</p>
42、<p> flag=-1; /*設(shè)置負(fù)數(shù)標(biāo)志*/</p><p><b> else</b></p><p><b> {</b></p><p> num1=atof(str2); /*將第二個(gè)操作數(shù)轉(zhuǎn)
43、換為浮點(diǎn)數(shù)*/</p><p> strcpy(str2,""); /*將str2清空*/</p><p> act=2; /*做計(jì)算減法標(biāo)志值*/</p><p> setfillstyle(SOLID_FILL,color+3);&l
44、t;/p><p> bar(2*width+width/2,height/2,15*width/2,3*height/2); </p><p><b> /*畫矩形*/</b></p><p> outtextxy(5*width,height,"0."); /*顯示字符串*/</p><
45、p><b> }</b></p><p><b> }</b></p><p> if(c=='*')</p><p><b> {</b></p><p> num1=atof(str2); /*
46、將第二個(gè)操作數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)*/</p><p> strcpy(str2,""); /*將str2清空*/</p><p> act=3; /*做計(jì)算乘法標(biāo)志值*/</p><p> setfillstyle(SOLID_FI
47、LL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2);</p><p> outtextxy(5*width,height,"0."); /*顯示字符串*/</p><p><b> }</b></p><p> i
48、f(c=='/')</p><p><b> {</b></p><p> num1=atof(str2); /*將第二個(gè)操作數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)*/</p><p> strcpy(str2,""); /*將st
49、r2清空*/</p><p> act=4; /*做計(jì)算除法標(biāo)志值*/</p><p> setfillstyle(SOLID_FILL,color+3);</p><p> bar(2*width+width/2,height/2,15*width/2,3*height/2);</p&
50、gt;<p> outtextxy(5*width,height,"0."); /*顯示字符串*/</p><p><b> }</b></p><p> if(c=='^')</p><p><b> {</b></p><p
51、> num1=atof(str2); /*將第二個(gè)操作數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)*/</p><p> strcpy(str2,""); /*將str2清空*/</p><p> act=5;
52、 /*做計(jì)算乘方標(biāo)志值*/</p><p> setfillstyle(SOLID_FILL,color+3); /*設(shè)置用淡綠色實(shí)體填充*/</p><p> bar(2*width+width/2,height/2,15*width/2,3*height/2); </p><p><b> /*畫矩形*/</b>&
53、lt;/p><p> outtextxy(5*width,height,"0."); /*顯示字符串*/</p><p><b> }</b></p><p> if(c=='%')</p><p><b> {</b></p&g
54、t;<p> num1=atof(str2); /*將第二個(gè)操作數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)*/</p><p> strcpy(str2,""); /*將str2清空*/</p><p> act=6;
55、 /*做計(jì)算模運(yùn)算乘方標(biāo)志值*/</p><p> setfillstyle(SOLID_FILL,color+3); /*設(shè)置用淡綠色實(shí)體填充*/</p><p> bar(2*width+width/2,height/2,15*width/2,3*height/2); </p><p><b> /*畫矩形*
56、/</b></p><p> outtextxy(5*width,height,"0."); /*顯示字符串*/</p><p><b> }</b></p><p> if(c=='=')</p><p><b> {</b
57、></p><p> num2=atof(str2); /*將第二個(gè)操作數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)*/</p><p> switch(act) /*根據(jù)運(yùn)算符號(hào)計(jì)算*/</p><p><b> {</b></p>
58、<p> case 1:result=num1+num2;break; /*做加法*/</p><p> case 2:result=num1-num2;break; /*做減法*/</p><p> case 3:result=num1*num2;break; /*做乘法*/</p>
59、;<p> case 4:result=num1/num2;break; /*做除法*/</p><p> case 5:result=pow(num1,num2);break; /*做x的y次方*/</p><p> case 6:result=fmod(num1,num2);break; /*做模運(yùn)算*/<
60、;/p><p><b> }</b></p><p> setfillstyle(SOLID_FILL,color+3); /*設(shè)置用淡綠色實(shí)體填充*/</p><p> bar(2*width+width/2,height/2,15*width/2,3*height/2); /*覆蓋結(jié)果區(qū)*/</p>&l
61、t;p> sprintf(temp,"%f",result); /*將結(jié)果保存到temp中*/</p><p> outtextxy(5*width,height,temp); /*顯示結(jié)果*/</p><p><b> }</b></p><p> i
62、f(c=='c')</p><p><b> {</b></p><p> num1=0; /*將兩個(gè)操作數(shù)復(fù)位0,符號(hào)標(biāo)志為1*/</p><p><b> num2=0;</b></p><p><b>
63、; flag=1;</b></p><p> strcpy(str2,""); /*將str2清空*/</p><p> setfillstyle(SOLID_FILL,color+3); /*設(shè)置用淡綠色實(shí)體填充*/</p><p> bar(
64、2*width+width/2,height/2,15*width/2,3*height/2); /*覆蓋結(jié)果區(qū)*/</p><p> outtextxy(5*width,height,"0."); /*顯示字符串*/</p><p><b> }</b></p><p> if(c==
65、'Q')exit(0); /*如果選擇了q回車,結(jié)束計(jì)算程序*/</p><p><b> }</b></p><p> putimage(x,y,rar,XOR_PUT); /*在退出之前消去光標(biāo)箭頭*/</p><p> re
66、turn; /*返回*/</p><p><b> }</b></p><p><b> /*窗口函數(shù)*/</b></p><p> void mwindow( char *header )</p><p>
67、<b> {</b></p><p> int height;</p><p> cleardevice(); /* 清除圖形屏幕*/</p><p> setcolor( MaxColors - 1 ); /* 設(shè)置當(dāng)前顏色為白色*/</p
68、><p> setviewport( 20, 20, MaxX/2, MaxY/2, 1 ); /* 設(shè)置視口大小*/</p><p> height = textheight( "H" ); /* 讀取基本文本大小*/</p><p> settextstyle( DEFAULT_FONT
69、, HORIZ_DIR, 1 ); /*設(shè)置文本樣式*/</p><p> settextjustify( CENTER_TEXT, TOP_TEXT ); /*設(shè)置字符排列方式*/</p><p> outtextxy( MaxX/4, 2, header ); /*輸出標(biāo)題*/</p><p>
70、; setviewport( 20,20+height+4, MaxX/2+4, MaxY/2+20, 1 ); /*設(shè)置視口大小*/</p><p> drawboder(); /*畫邊框*/</p><p><b> }</b></p><p> void
71、drawboder(void) /*畫邊框*/</p><p><b> {</b></p><p> struct viewporttype vp; /*定義視口類型變量*/</p><p> setcolor( MaxCo
72、lors - 1 ); /*設(shè)置當(dāng)前顏色為白色*/</p><p> setlinestyle( SOLID_LINE, 0, NORM_WIDTH ); /*設(shè)置畫線方式*/</p><p> getviewsettings( &vp ); /*將當(dāng)前視口信息裝入vp所指的結(jié)構(gòu)中*/</p&g
73、t;<p> rectangle( 0, 0, vp.right-vp.left, vp.bottom-vp.top ); /*畫矩形邊框*/</p><p><b> }</b></p><p> /*設(shè)計(jì)鼠標(biāo)圖形函數(shù)*/</p><p> int arrow()</p><p><b>
74、; {</b></p><p><b> int size;</b></p><p> int raw[]={4,4,4,8,6,8,14,16,16,16,8,6,8,4,4,4}; /*定義多邊形坐標(biāo)*/</p><p> setfillstyle(SOLID_FILL,2);
75、/*設(shè)置填充模式*/</p><p> fillpoly(8,raw); /*畫出一光標(biāo)箭頭*/</p><p> size=imagesize(4,4,16,16); /*測(cè)試圖象大小*/</p><p> rar=malloc(size);
76、 /*分配內(nèi)存區(qū)域*/</p><p> getimage(4,4,16,16,rar); /*存放光標(biāo)箭頭圖象*/</p><p> putimage(4,4,rar,XOR_PUT); /*消去光標(biāo)箭頭圖象*/</p><
77、;p><b> return 0;</b></p><p><b> }</b></p><p><b> /*按鍵函數(shù)*/</b></p><p> int specialkey(void)</p><p><b> {</b></
78、p><p><b> int key;</b></p><p> while(bioskey(1)==0); /*等待鍵盤輸入*/</p><p> key=bioskey(0); /*鍵盤輸入*/</p><p
79、> key=key&0xff? key&0xff:key>>8; /*只取特殊鍵的掃描值,其余為0*/</p><p> return(key); /*返回鍵值*/</p><p><b> }</b></p><
80、p><b> 七:設(shè)計(jì)自評(píng):</b></p><p><b> 1.設(shè)計(jì)優(yōu)點(diǎn):</b></p><p> 本程序簡(jiǎn)單明了,應(yīng)用方便,運(yùn)用了簡(jiǎn)單的C語言,達(dá)到了進(jìn)行簡(jiǎn)單實(shí)數(shù)運(yùn)算的目的,該計(jì)算器可以顯示15位數(shù)字,遠(yuǎn)遠(yuǎn)超過常用的簡(jiǎn)單計(jì)算器,而且該計(jì)算器形象生動(dòng),令人賞心悅目。</p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語言)課程設(shè)計(jì)--尋寶游戲
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語言)課程設(shè)計(jì)--簡(jiǎn)單潛艇大戰(zhàn)
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語言)課程設(shè)計(jì)--模擬銀行打印
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語言)課程設(shè)計(jì)---用c語言描繪玫瑰花
- 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語言)課程設(shè)計(jì)--花店經(jīng)營管理系統(tǒng)
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語言)課程設(shè)計(jì)--小蟲子挖隧道
- 計(jì)算機(jī)技術(shù)基礎(chǔ)(c語言)課程設(shè)計(jì)---簡(jiǎn)單的彈球得分游戲
- 課程設(shè)計(jì)-計(jì)算機(jī)技術(shù)基礎(chǔ)(c語言)小蟲子挖隧道設(shè)計(jì)
- c語言課程設(shè)計(jì)--計(jì)算器
- c語言課程設(shè)計(jì)--計(jì)算器
- 計(jì)算機(jī)軟件技術(shù)基礎(chǔ)課程設(shè)計(jì)報(bào)告-計(jì)算器課程設(shè)計(jì)
- c語言計(jì)算器的編寫課程設(shè)計(jì)
- 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)---黑白棋
- 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)---解救人質(zhì)游戲
- 計(jì)算機(jī)單片機(jī)設(shè)計(jì)課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- c語言簡(jiǎn)單計(jì)算器的編寫課程設(shè)計(jì)
- c語言課程設(shè)計(jì)---計(jì)算機(jī)軟件
- 計(jì)算機(jī)c語言課程設(shè)計(jì)--鼠標(biāo)控制
- 計(jì)算機(jī)技術(shù)基礎(chǔ)課程設(shè)計(jì)---路邊吃數(shù)游戲
評(píng)論
0/150
提交評(píng)論