




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 得分:信電工程學(xué)院課程設(shè)計報告基于VC的表達式計算器軟件設(shè)計 課程: 程序設(shè)計綜合訓(xùn)練1 班級: 12軟嵌2班學(xué)號: 姓名: 謝文靖指導(dǎo)教師: 朱麗2013年 6 月28日目 錄 1引言- 11.1課題背景-21.2課程設(shè)計目的-32需求分析-52.2系統(tǒng)功能模塊-52.3設(shè)計要求-63系統(tǒng)實現(xiàn) -83.1 對話框界面設(shè)計-83.2 數(shù)值計算功能的實現(xiàn)-104程序關(guān)鍵代碼及運行結(jié)果 -125總結(jié)與體會 -15 專心-專注-專業(yè)1 引言1.1 課題背景計算器是日常生活中十分便捷有效的工具,能實現(xiàn)加、減、乘、除、開方、求倒數(shù)等簡單運算的工具。要實現(xiàn)計算功能,可以用VC+
2、的知識編寫程序來解決此問題。該計算器大大的降低了數(shù)字計算的難度及提高了計算的準(zhǔn)確度和精確度。該計算器使用非常簡單和方便,對廣大中小學(xué)生的學(xué)習(xí)有巨大幫助作用,也對在職人員的工作有點幫助作用.1.2 課程設(shè)計目的本課程是一門實踐性很強的課程,既要熟練掌握相關(guān)概念,又要動手編程,還要上機調(diào)試運行。同時,本課程也注重提高學(xué)生編寫技術(shù)文檔和技術(shù)文檔閱讀的能力。學(xué)生通過本課程的學(xué)習(xí)實踐,將學(xué)習(xí)和強化軟件開發(fā)的能力、文檔寫作能力、英語閱讀能力、軟件使用能力等。為今后計算機編程的學(xué)習(xí)和工作打下良好、扎實的理論實踐基礎(chǔ)。2 需求分析2.1系統(tǒng)功能模塊1)輸入的符號,數(shù)字從左向右顯示; 點擊“=”輸出結(jié)果,在輸出
3、行顯示2)支持加減乘除運算;3)支持“xy”的運算;4) 括號“(”“)”的使用;5)支持混合運算;6)功能鍵“ANS” ,“CLEAR” ,“BACKSPACE”的使用;7)計算器的輸入方式:支持鼠標(biāo)點擊計算器鍵輸入; 8)計算器計算結(jié)果的輸出方式:在計算器窗口的輸出行顯示9)算數(shù)運算的數(shù)據(jù)類型:整數(shù)和浮點數(shù);10)特殊情況的計算;11)以上所有的運算都是在10進制下進行.1)輸入的符號,數(shù)字從右向左顯示。 先輸入“8”8 再輸入“”8* 點擊“=”輸出結(jié)果,在輸出行顯示.2)支持加減乘除運算.輸入行a.乘法計算:8*3 24輸出行 b. 加法計算 1+0 1 c. 減法計算8-3 5 d.
4、除法運算(特殊情況見10.B)9/4 2.25 2) 支持求次方(x y)運算。求次方(x y)運算:“”為次方(x y)在輸入行中的顯示符號42 164)“(”“)”的使用。(括號的使用)要使用“(”“)”的時候,先點擊“(”,再輸入數(shù)字或符號,內(nèi)容輸入完畢以后,點擊“)”,完成“(”“)”的所有功能。例如:2(2+2)=?2 2*( 2*(2+2 2*(2+2) 2*(2+2) 85)支持混合運算。附:運算符的優(yōu)先級表優(yōu)先級功能鍵顯示結(jié)合律從高到低( 、 ) ( 、 )自左向右xy、1/x、自左向右、*、/自左向右自左向右例如:(5+2)5=?混合運算則按優(yōu)先級表中的運算符優(yōu)先順序從左向右
5、計算(5+2)*5 356)功能鍵“CLEAR”及“BACKSPACE”的使用。 a“CLEAR”為清0鍵。只要按下“CLEAR”鍵,輸入行所有字符清0,輸出行回到原始狀態(tài)。輸入前:(5+2)*5 輸入后:0 b.“BACKSPACE”為退格鍵。當(dāng)輸入任何數(shù)字或運算符,只要按下“BACKSPACE”鍵,字符位自右向左消去一位。(注:初始的“0”不能被刪除)輸入前:(5+2)*5 輸入后:(5+2)* C.“ANS”為變量儲存器。當(dāng)一次結(jié)果被清除后,只要按下“ANS”鍵就會顯示這個結(jié)果。如: 5+2 7 按“CLEAR”鍵后,再按“ANS”鍵就會這樣 77 77)計算器的輸入方式:只支持鼠標(biāo)點擊
6、計算器鍵輸入;8)計算器計算結(jié)果的輸出方式:在計算器窗口的輸出行顯示。9)算數(shù)運算的數(shù)據(jù)類型:整數(shù)和浮點數(shù)。a.輸入行最大顯示的字符數(shù)32位,每個運算符算一位;b.“(”,“)”各占一個字符位;c.輸出行最大顯示的字符數(shù)為32位;d.純小數(shù)顯示的最大字符數(shù)為小數(shù)點后30位,整數(shù)及小數(shù)點各占一位;若純小數(shù)為負(fù)數(shù),則顯示最大字符數(shù)為小數(shù)點后29位,“-”占一位;e.輸入行在未輸入任何數(shù)字的時候,顯示“0”,只占一個字符位;當(dāng)輸入任何數(shù)字時?!?”消失,輸入的的數(shù)字取代“0”;當(dāng)輸入任何運算符時。默認(rèn)之前輸入數(shù)字“0”;f.點擊“=”鍵后方可顯示數(shù)字或字母或漢字。10)特殊情況的運算A.運算結(jié)果整數(shù)
7、部分超出32位,顯示Infinity(無窮大);出現(xiàn)運算異常! 99999* InfinityB.除數(shù)為0的情況,提示用戶被除數(shù)不能為零!1/0 除零錯誤 C在運算時,若結(jié)果為純小數(shù),小數(shù)位超過30位,則超出的字符舍棄。2/30 .666若舍棄超出部位后,結(jié)果全為0,則結(jié)果為01/9999 0 D在運算時,若結(jié)果的整數(shù)位不為0a總位數(shù)在最大字符位內(nèi),則直接顯示;b總位數(shù)在最大字符位以外,整數(shù)部分在最大字符位以內(nèi),則只優(yōu)先顯示整數(shù)部位,棄掉32位以后的字符5/3 1.6666E當(dāng)用戶輸入“0”時,若“0”之前的算式或數(shù)字的值為0,點擊“=”后,輸出界面顯示“底數(shù)不能為0”11) 以上所有的運算都
8、是在10進制下進行2.2設(shè)計要求(1)了解Windows編程的基礎(chǔ)知識,掌握MFC應(yīng)用程序的基本知識。(2)理解需求分析過程,掌握需求分析文檔編寫。(3)理解面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法。(4)掌握用VC+開發(fā)MFC應(yīng)用程序的一般步驟和方法。(5)掌握基于對話框的應(yīng)用程序的編寫,主要包括文本框和按鈕等。(6)掌握后綴表達式算法。(7)掌握VC+開發(fā)工具的使用。包括資源管理,項目創(chuàng)建,運行調(diào)試等。(8)完成表達式的計算器應(yīng)用程序,實現(xiàn)基本的加、減、乘、除等四則運算,且支持包括括號的表達式運算功能。3系統(tǒng)實現(xiàn)3.1對話框界面設(shè)計3.2數(shù)值計算實現(xiàn)例如:2(2+2)=?2 2*( 2*(2+2
9、2*(2+2) 2*(2+2) 84程序關(guān)鍵代碼及運行結(jié)果#include #include #include Stack.h#include using namespace std;bool jisuan(double a,double b,char c,double& d) switch (c) case +: d=a+b;/couta+bendl;return true; case -: d=a-b;/couta-bendl;return true; case *: d=a*b;/couta*bendl;return true; case /:if(b=0)throw CString(除
10、零錯誤!);/couta/bendl; d=a/b;return true;case ,: /couta,b0)/將符號壓棧op.Add(char)num);elsechar mid;while(arraynum-40pre-400)int MyCheck=(int)name.at(i-1);if(MyCheck=48|MyCheck=41)break;else throw CString(括號中的表達式不合法);elsethrow CString(出現(xiàn)未匹配的);tryop.Delete(mid);catch(CString e)throw CString(出現(xiàn)未匹配的);double da
11、ta1,data2; trydata.Delete(data2); data.Delete(data1);catch(CString e)throw CString(缺少操作數(shù)); if(!jisuan(data1,data2,mid,data1) result=0; throw CString(表達式異常); data.Add(data1);pre=(int)op.Top();/ CompuetrDlg.cpp : 實現(xiàn)文件/#include stdafx.h#include Compuetr.h#include CompuetrDlg.h#include counter.h#include
12、 #include .compuetrdlg.husing namespace std;#ifdef _DEBUG#define new DEBUG_NEW#endifvoid CCompuetrDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / 用于繪制的設(shè)備上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使圖標(biāo)在工作矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSyste
13、mMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 繪制圖標(biāo)dc.DrawIcon(x, y, m_hIcon);else CRect rect; CPaintDC dc(this); GetClientRect(rect); dc.FillSolidRect(rect,RGB(255,0,0);/設(shè)置背景顏色 CDialog:OnPaint();CDialog:OnPaint(
14、);/ Compuetr.cpp : 定義應(yīng)用程序的類行為。/#include stdafx.h#include Compuetr.h#include CompuetrDlg.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CCompuetrAppBEGIN_MESSAGE_MAP(CCompuetrApp, CWinApp)ON_COMMAND(ID_HELP, CWinApp:OnHelp)END_MESSAGE_MAP()/ CCompuetrApp 構(gòu)造CCompuetrApp:CCompuetrApp()/ TODO: 在此處添加構(gòu)造代碼,/ 將
15、所有重要的初始化放置在 InitInstance 中/ 唯一的一個 CCompuetrApp 對象CCompuetrApp theApp;/ CCompuetrApp 初始化BOOL CCompuetrApp:InitInstance()/ 如果一個運行在 Windows XP 上的應(yīng)用程序清單指定要/ 使用 ComCtl32.dll 版本 6 或更高版本來啟用可視化方式,/則需要 InitCommonControls()。否則,將無法創(chuàng)建窗口。InitCommonControls();CWinApp:InitInstance();/ 標(biāo)準(zhǔn)初始化/ 如果未使用這些功能并希望減小/ 最終可執(zhí)行文
16、件的大小,則應(yīng)移除下列/ 不需要的特定初始化例程/ 更改用于存儲設(shè)置的注冊表項/ TODO: 應(yīng)適當(dāng)修改該字符串,/ 例如修改為公司或組織名SetRegistryKey(_T(應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序);CCompuetrDlg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: 在此放置處理何時用“確定”來關(guān)閉/對話框的代碼else if (nResponse = IDCANCEL)/ TODO: 在此放置處理何時用“取消”來關(guān)閉/對話框的代碼 / 由于對話框已關(guān)閉,所
17、以將返回 FALSE 以便退出應(yīng)用程序,/ 而不是啟動應(yīng)用程序的消息泵。return FALSE;/stack#include#include#includeusing namespace std;template class LinkedStack;template class Node friend LinkedStack;private:T data;Node *link;template class LinkedStackpublic:LinkedStack()top=0;length=0;LinkedStack();bool isEmpty()constreturn top=0;bo
18、ol isFull()const;T Top() const; LinkedStack&Add(const T& x); LinkedStack&Delete(T& x);int getLength()return length; private:Node *top;int length;template LinkedStack:LinkedStack()Node *next;while(top)next=top-link;delete top;top=next;template bool LinkedStack:isFull()consttry Node *p=new Node;delete p;return false;catch(bad_alloc& e) return true;templa
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度直播平臺虛擬禮物開發(fā)與交易服務(wù)合同范本
- 2025年度源代碼保密協(xié)議書-新能源技術(shù)研發(fā)合作專用版
- 2025年度證券投資財務(wù)規(guī)劃與咨詢協(xié)議
- 2025年度房產(chǎn)維修基金管理服務(wù)合同-@-1
- 2025年度廢棄塑料回收利用技術(shù)研發(fā)協(xié)議
- 預(yù)見行業(yè)變化的應(yīng)對計劃
- 開展生物學(xué)科研討會的計劃
- 教學(xué)日常檢查與評估機制計劃
- 患者膳食管理經(jīng)驗與總結(jié)計劃
- 協(xié)助學(xué)生進行自我評估的計劃
- 滬科版八年級物理知識點總結(jié)
- 2024員工質(zhì)量意識培訓(xùn)
- 孫權(quán)勸學(xué)(原卷版)-2024年中考語文之文言文對比閱讀
- 養(yǎng)生館拓客培訓(xùn)
- 《大學(xué)計算機基礎(chǔ)》第2章計算機系統(tǒng)組成
- 失業(yè)保險待遇申領(lǐng)表
- 期末測試卷(一)(試題)2023-2024學(xué)年二年級上冊數(shù)學(xué)蘇教版
- 2024年廣東省初中學(xué)業(yè)水平考試中考英語試卷(真題+答案解析)
- DL-T-255-2012燃煤電廠能耗狀況評價技術(shù)規(guī)范
- 家庭教育家長會教案及反思(3篇模板)
- 人教版PEP英語單詞表三年級到六年級
評論
0/150
提交評論