c++語言畢業(yè)課程設(shè)計(jì)報(bào)告正文(計(jì)算器的實(shí)現(xiàn))_第1頁(yè)
已閱讀1頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論