




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
課程設(shè)計課程名稱C++程序設(shè)計課程設(shè)計題目名稱模擬計算器程序?qū)I(yè)班級2016級軟件工程3班學(xué)生姓名齊佳寧、江亮亮、余唐麗、鄭小云學(xué)號51602043027、51602043028、51602043008、51602043016指導(dǎo)教師華文立二○一七年十二月二十五日蚌埠學(xué)院計算機工程學(xué)院本科課程設(shè)計成績評定表工程權(quán)重分值具體要求得分文獻閱讀與調(diào)查論證0.20100能獨立查閱文獻和從事其它調(diào)研;有收集、加工各種信息的能力設(shè)計質(zhì)量0.30100設(shè)計合理、功能齊備,程序運行正常,實驗數(shù)據(jù)準(zhǔn)確可靠;有較強的實際動手能力論文撰寫質(zhì)量0.20100設(shè)計說明書完全符合標(biāo)準(zhǔn)化要求,用A4復(fù)印紙打印成文學(xué)習(xí)態(tài)度0.20100學(xué)習(xí)態(tài)度認真,科學(xué)作風(fēng)嚴(yán)謹,嚴(yán)格按要求開展各項工作,按期完成任務(wù)學(xué)術(shù)水平與創(chuàng)新0.10100設(shè)計有創(chuàng)意,有一定的學(xué)術(shù)水平或?qū)嵱脙r值總分評語:等級:指導(dǎo)教師:年月日蚌埠學(xué)院計算機工程學(xué)院課程設(shè)計任務(wù)書課程C++程序設(shè)計課程設(shè)計班級2016級軟件工程3班指導(dǎo)教師華文立題目模擬計算器運行程序完成時間2017年12月20日至2017年1月15日主要內(nèi)容要求完成以下功能:程序支持算數(shù)運算+、-、*、/、=,以及C〔清楚〕、A〔全清楚〕程序運行時,顯示一個窗口,等待用戶輸入,用戶可以從鍵盤輸入要計算的表達式,輸入的表達式顯示在窗口中,用戶鍵入“=”符號后,窗口顯示出結(jié)果設(shè)計報告要求1.封面:2.課程設(shè)計任務(wù)書3.課程設(shè)計報告:⑴系統(tǒng)總體方案⑵設(shè)計思路和主要步驟⑶各功能模塊和流程圖⑷設(shè)計代碼⑸心得體會和參考資料說明:學(xué)生完成課程設(shè)計后,提交課程設(shè)計報告及軟件,要求文字通暢、字跡工整〔可以打印〕,文字不少于5000字,并裝訂成冊。版面要求題目用黑體三號,段后距18磅〔或1行〕,居中對齊;標(biāo)題用黑體四號,段前、段后距6磅〔或0.3行〕;正文用小四號宋體,行距為1.25倍行距;標(biāo)題按“一”、“㈠”、“1”、“⑴”順序編號。上機時間安排2016級軟件工程〔3〕班10-18周,周三1-2節(jié)指導(dǎo)地點實驗室〔B523〕分工協(xié)作說明課題名稱學(xué)生姓名學(xué)號所做的工作文件加解密系統(tǒng)江亮亮51602043028工程框架總體設(shè)計、整體工程指導(dǎo)、綜合設(shè)計文檔編寫齊佳寧51602043027需求分析、C++編碼余唐麗51602043008后臺代碼測試、整理資料、打印鄭小云51602043016局部代碼編寫、分模塊測試摘要計算器是日常生活中十分便捷有效的工具,能實現(xiàn)加、減、乘、除、開方、求倒數(shù)等簡單運算的工具。要實現(xiàn)計算功能,可以用VC++的知識編寫程序來解決此問題。該計算器大大的降低了數(shù)字計算的難度及提高了計算的準(zhǔn)確度和精確度。該計算器使用非常簡單和方便,對廣闊中小學(xué)生的學(xué)習(xí)有巨大幫助作用,也對在職人員的工作有點幫助作用.本課程設(shè)計將實現(xiàn)一個簡單計算器。其類似于Windows
附件中自帶的計算器。這個計算器不僅實現(xiàn)了簡單的四那么運算功能,還實現(xiàn)了高級的科學(xué)計算功能,而且具有簡潔大方的圖文外觀。它的設(shè)計按軟件工程的方法進行,
系統(tǒng)具有良好的界面、必要的交互信息和較好的健壯性使用人員能快捷簡單地進行操作。即時準(zhǔn)確地獲得需要的計算的結(jié)果,充分降低了數(shù)字計算的難度和節(jié)約了時間,對人們的生活有一定的幫助。在課程設(shè)計中,系統(tǒng)開發(fā)平臺為Windows
2000XP,程序設(shè)計設(shè)計語言采用Visual
C++,在程序設(shè)計中,采用了結(jié)構(gòu)化與面向?qū)ο髢煞N解決問題的方法。
關(guān)鍵詞:
程序設(shè)計,計算器,MFC
,按鈕控件SummaryCalculatorisaveryconvenientandeffectivetoolindailylife,whichcanadd,subtract,multiply,divide,root,andcalculatethesimpleoperationofthereciprocal.Toimplementthecalculationfunction,youcanusetheknowledgeofVC++towriteaprogramtosolvethisproblem.Thecalculatorgreatlyreducesthedifficultyofthenumericalcalculationandimprovestheaccuracyandaccuracyofthecalculation.Thecalculatorisverysimpleandeasytouse,forthemajorityofprimaryandsecondaryschoolstudentstolearnagreathelp,butalsofortheworkofthestaffalittleHelp.Thiscoursedesignwillimplementasimplecalculator.ItissimilartoacalculatorthatisincludedwiththeWindowsattachment.Thiscalculatornotonlyrealizesthesimpleoperationsfunction,butalsorealizestheadvancedscientificcomputationfunction,andhastheconciseandelegantpictureandtextappearance.Itisdesignedaccordingtothemethodofsoftwareengineering,thesystemhasagoodinterface,necessaryinteractioninformationandgoodrobustnessoftheusercanquicklyandeasilyoperate.Thereal-timeandaccuratecalculationresultscanreducethedifficultyofdigitalcalculationandsavetime,whichwillhelppeople'slife.Inthecoursedesign,thesystemdevelopmentplatformisWindows2000XP,theprogramminglanguageadoptsVisualC++,andintheprogramming,itadoptsstructuredandobject-orientedtwokindsofproblemsolvingmethods.Tags:programming,calculator,MFC,buttoncontrols目錄摘要……………………81.選題意義1.1設(shè)計任務(wù)………121.2設(shè)計目標(biāo)………121.3關(guān)于visualC++………………131.4可行性及需求分析……………14二、系統(tǒng)功能與設(shè)計2.1系統(tǒng)功能………152.2對話框界面設(shè)計………………182.3數(shù)值計算設(shè)計…………………19三、主要成員函數(shù)關(guān)系圖四、源代碼……………20五、結(jié)語………………30參考文獻………………31選題意義1.1設(shè)計任務(wù)此題選擇意義在于引導(dǎo)學(xué)生學(xué)會設(shè)計簡單的科學(xué)計算器,進一步掌握VisualC++應(yīng)用程序。統(tǒng)地學(xué)習(xí)面向?qū)ο缶幊趟枷?,了解MFC架構(gòu),逐步熟悉可視化編程環(huán)境VisualC++,并在此環(huán)境下設(shè)計并實現(xiàn)一個簡單計算器系統(tǒng)。該計算器應(yīng)能實現(xiàn)如下功能:1)、數(shù)的加、減、乘、除、乘方等簡單計算2)、科學(xué)計算函數(shù),包括正弦、余弦、正切、余切、開方、對數(shù)、指數(shù)等函數(shù)運算3)、具備歷史計算的記憶功能。1.2設(shè)計目標(biāo)(1)了解Windows編程的根底知識,掌握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)根本的加、減、乘、除等四那么運算,且支持包括括號的表達式運算功能。1.3關(guān)于visualc++VisualC++6.0是Microsoft公司在1998年推出的基Windows9X和WindowsNT的優(yōu)秀集成開發(fā)環(huán)境。該環(huán)境為用戶提供了良好的可視化編程環(huán)境,程序員可以里利用該開發(fā)環(huán)境輕松地訪問C++源代碼編輯器,資源編輯器和使用內(nèi)部調(diào)試器,并且可以創(chuàng)立工程文件。VisualC++6.0不僅包括編譯器,而且它還包括許多有用組件,通過這些組件的協(xié)同工作,可以在VisualC++6.0集成環(huán)境中輕松地完成創(chuàng)立源文件,編輯資源,以及對程序的編譯,連接和調(diào)試等各項工作。VC++6.0是Windows9598、XP或WindowsNT下的一個應(yīng)用程序,本身對軟硬件沒有特殊要求。就是說它對環(huán)境的要求與Windows9598、WindowsNT要求是一致的。硬件要求:一般在586以上的處理器、16MB以上內(nèi)存、100MB以上的硬盤。軟件要求:Windows9598或WindowsNT3.51以上版本。VC++6.0系統(tǒng)可以在一張CD盤上,也可以在“VisualStudio(VisualC++、VisualFoxpro)”等產(chǎn)品的第一張CD盤上。一般都有一個VC的自動安裝程序,也可以執(zhí)行VC6目錄下的setup.exe,在安裝包的提示下進行,對初學(xué)者可采用“典型安裝”方式。在安裝好VC6.0系統(tǒng)后,有時根據(jù)需要添加或刪除某些部件,可插入CD盤重新執(zhí)setup.exe安裝程序,安裝程序會檢測當(dāng)前系統(tǒng)安裝VC6的足件,用戶單擊“添加刪除”按鈕后,在“安裝維護”對話框中選定要添加的部件或取消選定要刪除的部件。與一般的應(yīng)用軟件一樣,有以下兩種啟動方式:(1)通過“開始”按鈕,選擇“程序”菜單,然后翻開“MicrosoftVisualstudio6.0中文版”子菜單中的“MicrosoftVisualC++6.0中文版”程序。(2)用戶也可以使用命令行啟動VC。單擊“開始”按鈕后選擇“運行”命令,在“運行”對話框中輸入c:\ProgramFiles\MicrosoftVisualStudio\VC98\VC6.exe〔按默認盤符和路徑安裝〕即可。1.4可行性及需求分析本設(shè)計是簡單計算器。日常計算機使用中,常常涉及到一些有計算的問題,一個小型的計算器軟件變得非常有用,該校型計算器需要空間資源較少,對電腦其他程序的應(yīng)用影響較小。它的設(shè)計按軟件工程的方法進行,系統(tǒng)具有良好的界面、必要的交互信息和較好的健壯性;醒目美觀的軟件封面。使用人員能快捷簡單地進行操作。即時準(zhǔn)確地獲得需要的計算的結(jié)果,充分降低了數(shù)字計算的難度和節(jié)約了時間,對人們的生活有一定的幫助。本軟件主要用于計算機windows2000XP以上版本的用戶的使用,這次課程設(shè)計一般是實現(xiàn)簡單計算器的功能。要程序能實現(xiàn):加,減,乘,除,開方,倒數(shù)等運算功能;還要實現(xiàn)數(shù)據(jù)的輸入,輸出,計算,顯示及程序退出等功能。另外還可以實現(xiàn)多種科學(xué)計算的功能,如:三角函數(shù)的計算,弧度與角度間的轉(zhuǎn)換,對數(shù)指數(shù)的計算等等。系統(tǒng)功能與設(shè)計2.1系統(tǒng)功能1〕輸入的符號,數(shù)字從右向左顯示。先輸入“8”8再輸入“×”8*點擊“=”輸出結(jié)果,在輸出行顯示.2)支持加減乘除運算.輸入行a.乘法計算:輸入行8*324輸出行b.加法計算輸出行1+01c.減法計算8-35d.除法運算〔特殊情況見10.B〕9/42.253)支持求次方(x?y)運算。求次方(x?y)運算:“?”為次方(x?y)在輸入行中的顯示符號4?2164〕“〔”“〕”的使用?!怖ㄌ柕氖褂谩骋褂谩啊病薄啊场钡臅r候,先點擊“〔”,再輸入數(shù)字或符號,內(nèi)容輸入完畢以后,點擊“〕”,完成“〔”“〕”的所有功能。例如:2×〔2+2〕=?22*(2*(2+22*(2+2)2*〔2+2〕85)支持混合運算。附:運算符的優(yōu)先級表優(yōu)先級功能鍵顯示結(jié)合律從高到低(、)〔、〕自左向右x?y、1/x?、~自左向右×、÷*、/自左向右﹢﹣﹢﹣自左向右例如:〔5+2〕×5=?混合運算那么按優(yōu)先級表中的運算符優(yōu)先順序從左向右計算〔5+2〕*5混合運算那么按優(yōu)先級表中的運算符優(yōu)先順序從左向右計算356)功能鍵“CLEAR”及“BACKSPACE”的使用。a.“CLEAR”為清0鍵。只要按下“CLEAR”鍵,輸入行所有字符清0,輸出行回到原始狀態(tài)。輸入前:〔5+2〕*5輸入后:0b.“BACKSPACE”為退格鍵。當(dāng)輸入任何數(shù)字或運算符,只要按下“BACKSPACE”鍵,字符位自右向左消去一位?!沧ⅲ撼跏嫉摹?”不能被刪除〕輸入前:〔5+2〕*5輸入后:〔5+2〕*C.“ANS”為變量儲存器。當(dāng)一次結(jié)果被去除后,只要按下“ANS”鍵就會顯示這個結(jié)果。如:5+27按“CLEAR”鍵后,再按“ANS”鍵就會這樣7777)計算器的輸入方式:只支持鼠標(biāo)點擊計算器鍵輸入;8)計算器計算結(jié)果的輸出方式:在計算器窗口的輸出行顯示。9)算數(shù)運算的數(shù)據(jù)類型:整數(shù)和浮點數(shù)。a.輸入行最大顯示的字符數(shù)32位,每個運算符算一位;b.“〔”,“〕”各占一個字符位;c.輸出行最大顯示的字符數(shù)為32位;d.純小數(shù)顯示的最大字符數(shù)為小數(shù)點后30位,整數(shù)及小數(shù)點各占一位;假設(shè)純小數(shù)為負數(shù),那么顯示最大字符數(shù)為小數(shù)點后29位,“-”占一位;e.輸入行在未輸入任何數(shù)字的時候,顯示“0”,只占一個字符位;當(dāng)輸入任何數(shù)字時?!?”消失,輸入的的數(shù)字取代“0”;當(dāng)輸入任何運算符時。默認之前輸入數(shù)字“0”;f.點擊“=”鍵前方可顯示數(shù)字或字母或漢字。10)特殊情況的運算A.運算結(jié)果整數(shù)局部超出32位,顯示Infinity〔無窮大〕;出現(xiàn)運算異常!9999999999999999*99999999InfinityB.除數(shù)為0的情況,提示用戶被除數(shù)不能為零!1/0除零錯誤C.在運算時,假設(shè)結(jié)果為純小數(shù),小數(shù)位超過30位,那么超出的字符舍棄。2/30.6666666666666666666666666假設(shè)舍棄超出部位后,結(jié)果全為0,那么結(jié)果為01/99^990D.在運算時,假設(shè)結(jié)果的整數(shù)位不為0a.總位數(shù)在最大字符位內(nèi),那么直接顯示;b.總位數(shù)在最大字符位以外,整數(shù)局部在最大字符位以內(nèi),那么只優(yōu)先顯示整數(shù)部位,棄掉32位以后的字符5/31.6666E.當(dāng)用戶輸入“^0”時,假設(shè)“^0”之前的算式或數(shù)字的值為0,點擊“=”后,輸出界面顯示“底數(shù)不能為0”以上所有的運算都是在10進制下進行2.2對話框界面設(shè)計2.3數(shù)值計算實現(xiàn)例如:2×〔2+2〕=?22*(2*(2+22*(2+2)2*〔2+2〕8源代碼源代碼#include<iostream>#include<string>#include"Stack.h"#include<cmath>usingnamespacestd;booljisuan(doublea,doubleb,charc,double&d){ switch(c){case'+':d=a+b; //cout<<a<<"+"<<b<<endl; returntrue;case'-':d=a-b; //cout<<a<<"-"<<b<<endl; returntrue;case'*':d=a*b; //cout<<a<<"*"<<b<<endl; returntrue;case'/': if(b==0) throwCString("除零錯誤!"); //cout<<a<<"/"<<b<<endl;d=a/b; returntrue; case','://cout<<a<<","<<b<<endl;//乘方操作d=pow(a,b); returntrue; default:returnfalse; }}if(array[num-40][pre-40]>0)//將符號壓棧 { op.Add((char)num); } else { charmid; while(array[num-40][pre-40]<=0) { if(pre==40&&num==41)//排除(數(shù)字)情況,保存數(shù)字()非法情況 { if(i>0) { intMyCheck=(int)name.at(i-1); if(MyCheck<=57&&MyCheck>=48||MyCheck==41) { break; } elsethrowCString("括號中的表達式不合法"); } else throwCString("出現(xiàn)未匹配的)"); } try { op.Delete(mid); } catch(CStringe) { throwCString("出現(xiàn)未匹配的)"); } doubledata1,data2;try { data.Delete(data2); data.Delete(data1); } catch(CStringe) { throwCString("缺少操作數(shù)"); } if(!jisuan(data1,data2,mid,data1)) { result=0; throwCString("表達式異常"); }data.Add(data1); pre=(int)op.Top(); }//CompuetrDlg.cpp:實現(xiàn)文件//#include"stdafx.h"#include"Compuetr.h"#include"CompuetrDlg.h"#include"counter.h"#include<string>#include".\compuetrdlg.h"usingnamespacestd;#ifdef_DEBUG#definenewDEBUG_NEW#endifvoidCCompuetrDlg::OnPaint(){ if(IsIconic()) { CPaintDCdc(this);//用于繪制的設(shè)備上下文 SendMessage(WM_ICONERASEBKGND,reinterpret_cast<WPARAM>(dc.GetSafeHdc()),0); //使圖標(biāo)在工作矩形中居中 intcxIcon=GetSystemMetrics(SM_CXICON); intcyIcon=GetSystemMetrics(SM_CYICON); CRectrect; GetClientRect(&rect); intx=(rect.Width()-cxIcon+1)/2; inty=(rect.Height()-cyIcon+1)/2; //繪制圖標(biāo) dc.DrawIcon(x,y,m_hIcon); } else { CRectrect; CPaintDCdc(this); GetClientRect(rect); dc.FillSolidRect(rect,RGB(255,0,0));//設(shè)置背景顏色 CDialog::OnPaint(); CDialog::OnPaint(); }}//Compuetr.cpp:定義應(yīng)用程序的類行為。//#include"stdafx.h"#include"Compuetr.h"#include"CompuetrDlg.h"#ifdef_DEBUG#definenewDEBUG_NEW#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對象CCompuetrApptheApp;//CCompuetrApp初始化BOOLCCompuetrApp::InitInstance(){ //如果一個運行在WindowsXP上的應(yīng)用程序清單指定要 //使用ComCtl32.dll版本6或更高版本來啟用可視化方式, //那么需要InitCommonControls()。否那么,將無法創(chuàng)立窗口。 InitCommonControls(); CWinApp::InitInstance(); //標(biāo)準(zhǔn)初始化 //如果未使用這些功能并希望減小 //最終可執(zhí)行文件的大小,那么應(yīng)移除以下 //不需要的特定初始化例程 //更改用于存儲設(shè)置的注冊表項 //TODO:應(yīng)適當(dāng)修改該字符串, //例如修改為公司或組織名 SetRegistryKey(_T("應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序")); CCompuetrDlgdlg; m_pMainWnd=&dlg; INT_PTRnResponse=dlg.DoModal(); if(nResponse==IDOK) { //TODO:在此放置處理何時用“確定”來關(guān)閉 //對話框的代碼 } elseif(nResponse==IDCANCEL) { //TODO:在此放置處理何時用“取消”來關(guān)閉 //對話框的代碼 }//由于對話框已關(guān)閉,所以將返回FALSE以便退出應(yīng)用程序, //而不是啟動應(yīng)用程序的消息泵。 returnFALSE;}//stack#include<iostream>#include<string>#include<new>usingnamespacestd;template<classT>classLinkedStack;template<classT>classNode{friendLinkedStack<T>;private: Tdata; Node<T>*link;};template<classT>classLinkedStack{ public: LinkedStack(){top=0;length=0;} ~LinkedStack(); boolisEmpty()const { returntop==0; } boolisFull()const; TTop()const;LinkedStack<T>&Add(constT&x);LinkedStack<T>&Delete(T&x); intgetLength(){returnlength;}private: Node<T>*top; intlength;};template
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025兩人合伙人合作協(xié)議合同范本
- 2025跨境電商合同模板
- 2025網(wǎng)絡(luò)技術(shù)合作代理合同模板
- 2025版咨詢服務(wù)合同模板
- 伐木工程合同范本
- 遵守行為規(guī)范主題班會
- 2025年關(guān)于建筑工程合同管理的法規(guī)
- 2025教育機構(gòu)教師勞動合同模板
- 酒店客房制度培訓(xùn)講課
- 酒店餐廳新員工培訓(xùn)計劃
- 2025年中國電船制造行業(yè)市場全景監(jiān)測及投資前景展望報告
- 初三歷史教學(xué)經(jīng)驗交流會發(fā)言稿
- 2025婚禮策劃服務(wù)的合同范本
- 2024年山東省濟南市中考數(shù)學(xué)試卷【含解析】
- 推動學(xué)校數(shù)字化轉(zhuǎn)型的創(chuàng)新策略與實踐路徑
- 探秘京劇臉譜(課件)六年級下冊綜合實踐活動遼師大版
- 靜脈采血操作課件
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蝕工程施工及驗收規(guī)范
- MOOC 敦煌文學(xué)藝術(shù)-浙江師范大學(xué) 中國大學(xué)慕課答案
- 貫徹落實八項規(guī)定精神情況自查表
- GA/T 1073-2013生物樣品血液、尿液中乙醇、甲醇、正丙醇、乙醛、丙酮、異丙醇和正丁醇的頂空-氣相色譜檢驗方法
評論
0/150
提交評論