




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄3.2類設計圖.7參考文獻251. 需求分析引子.隨著計算機技術的飛速發(fā)展,人們已經(jīng)不能滿足于采用人工進行大量的計算,計算器快速的計算速度和穩(wěn)定的準確率很好的滿足了用戶的需要,保存計算過程的計算器更是能夠讓用戶隨時隨地的查找以前的計算過程。保存計算過程的計算器正是在這樣的市場需求之下研發(fā)的,目的旨在幫助用戶快速準確的得到計算結果。目的 1.掌握JAVA語言編程的基礎知識并能熟練運用。 2.熟悉類聲明與對象的使用。 3.理解委托時間處理模型。 4.了解JAVA語言的圖形用戶界面JAVAS WING的設計知識。Eclipse編寫簡單計算器程序,并實現(xiàn)其功能。 系統(tǒng)目標一個簡單的計算器程序。用戶
2、可以利用鼠標點擊數(shù)值或操作符按鍵完成計算的輸入,計算的結果將被顯示在窗口上部的文本框中。主體功能 1. 按下數(shù)字鍵在文本框上會顯示數(shù)字,這是計算器最基本的功能2. 在任何時候按下“+-”鍵,計算器文本框上的數(shù)字置反3. 右邊一個文本框顯示計算過程,上面一個文本框顯示輸入的數(shù)字4. 當按下的運算符號時前面已經(jīng)按下過運算符號時,右邊一個文本框顯示上一個運算符號以及兩個數(shù)之間的運算結果。5. 按下清除“C”鍵,數(shù)據(jù)被全部清除。開發(fā)環(huán)境 JDK,Eclipse2. 概要設計一、功能圖:二、系統(tǒng)流程圖計算器計算算法計算器矯正架堆棧普通型科學型getButton計算數(shù)據(jù)getButtonputOperat
3、or禁用一般計算一般計算一般計算trigonom計量3. 詳細設計3.1 UML圖類關系總圖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 類設計圖類CalculatorWindow模塊名稱CalculatorWindow功能描述負責創(chuàng)建計算器的主窗口接口與屬性Void actionPerformed()Function:對saveButton,copyButton,clearButton三個按鈕的ActionEvent事件監(jiān)聽InPut:
5、 無OutPut: 無Return:空CalculatorWindow()Function:是構造方法,負責完成窗口的初始化InPut: 無OutPut:無Return:空Static void Main()Functon:是計算器程序運行的入口方法InPut:無OutPut:無Return:空數(shù)據(jù)結構與算法Linkedlist(String)list補充說明無類OperationButton模塊名稱OperationButton功能描述創(chuàng)建主窗口中的一個“運算符”按鈕接口與屬性String getOperationSign()Function:返回操作符號InPut: 無OutPut: 無R
6、eturn:運算符號OperationButton()Function:是構造方法,創(chuàng)建OperationButton對象InPut: SOutPut:無Return:空數(shù)據(jù)結構與算法無補充說明無類HandleDigit模塊名稱HandleDigit功能描述用戶單擊“數(shù)字”按鈕時,負責處理和運算符有關的計算結果接口與屬性Void actionPerformed()Function:處理list鏈表中存儲的第一個操作數(shù)和第二個操作數(shù)InPut: 無OutPut: 無Return:空HandleDigit()Function:是構造方法,創(chuàng)建HandleDigit對象InPut: t1,t2Out
7、Put:無Return:空數(shù)據(jù)結構與算法Linkedlist(String)list補充說明無類HandleOperation模塊名稱HandleOperation功能描述用戶單擊“運算符”按鈕時,負責處理和運算符有關的計算結果接口與屬性Void actionPerformed()Function:處理list鏈表中存儲的運算符和必要的計算 InPut: 無OutPut: 無Return:空HandleOperation()Function:是構造方法,創(chuàng)建HandleOperationt對象InPut: t1,t2,t3OutPut:無Return:空數(shù)據(jù)結構與算法Linkedlist(St
8、ring)list補充說明無類HandleDot模塊名稱HandleDot功能描述負責處理小數(shù)點接口與屬性Void actionPerformed()Function:處理list鏈表中存儲的運算數(shù)InPut: 無OutPut: 無Return:空HandleDot()Function:是構造方法,創(chuàng)建HandleDot對象InPut: t1,t2OutPut:無Return:空數(shù)據(jù)結構與算法Linkedlist(String)list補充說明無類HandlePOrN模塊名稱HandlePOrN功能描述負責處理用戶單擊“+/-”按鈕時,對數(shù)字進行正負轉換接口與屬性Void actionPerf
9、ormed()Function:處理list鏈表中存儲的運算數(shù)InPut: 無OutPut: 無Return:空HandlePOrN()Function:是構造方法,創(chuàng)建HandlePOrN對象InPut: t1,t2OutPut:無Return:空數(shù)據(jù)結構與算法Linkedlist(String)list補充說明無類HandleEquality模塊名稱HandleEquality功能描述負責處理當用戶單擊“=”按鈕時,計算有關的數(shù)據(jù)接口與屬性Void actionPerformed()Function:處理list鏈表中存儲的運算數(shù)、運算符和必要的計算InPut: 無OutPut: 無Ret
10、urn:空HandleEquality()Function:是構造方法,創(chuàng)建HandleEquality對象InPut: t1,t2,t3OutPut:無Return:空數(shù)據(jù)結構與算法Linkedlist(String)list補充說明無類HandleSin模塊名稱HandleSin功能描述負責處理用戶單擊sin按鈕進行正弦三角函數(shù)的計算接口與屬性Void actionPerformed()Function:負責計算正弦函數(shù)的值InPut: 無OutPut: 無Return:空HandleSin()Function:是構造方法,創(chuàng)建HandleSin對象InPut: t1,t2,t3OutPu
11、t:無Return:空數(shù)據(jù)結構與算法Linkedlist(String)list補充說明無類HandleBack模塊名稱HandleBack功能描述負責處理用戶單擊“退格”按鈕時進行退格操作接口與屬性Void actionPerformed()Function:負責處理list鏈表中存儲的運算數(shù)InPut: 無OutPut: 無Return:空HandleBack()Function:是構造方法,創(chuàng)建HandleBack對象InPut: t1,t2OutPut:無Return:空數(shù)據(jù)結構與算法Linkedlist(String)list補充說明無類HandleClear模塊名稱HandleCl
12、ear功能描述負責處理用戶單擊C按鈕(清零操作)時清除有關的計算結果接口與屬性Void actionPerformed()Function:清除list鏈表中存儲的運算數(shù)和操作數(shù),設置resultShow中顯示的數(shù)字為0,清除showComputerProcess中顯示的計算過程InPut: 無OutPut: 無Return:空HandleClear()Function:是構造方法,創(chuàng)建HandleClear對象InPut: t1,t2OutPut:無Return:空數(shù)據(jù)結構與算法Linkedlist(String)list補充說明無類NumberButton模塊名稱NumberButton功
13、能描述負責創(chuàng)建主窗口中的一個“數(shù)字”按鈕接口與屬性String getNumber()Function:返回數(shù)字符號 InPut: 無OutPut: 無Return:數(shù)字符號NumberButton()Function:是構造方法,創(chuàng)建NumberButton對象InPut: 無OutPut:無Return:空數(shù)據(jù)結構與算法Linkedlist(String)list補充說明無4.主要程序實現(xiàn)計算結果保存到文件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); 處理運算符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 運算符號=list.get(1); S
21、tring middleProcess = numOne+""+運算符號+numTwo;trydouble n1 = Double.parseDouble(numOne);double n2 = Double.parseDouble(numTwo);double result = 0;if(運算符號.equals("+") result= n1+n2; elseif(運算符號.equals("-") result=n1-n2; elseif(運算符號.equals("*") result= n1*n2; elsei
22、f(運算符號.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ù)點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);處理正負號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) 處理等號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 運算符號 =list.get(1);trydouble n1 = Double.parseDouble(num);double
28、n2 = Double.parseDouble(num);double result = 0;if(運算符號.equals("+") result= n1+n2;elseif(運算符號.equals("-") result= n1-n2;elseif(運算符號.equals("*") result= n1*n2;elseif(運算符號.equals("/") result= n1/n2;resultShow.setText(""+result); String process= num+&quo
29、t;"+運算符號+""+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 運算符號= list.get(1); String numTwo =
30、 list.getLast();trydouble n1 = Double.parseDouble(numOne);double n2 = Double.parseDouble(numTwo);double result = 0;if(運算符號.equals("+") result= n1+n2;elseif(運算符號.equals("-") result= n1-n2;elseif(運算符號.equals("*") result= n1*n2;elseif(運算符號.equals("/") result= n1/
31、n2;resultShow.setText(""+result); String process= numOne+""+運算符號+""+numTwo+"="+result;showComputerProcess.setText(process);saveComputerProcess.append(""+process+"n");list.set(0,""+result);list.removeLast();/移到第二個運算符;list.removeLas
32、t();/移調運算符號; 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();/移掉第二個運算數(shù);list.removeLast();/移掉運算符號 catch(Exception ee) 處理退格操作publ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026學年福建省泉州市臺商投資區(qū)數(shù)學三年級第一學期期末教學質量檢測試題含解析
- 公共衛(wèi)生服務信息系統(tǒng)培訓課件
- 應對變化的行政法學試題及答案
- 復雜病癥護理方案試題及答案概述
- 2025年衛(wèi)生資格高頻考點試題及答案
- 成功備戰(zhàn)2025年執(zhí)業(yè)醫(yī)師考試的多種路徑試題及答案
- 主管護師考試應試心理試題及答案
- 2025年執(zhí)業(yè)醫(yī)師考試經(jīng)驗教訓總結與試題及答案
- 護理政策與社會影響探討與試題及答案
- 藥物使用的有效溝通策略試題及答案
- 2025年“鑄牢中華民族共同體意識”競賽試卷題庫及答案
- 2025年二級風力發(fā)電運維值班員職業(yè)技能鑒定考試題庫(濃縮500題)
- 《一帶一路主題樂園規(guī)劃》課件
- 江蘇省南京市、鹽城市2025屆高三年級5月第二次模擬考試化學試題及答案(南京鹽城二模)
- 2025新能源汽車技術的應急管理策略試題及答案
- 八年級下學期家長會課件《攜手同行共筑夢想》
- 建筑勞務分包合同中的稅務問題3篇
- 【課件】Unit+7+A+Day+to+Remember+Section+A(1a-1d)+課件+2024-2025學年人教版英語七年級下冊
- 2024-2025人教版一年級下冊數(shù)學期末考試卷附答案 (三套)
- 消防作戰(zhàn)訓練安全常識及災情處置考試題庫
- 中國世界文化遺產(chǎn)長城的資料整理
評論
0/150
提交評論