C++語言課程設(shè)計報告范例(計算器的實現(xiàn)).doc_第1頁
C++語言課程設(shè)計報告范例(計算器的實現(xiàn)).doc_第2頁
C++語言課程設(shè)計報告范例(計算器的實現(xiàn)).doc_第3頁
C++語言課程設(shè)計報告范例(計算器的實現(xiàn)).doc_第4頁
C++語言課程設(shè)計報告范例(計算器的實現(xiàn)).doc_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

海南大學(xué)三亞學(xué)院C+面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告選題名稱: 系(院): 專 業(yè): 班 級: 姓 名: 學(xué) 號: 1071308128 指導(dǎo)教師: 學(xué)年學(xué)期: 2009 2010 學(xué)年 第 2 學(xué)期2010年 7月 2 日目 錄1 前言22 需求分析22.1要求22.2任務(wù)22.3運行環(huán)境22.4開發(fā)工具23 概要設(shè)計23.1系統(tǒng)流程圖33.2查詢函數(shù)流程圖44 詳細設(shè)計84.1分析和設(shè)計84.2具體代碼實現(xiàn)95 課程設(shè)計總結(jié)25參考文獻25致 謝261 前言編寫一個程序來實現(xiàn)算術(shù)計算器。通過結(jié)構(gòu)體數(shù)組和共用體數(shù)組來存放輸入的每一數(shù)字或運算符號的記錄(包括1、2、3等數(shù)字,+、-、*、等運算符號),然后將其信息存入文件中。輸入一個算術(shù)計算式,就在屏幕上顯示結(jié)果。2 需求分析2.1要求(1)用C語言實現(xiàn)程序設(shè)計;(2)利用結(jié)構(gòu)體、共用體進行相關(guān)信息處理;(3)畫出查詢模塊的流程圖;(4)系統(tǒng)的各個功能模塊要求用函數(shù)的形式實現(xiàn);(5)界面友好(良好的人機互交),程序要有注釋。2.2任務(wù)(1)定義一個結(jié)構(gòu)體類型數(shù)組,輸入09及+、-、*等符號的信息,將其信息存入文件中;(2)輸入簡單的加減乘除算術(shù)計算式,并在屏幕上顯示計算結(jié)果;(3)畫出部分模塊的流程圖;(4)編寫代碼;(5)程序分析與調(diào)試。2.3運行環(huán)境(1)WINDOWS2000/XP系統(tǒng)(2)TurboC2.0編譯環(huán)境2.4開發(fā)工具C語言3 概要設(shè)計3.1系統(tǒng)流程圖如圖3.1所示。 圖3.1 系統(tǒng)流程圖開始調(diào)用輸入函數(shù)init_stack();if(!form_win() N Yprintf(cant form the device,press any key to leave!.);調(diào)用左窗口函數(shù)menu();再調(diào)用計算器構(gòu)成函數(shù) calculator();結(jié)束3.2查詢函數(shù)流程圖4 詳細設(shè)計4.1分析和設(shè)計在程序的開頭部分定義了結(jié)構(gòu)替類型,用來存放按鈕信息struct s_button /*按鍵的結(jié)構(gòu)體*/int sx,sy,ex,ey; char *head; int press;button17; /*圖表按鍵數(shù)*/char far *vid_mem;static int tx=32,ty=3; /*靜態(tài)變量*/float v1=0.0,v2=0.0;用輸入函數(shù)input()來輸入按鍵放在s_button數(shù)組中。再定義結(jié)構(gòu)體棧:struct stack /*結(jié)構(gòu)體棧*/ char s20; int tos,top;stack;char tag;用于數(shù)據(jù)的輸入和存放。進而定義了表格窗口函數(shù),窗口畫線函數(shù)和邊界線函數(shù):int form_win() /*表格窗口初始化*/textbackground(WHITE); /*窗口背景顏色*/ clrscr(); /*清零*/ draw_win(); /*窗口畫線*/ active_button(); /*窗口按鍵*/ out_text_win(); /*輸出文本窗口*/window_xy(32,3); /*計算結(jié)果窗口*draw_win() /*邊框畫線窗口*/ draw_border(int sx,int sy,int ex,int ey,int attrib) /*邊界線函數(shù)*/ 通過這些為形成整個界面提供了大的前提。接著通過“write_char()”,“active_button()”,“ write_top()”,“make_button()”,“out_text_win()”, “get_key()” ,“window_xy()”等一系列的函數(shù),使得計算器的整個外型呈現(xiàn)了出來。為了輸入方便一些,就接著定義的小鍵盤的輸入函數(shù):key_choice() 把小鍵盤數(shù)字鍵和運算鍵的鍵值通過“get_data(bx,by);send1()”和計算器界面按鍵連接起來,使得通過小鍵盤相應(yīng)的鍵就能獲得計算器相應(yīng)的值。下面就定義了文本光標函數(shù):text_clo() /*文本光標*/ tx-; /*光標向左移*/ if(tx0) stack.s-stack.tos=0;clear_stack() /*清空棧*/ stack.tos=0; stack.top=0; stack.sstack.tos=0;int form_win() /*表格窗口初始化*/ textbackground(WHITE); /*窗口背景顏色*/ clrscr(); /*清零*/ draw_win(); /*窗口畫線*/ active_button(); /*窗口按鍵*/ out_text_win(); /*輸出文本窗口*/ window_xy(32,3); /*計算結(jié)果窗口*/draw_win() /*邊框畫線窗口*/ int i; char far *t; char *s=This is a simple calculator!; /*頂端邊框輸出的字符*/ draw_border(30,0,79,24,win_color); /*邊框的位置和顏色*/ i=(79-30-strlen(s)/2+30; t=vid_mem+i*2; for(;*s;) *t+=*s+;*t+=win_color; /*頂端字體顏色*/ draw_border(int sx,int sy,int ex,int ey,int attrib) /*邊界線函數(shù)*/ char far *t,far *v; int i; t=vid_mem; for(i=sx+1;iex;i+) v=t+sy*160+i*2;*v+=196; /*每一行上畫線確定為直線*/ *v=attrib; v=t+ey*160+i*2;*v+=196; /*每一行下畫線確定為直線*/ *v=attrib; for(i=sy+1;iey;i+) v=t+i*160+sx*2; *v+=179; /*每一列左畫線確定為直線*/ *v=attrib; v=t+i*160+ex*2; *v+=179; /*每一列由畫線確定為直線*/ *v=attrib; write_char(sx,sy,218,attrib); write_char(ex,sy,191,attrib); write_char(sx,ey,192,attrib); write_char(ex,ey,217,attrib);write_char(int x,int y,char ch,int attrib) /*字符輸入函數(shù)*/ char far *v; v=vid_mem; v+=x*2+160*y; *v+=ch; *v=attrib;active_button()/*圖表按鈕設(shè)定函數(shù)*/ int i; make_button(0,32,9,38,11,1);/*每個鍵對應(yīng)的位置和數(shù)值*/ make_button(1,42,9,48,11,2); make_button(2,52,9,58,11,3); make_button(3,62,9,67,11,+); make_button(4,71,9,76,11,-); make_button(5,32,12,38,14,4); make_button(6,42,12,48,14,5); make_button(7,52,12,58,14,6); make_button(8,62,12,67,14,*); make_button(9,71,12,76,14,/);/*“/”的位置*/ make_button(10,32,15,38,17,7); make_button(11,42,15,48,17,8); make_button(12,52,15,58,17,9); make_button(13,62,15,67,17,=); make_button(14,71,15,76,17,-); make_button(15,32,18,38,20,0);/*“0”的位置*/ make_button(16,71,18,76,20,End); for(i=0;i17;i+) draw_border(buttoni.sx,buttoni.sy,buttoni.ex,buttoni.ey,normbut_bor); for(i=0;i17;i+) write_top(buttoni.sx+1,buttoni.sy+1,buttoni.ex-1,buttoni.head,normnum_but); write_top(int x1,int y,int x2,char *s,int attrib) char far *v,far *t; int i; v=vid_mem; for(i=x1;i=x2;i+) t=v+y*160+i*2; *t+= ; *t=attrib; i=(x2-x1-strlen(s)+1)/2+x1; t=v+160*y+i*2; for(;*s;) *t+=*s+; *t+=attrib; make_button(int num,int sx,int sy,int ex,int ey,char *top) buttonnum.sx=sx; buttonnum.sy=sy; buttonnum.ex=ex; buttonnum.ey=ey; buttonnum.head=top; buttonnum.press=0;out_text_win() /*結(jié)果輸出窗口*/ draw_border(31,2,75,4,0x7f); write_top(32,3,74, ,0xff);get_key() /*得到按鍵值*/ union inkey /*共用體*/ char ch2; int i; c; c.i=bioskey(0); return(c.i);window_xy(int x,int y) union REGS r; /*定義聯(lián)合體*/ r.h.ah=2; /*初始化*/ r.h.dh=y; r.h.dl=x; r.h.bh=0; int86(0x10,&r,&r); key_choice() /*小鍵盤鍵的輸入函數(shù)*/ int ch,bx=0,by=0;/*起始停留鍵的位置*/ do ch=get_key(); switch(ch) case 0x4f31:res_but(bx,by);bx=0;by=0;get_data(bx,by);break;/*圖表鍵和小鍵盤的鍵對應(yīng),此處為1*/ case 0x5032:res_but(bx,by);bx=1;by=0;get_data(bx,by);break;/*2*/ case 0x5133:res_but(bx,by);bx=2;by=0;get_data(bx,by);break;/*3*/ case 0x4b34:res_but(bx,by);bx=0;by=1;get_data(bx,by);break;/*4*/ case 0x4c35:res_but(bx,by);bx=1;by=1;get_data(bx,by);break;/*5*/ case 0x4d36:res_but(bx,by);bx=2;by=1;get_data(bx,by);break;/*6*/ case 0x4737:res_but(bx,by);bx=0;by=2;get_data(bx,by);break;/*7*/ case 0x4838:res_but(bx,by);bx=1;by=2;get_data(bx,by);break;/*8*/ case 0x4939:res_but(bx,by);bx=2;by=2;get_data(bx,by);break;/*9*/ case 0x5230:res_but(bx,by);bx=0;by=3;get_data(bx,by);break;/*0*/ case 0x4e2b :res_but(bx,by);bx=3;by=0;get_data(bx,by);send1();break;/*加*/ case 0x4a2d :res_but(bx,by);bx=4;by=0;get_data(bx,by);send1();break;/*減*/ case 0x372a :res_but(bx,by);bx=3;by=1;get_data(bx,by);send1();break;/*乘*/ case 0x352f:res_but(bx,by);bx=4;by=1;get_data(bx,by);send1();break;/*除*/ case 0x0d3d:res_but(bx,by);bx=3;by=2;get_data(bx,by);send2(); out_text_win();put_string();break;/*等于號*/ case 0x1c0d:res_but(bx,by);bx=2;by=4;get_data(bx,by);send2(); out_text_win();put_string();break;/* 回車鍵(相當(dāng)與等于號) */ case 0x0e08:res_but(bx,by);bx=4;by=2;pop();text_clo();break; /*退格(backspace)*/ case 0x3920:res_but(bx,by);get_data(bx,by);ba_space(bx,by); break;/* 空格 */ case 0x4f00:res_but(bx,by);bx=4;by=3;exit(1);break;/*結(jié)束(End)*/ case 0x4800:res_but(bx,by);by-;break;/* 上 */ case 0x4b00:res_but(bx,by);bx-;break;/* 左 */ case 0x5000:res_but(bx,by);by+;break;/* 下 */ case 0x4d00:res_but(bx,by);bx+;break;/* 右 */ if(bx0)bx=0; /* 只能在X0到4和Y在0到4內(nèi)選擇按鍵*/ if(by4)by=4; if(bx4)bx=4; /* 只能在X0到4和Y在0到4內(nèi)選擇按鍵*/ select_but(bx,by); while(1);ba_space(int x,int y) int num; char ch; if(y2) if(x2)num=15; else num=16; else num=x+5*y; switch(num) case 3:send1();break;case 13:send2();out_text_win();put_string();break;case 4:send1();break;case 8:send1();break;case 9:send1();break;case 16:exit(1);break;/*圖表對應(yīng)的結(jié)束鍵*/case 14:pop();text_clo();break;/*“”對應(yīng)功能*/ default:; text_clo() /*文本光標*/ tx-; /*光標向左移*/ if(tx2) if(x2) if(x2) if(x2)num=15; else num=16; else num=x+5*y; if(num16) draw_border(buttonnum.sx,buttonnum.sy,buttonnum.ex,buttonnum.ey,normbut_bor); write_top(buttonnum.sx+1,buttonnum.sy+1,buttonnum.ex-1,buttonnum.head,normnum_but); else draw_border(buttonnum.sx,buttonnum.sy,buttonnum.ex,buttonnum.ey,normbut_bor); write_top(buttonnum.sx+1,buttonnum.sy+1,buttonnum.ex-1,buttonnum.head,spebut_char); put_char(int x,int y,char ch) /*計算窗口的輸入確定函數(shù)*/ char far *v; v=vid_mem; v+=x*2+y*160; /*光標的位置*/ *v+=ch; /*輸入字符隨光標的推進*/ *v=0xf0; /*輸入數(shù)字的顏色*/ window_xy(x,y); /*光標在窗口坐標*/calculator() /*計算器構(gòu)成的函數(shù)*/ int a,b; key_choice(); /*鍵選擇函數(shù)*/write_text(int x,int y,char *s,int attrib) /*文本輸入函數(shù)*/ char ch; int lx=x,ly=y; for(;*s;) ch=*s+; switch(ch) case n:lx=x;ly+;break; default:write_char(lx+,ly,ch,attrib); menu() /*左邊窗口函數(shù)*/ char *j=fang xiang jiannyi dong!nkong ge jian nque ding!nke yong xiao jian pan nshu ru!nyong xiao chuang kounxian shi ; /*左邊框中顯示的字符*/ char *s=Made by 08 xin ben san bannChenFeiMinnCh

溫馨提示

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

最新文檔

評論

0/150

提交評論