最新版)c+實現(xiàn)計算器畢業(yè)課程設(shè)計報告_第1頁
最新版)c+實現(xiàn)計算器畢業(yè)課程設(shè)計報告_第2頁
最新版)c+實現(xiàn)計算器畢業(yè)課程設(shè)計報告_第3頁
最新版)c+實現(xiàn)計算器畢業(yè)課程設(shè)計報告_第4頁
最新版)c+實現(xiàn)計算器畢業(yè)課程設(shè)計報告_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、得分:信電工程學(xué)院課程設(shè)計報告基于VC的表達式計算器軟件設(shè)計課程:程序設(shè)計綜合訓(xùn)練1班級:12軟嵌2班學(xué)號:姓名:謝文靖指導(dǎo)教師:朱麗2013年6月28日目錄1 引言 11.1課題背景 21.2 課程設(shè)計目的2 需求分析 -52.2 系統(tǒng)功能模塊2.3 設(shè)計要求 63 系統(tǒng)實現(xiàn) 83.1 對話框界面設(shè)計3.2 數(shù)值計算功能的實現(xiàn) 04 程序關(guān)鍵代碼及運行結(jié)果 -125 總結(jié)與體會1 引言1.1 課題背景計算器是日常生活中十分便捷有效的工具,能實現(xiàn)加、減、乘、除、開方、求 倒數(shù)等簡單運算的工具。 要實現(xiàn)計算功能, 可以用 VC+ 的知識編寫程序來解決 此問題。該計算器大大的降低了數(shù)字計算的難度及

2、提高了計算的準確度和精確 度。該計算器使用非常簡單和方便,對廣大中小學(xué)生的學(xué)習有巨大幫助作用, 也對在職人員的工作有點幫助作用 .1.2 課程設(shè)計目的 本課程是一門實踐性很強的課程,既要熟練掌握相關(guān)概念,又要動手編程,還 要上機調(diào)試運行。同時,本課程也注重提高學(xué)生編寫技術(shù)文檔和技術(shù)文檔閱讀 的能力。學(xué)生通過本課程的學(xué)習實踐,將學(xué)習和強化軟件開發(fā)的能力、文檔寫 作能力、英語閱讀能力、軟件使用能力等。為今后計算機編程的學(xué)習和工作打 下良好、扎實的理論實踐基礎(chǔ)。2 需求分析2.1 系統(tǒng)功能模塊1)輸入的符號,數(shù)字從左向右顯示 ; 點擊“ =”輸出結(jié)果,在輸出行顯 示2)支持加減乘除運算 ;3)支持“

3、 x?y”的運算;4)括號“(”“)”的使用 ;5)支持混合運算 ;6)功能鍵“ ANS , “ CLEAR , “ BACKSPACE勺使用;7) 計算器的輸入方式:支持鼠標點擊計算器鍵輸入;8)計算器計算結(jié)果的輸出方式:在計算器窗口的輸出行顯示9)算數(shù)運算的數(shù)據(jù)類型:整數(shù)和浮點數(shù) ;10)特殊情況的計算 ;11)以上所有的運算都是在 10 進制下進行 .1)輸入的符號,數(shù)字從右向左顯示先輸入“ 8”點擊“=”輸出結(jié)果,在輸出行顯示2)支持加減乘除運算.a. 乘法計算:d.除法運算(特殊情況見10.B)9/42.252)支持求次方(x ?y)運算。求次方(x ?y)運算:“?”為次方(x ?

4、y)在輸入行中的顯示符號4?2164)“(”“)”的使用。(括號的使用)要使用“(” “)”的時候,先點擊“(”,再輸入數(shù)字或符號,內(nèi)容輸入完畢 以后,點擊“)”,完成“(” “)”的所有功能。例如:2 X( 2+2) =?2*(2+22*(2+2)2* (2+2)85) 支持混合運算附:運算符的優(yōu)先級表優(yōu)先級功能鍵顯示結(jié)合律從(、 )( 、 )自左向右高x?y、1/x?、自左向右到X、*、/自左向右低+ + 自左向右例如:(5+2)X 5=?(5+2) *5. /356) 功能鍵“ CLEAR及“ BACKSPACE的使用。a “CLEAR為清0鍵。只要按下“ CLEAR鍵,輸入行所有字符清

5、0,輸 出行回到原始狀態(tài)。輸入前:(5+2) *5輸入后:0b. “BACKSPACES退格鍵。當輸入任何數(shù)字或運算符,只要按下“BACKSPACE 鍵,字符位自右向左消去一位。(注:初始的“ 0”不能被刪除)輸入前:(5+2) *5輸入后:(5+2)*C. “ANS為變量儲存器。當一次結(jié)果被清除后,只要按下“ANS鍵就會顯示這個結(jié)果。如:7777)計算器的輸入方式:只支持鼠標點擊計算器鍵輸入;8)計算器計算結(jié)果的輸出方式:在計算器窗口的輸出行顯示。9)算數(shù)運算的數(shù)據(jù)類型:整數(shù)和浮點數(shù)。a. 輸入行最大顯示的字符數(shù)32位,每個運算符算一位;b. “(”,“)”各占一個字符位;c. 輸出行最大顯

6、示的字符數(shù)為32位;d. 純小數(shù)顯示的最大字符數(shù)為小數(shù)點后 30位,整數(shù)及小數(shù)點各占一位;若純小數(shù)為負數(shù),則顯示最大字符數(shù)為小數(shù)點后29位,“-”占一位;e. 輸入行在未輸入任何數(shù)字的時候,顯示“ 0”,只占一個字符位;當輸入任 何數(shù)字時?!?”消失,輸入的的數(shù)字取代“ 0”;當輸入任何運算符時。默認之 前輸入數(shù)字“ 0” ;f. 點擊“=”鍵后方可顯示數(shù)字或字母或漢字10) 特殊情況的運算A.運算結(jié)果整數(shù)部分超出32位,顯示Infinity (無窮大);出現(xiàn)運算異常!9999*InfinityB.除數(shù)為0的情況,提示用戶被除數(shù)不能為零!1/0除零錯誤C在運算時,若結(jié)果為純小數(shù),小數(shù)位超過30

7、位,則超出的字符舍棄2/30.6若舍棄超出部位后,結(jié)果全為 0,則結(jié)果為01/9939 0D.在運算時,若結(jié)果的整數(shù)位不為 0a 總位數(shù)在最大字符位內(nèi),則直接顯示; b總位數(shù)在最大字符位以外,整數(shù)部分在最大字符位以內(nèi),則只優(yōu)先顯示整數(shù)部位,棄掉32位以后的字符輸出界面顯示“底數(shù)不能為0”11 )以上所有的運算都是在10進制下進行2.2設(shè)計要求了解Windows編程的基礎(chǔ)知識,掌握MFC應(yīng)用程序的基本知識(2) 理解需求分析過程,掌握需求分析文檔編寫。(3) 理解面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法。(4) 掌握用VC+開發(fā)MFC應(yīng)用程序的一般步驟和方法。(5) 掌握基于對話框的應(yīng)用程序的編寫,主要

8、包括文本框和按鈕等。(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 X( 2+2) =?2*(2+22*(2+2)2* (2+2)4程序關(guān)鍵代碼及運行結(jié)果#include viostream#include #include Stack.h#include using namespace std;bool jisuan(double a,double b,char c,double&

9、 d)switch (c)case +:d=a+b;/coutvvavv+vvbvvendl;return true;case -:d=a-b;/coutvvavv-vvbvvendl;return true;d=a*b;/coutvvavv*vvbvvendl;return true;case /:if(b=0)throw CString( 除零錯誤 !);/couta/bendl;d=a/b;return true;case ,:/couta,b0)/ 將符號壓棧op.Add(char)num);elsechar mid;while(arraynum-40pre-400)int MyChe

10、ck=(int)name.at(i-1);if(MycheckcH57cocoMycheckvH48=MycheckHH4*1)breake_sefhrowcsng=盤4廿孚洪幵孑血并=)ewefhrow csfring(=圧潔目礙孚=)opDe 一 efe(mid)cafe hosf ring e)fh row CSf ring:圧潔目礙孚=) doub 一 e dasrTdasrN fry宀dasr.De_efe(dasr2)sdasrDe 一 efe(dasr*1)scafe hosf ring e)宀fh row CSf ring:&嶽蒲=)s if(uisuan(dasr*1Q.as

11、r2midQ.asr*1)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 #include .compuetrdlg.husing namespace std;#ifdef _DEBUG#define new DEBUG_NEW#endifvoid CCompuetrDlg:OnPaint(

12、)if (IsIconic()CPaintDC dc(this); / 用于繪制的設(shè)備上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使圖標在工作矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Heig

13、ht() - cyIcon + 1) / 2;/ 繪制圖標dc.DrawIcon(x, y, m_hIcon);elseCRect rect;CPaintDC dc(this);GetClientRect(rect);dc.FillSolidRect(rect,RGB();/ 設(shè)置背景顏色CDialog:OnPaint();CDialog:OnPaint();/ Compuetr.cpp : 定義應(yīng)用程序的類行為。/#include stdafx.h#include Compuetr.h#include CompuetrDlg.h#ifdef _DEBUG#define new DEBUG_N

14、EW#endif/ CCompuetrAppBEGIN_MESSAGE_MAP(CCompuetrApp, CWinApp)ON_COMMAND(ID_HELP, CWinApp:OnHelp)END_MESSAGE_MAP()/ CCompuetrApp 構(gòu)造CCompuetrApp:CCompuetrApp()/ TODO: 在此處添加構(gòu)造代碼,/ 將所有重要的初始化放置在 InitInstance 中/ 唯一的一個 CCompuetrApp 對象CCompuetrApp theApp;/ CCompuetrApp 初始化BOOL CCompuetrApp:InitInstance()/

15、如果一個運行在 Windows XP 上的應(yīng)用程序清單指定要/ 使用 ComCtl32.dll 版本 6 或更高版本來啟用可視化方式, /則需要 InitCommonControls() 。否則,將無法創(chuàng)建窗口。 InitCommonControls();CWinApp:InitInstance();/ 標準初始化/ 如果未使用這些功能并希望減小/ 最終可執(zhí)行文件的大小,則應(yīng)移除下列/ 不需要的特定初始化例程/ 更改用于存儲設(shè)置的注冊表項/ TODO: 應(yīng)適當修改該字符串,/ 例如修改為公司或組織名SetRegistryKey(_T( 應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序 ); CCompuetrD

16、lg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: 在此放置處理何時用“確定”來關(guān)閉/對話框的代碼else if (nResponse = IDCANCEL)/ TODO: 在此放置處理何時用“取消”來關(guān)閉/對話框的代碼/ 由于對話框已關(guān)閉,所以將返回 FALSE 以便退出應(yīng)用程序,/ 而不是啟動應(yīng)用程序的消息泵。return FALSE;/stack#include#include#include using namespace std; template class

17、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;bool isFull()const;T Top() const;LinkedStack&Add(const T& x);LinkedStack&Delete(T& x);int getLength()return length

18、; private:Node *top;int length;template LinkedStack:LinkedStack()Node *next;while(top)next=top-link;delete top;top=next;template bool LinkedStack:isFull()consttryNode *p=new Node;delete p;return false;catch(bad_alloc& e)return true;template T LinkedStack:Top()const if(isEmpty()throw CString( 堆??债惓?!);return top-data;template LinkedStack& LinkedStack:Add(const T& x) Node *p=new Node; p-data=x;p-link=top; top=p; length+;return *this; template LinkedStack& LinkedStack:Delete(T& x) if(isEmpty() throw CString( 堆??债惓?!);x=top-data;Node *p=top;top=top-link;delete p

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論