java課程設(shè)計(jì)報(bào)告—計(jì)算器_第1頁(yè)
java課程設(shè)計(jì)報(bào)告—計(jì)算器_第2頁(yè)
java課程設(shè)計(jì)報(bào)告—計(jì)算器_第3頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目錄一、課程設(shè)計(jì)目的 2二、課程設(shè)計(jì)任務(wù) 22.1、設(shè)計(jì)任務(wù) 22.2、課程設(shè)計(jì)要求: 22.3、需求分析 2三、開(kāi)發(fā)工具與平臺(tái) 33.1、開(kāi)發(fā)工具 33.2、開(kāi)發(fā)平臺(tái) 3四、設(shè)計(jì)思路 44.1、 界面設(shè)計(jì) 4、邏輯設(shè)計(jì) 4、程序流程圖 5、主要代碼展示及說(shuō)明 54.3、程序測(cè)試 10五、實(shí)驗(yàn)小結(jié) 11六、附錄 程序代碼 12、課程設(shè)計(jì)目的1、熟練掌握 java 面向?qū)ο缶幊獭?、選擇適宜的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)需求3、熟練使用各種控制結(jié)構(gòu)。4、GUI 組件、事件處理技術(shù)。、課程設(shè)計(jì)任務(wù)2.1、設(shè)計(jì)任務(wù)設(shè)計(jì)一個(gè)簡(jiǎn)易的計(jì)算器,可以進(jìn)行四那么運(yùn)算:加、減、乘、除等限于 十進(jìn)制下程序要求: 1應(yīng)具有相應(yīng)的界面

2、, 可參考 Windows 操作系統(tǒng)自帶的計(jì)算器界面 2操作符號(hào)定為:“+,“-,“*,“/,“+-/等。按國(guó)際慣例設(shè)計(jì)3用戶(hù)通過(guò)點(diǎn)擊程序界面上按鈕,實(shí)現(xiàn)數(shù)字、運(yùn)算符的輸入操作4以上局部為必須完成的內(nèi)容。選作局部:1具有操作符號(hào)“ 1/X, “ sqrt開(kāi)方,“小數(shù)功能等。2.2、課程設(shè)計(jì)要求: 1 應(yīng)用自己所學(xué)課程知識(shí)完成對(duì)計(jì)算器的根本任務(wù)。 2 查閱相關(guān)資料,學(xué)習(xí)和掌握工程中涉及的新知識(shí),提高自學(xué)能 力。 3 通過(guò)應(yīng)用 java 程序編寫(xiě)計(jì)算器來(lái)提升自己對(duì)簡(jiǎn)單的圖形界面有 一定的掌握和了解。2.3、需求分析1 .設(shè)計(jì)的計(jì)算器可以完成加法、減法、乘法、除法的簡(jiǎn)單運(yùn)算。2. 實(shí)現(xiàn)一些簡(jiǎn)單的擴(kuò)展

3、運(yùn)算,如:正負(fù)號(hào)、倒數(shù)、退格、清零等功能。3. 添加小數(shù)點(diǎn)功能,用以實(shí)現(xiàn)浮點(diǎn)型數(shù)據(jù)的計(jì)算。4. 使用布局管理器設(shè)計(jì)一個(gè)計(jì)算器的界面,使用事件監(jiān)聽(tīng)器處理數(shù)據(jù)的輸 入,并完成相關(guān)的計(jì)算。三、開(kāi)發(fā)工具與平臺(tái)3.1、開(kāi)發(fā)工具M(jìn)icrosoft Windows 7 旗艦版3.2、開(kāi)發(fā)平臺(tái)JDK1.6.0-02 和 UE 編譯器四、設(shè)計(jì)思路4.1、界面設(shè)計(jì):如圖3-1圖3-1421、邏輯設(shè)計(jì):(1) 根據(jù)所設(shè)計(jì)出來(lái)的界面,首先要設(shè)計(jì)其 GUI界面,總體界面有一個(gè) 文本框,20個(gè)按鈕,總體界面用BorderLayout布局,文本框放置在 最NORT,然后0到9以及+,-,*,/等按鈕放置到一個(gè)面板Panel

4、 中,完成界面設(shè)計(jì)。(2) 設(shè)計(jì)計(jì)算流程,首先點(diǎn)擊數(shù)字按鈕時(shí),將按鈕數(shù)值添加到文本框當(dāng)中,并將該數(shù)值保存到一個(gè)字符串中,再次點(diǎn)擊數(shù)字按鈕時(shí),將之 前保存的字符串與新的數(shù)值拼接起來(lái),再添加到文本框當(dāng)中,直到 點(diǎn)擊運(yùn)算符按鈕時(shí),將文本框當(dāng)中的字符串保存在一個(gè)字符串變量 中,然后重置文本框內(nèi)容,將運(yùn)算符號(hào)顯示到文本框中,隨后輸入 第二個(gè)計(jì)算數(shù)據(jù)時(shí),用同樣的方法保存數(shù)據(jù),最后通過(guò)控制“=運(yùn)算符先將字符串?dāng)?shù)據(jù)轉(zhuǎn)化成雙精度類(lèi)型,然后計(jì)算出結(jié)果并顯示到 文本框當(dāng)中。(3) 根本運(yùn)算設(shè)計(jì)完成以后那么開(kāi)始考慮其他個(gè)別功能的實(shí)現(xiàn),例如倒數(shù)、 清零、退格等功能的實(shí)現(xiàn),清零直接重置文本框內(nèi)容,退格功能那么 采用sub

5、string函數(shù)截取字符串長(zhǎng)度。422、程序流程圖:r開(kāi)始結(jié)是輸出423、主要代碼展示及說(shuō)明:總體代碼的設(shè)計(jì):程序采用繼承windowadapter類(lèi),新建Jframe窗體,利用數(shù)組來(lái)定義 JBotton按鈕,同時(shí)利用數(shù)組注冊(cè)監(jiān)聽(tīng),采用4行5列網(wǎng)格布局,完成計(jì)算 器界面的根本設(shè)置,在窗體的正常關(guān)閉方面,采用匿名類(lèi)實(shí)現(xiàn)窗體的正常 關(guān)閉。最后對(duì)按鈕進(jìn)行計(jì)算分析,分別設(shè)定輸入數(shù)據(jù)的A類(lèi)、運(yùn)算符控制的Opertion類(lèi),退格功能的Backspace類(lèi)、計(jì)算結(jié)果的 Result類(lèi)等等, 一步步實(shí)現(xiàn)計(jì)算器的根本功能!1類(lèi)A的設(shè)計(jì)數(shù)據(jù)的輸入class A impleme nts Action Liste n

6、erpublic void action Performed(Acti onEvent e)Stri ng a = Jtext.getText();String s = e.getActi on Comma nd();if(a.equals("O.")|a.equals("+")|a.equals("-")|a.equals("*")|a.equals("/")Jtext.setText(s);else if(flag2) Jtext.setText(s); flag2=false;elseJt

7、ext.setText(a+s);功能解釋?zhuān)?程序開(kāi)始時(shí),程序初始化文本框的內(nèi)容為 “0. ,點(diǎn)擊數(shù)字按鈕, 那么調(diào)用類(lèi)A,首先用a來(lái)獲取當(dāng)前文本框內(nèi)容,s來(lái)獲取按鈕數(shù)值,然后進(jìn) 行判斷,假設(shè)a的值為上述代碼的值那么輸出s的值,再次點(diǎn)擊數(shù)字按鈕時(shí), 再次調(diào)用A類(lèi),此時(shí)a的值為上次輸入的s值,第一個(gè)if語(yǔ)句不滿(mǎn)足,執(zhí) 行下個(gè) if 語(yǔ)句 if(flag2) , flag2 初始值為 false ,該語(yǔ)句的功能是在執(zhí)行 了“ =號(hào)按鈕時(shí),防止新的數(shù)字按鈕的值合并到到已經(jīng)得出的結(jié)果上,例 如:12+12=24,此時(shí)再點(diǎn)擊數(shù)字按鈕 3時(shí),那么文本框內(nèi)容被重置,輸出數(shù) 值3,而不是243,如果if(fl

8、ag2)不滿(mǎn)足,那么將字符串a(chǎn)和s合并并輸出,得出第一個(gè)要計(jì)算的數(shù)據(jù)。2類(lèi) Opertion 的設(shè)計(jì):運(yùn)算符的控制class Opertion implements ActionListenerpublic void actionPerformed(ActionEvent e)cal=e.getActionCommand();if(flag1=true)x=Jtext.getText();Jtext.setText(cal);flag1=false;功能解釋?zhuān)寒?dāng)點(diǎn)擊運(yùn)算符控制按鈕時(shí),首先將運(yùn)算符的數(shù)值賦值給cal初 值為空,緊接著進(jìn)行判斷, flag1 初值為 ture ,該類(lèi)的作用為在點(diǎn)擊運(yùn)

9、算 符按鈕時(shí),將計(jì)算的第一個(gè)數(shù)據(jù)保存在 x 字符串變量當(dāng)中,然后將文本框 內(nèi)容重置為點(diǎn)擊的運(yùn)算符的數(shù)值, 類(lèi)的結(jié)尾將 flag1 賦值為 false ,防止再 次點(diǎn)擊運(yùn)算符按鈕時(shí)改變了 x 的值。附: 此時(shí)文本框內(nèi)容為運(yùn)算符的值,輸入第二個(gè)計(jì)算數(shù)據(jù)時(shí),點(diǎn)擊數(shù)字 按鈕,那么再次調(diào)用A類(lèi),此時(shí)滿(mǎn)足A類(lèi)中第一個(gè)if語(yǔ)句,文本框內(nèi)容被重 置為數(shù)字按鈕的值, 接下來(lái)與獲取第一個(gè)計(jì)算數(shù)據(jù)步驟一樣,直到點(diǎn)擊“=號(hào)運(yùn)算符為止! 3類(lèi) Result 的設(shè)計(jì):計(jì)算并輸出結(jié)果class Result implements ActionListener/ 計(jì)算并顯示結(jié)果public void actionPerfor

10、med(ActionEvent e)double num1;num1=Double.parseDouble(x);y=Jtext.getText();double num2;num2=Double.parseDouble(y);double result=0;if(num2!=0)if(cal.equals("+")result=num1+num2;if(cal.equals("-")result=num1-num2;if(cal.equals("*")result=num1*num2;String s1=Double.toStrin

11、g(result);Jtext.setText(s1);if(cal.equals("/")if(num2=0)Jtext.setText(除數(shù)不能為 0");elseresult=num1/num2;String s1=Double.toString(result);Jtext.setText(s1);flag1=true;flag2=true;功能解釋?zhuān)菏紫榷x兩個(gè)Double型numl num2將之前保存的第一個(gè)計(jì)算 數(shù)據(jù)x強(qiáng)制轉(zhuǎn)換為Double型后賦值給numl,接著用字符串變量y來(lái)獲取當(dāng) 前文本框的內(nèi)容,即第二個(gè)計(jì)算數(shù)據(jù)的值,同樣再將其強(qiáng)制轉(zhuǎn)換Doubl

12、e型后賦值給num2然后進(jìn)行運(yùn)算符判斷,對(duì)cal的值進(jìn)行比擬,然后進(jìn)行相應(yīng)的計(jì)算,將計(jì)算的結(jié)果轉(zhuǎn)換成字符串后將其輸出到文本框中,在類(lèi)的最 后將 flag1 、flag2 賦值為 true ,作用是將計(jì)算的結(jié)果當(dāng)作第二次計(jì)算的數(shù) 據(jù)進(jìn)行再運(yùn)算,即將結(jié)果重新賦值給x作為第一個(gè)計(jì)算數(shù)據(jù)!附:在此類(lèi)中還考慮了當(dāng)除數(shù)為零的情況。 4類(lèi)Backspace的設(shè)計(jì):功能類(lèi)一退格class BackSpace implements ActionListenerpublic void actionPerformed(ActionEvent e)string s = e.getActionCommand();str

13、ing s1 = Jtext.getText();if(s.equals( 退格")s1=new string (s1.substring(0,s1.length()-1);Jtext.setText(s1);功能解釋?zhuān)?這是計(jì)算器附加功能的實(shí)現(xiàn),這里只介紹退格功能,像正負(fù)號(hào)、 求倒數(shù)、清零等功能相似,所以就不再一一介紹。首先獲取退格按鈕的命 令值賦給s,然后獲取當(dāng)前文本框的內(nèi)容,即輸入的數(shù)據(jù),將其賦給si,接著進(jìn)行判斷, 利用 substring 函數(shù)將 s1 字符串截取為從第一個(gè)字符至倒 數(shù)第二個(gè)字符為止的字符串并重新賦值給si,再將其輸出到文本框,實(shí)現(xiàn)退格的功能。4.3、程序測(cè)

14、試1. 簡(jiǎn)單的運(yùn)算:以加法為例:123+456分析:計(jì)算的結(jié)果為579.0,為雙 精度型,計(jì)算的結(jié)果被設(shè)置在文本 框的最右端,該計(jì)算器的一個(gè)特點(diǎn) 是可直接在文本框中輸入數(shù)據(jù)以 及進(jìn)行更改。3. 退格的運(yùn)算:以123為例 分析:輸出的結(jié)果如下列圖,本計(jì)算 器退格鍵有一個(gè)特點(diǎn)是,就算是是 計(jì)算后得出的結(jié)果也能實(shí)現(xiàn)退格, 缺點(diǎn)是不能很好的處理小數(shù)點(diǎn)的 問(wèn)題,因?yàn)樾?shù)點(diǎn)也是字符串的一 局部。4. 正負(fù)號(hào)的運(yùn)算:以123為例分析:輸出的結(jié)果如下列圖,正負(fù)號(hào)添 加能夠很好的實(shí)現(xiàn),但可以進(jìn)行一些 改進(jìn),比方在計(jì)算過(guò)程當(dāng)中直接點(diǎn)擊 負(fù)號(hào)運(yùn)算符輸入負(fù)數(shù)進(jìn)行計(jì)算!5. 總體分析:該計(jì)算器根本運(yùn)算沒(méi)有問(wèn)題,清零、正

15、負(fù)號(hào)、求倒數(shù)、退格功能都能很好 的實(shí)現(xiàn),總體能完成一個(gè)計(jì)算器的根本功能,但仍有許多地方需要改進(jìn), 比方小數(shù)點(diǎn)的實(shí)現(xiàn)所存在的一些問(wèn)題,雖然在根本的運(yùn)算過(guò)程當(dāng)中不會(huì)造 成太大影響,但這依然不能認(rèn)為是一個(gè)很好的計(jì)算器,同時(shí),在另一方面, 該計(jì)算器還沒(méi)能很好的實(shí)現(xiàn)連續(xù)計(jì)算的功能,必須每次按下等號(hào)按鈕計(jì)算 出結(jié)果后才能用產(chǎn)生的結(jié)果接著進(jìn)行下一次的計(jì)算,改進(jìn)的方法是在運(yùn)算 符上同時(shí)注冊(cè)Result類(lèi),讓運(yùn)算符同時(shí)擁有計(jì)算結(jié)果的功能。五、實(shí)驗(yàn)小結(jié)本次課程設(shè)計(jì)到此算是告一段落了,經(jīng)過(guò)這次的學(xué)習(xí),我學(xué)到了很多 東西,在此根底上更加穩(wěn)固了自己對(duì) java的認(rèn)識(shí)與了解。在做本工程是時(shí)候,會(huì)遇到很多小問(wèn)題,比方說(shuō),在

16、整個(gè)運(yùn)算過(guò)程中 要如何確保輸入的計(jì)算數(shù)據(jù)哪個(gè)是第一個(gè)計(jì)算數(shù)據(jù)的,哪個(gè)是第二個(gè)計(jì)算 數(shù)據(jù)的,同時(shí)也要區(qū)分運(yùn)算符,因?yàn)樵撚?jì)算器程序應(yīng)用的都是利用字符串 來(lái)完成計(jì)算的,而且不能重復(fù)輸出運(yùn)算符,更不能將運(yùn)算符錯(cuò)誤的存儲(chǔ)在 了第一個(gè)計(jì)算數(shù)據(jù)的數(shù)值中,也得考慮到萬(wàn)一不小心重復(fù)點(diǎn)擊了運(yùn)算符按 鈕會(huì)不會(huì)造成第一個(gè)計(jì)算數(shù)據(jù)的重新賦值等等問(wèn)題,最后想到利用布爾類(lèi) 型來(lái)很好的控制運(yùn)算符的應(yīng)用!此次課程設(shè)計(jì)讓我更了解熟悉了 Java 中的圖形用戶(hù)界面和它的編程方 式。在完成課題的過(guò)程中也不斷充實(shí)了自己,學(xué)習(xí)到了很多以前沒(méi)有學(xué)習(xí) 到的知識(shí),收獲很大。最大的收獲就是對(duì)大學(xué)學(xué)習(xí)的總結(jié)和培養(yǎng)了解決困 難的信心和能力,使我對(duì)所

17、學(xué)知識(shí)能夠融會(huì)貫穿,又不斷豐富了新知識(shí)。 Java 計(jì)算器設(shè)計(jì)使得我們對(duì)所學(xué)的專(zhuān)業(yè)課有了更為深刻的認(rèn)識(shí),使得知識(shí) 得到了穩(wěn)固和提高。在接下來(lái)的時(shí)間里,我覺(jué)得我要更加努力的往深一層次的方面看齊, 了解更多有關(guān) java 的知識(shí),對(duì) java 有更深一步的了解,我會(huì)一步一步的 走下去!六、附錄 程序代碼 import java.awt.*;import javax.swing.*;import java.awt.event.*;public class TheCalculator extends WindowAdapter/ 程序框架繼承自 WindowAdapter 類(lèi)private JText

18、Field Jtext=new JTextField("0.");private JFrame f=new JFrame(" 計(jì)算器 -趙磊 "); private String x=""private String y=""private String cal=""private boolean flag1=true;private boolean flag2=false;public void init()/ 初始化String buttonValue = new String"1

19、","2","3","+","C","4","5","6","-"," 退格","7","8","9","*","1/x","0","+/-",".","/"Container contain = f.getContentPane

20、();JPanel Jpan = new JPanel();/采用 4 行 5 列的網(wǎng)格布局JButton Jb=new JButton20;contain.setLayout(new BorderLayout();Jpan.setLayout(new GridLayout(4,5);Jtext.setHorizontalAlignment(JTextField.RIGHT);contain.add(Jtext,"North");contain.add(Jpan);A num=new A();/ 數(shù)據(jù)Result re=new Result();/結(jié)果Opertion op

21、=new Opertion();/運(yùn)算符Clear cl=new Clear();/清零BackSpace back=new BackSpace();/退格CountDown count_d=new CountDown();/倒數(shù)Strains stra=new Strains();/相反數(shù)for(int i = 0 ; i <Jb.length ; i+) / 利用 For 循環(huán)添加按鈕 Jbi = new JButton (buttonV aluei); Jpan.add(Jbi);if(i=3 | i=8 | i=13 | i=18) Jbi.addActionListener(o

22、p);if(i=0 | i=1 | i=2 | i=5 | i=6 | i=7| i=10 | i=11 | i=12 | i=15 | i=17)Jbi.addActionListener(num); if(i=3|i=4|i=8|i=9)|(i>12)&&(i<=19)&&i!=15)Jbi.setForeground(new Color(255, 0, 0); elseJbi.setForeground(new Color(0, 0, 255); / 控制按鈕字體顏色 Jb4.addActionListener(cl); Jb9.addActi

23、onListener(back);Jb14.addActionListener(count_d);Jb16.addActionListener(stra);Jb19.addActionListener(re);f.setSize(320,240);f.setVisible(true);f.addWindowListener(/采用匿名類(lèi)實(shí)現(xiàn)窗口的正常關(guān)閉new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););class A implements ActionListener/輸入數(shù)據(jù)public v

24、oid actionPerformed(ActionEvent e)String a = Jtext.getText();String s = e.getActionCommand();if(a.equals("0.")|a.equals("+")|a.equals("-")|a.equals("*")|a.equals("/")Jtext.setText(s);elseif(flag2)Jtext.setText(s);flag2=false;elseJtext.setText(a+s);cl

25、ass Opertion implements ActionListenerpublic void actionPerformed(ActionEvent e)cal=e.getActionCommand();if(flag1=true)x=Jtext.getText();Jtext.setText(cal);flag1=false;class Clear implements ActionListener /清零功能public void actionPerformed(ActionEvent e)Jtext.setText("0.");class CountDown i

26、mplements ActionListener/求倒數(shù)類(lèi)public void actionPerformed(ActionEvent e)String s = e.getActionCommand();String s1 = Jtext.getText();if(s.equals("1/x")s1 = new String (""+1/Double.parseDouble(s1);Jtext.setText(s1);class Strains implements ActionListener/求相反數(shù)類(lèi)public void actionPerformed(ActionEvent e)String s = e.getActionCommand();String s1 = Jtext.getText();if(s.equals("+/-")s1=new String (""+(0-Double.parseDouble(s1);Jtext.setText(s1);class BackSpa

溫馨提示

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

評(píng)論

0/150

提交評(píng)論