版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 得分:信電工程學(xué)院課程設(shè)計(jì)報(bào)告基于VC的表達(dá)式計(jì)算器軟件設(shè)計(jì) 課程: 程序設(shè)計(jì)綜合訓(xùn)練1 班級: 12軟嵌2班學(xué)號: 姓名: 謝文靖指導(dǎo)教師: 朱麗2013年 6 月28日目 錄 1引言- 11.1課題背景-21.2課程設(shè)計(jì)目的-32需求分析-52.2系統(tǒng)功能模塊-52.3設(shè)計(jì)要求-63系統(tǒng)實(shí)現(xiàn) -83.1 對話框界面設(shè)計(jì)-83.2 數(shù)值計(jì)算功能的實(shí)現(xiàn)-104程序關(guān)鍵代碼及運(yùn)行結(jié)果 -125總結(jié)與體會(huì) -15 專心-專注-專業(yè)1 引言1.1 課題背景計(jì)算器是日常生活中十分便捷有效的工具,能實(shí)現(xiàn)加、減、乘、除、開方、求倒數(shù)等簡單運(yùn)算的工具。要實(shí)現(xiàn)計(jì)算功能,可以用VC+
2、的知識(shí)編寫程序來解決此問題。該計(jì)算器大大的降低了數(shù)字計(jì)算的難度及提高了計(jì)算的準(zhǔn)確度和精確度。該計(jì)算器使用非常簡單和方便,對廣大中小學(xué)生的學(xué)習(xí)有巨大幫助作用,也對在職人員的工作有點(diǎn)幫助作用.1.2 課程設(shè)計(jì)目的本課程是一門實(shí)踐性很強(qiáng)的課程,既要熟練掌握相關(guān)概念,又要?jiǎng)邮志幊?,還要上機(jī)調(diào)試運(yùn)行。同時(shí),本課程也注重提高學(xué)生編寫技術(shù)文檔和技術(shù)文檔閱讀的能力。學(xué)生通過本課程的學(xué)習(xí)實(shí)踐,將學(xué)習(xí)和強(qiáng)化軟件開發(fā)的能力、文檔寫作能力、英語閱讀能力、軟件使用能力等。為今后計(jì)算機(jī)編程的學(xué)習(xí)和工作打下良好、扎實(shí)的理論實(shí)踐基礎(chǔ)。2 需求分析2.1系統(tǒng)功能模塊1)輸入的符號,數(shù)字從左向右顯示; 點(diǎn)擊“=”輸出結(jié)果,在輸出
3、行顯示2)支持加減乘除運(yùn)算;3)支持“xy”的運(yùn)算;4) 括號“(”“)”的使用;5)支持混合運(yùn)算;6)功能鍵“ANS” ,“CLEAR” ,“BACKSPACE”的使用;7)計(jì)算器的輸入方式:支持鼠標(biāo)點(diǎn)擊計(jì)算器鍵輸入; 8)計(jì)算器計(jì)算結(jié)果的輸出方式:在計(jì)算器窗口的輸出行顯示9)算數(shù)運(yùn)算的數(shù)據(jù)類型:整數(shù)和浮點(diǎn)數(shù);10)特殊情況的計(jì)算;11)以上所有的運(yùn)算都是在10進(jìn)制下進(jìn)行.1)輸入的符號,數(shù)字從右向左顯示。 先輸入“8”8 再輸入“”8* 點(diǎn)擊“=”輸出結(jié)果,在輸出行顯示.2)支持加減乘除運(yùn)算.輸入行a.乘法計(jì)算:8*3 24輸出行 b. 加法計(jì)算 1+0 1 c. 減法計(jì)算8-3 5 d.
4、除法運(yùn)算(特殊情況見10.B)9/4 2.25 2) 支持求次方(x y)運(yùn)算。求次方(x y)運(yùn)算:“”為次方(x y)在輸入行中的顯示符號42 164)“(”“)”的使用。(括號的使用)要使用“(”“)”的時(shí)候,先點(diǎn)擊“(”,再輸入數(shù)字或符號,內(nèi)容輸入完畢以后,點(diǎn)擊“)”,完成“(”“)”的所有功能。例如:2(2+2)=?2 2*( 2*(2+2 2*(2+2) 2*(2+2) 85)支持混合運(yùn)算。附:運(yùn)算符的優(yōu)先級表優(yōu)先級功能鍵顯示結(jié)合律從高到低( 、 ) ( 、 )自左向右xy、1/x、自左向右、*、/自左向右自左向右例如:(5+2)5=?混合運(yùn)算則按優(yōu)先級表中的運(yùn)算符優(yōu)先順序從左向右
5、計(jì)算(5+2)*5 356)功能鍵“CLEAR”及“BACKSPACE”的使用。 a“CLEAR”為清0鍵。只要按下“CLEAR”鍵,輸入行所有字符清0,輸出行回到原始狀態(tài)。輸入前:(5+2)*5 輸入后:0 b.“BACKSPACE”為退格鍵。當(dāng)輸入任何數(shù)字或運(yùn)算符,只要按下“BACKSPACE”鍵,字符位自右向左消去一位。(注:初始的“0”不能被刪除)輸入前:(5+2)*5 輸入后:(5+2)* C.“ANS”為變量儲(chǔ)存器。當(dāng)一次結(jié)果被清除后,只要按下“ANS”鍵就會(huì)顯示這個(gè)結(jié)果。如: 5+2 7 按“CLEAR”鍵后,再按“ANS”鍵就會(huì)這樣 77 77)計(jì)算器的輸入方式:只支持鼠標(biāo)點(diǎn)擊
6、計(jì)算器鍵輸入;8)計(jì)算器計(jì)算結(jié)果的輸出方式:在計(jì)算器窗口的輸出行顯示。9)算數(shù)運(yùn)算的數(shù)據(jù)類型:整數(shù)和浮點(diǎn)數(shù)。a.輸入行最大顯示的字符數(shù)32位,每個(gè)運(yùn)算符算一位;b.“(”,“)”各占一個(gè)字符位;c.輸出行最大顯示的字符數(shù)為32位;d.純小數(shù)顯示的最大字符數(shù)為小數(shù)點(diǎn)后30位,整數(shù)及小數(shù)點(diǎn)各占一位;若純小數(shù)為負(fù)數(shù),則顯示最大字符數(shù)為小數(shù)點(diǎn)后29位,“-”占一位;e.輸入行在未輸入任何數(shù)字的時(shí)候,顯示“0”,只占一個(gè)字符位;當(dāng)輸入任何數(shù)字時(shí)?!?”消失,輸入的的數(shù)字取代“0”;當(dāng)輸入任何運(yùn)算符時(shí)。默認(rèn)之前輸入數(shù)字“0”;f.點(diǎn)擊“=”鍵后方可顯示數(shù)字或字母或漢字。10)特殊情況的運(yùn)算A.運(yùn)算結(jié)果整數(shù)
7、部分超出32位,顯示Infinity(無窮大);出現(xiàn)運(yùn)算異常! 99999* InfinityB.除數(shù)為0的情況,提示用戶被除數(shù)不能為零!1/0 除零錯(cuò)誤 C在運(yùn)算時(shí),若結(jié)果為純小數(shù),小數(shù)位超過30位,則超出的字符舍棄。2/30 .666若舍棄超出部位后,結(jié)果全為0,則結(jié)果為01/9999 0 D在運(yùn)算時(shí),若結(jié)果的整數(shù)位不為0a總位數(shù)在最大字符位內(nèi),則直接顯示;b總位數(shù)在最大字符位以外,整數(shù)部分在最大字符位以內(nèi),則只優(yōu)先顯示整數(shù)部位,棄掉32位以后的字符5/3 1.6666E當(dāng)用戶輸入“0”時(shí),若“0”之前的算式或數(shù)字的值為0,點(diǎn)擊“=”后,輸出界面顯示“底數(shù)不能為0”11) 以上所有的運(yùn)算都
8、是在10進(jìn)制下進(jìn)行2.2設(shè)計(jì)要求(1)了解Windows編程的基礎(chǔ)知識(shí),掌握MFC應(yīng)用程序的基本知識(shí)。(2)理解需求分析過程,掌握需求分析文檔編寫。(3)理解面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法。(4)掌握用VC+開發(fā)MFC應(yīng)用程序的一般步驟和方法。(5)掌握基于對話框的應(yīng)用程序的編寫,主要包括文本框和按鈕等。(6)掌握后綴表達(dá)式算法。(7)掌握VC+開發(fā)工具的使用。包括資源管理,項(xiàng)目創(chuàng)建,運(yùn)行調(diào)試等。(8)完成表達(dá)式的計(jì)算器應(yīng)用程序,實(shí)現(xiàn)基本的加、減、乘、除等四則運(yùn)算,且支持包括括號的表達(dá)式運(yùn)算功能。3系統(tǒng)實(shí)現(xiàn)3.1對話框界面設(shè)計(jì)3.2數(shù)值計(jì)算實(shí)現(xiàn)例如:2(2+2)=?2 2*( 2*(2+2
9、2*(2+2) 2*(2+2) 84程序關(guān)鍵代碼及運(yù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、零錯(cuò)誤!);/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(括號中的表達(dá)式不合法);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(表達(dá)式異常); data.Add(data1);pre=(int)op.Top();/ CompuetrDlg.cpp : 實(shí)現(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 中/ 唯一的一個(gè) CCompuetrApp 對象CCompuetrApp theApp;/ CCompuetrApp 初始化BOOL CCompuetrApp:InitInstance()/ 如果一個(gè)運(yùn)行在 Windows XP 上的應(yīng)用程序清單指定要/ 使用 ComCtl32.dll 版本 6 或更高版本來啟用可視化方式,/則需要 InitCommonControls()。否則,將無法創(chuàng)建窗口。InitCommonControls();CWinApp:InitInstance();/ 標(biāo)準(zhǔn)初始化/ 如果未使用這些功能并希望減小/ 最終可執(zhí)行文
16、件的大小,則應(yīng)移除下列/ 不需要的特定初始化例程/ 更改用于存儲(chǔ)設(shè)置的注冊表項(xiàng)/ 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: 在此放置處理何時(shí)用“確定”來關(guān)閉/對話框的代碼else if (nResponse = IDCANCEL)/ TODO: 在此放置處理何時(shí)用“取消”來關(guān)閉/對話框的代碼 / 由于對話框已關(guān)閉,所
17、以將返回 FALSE 以便退出應(yīng)用程序,/ 而不是啟動(dò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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 頭發(fā)脫色劑產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 分配藥品用醫(yī)院推車產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 2024內(nèi)蒙古呼倫貝爾滿洲里市事業(yè)單位人才回引18人筆試模擬試題及答案解析
- 班級小型演出策劃與準(zhǔn)備計(jì)劃
- 班主任奉獻(xiàn)愛心播撒陽光計(jì)劃
- 班級未來發(fā)展方向的研討會(huì)計(jì)劃
- 落實(shí)精細(xì)化管理的具體措施計(jì)劃
- 2024-2025部編版語文一年級上冊閱讀7兩件寶
- 中醫(yī)診所負(fù)責(zé)人合作協(xié)議書范文
- 三年級體育-腳內(nèi)側(cè)踢球與接球-教案-王雄
- 醫(yī)院質(zhì)控工作匯報(bào)
- MOOC 刑事訴訟法-西南政法大學(xué) 中國大學(xué)慕課答案
- 2024年西藏自治區(qū)中考地理真題(解析版)
- 2023年職業(yè)技能:平版制版工技術(shù)及理論知識(shí)考試題附含答案
- 2024年甘肅省法院系統(tǒng)聘用制書記員招聘筆試參考題庫附帶答案詳解
- 北京市朝陽區(qū)2023-2024學(xué)年四年級上學(xué)期期末英語試題
- 如何做好工程項(xiàng)目策劃
- 中法教育比較
- 慢性腎臟病慢病管理
- 團(tuán)員積極分子培訓(xùn)課件
- 講座《如何備好一節(jié)數(shù)學(xué)課》(青年教師年月培訓(xùn))包新華課件
評論
0/150
提交評論