版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
模擬計算器系統(tǒng)說明書重慶工商大學(xué)派斯學(xué)院計算機科學(xué)系09計本一班學(xué)號2009305116張黃江2010/6/27模擬計算器系統(tǒng)說明書重慶工商大學(xué)派斯學(xué)院計算機科學(xué)系09計本一班學(xué)號2009305116張黃江2010/6/27目錄-3-3-3-3-3-5-6-6-7-7-7-715【設(shè)計題目】【程序簡介】【主要功能】【主要特點】【異常處理】【設(shè)計方法】【測試方法】【創(chuàng)新介紹】【遺留問題】【自我評價】【附源代碼】【技術(shù)統(tǒng)計】模擬計算器系統(tǒng)一說明書【設(shè)計題目】分數(shù)計算器【程序簡介】該程序可以完成分數(shù)的"+、一、X、/"運算,也可以完成對整數(shù)及實數(shù)的"+、-、*、/"運算,是一個比較完善的模擬計算器。卜面就從功能及特點等方面做詳細介紹:【主要功能】1、支持多次計算。2、支持整數(shù)、小數(shù)及分數(shù)。3、支持文件記錄。4、支持直接查看(或刪除)記錄。5、記錄時間信息。6、具有一定的異常處理能力【主要特點】1、界面友好,加入了載入效果和退出百分比效果;有歡迎界面;層次清晰,只有一個主菜單。有開發(fā)者信息;如下圖所示:主菜單分為:1.實數(shù)2.分數(shù)3.看記錄4.退出程序。1為計算實數(shù),當(dāng)然也包含整數(shù)類型2為計算分數(shù)類型數(shù)據(jù)3為查看曾經(jīng)計算過的記錄,包含上次退出時保存到文件的記錄4為結(jié)束該程序。簡單明了,讓使用者看了一目了然。?E:鐳+W。必課程設(shè)計、張莓BD弟四\計算器,見b[口|回系統(tǒng)載入中……皿pr
2E:\Study\C++Work、課程琴h孳雖匡戰(zhàn)煎淄g■■些1▲模擬計算器系統(tǒng)—1<c>AllRight張黃江E-mail:xaigb(?163.comuersion2010build歡迎使用!主菜單:輸入」2、《1一「實數(shù)2-分數(shù)3-看記錄4-退出程序3、4選擇:卜2、時間記錄。每一次計算結(jié)果都有時間提示,并且文件記錄里還加入了日期。計算結(jié)果的顯示做了優(yōu)化,使使用者看起來清晰,方便。3.計算次數(shù)統(tǒng)計。程序結(jié)束的時候提示本次計算共計算多少次?!鯡:\Study\C++Wci「kV果程設(shè)計\張黃江\。初曜\5十算器舊爛□回共計算■己錄保存在“計算器操作記錄J煦〃中謝謝使用按“回車鍵”退出<1「「「1?>□T"4.文件記錄。將記錄保存到文件,以便日后查看。0分數(shù)類,h2KBCHeaderfile2010/6/247:34通計算器-副本.cpp6KBC++Sourcefile2010/6/2714:36叵|計算器,cpp2KBC++Sourcefile2010/6/2714:50□計算渾作1KB丈本文檔2010/6/27IS:575KBCHeaderfile2010/6/2718:12
【異常處理】1.如果被除數(shù)為0,則要求重新輸入。如下圖:計算實數(shù)時,被除數(shù)為0,這是非法的,則重新輸入。2.如果分母為0,則重新輸入。如下圖:分數(shù)123/0的分母為0,這是非法的,則重新輸入。3.如果操作符有誤,則重新輸入。如下圖:輸入1h5,“h”不是“+”、“一”、"X”、"/”的一種,所以無法計算,則重新輸入。.—.一4.如果輸入數(shù)字選擇時,后面誤輸入了多個字符,系統(tǒng)將拋棄后面的字符,以防止系統(tǒng)進入死循環(huán)。\如下圖:輸入的是31aaa,顯然不止一個字符,但第一個是“3”,系統(tǒng)將默認為用戶選擇“3.看記錄”,程序?qū)⒂涗涳@示到屏幕上,如第二張圖所示。
E:\Study\C++W。E:\Study\C++W?!竗\3果程設(shè)計燃黃江\DebugVi十算器舊好口|回■如下圖:要求輸入1、2、3、4,但卻輸入了字母“y”,系統(tǒng)會重新顯示歡迎界面,并提示重新選擇?!驹O(shè)計方法】對分數(shù)有一個類來封裝,對一般的功能使用函數(shù)進行模塊化處理?!緶y試方法】用不合法的數(shù)字進行測試。包括錯誤的操作方法。測試結(jié)果參見【異常處理】【創(chuàng)新介紹】1、循環(huán)計算計算完第一次后,還可以計算,直到在主菜單中選擇“4.退出程序”才結(jié)束計算。2、文件記錄保存在磁盤上,日后可以調(diào)出記錄查看,文件格式為“.log”,可以用記事本打開查看。3、計算記錄密碼保護如果要刪除計算記錄,則要求輸入密碼,防止惡意刪除。改密碼為012。4、時間記錄窗口中記錄了每一次計算的時間,方便使用者查找記錄。并且文件記錄里加入了日期,使用者可以方便的查找到確定日期的計算記錄。5、載入與退出效果載入和退出時加入百分比顯示進度,給人一種真正的系統(tǒng)的感覺。6、清屏當(dāng)計算多了,屏幕上顯示的內(nèi)容就很雜,這里用到了一個清屏函數(shù),使屏幕顯得干凈。7、延遲退出程序當(dāng)手動打開exe文件進行計算,到結(jié)束程序時,會等到使用者敲下回車確認退出,這樣做的目的是給使用者留出時間看退出時的計算統(tǒng)計信息?!具z留問題】要求輸入數(shù)字進行計算時,如果輸入字符,就會進入死循環(huán),原因就是用整型變量讀取字符型變量,導(dǎo)致整型變量無法讀進去,它的值就是一個隨機數(shù)。未解決?!咀晕以u價】該程序達到了按面向?qū)ο蟪绦蛟O(shè)計思想對問題進行抽象的目的,且程序能夠正確運行?!驹创a】該程序分為3個文件:“計算器.cpp”、“計算器函數(shù).h”和“分數(shù)類.h”?!ㄓ嬎闫?cpp#include"計算器函數(shù).h"intmain(){intn=0;〃統(tǒng)計計算次數(shù)char*temp=newchar[];//字符數(shù)組,屏蔽輸入過多字符welcome();〃歡迎界面〃功能實現(xiàn)部分while(1)//循環(huán)計算{if(n!=0)system("cls");for(inti=0;i<37;i++)〃在屏幕上輸出"----"cout<<"----";cout<<"\n主菜單:1.實數(shù)2.分數(shù)3.看記錄4.退出程序\n"<<"輸入1、2、3、4選擇:";cin>>temp;//選擇類型getchar();〃以下為整個程序的核心部分,以一個多分枝語句為主體switch(*temp){case'1'://浮點型數(shù)據(jù)n=shishu(n);//參數(shù)n為統(tǒng)計計算次數(shù)break;case'2'://數(shù)據(jù)分數(shù)型n=fenshu(n);break;case'3'://查看記錄view();break;case'4'://退出程序goout(n);//調(diào)用程序結(jié)束函數(shù)default://缺省cout<<"你的選擇無效。";welcome();break;}}return0;//返回給操作系統(tǒng)}//計算器.cpp結(jié)束//計算器函數(shù).h#include<iostream>#include<iomanip>#include<fstream>//文件系統(tǒng)#include<windows.h>#include"分數(shù)類.h"usingnamespacestd;〃文件操作ofstreamoutf("計算器操作記錄.log",ios_base::app);//時間操作,內(nèi)聯(lián)函數(shù)inlinetimeout(intx)//x有兩個參數(shù):1,2{SYSTEMTIMEtime;GetLocalTime(&time);if(x==1)〃到顯示器{cout.fill('0');cout<<"計算于:"<<setw(2)<<time.wHour<<':'<<setw(2)<<time.wMinute<<':'<<setw(2)<<time.wSecond<<'\n';cout.fill('');}elseif(x==2)〃到文件{outf<<time.wYear<<"年"<<setw(2)<<time.wMonth<<"月"<<setw(2)<<time.wDay<<"日"<<setw(2)<<time.wHour<<':'<<setw(2)<<time.wMinute<<':'<<setw(2)<<time.wSecond<<"";}}//顯示歡迎界面voidwelcome(){〃制作載入效果for(inti=0;i<=10;i++){cout<<"\n\n\n\t\t\t系統(tǒng)載入中……"<<i<<"0%";if(i==100)Sleep(1000);//暫停1000毫秒system("cls");//刷新屏幕}cout<<"載入成功?。?!\n";system("cls");cout<<endl;cout<<"\t|1"<<endl;cout<<"\t|模擬計算器系統(tǒng)I"<<endl;cout<<"\t|1"<<endl;cout<<"\t|(c)AllRight張黃江|"<<endl;cout<<"\t|E-mail:xaigb@163.com|"<<endl;cout<<"\t|version2010build|"<<endl;cout<<"\t11"<<endl<<"歡迎使用!"<<endl;}//強制退出程序的函數(shù)inlinegoout(intn){system("cls");for(inti=0;i<=6;i++){cout<<"\n\n\n\t\t\t系統(tǒng)退出中……"<<15*i<<"%”;if(i==100)Sleep(500);system("cls");}cout<<"\n\n共計算了"<<n<<"次,記錄保存在“計算器操作記錄.log”中\(zhòng)n"<<"\n謝謝使用\n\t按“回車鍵”確認退出";cin.get();//延遲退出exit(0);〃程序結(jié)束函數(shù)}〃模板函數(shù)template<classT>Tcompute(Ta,charp,Tb,bool&pr,int&n){n++;〃計算次數(shù)switch(p){case'+':returna+b;case'-':returna-b;case'*':returna*b;case'/':returna/b;default:cout<<"運算符錯誤!!!請檢查輸入是否有誤?\n";>pr=0;//pr置零,輸出語句關(guān)閉break;}returna;}〃計算實數(shù)intshishu(intn){charp;^^//存放+,-,*,/boolpr=1;〃輸出結(jié)果開關(guān)doublea,b,s;system("cls");//刷新屏幕do{cout<<"實數(shù),輸入式子(示例:a+b):";cin>>a>>p>>b;cin.get();if(p=='/'&&b==0)cout<<"被除數(shù)不能為0,";
while(p=='/'&&b==0);〃若分母為0,則重新輸入s=compute(a,p,b,pr,n);〃計算pr為輸出開關(guān)n為計算次數(shù)〃個性化顯示if(pr==1){cout<<"結(jié)果為:"<<"r*************n\n"〃左對齊〃設(shè)置位寬//恢復(fù)對齊方式的默認值<<setiosflags(ios_base::left)<<"\t|"<<setw(13)<<s<<"〃左對齊〃設(shè)置位寬//恢復(fù)對齊方式的默認值timeout(1);cout<<"\tl*************j\n";〃輸出到文件:計算器操作記錄.logtimeout(2);outf<<a<<p<<b<<'='<<s<<endl;}cout<<"即將返回主菜單……";Sleep(3500);system("cls");returnn;}〃計算分數(shù)intfenshu(intn){charp;〃存放+,-,*,/boolpr=1;〃輸出結(jié)果開關(guān)FenShuA,B,C;intc,d,e,f;char*ptemp=newchar[2];//存放分數(shù)線system("cls");do{cout<<"分數(shù),輸入式子(示例:a/b+c/d):";cin>>c>>*ptemp>>d>>p>>e>>*(ptemp+1)>>f;cin.get();if(d==0||f==0)cout<<"分母不能為0,";}while(d==0||f==0);A.Setxy(c,d);B.Setxy(e,f);C=compute(A,p,B,pr,n);//計算if(pr==1){//個性化顯示cout<<"結(jié)果為:"<<"r********n\n"<<"\t|";if(C.Gety()==1)//如果分母為1,則只輸出分子cout<<setiosflags(ios_base::left)<<setw(8)<<C.Getx();elsecout<<setw(3)<<C.Getx()<<'/'<<setiosflags(ios_base::left)<<setw(4)<<C.Gety()<<resetiosflags(ios_base::left);cout<<resetiosflags(ios_base::left)<<"|\t";timeout(l);cout<<"\t」********」\n";〃輸出到文件:計算器操作記錄.logtimeout(2);outf<<A.Getx()<<'/'<<A.Gety()<<p<<B.Getx()<<'/'<<B.Gety()<<'=';if(C.Gety()==1)outf<<C.Getx()<<endl;elseoutf<<C.Getx()<<'/'<<C.Gety()<<endl;}cout<<"即將返回主菜單……";Sleep(5000);system("cls");returnn;}//查看記錄intview(){chartemp;ifstream*inf=newifstream('計算器操作記錄.log",ios_base::in);system("cls");if((temp=(*inf).get())==EOF)cout<<"\n我們沒有找到相關(guān)記錄!\n\t\t你是不是沒有創(chuàng)建?\n";else{cout<<"記錄如下:\n";for(inti=0;i<11;i++)//在屏幕上輸出cout<<"1—";cout<<endl;while((temp=(*inf).get())!=EOF)cout.put(temp);//讀取數(shù)據(jù)for(i=0;i<11;i++)cout<<"";(*inf).close();cout<<"\n\t要刪除記錄,請按“D”:(回車返回廣;if((temp=cin.get())=='d'||temp=='D'){cout<<"請輸入系統(tǒng)密碼:";char*temp=newchar[11];cin>>temp;if(temp[0]=='0'&&temp[1]=='1'&&temp[2]=='2'){ofstreamtout("計算器操作記錄.log",ios_base::out);tout.close();system("cls");cout<<"\n記錄清除成功。\n\t即將返回主菜單\n";Sleep(1000);system("cls");return0;}else{cout<<"\n密碼錯誤!\n\t即將返回主菜單……\n";/Sleep(1500);system("cls");return0;}}elsesystem("cls");return0;}cout<<"\n系統(tǒng)即將返回主菜單……";Sleep(1500);system("cls");return0;}〃計算器函數(shù).h結(jié)束〃分數(shù).h//該頭文件用于定義分數(shù)類x/y#include<cmath>usingnamespacestd;//使用標(biāo)準(zhǔn)命名空間classFenShu{private:intx,y;intGongYueShu(intxx,intyy);〃求最大公約數(shù)public:FenShu(){};〃默認構(gòu)造函數(shù)FenShu(intxx,intyy)〃帶參數(shù)構(gòu)造函數(shù){x=xx;y=yy;}//計算,操作符重載FenShuoperator+(FenShup);FenShuoperator-(FenShup);FenShuoperator*(FenShup);FenShuoperator/(FenShup);//輸出TOC\o"1-5"\h\zintGetx();〃提取xintGety();〃提取y//設(shè)置參數(shù)voidSetxy(intxx,intyy);〃更改xy};//實現(xiàn)intFenShu::GongYueShu(intxx,intyy)〃求最大公約數(shù){inti=xx>yy?yy:xx;for(;i>0;i--)if(xx%i==0&&yy%i==0)returni;return0;}FenShuFenShu::operator+(FenShup){intm=y*p.y;〃分母in
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年貼鑫公司技術(shù)改造及擴產(chǎn)項目可行性研究報告
- 2024-2030年聚氨酯汽車漆搬遷改造項目可行性研究報告
- 2024-2030年版中國葉面肥行業(yè)產(chǎn)能預(yù)測及發(fā)展可行性分析報告
- 2024-2030年洪氏奶腫消搬遷改造項目可行性研究報告
- 2024年版:地方政府國有資產(chǎn)監(jiān)督管理委托協(xié)議
- 2024年度午托班幼兒托管與戶外活動合作協(xié)議3篇
- 花園景觀鐵藝定制合同
- 藝術(shù)體操教練聘用合同協(xié)議書
- 托班手工面條課程設(shè)計
- 銀行安全保衛(wèi)工作知識考試題庫(濃縮500題)
- 吉利NPDS流程和PPAP介紹
- 專題02:名著導(dǎo)讀-2022-2023學(xué)年八年級語文下學(xué)期期中專題復(fù)習(xí)(北京專用)
- 男朋友無償贈與車輛協(xié)議書怎么寫
- 汽車認識實訓(xùn)課件
- 輪機工程材料18章總結(jié)
- 公路管理行業(yè)支撐性科研課題立項評審評分標(biāo)準(zhǔn)表
- 單招面試技巧范文
- GB/T 5195.1-2006螢石氟化鈣含量的測定
- (職高)高一語文期末測試題及答案解析
- 2023年自考傳播學(xué)概論試題及答案
評論
0/150
提交評論