科學(xué)計算器課程設(shè)計報告C++課程設(shè)計.doc
《科學(xué)計算器課程設(shè)計報告C++課程設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《科學(xué)計算器課程設(shè)計報告C++課程設(shè)計.doc(31頁珍藏版)》請在裝配圖網(wǎng)上搜索。
計算機科學(xué)與技術(shù)學(xué)部 C 課程設(shè)計 題 目 科學(xué)計算器 學(xué) 部 計算機科學(xué)與技術(shù) 班 級 計科 1103 指 導(dǎo) 教 師 李 軍 姓 名 劉 明 學(xué) 號 11430421817667 2012年 6月 27日 摘 要 計算器的產(chǎn)生和發(fā)展是建立在電子計算機基礎(chǔ)之上的 硬件方 面 自 1946 年第一臺電子計算機誕生以來 計算機技術(shù)的發(fā)展可謂 日新月異 從龐大的只能在實驗室里供研究使用的計算機到如今能 適應(yīng)不同環(huán)境滿足不同需求的各種各樣的計算機 運算速度從每秒 幾千次到每秒幾百億次 處理器從焊有上百萬個電子管的大的驚人 的電子板到只有指甲大小的集成電路 現(xiàn)在計算機在硬件方面的發(fā) 展已達到了每三個月更新?lián)Q代一次的驚人速度 軟件方面 也已從 機器語言 匯編語言 高級語言發(fā)展到現(xiàn)如今的第四代語言 非 結(jié)構(gòu)化 面向?qū)ο?可視化的語言 在這個計算器里面 我們實現(xiàn)了簡單的四則運算以及更高功能 的科學(xué)計算 它的外觀簡潔美觀 使人們能快捷簡單的操作 能準 確的得到計算結(jié)果 大大減少了數(shù)字計算所需要的時間 為人們的 生活帶來便利 此系統(tǒng)在 Windows 7 環(huán)境下 使用 VC 6 0 進行編 寫 簡單計算器包括雙目運算和單目運算功能 雙目運算符包含基 本的四則運算及乘冪功能 單目運算符包含正余弦 對數(shù) 開方 階乘 倒數(shù) 進制轉(zhuǎn)換等運算 可對其輸入任意操作數(shù) 包括小數(shù) 和整數(shù)及正數(shù)和負數(shù)進行以上的所有運算并能連續(xù)運算 并且包含 清除 退格功能等 我們所做的計算器其功能較 Windows 7 下的計 算器還是很不夠多 沒有其菜單的實現(xiàn)功能項 沒有其小巧的標準 計算器 關(guān)鍵詞 計算器 運算 VC 等 課程設(shè)計任務(wù)分配表 表 1 分配信息表 姓名 主要工作 組長 劉 明 程序設(shè)計和編寫 舒兆月 實驗報告書的制作 組員 凡力強 實驗報告書的制作 課程設(shè)計成績表 表 2 成績表 姓名 學(xué)號 班級 成績 組長 劉 明 11430421817667 計科 1103 舒兆月 11430727814558 計科 1103 組員 凡力強 11430426154534 計科 1103 采用的類的數(shù)據(jù)類型 class CCalculatorDlg public CDialog public void clean aliter CString OLD ANSWER void out change int system CCalculatorDlg CWnd pParent NULL standard constructor int Sel EndSel 定義輸入或插入時光標的位置 int Expr pos 詞法分析表達式時 標記當前字符位置 int OS pos 操作數(shù)棧頂位置 int old pos 歷史表達式的位置 int old head 歷史表達式數(shù)組中最最前位置 int old back 歷史表達式數(shù)組中最最后位置 int error mark 標記表達式錯誤 int parentheses count 記錄表達式中括號的個數(shù) double operand Stack 200 操作數(shù)棧 CString old expression 20 表達式歷史記錄 void getword WordType 詞法分析函數(shù) int getword16 int getword10 int getword8 int getword2 將用字符表示的 N 2 8 10 16 進制轉(zhuǎn)為浮點型 void E AddSub 加減 void T MulDiv 乘除 void F Power 乘方 void L Function 函數(shù) void H Digit 數(shù)字 void Factorial 階乘 void P expression 括號 void compute Operator Op 計算 void error int 錯誤標記函數(shù) void clean all 清空表達式和計算結(jié)果 protected HICON m hIcon DECLARE MESSAGE MAP 程序中所用到相關(guān)專業(yè)知識 類 對象數(shù)組 友元函數(shù) 繼承與派生 指針 枚舉 數(shù)棧 算法 目 錄 前 言 1 第一章 系統(tǒng)需求 2 1 1 簡介說明 2 1 1 1 系統(tǒng)要求 2 1 1 2 具體任務(wù) 2 1 1 3 研究目的 2 1 2 設(shè)計分析 3 1 2 1 可行性分析 3 1 2 2 需求分析 3 1 2 3 設(shè)計結(jié)構(gòu) 3 1 3 開發(fā)環(huán)境 3 1 3 1 運行環(huán)境 3 1 3 2 開發(fā)工具 3 1 3 3 關(guān)于 Visual C 6 0 4 第二章 系統(tǒng)設(shè)計 5 2 1功能說明 5 2 1 1 系統(tǒng)總體功能分析 5 2 1 2 系統(tǒng)功能 5 2 1 3 課程設(shè)計內(nèi)容 6 2 2設(shè)計大概 6 2 2 1 設(shè)計思路 6 2 2 2 控件定義 7 2 2 3 變量的定義以及初始化 8 第三章 系統(tǒng)實現(xiàn) 9 3 1窗體設(shè)計 9 3 1 1 設(shè)計步驟 9 3 1 2 控件定義 9 3 1 3 一部分操作截圖 10 3 2 程序核心代碼 11 3 2 1 數(shù)字鍵和字母鍵核心代碼 11 3 2 2 計算類型函數(shù)的核心代碼 11 3 2 3 提示錯誤的核心代碼 13 3 2 4 進制轉(zhuǎn)換的核心代碼 14 3 2 5 八進制單選按鈕消息響應(yīng)函數(shù)代碼 16 3 2 6 二進制單選按鈕消息響應(yīng)函數(shù) 17 第四章 系統(tǒng)運行 20 4 1測試以及運行界面 20 4 1 1 程序主界面測試 20 4 1 2 運行的計算結(jié)果 20 4 1 3 轉(zhuǎn)換進制計算 21 4 2 測試 22 4 2 1 測試研究與選擇 22 4 2 2 測試環(huán)境 22 總 結(jié) 23 參考文獻 24 前 言 Visual C 簡稱 VC 是 Microsoft 公司推出的目前使用極為廣泛的基于 Windows 平臺的 C 可視化開發(fā)環(huán)境 為了方便計算 我們編寫了計算器 本報告在李軍老師的指導(dǎo)下 并且形成了比較完善的體系 本設(shè)計報告具 體包含以下內(nèi)容 第一章直接介紹了基于 C 語言 熟悉 Visual 6 0 的開發(fā)環(huán) 境和 C 控制臺方式的調(diào)試和運行 使學(xué)生熟悉 Visual C 6 0 更自然 以及 我們編程的背景與意義及目的 主要介紹我們編寫這個程序用來做什么 第二 章介紹了我們編程的怎么去做 設(shè)計時的一些想法 第三章介紹了我們編程實 用的一些技術(shù)與核心代碼 設(shè)計時的具體做法 第四章介紹我們運行時的一些 具體操作 以及我們給出的總結(jié)與參考文獻 本程序編寫一個程序來實現(xiàn)算術(shù)計算器 通過數(shù)組和指針以及枚舉來存放 輸入的每一數(shù)字或運算符號函數(shù)的記錄 包括 1 2 3 等數(shù)字 等 運算符號 中 通過一些單擊按鈕實現(xiàn)一些標準與科學(xué)的操作混合運算 然后 顯示出結(jié)果 本報告由劉明 凡力強 舒照月編寫 由李軍老師對全報告進行修改 以 及很多同學(xué)以及網(wǎng)絡(luò)朋友提供幫助 在此表示感謝 由于水平有限 不當之處在所難免 懇請讀者批評指正 編 者 2012 6 第一章 系統(tǒng)需求 1 1 簡介說明 1 1 1 系統(tǒng)要求 1 用 C 語言實現(xiàn)程序設(shè)計 2 利用 MFC 進行相關(guān)信息處理 3 畫出總模塊的流程圖 4 系統(tǒng)的各個功能模塊要求用函數(shù)的形式實現(xiàn) 5 界面友好 良好的人機互交 程序要有注釋 1 1 2 具體任務(wù) 1 定義以及初始化 輸入 0 9 A F 運算符等信息 2 輸入簡單的運算符計算式 并顯示出計算結(jié)果 3 畫出總流程圖 4 編寫代碼 5 程序分析與調(diào)試 1 1 3 研究目的 1 熟悉掌握基于對話框的程序編寫 2 熟練掌握放置控件及 control 工具條的使用 3 掌握控件擺放的基本方法 熟練掌握 Dialog 的使用 4 熟悉建立對話框步驟 5 了解 CBUTTON 類的實用 6 鞏固并加深學(xué)生對 C 語言程序設(shè)計知識的理解 7 培養(yǎng)學(xué)生面向?qū)ο蟮某绦蛟O(shè)計思想 與其認識面向過程和對象的區(qū)別 8 進一步掌握和應(yīng)用 VC 6 0 集成開發(fā)環(huán)境 9 提高運用 C 語言解決實際問題的能力 10 初步掌握開發(fā)小型實用軟件的基本方法 能獨立設(shè)計 實踐操作 11 掌握書寫程序設(shè)計開發(fā)文檔的能力 書寫課程設(shè)計實驗報告 1 2 設(shè)計分析 1 2 1 可行性分析 伴隨著經(jīng)濟全球化 計算機的普及發(fā)展 軟件行業(yè)在社會占著舉足輕重的 作用 我們在學(xué)校生活中常會遇到一些繁雜的數(shù)值運算 我們必須要用到科學(xué) 計算器 所以便著手開發(fā)了這個計算器程序 既緊隨科技發(fā)展的前沿 又方便 了我們的生活 具有一定的現(xiàn)實意義 1 2 2 需求分析 本軟件主要用于計算機 Windows XP 以上的用戶使用 這次課程設(shè)計一般是 實現(xiàn)簡單計算器的功能 需要程序?qū)崿F(xiàn) 加減乘除 開方 平方 倒數(shù)等運算 功能 還要實現(xiàn)數(shù)據(jù)的輸入 輸出 計算 顯示及程序退出等功能 另外還可 以實現(xiàn)多種科學(xué)計算的功能 如 三角函數(shù)的計算 弧度與角度間的轉(zhuǎn)換 對 數(shù)指數(shù)的計算 二 八 十 十六進制的轉(zhuǎn)換等 1 2 3 設(shè)計結(jié)構(gòu) 第一章主要介紹了我們做這個課程設(shè)計目地是做什么 第二章主要介紹了我們怎么去設(shè)計這個課程報告以及編程 第三章主要介紹了我們實現(xiàn)代碼的關(guān)鍵性技術(shù)與源碼段的介紹 第四章主要介紹了我們做這個程序的運行結(jié)果與一些運算的截圖 1 3 開發(fā)環(huán)境 1 3 1 運行環(huán)境 1 Windows 7 64 位 XP 32 位系統(tǒng) 2 Visual C 6 0 中文版 編譯環(huán)境 1 3 2 開發(fā)工具 C 語言 1 3 3 關(guān)于 Visual C 6 0 Visual C 6 0 是 Microsoft 公司在 1998 年推出的基于 Windows 9X 和 Windows NT 的優(yōu)秀集成開發(fā)環(huán)境 該環(huán)境為用戶提供了良好的可視化編程環(huán)境 程序員可以利用該開發(fā)環(huán)境輕松地訪問 C 源代碼編輯器 資源編輯器和使用 內(nèi)部調(diào)試器 并且可以創(chuàng)建項目文件 Visual C 6 0 不僅包括編輯器 還包 括許多有用組件 通過這些組件的協(xié)同工作 可以在 Visual C 6 0 集成環(huán)境 中輕松地完成創(chuàng)建源文件 編輯資源以及對程序的編譯 連接和調(diào)試等各項工 作 VC 6 0 是 Windows 95 98 XP 或 Windows NT 下的一個應(yīng)用程序 本身對 軟件沒有特殊要求 就是說它對環(huán)境的要求與 Windows 95 98 Windows NT 的 要求是一致的 VC 6 0 系統(tǒng)可以在一張 CD 盤上 也可以在 Visual Studio Visual C Visual Foxpro 等產(chǎn)品的第一張 CD 盤上 一般都有一個 VC 的 自動安裝程序 也可以執(zhí)行 VC 6 0 目錄下的 Setup exe 在安裝包的提示下 進行 對初學(xué)者可采用 典型安裝 方式 在安裝好 VC6 0 系統(tǒng)后 有時根據(jù)需要添加或刪除某些部件 可插入 CD 盤 重新執(zhí)行 Setup exe 安裝程序 安裝程序會檢測當前系統(tǒng)安裝 VC6 0 的組件 用戶單擊 添加 刪除 按鈕后 在 安裝維護 對話框中選定要與一般的應(yīng)用 軟件一樣 有以下兩種啟動方式 1 通過 開始 按鈕 選擇 程序 菜單 然后打開 Microsoft Visual C 6 0 中文版 子菜單中的 Microsoft Visual C 6 0 中文版 程序 2 用戶也可以使用命令行啟動 VC 單擊 開始 按鈕后選擇 運行 命令 在 運行 對話框中輸入 C program Files Microsoft Visual Studio VC98 VC6 exe 按默認盤符和路徑安裝即可 第二章 系統(tǒng)設(shè)計 2 1功能說明 2 1 1 系統(tǒng)總體功能分析 此程序采用 VC 編寫 是一個基于對話框的應(yīng)用程序 當用戶在對話框 點擊相應(yīng)按鈕時 先執(zhí)行輸出按鈕對應(yīng)字符串 用戶可以在對話框上選擇相應(yīng) 地科學(xué)計算操作按鈕 通過程序內(nèi)相關(guān)代碼完成相應(yīng)地科學(xué)計算功能 它的設(shè)計按軟件工程的方法進行 系統(tǒng)具有良好的界面 必要的交互信息 簡約的美觀效果 使用人員能快捷簡單地進行操作 即可單機按鈕進行操作 也可直接通過鍵盤輸入 即時準確地獲取所需要的計算結(jié)果 充分降低了數(shù)字 計算的難度和節(jié)約了時間 對人們的生活有一定幫助 其具體的功能有 1 運算更加簡介 2 兩個對話框 一個顯示輸入數(shù)據(jù) 另一個顯示計算結(jié)果 3 實現(xiàn)計算求和 求平均的功能 4 計算功能基本上是用系統(tǒng)內(nèi)部函數(shù) 5 程序可以能自動判斷輸入數(shù)據(jù)的正確性 保證不出現(xiàn)多于一個小數(shù)點 以 0 開頭等不正常現(xiàn)象 6 CE 按鈕可以清除所有已輸出的數(shù)據(jù)從頭計算 我們在學(xué)習(xí)生活中 常會遇到一些繁雜的數(shù)值運算 這時候我們就必須用 到科學(xué)計算器 所以便著手開發(fā)了這個計算器程序 以便用于自己的學(xué)習(xí)工作 要計算功能有以下幾個方面 加法 減法 乘法 除法 求冪 求模 求和 求平均 求平方根 求三角函數(shù) 進制換算等 2 1 2 系統(tǒng)功能 1 十進制數(shù)的加 減 乘 除 乘方 取模等簡單計算 2 科學(xué)計算函數(shù) 包括 反 正弦 反 余弦 反 正切 反 余切 開方 指數(shù)等函數(shù)運算 3 以角度 弧度兩種方式實現(xiàn)上述部分函數(shù) 梯度沒有提供 4 不同進制有不同的運算方式 5 判斷輸入輸出的正確性 2 1 3課程設(shè)計內(nèi)容 課題名稱 計算器的實現(xiàn) 基本說明 我們實現(xiàn)了一個標準計算器的運算以及科學(xué)計算器的運算的集成 使其較之 方便 快捷 輕松 看上去美觀大方 少了切換的繁瑣操作 并且 我們做的更加簡約 2 2設(shè)計大概 2 2 1設(shè)計思路 所編寫的計算器是基于對話框的程序 能夠進行加減乘除的運算 開方 立 方 三角函數(shù) 反三角函數(shù) 階乘 求和 求平均 進制轉(zhuǎn)換運算等功能 仿 照 Windows 自帶的計算器進行編寫 如圖 2 2 1 開 始 選擇進制 選擇角度采取默認形勢直接輸入數(shù)據(jù) 選擇 鍵值進行計算類型 運算 錯誤匯 總 不同計算類 型進行計算 計算結(jié)果輸出 到輸出框顯示 結(jié) 束 在輸入框顯示 按鍵計算信息 如圖 2 2 1 設(shè)計思路 圖 2 2 2控件定義 如表 2 2 2 只列舉一部分控件 ID CAPTION Member IDC 0 IDC 9 0 9 m 0 m 9 IDC A IDC F A F m A m F IDC ADD m ADD IDC POINT m POINT IDC POW x y m Pow IDC SQRT Sqrt m SQRT IDC DIVID m DIVID IDC CE CE m CE IDC C C m C IDC BACKSPACE Backspace m BACKSPACE IDC Ln Ln m LN IDC Log Log m LOG IDC Sin Sin m SIN IDC Cos Cos m COS IDC Tan Tan m TAN IDC ACOS acos m ACOS IDC ATAN atan m ATAN IDC XOR Xor m Xor IDC BUTTON43 MS m BUTTON43 IDC MOD Mod m MOD IDC BUTTON40 Dms m BUTTON40 IDC BUTTON49 Ave m BUTTON49 IDC BUTTON48 Sum m BUTTON48 IDC BUTTON47 S m BUTTON47 IDC NOT Not m NOT IDC BUTTON46 Dat m BUTTON46 IDC PI pi m PI IDC BUTTON42 M m BUTTON42 IDC BUTTON45 MC m BUTTON45 IDC Equal m EQUAL 2 2 3 變量的定義以及初始化 int Sel EndSel 定義輸入或插入時光標的位置 int Expr pos 詞法分析表達式時 標記當前字符位置 int OS pos 操作數(shù)棧頂位置 int old pos 歷史表達式的位置 int old head 歷史表達式數(shù)組中最最前位置 int old back 歷史表達式數(shù)組中最最后位置 int error mark 標記表達式錯誤 int parentheses count 記錄表達式中括號的個數(shù) double operand Stack 200 操作數(shù)棧 CString old expression 20 表達式歷史記錄 以上為定義部分 以下為初始化部分 Sel 0 輸入的光標位置 EndSel 0 插入光標的位置 Expr pos 0 當前字符的位置 OS pos 0 操作數(shù)棧頂位置 old pos old head old back 0 歷史表達式的位置 error mark 0 表達式錯誤 parentheses count 0 括號的個數(shù) OLD ANSWER T 初始化 第三章 系統(tǒng)實現(xiàn) 3 1窗體設(shè)計 3 1 1設(shè)計步驟 利用 MFC AppWinzard 生成計算器應(yīng)用程序框架具體步驟如下 1 執(zhí)行 VC 6 0 程序 選擇文件 新建命令 轉(zhuǎn)到工程選項卡 選擇 MFC AppWizard exe 選項 然后在工程名稱輸入名字 一般以 C 開頭 也可以 自定義 位置路徑自定義 2 單擊確定 彈出 MFC 應(yīng)用程序向?qū)?步驟 1 對話框 選中單選按鈕基本對 話框 單擊完成即可 如圖所示 3 1 2控件定義 1 為控件添加成員變量已經(jīng)在系統(tǒng)設(shè)計里面列舉出 這里就不再重復(fù) 2 為控件添加消息 查看 類向?qū)?轉(zhuǎn)到 Message Maps 選項卡 為控 件添加 BN CLICKED 消息 單擊確定即可 具體哪些控件這里就不再詳細介紹了 圖 3 1 1 文件新建示意 圖 3 1 3一部分操作截圖 圖 3 1 3 相關(guān)實現(xiàn)的截圖 圖 3 1 2 添加消息的截圖 3 2 程序核心代碼 3 2 1數(shù)字鍵和字母鍵核心代碼 void CCalculatorDlg OnNumberKey UINT nID 按鍵輸入 m Edit GetSel Sel EndSel 得到輸入框的光標位置 switch nID 在光標位置插入按鈕表示的字符 在輸入框插入相應(yīng)的數(shù)值 case IDC 0 m expression Insert Sel 0 break case IDC 1 m expression Insert Sel 1 break case IDC 2 m expression Insert Sel 2 break case IDC 3 m expression Insert Sel 3 break case IDC 4 m expression Insert Sel 4 break case IDC 5 m expression Insert Sel 5 break case IDC 6 m expression Insert Sel 6 break case IDC 7 m expression Insert Sel 7 break case IDC 8 m expression Insert Sel 8 break case IDC 9 m expression Insert Sel 9 break case IDC A m expression Insert Sel A break case IDC B m expression Insert Sel B break case IDC C m expression Insert Sel C break case IDC D m expression Insert Sel D break case IDC E m expression Insert Sel E break case IDC F m expression Insert Sel F break Sel 光標后移 UpdateData FALSE m Edit SetSel Sel Sel 更新輸入框光標后移位置 UpdateData FALSE 3 2 2計算類型函數(shù)的核心代碼 void CCalculatorDlg compute Operator Op 根據(jù)操作計算類型 計算結(jié)果 switch Op case OpAdd operand Stack OS pos 2 operand Stack OS pos 1 OS pos break case OpSubtract operand Stack OS pos 2 operand Stack OS pos 1 OS pos break case OpMultiply operand Stack OS pos 2 operand Stack OS pos 1 OS pos break case OpDivide if operand Stack OS pos 1 0 error 5 break else operand Stack OS pos 2 operand Stack OS pos 1 OS pos break case OpMod if operand Stack OS pos 1 0 error 5 break else int64 temp 0 temp int64 operand Stack OS pos 2 operand Stack OS pos 1 operand Stack OS pos 1 temp operand Stack OS pos 2 operand Stack OS pos 1 OS pos break case OpPower operand Stack OS pos 2 pow operand Stack OS pos 2 operand Stack OS pos 1 OS pos break case OpLog operand Stack OS pos 1 log10 operand Stack OS pos 1 break case OpLn operand Stack OS pos 1 log operand Stack OS pos 1 break case OpSqrt operand Stack OS pos 1 sqrt operand Stack OS pos 1 break case OpExp operand Stack OS pos 1 exp operand Stack OS pos 1 break case OpSin if m Radio2 0 operand Stack OS pos 1 operand Stack OS pos 1 PI 180 operand Stack OS pos 1 sin operand Stack OS pos 1 break case OpCos if m Radio2 0 operand Stack OS pos 1 operand Stack OS pos 1 PI 180 operand Stack OS pos 1 cos operand Stack OS pos 1 break case OpTan if m Radio2 0 operand Stack OS pos 1 operand Stack OS pos 1 PI 180 operand Stack OS pos 1 tan operand Stack OS pos 1 break case OpAsin if operand Stack OS pos 1 1 operand Stack OS pos 1 1 operand Stack OS pos 1 1 error 9 return operand Stack OS pos 1 acos operand Stack OS pos 1 if m Radio2 0 operand Stack OS pos 1 operand Stack OS pos 1 180 PI break case OpAtan operand Stack OS pos 1 atan operand Stack OS pos 1 if m Radio2 0 operand Stack OS pos 1 operand Stack OS pos 1 180 PI break case OpFactorial if OS pos 0 error 1 return long k k long operand Stack OS pos 1 if k operand Stack OS pos 1 error 8 return int64 temp 1 for long i 1 i k i temp i operand Stack OS pos 1 i m result Format T I64X temp UpdateData FALSE MessageBox sdfsd operand Stack OS pos 1 double temp break 3 2 3 提示錯誤的核心代碼 void CCalculatorDlg error int error type 錯誤類型 錯誤處理 switch error type case 1 m result 錯誤 缺少操作數(shù) break case 2 m result 錯誤 括號不匹配 break case 3 m result 錯誤 函數(shù)名不正確 break case 4 m result 錯誤 非法輸入 break case 5 m result 錯誤 出現(xiàn)除數(shù)為零 break case 6 m result 錯誤 函數(shù)缺少括號 break case 7 m result 錯誤 缺少運算符 break case 8 m result 錯誤 階乘操作數(shù)不是整數(shù) break case 9 m result asin 和 acos 函數(shù)計算必須在 1 1 內(nèi) break error mark 1 3 2 4進制轉(zhuǎn)換的核心代碼 void CCalculatorDlg getword WordType if t 0 error 4 return 表達式為空則返回 if Expr pos 0 int i 0 while Expr pos a w type TyFun return 表達式結(jié)束 則報錯 以下 if else 語句為匹配字符串 if strcmp str ln 0 Fun Ope OpLn else if strcmp str log 0 Fun Ope OpLog else if strcmp str sqrt 0 Fun Ope OpSqrt else if strcmp str exp 0 Fun Ope OpExp else if strcmp str sin 0 Fun Ope OpSin else if strcmp str cos 0 Fun Ope OpCos else if strcmp str tan 0 Fun Ope OpTan else if strcmp str asin 0 Fun Ope OpAsin else if strcmp str acos 0 Fun Ope OpAcos else if strcmp str atan 0 Fun Ope OpAtan else if m expression Expr pos w type TyFun else error 3 w type TyFun return 匹配不到函數(shù)單詞 報錯 w type TyFun return switch m expression Expr pos 當前字符為操作運算符 則設(shè)置單詞類型 和操作運算 case Fun Ope OpAdd Expr pos w type oper break case Fun Ope OpSubtract Expr pos w type oper break case Fun Ope OpMultiply Expr pos w type oper break case Fun Ope OpDivide Expr pos w type oper break case Fun Ope OpPower Expr pos w type oper break case Fun Ope Left par Expr pos w type oper break case Fun Ope Right par Expr pos w type oper break case Fun Ope OpMod Expr pos w type oper break default error 4 return 其他字符都為非法字符 報錯 else if Expr pos t w type TyEnd 表達式已結(jié)束 返回 else error 4 return 3 2 5八進制單選按鈕消息響應(yīng)函數(shù)代碼 void CCalculatorDlg OnOctal 八進制單選按鈕消息響應(yīng)函數(shù) TODO Add your control notification handler code here WordType type Operator Ope CString result int system system m Radio1 m Radio1 2 if OLD ANSWER GetLength 0 m expression OLD ANSWER UpdateData FALSE getword type Ope system if type Tynum result m result clean all m expression m result result UpdateData FALSE Sel m expression GetLength m Edit SetSel Sel Sel UpdateData FALSE else Expr pos 0 OS pos 0 error mark 0 parentheses count 0 m result T m 2 EnableWindow TRUE m 3 EnableWindow TRUE m 4 EnableWindow TRUE m 5 EnableWindow TRUE m 6 EnableWindow TRUE m 7 EnableWindow TRUE m 8 EnableWindow FALSE m 9 EnableWindow FALSE m A EnableWindow FALSE m B EnableWindow FALSE m C EnableWindow FALSE m D EnableWindow FALSE m E EnableWindow FALSE m F EnableWindow FALSE m PI EnableWindow FALSE 3 2 6二進制單選按鈕消息響應(yīng)函數(shù) void CCalculatorDlg OnBinary 二進制單選按鈕消息響應(yīng)函數(shù) TODO Add your control notification handler code here E AddSub WordType type Operator Ope CString result int system system m Radio1 m Radio1 3 if OLD ANSWER GetLength 0 m expression OLD ANSWER UpdateData FALSE getword type Ope system if type Tynum result m result clean all m expression m result result UpdateData FALSE Sel m expression GetLength m Edit SetSel Sel Sel UpdateData FALSE else Expr pos 0 OS pos 0 error mark 0 parentheses count 0 m result T m 2 EnableWindow FALSE m 3 EnableWindow FALSE m 4 EnableWindow FALSE m 5 EnableWindow FALSE m 6 EnableWindow FALSE m 7 EnableWindow FALSE m 8 EnableWindow FALSE m 9 EnableWindow FALSE m A EnableWindow FALSE m B EnableWindow FALSE m C EnableWindow FALSE m D EnableWindow FALSE m E EnableWindow FALSE m F EnableWindow FALSE m PI EnableWindow FALSE 第四章 系統(tǒng)運行 4 1測試以及運行界面 4 1 1 程序主界面測試 4 1 2運行的計算結(jié)果 圖 4 1 1 主界面運行的截圖 圖 4 1 2 操作計算器進行計算 4 1 3轉(zhuǎn)換進制計算 圖 4 1 3 1 利用八進制進行計算 圖 4 1 3 2 利用十六進制進行計算 4 2 測試 4 2 1測試研究與選擇 測試過程中要判斷是否成功 要分析程序界面的變化和計算數(shù)據(jù)的結(jié)果是 否正確以及各功能鍵是否能正常實用 梯度不能實用 4 2 2測試環(huán)境 測試系統(tǒng) Windows 7 64 位 測試工具 Visual Studio C 6 0 中文版 總 結(jié) 經(jīng)過多番測試 得出結(jié)論為設(shè)計的計算器能夠完成功能描述內(nèi)容中的全部 功能 經(jīng)過幾個星期的 VC 課程設(shè)計 我們順利完成該課程設(shè)計 并收獲良 多 我們大體總結(jié)了以下幾點 基本功要過硬 不能馬虎經(jīng)常犯的小錯誤 提高自己找錯糾錯能力 通常 錯誤總是那幾種 多練習(xí)就熟練了 要善于查找資料 提高自己的資料查詢能力 要善于利用網(wǎng)絡(luò)來獲得知識 獲得幫助 開始著手程序設(shè)計時 有些功能感覺無從下手 都不知道要干什么 這些問題這要找到相關(guān)的資料就會得到提示從而理解所要解決問題的大致方向 有了明確的目的 就可以發(fā)揮自己的頭腦來完成它了 要善于思考 程序中有些實現(xiàn)難點和最初完成程序時免不了的許多不足就 需要自己根據(jù)代碼認真思考來解決 只有這樣才能糾正程序的不足 并使其更 加人性化 這次課程設(shè)計讓我們學(xué)到了很多 不僅鞏固了 MFC 程序設(shè)計知識 而且也 培養(yǎng)了我們的動手能力 令我們的創(chuàng)造性思維得到拓展 期待今后有更多類似 的鍛煉機會 通過這次課程設(shè)計 可以明顯的感覺到它彌補了課程教學(xué)的和實驗中知識 的深度和廣度方面的不足 也讓我們進一步掌握了面向?qū)ο蟪绦蛟O(shè)計的基本方 法和編程技巧 同時也鞏固所學(xué)理論知識 似然花費了不止一點點的時間和精 力 不過那確實挺值得的 既讓我們認識到自己知識方面的缺陷 又培養(yǎng)了我 獨立分析問題 解決問題的能力 課程設(shè)計是需要大量時間去動手練習(xí)才能體驗到它的內(nèi)涵的 同時還需要 用心地投入 時間和情感花下去之后 的確感受到有所收獲 增加了對編程的 興趣 通過這次課程設(shè)計 掌握了對話框的相關(guān)操作 也體會到書寫代碼一定 要仔細 有時候一小點拼寫錯誤會浪費很多調(diào)試程序的時間 再有一點就是要 好好學(xué)習(xí)英語 對編程有很大幫助 總之 這次課程設(shè)計學(xué)到了很多 通過實 踐真正的做到了學(xué)有所用 參考文獻 1 鄭阿奇 Visual C 實用教程 第三版 北京 電子工業(yè)出版社 2000 2 嚴華峰 Visual C 課程設(shè)計案例精編 北京 中國水利水電出版社 2002- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 科學(xué) 計算器 課程設(shè)計 報告 C+
鏈接地址:http://www.3dchina-expo.com/p-6528809.html