版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目 錄</b></p><p><b> 1 前言2</b></p><p><b> 2 需求分析2</b></p><p><b> 2.1要求2</b></p><p><b> 2.2任務(wù)2&
2、lt;/b></p><p><b> 2.3運(yùn)行環(huán)境2</b></p><p><b> 2.4開發(fā)工具2</b></p><p><b> 3 概要設(shè)計(jì)2</b></p><p> 3.1系統(tǒng)流程圖3</p><p> 3.2
3、查詢函數(shù)流程圖4</p><p><b> 4 詳細(xì)設(shè)計(jì)8</b></p><p> 4.1分析和設(shè)計(jì)8</p><p> 4.2具體代碼實(shí)現(xiàn)9</p><p> 5 課程設(shè)計(jì)總結(jié)25</p><p><b> 參考文獻(xiàn)25</b></p>
4、<p><b> 致 謝26</b></p><p><b> 1 前言</b></p><p> 編寫一個(gè)程序來實(shí)現(xiàn)算術(shù)計(jì)算器。通過結(jié)構(gòu)體數(shù)組和共用體數(shù)組來存放輸入的每一數(shù)字或運(yùn)算符號(hào)的記錄(包括1、2、3等數(shù)字,+、--、*、等運(yùn)算符號(hào)),然后將其信息存入文件中。輸入一個(gè)算術(shù)計(jì)算式,就在屏幕上顯示結(jié)果。</p>
5、;<p><b> 2 需求分析</b></p><p><b> 2.1要求</b></p><p> (1)用C語言實(shí)現(xiàn)程序設(shè)計(jì);</p><p> ?。?)利用結(jié)構(gòu)體、共用體進(jìn)行相關(guān)信息處理;</p><p> ?。?)畫出查詢模塊的流程圖;</p><
6、p> (4)系統(tǒng)的各個(gè)功能模塊要求用函數(shù)的形式實(shí)現(xiàn);</p><p> ?。?)界面友好(良好的人機(jī)互交),程序要有注釋。</p><p><b> 2.2任務(wù)</b></p><p> ?。?)定義一個(gè)結(jié)構(gòu)體類型數(shù)組,輸入0~9及+、--、*等符號(hào)的信息,將其信息存入文件中;</p><p> ?。?)輸入簡(jiǎn)
7、單的加減乘除算術(shù)計(jì)算式,并在屏幕上顯示計(jì)算結(jié)果;</p><p> (3)畫出部分模塊的流程圖;</p><p><b> ?。?)編寫代碼;</b></p><p> ?。?)程序分析與調(diào)試。</p><p><b> 2.3運(yùn)行環(huán)境</b></p><p> ?。?)
8、WINDOWS2000/XP系統(tǒng)</p><p> ?。?)TurboC2.0編譯環(huán)境</p><p><b> 2.4開發(fā)工具</b></p><p><b> C語言</b></p><p><b> 3 概要設(shè)計(jì)</b></p><p>&l
9、t;b> 3.1系統(tǒng)流程圖</b></p><p><b> 如圖3.1所示。 </b></p><p> 圖3.1 系統(tǒng)流程圖</p><p><b> N</b></p><p><b> Y</b></p><p>
10、 3.2查詢函數(shù)流程圖</p><p><b> 4 詳細(xì)設(shè)計(jì)</b></p><p><b> 4.1分析和設(shè)計(jì)</b></p><p> 在程序的開頭部分定義了結(jié)構(gòu)替類型,用來存放按鈕信息</p><p> struct s_button /*按鍵的結(jié)構(gòu)體*/</p>
11、<p><b> {</b></p><p> int sx,sy,ex,ey;</p><p> char *head;</p><p> int press;</p><p> }button[17]; /*圖表按鍵數(shù)*/</p><p> char far *vid
12、_mem;</p><p> static int tx=32,ty=3; /*靜態(tài)變量*/</p><p> float v1=0.0,v2=0.0;</p><p> 用輸入函數(shù)input()來輸入按鍵放在s_button數(shù)組中。</p><p> 再定義結(jié)構(gòu)體棧:struct stack /*結(jié)構(gòu)體棧*/</p>
13、;<p><b> {</b></p><p> char s[20];</p><p> int tos,top;</p><p><b> }stack;</b></p><p><b> char tag;</b></p><p
14、> 用于數(shù)據(jù)的輸入和存放。</p><p> 進(jìn)而定義了表格窗口函數(shù),窗口畫線函數(shù)和邊界線函數(shù):</p><p> int form_win() /*表格窗口初始化*/</p><p><b> {</b></p><p> textbackground(WHITE); /*窗口背景顏色*/<
15、/p><p> clrscr(); /*清零*/</p><p> draw_win(); /*窗口畫線*/</p><p> active_button(); /*窗口按鍵*/</p><p> out_text_win(); /*輸出文本窗口*/</p><p> window_xy(32,3);
16、 /*計(jì)算結(jié)果窗口*</p><p> draw_win() /*邊框畫線窗口*/</p><p><b> … … …</b></p><p> draw_border(int sx,int sy,int ex,int ey,int attrib) /*邊界線函數(shù)*/</p><p><b>
17、 … … …</b></p><p> 通過這些為形成整個(gè)界面提供了大的前提。</p><p> 接著通過“write_char()”,“active_button()”,“ write_top()”,“make_button()”,“out_text_win()”, “get_key()” ,“window_xy()”等一系列的函數(shù),使得計(jì)算器的整個(gè)外型呈現(xiàn)了出來。&l
18、t;/p><p> 為了輸入方便一些,就接著定義的小鍵盤的輸入函數(shù):key_choice() 把小鍵盤數(shù)字鍵和運(yùn)算鍵的鍵值通過“get_data(bx,by);send1()”和計(jì)算器界面按鍵連接起來,使得通過小鍵盤相應(yīng)的鍵就能獲得計(jì)算器相應(yīng)的值。</p><p> 下面就定義了文本光標(biāo)函數(shù):text_clo() /*文本光標(biāo)*/</p><p><b>
19、; {</b></p><p> tx--; /*光標(biāo)向左移*/</p><p> if(tx<32)tx++; /*backspace時(shí)X不能小于32*/</p><p> put_char(tx,ty,'');</p><p> } 當(dāng)按“〈-”或:”backspace”時(shí)光標(biāo)隨t
20、x減小而減小。</p><p> 再就是計(jì)算器運(yùn)算的主程序:</p><p> put_string() /*計(jì)算機(jī)運(yùn)算函數(shù)*/</p><p><b> {</b></p><p> float result;</p><p><b> tx=32;</b>&l
21、t;/p><p> switch(tag) /*根據(jù)運(yùn)算符號(hào)計(jì)算*/</p><p><b> {</b></p><p> case '+': result=v1+v2;break; /*做加法*/</p><p> case '-':result=v1-v2;break; /
22、*做減法*/</p><p> case'*':result=v1*v2;break; /*做乘法*/</p><p> case '/': result=v1/v2;break; /*做除法*/</p><p> default :result=v1; /*若不計(jì)算輸出0*/</p><p>&
23、lt;b> }</b></p><p> sprintf(stack.s,"%.3f",result); /*輸出結(jié)果保留小數(shù)點(diǎn)后三位*/</p><p> 通過switch來實(shí)現(xiàn)相應(yīng)的計(jì)算,輸出保留三位小數(shù)的結(jié)果。</p><p><b> … … …</b></p><p
24、> 最后mian()函數(shù):</p><p><b> main()</b></p><p><b> {</b></p><p> init_stack();</p><p> vid_mem=(char far *)0xb;</p><p> if(!fo
25、rm_win())</p><p><b> {</b></p><p> printf("can't form the device,press any key to leave!...");</p><p><b> getch();</b></p><p>&
26、lt;b> exit();</b></p><p><b> }</b></p><p><b> menu();</b></p><p> calculator();</p><p><b> }</b></p><p>
27、 通過調(diào)用上面定義的函數(shù)實(shí)現(xiàn)了計(jì)算器整個(gè)功能。</p><p><b> 4.2具體代碼實(shí)現(xiàn)</b></p><p><b> 源程序代碼:</b></p><p> #include"dos.h"</p><p> #include"conio.h"
28、</p><p> #include"string.h"</p><p> #include"stdio.h"</p><p> #define normbut_bor 0x80</p><p> #define presbut_but 0xb8</p><p> #d
29、efine normnum_but 0x8e</p><p> #define presnum_but 0xb9</p><p> #define spebut_char 0x2c</p><p> #define win_color 0xf2</p><p> #define win_char 0xfb</p>
30、<p> struct s_button /*按鍵的結(jié)構(gòu)體*/</p><p><b> {</b></p><p> int sx,sy,ex,ey;</p><p> char *head;</p><p> int press;</p><p> }button
31、[17]; /*圖表按鍵數(shù)*/</p><p> char far *vid_mem;</p><p> static int tx=32,ty=3; /*靜態(tài)變量*/</p><p> float v1=0.0,v2=0.0;</p><p> struct stack /*結(jié)構(gòu)體棧*/</p><p&
32、gt;<b> {</b></p><p> char s[20];</p><p> int tos,top;</p><p><b> }stack;</b></p><p><b> char tag;</b></p><p> ini
33、t_stack() /*初始化棧*/</p><p><b> {</b></p><p> stack.tos=0;</p><p> stack.top=0;</p><p> stack.s[stack.tos]='\0';</p><p><b>
34、}</b></p><p> push(char ch) /*入棧*/</p><p><b> {</b></p><p> stack.s[stack.tos++]=ch;</p><p> stack.s[stack.tos]='\0';</p><p&g
35、t;<b> }</b></p><p> pop() /*取棧數(shù)據(jù)通過*/</p><p><b> {</b></p><p> if(stack.tos>0)</p><p> stack.s[--stack.tos]='\0';</p>&
36、lt;p><b> }</b></p><p> clear_stack() /*清空棧*/</p><p><b> {</b></p><p> stack.tos=0;</p><p> stack.top=0;</p><p> stack.s[
37、stack.tos]='\0';</p><p><b> }</b></p><p> int form_win() /*表格窗口初始化*/</p><p><b> {</b></p><p> textbackground(WHITE); /*窗口背景顏色*/&l
38、t;/p><p> clrscr(); /*清零*/</p><p> draw_win(); /*窗口畫線*/</p><p> active_button(); /*窗口按鍵*/</p><p> out_text_win(); /*輸出文本窗口*/</p><p> window_xy(32,3
39、); /*計(jì)算結(jié)果窗口*/</p><p><b> }</b></p><p> draw_win() /*邊框畫線窗口*/</p><p><b> {</b></p><p><b> int i;</b></p><p> cha
40、r far *t;</p><p> char *s="This is a simple calculator!"; /*頂端邊框輸出的字符*/</p><p> draw_border(win_color); /*邊框的位置和顏色*/</p><p> i=(79-30-strlen(s))/2+30;</p>&l
41、t;p> t=vid_mem+i*2;</p><p><b> for(;*s;)</b></p><p><b> {</b></p><p> *t++=*s++;</p><p> *t++=win_color; /*頂端字體顏色*/</p><p>
42、;<b> }</b></p><p><b> }</b></p><p> draw_border(int sx,int sy,int ex,int ey,int attrib) /*邊界線函數(shù)*/</p><p><b> {</b></p><p> ch
43、ar far *t,far *v;</p><p><b> int i;</b></p><p> t=vid_mem;</p><p> for(i=sx+1;i<ex;i++)</p><p><b> {</b></p><p> v=t+sy*160
44、+i*2;</p><p> *v++=196; /*每一行上畫線確定為直線*/</p><p> *v=attrib;</p><p> v=t+ey*160+i*2;</p><p> *v++=196; /*每一行下畫線確定為直線*/</p><p> *v=attrib;</p>
45、<p><b> }</b></p><p> for(i=sy+1;i<ey;i++)</p><p><b> {</b></p><p> v=t+i*160+sx*2;</p><p> *v++=179; /*每一列左畫線確定為直線*/</p>&l
46、t;p> *v=attrib;</p><p> v=t+i*160+ex*2;</p><p> *v++=179; /*每一列由畫線確定為直線*/</p><p> *v=attrib;</p><p><b> }</b></p><p> write_char(sx,s
47、y,218,attrib);</p><p> write_char(ex,sy,191,attrib);</p><p> write_char(sx,ey,192,attrib);</p><p> write_char(ex,ey,217,attrib);</p><p><b> }</b></p&
48、gt;<p> write_char(int x,int y,char ch,int attrib) /*字符輸入函數(shù)*/</p><p><b> {</b></p><p> char far *v;</p><p> v=vid_mem;</p><p> v+=x*2+160*y;&l
49、t;/p><p><b> *v++=ch;</b></p><p> *v=attrib;</p><p><b> }</b></p><p> active_button()/*圖表按鈕設(shè)定函數(shù)*/</p><p><b> {</b><
50、;/p><p><b> int i;</b></p><p> make_button(,"1");/*每個(gè)鍵對(duì)應(yīng)的位置和數(shù)值*/</p><p> make_button(,"2");</p><p> make_button(,"3");</p&
51、gt;<p> make_button(,"+");</p><p> make_button(,"-");</p><p> make_button(4,"4");</p><p> make_button(4,"5");</p><p>
52、 make_button(4,"6");</p><p> make_button(4,"*");</p><p> make_button(4,"/");/*“/”的位置*/</p><p> make_button(17,"7");</p><p>
53、 make_button(17,"8");</p><p> make_button(17,"9");</p><p> make_button(17,"=");</p><p> make_button(17,"<-");</p><p> mak
54、e_button(20,"0");/*“0”的位置*/</p><p> make_button(20,"End");</p><p> for(i=0;i<17;i++)</p><p><b> {</b></p><p> draw_border(button[
55、i].sx,button[i].sy,button[i].ex,button[i].ey,normbut_bor);</p><p><b> }</b></p><p> for(i=0;i<17;i++)</p><p><b> {</b></p><p> write_top(
56、button[i].sx+1,button[i].sy+1,button[i].ex-1,button[i].head,normnum_but);</p><p><b> }</b></p><p><b> }</b></p><p> write_top(int x1,int y,int x2,char *s,
57、int attrib)</p><p><b> {</b></p><p> char far *v,far *t;</p><p><b> int i;</b></p><p> v=vid_mem;</p><p> for(i=x1;i<=x2;i+
58、+)</p><p><b> {</b></p><p> t=v+y*160+i*2;</p><p><b> *t++=' ';</b></p><p> *t=attrib;</p><p><b> }</b><
59、;/p><p> i=(x2-x1-strlen(s)+1)/2+x1;</p><p> t=v+160*y+i*2;</p><p><b> for(;*s;)</b></p><p><b> {</b></p><p> *t++=*s++;</p>
60、;<p> *t++=attrib;</p><p><b> }</b></p><p><b> }</b></p><p> make_button(int num,int sx,int sy,int ex,int ey,char *top)</p><p><b&
61、gt; {</b></p><p> button[num].sx=sx;</p><p> button[num].sy=sy;</p><p> button[num].ex=ex;</p><p> button[num].ey=ey;</p><p> button[num].head=
62、top;</p><p> button[num].press=0;</p><p><b> }</b></p><p> out_text_win() /*結(jié)果輸出窗口*/</p><p><b> {</b></p><p> draw_border(x7
63、f);</p><p> write_top(" ",0xff);</p><p><b> }</b></p><p> get_key() /*得到按鍵值*/</p><p><b> {</b></p><p> union inkey
64、 /*共用體*/</p><p><b> {</b></p><p> char ch[2];</p><p><b> int i;</b></p><p><b> }c;</b></p><p> c.i=bioskey(0);&l
65、t;/p><p> return(c.i);</p><p><b> }</b></p><p> window_xy(int x,int y)</p><p><b> {</b></p><p> union REGS r; /*定義聯(lián)合體*/</p&g
66、t;<p> r.h.ah=2; /*初始化*/</p><p><b> r.h.dh=y;</b></p><p><b> r.h.dl=x;</b></p><p><b> r.h.bh=0;</b></p><p> int86(0x10,
67、&r,&r); </p><p><b> }</b></p><p> key_choice() /*小鍵盤鍵的輸入函數(shù)*/</p><p><b> {</b></p><p> int ch,bx=0,by=0;/*起始停留鍵的位置*/</p><
68、;p><b> do</b></p><p><b> {</b></p><p> ch=get_key();</p><p> switch(ch)</p><p><b> {</b></p><p> case 0x4f31:r
69、es_but(bx,by);bx=0;by=0;get_data(bx,by);break;/*圖表鍵和小鍵盤的鍵對(duì)應(yīng),此處為1*/</p><p> case 0x5032:res_but(bx,by);bx=1;by=0;get_data(bx,by);break;/*2*/</p><p> case 0x5133:res_but(bx,by);bx=2;by=0;get_dat
70、a(bx,by);break;/*3*/</p><p> case 0x4b34:res_but(bx,by);bx=0;by=1;get_data(bx,by);break;/*4*/</p><p> case 0x4c35:res_but(bx,by);bx=1;by=1;get_data(bx,by);break;/*5*/</p><p> cas
71、e 0x4d36:res_but(bx,by);bx=2;by=1;get_data(bx,by);break;/*6*/</p><p> case 0x4737:res_but(bx,by);bx=0;by=2;get_data(bx,by);break;/*7*/</p><p> case 0x4838:res_but(bx,by);bx=1;by=2;get_data(bx,
72、by);break;/*8*/</p><p> case 0x4939:res_but(bx,by);bx=2;by=2;get_data(bx,by);break;/*9*/</p><p> case 0x5230:res_but(bx,by);bx=0;by=3;get_data(bx,by);break;/*0*/</p><p> case 0x4
73、e2b :res_but(bx,by);bx=3;by=0;get_data(bx,by);send1();break;/*加*/</p><p> case 0x4a2d :res_but(bx,by);bx=4;by=0;get_data(bx,by);send1();break;/*減*/</p><p> case 0x372a :res_but(bx,by);bx=3;by=
74、1;get_data(bx,by);send1();break;/*乘*/</p><p> case 0x352f:res_but(bx,by);bx=4;by=1;get_data(bx,by);send1();break;/*除*/</p><p> case 0x0d3d:res_but(bx,by);bx=3;by=2;get_data(bx,by);send2();<
75、/p><p> out_text_win();put_string();break;/*等于號(hào)*/</p><p> case 0x1c0d:res_but(bx,by);bx=2;by=4;get_data(bx,by);send2();</p><p> out_text_win();put_string();break;/* 回車鍵(相當(dāng)與等于號(hào)) */&l
76、t;/p><p> case 0x0e08:res_but(bx,by);bx=4;by=2;pop();text_clo();break; /*退格(backspace)*/</p><p> case 0x3920:res_but(bx,by);get_data(bx,by);ba_space(bx,by); break;/* 空格 */</p><p> c
77、ase 0x4f00:res_but(bx,by);bx=4;by=3;exit(1);break;/*結(jié)束(End)*/</p><p> case 0x4800:res_but(bx,by);by--;break;/* 上 */</p><p> case 0x4b00:res_but(bx,by);bx--;break;/* 左 */</p><p>
78、case 0x5000:res_but(bx,by);by++;break;/* 下 */</p><p> case 0x4d00:res_but(bx,by);bx++;break;/* 右 */</p><p><b> }</b></p><p> if(bx<0)bx=0; /* 只能在X0到4和Y在0到4內(nèi)選擇按鍵*
79、/</p><p> if(by<0)by=0;</p><p> if(by>4)by=4;</p><p> if(bx>4)bx=4; /* 只能在X0到4和Y在0到4內(nèi)選擇按鍵*/</p><p> select_but(bx,by);</p><p> }while(1);<
80、;/p><p><b> }</b></p><p> ba_space(int x,int y)</p><p><b> {</b></p><p><b> int num;</b></p><p><b> char ch;<
81、;/b></p><p><b> if(y>2)</b></p><p> if(x<2)num=15;</p><p> else num=16;</p><p> else num=x+5*y;</p><p> switch(num)</p>
82、<p><b> {</b></p><p> case 3:send1();break;</p><p> case 13:send2();out_text_win();put_string();break;</p><p> case 4:send1();break;</p><p> case
83、8:send1();break;</p><p> case 9:send1();break;</p><p> case 16:exit(1);break;/*圖表對(duì)應(yīng)的結(jié)束鍵*/</p><p> case 14:pop();text_clo();break;/*“〈—”對(duì)應(yīng)功能*/</p><p><b> defau
84、lt:;</b></p><p><b> }</b></p><p><b> }</b></p><p> text_clo() /*文本光標(biāo)*/</p><p><b> {</b></p><p> tx--; /*
85、光標(biāo)向左移*/</p><p> if(tx<32)tx++; /*backspace時(shí)X不能小于32*/</p><p> put_char(tx,ty,'');</p><p><b> }</b></p><p> put_string() /*計(jì)算機(jī)運(yùn)算函數(shù)*/</p&g
86、t;<p><b> {</b></p><p> float result;</p><p><b> tx=32;</b></p><p> switch(tag) /*根據(jù)運(yùn)算符號(hào)計(jì)算*/</p><p><b> {</b></p>
87、<p> case '+': result=v1+v2;break; /*做加法*/</p><p> case '-':result=v1-v2;break; /*做減法*/</p><p> case'*':result=v1*v2;break; /*做乘法*/</p><p> cas
88、e '/': result=v1/v2;break; /*做除法*/</p><p> default :result=v1; /*若不計(jì)算輸出0*/</p><p><b> }</b></p><p> sprintf(stack.s,"%.3f",result); /*輸出結(jié)果保留小數(shù)點(diǎn)
89、后三位*/</p><p> while(stack.s[stack.top])</p><p><b> {</b></p><p> put_char(tx,ty,stack.s[stack.top++]);</p><p><b> tx++;</b></p><p
90、><b> }</b></p><p><b> }</b></p><p> send1() /*向服務(wù)器發(fā)送請(qǐng)求*/</p><p><b> {</b></p><p> sscanf(stack.s,"%f",&v1);
91、/*輸入并儲(chǔ)存在V1中*/</p><p> clear_stack(); /*清除棧*/</p><p><b> }</b></p><p> send2() /*向服務(wù)器發(fā)送信息*/</p><p><b> {</b></p><p> sscanf(s
92、tack.s,"%f",&v2);</p><p> clear_stack(); /*清除棧*/</p><p><b> }</b></p><p> get_data(int x,int y) /*鍵的移動(dòng)和對(duì)應(yīng)數(shù)值關(guān)系*/</p><p><b> {</
93、b></p><p><b> int num;</b></p><p><b> char ch;</b></p><p><b> if(y>2)</b></p><p> if(x<2)num=15;</p><p>
94、else num=16; /*使得第3行只能取的0鍵和End鍵*/</p><p> else num=x+5*y; /*其余各鍵坐標(biāo)和原來設(shè)定的值的關(guān)系*/</p><p> switch(num) /*使得圖表面鍵和實(shí)際鍵一致*/</p><p><b> {</b></p><p> cas
95、e 0:ch='1';break; /*圖表面1鍵和實(shí)際1一致*/</p><p> case 1:ch='2';break;</p><p> case 2:ch='3';break;</p><p> case 3:ch='+';break;</p><p> c
96、ase 4:ch='-';break;</p><p> case 5:ch='4';break;</p><p> case 6:ch='5';break;</p><p> case 7:ch='6';break;</p><p> case 8:ch='*&
97、#39;;break;</p><p> case 9:ch='/';break;</p><p> case 10:ch='7';break;</p><p> case 11:ch='8';break;</p><p> case 12:ch='9';break;&l
98、t;/p><p> case 13:ch='=';break;</p><p> case 15:ch='0';break; /*圖表面0鍵和實(shí)際0一致*/</p><p> default:ch=1;</p><p><b> }</b></p><p>
99、;<b> if(ch!=1)</b></p><p><b> {</b></p><p> put_char(tx,ty,ch);</p><p> if(ch!='+'&&ch!='-'&&ch!='*'&&ch!
100、='/')</p><p><b> push(ch);</b></p><p> else tag=ch;</p><p><b> tx++;</b></p><p><b> }</b></p><p><b>
101、 }</b></p><p> select_but(int x,int y) /*選擇按鈕*/</p><p><b> {</b></p><p><b> int num;</b></p><p><b> if(y>2)</b></p
102、><p> if(x<2)num=15;</p><p> else num=16;</p><p> else num=x+5*y;</p><p> draw_border(button[num].sx,button[num].sy,button[num].ex,button[num].ey,presbut_but);<
103、;/p><p> write_top(button[num].sx+1,button[num].sy+1,button[num].ex-1,button[num].head,presnum_but);</p><p><b> }</b></p><p> res_but(int x,int y)</p><p>&l
104、t;b> {</b></p><p><b> int num;</b></p><p><b> if(y>2)</b></p><p> if(x<2)num=15;</p><p> else num=16;</p><p>
105、 else num=x+5*y;</p><p> if(num<16)</p><p><b> {</b></p><p> draw_border(button[num].sx,button[num].sy,button[num].ex,button[num].ey,normbut_bor);</p><
106、p> write_top(button[num].sx+1,button[num].sy+1,button[num].ex-1,button[num].head,normnum_but);</p><p><b> }</b></p><p><b> else</b></p><p><b> {
107、</b></p><p> draw_border(button[num].sx,button[num].sy,button[num].ex,button[num].ey,normbut_bor);</p><p> write_top(button[num].sx+1,button[num].sy+1,button[num].ex-1,button[num].head,s
108、pebut_char);</p><p><b> }</b></p><p><b> }</b></p><p> put_char(int x,int y,char ch) /*計(jì)算窗口的輸入確定函數(shù)*/</p><p><b> {</b></p>
109、;<p> char far *v;</p><p> v=vid_mem;</p><p> v+=x*2+y*160; /*光標(biāo)的位置*/</p><p> *v++=ch; /*輸入字符隨光標(biāo)的推進(jìn)*/</p><p> *v=0xf0; /*輸入數(shù)字的顏色*/</p><p>
110、 window_xy(x,y); /*光標(biāo)在窗口坐標(biāo)*/</p><p><b> }</b></p><p> calculator() /*計(jì)算器構(gòu)成的函數(shù)*/</p><p><b> {</b></p><p><b> int a,b;</b></
111、p><p> key_choice(); /*鍵選擇函數(shù)*/</p><p><b> }</b></p><p> write_text(int x,int y,char *s,int attrib) /*文本輸入函數(shù)*/</p><p><b> {</b></p><
112、;p><b> char ch;</b></p><p> int lx=x,ly=y;</p><p><b> for(;*s;)</b></p><p><b> {</b></p><p><b> ch=*s++;</b><
113、/p><p> switch(ch)</p><p><b> {</b></p><p> case '\n':lx=x;ly++;break;</p><p> default:write_char(lx++,ly,ch,attrib);</p><p><b>
114、 }</b></p><p><b> }</b></p><p><b> }</b></p><p> menu() /*左邊窗口函數(shù)*/</p><p> { char *j="fang xiang jian\nyi dong!"</p&
115、gt;<p> "\nkong ge jian \nque ding!\nke yong xiao jian pan \nshu ru!\nyong xiao chuang kou\nxian shi "; /*左邊框中顯示的字符*/</p><p> char *s="Made by 08 xin ben san ban\nChenFeiMin\nChenXi
116、angYang\nChenChunLin\nChenFuJu"</p><p> "\nConductor:Cheng YaHui";</p><p> draw_border(win_color); /*左邊框的位置和顏色*/</p><p> write_top("Introduction",0xf9);
117、/*INTRODCTION的位置和顏色*/</p><p> write_text(2,5,j,0x79); /*輸入字符的位置和顏色*/</p><p> write_text(2,17,s,0x79); /*輸入字符的位置和顏色*/</p><p><b> }</b></p><p><b>
118、 main()</b></p><p><b> {</b></p><p> init_stack();</p><p> vid_mem=(char far *)0xb;</p><p> if(!form_win())</p><p><b> {</b
119、></p><p> printf("can't form the device,press any key to leave!...");/*如果不能顯示見面窗口,按任意退出。*/</p><p><b> getch();</b></p><p><b> exit();</b>
120、</p><p><b> }</b></p><p><b> menu();</b></p><p> calculator();</p><p><b> }</b></p><p><b> </b></p
121、><p><b> 5 課程設(shè)計(jì)總結(jié)</b></p><p> 通過這次課程設(shè)計(jì)我對(duì)C語言的神奇功能更加佩服(只是一個(gè)程序運(yùn)行后卻可以顯示出一個(gè)計(jì)算器來,并且畫面比較唯美,且能進(jìn)行計(jì)算),我默默在心里發(fā)誓一定要把C語言學(xué)好,而且將來我還要想學(xué)習(xí)C++語言,熟練的掌握編程的方法。本次課程設(shè)計(jì),我設(shè)計(jì)的是一個(gè)算術(shù)計(jì)算器,本程序若完全靠現(xiàn)有的知識(shí),是很難編寫出來的,幸虧有我
122、的指導(dǎo)老師**老師的耐心指導(dǎo),我才能順利完成。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]張福祥. C語言程序設(shè)計(jì)[M]. 遼寧大學(xué)出版社,2008.1</p><p> [2] 張福祥,王萌.C語言程序設(shè)計(jì)習(xí)題解答與實(shí)驗(yàn)實(shí)訓(xùn)[M].沈陽:遼寧大學(xué)出版社,2008.</p><p> [
123、3] 牛莉,劉遠(yuǎn)軍等.計(jì)算機(jī)等級(jí)考試輔導(dǎo)教程[M].北京:中國(guó)鐵道出版社,2008.</p><p> 致 謝 </p><p> 這次課程設(shè)計(jì)讓我學(xué)到了很多,從編程中可以看出編寫一個(gè)程序的是一件很難的事。但我有幸得到成婭輝老師的指導(dǎo),使我能夠順利完成我的課程設(shè)計(jì),我同時(shí)也要感謝其他給予我?guī)椭耐瑢W(xué)。</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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++課程設(shè)計(jì)--計(jì)算器設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)報(bào)告---計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算器c++課程設(shè)計(jì)
- c++課程設(shè)計(jì)——計(jì)算器
- c++簡(jiǎn)單計(jì)算器課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)報(bào)告--簡(jiǎn)單計(jì)算器
- c++課程設(shè)計(jì)報(bào)告--復(fù)數(shù)計(jì)算器
- c++課程設(shè)計(jì)報(bào)告--小型特殊計(jì)算器
- c++課程設(shè)計(jì)--復(fù)數(shù)計(jì)算器
- c++課程設(shè)計(jì)報(bào)告--小型特殊計(jì)算器
- c++課程設(shè)計(jì)報(bào)告--小型特殊計(jì)算器
- c++課程設(shè)計(jì)--分?jǐn)?shù)計(jì)算器
- c++課程設(shè)計(jì)--簡(jiǎn)單計(jì)算器
- c++計(jì)算器課程設(shè)計(jì)--計(jì)算器程序設(shè)計(jì)
- c++課程設(shè)計(jì)--簡(jiǎn)單計(jì)算器
- c++課程設(shè)計(jì)---分?jǐn)?shù)計(jì)算器
- c++課程設(shè)計(jì)---分?jǐn)?shù)計(jì)算器
- c語言課程設(shè)計(jì)--計(jì)算器
- c語言課程設(shè)計(jì)--計(jì)算器
- c++課程設(shè)計(jì)報(bào)告--小型特殊計(jì)算器 (2)
評(píng)論
0/150
提交評(píng)論