java課程設計--計算器的設計與實現_第1頁
java課程設計--計算器的設計與實現_第2頁
java課程設計--計算器的設計與實現_第3頁
java課程設計--計算器的設計與實現_第4頁
java課程設計--計算器的設計與實現_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 課程設計報告設計名稱: 面向對象課程設計 選題名稱: 計算器的設計與實現 姓 名: 學 號: 專業班級: 系 (院): 計算機工程學院 設計時間: 設計地點: 軟件實驗室、教室 成績:指導教師評語: 簽名: 年 月 日面向對象課程設計報告 第 19 頁,共 19 頁1課程設計目的面向對象程序設計是一門實踐性很強的計算機專業基礎課程,課程設計是學習完該課程后進行的一次較全面的綜合練習。其目的在于通過實踐加深學生對面向對象程序設計的理論、方法和基礎知識的理解,掌握使用Java語言進行面向對象設計的基本方法,提高運用面向對象知識分析實際問題、解決實際問題的能力。2課程設計任務與要求:課程設計可選用

2、NetBeans、Eclipse、JBuilder等作為開發平臺以提高開發效率,盡可能熟練掌握其中一種集成開發環境。建議采用UML建模技術進行系統的分析設計,在Visio中畫出系統用例圖和類圖,并將UML圖復制到設計報告中。通過這次設計,要求掌握以下內容:1) 面向對象技術中的繼承與多態(重載和覆蓋)機制、各種修飾符的使用2) 類、包、接口的定義與使用3) 常用工具類與算法的實現(數組、向量、字符串、鏈表)4) Java常用標準GUI組件及其事件處理5) Java的異常處理機制6) Java的數據庫連接技術7) Java的多線程技術與動畫制作8) Java的網絡編程 3課程設計說明書1、需求分

3、析(用例圖)圖1.用例圖 課題:計算器的設計與實現 功能分析:此計算器有連續運算的功能,然而在很多人使用計算器時容易忘掉之前是用8*2呢還是6*2,于是這個計算器多出歷史檢驗的功能,可以將以前的式子顯示在下方,一邊檢驗正確與否。 2、概要設計MultipleOperation類,用來實現連續運算的類MultipleOperation trans: String+operation (expr: String)Listl類,用來記錄歷史的類listStr: StringEstr: Stringflag: String+toString ()3詳細設計MultipleOperationtrans:

4、 String+operation (expr: String)public class MultipleOperation String trans; public void operation(String expr) ScriptEngineManager manager=new ScriptEngineManager(); ScriptEngine engine =manager.getEngineByName("js"); try trans= String.valueOf( engine.eval(expr); catch(Exception e) trans=

5、"錯誤語法" System.out.println(e); listStr:StringEstr: Stringflag: String+toString ()public class list String Str; String Estr; String flag; public list() Str="" Estr="" flag="" Override public String toString () /return A+F+B+D+C; return Str+"="+Estr; 4編

6、程實現package Calculator;import java.awt.event.*;import javax.swing.*;import java.util.*;public class NewJFrame extends javax.swing.JFrame int ClearNumber=1;/判定點擊“=”后 點擊數字按鈕重置文本框 int I=0;/用來加入列表第一行的提示 int flag=0;/點擊列表后 提取結果的判定源 judge ju; private boolean number = true; private String equalOp = "=&q

7、uot; / private CalculatorOp op = new CalculatorOp(); MultipleOperation CalcuOperation; list history; Vector<String> data=new Vector<String>(); / ActionListener numberListener = new NumberListener(); /* class NumberListener implements ActionListener * public void actionPerformed(ActionEve

8、nt event) * String digit = event.getActionCommand(); * if (number) * textfield.setText(digit); * number = false; * else * textfield.setText(textfield.getText() + digit); * * * * * ActionListener operatorListener = new OperatorListener(); * private void action() * number = true; * textfield.setText(&

9、quot;"); * equalOp = "=" * op.setTotal("0"); * * * class OperatorListener implements ActionListener * public void actionPerformed(ActionEvent e) * if (number) * action(); * textfield.setText("0"); * else * number = true; * String displayText = textfield.getText();

10、* if (equalOp.equals("=") * op.A(); * op.setTotal(displayText); * history.D="=" * * * else if (equalOp.equals("+") * op.add(displayText); * op.B(); * history.F="+" * else if (equalOp.equals("-") * op.subtract(displayText); * op.B(); * history.F="

11、;-" * else if (equalOp.equals("×") * op.multiply(displayText); * op.B(); * history.F="×" * else if (equalOp.equals("÷") * op.divide(displayText); * op.B(); * history.F="÷" * else if (equalOp.equals("N") * op.B(); * history.F=

12、"" * int A; * int B; * int trans=1; * String C; * A=Integer.parseInt(history.A); * B=Integer.parseInt(history.B); * op.B(); * for(int i=0;i<B;i+) * trans *=A; * * op.power(String.valueOf(trans); * * textfield.setText("" + op.getTotalString(); * equalOp = e.getActionCommand();

13、* * * */ public class judge public void pan() if(ClearNumber=0) textfield.setText(""); /*public class CalculatorOp * * private double total; * public CalculatorOp() * total = 0; * * public String getTotalString() * return ""+total; * * public void setTotal(String n) * total = con

14、vertToNumber(n); * * public void add(String n) * total += convertToNumber(n); * * public void subtract(String n) * total -= convertToNumber(n); * * public void multiply(String n) * total *= convertToNumber(n); * * * public void divide(String n) * total /= convertToNumber(n); * * * public void power

15、(String n) * total = convertToNumber(n); * * * * public void A() * history.A=textfield.getText(); * * public void B() * history.B=textfield.getText(); * * * private double convertToNumber(String n) * return Double.parseDouble(n); * * */ /* * Creates new form NewJFrame */ public NewJFrame() initCompo

16、nents(); history=new list(); textfield.setText(null); CalcuOperation=new MultipleOperation(); ju=new judge(); this.setLocationRelativeTo(null); this.setResizable(false); private void btnPointActionPerformed(java.awt.event.ActionEvent evt) textfield.setText(textfield.getText()+"."); private

17、 void btnClearActionPerformed(java.awt.event.ActionEvent evt) textfield.setText(textfield.getText().substring(0, textfield.getText().length()-1); private void btnEqual1ActionPerformed(java.awt.event.ActionEvent evt) textfield.setText(""); private void jButton1ActionPerformed(java.awt.event

18、.ActionEvent evt) ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"1"); private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"2"); private void jButton3ActionPerformed(java.awt.event.Act

19、ionEvent evt) ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"3"); private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"4"); private void jButton5ActionPerformed(java.awt.event.ActionE

20、vent evt) ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"5"); private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"6"); private void jButton7ActionPerformed(java.awt.event.ActionEvent

21、 evt) ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"7"); private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"8"); private void jButton9ActionPerformed(java.awt.event.ActionEvent evt

22、) ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"9"); private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) ju.pan(); ClearNumber=1; textfield.setText(textfield.getText()+"0"); private void btnAddActionPerformed(java.awt.event.ActionEvent evt) tex

23、tfield.setText(textfield.getText()+"+"); ClearNumber=1; private void btnSubtractActionPerformed(java.awt.event.ActionEvent evt) textfield.setText(textfield.getText()+"-"); ClearNumber=1; private void btnMultiplyActionPerformed(java.awt.event.ActionEvent evt) ClearNumber=1; textfi

24、eld.setText(textfield.getText()+"*"); private void btnDivideActionPerformed(java.awt.event.ActionEvent evt) textfield.setText(textfield.getText()+"/"); ClearNumber=1; private void btnEqualActionPerformed(java.awt.event.ActionEvent evt) / CalcuOperation; String strans=""

25、 history.Str=textfield.getText(); CalcuOperation.operation(textfield.getText(); textfield.setText(CalcuOperation.trans); history.Estr=CalcuOperation.trans; strans=history.Str+"="+history.Estr; if(I=0&&textfield.getText()!=null) data.addElement("歷史記錄如下:"); I=1; if(CalcuOpe

26、ration.trans="錯誤語法") ClearNumber=0; else data.addElement(strans); jlist.setListData(data); textfield.setText(CalcuOperation.trans); ClearNumber=0; private void btnBrackets1ActionPerformed(java.awt.event.ActionEvent evt) textfield.setText(textfield.getText()+"("); private void btn

27、Brackets2ActionPerformed(java.awt.event.ActionEvent evt) textfield.setText(textfield.getText()+")"); private void jlistValueChanged(javax.swing.event.ListSelectionEvent evt) history.flag=String.valueOf(jlist.getSelectedValue(); textfield.setText( history.flag.substring(history.flag.indexOf

28、("=")+1,history.flag.length(); ClearNumber=1; flag=1; private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) if(ClearNumber=0|flag=1) String a=textfield.getText().substring(0, textfield.getText().indexOf("."); textfield.setText("轉換為二進制為: "+String.valueOf(

29、Integer.toBinaryString(Integer.parseInt(a); else if(textfield.getText().indexOf(".")!=-1) String a=textfield.getText().substring(0, textfield.getText().indexOf("."); textfield.setText("轉換為二進制為: "+String.valueOf(Integer.toBinaryString(Integer.parseInt(a); else textfield.

30、setText("轉換為二進制為:"+String.valueOf(Integer.toBinaryString(Integer.parseInt(textfield.getText(); ClearNumber=0; private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) if(ClearNumber=0) String a=textfield.getText().substring(0, textfield.getText().indexOf("."); textfi

31、eld.setText("轉換為八進制為: "+String.valueOf(Integer.toOctalString(Integer.parseInt(a); else if(textfield.getText().indexOf(".")!=-1) String a =textfield.getText().substring(0, textfield.getText().indexOf("."); textfield.setText("轉換為八進制為: "+String.valueOf(Integer.to

32、OctalString(Integer.parseInt(a); else textfield.setText("轉換為八進制為: "+String.valueOf(Integer.toOctalString(Integer.parseInt(textfield.getText(); ClearNumber=0; private void jButton13ActionPerformed(java.awt.event.ActionEvent evt) if(ClearNumber=0) String a=textfield.getText().substring(0, te

33、xtfield.getText().length()-2); textfield.setText("轉換為十六進制為: "+String.valueOf(Integer.toHexString(Integer.parseInt(a); else if(textfield.getText().indexOf(".")!=-1) String a =textfield.getText().substring(0, textfield.getText().indexOf("."); textfield.setText("轉換為十六

34、進制為: "+String.valueOf(Integer.toHexString(Integer.parseInt(a); else textfield.setText("轉換為十六進制為: "+String.valueOf(Integer.toHexString(Integer.parseInt(textfield.getText(); ClearNumber=0; 4、調試分析5、用戶使用說明此計算器使用方便,可以實現連續不同優先級的運算。當進行一次運算后,再點擊數字按鈕則開始新一輪的運算,如果在是運算后直接點運算符號(加減等),則會直接繼續上次的結果進行運

35、算,同時下方列表出現運算歷史,可以直接點擊歷史提取出運算結果,便于繼續運算。此計算器還有轉換進制功能,注意的是只能將十進制正整數轉換為二進制,八進制,十六進制。6,心得體會 此次的課程設計過程中遇到許多問題,但是卻讓我受益匪淺。首先這是第一次用netbeans編寫java程序,讓我熟悉了netbeans的使用。更加了解和熟悉了java的一些常用工具類和算法和一些基礎語句,如Jlist列表的使用,在給列表的對象加入數據時,我開始用了Vector<Object>泛型數據,結果加入列表的數據卻是同樣的數據重復,后改為Vector<String>則正確。在此次編程中多次要提取文

36、本框內的字符,讓我對substring這一語句非常的熟練了,在使用substring時還學到了indexOf和split方法,如提取形如3+9=12的式子中的12(賦值給F)便用到F.substring(F.indexOf(“=”)+1); 其中split雖然在此程序未用到,但我知道這兩種方法非常的實用,今后的編程中肯定還會用到,除此之外,我還學到很多很多之前不知道的知識,同時也讓我知道自己還有更長的路要走,更多的知識去學習。 教師見習報告總結期待已久的見習已經結束了,在龍巖三中高中部見習聽課,雖然只是短短的兩個星期,但感觸還是蠻深的,以前作為一名學生坐在課室聽課,和現在作為一名準教師坐在課室

37、聽課是完全不同的感受,感覺自己學到了一些在平時課堂上學不到的東西。在這里,我獲得的不僅是經驗上的收獲,更多是教學管理,課堂教學等的理念,以及他們帶給我的種種思考。教育見習實踐過程:聽課。教育見習的主要目的是讓學生在指導教師的引導下,觀摩教師上課方法、技巧等。聽課是教育見習的主要內容。我院規定在一周的見習中需完成至少6課的見習任務。我在教師的安排指導下,分別對高一、高二物理專業課型為主,其他課型齊頭的方式,積極主動的完成了聽課任務,收到良好的效果。我聽的第一節課是高二(8)班,這是一個平衡班,水平不如實驗班高。在上課前。科任老師已經跟我說了這個班的紀律是比較差的,而且成績也不是很好。在我聽課期間

38、,確實有幾個學生在課堂上說話,但是我發現了一個有趣的現象,這個現象我在往后的幾個班都發現了,就是絕大部分的學生的學習熱情都好高漲,積極舉手發言,積極參與課堂活動。我跟老師們提起這個現象的時候,科任老師就跟我說,一個班里不可能所有的學生都能全神貫注地聽完一節課,所以作為一名教師,應該想辦法吸引學生的注意力,調動的積極性,比如可以以小組為單位,以搶答計分的形式調動學生的積極性,這樣課堂氣氛就會活躍起來了。在為期兩周的見習工作中,我真的有很大的感觸,我第一次感受到自己已經從一名學生向一名教師靠近,走在校園里,每當有學生叫我一聲老師,我在感到無比自豪的同時,還感受到了自己的責任。見習工作結束了,我要回到學校繼續我的學習了,但是我會好好記住我從*中學學到的一切,并應用于我的專業學習中去。一、教學管理理念 在龍巖三中,從領導階層到一位普通的科任老師,都秉承以學生為主體的宗旨進行學校的管理,進行教學工作的開展。作為一個課程改革的示范學校,一個教育實驗基地。這所學校鼓勵著老師做各種研究,各種改革。每個班主任都有著自己的管理經驗與管理宗旨。有了這種思想的自由,自然這里也就充滿著探索與嘗試,從而有所創造與進步。在我見習的班集體中,班主任對他的學生說:“我要讓你們成為學習型的管理者,也是管理型的學習者。”這樣一句簡單的話,讓我感到這里老師進行班級管理的良苦用心。他們關心

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論