版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、湖南人文科技學院計算機系課程設計說明書 課 程 名 稱: C+程序設計 課 程 代 碼: 408025 題 目: 求解有理數分式方程 年級/專業(yè)/班:09級計算機科學與技術系軟件工程專業(yè)2班 學 生 姓 名: 谷其飛、王武娟、賀紅軍、艾準、周玉香 學 號: 09436210、09436211、9436212 09436213、09436214 指 導 教 師: 袁輝勇 開 題 時 間: 2010 年 9 月 16 日完 成 時 間: 2010 年 9 月 26 日 目 錄摘 要3一、引言2二、設計目的與任務21、本課程設計的目的22、本課程設計的任務2三、設計方案31、總體設計3、詳細設計43
2、、程序清單54、程序調試與體會75、運行結果8四、結論8五、參考文獻9摘 要 本課程設計的目的是通過定義分式類,在設計中我們采用多文件編程原理,利用#include命令來實現“文件包含”的操作,使程序更加清晰,明了。程序中我們將類的說明設計成.h頭文件,類的實現、主函數分開在不同的.cpp源文件中,這樣一來提高了程序代碼的重用和編程效率。關鍵字:多文件編程、類、構造函數、繼承、派生。Abstract This course is designed by defining point, line, area. Through the derived and to realize thinheri
3、ted other ways to reuse code for the triangle area. In the design, we adopt documents, include using the principle of programming commands to realize "#" operation documents contain more clearly, procedures, and clear. In the process, we will point, line, area, separated in different. CPP
4、source file, and each class has its header files, thus improving the program code reuse and programming efficiency.Key words:Many documents programming, kind, constructor, inheritance,derived.C+程序設計語言課程設計 求解有理數分式方程一、引言隨著人們生活水平的提高,計算機發(fā)展異常迅速。如今,計算機已經深入到我們社會的各個領域,計算機的使用也已不再局限于科學計算,它已進入人類社會的各個領域并發(fā)揮著越來越重
5、要的作用。通過計算機對各類問題求解已經成為一種高效、快捷的方式。本課程設計就是用類的繼承,派生等問題和實現代碼重用以及函數的調用等方式來提高編程效率的。二、設計目的與任務1、本課程設計的目的1)通過課程設計更進一步理解C+的基礎知識和面向對象的思想。2)訓練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)范進行軟件開發(fā),并在此過程中培養(yǎng)嚴謹的科學態(tài)度和良好的工作作風。初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能。3)熟練掌握C+中類及類所具備的功能在程序中的應用,并熟練了解類中函數的調用。2、本課程設計的任務 一、定義分式類,其中包含分子和分母。 二、實現功能:求解一元一次有理數分式方
6、程三、要求: 1、設計菜單實現功能選擇2、輸入功能:輸入有理數分式方程3、計算并輸出方程的根,并用最簡分式表示4、使用多文件方式設計:1)類的說明設計成.h頭文件2)類的實現為一個.cpp文件3)主函數為另一個.cpp文件 三、設計方案1、總體設計1)設計多個頭文件:conio.h;math.h;iostream.h等。2)定義類Fraction和FractionEquation ,對成員函數進行定義,并運用拷貝構造函數,析構函數,繼承及派生。3)設計多個函數并進行調用實現求解一元一次有理數分式方程、詳細設計2.1類接口設計void print();輸出函數void printX(); 輸出函
7、數,Fraction();無參構造函數Fraction(Fraction &other)拷貝構造函數virtual Fraction();析構函數void Simplify(); 分式簡化運算bool IsInteger();判斷分式是否表示一個整數(即分母是否為1)bool IsNegative();判斷分式是否表示一個負數FractionEquation();無參構造函數FractionEquation(int a,int b,int c,int d,int e,int f);/含6個參數的構造函數virtual FractionEquation();析構函數void DrawWa
8、rn():輸入參數函數;void DrawMenu()設計菜單實現功能選擇;Fraction Count();計算方程的根函數;void print();輸出方程函數;void printAnswer();輸出方程的根函數;switch();多分支語句;booll();判斷分式;2.2主函數。main() 調用main() 調用DrawMenu(); print();IsNegative();FractionEquation (a,b,c,d,e,f);等等。3、程序清單#include <conio.h>#include <iostream>using namespa
9、ce std;#include <math.h>/分式類,完成諸如(1/3+3/5這樣的計算)class Fraction public:void print();/ 輸出函數void printX();/ 輸出函數,當分式作為參數時輸出:/ 1/3應寫作(1/3),即要加一個括號/ 1/1應不寫/ -1/1應只寫一個負號Fraction();/ 無參構造函數,必須保留Fraction(int n,int d);/ 包含兩個參數的構造(分子,分母)Fraction(Fraction &other);/ 拷貝構造函數virtual Fraction();/ 析構函數void
10、Simplify();/ 分式簡化運算,如將18/(-4)化為(-9)/2Fraction operator +(Fraction& other);/ 分式加法運算Fraction operator -(Fraction& other);/ 分式減法運算Fraction operator *(Fraction &other);/ 分式乘法運算Fraction operator /(Fraction &other);/ 分式除法運算bool IsInteger();/ 判斷分式是否表示一個整數(即分母是否為1)bool IsNegative();/ 判斷分式是否表
11、示一個負數private:int numerator;/分子int denominator; /分母;Fraction:Fraction()Fraction(0,1);Fraction:Fraction()Fraction:Fraction(int n, int d)numerator=n;denominator=d;Simplify();Fraction Fraction:operator +(Fraction &other)Fraction ret;ret.numerator=(this->numerator*other.denominator+this->denomi
12、nator*other.numerator);ret.denominator=this->denominator*other.denominator;ret.Simplify();return ret;Fraction Fraction:operator *(Fraction &other)Fraction ret;ret.numerator=this->numerator*other.numerator;ret.denominator=this->denominator*other.denominator;ret.Simplify();return ret;Frac
13、tion:Fraction(Fraction &other)this->numerator=other.numerator;this->denominator=other.denominator;void Fraction:Simplify()if(denominator<0)numerator=-numerator;denominator=-denominator;int a=abs(numerator),b=abs(denominator);while(a!=0&&b!=0) a<b?b-=a:a-=b; int k=(a=0) ? b :
14、a);numerator=numerator/k;denominator=denominator/k;Fraction Fraction:operator -(Fraction &other)Fraction ret;ret.numerator=(this->numerator*other.denominator-this->denominator*other.numerator);ret.denominator=this->denominator*other.denominator;ret.Simplify();return ret;Fraction Fractio
15、n:operator /(Fraction &other)Fraction ret;ret.numerator=this->numerator*other.denominator;ret.denominator=this->denominator*other.numerator;ret.Simplify();return ret;void Fraction:print()if(denominator!=1 && denominator!=-1)cout<<numerator<<"/"<<denomina
16、tor;else if(denominator=1)cout<<numerator;elsecout<<-numerator;bool Fraction:IsNegative()if (numerator<0)return true;elsereturn false;bool Fraction:IsInteger()if (denominator=1)return true;elsereturn false;void Fraction:printX()if(IsInteger()if(numerator=1)return;if(numerator=-1)cout&
17、lt;<"-"return;print();elsecout<<"("print();cout<<")"class FractionEquation public:FractionEquation();FractionEquation(int a,int b,int c,int d,int e,int f);/含6個參數的構造函數virtual FractionEquation();Fraction Count();/計算方程的根,結果為“分式”void print();/輸出方程 Ax+B=Cvoid
18、printAnswer();/輸出方程的根 x=根private:Fraction numA;/參數A的值(分式)Fraction numB;/參數B的值(分式)Fraction numC;/參數C的值(分式);FractionEquation:FractionEquation()FractionEquation:FractionEquation()FractionEquation:FractionEquation(int a, int b, int c, int d, int e, int f):numA(b,a),numB(d,c),numC(f,e)void FractionEquati
19、on:print()numA.printX();if (!(numB.IsNegative()/如果B是正數(即d/c>=0)cout<<"x+"elsecout<<"x"numB.print();cout<<"="numC.print();Fraction FractionEquation:Count()Fraction ret;ret=(numC-numB)/numA;return ret;void FractionEquation:printAnswer()Fraction ans=Co
20、unt();cout<<"x="ans.print();void DrawWarn()cout<<endl<<endl;cout<<"t"<<endl;cout<<"t 請先輸入參數! "<<endl;cout<<"t"<<endl;void DrawMenu()system("cls");cout<<endl<<endl;cout<<"t&q
21、uot;<<endl;cout<<"t 請選擇操作 "<<endl;cout<<"t"<<endl;cout<<"t 1.輸入參數 "<<endl;cout<<"t"<<endl;cout<<"t 2.輸出結果 "<<endl;cout<<"t"<<endl;cout<<"t 0.退出 "&
22、lt;<endl;cout<<"t"<<endl;main()int a,b,c,d,e,f;char ch;bool beContinue=true;/表示是否繼續(xù),用戶選了“退出”,則為false,退出程序bool beInited=false;/表示方程是否被初始化,若沒有被初始化,則不允許“輸出結果”。while(beContinue)DrawMenu();while(1)ch=getch();if(ch<='3' && ch>='0')break;DrawMenu();swi
23、tch(ch)case '1':system("cls");cout<<endl<<endl<<endl;cout<<"t方程為: (b/a)x+d/c=f/e"<<endl;cout<<"t請依次輸入a b c d e f:"<<endl;a=0;while(a=0)cout<<"ta="cin>>a;if(a=0)cout<<"t分母不能為0!請重新輸入!"
24、<<endl;cout<<"tb="cin>>b;c=0;while(c=0)cout<<"tc="cin>>c;if(c=0)cout<<"t分母不能為0!請重新輸入!"<<endl;cout<<"td="cin>>d;e=0;while(e=0)cout<<"te="cin>>e;if(e=0)cout<<"t分母不能為0!請重新輸入!&q
25、uot;<<endl;cout<<"tf="cin>>f;beInited=true;break;case '2':system("cls");if(beInited)FractionEquation fa(a,b,c,d,e,f);cout<<endl<<endl<<endl;cout<<"t方程為:"<<endl<<"t "fa.print();cout<<endl;cout&
26、lt;<"t解得:"<<endl<<"t "fa.printAnswer();cout<<endl;cout<<"t"getch();elseDrawWarn();getch();break;case '0':beContinue=false;cout<<endl<<"t"break;return 1;4、程序調試與體會在程序調式過程最需要考慮到的就是調用順序的表達,即如何知道程序是先調用什么函數后調用什么。于是我們首先將“xx函數的調用”用cout輸出,作為一個調用的標記,這樣程序是怎么調用的就一清二楚。但本設計中沒有判斷表達式的語法錯誤,固在調試切忌出現語法錯誤。5、運行結果在程序中依次輸入分式(5/2)x+5/8=5/6的分子分母,運行結果如圖:圖三圖四圖五四、結論通過本次課程設計,讓我對C+這門學科對有了進一步的認識,熟練掌握了類及類模板的應用。以前對該課程的恐懼感都以消失,任何事情沒有做不到只有愿不愿意去做。剛開始接到該題,心中確實充滿困惑。不過在圖書館和網上找了一些資料看了后,便覺得思路就在眼前了,之前不過就是由于對該課程的恐懼而產生了一定的心里影響而已。之后憑借那閃現在眼前的點點思路,慢慢在琢
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度股權分割與繼承處理協議
- 2025年度房地產合作終止協議書
- 2025年度旅游文化股權合作協議書
- 二零二五年度木工機械操作人員勞務租賃合同4篇
- 2025年度牧業(yè)產品品牌推廣與營銷合同4篇
- 二零二五年度餐飲店員工激勵機制與績效考核合同
- 二零二五版環(huán)保技術入股合作協議書3篇
- 二零二五年度消防設施檢測與評估合同
- 2025年度汽車維修配件買賣及售后服務合同
- 二零二五年度中式快餐連鎖加盟經營合同
- 房地產銷售任務及激勵制度
- 并購指南(如何發(fā)現好公司)
- DL-T-1642-2016環(huán)形混凝土電桿用腳扣
- 銅礦成礦作用與地質環(huán)境分析
- 30題紀檢監(jiān)察位崗位常見面試問題含HR問題考察點及參考回答
- 詢價函模板(非常詳盡)
- 《AI營銷畫布:數字化營銷的落地與實戰(zhàn)》
- 麻醉藥品、精神藥品、放射性藥品、醫(yī)療用毒性藥品及藥品類易制毒化學品等特殊管理藥品的使用與管理規(guī)章制度
- 乘務培訓4有限時間水上迫降
- 2023年低年級寫話教學評語方法(五篇)
- DB22T 1655-2012結直腸外科術前腸道準備技術要求
評論
0/150
提交評論