java程序設(shè)計報告_第1頁
java程序設(shè)計報告_第2頁
java程序設(shè)計報告_第3頁
java程序設(shè)計報告_第4頁
java程序設(shè)計報告_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課程設(shè)計課程設(shè)計目的設(shè)計一個基于Swing的計算器應(yīng)用程序,完成普通的算術(shù)運算。課程設(shè)計要求設(shè)計的計算器是基于Swing的,可以完成加減乘除和取余運算。增加計算器的日期計算功能,能夠計算兩個日期之間相距的天數(shù)。(要判斷鍵入的日期格式是否正確,并能正確處理按鈕動作事件,同時能夠得到正確的計算結(jié)果)設(shè)計要點主要練習(xí)使用布局管理器設(shè)計一個計算器的界面,并使用事件監(jiān)聽器處理數(shù)據(jù)的輸入,完成相關(guān)的計算。在面板上可以增加一個算術(shù)/日期的轉(zhuǎn)換按鈕來選擇是普通計算還是日期計算。以及增加一個清零的按鈕CE,用以將顯示結(jié)果的單行文本域清空,同時將各個參數(shù)設(shè)置為默認值。二、總體方案設(shè)計日常生活中經(jīng)常需要用到計算器,比如科學(xué)計算,數(shù)值計算,會計業(yè)務(wù)等等,在Applet中實現(xiàn)一個精巧的計算器,可以讓用戶的操作也更方便和快捷。本項目需要實現(xiàn)一個具有四則運算的計算器,能夠?qū)崿F(xiàn)基本的加、減、乘、除運算,以及其它的輔助功能;界面簡潔適用;要提供主要的設(shè)計思路、類的設(shè)計,本次設(shè)計添加轉(zhuǎn)進制等功能。本應(yīng)用程序繼承自框架(frame),此程序使用frame布局管理器bordelayout,將單行文本加入相應(yīng)區(qū)域,包含各種按紐的面板buttonpanel加入相應(yīng)區(qū)域還可以將進制轉(zhuǎn)換的面板與單行文本框放一塊包含各種按紐的面板buttonpanel采用N行N列的網(wǎng)格布局,然后將數(shù)字按鈕和運算符按鈕以及控制按鈕添加到面板中,同時注冊按鈕事件監(jiān)聽器。布局設(shè)計好后再添加按鈕事件。對于此程序要考慮到點擊加、減、乘、除按鈕時是否有點擊數(shù)字按鈕,如果是第一次點擊數(shù)字按鈕或者是點擊數(shù)字按鈕前點擊了加、減、乘、除按鈕則直接把數(shù)字按鈕的數(shù)值設(shè)置到文本框中,否則則應(yīng)把文本框中的內(nèi)容加上你所點擊按鈕的數(shù)值設(shè)置到文本框中。四、程序的調(diào)試與運行結(jié)果說明程序功能實現(xiàn):使用swing組件和awt圖形用戶界面以及BroadLayout布局管理器。通

過在按鈕的單擊事件處理方法中調(diào)用類的成員方法calculator()來進行簡易計算器的各種運算,并正確實現(xiàn)運算功能。程序可以實現(xiàn)加、減、乘、除、取余等運算,并且可進行負數(shù)的運算,設(shè)置CE清零按鈕可進行清零運算。添加菜單條,列出'標(biāo)準(zhǔn)計算’、'日期計算’菜單選項,并別實現(xiàn)'標(biāo)準(zhǔn)計算’且整個程序?qū)υ捒蚩蓪崿F(xiàn)最小化、最大化、關(guān)閉。運行結(jié)果截圖:五、程序代碼源代碼:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassCalculatorextendsFrameimplementsActionListener//,WindowListener〃定義一個繼承Frame主程序類并實現(xiàn)按鈕監(jiān)聽器和窗口監(jiān)聽器接口{privateContainercontainer;//定義一個私有的抽象組件類containerprivateGridBagLayoutlayout;//定義一個私有的面板類〃計算結(jié)果顯示區(qū)//保存+,-,*,/,=命令0〃保存計算結(jié)果〃判斷是否為數(shù)字的開始privateGridBagConstraintsconstraints;//定義一個私有類用于添加和刪除privateJTextFielddisplayField;privateStringlastCommand;privatedoubleresult;privatebooleanstart;privateJMenuBarmenubar;//定義類用于放置菜單Dialogdialog;//用于對話框的設(shè)置privateJButtonbutton_plusminus,button_cancel,button_1,button_2,button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0,button_plus,button_minus,button_multiply,button_divide,button_point,〃計算結(jié)果顯示區(qū)//保存+,-,*,/,=命令0〃保存計算結(jié)果〃判斷是否為數(shù)字的開始super("Calculator");//調(diào)用父類中的calculator方法this.setLocation(240,200);//設(shè)置初始化this.setSize(350,300);//設(shè)置窗口大小this.setResizable(true);//設(shè)置位置可重置說明框架大小可被用戶改變this.setLayout(newGridLayout(7,1));//建立GridLayou版面配置格子this.addmyMenu();〃調(diào)用成員方法添加菜單displayField=newJTextField(20);/創(chuàng)建文本對象this.add(displayField);//調(diào)用成員方法并添加對象displayField.setEditable(true);//設(shè)置用戶可編程文本start=true;result=0;lastCommand="=";//初始化變量JPanelpanel0=newJPanel();//聲明對象panel0.setLayout(newGridLayout(1,1));//使用邊框布局指定行數(shù)和列數(shù)JPanelpanel1=newJPanel();panel1.setLayout(newGridLayout(1,3,4,4));//使用邊框布局和流布局指定行數(shù)、列數(shù)和水平垂直間距this.add(panel1);//調(diào)用成員方法并添加panel1button_cancel=newJButton("CE");//聲明按鈕對象button_plusminus=newJButton("+/-");button_yu=newJButton("%");JPanelpanel2=newJPanel();panel2.setLayout(newGridLayout(1,4,4,4));this.add(panel2);button_7=newJButton("7");button_8=newJButton("8");button_9=newJButton("9");button_divide=newJButton("/");JPanelpanel3=newJPanel();panel3.setLayout(newGridLayout(1,4,4,4));this.add(panel3);button_4=newJButton("4");button_5=newJButton("5");button_6=newJButton("6");button_multiply=newJButton("*");JPanelpanel4=newJPanel();panel4.setLayout(newGridLayout(1,4,4,4));this.add(panel4);button_1=newJButton("1");button_2=newJButton("2");button_3=newJButton("3");button_minus=newJButton("-");JPanelpanel5=newJPanel();panel5.setLayout(newGridLayout(1,4,4,4));this.add(panel5);button_0=newJButton("0”);button_point=newJButton(".”);button_equal=newJButton("=");button_plus=newJButton("+");panel1.add(button_cancel);//把按鈕添加到panel上panel1.add(button_plusminus);panel1.add(button_yu);panel2.add(button_7);panel2.add(button_8);panel2.add(button_9);panel2.add(button_divide);panel3.add(button_4);panel3.add(button_5);panel3.add(button_6);panel3.add(button_multiply);panel4.add(button_1);panel4.add(button_2);panel4.add(button_3);panel4.add(button_minus);panel5.add(button_0);panel5.add(button_point);panel5.add(button_equal);panel5.add(button_plus);button_cancel.addActionListener(this);//為按鈕添加監(jiān)聽器button_plusminus.addActionListener(this);button_yu.addActionListener(this);button_7.addActionListener(this);button_8.addActionListener(this);button_9.addActionListener(this);button_divide.addActionListener(this);button_4.addActionListener(this);button_5.addActionListener(this);button_6.addActionListener(this);button_multiply.addActionListener(this);button_1.addActionListener(this);button_2.addActionListener(this);button_3.addActionListener(this);button_minus.addActionListener(this);button_0.addActionListener(this);button_point.addActionListener(this);button_equal.addActionListener(this);button_plus.addActionListener(this);this.addWindowListener(newWinClose());//注冊窗口監(jiān)聽器this.setVisible(true);//設(shè)置按鈕可見}privatevoidaddmyMenu()//菜單的添加{JMenuBarmenubar=newJMenuBar();//菜單對象的創(chuàng)建this.add(menubar);//調(diào)用方法添加菜單JMenum1=newJMenu("標(biāo)準(zhǔn)計算,〃創(chuàng)建菜單對象添加內(nèi)容JMenum2=newJMenu("日期計算”);m1.addActionListener(this);//為菜單項注冊監(jiān)聽器m2.addActionListener(this);menubar.add(m1);//把m1添加到菜單menubar中menubar.add(m2);}publicvoidactionPerformed(ActionEvente)//按鈕的單擊事件處理方法{if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||e.getSource().equals(button_3)||e.getSource().equals(button_4)||e.getSource().equals(button_5)||e.getSource().equals(button_6)||e.getSource().equals(button_7)||e.getSource().equals(button_8)||e.getSource().equals(button_9)||e.getSource().equals(button_0)||e.getSource().equals(button_point)||e.getSource().equals(button_plusminus)||e.getSource().equals(button_cancel)){〃非運算符的處理方法Stringinput=e.getActionCommand();//獲取按鈕的標(biāo)簽或事件,為這個按鈕設(shè)置的命令名,建立同按鈕關(guān)聯(lián)的自動命令字符串if(start)//若輸入以字母開始,在編輯文本區(qū)中建立文本{displayField.setText("");start=false;if(input.equals("+/-"))//若輸入"+/-”則在編輯文本區(qū)中建立文本并得到文本“-”displayField.setText(displayField.getText()+"-");}if(!input.equals("+/-"))//若開始輸入的不是“+/-”,則直接獲得輸入的文本{Stringstr=displayField.getText();if(input.equals("CE”))//清零鍵的實現(xiàn)方法{displayField.setText("0”);start=true;}elsedisplayField.setText(displayField.getText()+input);/輸入清零按鈕,在文本中顯示0,否則顯示輸入的數(shù),并和上一個輸入數(shù)字連接}}elseif(e.getActionCommand()=='標(biāo)準(zhǔn)計算”)〃選項中標(biāo)準(zhǔn)的處理方法{displayField.setText("0");start=true;}elseif(e.getActionCommand()=="日期計算”)〃選項中日期的處理方法{displayField.setText("");start=true;//Stringaa=displayField.setText();//Stringbb=displayField.setText();//SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");//longa=sdf.parse(aa).getTime();//longb=sdf.parse(bb).getTime();//intjulianDay=(int)((a-b)/(1000*60*60*24)+1);//System.out.println(aa+"-"+bb+"="+julianDay+"days");}else//各運算符的識別{Stringcommand=e.getActionCommand();if(start){lastCommand=command;}else{calculate(Double.parseDouble(displayField.getText()));lastCommand=command;start=true;}}}publicvoidcalculate(doublex)〃各運算符的具體運算方法{doubled=0;if(lastCommand.equals("+"))result+=x;elseif(lastCommand.equals("-"))result-=x;elseif(lastCommand.equals("*"))result*=x;elseif(lastCommand.equals("/"))result/=x;elseif(lastCommand.equals("%"))result%=x;elseif(lastCommand.equals("="))result=x;displayField.setText(""+result);}//publicvoidwindowClosing(WindowEvente)//定義windowClosing方法,添加對System.exit(0)的調(diào)用,其余六個方法什么也不做//{//if(e.getSource()==dialog)//dialog.setVisible(false);〃隱藏對話框//else//System.exit(0);//}TOC\o"1-5"\h\z//publicvoidwindowOpened(WindowEvente){}//publicvoidwindowActivated(WindowEvente){}//publicvoidwindowDeactivated(WindowEvente){}//publicvoidwindowClosed(WindowEvente){}//publicvoidwindowIconified(WindowEvente){}//publicvoidwindowDeiconified(WindowEvente){}publicstaticvoidmain(Stringargs[])//定義主方法{Calculatorcalculator=newCalculator();}//classWinCloseimplementsWindowListener/定義一個winclose類實現(xiàn)WindowListener接口//{//publicvoidwindowClosing(WindowEvente)//{//System.exit(0);〃結(jié)束程序運行//}//publicvoidwindowOpened(WindowEvente){}//publicvoidwindowActivated(WindowEvente){}//publicvoidwindowDeactivated(WindowEvente){}//publicvoidwindowClosed(WindowEvente){}//publicvoidwindowIconified(WindowEvente){}//publicvoidwindowDeiconified(WindowEvente){}//}}參考文獻:《java程序設(shè)計項目教程》、《java2核心技術(shù)》、《Java程序設(shè)計案例教程》《Java案例講解》等等。六、總結(jié)與體會總結(jié):通過編寫這個相對復(fù)雜的程序,讓我認識解決實際問題前應(yīng)現(xiàn)建立模型,再通過建立的模型使問題簡單化,從而解決問題。這次編寫的程序大部分是通過調(diào)用各包中的方法來實現(xiàn)的,這也讓我充分理解了包和類調(diào)用的關(guān)系。并且通過實訓(xùn)我了解到String類是字符串常量類,初始化后不能更改;StringBuffer類是字符串緩沖區(qū),可以被修改。布爾型不能轉(zhuǎn)化成其他任何類型等等。在做本項目是時候,會遇到很多小問題,比如說:如何保存輸入的數(shù)字和下一個數(shù)進行加、減、乘、除運算。還有如何判斷它是第幾個輸入的數(shù)

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論