




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、java程序設(shè)計(jì)報(bào)告-一設(shè)計(jì)一個(gè)計(jì)算器課程設(shè)訃訂的設(shè)計(jì)一個(gè)基于Swi隅的計(jì)算器應(yīng)用程序,完成普通的算術(shù)運(yùn)算。課程設(shè)計(jì)要 求1. 設(shè)計(jì)的訃算器是基于Swing的,可以完成加減乘除和取余運(yùn)算。2. 增加計(jì)算器的日期計(jì)算功能,能夠計(jì)算兩個(gè)日期之間相距的天數(shù)。(要判斷 鍵入的日期格式是否正確,并能正確處理按鈕動(dòng)作事件,同時(shí)能夠得到正確的訃算 結(jié)果)設(shè)計(jì)要點(diǎn)主要練習(xí)使用布局管理器設(shè)計(jì)一個(gè)訃算器的界面,并使用事件監(jiān)聽器處理數(shù)日期的轉(zhuǎn)換按鈕來(lái)選據(jù)的輸入,完成相關(guān)的訃算。在面板上可以增加一個(gè)算術(shù) /擇是普通訃算還是日期計(jì)算。以及增加一個(gè)清零的按鈕CE,用以將顯示結(jié)果的 單行文本域清空,同時(shí)將各個(gè)參數(shù)設(shè)置為默認(rèn)
2、值。二、總體方案設(shè)計(jì)日常生活中經(jīng)常需要用到計(jì)算器,比如科學(xué)計(jì)算,數(shù)值計(jì)算,會(huì)計(jì)業(yè)務(wù)等等, 在Applet中實(shí)現(xiàn)一個(gè)精巧的訃算器,可以讓用戶的操作也更方便和快捷。本項(xiàng)LI 需要實(shí)現(xiàn)一個(gè)具有四則運(yùn)算的計(jì)算器,能夠?qū)崿F(xiàn)基本的加、減、乘、除運(yùn)算,以及 其它的輔助功能;界面簡(jiǎn)潔適用;要提供主要的設(shè)計(jì)思路、類的設(shè)計(jì),本次設(shè)計(jì)添加 轉(zhuǎn)進(jìn)制等功能。本應(yīng)用程序繼承自框架(frame),此程序使用frame布局管理器bor de layout,將 單行文本加入相應(yīng)區(qū)域,包含各種按紐的面板buttonpanel加入相應(yīng)區(qū)域還可以將 進(jìn)制轉(zhuǎn)換的面板與單行文本框放一塊包含各種按紐的面板buttonpanel采用行 列的
3、網(wǎng)格布局,然后將數(shù)字按鈕和運(yùn)算符按鈕以及控制按鈕添加到面板中,同時(shí)注 冊(cè)按鈕事件監(jiān)聽器。布局設(shè)計(jì)好后再添加按鈕事件。對(duì)于此程序要考慮到點(diǎn)擊加、減、乘、除按鈕 時(shí)是否有點(diǎn)擊數(shù)字按鈕,如果是第一次點(diǎn)擊數(shù)字按鈕或者是點(diǎn)擊數(shù)字按鈕前點(diǎn)擊了 加、減、乘、除按鈕則直接把數(shù)字按鈕的數(shù)值設(shè)置到文本框中,否則則應(yīng)把文本框 中的內(nèi)容加上你所點(diǎn)擊按鈕的數(shù)值設(shè)置到文本框中。四、程序的調(diào)試與運(yùn)行結(jié)果說(shuō)明程序功能實(shí)現(xiàn):使用swing組件和awt圖形用戶界面以及BroadLayout布局管理器。通過(guò)在按鈕的單擊事件處理方法中調(diào)用類的成員方法calculator ()來(lái)進(jìn)行簡(jiǎn)易計(jì)算器的各種運(yùn)算,并正確實(shí)現(xiàn)運(yùn)算功能。程序可以實(shí)
4、現(xiàn)加、減、乘、除、取余等運(yùn)算,并且可進(jìn)行負(fù)數(shù)的運(yùn)算,設(shè)置CE清零按鈕可進(jìn)行清零運(yùn)算。添加菜單條,列出標(biāo)準(zhǔn)計(jì)算、日期計(jì)算菜單選項(xiàng),并別實(shí)現(xiàn)標(biāo)準(zhǔn)計(jì)算且整個(gè)程序?qū)υ捒蚩蓪?shí)現(xiàn)最小化、最大化、關(guān)閉。運(yùn)行結(jié)果 截圖:五、程序代碼源代碼:import javaawtimport javaawt.event*;import javax swing *;public class Calculator extends Frame implements ActionListener/, WindowListener /定義一個(gè)繼承Frame主程序類并實(shí)現(xiàn)按鈕監(jiān)聽器和窗口 監(jiān)聽器接口 private Containe
5、r container;/定義一個(gè)私有的抽象組件類 containerprivate GridBagLayout layout;/定義一個(gè)私有的面板類private GridBagConstraints constraints;/定義一個(gè)私有類用于添加和刪 除private JTextField displayField; /計(jì)算結(jié)果顯示區(qū)private String lastCommand; 保存+,-,*,/,二命令 0private double result; /保存計(jì)算結(jié)果private boolean start; /判斷是否為數(shù)字的開始private JMenuBar menub
6、ar: /定義類用于放置菜單Dialog dialog;/用于對(duì)話框的設(shè)置private JButtonbutton_plusminus, button_cancel, button_l, button_2,button_3, button_4, button_5, button_6, button_7, button_8, button_9, butto n_0,button_plus, button_minus, button_multiply, button_divide, button_point, button_equal, button_yu;/定 義按鈕public Calcul
7、ator() /構(gòu)造方法設(shè)置布局、為按鈕注冊(cè)事件監(jiān)聽器super (Calculator) ;/調(diào)用父類中的 calculator 方法this. setLocation(240, 200);設(shè)置初始化this. setSize (350, 300) ;/設(shè)置窗口大小this. setResizable(true) ;/設(shè)置位置可重置說(shuō)明框架大小可被用戶改變this. setLayout (new GridLayout (7, 1) ;/建立 GridLayou 版面配置格子this. addmyMenu() ; /調(diào)用成員方法添加菜單 disp 1 ayFie 1 d=newJTextFie
8、ld(20) ;/創(chuàng)建文本對(duì)象this. add(displayField);調(diào)用成員方法并添加對(duì)象displayField. setEditable(true) ;/設(shè)置用戶可編程文本 start=true;result二0;lastCommand =二;/初始化變量JPanel panelO=new JPanel () ;/聲明對(duì)象pane 10. setLayout (new GridLayout (1, 1) ;/使用邊框布局指定行數(shù)和列數(shù)JPanel panell=new JPanel(); panel1. setLayout(new GridLayout(1, 3, 4, 4):/
9、 使用邊框布局和流布局指定行數(shù)、列數(shù)和水平垂直間距this, add (panel 1) ;/調(diào)用成員方法并添加panel 1button_cancel=new JButton(CE) ;/聲明按鈕對(duì)象 button_plusminus=new JButton(+/-) ; button_yu=new JButtonC%);JPanel panel2=new JPanel(); pane12 setLayout(new GridLayout(1, 4, 4, 4); this add(panel2);button_7=new JButton(7); button_8=new JButton(8
10、); button_9=newJButton(9); button_divide=new JButton(/); JPanel panel3=new JPanel(); panel3 setLayout(new GridLayout(1, 4, 4, 4);this add(panel3);button_4=new JButton(4) ; button_5=new JButton(V) ; button_6=newJButton(6); button_mu 11ip 1 y=new JButton(V) ; JPanel panel4=newJPanel () ; panel4. setLa
11、yout (new GridLayout (1, 4, 4, 4);this add(panel4);button二new JButton(T) ; button_2=new JButton(2) ; button_3=newJButton(3); button_minus=new; JPanel panel5=new JPanel():panel5 setLayout(new GridLayout(1, 4, 4, 4); this add(panel5); button_0=new JButton(0);button_point=new JButton(z/);button_equa 1
12、=new JButton(,/=,/);button_plus=new JButton(+) ; panel 1. add(button_cancel) ;/把按鈕添加到 panel 上panel1. add(button_plusminus); panel1 add(button_yu);pane12 add(button_7);pane12 add(button_8);pane12 add(button_9);pane12 add(button_divide);panel3. add(button_4);pane13 add(button_5);pane13 add(button_6);p
13、ane13 add(button_multiply); panel4. add(button_l);pane14 add(button_2);pane14 add(button_3);panel4. add(button_minus);paneld add(button_0);panel5 add(button_point);paneld add(button_equal);paneld add(button_plus);button_cancel. addActionListener (this) ;/為按鈕添加監(jiān)聽器 button_plusminus addActionListener (
14、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_mult
15、iply. addActionListener(this);button_1 addActionListener(this); button_2 addActionListener(this); button.3. addActionListener(this); buttonminus addActionListener(this); button_0. addActionListener(this); button_point addActionListener(this); button_equa1. addActionListener(this);button_plus addActi
16、onListener(this);this. addWindowListener (new WinClose () ; /注冊(cè)窗口監(jiān)聽器this. setVisible (true) ;/設(shè)置按鈕可見private void addmyMenu() /菜單的添加JMenuBar menubar二new JMenuBar () : /菜單對(duì)象的創(chuàng)建this, add (menubar) ;/調(diào)用方法添加菜單JMenu ml二new JMenu(標(biāo)準(zhǔn)訃算);/創(chuàng)建菜單對(duì)象添加內(nèi)容JMenu m2二new JMenu C H 期計(jì)算”);ml. addActionListener (this) ;/
17、為菜單項(xiàng)注冊(cè)監(jiān)聽器m2. addActionListener (this);menubar. add (ml) ;/把 ml 添加到菜單 menubar 中menubar add(m2);public void actionPerformed(ActionEvent e) 按鈕的單擊事件處理方法if(e. getSource() equals(button_l)I e. getSource() equals(button_2)Ie. getSource() equals(button_3) e. getSource() equals(button_4)Ie. getSource () equa
18、ls (button_5)e. getSource ()equals (button_6)ie. getSource () equals (button_7)ie. getSource ()equals (button_8)Ie. getSource () equals (button_9)e. getSource ()equals (buttonO)Ie. getSource() equals(button_point)I e. getSource() equals(button_plus minus) I e. getSource () equals (button_cancel)/非運(yùn)算
19、符的處理方法String input二e. getActionCommand () ;/獲取按鈕的標(biāo)簽或事件,為這個(gè)按鈕 設(shè)置的命令名,建立同按鈕關(guān)聯(lián)的自動(dòng)命令字符吊辻(start)/若輸入以字母開始,在編輯文本區(qū)中建立文本displayField. setText( “);start二false;辻(input, equalsC+/-0)/若輸入”則在編輯文本區(qū)中建立文本并得到文本 一 displayField setText (displayField getText ()+一);辻(! input, equals(+/)/若開始輸入的不是“+/-”,則直接獲得輸入的 文本String s
20、tr=displayField. getText();辻(input, equals (CE)清零鍵的實(shí)現(xiàn)方法displayField. setText(O);start=true;elsedisplayField. setText (displayField. getText ()+input) ;/輸入清零按鈕,在文本中顯示0,否則顯示輸入的數(shù),并和上一個(gè)輸入數(shù)字連接else if (e. get Act ionCommand ()=標(biāo)準(zhǔn)計(jì)算)/選項(xiàng)中標(biāo)準(zhǔn)的處理方法displayField. setText (0);start二true;else if (e. getActionComma
21、nd()二二日期計(jì)算)/選項(xiàng)中日期的處理方法displayField. setText (z/ ”);start二true;/String aa = displayField. setText() ; /String bb = displayField. setText(); /Simp1eDateFormat sdf = newS i mp1eDat eFormat(yyyy-MM-dd);/long a = sdf.parse(as)getTime(); /long b = sdf. parse(bb)getTime(): /int julianDay = (int) (a - b) /(
22、1000*60*60*24)+1);/System .out. println(aa + 一 + bb + 二+ julianDay + days);else 各運(yùn)算符的識(shí)別String command=e getActionCommand(); if (start)lastCommand二command;elsecalculate(Double parseDouble(displayField getText();1a s tCommand=c ommand;start=true; public void calculate (double x) /各運(yùn)算符的具體運(yùn)算方法double d二0
23、;if (lastCommandequals(+) result +二 x;else if (lastCommandequals(-) result -二x;else if (lastCommandequals(*) result *=x;else if (lastCommandequals(/) result /二x;else if (lastCommand.equals(%)result %=x;else if (lastCommandequals(二)result=x;displayField setText(+ result);/public void windowClosing(Wi
24、ndowEvent e)/定義 windowClosing 方法, 添加對(duì)System, exit (0)的調(diào)用,其余六個(gè)方法什么也不做/if (e. getSource ()二二dialog)/dialog. setVisible (false); 隱藏對(duì)話框/else/System, exit (0);/public void windowOpened(WindowEvent e) /public void windowActivated(WindowEvent e) /public void windowDeactivated(WindowEvent e) /public void wi
25、ndowClosed(WindowEvent e) /public void windowlconified(WindowEvent e) /public void windowDeiconified(WindowEvent e) public static void main(String args)/定義主方法 Calculator calculator=new Calculator (); /class WinClose implements WindowListener/定 義一個(gè) winclose 類實(shí)現(xiàn) WindowListener 接口 /public void windowCl
26、osing(WindowEvent e) /System, exit (0) ; /結(jié)束程序運(yùn)行/public void windowOpened(WindowEvent e) /public void windowActivated(WindowEvent e) /public void windowDeactivated(WindowEvent e) /public void windowClosed(WindowEvent e) /public void windowlconified(WindowEvent e) /public void windowDeiconified(Windo
27、wEvent e) /參考文獻(xiàn):java程序設(shè)計(jì)項(xiàng)目教程、java2核心技術(shù)、Java程序設(shè)計(jì)案例教 程Java案例講解等等。六、總結(jié)與體會(huì)總結(jié):(1) 通過(guò)編寫這個(gè)相對(duì)復(fù)雜的程序,讓我認(rèn)識(shí)解決實(shí)際問(wèn)題前應(yīng)現(xiàn)建立模型, 再通過(guò)建立的模型使問(wèn)題簡(jiǎn)單化,從而解決問(wèn)題。(2) 這次編寫的程序大部分是通過(guò)調(diào)用各包中的方法來(lái)實(shí)現(xiàn)的,這也讓我充分 理解了包和類調(diào)用的關(guān)系。(3) 并且通過(guò)實(shí)訓(xùn)我了解到String類是字符串常量類,初始化后不能更改;StringBuffer類是字符串緩沖區(qū),可以被修改。布爾型不能轉(zhuǎn)化成其他任何類 型等等。在做本項(xiàng)LI是時(shí)候,會(huì)遇到很多小問(wèn)題,比如說(shuō):如何保存輸入的數(shù)字和下一 個(gè)數(shù)進(jìn)行加、減、乘、除運(yùn)算。還有如何判斷它是第兒個(gè)輸入
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 社工服務(wù)項(xiàng)目合同
- 工程承包和項(xiàng)目咨詢合同
- 工業(yè)廠房買賣合同協(xié)議書
- 民間借貸擔(dān)保人合同
- 0 的認(rèn)識(shí)與加減法(教學(xué)設(shè)計(jì))2024-2025學(xué)年一年級(jí)上冊(cè)數(shù)學(xué)人教版
- 《12 晝與夜》作業(yè)設(shè)計(jì)方案-2024-2025學(xué)年二年級(jí)上冊(cè)科學(xué)教學(xué)設(shè)計(jì) 粵教粵科版
- 綏化學(xué)院《外科學(xué)總論》2023-2024學(xué)年第二學(xué)期期末試卷
- 大連海洋大學(xué)《工程力學(xué)及機(jī)械設(shè)計(jì)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 銅陵學(xué)院《國(guó)際貿(mào)易綜合實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧夏工業(yè)職業(yè)學(xué)院《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 【女性勞動(dòng)力就業(yè)歧視問(wèn)題探究11000字(論文)】
- 2024年江蘇農(nóng)牧科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)含答案
- 小學(xué)二年級(jí)語(yǔ)文下冊(cè)《古詩(shī)二首》課件
- 綠色供應(yīng)鏈管理培訓(xùn)
- 針刺傷的預(yù)防和處理
- 《常見的地貌類型》課件
- 幼兒園小班春季傳染病預(yù)防
- 人教鄂教版小學(xué)科學(xué)六年級(jí)下冊(cè)全冊(cè)教案
- 2024年國(guó)家公務(wù)員考試行政職業(yè)能力測(cè)驗(yàn)真題
- 銷售人員工作匯報(bào)模板
- 醫(yī)學(xué)檢驗(yàn)、醫(yī)學(xué)影像檢查結(jié)果互認(rèn)制度測(cè)試題
評(píng)論
0/150
提交評(píng)論