




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
語言課程設計(小型復數計算器)班級學號2143521214350321435072143524學生姓名王勁翔趙冉郭子昕蘆鷺提交日期2015年7月23日成績計算機與通信工程學院目錄\o"1-3"\h\z\u語言課程設計 425356799\h0題目 425356800\h2功能 425356801\h2功能主要模塊及功能說明 425356802\h2王勁翔負責模塊一: 425356803\h2王勁翔負責模塊二: 425356804\h5郭子昕負責模塊: 425356805\h8蘆鷺負責模塊: 425356806\h10趙冉負責模塊: 425356807\h11核心算法及流程圖 425356808\h14主要意義 425356809\h14實現方式及完成情況 425356810\h14語言源程序清單 425356811\h14題目用編寫一個小型復數計算器請用面向對象方法設計并實現一個小型復數計算器,包括如下功能:實現復數的設置和顯示實現復數加減乘除功能,并顯示運算結果實現用運算符==進行復數的相等比較,并顯示比較結果功能實現復數的賦值與計算功能主要模塊及功能說明王勁翔負責模塊一:()主函數{ []聲明原復數 ;/*說明:如果為默認值,用循環執行計算器的普通模式*/ ()循環 { 02=0菜單選擇,復數選擇初始化/*說明:歡迎頁面*/ ()歡迎 >>菜單選擇/*說明:273-315行使用進行菜單的選擇和處理*/ () {/*說明:復數的賦值部分*/ 1:/*說明:調用函數來選擇*/ 2()復數選擇 (!(2>=02<))判斷選擇是否合理 { (); ; }/*說明:調用類成員函數*/ [2]()復數的賦值 ()清屏 ; 2:/*說明:輸出復數部分*/ <<"輸入0,輸出所有復數。"<<全部輸出 <<"或輸出單個復數:"<<;/*說明:調用函數返回值賦給2*/ 2()復數選擇 (21) { (0<)全部輸出 { <<"復數"<<1<<':'; [i](); } } (!(2>=02<))判斷選擇是否合理 { (); ; } [2]()復數的輸出 ()清屏 ; 3: (); ; 4: (); (); ; : 0; } } () { (1) <<"第一個復數:"; [0](); (1) <<"第二個復數:"; [1](); (); } 0;}王勁翔負責模塊二:1;01;(){ [2]={"關閉","開啟"}; [3]={0}1;/*說明:防止文件不存在*/ []="";/*說明:聲明文件輸入輸出流與*/ ();/*說明:如果文件打開失敗,創建一個空的文件*/ (()) { ()文件被占用/*說明:如果輸出文件失敗,顯示程序異常并退出*/ (()) { <<"程序異常!"<<; ; } <<"001"; ()釋放文件 [2]=1; } 開始讀取(占用文件) { >>[0]>>[1]>>[2]; (); } 讀入結束(釋放文件) [0]; [1]; [2]; (1) { x; (""); <<"設置與幫助"<<; <<"①轉入簡單模式:"<<[[0]]<<; <<"②簡單模式的使用說明:"<<[[1]]<<; <<"③清屏:"<<[[2]]<<;/*如果用戶不喜歡清屏,在設置中還可以設置為關閉清屏。*/ <<"④幫助"<<; <<"⑤關于"<<; <<"⑥返回"<<; <<"選擇:"; >>x; (x) { 1:/*說明:將和取反*/ [0]^=1; ^=1; ; 2:/*說明:將和取反*/ [1]^=1; ^=1; ; 3: [2]^=1; ^=1; ; 4: (); ; 5: <<"關于:"<<; <<"本程序由王勁翔,蘆鷺,趙冉,郭子昕編寫"<<; (); ; : ; }/*將新設置(由數組表示)重新寫入文件*/ ()開始輸出(占用文件) (0<2) { <<[i]<<''; } <<[2]; ()輸出結束(釋放文件) }}郭子昕負責模塊:程序從7到21行,聲明一個類,公有類中包含構造函數賦初值0+0i,對五個運算符重載:+,-,*,/,,復數賦值函數(),輸出函數(),私有類中包含對象實數,虛數。類{ : (00)(r)(i){ }構造函數賦初值 +(&)重載+ -(&)重載- *(&)重載* /(&)重載/ (&)重載 ()復數賦值 ()輸出 : 實數 虛數};23到29行,定義重載運算符+的函數,包含對復數加法的算法,重載函數為成員函數,返回值為類型。定義對象c,c2為類對象c的引用,c的實部為兩個復數實部相加,虛部為復數虛部相加。+(2)重載+{ c; 2; 2; c;}31到37行,定義重載運算符-的函數,包含對復數減法的算法,重載函數為成員函數,返回值為類型。定義對象c,c2為類對象c的引用,c的實部為兩個復數實部相減,虛部為復數虛部相減。-(2)重載-{ c; 2; 2; c;}39行到45行,定義重載運算符*的函數,包含對復數乘法的算法,重載函數為*成員函數,返回值為類型。定義對象c,c2為類對象c的引用,c的實部為兩個復數實部相乘減去虛部的乘積,虛部為兩個復數實部與虛部乘積和。*(2)重載*{ c; *c2*c2; *c2*c2; c;}47到53行,定義重載運算符/的函數,包含對復數除法的算法,重載函數為成員函數,返回值為類型。定義對象c,c2為類對象c的引用,c的實部為兩個復數實部乘積與虛部乘積的和除以c2的實部乘積與虛部乘積的和,虛部為兩個復數實部乘積與虛部乘積的差除以c2的實部乘積與虛部乘積的和。/(2)重載/{ c; (*c2*c2)/(c2*c22*c2); (*c2*c2)/(c2*c22*c2); c;}55到60行,定義重載運算符的函數,函數類型為型,包含對復數是否相等的算法,c2為類對象c的引用,如果兩個復數實部相等并且虛部相等,那么這兩個復數相等,函數返回值為,如果不等函數返回值為。(2)重載{ (22) ; ()}64行到80行,定義一個型復數賦值函數(),定義字符型c,c2,將復數以的形式輸入,輸入,c,,c2,分別對應a,+,b,i。當實部1被省略時即輸入時會報錯,輸出"請按正確的格式輸入,請勿使用空格,b不可省略。"這句話;當輸入復數為時,復數虛部會取負。無返回值。()賦值{ 2; <<"輸入格式"<<; <<"輸入:"; >>; >>c; >>; >>c2; (c2'\0')防錯 { <<"請按正確的格式輸入,請勿使用空格,b不可省略。"<<; } ('-') ;;}82到87行,定義一個型輸出函數(),判斷復數虛部正負,以或的形式輸出。()輸出{ <<'('<<; (>=0)<<'+'; <<<<"i)"<<;}蘆鷺負責模塊:程序中的計算部分從195行開始,首先是((*)[])定義6個指向類對象的指針為實參的函數。在函數體里定義一個類對象,參與計算的兩個復數號1和2以及運算符號D和D2。>>1>>D; ('=')如果輸入了一個= { >>D2; (D2'=')判斷后一個是否為= { ("")()清屏 ; }輸入一個運算符號D,當符號D是“=”時繼續輸入符號D2,若D2不是“=”則符號輸入錯誤,清屏。 >>2; (D)計算部分 { '+': (*)[1-1]+(*)[2-1]; (); (); ; '-': (*)[1-1]-(*)[2-1]; (); (); ; '*': (*)[1-1]*(*)[2-1]; (); (); ; '/': (*)[1-1]/(*)[2-1]; (); (); ;計算部分主要使用了運算符的重載,即定義一個函數使運算符能在函數中擁有指定的功能。“+”“-”的重載運算中,的實部為兩個復數實部相加減,虛部為復數虛部相加減,“*”“/”的重載運算中,的復數1的實部分別與復數2的實部虛部分別相乘除,虛部也分別與復數2的實部虛部分別相乘除。 '=': ((*)[1-1](*)[2-1]) <<"復數"<<1<<"與復數"<<2<<"相等"<<; <<"復數"<<1<<"與復數"<<2<<"不相等"<<; (); ;: ; }當D為“=”時,若復數1等于復數2則輸出復數1等于復數2,反之輸出復數1不等于復數2。趙冉負責模塊:趙冉負責的第一部分:89-101行歡迎頁面(){ <<"┈┈┈┈┈┈┈┈┈┈┈┈┈"<<; <<"┃小型復數計算器┃"<<; <<"┃1.復數的設置┃"<<; <<"┃2.復數的顯示┃"<<; <<"┃3.復數計算┃"<<; <<"┃4.設置與幫助┃"<<; <<"┃5.退出┃"<<; <<"┈┈┈┈┈┈┈┈┈┈┈┈┈"<<; <<"選擇:";}1、通過輸出流語句進行頁面的初始化,簡潔的目錄形式讓使用者能夠一目了然計算器的使用方法和功能。2、通過循環可以使程序返回此界面,能讓計算器的使用效率提高。第二部分:103-115行菜單選擇(){ ; <<"復數清單:"<<; (0<) { <<"復數("<<1<<")"<<; } <<"請選擇復數號:"; >>; 1;}通過調用此函數,可以找到每個復數,從而對復數進行賦值或者進行查找顯示。首先,先進行循環將復數列出來,然后輸入復數的編號,因為復數編號按人類常識習慣從1開始,而復數是通過數組來依次顯示的,所以需要一個中間變量來進行轉換,1得到數組中此復數的編號。接下來進行賦值或者顯示復數。第三部分:119-125行清屏1;(){ (""); (1) ("");}為了避免運算的數據過多而顯示的多亂雜,每一個步驟均進行清屏,因為有數據顯示功能,所以不用擔心找不到上一個數據。清屏通過使用指令。因為下面還用到變量,所以不在函數中進行聲明,而是在主函數外進行全局變量的聲明。通過("");語句,可以讓使用者知道即將清屏,避免直接清屏而感到不適。因為定義全局變量為1,所以肯定執行清屏。清屏后,跳出此次循環,從新執行歡迎界面。如果用戶不喜歡清屏,在設置中還可以設置為關閉清屏。第四部分:126-131行幫助介紹(){ <<"幫助:"<<; <<"函數計算的輸入格式:\n復數號計算方式復數號(如復數1+復數2表示為1+2),支持*/與(復數的比較)"<<; ();}對計算器的計算方法進行介紹,讓使用者了解如何使用。最后,通過清屏返回開始界面。第五部分:318-325行簡單模式 () { (1) <<"第一個復數:"; [0](); (1) <<"第二個復數:"; [1](); (); }考慮到一些用戶對操作界面的不熟悉,我們開發了簡單模式。在簡單模式的情況下,界面更加簡潔明了,就像普通計算器一樣直接輸入數據和表達式就好。轉入簡單模式后,根據提示輸入第一個數據和第二個數據以及運算表達式就能進行運算。核心算法及流程圖主要意義實現了復數的基本運算,以及實現了程序的個性化,使用戶可以設置想要的輸入輸出方式,不再是單一的模式。實現方式及完成情況1、通過輸出流語句進行頁面的初始化,簡潔的目錄形式讓使用者能夠一目了然計算器的使用方法和功能。2、通過循環可以使程序返回此界面,能讓計算器的使用效率提高。3、運算方面,使用了類的重載,實現了對于復數類對象的加、減、乘、除、比較的功能。4、在人性化方面,提供了幾種輸出的顯示方式,使用了文件記錄了用戶的選擇,并在下一次開啟時讀取。語言源程序清單<><><>6一共有多少個復數;類{ : (00)(r)(i){ }構造函數賦初值 +(&)重載+ -(&)重載- *(&)重載* /(&)重載/ (&)重載 ()復數賦值 ()輸出 : 實數 虛數};+(2)重載+{ c; 2; 2; c;}-(2)重載-{ c; 2; 2; c;}*(2)重載*{ c; *c2*c2; *c2*c2; c;}/(2)重載/{ c; (*c2*c2)/(c2*c22*c2); (*c2*c2)/(c2*c22*c2); c;}(2)重載{ (22) ; ;}()賦值{ 2; <<"輸入格式"<<; <<"輸入:"; >>; >>c; >>; >>c2; (c2'\0')防錯 { <<"請按正確的格式輸入,請勿使用空格,b不可省略。"<<; } ('-') ; ;}()輸出{ <<'('<<; (>=0)<<'+'; <<<<"i)"<<;}歡迎頁面(){ <<"┈┈┈┈┈┈┈┈┈┈┈┈┈"<<; <<"┃小型復數計算器┃"<<; <<"┃1.復數的設置┃"<<; <<"┃2.復數的顯示┃"<<; <<"┃3.復數計算┃"<<; <<"┃4.設置與幫助┃"<<; <<"┃5.退出┃"<<; <<"┈┈┈┈┈┈┈┈┈┈┈┈┈"<<; <<"選擇:";}菜單選擇(){ ; <<"復數清單:"<<; (0<) { <<"復數("<<1<<")"<<; } <<"請選擇復數號:"; >>; 1;}();清屏1;(){ (""); (1) ("");}01;(){ [2]={"關閉","開啟"}; [3]={0}1; 防錯工作 []=""; (); (())如果沒有,創建一個空的文件 { ()文件被占用 (()) { <<"程序異常!"<<; ; } <<"001"; ()釋放文件 [2]=1; } 開始讀取(占用文件) { >>[0]>>[1]>>[2]; (); } 讀入結束(釋放文件) [0]; [1]; [2]; (1) { x; (""); <<"設置與幫助"<<; <<"①轉入簡單模式:"<<[[0]]<<; <<"②簡單模式的使用說明:"<<[[1]]<<; <<"③清屏:"<<[[2]]<<; <<"④幫助"<<; <<"⑤關于"<<; <<"⑥返回"<<; <<"選擇:"; >>x; (x) { 1: [0]^=1; ^=1; ; 2: [1]^=1; ^=1; ; 3: [2]^=1; ^=1; ; 4: (); ; 5: <<"關于:"<<; <<"本程序由王勁翔,蘆鷺,趙冉,郭子昕編寫"<<; (); ; : ; } ()開始輸出(占用文件) (0<2) { <<[i]<<''; } <<[2]; ()輸出結束(釋放文件) }}(){ <<"幫助:"<<; <<"函數計算的輸入格式:\n復數號計算方式復數號(如復數1+復數2表示為1+2),支持*/與(復數的比較)"<<; ();}((*)[])分離計算部分{ ; 12; 2; <<"輸入算式:"<<說明 >>1>>D; ('=')如果輸入了一個= { >>D2; (D2'=')判斷后一個是否為= { ("")清屏 ; } } >>2; (D)計算部分 { '+': (*)[1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網絡工程項目評估方法試題及答案
- 項目資源管理策略試題及答案
- 軟考網絡工程師試題及答案下載地址
- 西方政治制度的行政管理模式試題及答案
- 網絡管理系統設計試題及答案
- 2025年新零售背景下實體書店線上線下聯動策略研究
- 軟考網絡工程師理論考試試題及答案集合
- 2025年交通供電檢測裝備合作協議書
- 深入研究西方政治制度的文化背景試題及答案
- 公共政策在國際關系中的影響試題及答案
- 2024年貴州省貴陽市觀山湖區中考二模物理試題(含答案)
- 工匠精神概述課件
- 國家安全教育大學生讀本課件高教2024年8月版課件-第七章堅持以軍事、科技、文化、社會安全為保障
- 《SDN技術及應用》課件-第2章
- 2025屆四川省德陽市第一中學重點達標名校中考沖刺卷生物試題含解析
- 2025年春新北師大版數學一年級下冊課件 第六單元 第1課時 認識圖形
- 小學語文閱讀答題技巧課件
- 《心肺復蘇及電除顫》課件
- 福建省廈門市湖里2024-2025學年區中考物理質檢檢測試題(三模)含答案
- 二級圓柱齒輪減速器設計
- 數字集成電路
評論
0/150
提交評論