版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)題目:復(fù)數(shù)計(jì)算器學(xué)生姓名:專業(yè):班級(jí):學(xué)號(hào):完成實(shí)驗(yàn)時(shí)間:實(shí)驗(yàn)地點(diǎn):指導(dǎo)教師:課程設(shè)計(jì)報(bào)告要求:結(jié)構(gòu)要求:?jiǎn)栴}分析:要求用自己的話概括出本課題的內(nèi)容、功能結(jié)構(gòu)結(jié)構(gòu)分析:根據(jù)問題分析的結(jié)果,進(jìn)一步分析出系統(tǒng)的類結(jié)構(gòu)及相互關(guān)系,畫UML的類圖并描述其內(nèi)部結(jié)構(gòu)屬性及相互關(guān)系現(xiàn)流程分析:概述自己的實(shí)現(xiàn)過程:如工程建立流程、類創(chuàng)建流程等個(gè)性功能介紹:應(yīng)介紹自己在系統(tǒng)中的程序改進(jìn)與新增的功能模塊的意義、價(jià)值課程設(shè)計(jì)小結(jié):簡(jiǎn)述自己課程設(shè)計(jì)的收獲(一):問題描述和要求:(1):該復(fù)數(shù)計(jì)算器可進(jìn)行“+”、“-”、“*”、“+=”、“-=”、“*=”、“比較兩模的大小”,可識(shí)別用戶輸入“a+bi”格式,這些可用多態(tài)中的對(duì)應(yīng)的運(yùn)算符重載(2):可對(duì)上面每個(gè)功能進(jìn)行測(cè)試并記錄最后三次的平均成績(jī)這可以用一個(gè)test()函數(shù)實(shí)現(xiàn)(3):把數(shù)據(jù)寫入文件當(dāng)下次用戶輸入存在的姓名時(shí)把他的數(shù)據(jù)讀出來如果輸入的姓名不存在就替換掉,這可以用對(duì)應(yīng)的寫入文件和讀取去實(shí)現(xiàn)。(二):結(jié)構(gòu)分析、系統(tǒng)分析、畫uml圖描述它們的關(guān)系(1):根據(jù)問題描述和要求,系統(tǒng)要求該復(fù)數(shù)計(jì)算器有加、減、乘、加等于、減等于、乘等于、對(duì)用戶進(jìn)行測(cè)試、比較兩個(gè)復(fù)數(shù)模長(zhǎng)、能夠識(shí)別客戶輸入“a+bi”的模式等功能。最后還要求把客戶做過的信息(做了多少次加、減、乘、測(cè)試、最后三次的平均分、用戶名等信息)用文件來保存(2):既然要具備上面的功能我可以用我學(xué)過的多態(tài)中的運(yùn)算符重載來實(shí)現(xiàn)還有要把數(shù)據(jù)存入盤中我可以用文件來對(duì)他進(jìn)行保存文件名為:“xiao.txt”到下一個(gè)客戶想查信息時(shí)可輸入姓名進(jìn)行匹配當(dāng)新的用戶用時(shí)可對(duì)上次保存的信息覆蓋來保存當(dāng)前的信息這我用系統(tǒng)函數(shù)remove()來實(shí)現(xiàn)。對(duì)于加、減、等功能的實(shí)現(xiàn)可以分辨用一個(gè)函數(shù)來完成,例如加可以用jia()函數(shù)完成。做好界面,另外還得要一個(gè)結(jié)構(gòu)體來定義一個(gè)用戶對(duì)象并把信息放在里面保存到文件中,這里用結(jié)構(gòu)體可定義全局變量對(duì)下面實(shí)行有好處。最后在主函數(shù)中調(diào)用每個(gè)函能的實(shí)現(xiàn)。Uml圖:Complex---real:float---image:float+operator+(complex&s):complex+operator-(complex&s):complex+operator++():complex+operator+=(complex&s):complex+operator-=(complex&s):complex+operator*=(complex&s):complex+operator--():complex+operator>(complex&s):int+operator<(complex&s):int+operator==(complex&s):int+operator!=(complex&s):int(三):系統(tǒng)設(shè)計(jì)(1):系統(tǒng)的總框架使用面向?qū)ο蟮某绦蛟O(shè)計(jì)是想進(jìn)行分析,整個(gè)系統(tǒng)涉及一個(gè)類的信息和操作。該類為complex:復(fù)數(shù)類。在必要運(yùn)算符重載中定義相應(yīng)的類的對(duì)象。該類所有成員如下:classComplex//定義一個(gè)complex的類{private:doubleReal,Image;public: CComplex(doublereal=0,doubleimage=0)//構(gòu)造函數(shù){Real=real;Image=image; }friendistream&operator>>(istream&is,CComplex&com);//重載輸入friendostream&operator<<(ostream&os,CComplex&com);//重載輸出CComplexoperator+(CComplex&com);//加法重載CComplexoperator-(CComplex&com);//減法重載CComplexoperator*(CComplex&com);//乘法重載CComplexoperator+=(CComplex&com);//加法賦值重載CComplexoperator-=(CComplex&com);//減法賦值重載CComplexoperator*=(CComplex&com);//乘法賦值重載CComplexoperator++();//自加CComplexoperator--();//自減doublemod(void);//求復(fù)數(shù)的模intoperator>(CComplex&com);intoperator<(CComplex&com);intoperator!=(CComplex&com);intoperator==(CComplex&com);};(2):該程序的系統(tǒng)流程如下圖:開始開始聲明一個(gè)complex類,并定義float,real,image;聲明類的函數(shù),構(gòu)造函數(shù),加減乘和取模運(yùn)算sum.real=real+s.real;sum.image=imag+s.image;s.ubreal=real-s.real;sub.image=imag-s.image;accum.real=real*s.real-image*s.image;accum.imag=real*s.image+image*s.real;Sqrt(real*real=image*image);輸出a,s,a+s,a-s,a*s,∣a∣的值終止(四):對(duì)新添功能的介紹(1)本人是按要求做的沒加什么別的功能。(五):實(shí)驗(yàn)心得(1):通過本課程設(shè)計(jì)讓我更好地知道多態(tài)中的運(yùn)算符重載。(2):讓給我更好地了解鍵盤輸出流的格式與運(yùn)用。(3):在本實(shí)驗(yàn)中遇到不少問題,通過老師見講解和建議讓我知道以后在寫序時(shí)更快地去找到錯(cuò)誤并解決。(4):通過本實(shí)驗(yàn)讓我更好地理解文件并運(yùn)用文件6、程序清單及注釋#include<iostream>#include<cmath>#include<fstream>usingnamespacestd;classcomplex//定義一個(gè)complex的類{private: floatReal,Image;public:complex(floatreal=0,floatimage=0)//構(gòu)造函數(shù) {Real=real; Image=image; }friendistream&operator>>(istream&is,complex&s)//輸出流重載 {charb[80];is>>b;intlen=strlen(b);intn=0,sign=1;s.Image=s.Real=0;for(intk=0;k<len;k++) {if((b[k]<'0'||b[k]>'9')&&(b[k]!='+'&&b[k]!='-'&&b[k]!='i'))//度輸入格式規(guī)范如不讓“+”,“-”,“*”在一起的還有輸入的一點(diǎn),還有輸入的必須為0-9或運(yùn)算付或“i” {cout<<"error"<<endl;returnis; } }for(k=0;k<len;)//提取實(shí)部和虛部 {if(n!=0&&(b[k]=='-'||b[k]=='+')) {s.Real=sign*n;n=0; }if(b[k]=='-') {sign=-1;k++; }if(b[k]=='+') {sign=1;k++; }if(b[k]=='i') {if(k!=len-1)//如果i不是最后一個(gè)就報(bào)錯(cuò)cout<<"error\n";elses.Image=sign*n;break; }while(b[k]>='0'&&b[k]<='9')//對(duì)n賦值 {n=n*10+b[k]-'0';k++; } }if(b[len-1]!='i'&&n!=0) {s.Real=n*sign; }returnis; }friendostream&operator<<(ostream&os,complex&s)//輸出符重載{ if(s.Image==0) os<<s.Real; elseif(s.Real==0) os<<s.Image<<"i"; elseif(s.Image>0) os<<s.Real<<"+"<<s.Image<<"i"; else os<<s.Real<<s.Image<<"i"; returnos; }complexoperator+(complex&s);//對(duì)加法運(yùn)算符重載complexoperator-(complex&s);//對(duì)減法運(yùn)算符重載complexoperator*(complex&s);//對(duì)乘運(yùn)算符重載complexoperator+=(complex&s);//對(duì)加等于運(yùn)算符重載complexoperator-=(complex&s);//對(duì)減等于運(yùn)算符重載complexoperator*=(complex&s);//對(duì)乘等于運(yùn)算符重載complexoperator++()//對(duì)加運(yùn)算符重載并實(shí)現(xiàn) {Real=Real+1; Image=Image+1; return*this;}complexoperator--()//對(duì)減運(yùn)算符重載并實(shí)現(xiàn) {Real=Real-1;Image=Image-1; return*this; }intoperator==(complex&s);floatlenmod(void);intoperator!=(complex&s);intoperator>(complex&s);intoperator<(complex&s);};structuser//定義一個(gè)結(jié)構(gòu)體來保存用戶使用過復(fù)數(shù)計(jì)算器的信息{intk; charname[50]; intzd;intzs; intnsum; intndel; intnmui1; intntest; floatavg; }a;complexcomplex::operator+(complex&s)//對(duì)加運(yùn)算符的實(shí)現(xiàn){complexsum;sum.Real=Real+s.Real;sum.Image=Image+s.Image;returnsum;}complexcomplex::operator-(complex&s)//對(duì)減運(yùn)算符的實(shí)現(xiàn){complexsub;sub.Real=Real-s.Real;sub.Image=Image-s.Image;returnsub;}complexcomplex::operator*(complex&s)//對(duì)乘運(yùn)算符的實(shí)現(xiàn){complexaccum;accum.Real=Real*s.Real-Image*s.Image;accum.Image=Real*s.Image+Image*s.Real;returnaccum;}floatcomplex::lenmod()//求復(fù)數(shù)的模長(zhǎng){returnReal*Real+Image*Image;}complexcomplex::operator+=(complex&s)/對(duì)加等于運(yùn)算符的實(shí)現(xiàn){Real=Real+s.Real;Image=Image-s.Image;return*this;}complexcomplex::operator-=(complex&s)/對(duì)減等于運(yùn)算符的實(shí)現(xiàn){Real=Real-s.Real; Image=Image-s.Image; return*this;}complexcomplex::operator*=(complex&s)//對(duì)乘等于運(yùn)算符的實(shí)現(xiàn){Real=Real*s.Real-Image*s.Image; Image=Real*s.Image+Image*s.Real; return*this;}intcomplex::operator<(complex&s){if(lenmod()<s.lenmod()) return1;else return0;}intcomplex::operator>(complex&s){if(lenmod()>s.lenmod()) return1;else return0;}intcomplex::operator!=(complex&s){if(lenmod()!=s.lenmod()) return1;else return0;}intcomplex::operator==(complex&s){if(Real==s.Real&&Image==s.Image) return1;else return0;}voidjiemian();//界面函數(shù)的聲明voidzijia()//自加函數(shù){ a.zs=0; intn; do { ++(a.zs); complexb; cout<<"輸入一個(gè)復(fù)數(shù):"; cin>>b; ++b; cout<<"結(jié)果為:"<<b<<endl;cout<<"輸入的復(fù)數(shù)為(0)回界面或者繼續(xù),請(qǐng)輸入n==:"; cin>>n; }while(n!=0); jiemian();}voidzijian()//自減函數(shù){ a.zd=0; intn; do { ++(a.zd); complexb; cout<<"輸入一個(gè)復(fù)數(shù):"; cin>>b; --b; cout<<"結(jié)果為:"<<b<<endl;cout<<"輸入的復(fù)數(shù)為(0)回界面或者繼續(xù),請(qǐng)輸入n==:"; cin>>n; }while(n!=0); jiemian();}voidjia()//加函數(shù){ a.nsum=0; intn,i; do { ++(a.nsum); complexnum1[20],sum(0,0); cout<<"輸入加復(fù)數(shù)的個(gè)數(shù)至少兩個(gè):"; cin>>n; for(i=0;i<n;i++) { cout<<"輸入第"<<i<<"個(gè)復(fù)數(shù):"; cin>>num1[i];sum=sum+num1[i]; } cout<<"相加復(fù)數(shù)的結(jié)果為:"<<sum<<endl; cout<<"輸入的數(shù)在(0)回界面不在(0)繼續(xù),請(qǐng)輸入n==:"; cin>>n; }while(n!=1&&n!=0); jiemian(); }voidjian()//減函數(shù){ a.ndel=0; intn,i; do { ++(a.ndel); complexnum1[20],del; cout<<"輸入被減復(fù)數(shù):"; cin>>num1[0]; del=num1[0]; cout<<"輸入減復(fù)數(shù)的個(gè)數(shù)至少一個(gè):"; cin>>n; for(i=1;i<=n;i++) { cout<<"輸入第"<<i<<"個(gè)復(fù)數(shù):"; cin>>num1[i];del=del-num1[i]; } cout<<"相減復(fù)數(shù)的結(jié)果為:"<<del<<endl; cout<<"輸入的數(shù)在(0)回界面不為(0)繼續(xù),請(qǐng)輸入n==:"; cin>>n; }while(n!=1&&n!=0); jiemian();}voidcheng()//乘法函數(shù){ a.nmui1=0; intn,i; do { ++(a.nmui1); complexnum1[10],mui1; cout<<"輸入一個(gè)乘復(fù)數(shù):"; cin>>num1[0];mui1=num1[0]; cout<<"輸入乘復(fù)數(shù)的個(gè)數(shù)至少一個(gè):"; cin>>n; for(i=1;i<=n;i++) { cout<<"輸入第"<<i<<"個(gè)復(fù)數(shù):"; cin>>num1[i];mui1=mui1*num1[i]; } cout<<"相乘復(fù)數(shù)的結(jié)果為:"<<mui1<<endl; cout<<"輸入的數(shù)在(0-1)回界面不在(0-1)繼續(xù),請(qǐng)輸入謝謝n==:"; cin>>n; }while(n!=1&&n!=0); jiemian();}voidbijiaodaxiao()//模的比較函數(shù){a.k=0; intn; do {++a.k;complexs,b; cout<<"輸入兩個(gè)復(fù)數(shù)"<<endl; cout<<"輸入第一個(gè)復(fù)數(shù):"; cin>>s;cout<<"輸入第二個(gè)復(fù)數(shù):"; cin>>b;if(s.lenmod()>b.lenmod()) cout<<"輸入第一個(gè)復(fù)數(shù)的模大于第二復(fù)數(shù)的模\n"; else {if(s.lenmod()==b.lenmod()) cout<<"兩復(fù)數(shù)的模相等"<<endl; else cout<<"輸入第一個(gè)復(fù)數(shù)的模小于第二復(fù)數(shù)的模"<<endl; }cout<<"輸入0回界面或者繼續(xù),請(qǐng)輸入n==:"; cin>>n; }while(n!=0); jiemian();}voidtest()//測(cè)試函數(shù){complexconsis,ques; floatreal1,real2,real3,real4,image1,image2,image3,image4; inti,n,k; charops; floatscore=0; floatsum1=0; a.ntest=0; a.avg=0;intj,m;cout<<"歡迎進(jìn)入測(cè)試系統(tǒng)"<<endl; cout<<"輸入你要測(cè)試的次數(shù):"; cin>>m; for(j=1;j<=m;j++) {++(a.ntest); cout<<"輸入你要測(cè)試的題數(shù):"; cin>>n; for(i=1;i<=n;i++) { real1=rand()%200-99;real2=rand()%200-99;image1=rand()%200-99;image2=rand()%200-99; real3=rand()%20-9;real4=rand()%20-9; image3=rand()%20-9; image4=rand()%20-9; complexa(real1,image1),b(real2,image2),c(real3,image3),d(real4,image4); k=rand()%3; switch(k) { case0: { ops='+'; cout<<"該題為:"; cout<<a<<""<<"+"<<""<<b; consis=a+b; break; } case1: { ops='-'; cout<<"該題為:"; cout<<a<<""<<"-"<<""<<b;consis=a-b; break; } case2: { ops='*'; cout<<"該題為:"; cout<<a<<""<<"*"<<""<<b; consis=a*b; break; } } cout<<"輸入你做的答案:"; cin>>ques; if(consis==ques) { score=score+100/n; cout<<"回答正確,你現(xiàn)在的得分是:"; cout<<score<<endl;if((j>=(m-2))&&((m-2)>0)) { sum1=sum1+score; score=0; } } else { cout<<"你做錯(cuò)了請(qǐng)繼續(xù)努力,正確答案是:"; cout<<consis; cout<<"你現(xiàn)在的得分是:"; cout<<score<<endl; } } }a.avg=sum1/a.ntest; }voidshow();//信息顯示函數(shù)聲明voidsavefile()//把數(shù)據(jù)寫到文件中去{show();ofstreamoutfile("xiao.txt");outfile.write(reinterpret_cast<char*>(&a),sizeof(a)); outfile.close();return;}voidjiemian()//界面函數(shù){intchoose; do {system("cls");cout<<"\t"<<"*****==========================================*****************"<<endl;cout<<"\t"<<"*****歡迎進(jìn)入一個(gè)由張小華制作的簡(jiǎn)單的復(fù)數(shù)計(jì)算器********"<<endl; cout<<"\t"<<"*****==========================================********"<<endl;cout<<"\t"<<"=========================菜單如下======================================"<<endl; cout<<"\t"<<"\t"<<"1:復(fù)數(shù)加法\n"; cout<<"\t"<<"\t"<<"2:復(fù)數(shù)的減法\n"; cout<<"\t"<<"\t"<<"3:復(fù)數(shù)自加\n"; cout<<"\t"<<"\t"<<"4:復(fù)數(shù)自減\n";cout<<"\t"<<"\t"<<"5:復(fù)數(shù)模的比較\n";cout<<"\t"<<"\t"<<"6:復(fù)數(shù)乘法\n"; cout<<"\t"<<"\t"<<"7:測(cè)試\n"; cout<<"\t"<<"\t"<<"0:退出該程序并保存\n"; cout<<"請(qǐng)選擇:"; cin>>choose; switch(choose) { case1: jia();break; case2: jian();break; case3: zijia();break; case4: zijian();break; case5: bijiaodaxiao();break; case6: cheng();break; case7: test();break; case0: cout<<"謝謝你的使用歡迎下次再來:"<<endl; break; default: cout<<"輸入有誤請(qǐng)按任意鍵再輸謝謝:"<<endl; exit(0); } }while(choose!=0); savefile();}voidshow()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 六年級(jí)第一學(xué)期教學(xué)計(jì)劃范文合集三篇
- 九年級(jí)化學(xué)教學(xué)計(jì)劃范文錦集7篇
- 銷售部年度工作計(jì)劃
- 師德師風(fēng)的教師演講稿模板5篇
- 人壽保險(xiǎn)公司實(shí)習(xí)報(bào)告合集六篇
- 關(guān)于年會(huì)策劃方案范文合集6篇
- 大學(xué)生頂崗實(shí)習(xí)周記錦集六篇
- 政府績(jī)效評(píng)估 課件 蔡立輝 第6-10章 政府績(jī)效評(píng)估的結(jié)果應(yīng)用與改進(jìn) -政府績(jī)效評(píng)估在當(dāng)代中國(guó)的推進(jìn)
- 2010年高考一輪復(fù)習(xí)教案:必修1 第四章 非金屬及其化合物 全程教學(xué)案
- 2025年農(nóng)林牧漁專用儀器儀表項(xiàng)目發(fā)展計(jì)劃
- 2025中國(guó)電信山東青島分公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年八省聯(lián)考高考語文作文真題及參考范文
- 新課標(biāo)(水平三)體育與健康《籃球》大單元教學(xué)計(jì)劃及配套教案(18課時(shí))
- 開題報(bào)告-鑄牢中華民族共同體意識(shí)的學(xué)校教育研究
- 計(jì)件工勞務(wù)合同范例
- 2024年公交車開通儀式講話例文(4篇)
- 2024-2025學(xué)年八年級(jí)上冊(cè)物理 第五章 透鏡以及其應(yīng)用 測(cè)試卷(含答案)
- 《自理理論orem》課件
- 2024年浙江省杭州市下城區(qū)教育局所屬事業(yè)單位招聘學(xué)科拔尖人才10人歷年管理單位遴選500模擬題附帶答案詳解
- 研發(fā)項(xiàng)目管理培訓(xùn)課件講解
- 2024-2030年中國(guó)膏劑(膏方)行業(yè)競(jìng)爭(zhēng)狀況及營(yíng)銷前景預(yù)測(cè)報(bào)告版
評(píng)論
0/150
提交評(píng)論