Java保存計(jì)算過程的計(jì)算器_第1頁
Java保存計(jì)算過程的計(jì)算器_第2頁
Java保存計(jì)算過程的計(jì)算器_第3頁
Java保存計(jì)算過程的計(jì)算器_第4頁
Java保存計(jì)算過程的計(jì)算器_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄3.2類設(shè)計(jì)圖.7參考文獻(xiàn)251. 需求分析引子.隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,人們已經(jīng)不能滿足于采用人工進(jìn)行大量的計(jì)算,計(jì)算器快速的計(jì)算速度和穩(wěn)定的準(zhǔn)確率很好的滿足了用戶的需要,保存計(jì)算過程的計(jì)算器更是能夠讓用戶隨時(shí)隨地的查找以前的計(jì)算過程。保存計(jì)算過程的計(jì)算器正是在這樣的市場(chǎng)需求之下研發(fā)的,目的旨在幫助用戶快速準(zhǔn)確的得到計(jì)算結(jié)果。目的 1.掌握J(rèn)AVA語言編程的基礎(chǔ)知識(shí)并能熟練運(yùn)用。 2.熟悉類聲明與對(duì)象的使用。 3.理解委托時(shí)間處理模型。 4.了解JAVA語言的圖形用戶界面JAVAS WING的設(shè)計(jì)知識(shí)。Eclipse編寫簡(jiǎn)單計(jì)算器程序,并實(shí)現(xiàn)其功能。 系統(tǒng)目標(biāo)一個(gè)簡(jiǎn)單的計(jì)算器程序。用戶

2、可以利用鼠標(biāo)點(diǎn)擊數(shù)值或操作符按鍵完成計(jì)算的輸入,計(jì)算的結(jié)果將被顯示在窗口上部的文本框中。主體功能 1. 按下數(shù)字鍵在文本框上會(huì)顯示數(shù)字,這是計(jì)算器最基本的功能2. 在任何時(shí)候按下“+-”鍵,計(jì)算器文本框上的數(shù)字置反3. 右邊一個(gè)文本框顯示計(jì)算過程,上面一個(gè)文本框顯示輸入的數(shù)字4. 當(dāng)按下的運(yùn)算符號(hào)時(shí)前面已經(jīng)按下過運(yùn)算符號(hào)時(shí),右邊一個(gè)文本框顯示上一個(gè)運(yùn)算符號(hào)以及兩個(gè)數(shù)之間的運(yùn)算結(jié)果。5. 按下清除“C”鍵,數(shù)據(jù)被全部清除。開發(fā)環(huán)境 JDK,Eclipse2. 概要設(shè)計(jì)一、功能圖:二、系統(tǒng)流程圖計(jì)算器計(jì)算算法計(jì)算器矯正架堆棧普通型科學(xué)型getButton計(jì)算數(shù)據(jù)getButtonputOperat

3、or禁用一般計(jì)算一般計(jì)算一般計(jì)算trigonom計(jì)量3. 詳細(xì)設(shè)計(jì)3.1 UML圖類關(guān)系總圖Calculator Window類圖3.1Calculator Window的UML圖NumberButton類圖3.2 NumberButton類的UML圖OperationButton類圖3.3 OperationButton類的UML圖HandleDigit類圖3.4 HandleDigit類的UML圖HandleOperation類圖3.5 HandleOperation類的UML圖HandleDot類圖3.6 HandleDot類的UML圖HandlePOrN類圖3.7 HandlePOrN

4、類的UML圖HandleEquality類圖3.8 HandleEquality類的UML圖HandleSin類圖3.9 HandleSin類的UML圖HandleBack類圖3.10 HandleBack類的UML圖HandleClear類圖3.11 HandleClear類的UML圖3.2 類設(shè)計(jì)圖類CalculatorWindow模塊名稱CalculatorWindow功能描述負(fù)責(zé)創(chuàng)建計(jì)算器的主窗口接口與屬性Void actionPerformed()Function:對(duì)saveButton,copyButton,clearButton三個(gè)按鈕的ActionEvent事件監(jiān)聽InPut:

5、 無OutPut: 無Return:空CalculatorWindow()Function:是構(gòu)造方法,負(fù)責(zé)完成窗口的初始化InPut: 無OutPut:無Return:空Static void Main()Functon:是計(jì)算器程序運(yùn)行的入口方法InPut:無OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法Linkedlist(String)list補(bǔ)充說明無類OperationButton模塊名稱OperationButton功能描述創(chuàng)建主窗口中的一個(gè)“運(yùn)算符”按鈕接口與屬性String getOperationSign()Function:返回操作符號(hào)InPut: 無OutPut: 無R

6、eturn:運(yùn)算符號(hào)OperationButton()Function:是構(gòu)造方法,創(chuàng)建OperationButton對(duì)象InPut: SOutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法無補(bǔ)充說明無類HandleDigit模塊名稱HandleDigit功能描述用戶單擊“數(shù)字”按鈕時(shí),負(fù)責(zé)處理和運(yùn)算符有關(guān)的計(jì)算結(jié)果接口與屬性Void actionPerformed()Function:處理list鏈表中存儲(chǔ)的第一個(gè)操作數(shù)和第二個(gè)操作數(shù)InPut: 無OutPut: 無Return:空HandleDigit()Function:是構(gòu)造方法,創(chuàng)建HandleDigit對(duì)象InPut: t1,t2Out

7、Put:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法Linkedlist(String)list補(bǔ)充說明無類HandleOperation模塊名稱HandleOperation功能描述用戶單擊“運(yùn)算符”按鈕時(shí),負(fù)責(zé)處理和運(yùn)算符有關(guān)的計(jì)算結(jié)果接口與屬性Void actionPerformed()Function:處理list鏈表中存儲(chǔ)的運(yùn)算符和必要的計(jì)算 InPut: 無OutPut: 無Return:空HandleOperation()Function:是構(gòu)造方法,創(chuàng)建HandleOperationt對(duì)象InPut: t1,t2,t3OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法Linkedlist(St

8、ring)list補(bǔ)充說明無類HandleDot模塊名稱HandleDot功能描述負(fù)責(zé)處理小數(shù)點(diǎn)接口與屬性Void actionPerformed()Function:處理list鏈表中存儲(chǔ)的運(yùn)算數(shù)InPut: 無OutPut: 無Return:空HandleDot()Function:是構(gòu)造方法,創(chuàng)建HandleDot對(duì)象InPut: t1,t2OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法Linkedlist(String)list補(bǔ)充說明無類HandlePOrN模塊名稱HandlePOrN功能描述負(fù)責(zé)處理用戶單擊“+/-”按鈕時(shí),對(duì)數(shù)字進(jìn)行正負(fù)轉(zhuǎn)換接口與屬性Void actionPerf

9、ormed()Function:處理list鏈表中存儲(chǔ)的運(yùn)算數(shù)InPut: 無OutPut: 無Return:空HandlePOrN()Function:是構(gòu)造方法,創(chuàng)建HandlePOrN對(duì)象InPut: t1,t2OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法Linkedlist(String)list補(bǔ)充說明無類HandleEquality模塊名稱HandleEquality功能描述負(fù)責(zé)處理當(dāng)用戶單擊“=”按鈕時(shí),計(jì)算有關(guān)的數(shù)據(jù)接口與屬性Void actionPerformed()Function:處理list鏈表中存儲(chǔ)的運(yùn)算數(shù)、運(yùn)算符和必要的計(jì)算InPut: 無OutPut: 無Ret

10、urn:空HandleEquality()Function:是構(gòu)造方法,創(chuàng)建HandleEquality對(duì)象InPut: t1,t2,t3OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法Linkedlist(String)list補(bǔ)充說明無類HandleSin模塊名稱HandleSin功能描述負(fù)責(zé)處理用戶單擊sin按鈕進(jìn)行正弦三角函數(shù)的計(jì)算接口與屬性Void actionPerformed()Function:負(fù)責(zé)計(jì)算正弦函數(shù)的值InPut: 無OutPut: 無Return:空HandleSin()Function:是構(gòu)造方法,創(chuàng)建HandleSin對(duì)象InPut: t1,t2,t3OutPu

11、t:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法Linkedlist(String)list補(bǔ)充說明無類HandleBack模塊名稱HandleBack功能描述負(fù)責(zé)處理用戶單擊“退格”按鈕時(shí)進(jìn)行退格操作接口與屬性Void actionPerformed()Function:負(fù)責(zé)處理list鏈表中存儲(chǔ)的運(yùn)算數(shù)InPut: 無OutPut: 無Return:空HandleBack()Function:是構(gòu)造方法,創(chuàng)建HandleBack對(duì)象InPut: t1,t2OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法Linkedlist(String)list補(bǔ)充說明無類HandleClear模塊名稱HandleCl

12、ear功能描述負(fù)責(zé)處理用戶單擊C按鈕(清零操作)時(shí)清除有關(guān)的計(jì)算結(jié)果接口與屬性Void actionPerformed()Function:清除list鏈表中存儲(chǔ)的運(yùn)算數(shù)和操作數(shù),設(shè)置resultShow中顯示的數(shù)字為0,清除showComputerProcess中顯示的計(jì)算過程InPut: 無OutPut: 無Return:空HandleClear()Function:是構(gòu)造方法,創(chuàng)建HandleClear對(duì)象InPut: t1,t2OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法Linkedlist(String)list補(bǔ)充說明無類NumberButton模塊名稱NumberButton功

13、能描述負(fù)責(zé)創(chuàng)建主窗口中的一個(gè)“數(shù)字”按鈕接口與屬性String getNumber()Function:返回?cái)?shù)字符號(hào) InPut: 無OutPut: 無Return:數(shù)字符號(hào)NumberButton()Function:是構(gòu)造方法,創(chuàng)建NumberButton對(duì)象InPut: 無OutPut:無Return:空數(shù)據(jù)結(jié)構(gòu)與算法Linkedlist(String)list補(bǔ)充說明無4.主要程序?qū)崿F(xiàn)計(jì)算結(jié)果保存到文件publicvoid actionPerformed(ActionEvent e)if(e.getSource()=copyButton)saveComputerProcess.copy

14、();if(e.getSource()=clearButton)saveComputerProcess.setText(null);if(e.getSource()=saveButton) JFileChooser chooser = new JFileChooser();int state =chooser.showSaveDialog(null); File file = chooser.getSelectedFile();if(file!=null&&state=JFileChooser.APPROVE_OPTION)try String content = saveCo

15、mputerProcess.getText(); StringReader read = new StringReader(content); BufferedReader in = new BufferedReader(read); FileWriter outOne = new FileWriter(file); BufferedWriter out = new BufferedWriter(outOne); String str = null;while(str= in.readLine()!=null) out.write(str); out.newLine(); in.close()

16、; out.close(); catch(IOException el) 數(shù)字處理publicvoid actionPerformed(ActionEvent e) NumberButton b = (NumberButton)e.getSource();if(list.size()=0)int number = b.getNumber();list.add(""+number);resultShow.setText(""+number);showComputerProcess.setText(""+list.get(0); else

17、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); elseif(list.size()=2)int number = b.getNumber();list.add(""+number);resultShow.set

18、Text(""+number);showComputerProcess.setText(""+list.get(0)+""+list.get(1)+""+list.get(2); elseif(list.size()=3)int number = b.getNumber(); String num = list.getLast(); String s = num.concat(""+number);list.set(2,s);resultShow.setText(s);showComputerP

19、rocess.setText(""+list.get(0)+""+list.get(1)+""+list.get(2); 處理運(yùn)算符publicvoid actionPerformed(ActionEvent e) OperationButton b = (OperationButton)e.getSource();if(list.size()=1) String fuhao = b.getOperateSign();list.add(fuhao);showComputerProcess.setText(""+li

20、st.get(0)+""+list.get(1); elseif(list.size()=2) String fuhao =b.getOperateSign();list.set(1,fuhao);showComputerProcess.setText(""+list.get(0)+""+list.get(1); elseif(list.size()=3) String numOne =list.getFirst(); String numTwo = list.getLast(); String 運(yùn)算符號(hào)=list.get(1); S

21、tring middleProcess = numOne+""+運(yùn)算符號(hào)+numTwo;trydouble n1 = Double.parseDouble(numOne);double n2 = Double.parseDouble(numTwo);double result = 0;if(運(yùn)算符號(hào).equals("+") result= n1+n2; elseif(運(yùn)算符號(hào).equals("-") result=n1-n2; elseif(運(yùn)算符號(hào).equals("*") result= n1*n2; elsei

22、f(運(yùn)算符號(hào).equals("/") result = n1/n2; String fuhao = b.getOperateSign();list.clear();list.add(""+result);list.add(fuhao); String pro= middleProcess+"="+result+""+list.get(1);showComputerProcess.setText(pro);saveComputerProcess.append(""+middleProcess+&q

23、uot;="+result+"n");resultShow.setText(""+result); catch(Exception ee) 處理小數(shù)點(diǎn)publicvoid actionPerformed(ActionEvent e)String dot = e.getActionCommand();if(list.size()=1)String num = list.getFirst();String s = null;if(num.indexOf(dot)=-1)s= num.concat(dot);list.set(0,s);elses=n

24、um;list.set(0,s);resultShow.setText(s);showComputerProcess.setText(""+list.get(0);elseif(list.size()=3)String num = list.getLast();String s = null;if(num.indexOf(dot)=-1)s=num.concat(dot);list.set(2,s);elses= num;resultShow.setText(s);showComputerProcess.setText(""+list.get(0)+&q

25、uot;"+list.get(1)+""+list.get(2);處理正負(fù)號(hào)publicvoid actionPerformed(ActionEvent e)if(list.size()=1) String number1 =list.getFirst();trydouble d =Double.parseDouble(number1); d=-1*d; String str = String.valueOf(d);list.set(0,str);resultShow.setText(str);showComputerProcess.setText("&

26、quot;+list.get(0); catch(Exception ee) elseif(list.size()=3) String number2 = list.getLast();trydouble d =Double.parseDouble(number2); d= -1*d; String str = String.valueOf(d);list.set(2,str);resultShow.setText(str);showComputerProcess.setText(""+list.get(0)+""+list.get(2); catch(

27、Exception ee) 處理等號(hào)publicvoid 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 運(yùn)算符號(hào) =list.get(1);trydouble n1 = Double.parseDouble(num);double

28、n2 = Double.parseDouble(num);double result = 0;if(運(yùn)算符號(hào).equals("+") result= n1+n2;elseif(運(yùn)算符號(hào).equals("-") result= n1-n2;elseif(運(yùn)算符號(hào).equals("*") result= n1*n2;elseif(運(yùn)算符號(hào).equals("/") result= n1/n2;resultShow.setText(""+result); String process= num+&quo

29、t;"+運(yùn)算符號(hào)+""+num+"="+result;showComputerProcess.setText(process);saveComputerProcess.append(""+process+"n");list.set(0,""+result); catch(Exception ee) elseif(list.size()=3) String numOne =list.getFirst(); String 運(yùn)算符號(hào)= list.get(1); String numTwo =

30、 list.getLast();trydouble n1 = Double.parseDouble(numOne);double n2 = Double.parseDouble(numTwo);double result = 0;if(運(yùn)算符號(hào).equals("+") result= n1+n2;elseif(運(yùn)算符號(hào).equals("-") result= n1-n2;elseif(運(yùn)算符號(hào).equals("*") result= n1*n2;elseif(運(yùn)算符號(hào).equals("/") result= n1/

31、n2;resultShow.setText(""+result); String process= numOne+""+運(yùn)算符號(hào)+""+numTwo+"="+result;showComputerProcess.setText(process);saveComputerProcess.append(""+process+"n");list.set(0,""+result);list.removeLast();/移到第二個(gè)運(yùn)算符;list.removeLas

32、t();/移調(diào)運(yùn)算符號(hào); catch(Exception ee) 處理正弦函數(shù)publicvoid actionPerformed(ActionEvent e)if(list.size()=1|list.size()=2) String numOne =list.getFirst();trydouble x =Double.parseDouble(numOne);double result =Math.sin(x); String str = String.valueOf(result);list.set(0,str);resultShow.setText(str); String proce

33、ss = "sin("+numOne+")"+result;showComputerProcess.setText(process);saveComputerProcess.append(""+process+"n");if(list.size()=2)list.removeLast(); catch(Exception ee) elseif(list.size()=3) String numTwo =list.getLast();try double x =Double.parseDouble(numTwo);d

34、ouble result = Math.sin(x); String str = String.valueOf(result);list.set(0,str);resultShow.setText(str); String process ="sin("+numTwo+")="+result;showComputerProcess.setText(process);saveComputerProcess.append(""+process+"n");list.removeLast();/移掉第二個(gè)運(yùn)算數(shù);list.removeLast();/移掉運(yùn)算符號(hào) catch(Exception ee) 處理退格操作publ

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論