Java課程設(shè)計(jì)報(bào)告
《Java課程設(shè)計(jì)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《Java課程設(shè)計(jì)報(bào)告(29頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 湖湖 南南 農(nóng)農(nóng) 業(yè)業(yè) 大大 學(xué)學(xué)Java 課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)報(bào)告計(jì)算器軟件設(shè)計(jì)計(jì)算器軟件設(shè)計(jì)學(xué)生姓名:學(xué)生姓名: 學(xué)學(xué) 號(hào):號(hào): 年級(jí)專業(yè):年級(jí)專業(yè):指導(dǎo)老師:指導(dǎo)老師: 學(xué)學(xué) 院:院:1目目 錄錄1. 前言前言22概要設(shè)計(jì)概要設(shè)計(jì)3 2.1 開(kāi)發(fā)環(huán)境開(kāi)發(fā)環(huán)境3 2.2 計(jì)算器功能計(jì)算器功能3 2.3 界面設(shè)計(jì)界面設(shè)計(jì)3 2.4 類類 UML 圖圖43. 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)4 3.1 使用的使用的 JAVA 類的說(shuō)明類的說(shuō)明4 3.2 類的主要方法類的主要方法53.2.1 處理按了運(yùn)算符后的計(jì)算處理按了運(yùn)算符后的計(jì)算53.2.2 處理輸入字符處理輸入字符63.2.3 進(jìn)制的轉(zhuǎn)換進(jìn)制的轉(zhuǎn)換6
2、3.2.4 設(shè)計(jì)總體認(rèn)識(shí)設(shè)計(jì)總體認(rèn)識(shí)73.2.5 程序流程圖程序流程圖8 4. 運(yùn)行結(jié)果運(yùn)行結(jié)果85. 測(cè)試分析測(cè)試分析9 5.1 程序運(yùn)行情況程序運(yùn)行情況9 5.2 程序異常處理程序異常處理96. 源程序源程序9參考文獻(xiàn)參考文獻(xiàn)27致致 謝謝272摘要:摘要:該程序是一個(gè)圖形界面的簡(jiǎn)單的 java 計(jì)算器,具有良好的界面,使用人員能快捷簡(jiǎn)單地進(jìn)行操作。即時(shí)準(zhǔn)確地獲得需要的計(jì)算的結(jié)果,充分降低了數(shù)字計(jì)算的難度和節(jié)約了時(shí)間,對(duì)人們的生活有一定的幫助??梢赃M(jìn)行簡(jiǎn)單的四則運(yùn)算(加、減、乘、除,以及開(kāi)平方)但僅限于十進(jìn)制下,還可以進(jìn)行(八進(jìn)制,十進(jìn)制,十六進(jìn)制)之間的相互轉(zhuǎn)換,八進(jìn)制最多可以輸入 19
3、 位數(shù),十進(jìn)制最多可以輸入 18 位數(shù),十六進(jìn)制最多可以輸入 14 位數(shù),backspace 表示退格, clear 表示初始化,sqrt 表示開(kāi)平方,界面為灰白對(duì)稱。關(guān)鍵字:關(guān)鍵字:java、計(jì)算器類、方法、事件1 前言前言隨著科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)已經(jīng)成為我們工作學(xué)習(xí)和生活中不可缺少的工具。文本編輯器是個(gè)人計(jì)算機(jī)最司空見(jiàn)慣的應(yīng)用程序了,在學(xué)習(xí)了 Java語(yǔ)言之后,我決定使用 Java 語(yǔ)言編寫一個(gè)簡(jiǎn)單的計(jì)算器,可以實(shí)現(xiàn)簡(jiǎn)單的運(yùn)算功能,滿足日?;镜墓ぷ鲗W(xué)習(xí)和娛樂(lè)需要。Java 是由 Sun 公司開(kāi)發(fā)的新一代純面向?qū)ο蟮木W(wǎng)絡(luò)編程語(yǔ)言。其目標(biāo)是建立一種在任意種機(jī)器、任一種操作系統(tǒng)的網(wǎng)絡(luò)環(huán)境
4、中運(yùn)行的軟件,實(shí)行所謂的“程序?qū)懸淮?,到處運(yùn)行”的目標(biāo)。正因?yàn)槿绱?,Java 已成為當(dāng)今 Internet上最流行、最受歡迎的一種程序開(kāi)發(fā)語(yǔ)言。Java 開(kāi)發(fā)小組把 Java 按特性分為基本版、移動(dòng)版、企業(yè)版,每個(gè)版本有一個(gè)軟件開(kāi)發(fā)包。Java 基本版本叫 Java 2 標(biāo)準(zhǔn)版(Java 2 Standard Edition,J2SE),它包含建立 Java 應(yīng)用程序或者是 Applet 所需的應(yīng)用程序編程接口(API) 。Java 2 移動(dòng)版(The Java 2 Mobile Edition,J2ME)包含創(chuàng)建無(wú)線 Java 應(yīng)用程序的 API。還有 Java 2 企業(yè)版(The Java
5、 2 Enterprise,J2EE)是 J2SE 的增強(qiáng)版本,包含建立多層架構(gòu)應(yīng)用程序 API。Java 語(yǔ)言是由 C+語(yǔ)言發(fā)展起而來(lái)的,是一種徹底的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。作為一種純面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,它非常適合大型軟件的開(kāi)發(fā)。Java 語(yǔ)言去掉了 C+語(yǔ)言的一些容易引起錯(cuò)誤的特性。Java 語(yǔ)言的特點(diǎn)有:面向?qū)ο蟆⒖缙脚_(tái)、安全性、多線程和圖形功能強(qiáng)。32 概要設(shè)計(jì)概要設(shè)計(jì)2.1 開(kāi)發(fā)環(huán)境開(kāi)發(fā)環(huán)境 開(kāi)發(fā)平臺(tái):Microsoft Windows XP Professional Service Pack 2 開(kāi)發(fā)工具:JBuilder 2007 + JDK 1.6.0_022.2 計(jì)算器功
6、能計(jì)算器功能功能 1:按下數(shù)字鍵在液晶平上會(huì)顯示數(shù)字,這時(shí)計(jì)算器最基本的功能。 功能 2:在任何時(shí)候按下“”鍵,計(jì)算器文本框上的數(shù)字置反號(hào)。 功能 3:第一次按下“運(yùn)算”鍵,再按下數(shù)字鍵,將重新輸入第二個(gè)數(shù)字。再次按下“運(yùn) 算”鍵,將算出前兩個(gè)數(shù)字運(yùn)算的結(jié)果,然后按下數(shù)字,將又重新輸入新的數(shù)字。 功能 4:輸入數(shù)字后,按下“等于”鍵,將仍輸出原來(lái)的數(shù) 輸入運(yùn)算符和第二個(gè)數(shù)字后再按下“=”鍵,將得到二者運(yùn)算的結(jié)果,然后又重復(fù)功能 3 和功能 4 。 功能 5:按下清除“C”鍵,數(shù)據(jù)被全部清楚。2.32.3 界面設(shè)計(jì)界面設(shè)計(jì)圖 2.3 計(jì)算器面板42.4 類類 UML 圖圖ArrayStackCh
7、ar UML 圖如圖 2.3A 所示:ArrayStackDouble UML 圖如圖 2.3B 所示圖 2.4A 圖 2.4B3 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)3.1 計(jì)算器使用的計(jì)算器使用的 Java 類的說(shuō)明類的說(shuō)明類名: This_number_too_big作用: 自定義的異常類,用來(lái)處理計(jì)算結(jié)果溢出 繼承的父類: Exception 類 實(shí)現(xiàn)的接口: 沒(méi)有 class This_number_too_big extends Exception /自定義的一個(gè)結(jié)果溢出異常類5類名: Jsp2003 作用: 主類。繼承的父類: Frame 類實(shí)現(xiàn)的接口: ItemListener 類,ActionL
8、istener 類class Jsp2003 extends Frame implements ItemListener,ActionListener public int number=0,length=18; /number 是用來(lái)記錄輸入的數(shù)字個(gè)數(shù), /length 是用來(lái)設(shè)置在不同進(jìn)制下允許輸入的最多數(shù)字位數(shù),默認(rèn)為十進(jìn) 制 public char mark=n; /設(shè)置運(yùn)算符號(hào)為沒(méi)有即為n,它的值是+-*/ public double data=0; /設(shè)置運(yùn)算數(shù)據(jù)為零 public char ch; /用來(lái)臨時(shí)存放所按按鈕的第一個(gè)字符 public boolean Refresh=
9、false; /設(shè)置 lab 是否要在輸入數(shù)據(jù)的時(shí)候刷新,初始為否 程序的設(shè)計(jì)參考了 Sun Java 網(wǎng)站里的大量實(shí)例,比如 Layout 的使用、Event 的處理、Components 的添加與應(yīng)用等等。其中:public class NewCalc extends JFrame implements ActionListener語(yǔ)句實(shí)現(xiàn)了 ActionListener 接口,因此可以調(diào)用 addActionListener(this)方法對(duì)按鈕進(jìn)行點(diǎn)擊監(jiān)聽(tīng),在下面的 public void actionPerformed(ActionEvent e)方法里面對(duì)各個(gè)點(diǎn)擊事件進(jìn)行處理。3.
10、2 類的主要方法3.2.1 處理按了運(yùn)算符后的計(jì)算: public void js() throws This_number_too_big if (mark=n) mark=ch; / data=Double.parseDouble(lab.getText();Refresh=true; else 6switch (mark) case +: data+=Double.parseDouble(lab.getText(); break; case -: data-=Double.parseDouble(lab.getText(); break; case *: data*=Double.par
11、seDouble(lab.getText(); break; case /: data/=Double.parseDouble(lab.getText(); break; lab.setText(Double.toString(data); mark=ch; Refresh=true; number=lab.getText().length();/ System.out.println(lab.getText();if (dataDouble.MAX_VALUE) throw new This_number_too_big(); 3.2.2 處理輸入字符:if(Refresh=true) la
12、b.setText(0); number=0; Refresh=false; if(lab.getText().charAt(0)=0& lab.getText().length()=1) lab.setText(Character.toString(ch); number+; else if(numberlength) number+;lab.setText(lab.getText()+ch); 3.2.3 八進(jìn)制或十六進(jìn)制轉(zhuǎn)換成十進(jìn)制 I:public String goto_10(String s,long l) /參數(shù) s: 是要轉(zhuǎn)換的字符串,由于輸入的控制,保證了字符串的合法性; /
13、參數(shù) l: 使用來(lái)設(shè)置是將 8 進(jìn)制還是 16 進(jìn)制轉(zhuǎn)換成 10 進(jìn)制,它的有7效值為 8 或 16; String str=s; /用來(lái)轉(zhuǎn)換的字符串 long j=l; /表示進(jìn)制 long lg=0,jing=1;/lg 用來(lái)記錄權(quán)乘和,jing 用來(lái)記錄位權(quán) char cha;/臨時(shí)記錄要轉(zhuǎn)換的字符 for(int i=1;i=str.length();i+) cha=str.charAt(str.length()-i); switch(cha) case 1: lg=lg+1*jing;break; case 2: lg=lg+2*jing;break; case 3: lg=lg+3
14、*jing;break; case 4: lg=lg+4*jing;break; case 5: lg=lg+5*jing;break; case 6: lg=lg+6*jing;break; case 7: lg=lg+7*jing;break; case 8: lg=lg+8*jing;break; case 9: lg=lg+9*jing;break; case A: lg=lg+10*jing;break; case B: lg=lg+11*jing;break; case C: lg=lg+12*jing;break; case D: lg=lg+13*jing;break; cas
15、e E: lg=lg+14*jing;break; case F: lg=lg+15*jing;break; jing*=j; /位權(quán)升一級(jí),為下次使用做好準(zhǔn)備 return Long.toString(lg); /end String goto_10() method 83.2.4 設(shè)計(jì)的總體認(rèn)識(shí) JAVA 設(shè)計(jì)的摘要 JAVA 設(shè)計(jì)的目錄結(jié)構(gòu) JAVA 設(shè)計(jì)的概要和詳細(xì)設(shè)計(jì) JAVA 設(shè)計(jì)的版權(quán)意識(shí) JAVA 設(shè)計(jì)需要編譯的環(huán)境 JAVA 設(shè)計(jì)的實(shí)用性3.2.5 程序流程圖程序流程圖計(jì)算結(jié)果顯示接受用戶輸入是否再次計(jì)算退出是否處理異常圖 3 繪制計(jì)算器方法 PAD 圖開(kāi)始選擇你要計(jì)算運(yùn)行的
16、進(jìn)制 10.8.16十六進(jìn)制八進(jìn)制默認(rèn)十進(jìn)制進(jìn)制轉(zhuǎn)換刷新94 運(yùn)行結(jié)果運(yùn)行結(jié)果圖 4 計(jì)算結(jié)果顯示5 測(cè)試分析測(cè)試分析5.1 程序運(yùn)行情況程序運(yùn)行情況: 程序正常的響應(yīng)按鈕事件,輸入的數(shù)值長(zhǎng)度受變量 length 的限定,進(jìn)行混合四則運(yùn)算的時(shí)候,結(jié)果如果不是很大,可以正常顯示,但如果結(jié)果很大,就可能采用科學(xué)記數(shù)方式,這樣帶來(lái)了進(jìn)制轉(zhuǎn)換時(shí)的麻煩,需要特殊的處理科學(xué)記數(shù)里的 E ,當(dāng)結(jié)果太大的時(shí)候,有可能超出可能表示的最大值, (結(jié)果溢出) ,這個(gè)時(shí)候就要對(duì)結(jié)果進(jìn)行必要的異常處理,我在輸出結(jié)果的方法內(nèi)設(shè)置 if 語(yǔ)句,如果結(jié)果大于某一個(gè)值就拋出一個(gè) This_number_too_big 類型的類
17、,再使用try-catch,捕捉輸出結(jié)果的方法拋出的異常對(duì)象。然后進(jìn)行,重制歸零的處理。 5.2 程序異常處理程序異常處理: 當(dāng)結(jié)果超出 Double.MAX_VALUE 時(shí),將拋出一個(gè) This_number_too_big 類的異常對(duì)象,這個(gè)是我自定義的一個(gè)異常類它繼承自 Exception 類,然后使用 try-catch 去捕捉這個(gè)異常,異常的處理如下: try 10 js(); catch(This_number_too_big e) lab.setText(0); number=0; mark=n; Refresh=false; System.out.println(The num
18、ber is too big); /如果出現(xiàn)異常則初始化效果如同 clear 鍵 6 6 程序清單:程序清單:import java.awt.*;import java.awt.event.*;class This_number_too_big extends Exception / 自定義的一個(gè)結(jié)果溢出異常類/ ActionLintsner 是所有監(jiān)聽(tīng)器的父類,其它監(jiān)聽(tīng)器可以監(jiān)聽(tīng)的事件都可以被它捕獲/ ItemListener 用于捕獲帶有 item 的組件產(chǎn)生的事件,如ComboBox,CheckBox,RadioButton,ToggleButtonclass hejiang exten
19、ds Frame implements ItemListener, ActionListener public hejiang() addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) dispose();System.exit(0); / 給窗口注冊(cè)一個(gè)事件監(jiān)聽(tīng)器,當(dāng)你點(diǎn)了窗口右上方的叉號(hào)時(shí),此方法被調(diào)用);static hejiang mainFrame = new hejiang(); / 創(chuàng)建一個(gè) mainFramestatic Label lab1 = new Label(0);s
20、tatic Label lab = new Label(0);static Panel pnl1 = new Panel(new GridLayout(4, 3, 3, 3); / 創(chuàng)建新的面板.布局管理11static Panel pnl2 = new Panel(new GridLayout(4, 1, 3, 3);static Panel pnl3 = new Panel(new GridLayout(1, 2, 3, 3);static Panel pnl4 = new Panel(new GridLayout(6, 1, 3, 3);static Button bt9 = new B
21、utton(9);static Button bt8 = new Button(8);static Button bt7 = new Button(7);static Button bt6 = new Button(6);static Button bt5 = new Button(5);static Button bt4 = new Button(4);static Button bt3 = new Button(3);static Button bt2 = new Button(2);static Button bt1 = new Button(1);static Button bt0 =
22、 new Button(0);static Button btdot = new Button(.);static Button btequ = new Button(=);static Button btadd = new Button(+);static Button btsub = new Button(-);static Button btmul = new Button(*);static Button btdev = new Button(/);static Button btA = new Button(A);static Button btB = new Button(B);s
23、tatic Button btC = new Button(C);static Button btD = new Button(D);static Button btE = new Button(E);static Button btF = new Button(F);static Checkbox ckb8 = new Checkbox(八進(jìn)制);static Checkbox ckb10 = new Checkbox(十進(jìn)制);static Checkbox ckb16 = new Checkbox(十六進(jìn)制);static Button btc = new Button(clear);s
24、tatic Button btt = new Button(backspace);public int number = 0, length = 18;/ number 是用來(lái)記錄輸入的數(shù)字個(gè)數(shù),length 是用來(lái)設(shè)置在不同進(jìn)制下允許輸入的最多數(shù)字位數(shù),默認(rèn)為十進(jìn)制public char mark = n; / 設(shè)置運(yùn)算符號(hào)為沒(méi)有即為n ,它的值是+ - * /public double data = 0; / 設(shè)置運(yùn)算數(shù)據(jù)為零public char ch; / 用來(lái)臨時(shí)存放所按按鈕的第一個(gè)字符public boolean Refresh = false;/ 設(shè)置 lab 是否要在輸入數(shù)據(jù)的
25、時(shí)候刷新,初始為否public static void main(String args) System.out.println(Starting hejiang.);lab.setAlignment(Label.RIGHT); / 對(duì)齊方式lab.setBackground(Color.lightGray); / 背景色12lab.setForeground(Color.BLUE); / 前景色lab.setFont(new Font(Serief, Font.BOLD, 18);/ 字體設(shè)置lab.setBounds(14, 33, 216, 40);lab1.setAlignment(L
26、abel.RIGHT); / 對(duì)齊方式lab1.setBackground(Color.lightGray); / 背景色lab1.setForeground(Color.BLUE); / 前景色lab1.setFont(new Font(Serief, Font.BOLD, 18);/ 字體設(shè)置lab1.setBounds(14, 75, 216, 40);mainFrame.add(lab);mainFrame.add(lab1);CheckboxGroup grp = new CheckboxGroup();ckb8.setCheckboxGroup(grp);ckb10.setChec
27、kboxGroup(grp);ckb16.setCheckboxGroup(grp);ckb8.setBounds(14, 115, 55, 25); / setBounds()方法是可以設(shè)定控件的大小和位置ckb10.setBounds(69, 115, 55, 25);ckb16.setBounds(124, 115, 65, 25);ckb8.setState(false);ckb10.setState(true);ckb16.setState(false);mainFrame.add(ckb8);mainFrame.add(ckb10);mainFrame.add(ckb16);pnl
28、1.setBounds(18, 180, 120, 150);pnl2.setBounds(144, 180, 40, 150);pnl3.setBounds(14, 140, 170, 36);pnl4.setBounds(190, 140, 40, 190);pnl1.add(bt7);pnl1.add(bt8);pnl1.add(bt9);pnl1.add(bt4);pnl1.add(bt5);pnl1.add(bt6);pnl1.add(bt1);pnl1.add(bt2);pnl1.add(bt3);pnl1.add(bt0);pnl1.add(btdot);pnl1.add(bte
29、qu);pnl2.add(btadd);pnl2.add(btsub);pnl2.add(btmul);pnl2.add(btdev);13pnl3.add(btt);pnl3.add(btc);pnl4.add(btA);pnl4.add(btB);pnl4.add(btC);pnl4.add(btD);pnl4.add(btE);pnl4.add(btF);btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);mainFrame.
30、add(pnl1);mainFrame.add(pnl2);mainFrame.add(pnl3);mainFrame.add(pnl4);mainFrame.setResizable(false); / 窗口可以最小化和關(guān)閉,但是不能被任意改變大小mainFrame.setLayout(null);mainFrame.setSize(240, 350);mainFrame.setTitle(小型計(jì)算器);mainFrame.setVisible(true); / 組件可見(jiàn)ckb8.addItemListener(mainFrame);ckb10.addItemListener(mainFra
31、me);ckb16.addItemListener(mainFrame);/ 把事件聆聽(tīng)者向各個(gè)組鍵注冊(cè)bt1.addActionListener(mainFrame);bt2.addActionListener(mainFrame);bt3.addActionListener(mainFrame);bt4.addActionListener(mainFrame);bt5.addActionListener(mainFrame);bt6.addActionListener(mainFrame);bt7.addActionListener(mainFrame);bt8.addActionList
32、ener(mainFrame);bt9.addActionListener(mainFrame);bt0.addActionListener(mainFrame);btadd.addActionListener(mainFrame);btsub.addActionListener(mainFrame);btmul.addActionListener(mainFrame);btdev.addActionListener(mainFrame);btt.addActionListener(mainFrame);btc.addActionListener(mainFrame);14btdot.addA
33、ctionListener(mainFrame);btequ.addActionListener(mainFrame);btA.addActionListener(mainFrame);btB.addActionListener(mainFrame);btC.addActionListener(mainFrame);btD.addActionListener(mainFrame);btE.addActionListener(mainFrame);btF.addActionListener(mainFrame);/ end main() mothed/ checkbox 事件的處理public
34、void itemStateChanged(ItemEvent e) mark = n;Refresh = false;/ 規(guī)定當(dāng)進(jìn)制轉(zhuǎn)換時(shí)以前輸入的運(yùn)算符失效if (ckb8.getState() = true) btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);bt9.enable(false);bt8.enable(false);btdot.enable(false);btadd.enable(false);btmul.en
35、able(false);btsub.enable(false);btdev.enable(false);btequ.enable(false);/ 在八進(jìn)制的情況下對(duì)有些按件的管理if (length = 18) lab.setText(goto10_8(lab.getText();number = lab.getText().length();if (length = 14) lab.setText(goto_10(lab.getText(), 16L);lab.setText(goto10_8(lab.getText();number = lab.getText().length();/
36、將其他進(jìn)制轉(zhuǎn)換成八進(jìn)制length = 19;/ 在八進(jìn)制下允許輸入數(shù)字個(gè)數(shù)最多為 19 位15if (ckb10.getState() = true) btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);bt9.enable(true);bt8.enable(true);btdot.enable(true);btadd.enable(true);btmul.enable(true);btsub.enable(true);btdev
37、.enable(true);btequ.enable(true);/ 在十進(jìn)制的情況下對(duì)有些控件的管理if (length = 19) lab.setText(goto_10(lab.getText(), 8L);number = lab.getText().length();if (length = 14) lab.setText(goto_10(lab.getText(), 16L);number = lab.getText().length();if (length = 19) lab1.setText(goto_10(lab1.getText(), 8L);number = lab1.
38、getText().length();if (length = 14) lab1.setText(goto_10(lab1.getText(), 16L);number = lab1.getText().length();length = 18;if (ckb16.getState() = true) btA.enable(true);btB.enable(true);btC.enable(true);btD.enable(true);btE.enable(true);btF.enable(true);bt9.enable(true);bt8.enable(true);btdot.enable
39、(false);16btadd.enable(false);btmul.enable(false);btsub.enable(false);btdev.enable(false);btequ.enable(false);/ 在十六進(jìn)制的情況下對(duì)有些按件的管理if (length = 18) lab.setText(goto10_16(lab.getText();number = lab.getText().length();if (length = 19) lab.setText(goto_10(lab.getText(), 8L);lab.setText(goto10_16(lab.getT
40、ext();number = lab.getText().length();/ 將其他進(jìn)制轉(zhuǎn)換成十六進(jìn)制length = 14;/ 在十六進(jìn)制下允許輸入數(shù)字個(gè)數(shù)最多為 14 位/ end itemStateChanged(ItemEvent e) method/ 按鈕事件的處理public void actionPerformed(ActionEvent m) / 鼠標(biāo)點(diǎn)激就觸發(fā)事件監(jiān)聽(tīng)Button btn = (Button) m.getSource();ch = btn.getLabel().charAt(0);deposit(ch);switch (ch) case c: lab.set
41、Text(0);number = 0;mark = n;Refresh = false;break;/ 初始化case 1:enter();break;case 2:enter();break;case 3:enter();17break;case 4:enter();break;case 5:enter();break;case 6:enter();break;case 7:enter();break;case 8:enter();break;case 9:enter();break;case 0: if (Refresh = true) lab.setText(0);number = 0;
42、Refresh = false;if (lab.getText().charAt(0) = 0 & lab.getText().length() = 1)break;if (number length) number+;lab.setText(lab.getText() + ch); elsebreak;break;case A:enter();break;case B:enter();break;case C:enter();break;18case D:enter();break;case E:enter();break;case F:enter();break;case .: if (R
43、efresh = true) lab.setText(0);number = 0;Refresh = false;if (lab.getText().indexOf(.) = -1) number+;lab.setText(lab.getText() + ch); elsebreak;break;case b: if (number = 0)break;else if (-number = 0) lab.setText(0);number = 0; else if (number != 1)lab.setText(lab.getText().substring(0, number);elsel
44、ab.setText(Character.toString(lab.getText().charAt(0);break;case +:try js(); catch (This_number_too_big e) 19lab.setText(0);number = 0;mark = n;Refresh = false;System.out.println(The number is too big);break;/ 如果出現(xiàn)異常則初始化效果如同 clear 鍵case -:try js(); catch (This_number_too_big e) lab.setText(0);number
45、 = 0;mark = n;Refresh = false;System.out.println(The number is too big);break;/ 如果出現(xiàn)異常則初始化效果如同 clear 鍵case *:try js(); catch (This_number_too_big e) lab.setText(0);number = 0;mark = n;Refresh = false;System.out.println(The number is too big);break;/ 如果出現(xiàn)異常則初始化效果如同 clear 鍵case /:try js(); catch (This
46、_number_too_big e) lab.setText(0);number = 0;mark = n;Refresh = false;System.out.println(The number is too big);break;/ 如果出現(xiàn)異常則初始化效果如同 clear 鍵20case =:try js(); catch (This_number_too_big e) lab.setText(0);number = 0;mark = n;Refresh = false;System.out.println(The number is too big);break;/ 如果出現(xiàn)異常則初
47、始化效果如同 clear 鍵/ end actionPerformed(ActionEvent e) method/ 八進(jìn)制或十六進(jìn)制轉(zhuǎn)換成十進(jìn)制 Ipublic String goto_10(String s, long l)/ 參數(shù) s: 是要轉(zhuǎn)換的字符串,由于輸入的控制,保證了字符串的合法性;/ 參數(shù) l: 使用來(lái)設(shè)置是將 8 進(jìn)制還是 16 進(jìn)制轉(zhuǎn)換成 10 進(jìn)制,它的有效值為 8 或 16;String str = s; / 用來(lái)轉(zhuǎn)換的字符串long j = l; / 表示進(jìn)制long lg = 0, jing = 1;/ lg 用來(lái)記錄權(quán)乘和,jing 用來(lái)記錄位權(quán)char cha
48、;/ 臨時(shí)記錄要轉(zhuǎn)換的字符for (int i = 1; i = 16) ch = lg % 16;k = (int) ch;switch (k) case 10:st = A + st;break;case 11:st = B + st;break;case 12:st = C + st;break;case 13:st = D + st;break;case 14:st = E + st;break;case 15:st = F + st;break;default:st = Long.toString(ch) + st;lg = lg / 16;k = (int) lg;switch (
49、k) case 10:st = A + st;break;case 11:st = B + st;23break;case 12:st = C + st;break;case 13:st = D + st;break;case 14:st = E + st;break;case 15:st = F + st;break;default:st = Long.toString(lg) + st;return st;/ end goto10_16() method/ 十進(jìn)制轉(zhuǎn)換成八進(jìn)制?public String goto10_8(String s)/ 參數(shù) s: 是要轉(zhuǎn)換的字符串,由于輸入的控制,
50、保證了字符串的合法性;String str = s;if (str.charAt(0) = -) / 如果有負(fù)號(hào)則出去負(fù)號(hào)str = str.substring(1, str.length() - 1);if (str.indexOf(E) != -1)/ 如果是科學(xué)計(jì)數(shù)值則出去小數(shù)點(diǎn)和 E后面的數(shù)str = str.charAt(0) + str.substring(2, str.indexOf(E);if (str.indexOf(.) != -1)/ 如果有小數(shù)點(diǎn)則出去小數(shù)點(diǎn)及小數(shù)點(diǎn)后面的內(nèi)容str = str.substring(0, str.indexOf(.);lg = Long.
51、parseLong(str);while (lg = j) ch = lg % j;st = Long.toString(ch) + st;lg = lg / j;st = Long.toString(lg) + st;return st;/ end goto10_8() method/ 輸入字符public void enter() if (Refresh = true)24/ 如果已經(jīng)設(shè)置了 運(yùn)算符則在下一次輸入數(shù)據(jù)的時(shí)候要把以前 lab 的內(nèi)容清除掉lab.setText(0);number = 0;Refresh = false;if (lab.getText().charAt(0)
52、= 0 & lab.getText().length() = 1)/ 如果 lab 的內(nèi)容為 0 則,lab 的內(nèi)容將被所輸入的字符代替,否則直接在 lab 的內(nèi)容后面加上所輸入的字符lab.setText(Character.toString(ch);number+; else if (number Double.MAX_VALUE)/ 如果 data 超過(guò) double 類型的最大值則拋出自定義的一個(gè)異常類throw new This_number_too_big();/ end js() methodpublic void answer() throws This_number_too_
53、big / 指定由 method拋出異常if (mark = n) else switch (mark) case +:data += Double.parseDouble(lab.getText();break;case -:data -= Double.parseDouble(lab.getText();break;case *:data *= Double.parseDouble(lab.getText();break;case /:data /= Double.parseDouble(lab.getText();break;lab.setText(Double.toString(dat
54、a);mark = n;if (data Double.MAX_VALUE) / 如果 data 超過(guò) double 類型的最大值則拋出自定義的一個(gè)異常類throw new This_number_too_big();26Refresh = false;number = lab.getText().length();/ end answer() methodString display=;private void deposit(char code)switch (code) case c:display=;break;/ 初始化case +:display=display+code;brea
55、k;case -:display=display+code;break;case *:display=display+code;break;case /:display=display+code;break;case 1:display=display+code;break;case 2:display=display+code;break;case 3:display=display+code;break;case 4:display=display+code;break;case 5:display=display+code;break;case 6:display=display+cod
56、e;break;case 7:display=display+code;break;case 8:27display=display+code;break;case 9:display=display+code;break;case A:display=display+code;break;case B:display=display+code;break;case C: display=display+code; break;case D: display=display+code;break;case E:display=display+code;break;case F:display=
57、display+code;break;lab1.setText(display);/ end class hejiang參考文獻(xiàn)林良信 Java JDK 6 學(xué)習(xí)筆記 劉浦迎 謝春 java 程序設(shè)計(jì)實(shí)用教程 科學(xué)出版社 張白一 崔尚林 面向?qū)ο蟪绦蛟O(shè)計(jì)java 西安電子科技大學(xué)出版社潘浩 李芙玲 Java 程序設(shè)計(jì) 清華大學(xué)出版社致致 謝謝經(jīng)過(guò)一個(gè)學(xué)期的 JAVA 學(xué)習(xí),對(duì) JAVA 編程有了一定的認(rèn)識(shí),在做這個(gè)課程設(shè)計(jì)的時(shí)候,剛開(kāi)始感覺(jué)自己無(wú)從下手,不知道該怎么開(kāi)始,很茫然。最終利用網(wǎng)絡(luò)資源和查閱圖書館的書籍,在傅老師和同學(xué)的指導(dǎo)和討論下,經(jīng)過(guò)一段時(shí)間終于完成了這個(gè)設(shè)計(jì)。當(dāng)程序運(yùn)行結(jié)束看到彈出的計(jì)算器的界面時(shí),感到很欣慰,雖然只是一個(gè)小小的東西,但卻是自己起步的成就,從中學(xué)到了很多書本知識(shí)不能體現(xiàn)的東西,對(duì) JAVA 的學(xué)習(xí)有了一定的興趣。也通過(guò)這次的程序設(shè)計(jì)感覺(jué)到自己平時(shí)對(duì)于編程實(shí)際操作的貧乏,沒(méi)有把書本上的知識(shí)真正的掌握牢固。28
- 溫馨提示:
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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《產(chǎn)品價(jià)值鏈與營(yíng)銷戰(zhàn)略》
- lecture 9(精品)
- Where’s your pen pal from (2)
- (精品)實(shí)驗(yàn)二血清γ球蛋白的分離純化與鑒定by陳蔚文
- 企業(yè)專利風(fēng)險(xiǎn)管理
- 高中記敘文寫作指導(dǎo):寫人要凸顯個(gè)性ppt課件
- 新生兒溶血病的發(fā)病機(jī)理臨床癥狀課件
- 7、艱辛的求索 (2)
- 學(xué)校心理健康教育組織管理課件
- IE七大手法的發(fā)展歷程
- 頸托的正確使用課件
- (精品)電功與電功率復(fù)習(xí)1
- 李曉光-管理學(xué)原理第十三章領(lǐng)導(dǎo)工作概述
- 固體中的相結(jié)構(gòu)
- 智能化酒店系統(tǒng)PPT