




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、目目 錄錄1.需求分析.12.概要設(shè)計.23.詳細設(shè)計.43.1UML 圖 .43.2 類設(shè)計圖.74.主要程序?qū)崿F(xiàn).155.測試與結(jié)果.226.心得體會.25參考文獻.2511. 需求分析需求分析引子引子.隨著計算機技術(shù)的飛速發(fā)展,人們已經(jīng)不能滿足于采用人工進行大量的計算,計算器快速的計算速度和穩(wěn)定的準(zhǔn)確率很好的滿足了用戶的需要,保存計算過程的計算器更是能夠讓用戶隨時隨地的查找以前的計算過程。保存計算過程的計算器正是在這樣的市場需求之下研發(fā)的,目的旨在幫助用戶快速準(zhǔn)確的得到計算結(jié)果。 目的目的 1.掌握 JAVA 語言編程的基礎(chǔ)知識并能熟練運用。 2.熟悉類聲明與對象的使用。 3.理解委托時
2、間處理模型。 4.了解 JAVA 語言的圖形用戶界面 JAVAS WING 的設(shè)計知識。 5.運用 Eclipse 編寫簡單計算器程序,并實現(xiàn)其功能 。 系統(tǒng)目標(biāo)系統(tǒng)目標(biāo)一個簡單的計算器程序。用戶可以利用鼠標(biāo)點擊數(shù)值或操作符按鍵完成計算的輸入,計算的結(jié)果將被顯示在窗口上部的文本框中。主體功能主體功能 1.按下數(shù)字鍵在文本框上會顯示數(shù)字,這是計算器最基本的功能2.在任何時候按下“+-”鍵,計算器文本框上的數(shù)字置反3.右邊一個文本框顯示計算過程,上面一個文本框顯示輸入的數(shù)字4.當(dāng)按下的運算符號時前面已經(jīng)按下過運算符號時,右邊一個文本框顯示上一個運算符號以及兩個數(shù)之間的運算結(jié)果。5. 按下清除“C”
3、鍵,數(shù)據(jù)被全部清除。開發(fā)環(huán)境開發(fā)環(huán)境 JDK,Eclipse22. 概要設(shè)計概要設(shè)計一、功能圖:保存計算過程的計算器單擊數(shù)字按鈕設(shè)置計算的運算數(shù)單擊運算符按鈕選擇運算符單擊函數(shù)按鈕計算相應(yīng)函數(shù)值單擊等號顯示計算結(jié)果在一個文本區(qū)顯示以往的計算過程單擊保存按鈕將計算結(jié)果保存到文件單擊復(fù)制按鈕復(fù)制文本區(qū)的內(nèi)容到剪貼板單擊清除按鈕清除文本區(qū)中的全部內(nèi)容3二、系統(tǒng)流程圖計算器計算算法計算器矯正架堆棧普通型科學(xué)型getButton計算數(shù)據(jù)getButtonputOperator禁用一般計算trigonom計量43. 詳細設(shè)計詳細設(shè)計 3.1 UML 圖圖類關(guān)系總圖類關(guān)系總圖5Calculator Wind
4、ow 類類+actionPeformed() : void+CalculatorWindow()+main() : void-numberButton-operationButton-小數(shù)點操作,正負號操作,退格操作,等號操作,清零操作,sin,saveButton,copyButton,clearButton-resultShow,showComputerProcess-saveComputerProcess-list-handleDigit-handleOperation-handleBack-handleClear-handleEquality-handleDot-handlePOrN-
5、handleSinCalculatorWindowJFrameActonListemer 圖 3.1Calculator Window 的 UML 圖6NumberButton 類類+NumberButton()+getNumber() : int-number : intNumberButtonJButotn-numberButtonCalculatorWindow-結(jié)束11-結(jié)束2*圖 3.2 NumberButton 類的 UML 圖OperationButton 類類-operationButtonCalculatorWindow+OperationButon()+getOperati
6、onSign() : string-operationSign : stringOperationButtonJButotn-結(jié)束11-結(jié)束2*圖 3.3 OperationButton 類的 UML 圖HandleDigit 類類-HandleDigitCalculatorWindow+HandleDigit()+actionPerformed() : void-list-resultShow-showComputerProcessHandleDigitActionListerner-結(jié)束11-結(jié)束2*圖 3.4 HandleDigit 類的 UML 圖7HandleOperation 類類
7、+HandleOperation()+actionPerformed() : void-list-resultShow-showComputerProcess-saveComputerProcessHandleOpetationActionListerner-結(jié)束11-結(jié)束2*-handleDigit-HandleOperationCalculatorWindow圖 3.5 HandleOperation 類的 UML 圖HandleDot 類類+HandleDot()+actionPerformed() : void-list-resutlShow-showComputerProcessHa
8、ndleDotActionListerner1*-handleDotCalculatorWindow圖 3.6 HandleDot 類的 UML 圖HandlePOrN 類類+HandlePOrN()+actionPerformed() : void-list-resutlShow-showComputerProcessHandlePOrNActionListerner1*-handlePOrNCalculatorWindow圖 3.7 HandlePOrN 類的 UML 圖8HandleEquality 類類+HandleEquality()+actionPerformed() : void
9、-list-resutlShow-showComputerProcess-saveComputerProcessHandleEqualityActionListerner1*-handleEquality-handleEqualityCalculatorWindow圖 3.8 HandleEquality 類的 UML 圖HandleSin 類類+HandleSin()+actionPerformed() : void-list-resutlShow-showComputerProcessHandleSinActionListerner1*-handleSinCalculatorWindow圖
10、 3.9 HandleSin 類的 UML 圖HandleBack 類類+HandleBack()+actionPerformed() : void-list-resutlShow-showComputerProcessHandleBackActionListerner1*-handleBackCalculatorWindow圖 3.10 HandleBack 類的 UML 圖9HandleClear 類類+HandleClear()+actionPerformed() : void-list-resutlShow-showComputerProcessHandleClearActionLis
11、terner1*-handleClearCalculatorWindow圖 3.11 HandleClear 類的 UML 圖3.2 類設(shè)計圖類設(shè)計圖類類 CalculatorWindow模塊名稱CalculatorWindow功能描述負責(zé)創(chuàng)建計算器的主窗口接口與屬性Void actionPerformed()Function:對saveButton,copyButton,clearButton三個按鈕的ActionEvent事件監(jiān)聽InPut: 無OutPut: 無Return:空CalculatorWindow()Function:是構(gòu)造方法,負責(zé)完成窗口的初始化InPut: 無OutPu
12、t:無Return:空Static void Main()Functon:是計算器程序運行的入口方法InPut:無OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法LinkedlistLinkedlist(StringString)list補充說明無10類類 OperationButton模塊名稱OperationButton功能描述創(chuàng)建主窗口中的一個“運算符”按鈕接口與屬性String getOperationSign()Function:返回操作符號 InPut: 無OutPut: 無Return:運算符號OperationButton()Function:是構(gòu)造方法,創(chuàng)建OperationB
13、utton對象InPut: SOutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法無補充說明無類類 HandleDigit模塊名稱HandleDigit功能描述用戶單擊“數(shù)字”按鈕時,負責(zé)處理和運算符有關(guān)的計算結(jié)果接口與屬性Void actionPerformed()Function:處理list鏈表中存儲的第一個操作數(shù)和第二個操作數(shù) InPut: 無OutPut: 無Return:空HandleDigit()Function:是構(gòu)造方法,創(chuàng)建HandleDigit對象InPut: t1,t2OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法LinkedlistLinkedlist(StringStri
14、ng)list補充說明無11類類 HandleOperation模塊名稱HandleOperation功能描述用戶單擊“運算符”按鈕時,負責(zé)處理和運算符有關(guān)的計算結(jié)果接口與屬性Void actionPerformed()Function:處理list鏈表中存儲的運算符和必要的計算 InPut: 無OutPut: 無Return:空HandleOperation()Function:是構(gòu)造方法,創(chuàng)建HandleOperationt對象InPut: t1,t2,t3OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法LinkedlistLinkedlist(StringString)list 補充說明無
15、類類 HandleDot模塊名稱HandleDot功能描述負責(zé)處理小數(shù)點接口與屬性Void actionPerformed()Function:處理list鏈表中存儲的運算數(shù)InPut: 無OutPut: 無Return:空HandleDot()Function:是構(gòu)造方法,創(chuàng)建HandleDot對象InPut: t1,t2OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法LinkedlistLinkedlist(StringString)list 補充說明無12類類 HandlePOrN模塊名稱HandlePOrN功能描述負責(zé)處理用戶單擊“+/-”按鈕時,對數(shù)字進行正負轉(zhuǎn)換接口與屬性Void a
16、ctionPerformed()Function:處理list鏈表中存儲的運算數(shù)InPut: 無OutPut: 無Return:空HandlePOrN()Function:是構(gòu)造方法,創(chuàng)建HandlePOrN對象InPut: t1,t2OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法LinkedlistLinkedlist(StringString)list 補充說明無類類 HandleEquality模塊名稱HandleEquality功能描述負責(zé)處理當(dāng)用戶單擊“=”按鈕時,計算有關(guān)的數(shù)據(jù)接口與屬性Void actionPerformed()Function:處理list鏈表中存儲的運算數(shù)、運
17、算符和必要的計算InPut: 無OutPut: 無Return:空HandleEquality()Function:是構(gòu)造方法,創(chuàng)建HandleEquality對象InPut: t1,t2,t3OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法LinkedlistLinkedlist(StringString)list 補充說明無13類類 HandleSin模塊名稱HandleSin功能描述負責(zé)處理用戶單擊sin按鈕進行正弦三角函數(shù)的計算接口與屬性Void actionPerformed()Function:負責(zé)計算正弦函數(shù)的值InPut: 無OutPut: 無Return:空HandleSin(
18、)Function:是構(gòu)造方法,創(chuàng)建HandleSin對象InPut: t1,t2,t3OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法LinkedlistLinkedlist(StringString)list 補充說明無類類 HandleBack模塊名稱HandleBack功能描述負責(zé)處理用戶單擊“退格”按鈕時進行退格操作接口與屬性Void actionPerformed()Function:負責(zé)處理list鏈表中存儲的運算數(shù)InPut: 無OutPut: 無Return:空HandleBack()Function:是構(gòu)造方法,創(chuàng)建HandleBack對象InPut: t1,t2OutPut
19、:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法LinkedlistLinkedlist(StringString)list 補充說明無14類類 HandleClear模塊名稱HandleClear功能描述負責(zé)處理用戶單擊C按鈕(清零操作)時清除有關(guān)的計算結(jié)果接口與屬性Void actionPerformed()Function:清除list鏈表中存儲的運算數(shù)和操作數(shù),設(shè)置resultShow中顯示的數(shù)字為0,清除showComputerProcess中顯示的計算過程InPut: 無OutPut: 無Return:空HandleClear()Function:是構(gòu)造方法,創(chuàng)建HandleClear對象InP
20、ut: t1,t2OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法LinkedlistLinkedlist(StringString)list 補充說明無類類 NumberButton模塊名稱NumberButton功能描述負責(zé)創(chuàng)建主窗口中的一個“數(shù)字”按鈕接口與屬性String getNumber()Function:返回數(shù)字符號 InPut: 無OutPut: 無Return:數(shù)字符號NumberButton()Function:是構(gòu)造方法,創(chuàng)建NumberButton對象InPut: 無OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法LinkedlistLinkedlist(StringSt
21、ring)list 補充說明無154.主要程序?qū)崿F(xiàn)主要程序?qū)崿F(xiàn)計算結(jié)果保存到文件public void actionPerformed(ActionEvent e) if(e.getSource()=copyButton) saveComputerProcess.copy(); if(e.getSource()=clearButton) saveComputerProcess.setText(null); if(e.getSource()=saveButton) JFileChooser chooser = new JFileChooser(); int state =chooser.show
22、SaveDialog(null); File file = chooser.getSelectedFile(); if(file!=null&state=JFileChooser.APPROVE_OPTION) try String content = saveComputerProcess.getText(); StringReader read = new StringReader(content); BufferedReader in = new BufferedReader(read); FileWriter outOne = new FileWriter(file); Buf
23、feredWriter out = new BufferedWriter(outOne); String str = null; while(str= in.readLine()!=null) out.write(str); out.newLine(); in.close(); out.close(); catch(IOException el) 數(shù)字處理public void actionPerformed(ActionEvent e) NumberButton b = (NumberButton)e.getSource(); if(list.size()=0) int number = b
24、.getNumber(); list.add(+number); resultShow.setText(+number); showComputerProcess.setText(+list.get(0); 16 else if(list.size()=1) int number = b.getNumber(); String num = list.getFirst(); String s = num.concat(+number); list.set(0,s); resultShow.setText(s); showComputerProcess.setText(+list.get(0);
25、else if(list.size()=2) int number = b.getNumber(); list.add(+number); resultShow.setText(+number); showComputerProcess.setText(+list.get(0)+list.get(1)+list.get(2); else if(list.size()=3) int number = b.getNumber(); String num = list.getLast(); String s = num.concat(+number); list.set(2,s); resultSh
26、ow.setText(s); showComputerProcess.setText(+list.get(0)+list.get(1)+list.get(2); 處理運算符public void actionPerformed(ActionEvent e) OperationButton b = (OperationButton)e.getSource(); if(list.size()=1) String fuhao = b.getOperateSign(); list.add(fuhao); showComputerProcess.setText(+list.get(0)+list.get
27、(1); else if(list.size()=2) String fuhao =b.getOperateSign(); list.set(1,fuhao); showComputerProcess.setText(+list.get(0)+list.get(1); else if(list.size()=3)17 String numOne =list.getFirst(); String numTwo = list.getLast(); String 運算符號=list.get(1); String middleProcess = numOne+運算符號+numTwo; try doub
28、le n1 = Double.parseDouble(numOne); double n2 = Double.parseDouble(numTwo); double result = 0; if(運算符號.equals(+) result= n1+n2; else if(運算符號.equals(-) result=n1-n2; else if(運算符號.equals(*) result= n1*n2; else if(運算符號.equals(/) result = n1/n2; String fuhao = b.getOperateSign(); list.clear(); list.add(
29、+result); list.add(fuhao); String pro= middleProcess+=+result+list.get(1); showComputerProcess.setText(pro); saveComputerProcess.append(+middleProcess+=+result+n); resultShow.setText(+result); catch(Exception ee) 處理小數(shù)點public void actionPerformed(ActionEvent e)String dot = e.getActionCommand();if(lis
30、t.size()=1)String num = list.getFirst();String s = null;if(num.indexOf(dot)=-1)s= num.concat(dot);18list.set(0,s);elses=num;list.set(0,s);resultShow.setText(s);showComputerProcess.setText(+list.get(0);else if(list.size()=3)String num = list.getLast();String s = null;if(num.indexOf(dot)=-1)s=num.conc
31、at(dot);list.set(2,s);else s= num;resultShow.setText(s);showComputerProcess.setText(+list.get(0)+list.get(1)+list.get(2);處理正負號public void actionPerformed(ActionEvent e) if(list.size()=1) String number1 =list.getFirst(); try double d =Double.parseDouble(number1); d=-1*d; String str = String.valueOf(d
32、); list.set(0,str); resultShow.setText(str); showComputerProcess.setText(+list.get(0); catch(Exception ee) else if(list.size()=3) String number2 = list.getLast(); try double d =Double.parseDouble(number2); d= -1*d; String str = String.valueOf(d);19 list.set(2,str); resultShow.setText(str); showCompu
33、terProcess.setText(+list.get(0)+list.get(2); catch(Exception ee) 處理等號public void actionPerformed(ActionEvent e) if(list.size()=1) String num =list.getFirst(); resultShow.setText(+num); showComputerProcess.setText(list.get(0); if(list.size()=2) String num=list.getFirst(); String 運算符號 =list.get(1); tr
34、y double n1 = Double.parseDouble(num); double n2 = Double.parseDouble(num); double result = 0; if(運算符號.equals(+) result= n1+n2; else if(運算符號.equals(-) result= n1-n2; else if(運算符號.equals(*) result= n1*n2; else if(運算符號.equals(/) result= n1/n2; resultShow.setText(+result); String process= num+運算符號+num+
35、=+result; showComputerProcess.setText(process); saveComputerProcess.append(+process+n); list.set(0,+result); catch(Exception ee) else if(list.size()=3)20 String numOne =list.getFirst(); String 運算符號= list.get(1); String numTwo = list.getLast(); try double n1 = Double.parseDouble(numOne); double n2 =
36、Double.parseDouble(numTwo); double result = 0; if(運算符號.equals(+) result= n1+n2; else if(運算符號.equals(-) result= n1-n2; else if(運算符號.equals(*) result= n1*n2; else if(運算符號.equals(/) result= n1/n2; resultShow.setText(+result); String process= numOne+運算符號+numTwo+=+result; showComputerProcess.setText(proc
37、ess); saveComputerProcess.append(+process+n); list.set(0,+result); list.removeLast();/移到第二個運算符; list.removeLast();/移調(diào)運算符號; catch(Exception ee) 處理正弦函數(shù)public void actionPerformed(ActionEvent e) if(list.size()=1|list.size()=2) String numOne =list.getFirst(); try double x =Double.parseDouble(numOne); do
38、uble result =Math.sin(x); String str = String.valueOf(result); list.set(0,str); resultShow.setText(str); String process = sin(+numOne+)+result; showComputerProcess.setText(process); saveComputerProcess.append(+process+n); if(list.size()=2) list.removeLast(); 21 catch(Exception ee) else if(list.size()=3) String numTwo =list.getLast(); try double x =Double.parseDouble(numTwo); double result = Math.sin(x); String str = String.valueOf(result); list.set(0,str); resultShow.setText(str); String process =sin(+numTwo+)=+res
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年西寧從業(yè)資格證貨運考試試題
- 建筑設(shè)計咨詢合同
- 2025年拉薩道路運輸從業(yè)資格證考試內(nèi)容是什么
- 2025年陽泉年貨運從業(yè)資格證考試答案
- 變壓器安裝承包合同
- 中小學(xué)老師聘用合同
- 安裝工程分包合同范本與安裝工程合作合同6篇
- 2025年雙鴨山貨運從業(yè)資格證考試模擬考試題庫
- PVA膜產(chǎn)業(yè)分析報告
- 養(yǎng)殖用地變更合同范本
- 船舶電氣設(shè)備及系統(tǒng)船舶照明系統(tǒng)管理-課件
- 蘇教版六年級英語下冊單詞表(默寫不用提)
- 單層廠房鋼結(jié)構(gòu)設(shè)計T83
- 5S點檢表1(日檢查表)
- 醫(yī)院感染管理組織架構(gòu)圖
- 帶你看認養(yǎng)一頭牛品牌調(diào)研
- 雙鴨山玄武巖纖維及其制品生產(chǎn)基地項目(一期)環(huán)評報告表
- 冠心病病人的護理ppt(完整版)課件
- 砂石生產(chǎn)各工種安全操作規(guī)程
- (精心整理)林海雪原閱讀題及答案
- 云南藝術(shù)學(xué)院
評論
0/150
提交評論