科學計算器課程設計報告C++課程設計報告書.docx_第1頁
科學計算器課程設計報告C++課程設計報告書.docx_第2頁
科學計算器課程設計報告C++課程設計報告書.docx_第3頁
科學計算器課程設計報告C++課程設計報告書.docx_第4頁
科學計算器課程設計報告C++課程設計報告書.docx_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、計算機科學與技術學部C+課程設計題a科學計算器學部計算機科學與技術班級計科1103指導教師李軍姓名劉 明學號114304218176672012年6月27日1.2設計分析 1.2. 1可行性分析伴隨著經濟全球化,計算機的普及開展,軟件行業在社會占著舉足輕重的作 用。我們在學校生活中常會遇到一些繁雜的數值運算,我們必須要用到科學計算 器,所以便著手開發了這個計算器程序,既緊隨科技開展的前沿,又方便了我們 的生活,具有一定的現實意義。1.2.2需求分析本軟件主要用于計算機Windows XP以上的用戶使用,這次課程設計一般是 實現簡單計算器的功能。需要程序實現:加減乘除,開方,平方,倒數等運算功

2、能;還要實現數據的輸入,輸出,計算,顯示及程序退出等功能。另外還可以實 現多種科學計算的功能,如:三角函數的計算,孤度與角度間的轉換,對數指數 的計算,二、八、十、十六進制的轉換等。1.2.3設計構造第一章主要介紹了我們做這個課程設計目地是做什么。第二章主要介紹了我們怎么去設計這個課程報告以及編程。第三章主要介紹了我們實現代碼的關鍵性技術與源碼段的介紹。第四章主要介紹了我們做這個程序的運行結果與一些運算的截圖。1.3開發環境1.3.1運行環境(1) Windows 7 64 位/XP 32 位系統(2) Visual C+ 6.0(中文版)編譯環境1.3.2開發工具C+語言1.3.3 關于 V

3、isual C+ 6.0VisuaI C+ 6. 0 是 Microsoft 公司在 1998 年推出的基于 Windows 9X 和 Windows NT的優秀集成開發環境。該環境為用戶提供了良好的可視化編程環境, 程序員可以利用該開發環境輕松地訪問C+源代碼編輯器,資源編輯器和使用內 部調試器,并且可以創立工程文件。Visual C+6.。不僅包括編輯器,還包括許 多有用組件,通過這些組件的協同工作,可以在Visual C+6. 0集成環境中輕松 地完成創立源文件、編輯資源以及對程序的編譯、連接和調試等各項工作。VC+6. 0是Windows 95/98、XP或Windows NT下的一個

4、應用程序,本身對軟件 沒有特殊要求。就是說它對環境的要求與Windows 95/98> Windows NT的要求是 一致的。VC+6.。系統可以在一張CD盤上,也可以在“Visual Studio (Visual C+、Visual Foxpro)"等產品的第一張CD盤上。一般都有一個VC的自動安裝 程序,也可以執行VC+6. 0目錄下的Setup.exe,在安裝包的提示下進展,對初 學者可采用“典型安裝方式。在安裝好VC6. 0系統后,有時根據需要添加或刪除某些部件,可插入CD盤 重新執行Setup, exe安裝程序,安裝程序會檢測當前系統安裝VC6. 0的組件,用 戶單擊

5、“添加/刪除按鈕后,在“安裝維護對話框中選定要與一般的應用軟 件一樣,有以下兩種啟動方式:1)通過“開場按鈕,選擇“程序菜單,然后翻開“Microsoft Visual C+6. 0中文版子菜單中的“Microsoft Visual C+6. 0中文版"程序。2用戶也可以使用命令行啟動VC,單擊“開場按鈕后選擇“運行“命 令,在"運 行” 對 話 框 中輸入 C:program Fi IesMicrosoft VisuaI StudioVC98VC6. exe (按默認盤符和路徑安裝即可)。第二章系統設計2. 1功能說明2. 1.1系統總體功能分析此程序采用VC+編寫,是一

6、個基于對話框的應用程序,當用戶在對話框點 擊相應按鈕時,先執行輸出按鈕對應字符串,用戶可以在對話框上選擇相應地科 學計算操作按鈕,通過程序內相關代碼完成相應地科學計算功能。它的設計按軟件工程的方法進展,系統具有良好的界面,必要的交互信息, 簡約的美觀效果。使用人員能快捷簡單地進展操作,即可單機按鈕進展操作,也 可直接通過鍵盤輸入。即時準確地獲取所需要的計算結果,充分降低了數字計算 的難度和節約了時間,對人們的生活有一定幫助。其具體的功能有:1運算更加簡介。2兩個對話框,一個顯示輸入數據,另一個顯示計算結果。3實現計算求和,求平均的功能。4計算功能根本上是用系統內部函數。5程序可以能自動判斷輸入

7、數據的正確性,保證不出現多于一個小數點 以0開頭等不正常現象。6“CE"按鈕可以去除所有已輸出的數據從頭計算。我們在學習生活中,常會遇到一些繁雜的數值運算,這時候我們就必須用到 科學計算器,所以便著手開發了這個計算器程序,以便用于自己的學習工作。要 計算功能有以下幾個方面:加法,減法,乘法,除法,求幕,求模,求和,求平 均,求平方根,求三角函數,進制換算等。2. 1.2系統功能1、十進制數的加、減、乘、除、乘方、取模等簡單計算。2、科學計算函數,包括(反)正弦、(反)余弦、(反)正切、(反)余切、開方、 指數等函數運算。3、以角度、弧度兩種方式實現上述局部函數,梯度沒有提供。4、不同

8、進制有不同的運算方式。5、判斷輸入輸出的正確性。2. 1.3課程設計內容課題名稱:計算器的實現根本說明:我們實現了一個標準計算器的運算以及科學計算器的運算的集成, 使其較之:方便、快捷、輕松,看上去美觀大方,少了切換的繁瑣操作,并且我 們做的更加簡約。2. 2設計大概2.2. 1設計思路所編寫的計算器是基于對話框的程序,能夠進展加減乘除的運算,開方,立 方,三角函數,反三角函數,階乘,求和,求平均,進制轉換運算等功能,仿照 Windows自帶的計算器進展編寫,如圖2.2.1;2.2.3變量的定義以及初始化IDC SinSinm SIN1DC CosCosm C0SIDC TanTanm TAN

9、IDC AC0Sacosm AC0SIDC ATANatanm ATANIDC XORXorm Xor1DC BUTT0N43MSm BUTT0N431DC M0DModm M0DIDC BUTT0N40Dmsm BUTT0N40IDC BUTT0N49Avem BUTT0N49IDC BUTT0N48Summ BUTT0N481DC BUTT0N47Sm BUTT0N471DC N0TNotm N0T1DC BUTT0N46Datm BUTT0N46IDC PIpim PIIDC BUTT0N42M+m BUTT0N421DC BUTT0N45MCm BUTT0N451DC Equa1二m

10、EQUALi nt SeI,EndSeI;i nt Expr_pos;i nt OS_pos ;i nt old_pos;i nt oId_head;i nt oId_back;int error_mark;i nt parentheses_count;/定義輸入或插入時光標的位置詞法分析表達式時,標記當前字符位置操作數棧頂位置歷史表達式的位置/歷史表達式數組中最最前位置/歷史表達式數組中最最后位置/標記表達式錯誤/記錄表達式中括號的個數操作數棧表達式歷史記錄doubIe operand_Stack200;CStr i ng oId_express i on20;以上為定義局部,以下為初始化局

11、部Sel=0;輸入的光標位置EndSe I =0;/插入光標的位置Expr_pos=0;當前字符的位置0S_pos = 0 ;操作數棧頂位置o I d_pos=o I d_head=o I d_back=0; 歷史表達式的位置 error_mark=0;/表達式錯誤parentheses_count=0; /括號的個數OLD_ANSWER 二 _T (” ”);/ 初始化第三章系統實現3. 1窗體設計3.1.1設計步驟利用MFC AppWinzard生成計算器應用程序框架具體步驟如下:1執行VC+6. 0程序,選擇文件新建命令,轉到工程選項卡,選擇MFC AppWizard(exe)選項,然后

12、在工程名稱輸入名字,一般以C開頭,也可以自定義, 位置路徑自定義。2單擊確定,彈出MFC應用程序向導-步驟1對話框。選中單項選擇按鈕根 本對話框,單擊完成即可,如下圖:3. 1.2控件定義(1)為控件添加成員變量已經在系統設計里面列舉出,這里就不再重復;(2)為控件添加消息,查看-類向導命令,轉到Message Maps選項卡,為控 件添加BN_CLICKED消息,單擊確定即可,具體哪些控件這里就不再詳細介紹了。3. 1.3 局部操作截圖圖3.1.3相關實現的截圖圖.3. 1.2添加消息的截圖3.2程序核心代碼3. 2.1數字鍵和字母鍵核心代碼/按鍵輸入vo i d CCaIcuIatorDI

13、g:OnNumberKey(UI NT nID)m_Edit. GetSel (Sel,EndSel); 得到輸入框的光標位置 switch(nID)/在光標位置插入按鈕表示的字符,在輸入框插入相應的數值 expression. Insert (SeI,"0");break; express i on. Insert (SeI,"1");break;) expression. Insert (Sei,"2");break; expression. Insert (Sei,"3");break;) expressio

14、n.Insert(Sei,"4");break;case IDC_0 mcase IDC_1 mcase IDC_2( mcase I DC 3 mcase IDC_4 mcase IDC_5 mcase IDC_6 mcase IDC_7 mcase IDC_8 mcase IDC_9 mcase IDC_A mcase IDC_B mcase IDC_C mcase IDC_D( mcase IDC_0 mcase IDC_1 mcase IDC_2( mcase I DC 3 mcase IDC_4 mcase IDC_5 mcase IDC_6 mcase IDC_

15、7 mcase IDC_8 mcase IDC_9 mcase IDC_A mcase IDC_B mcase IDC_C mcase IDC_D( mexpression. expression express i on.expression. Insert (SeI, "8")Insert (SeI,"5");break; .Insert(SeI,"6");break;)Insert (SeI,"7");break; ;break;)expression. Insert (SeI,"9");

16、break; expression. Insert (SeI,"A");break; expression. Insert (Sei,"B");break; expression. Insert (Sei,"C");break;J expression. Insert (SeI,"D");break;)case IDC_E: m_expression. lnsert(Sel,"E");break;Jcase IDC_F: m_expression. lnsert(Sel,"F"

17、;);break;)Sel+; 光標后移UpdateData (FALSE);m_Edit. SetSel (Sei, Sei); 更新輸入框光標后移位置UpdateData (FALSE);)3. 2. 2計算類型函數的核心代碼void CCaIcuIatorDIg:compute(Operator Op)/根據操作計算類型,計算結果switch(Op)case OpAdd:( operand_Stack0S_pos2+=operand_Stack0S_posT;0S_pos;break;) case OpSubtract:( operand_Stack0S_pos-2-=operand_S

18、tack0S_pos1;0S_pos;break; case OpMultiply: operand_Stack0S_pos2*=operand_StackOS_pos-1;0S_pos;break; case OpDivide:( if (operand_Stack0S_pos-1 0) (error (5) ; break;)e I se(operand_Stack0S_pos2/=operand_Stack0S_pos-1;0S_pos; break;)case OpMod:( if (operand_Stack0S_pos-1 =0) (error (5) ; break;e I se

19、_i nt64 temp=0;temp = (_i nt64)(operand_Stack0S_pos-2/operand_Stack0S_pos-1); operand_Stack0S_pos1*=temp;operand_Stack0S_pos2-=operand_Stack0S_pos1;0S_pos一-; break;)case OpPower: operand_Stack0S_pos2 = pow (operand_Stack0S_pos2, operand_ Stack0S_pos1);0S_pos;break;)case OpLog:(operand_Stack0S_pos1 =

20、 log10 (operand_Stack0S_pos-1);break;)case OpLn:(operand_Stack0S_pos1 = log(operand_Stack0S_pos1) ;break;case OpSqrt:(operand_Stack0S_pos1=sqrt(operand_Stack0S_posT) ;break;case OpExp:( operand_Stack 0S_pos1 = exp (operand_Stack0S_pos-1); break;case OpSin:( i f(m_Rad i o2 =0) operand_StackOS_pos1=op

21、erand_StackOS_pos- 1*PI/180;operand_StackOS_pos-1 = s i n (operand_StackOS_pos-1); break;)case OpCos:( i f(m_Rad i o2 =0) operand_Stack0S_pos1=operand_Stack0S_pos- 1*PI/180;operand_Stack0S_pos1 = cos (operand_Stack0S_pos1); break;case OpTan:( i f(m_Rad i o2 =0) operand_StackOS_pos1=operand_S tackOS_

22、pos-1*PI/180; operand_Stack0S_pos-1 = tan (operand_Stack 0S_pos1); break;case OpAsin:( i f (operand_Stack 0S_pos-1>1|operand_StackOS_pos-1<-1) error (9); return ;operand_Stack0S_pos1 = as i n(operand_Stack0S_pos-1); if (m_Radio2 =0)operand_Stack0S_pos-1=operand_Stack0S_posT*180/PI; break;case

23、OpAcos:( if(operand_Stack0S_pos1>1|operand_Stack0S_pos-1<-1) error (9); return ; operand_Stack0S_pos1 = acos (operand_Stack0S_pos1); if (m_Rad i o2 =0)operand_Stack 0S_pos-1=operand_Stack0S_posT*180/PI; break;case OpAtan:(operand_Stack 0S_pos-1 = atari (operand_Stack OS_pos1 );i f (m_Rad i o2

24、=0)operand_Stack 0S_pos1=operand_Stack0S_pos1*180/PI; break;)case OpFactor i a I:if (0S_pos<=0)( error (1); return ;)long k;k =(Iong) operand_Stack0S_pos-1;if (k < operand_Stack0S_pos1)( error (8); return ;)摘要計算器的產生和開展是建立在電子計算機根底之上的。硬件方 面,自1946年第一臺電子計算機誕生以來,計算機技術的開展可謂 日新月異,從龐大的只能在實驗室里供研究使用的計算機

25、到如今能適 應不同環境滿足不同需求的各種各樣的計算機;運算速度從每秒幾千 次到每秒幾百億次;處理器從焊有上百萬個電子管的大的驚人的電子 板到只有指甲大小的集成電路;現在計算機在硬件方面的開展已到達 了每三個月史新換代一次的驚人速度。軟件方面,也已從機器語言、 匯編語言、高級語言開展到現如今的第四代語言非構造化、面向 對象、可視化的語言。在這個計算器里面,我們實現了簡單的四那么運算以及更高功能 的科學計算,它的外觀簡潔美觀,使人們能快捷簡單的操作。能準確 的得到計算結果,大大減少了數字計算所需要的時間,為人們的生活 帶來便利。此系統在Windows 7環境下,使用VC+ 6.0進展編寫。簡單計算

26、器包括雙目運算和單目運算功能,雙目運算符包含根本 的四那么運算及乘取功能,單目運算符包含正余弦,對數,開方,階 乘,倒數,進制轉換等運算。可對其輸入任意操作數,包括小數和整 數及正數和負數進展以上的所有運算并能連續運算。并且包含去除, 退格功能等。我們所做的計算器其功能較Windows 7 T的計算器還是 很不夠多,沒有其菜單的實現功能項,沒有其小巧的標準計算器。關鍵詞:計算器;運算;VC+等_i nt64 temp =1;for (long i=1; i<=k ;i+)(temp *= i; /operand_Stack0S_pos1 *=i;/* m_result. Format(_

27、T("%I64X"), temp);UpdateData (FALSE);MessageBox ("sdfsd");*/ operand_Stack0S_pos-1=(doubIe)temp;break;)3.2.3提示錯誤的核心代碼void CCalculatorDIg: :error (int error_type)/錯誤類型錯誤處理switch(error_type)case 1: m_resu11="錯誤:缺少操作數! ";break;case 2: m_result二"錯誤:括號不匹配! break;case 3:

28、 (m_resu11="錯誤:函數名不正確! break;case 4: m_resuIt=H錯誤:非法輸入! " ;break;case 5: m_resu11="錯誤:出現除數為零! break;case 6: m_result="錯誤:函數缺少括號! "break;case 7: m_resu11="錯誤:缺少運算符! ! break;)case 8: m_resu 11="錯誤:階乘操作數不是整數! "break;case 9: m_resu I t="as i n 和 acos 函數計算必須在-

29、1,1內! ";break;)error_mark=1;)3.2.4進制轉換的核心代碼void CCalculatorDIg:getword (WordType & w_type , Operator& Fun Op e, int system)進制轉為浮點型(/ 詞法分析器,參數w_type , Fun_0pe, system分別表示 單詞類型,操作運算類型,進制類型i nt t=m_express i on. GetLength ();if (t<=0) error (4) ; return ;) /表達式為空那么返回i f (Expr_pos<t)

30、i f(m_express i onExpr_pos>='0'&& m_expressionExpr_pos<='9')| (m_expressionExpr_pos>='A'&& m_express i onExpr_pos<='F1) /當前字符為數字那么 轉換為浮點數壓入操作數棧i f(Expr_pos+1)<t&&m_express i onExpr_pos='O'&&m_express i onExpr_pos +1 =

31、'0'&&m_Radio1 ! =3) (error (4) ; return ;/數字前面有兩個零,報 錯返回switch(system)/根據傳來的進制類型,把字符串表示的數字轉換為浮點數error(4); return ;) break;)(error(4); return ;) break;error (4);return;break;error (4); return;break; ;case 0:( if (!getwordl6()case 1: i f (!getword10 ()case 2:( if (!getword8 ()case 3:(

32、if (!getword2 ()default: (error (4); return )w_type = Tynum; 單詞類型為數字return;i f (m_express ionExpr_pos>='a'&& m_express i onExpr_pos<='z')/*當前字符為字母那么,把字母串保3到str中*/char str 100=""i nt i=0;whi le(Expr_pos<t&&m_expressionExpr_pos>=,a'&& m

33、_expressionExpr_po s<='z,)(str i=m_express i onExpr_pos;i+;Expr_pos+;if (Expr_pos>=t) (error (3); w_type = TyFun; return ;/表達式完畢,那么報錯/* 以下if else 語句為匹配字符串*/i f (strcmp (str, " ln")=0) (Fun_0pe=0pLn;)eIse if (strcmp (str, "Iog")=0)(Fun_0pe=0pLog; eIse if(strcmp(str, &quo

34、t;sqrt")=0)(Fun_0pe=0pSqrt;) eIse i f (strcmp (str, "exp")=0)Fun_0pe=0pExp; eIse i f(strcmp (str, "sin")=0)Fun_0pe=0pS in; else if (strcmp(str, ,cos")=0) Fun_0pe=0pCos;) eIse if (strcmp (str, "tan")=0)(Fun_0pe=0pTan; eIse if (strcmp(str, "asin")=0) (

35、Fun_0pe=0pAsin;) eIse if (strcmp(str, "acos") =0) Fun_0pe=0pAcos;) e I se i f (strcmp (str, "atari") =0) (Fun_0pe=0pAtan;/else if (m_expressionExpr_pos=,(')w_type = TyFun; eIse (error (3);w_type = TyFun; return ;)匹配不到函數單詞,報錯w_typew_typeTyFun; returnswitch (m_express ionExpr_p

36、os)case '+casecase '* case '/ case '' case '( case ') case '%case '+casecase '* case '/ case '' case '( case ') case '%default:/*當前字符為操作運算符,那么設置單詞類型,和操作運算*/1 Fun_0pe=0pAdd; Expr_pos+; w_type=oper; break; Fun_0pe=0pSubtract; Expr_pos+;w_

37、type=oper;break;)( Fun_0pe=0pMu11 i pIy; Expr_pos+;w_type=oper; break; Fun_0pe=0pDivide; Expr_pos+; w_type=oper;break;( Fun_0pe=0pPower; Expr_pos+; w_type=oper;break; Fun_Ope=Left_par; Expr_pos+; w_type=oper;break;) Fun_0pe=R i ght_par; Expr_pos+; w_type=oper;break;1 Fun_0pe=0pMod; Expr_pos+; w_type

38、=oper;break;error (4) ; return ;其他字符都為非法字符,報錯)e I se if (Expr_pos=t) w_type=TyEnd; /表達式已完畢,返回 e I se (error (4); return ;3. 2.5八進制單項選擇按鈕消息響應函數代媽 void CCa IcuIatorDIg: :OnOcta I () /八進制單項選擇按鈕消息響應函數 (/ TODO: Add your controI notification hand I er code hereWordType type ;Operator Ope;CStr ing result;i

39、nt system;system = m_Rad i o1;m_Rad i o1 二 2 ;i f (OLD_ANSWER. GetLength ()>0) m_expression = OLD_ANSWER;UpdateData (FALSE);getword (type, Ope, system);if(type=Tynum&&(!error mark)&&(Expr_pos=m_expression. GetLength() out_change(m_Rad io1);resuIt = m_resuIt;c I ean_a I I ();m_expr

40、ess i on = m_resu11 = result;UpdateData (FALSE)Se I = m_expression. GetLengthO ; m_Ed it. SetSeI (SeI,SeI);UpdateData (FALSE);Expr_pos = 0;OS_pos = 0 ;error_mark=0; parentheses_count=0; m_result = _T ("");1m_2. Enab I eWindow (TRUE); m_3. Enab IeWi ndow (TRUE); m_4. Enab I eWindow (TRUE);

41、m_5. Enab I eWindow (TRUE); m_6. Enab I eW i ndow (TRUE); m_7. Enab I eW i ndow (TRUE);m_8. Enab IeWi ndow (FALSE); m_9. Enab IeWi ndow (FALSE); m_A. Enab I eWindow (FALSE); m_B. Enab I eWindow (FALSE); m_C. Enab I eWindow (FALSE); m_D. Enab IeWi ndow (FALSE);m_E. Enab I eWindow (FALSE);m_F. Enab Ie

42、Wi ndow (FALSE);m_PI. Enab IeWi ndow(FALSE);)3. 2.6二進制單項選擇按鈕消息響應函數void CCalculatorDIg: :0nBinary() /二進制單項選擇按鈕消息響應函數(/ TODO: Add your controI not i ficat i on hand I er code here /E_AddSub ();WordType type ;Operator Ope;CStr ing result;int system;system = m_Rad i o1;m_Rad i o1 = 3 ;i f (OLD_ANSWER. G

43、etLength()>0) m_express i on = OLD_ANSWER;UpdateData (FALSE);getword (type, Ope, system);if (typeTynum&&(!error_mark)&&(Expr_posm_expression. GetLength () out_change(m_Rad io1);resuIt = m_resuIt;c I ean_a I I ();mexpress i on = mresu11 = result;UpdateData (FALSE);SeI = m_expressio

44、n. GetLength(); m_Ed it. SetSeI (SeI,SeI);UpdateData (FALSE);e I seExpr_pos 二 0; 0S_pos 二 0 ;error_mark=0; parentheses_count=0; m_resuIt = _T ("");1m 2. Enab IeWi ndow (FALSE); m_3. Enab IeWi ndow (FALSE); m_4. Enab I eWindow (FALSE); m_5. Enab I eWindow (FALSE); m_6. Enab IeWi ndow (FALSE

45、); m_7. Enab IeWi ndow (FALSE); m_8. Enab IeWi ndow (FALSE); m_9. Enab IeWi ndow (FALSE); m_A. Enab IeWi ndow (FALSE); m_B. Enab I eWindow (FALSE); m_C. Enab I eWindow (FALSE); m_D. Enab IeWi ndow (FALSE); m_E. Enab IeWi ndow (FALSE); m_F. Enab I eWindow (FALSE); m_PI. Enab I eWindow(FALSE);第四章系統運行4

46、. 1測試以及運行界面4. 1. 1程序主界面測試呂R呂R9 6 3 -EIEEBoooom !s口呂昌 1曰艮 -SIR4 4 否4. 2. 2測試環境測試系統:Windows 7 64位測試工具:VisuaI Studio C+ 6. 0(中文版)經過多番測試,得出結論為設計的計算器能夠完成功能描述內容中的全部功 能。經過幾個星期的VC+課程設計,我們順利完成該課程設計,并收獲良多。 我們大體總結了以下幾點:根本功要過硬,不能馬虎經常犯的小錯誤。提高自己找錯糾錯能力,通常錯 誤總是那幾種,多練習就熟練了。要善于查找資料,提高自己的資料查詢能力,要善于利用網絡來獲得知識, 獲得幫助。開場著手

47、程序設計時,有些功能感覺無從下手,都不知道要干什么, 這些問題這要找到相關的資料就會得到提示從而理解所要解決問題的大致方向。 有了明確的目的,就可以發揮自己的頭腦來完成它了。要善于思考,程序中有些實現難點和最初完成程序時免不了的許多缺乏就需 要自己根據代碼認真思考來解決。只有這樣才能糾正程序的缺乏,并使其更加人 性化。這次課程設計讓我們學到了很多,不僅穩固了 MFC程序設計知識,而且也培 養了我們的動手能力,令我們的創造性思維得到拓展。期待今后有更多類似的鍛 煉時機。通過這次課程設計,可以明顯的感覺到它彌補了課程教學的和實驗中知識的 深度和廣度方面的缺乏,也讓我們進一步掌握了面向對象程序設計的

48、根本方法和 編程技巧,同時也穩固所學理論知識,似然花費了不止一點點的時間和精力,不 過那確實挺值得的,既讓我們認識到自己知識方面的缺陷,又培養了我獨立分析 問題、解決問題的能力。課程設計是需要大量時間去動手練習才能體驗到它的內涵的,同時還需要用 心地投入,時間和情感花下去之后,確實感受到有所收獲,增加了對編程的興趣。 通過這次課程設計,掌握了對話框的相關操作,也體會到書寫代碼一定要仔細, 有時候一小點拼寫錯誤會浪費很多調試程序的時間,再有一點就是要好好學習英 語,對編程有很大幫助。總之,這次課程設計學到了很多,通過實踐真正的做到 了學有所用。參考文獻1 鄭阿奇,Visual C+實用教程第三版

49、,北京:電子工業出版社,2000嚴華峰,Visual C+課程設計案例精編,北京:中國水利水電出版社,2002課程設計任務分配表:表1分配信息表課程設計成績表:姓名主要工作組長劉明程序設計和編寫組員舒兆月實驗報告書的制作凡力強實驗報告書的制作表2成績表姓名學號班級成績組長劉明11430421817667計科1103組員舒兆月11430727814558計科1103凡力強11430426154534計科1103I采用的類的數據類型:class CCalculatorDIg : public CDia Iogpub Iic:void cIean_aI iter ();CString OLD_ANS

50、WER;void out_change(int system);CCalculatorDIgCCWnd* pParent = NULL);doubIe operand_Stack200;CStr i ng oId_express i on 20;void getword (WordType & w_type , Operators Fun_0pe, int system); 詞法分i nt SeI,EndSeI;i nt Expr_pos;置int 0S_pos ;i nt old_pos;int old_head;int old_back;int error_mark;i nt pa

51、rentheses_count;/ standard constructor定義輸入或插入時光標的位置詞法分析表達式時,標記當前字符位操作數棧,頂位五/歷史表達式的位置/歷史表達式數組中最最前位置歷史表達式數組中最最后位置標記表達式錯誤記錄表達式中括號的個數/操作數棧表達式歷史記錄析函數int getword16() ; int getword10() ; int getword8() ; int getword2();/將用字符表示的N(2,8,10, 16)進制轉為浮點型voidE_AddSub ();/加減void T_MuIDiv();乘除voidF_Power ();乘方void L_Function();函數voidH_Digit();/數字void Factor ia I ();階乘voidP_exp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論