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