




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C++面向?qū)ο蟪绦蛟O(shè)計(jì)PAGE16《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:計(jì)算器學(xué)院名稱:專業(yè):信息與計(jì)算科學(xué)班級:學(xué)生姓名:學(xué)號(hào):指導(dǎo)教師:完成時(shí)間:目錄第1章概述 21.1軟件實(shí)現(xiàn)的目標(biāo) 21.2軟件實(shí)現(xiàn)方案 21.3軟件實(shí)現(xiàn)環(huán)境 2第2章軟件分析 32.1調(diào)查 32.2軟件分析 3第3章軟件設(shè)計(jì) 43.1軟件功能設(shè)計(jì) 43.2功能函數(shù)設(shè)計(jì) 43.3輸入輸出的設(shè)計(jì) 4第4章軟件實(shí)現(xiàn) 54.1軟件源代碼 54.2運(yùn)行結(jié)果 12結(jié)論 15參考文獻(xiàn) 15
第1章概述1.1軟件實(shí)現(xiàn)的目標(biāo)課程設(shè)計(jì)的任務(wù):設(shè)計(jì)一個(gè)簡易計(jì)算器,要求源文件要采用多文件的工程結(jié)構(gòu);在源程序中必須使用類,輸入輸出要符合C++語言的特性?;竟δ埽耗苡?jì)算加、減、乘、除及帶括號(hào)和乘方的混合運(yùn)算。軟件特點(diǎn):可以方便快捷的直接運(yùn)算帶括號(hào)的混合算式;操作簡便,都是從鍵盤直接輸入。1.2軟件實(shí)現(xiàn)方案第一步:分析題目,建立類,畫出類圖。第二步:畫出流程,根據(jù)流程圖編寫程序清單第三步:上機(jī)調(diào)試程序(使用單步調(diào)試,設(shè)置斷點(diǎn)、分塊調(diào)試的方法)。第四步:及時(shí)整理資料,撰寫課程設(shè)計(jì)報(bào)告中有關(guān)這個(gè)題目的內(nèi)容。1.3軟件實(shí)現(xiàn)環(huán)境硬件配置:586以上PC兼容機(jī)或品牌機(jī),配有彩色顯示器、鼠標(biāo)、鍵盤,內(nèi)存不小于64MB,硬盤自由空間不少于200MB。推薦配置為內(nèi)存128MB或256MB(或以上),硬盤自由空間500MB以上。運(yùn)行環(huán)境:Windows2000/NT/Xp、VisualC++集成開發(fā)環(huán)境。第2章軟件分析2.1調(diào)查用戶對計(jì)算器軟件的要求:能夠進(jìn)行復(fù)雜的運(yùn)算;能夠?qū)崿F(xiàn)對算式的計(jì)算;操作方便快捷;顯示運(yùn)行結(jié)果時(shí),結(jié)果前顯示該算式;2.2軟件分析結(jié)構(gòu)圖:主程序主程序主界面主界面退出程序初始化程序退出程序初始化程序數(shù)據(jù)輸入數(shù)據(jù)輸入數(shù)據(jù)處理數(shù)據(jù)處理結(jié)果輸出結(jié)果輸出圖2.2第3章軟件設(shè)計(jì)3.1軟件功能設(shè)計(jì)流程圖:開始開始操作界面算式輸入輸入判斷錯(cuò)誤類型提示輸入判斷輸入判斷輸入判斷標(biāo)記標(biāo)記標(biāo)記算式計(jì)算結(jié)果輸出NYNYNYNY退出圖3.13.2功能函數(shù)設(shè)計(jì)1.定義界面函數(shù)voidfirst(){cout<<"計(jì)算器基本功能介紹"<<endl;cout<<endl;}2.定義判斷函數(shù)booljudge(){//判斷是不是加減乘除與浮點(diǎn)數(shù)}3.定義對棧函數(shù)voidtozhan(stack<float>&,stack<char>&){//加減乘除四則運(yùn)算及浮點(diǎn)數(shù)算法}4.定義運(yùn)算函數(shù)voidmem(){//初始界面顯示;數(shù)字類字符與數(shù)字轉(zhuǎn)換壓入數(shù)字棧;考慮優(yōu)先級調(diào)整運(yùn)算順序;括號(hào)及輸出處理}5定義小數(shù)運(yùn)算函數(shù)floatfraction(){//處理小數(shù)}3.3輸入輸出的設(shè)計(jì)①、界面設(shè)計(jì)程序運(yùn)行后會(huì)出現(xiàn)一個(gè)簡捷的窗口,并有相應(yīng)的操作提示語,便于用戶操作。②、功能設(shè)計(jì)數(shù)據(jù)輸入完成后,軟件運(yùn)行時(shí)自動(dòng)調(diào)用不同的函數(shù)模塊實(shí)現(xiàn)不同的運(yùn)算,結(jié)束時(shí)將輸入算式和結(jié)果以等式的形式在界面輸出,輸出后可按任意鍵退出。第4章軟件實(shí)現(xiàn)4.1軟件源代碼#include<iostream>#include<stack>usingnamespacestd;voidfirst()//定義界面函數(shù){cout<<""<<endl;cout<<"歡迎使用計(jì)算器"<<endl;cout<<""<<endl;cout<<"【該計(jì)算器具備整型數(shù)據(jù)、浮點(diǎn)型數(shù)據(jù)的算術(shù)(加、減、乘、除)運(yùn)算】"<<endl;cout<<"【功能。依次輸入第一個(gè)運(yùn)算數(shù)、運(yùn)算符(+,-,*,/),第二個(gè)運(yùn)算數(shù),】"<<endl;cout<<"【然后輸出結(jié)果。實(shí)現(xiàn)單運(yùn)算符表達(dá)式計(jì)算的功能。輸入的操作數(shù)可以包】"<<endl;cout<<"【含整數(shù)或浮點(diǎn)數(shù)。如果遇到錯(cuò)誤的表達(dá)式,應(yīng)輸出錯(cuò)誤提示信息。表達(dá)】"<<endl;cout<<"【式可以有括號(hào),并且+-*/分優(yōu)先級的】"<<endl;cout<<endl;}voidmem();booljudge(char,char);voidtozhan(stack<float>&,stack<char>&);floatfraction(float,float);voidmain(){mem();}voidmem(){ first();intused,pr;floatt;charc;stack<float>num;stack<char>oper;t=0;pr=0;used=0;cout<<"請輸入待求表達(dá)式:"<<endl;while(cin>>c,!cin.eof()){if(isdigit(c)){used=1;t=t*10+(c-'0');continue;}//將輸入的數(shù)字類字符轉(zhuǎn)換成數(shù)字;if(c=='+'||c=='-'||c=='*'||c=='/'||c=='.'){if(used){num.push(t);t=0;used=0;}//將轉(zhuǎn)化好的數(shù)字壓入數(shù)字棧;if(oper.empty()||oper.top()=='('){oper.push(c);continue;}//向操作符棧里壓入第一個(gè)操作符;解決括號(hào)問題;while(!judge(c,oper.top())){tozhan(num,oper);if(oper.empty()||oper.top()=='(')break;}//根據(jù)運(yùn)算符號(hào)優(yōu)先級,調(diào)整運(yùn)算順序,并處理優(yōu)先運(yùn)算部分;oper.push(c);continue;}if(c=='('){pr++;oper.push(c);continue;//括號(hào)入棧,作為括號(hào)內(nèi)運(yùn)算的標(biāo)志;}if(c==')'){pr--;//括號(hào)結(jié)束,整理括號(hào)內(nèi)的運(yùn)算結(jié)果;if(used){num.push(t);t=0;used=0;}while(!oper.empty()){if(oper.top()=='(')break;tozhan(num,oper);}oper.pop();continue;}if(c=='=')//遇到‘=’號(hào),輸出結(jié)果;{if(pr){cout<<"括號(hào)數(shù)目不匹配,請檢查并重新輸入!"<<endl;return;}if(used)num.push(t);while(!oper.empty())tozhan(num,oper);cout<<"表達(dá)式的值為:"<<num.top()<<endl;return;}else{cout<<"表達(dá)式輸入錯(cuò)誤,請重新輸入!"<<endl;return;}}}booljudge(chars,chart){if((s=='*'||s=='/')&&(t=='+'||t=='-'))returntrue;if(s=='.')returntrue;returnfalse;}voidtozhan(stack<float>&num,stack<char>&oper){floata,b,r;b=num.top();num.pop();a=num.top();num.pop();switch(oper.top()){case('+'):r=a+b;break;case('-'):r=a-b;break;case('*'):r=a*b;break;case('/'):r=a/b;break;case('.'):r=fraction(a,b);};num.push(r);oper.pop();}floatfraction(floatm,floatn)//處理小數(shù){while(n>=1)n/=10;n+=m;returnn;}4.2運(yùn)行結(jié)果結(jié)論本程序基本完成了題目要求的功能。此計(jì)算器有運(yùn)算的能力。但是功能單一,每次只能進(jìn)行一次運(yùn)算,而不能重復(fù)操作,并且對于數(shù)據(jù)的N次平方的操作需要進(jìn)行多次數(shù)據(jù)與“*”的多次重復(fù)輸入,比較復(fù)雜,在時(shí)空方面占據(jù)劣勢。本軟件應(yīng)用起來不是很方便,特別是輸入的一些字符的時(shí)候,必須是英文半角,不然會(huì)提示語法錯(cuò)誤,最不實(shí)際的就是不能運(yùn)用求值。但是可以通過增加判斷條件,使之對輸入形式不拘一格.這次課程設(shè)計(jì),我更加深刻地認(rèn)識(shí)到了C語言,棧,C++面向?qū)ο缶幊倘咧g的區(qū)別和聯(lián)系,同時(shí)也體會(huì)到了三者聯(lián)合的優(yōu)勢,清楚的認(rèn)識(shí)到
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國際結(jié)算流動(dòng)資金貸款合同樣本
- 鞋類定制加工合同范本
- 農(nóng)村集體土地承包合同版
- 試驗(yàn)檢測技術(shù)服務(wù)合同模板
- 電力調(diào)度合同協(xié)議
- 化工原料采購合同格式范本
- 新建住房分期付款合同
- 甲乙丙三方租賃合同補(bǔ)充協(xié)議
- 搬家行業(yè)安全生產(chǎn)與事故預(yù)防考核試卷
- 危險(xiǎn)品倉儲(chǔ)安全操作規(guī)程優(yōu)化考核試卷
- 2024中考英語1500詞匯默寫匯總表練習(xí)(含答案)
- 2024屆高三英語作文復(fù)習(xí)寫作專項(xiàng)讀后續(xù)寫:幫我修車的墨西哥一家人(人性之光)任務(wù)單學(xué)案
- 2022年四川省綿陽市中考語文真題
- 麥琪的禮物全面英文詳細(xì)介紹
- 使用智能手機(jī)教程文檔
- 數(shù)字資產(chǎn)培訓(xùn)課件
- (醫(yī)院安全生產(chǎn)培訓(xùn))課件
- 幼兒園優(yōu)質(zhì)公開課:中班數(shù)學(xué)《到艾比家做客》課件
- 部編人教版歷史八年級下冊《三大改造》省優(yōu)質(zhì)課一等獎(jiǎng)教案
- 水輪機(jī)調(diào)速器現(xiàn)場調(diào)試
評論
0/150
提交評論