




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java課程設(shè)計(jì)設(shè)計(jì)題目 基于JavaJDK的計(jì)算器 設(shè)計(jì)時(shí)間 2017 學(xué)生姓名 學(xué)生學(xué)號(hào) 所在班級(jí) 1402班 指導(dǎo)教師 摘要計(jì)算器在我們的生活中常常會(huì)使用到,本次課程設(shè)計(jì),利用課堂所學(xué)到的知識(shí),通過界面以及其中的邏輯處理,完成了基本的四則運(yùn)算的處理。通過awt包或者swing包中的界面設(shè)計(jì),實(shí)現(xiàn)了通過界面來顯示輸入過程和運(yùn)算結(jié)果,同時(shí)也使設(shè)計(jì)出來的計(jì)算器符合人性化的基本要求。面向?qū)ο蟮乃枷霃暮艽蟪潭壬峡梢宰尦绦虻乃悸犯忧逦铱芍赜眯院芨?。關(guān)鍵詞 java;計(jì)算器;四則運(yùn)算;面向?qū)ο?;?錄一課設(shè)題目及要求.11.1課設(shè)題目描述.11.2基本要求.1二功能描述及設(shè)計(jì)方案.12.1計(jì)算器功能描述.12.2設(shè)計(jì)思想及方案.1三程序說明.33.1界面設(shè)計(jì).33.1.1UI組件創(chuàng)建與初始化.33.1.2在窗體中添加UI組件.43.2添加事件響應(yīng)邏輯.63.3計(jì)算邏輯實(shí)現(xiàn).7四運(yùn)行效果及存在的不足.94.1運(yùn)行效果.104.2存在的不足.10五結(jié)果分析及心得體會(huì)11六參考文獻(xiàn).12七源程序附錄12一.課設(shè)題目及要求1.1課設(shè)題目描述在JavaJDK平臺(tái)上設(shè)計(jì)并實(shí)現(xiàn)一個(gè)基于窗口界面的計(jì)算器1.2基本要求該計(jì)算器可以運(yùn)算兩個(gè)兩位數(shù)的加減乘除運(yùn)算,可以通過點(diǎn)擊窗口的按鍵來實(shí)現(xiàn)所有操作(包括輸入數(shù)字和運(yùn)算符號(hào)以及作為計(jì)算等等),輸入過程及運(yùn)算結(jié)果都要與按鍵所在同一窗口中呈現(xiàn)二功能描述及設(shè)計(jì)方案2.1計(jì)算器功能描述本次課程設(shè)計(jì)的計(jì)算器具有能夠進(jìn)行加、減、乘、除四則基本運(yùn)算的基本功能,并且通過自己的努力為此計(jì)算器添加了兩個(gè)附加的功能:清零和異常處理機(jī)制,即除數(shù)為0以及只單擊運(yùn)算符運(yùn)算的算法錯(cuò)誤,并且能很好的實(shí)現(xiàn)其功能。2.2設(shè)計(jì)思想及方案2.2.1設(shè)計(jì)思想概述要制作一個(gè)計(jì)算器,首先需要知道它由哪些部分組成。調(diào)用具體算法計(jì)算數(shù)值計(jì)算邏 輯界面組件事件響應(yīng)邏 輯界 面響應(yīng)按鈕等到的點(diǎn)擊事件 更新文本框等組件顯示的值 傳遞計(jì)算結(jié)果結(jié)構(gòu)上來說,一個(gè)簡(jiǎn)單的圖形界面,需要由界面組件、組件的事件監(jiān)聽器(響應(yīng)各類事件的邏輯)和具體的事件處理邏輯組成。2.2.2設(shè)計(jì)方案結(jié)構(gòu)圖基本運(yùn)算功能方案圖異常處理機(jī)制功能方案圖運(yùn)行輸入計(jì)算的數(shù)值值單擊運(yùn)算符號(hào),再單擊等于符號(hào)單擊運(yùn)算符號(hào),彈出一個(gè)消息框,提醒錯(cuò)誤輸出結(jié)果YN設(shè)計(jì)好實(shí)現(xiàn)方案后,接下來,我們首先需要制作界面部分。這部分主要的工作就是創(chuàng)建各個(gè)界面組件對(duì)象,對(duì)其進(jìn)行初始化,以及控制各組件之間的層次關(guān)系和布局大小三程序說明3.1界面設(shè)計(jì)與實(shí)現(xiàn)3.1.1 UI 組件創(chuàng)建和初始化(1)、面板 JPanel txtpanel:用于放置文本框 Panel btnpanel: 用于放置按鈕(0-9和+,-,*,/,=) (2)、顯示部分 a.第一個(gè)面板:txtpanel 位置以及排列方式BorderLayout.NORTH txtpanel.add(txtinput):添加文本框到txtpanel面板中 b.第二個(gè)面板:btnpanel 排列方式:setLayout(gl)(3)、基本按鈕 btnpanel.add(b7) btnpanel.add(b8) btnpanel.add(b9); btnpanel.add(multiply) btnpanel.add(b4) btnpanel.add(b5); btnpanel.add(b6) btnpanel.add(divide) btnpanel.add(b1); btnpanel.add(b2) btnpanel.add(b3) btnpanel.add(add); btnpanel.add(b0) .add(bdes) btnpanel.add(equal); btnpanel.add(subtract) 以上是在第二個(gè)面板btnpanelH中添加的0到9和+,-,*,/,=的按鈕。首先我們需要將界面中要用到的 UI 組件作為 Calculator 類的成員變量在一開始聲明。主要代碼如下:/ 繼承一個(gè) JFrame 對(duì)象。JFrame 可以理解為程序的主窗體。public class Calculator extends JFrame implements ActionListener/txtpanel用于放置文本框,btnpanel用于放置按鈕JPanel txtpanel,btnpanel;/創(chuàng)建文本框,用于顯示內(nèi)容 JTextField txtinput;./聲明各個(gè)UI組件對(duì)象并初始化public Calculator()super(基于JavaJDK的計(jì)算器);txtpanel=new JPanel();btnpanel=new JPanel();/ 參數(shù) 25 表明可以顯示 25 列的文本內(nèi)容txtinput=new JTextField(25);/ 設(shè)置文本框不能編輯txtinput.setEditable(false); / 設(shè)置文本框?yàn)橛覍?duì)齊,使輸入和結(jié)果都靠右顯示txtinput.setHorizontalAlignment(JTextField.RIGHT); txtinput.setText();/ 數(shù)字鍵0到9b1=new JButton(1);b2=new JButton(2);b3=new JButton(3);b4=new JButton(4);b5=new JButton(5);b6=new JButton(6);b7=new JButton(7);b8=new JButton(8);b9=new JButton(9);b0=new JButton(0);/ 計(jì)算命令按鈕,加減乘除以及小數(shù)點(diǎn),清除等bdes=new JButton(.);add=new JButton(+);subtract=new JButton(-);multiply=new JButton(*);divide=new JButton(/);clear=new JButton(清 零);equal=new JButton(=);3.1.2 在窗體中添加 UI 組件這個(gè)計(jì)算器有兩個(gè) JPanel JPanel文本框按鈕按鈕什么是 JPanel:JPanel 是一般輕量級(jí)容器。如上圖所示,你可以將其理解為一個(gè)盛放其他 UI 組件的“籃子”。 JPanel 位于javax.swing包中,為面板容器,可以加入到 JFrame 中 , 它自身是個(gè)容器,也可以把其他 component (組件) 加入到 JPanel 中,例如 JButton、JTextArea、JTextField 等。在這個(gè)項(xiàng)目中,兩個(gè) JPanel 分別對(duì)應(yīng)這個(gè)計(jì)算器按鍵除 “清零” 鍵外其他的鍵,另個(gè)面板則是文本框跟 “清零” 鍵。主要代碼如下:/ 創(chuàng)建Jpanel 的兩個(gè)對(duì)象并初始化/txtpanel用于放置文本框,btnpanel用于放置按鈕JPanel txtpanel,btnpanel;./將UI組件添加進(jìn)容器內(nèi)getContentPane().add(txtpanel,BorderLayout.NORTH);txtpanel.add(txtinput);txtpanel.add(clear); / 設(shè)置該容器的布局為四行四列,邊距為5像素gl=new GridLayout(4,4,5,5);btnpanel.setLayout(gl);getContentPane().add(btnpanel); / 將用于計(jì)算的按鈕添加到容器內(nèi)btnpanel.add(b7);btnpanel.add(b8);btnpanel.add(b9);btnpanel.add(multiply);btnpanel.add(b4);btnpanel.add(b5);btnpanel.add(b6);btnpanel.add(divide);btnpanel.add(b1);btnpanel.add(b2);btnpanel.add(b3);btnpanel.add(add);btnpanel.add(b0);btnpanel.add(bdes);btnpanel.add(equal);btnpanel.add(subtract);/ 設(shè)置主窗口大小setSize(400,250);setVisible(true);/ 設(shè)置主窗口出現(xiàn)在屏幕上的位置setLocation(300,200); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);布局結(jié)束后,就是計(jì)算器的難點(diǎn):事件處理程序3.2、添加事件響應(yīng)邏輯對(duì)于計(jì)算器而言,涉及到的事件響應(yīng)邏輯主要有:數(shù)字鍵、加減乘除運(yùn)算、等于以及清除主要代碼如下:/綁定事件響應(yīng)邏輯到各個(gè)UI組件上public void btnCancelActionPerformed() txtinput.setText();public void actionPerformed(ActionEvent e) tryObject obj=e.getSource();if(obj=b1)txtinput.setText(txtinput.getText()+1);else if(obj=b2)txtinput.setText(txtinput.getText()+2);else if(obj=b3)txtinput.setText(txtinput.getText()+3);else if(obj=b4)txtinput.setText(txtinput.getText()+4);else if(obj=b5)txtinput.setText(txtinput.getText()+5);else if(obj=b6)txtinput.setText(txtinput.getText()+6);else if(obj=b7)txtinput.setText(txtinput.getText()+7);else if(obj=b8)txtinput.setText(txtinput.getText()+8);else if(obj=b9)txtinput.setText(txtinput.getText()+9);else if(obj=b0)txtinput.setText(txtinput.getText()+0);else if(obj=bdes)txtinput.setText(txtinput.getText()+.);else if(obj=add) d1=Double.parseDouble(txtinput.getText();s=+;txtinput.setText();else if(obj=subtract) d1=Double.parseDouble(txtinput.getText();s=-;txtinput.setText(); else if(obj=divide) d1=Double.parseDouble(txtinput.getText();s=/;txtinput.setText();else if(obj=multiply) d1=Double.parseDouble(txtinput.getText();s=*;txtinput.setText();3.3、計(jì)算邏輯的實(shí)現(xiàn)計(jì)算的邏輯要針對(duì)輸入的不同運(yùn)算符來對(duì)操作數(shù)進(jìn)行運(yùn)算,同時(shí)還要考慮到除數(shù)為0這種不合理的以及只單擊運(yùn)算符運(yùn)算的算法錯(cuò)誤,。主要代碼如下:double d1;/操作數(shù)1double d2;/ 操作數(shù)2String s;/ 運(yùn)算符./計(jì)算邏輯else if(obj=equal) if(s=+) d2=d1+Double.parseDouble(txtinput.getText();/顯示結(jié)果txtinput.setText(Double.toString(d2);else if(s=-) d2=d1-Double.parseDouble(txtinput.getText();/顯示結(jié)果txtinput.setText(Double.toString(d2);else if(txtinput.equals(txtinput.getText()&obj=subtract) d2=d1-Double.parseDouble(txtinput.getText();/顯示結(jié)果txtinput.setText(Double.toString(d2); else if(s=/) if(Double.parseDouble(txtinput.getText()=0)/ 除數(shù)為零:當(dāng)除數(shù)為零時(shí),彈出“除數(shù)不能為零”窗體JOptionPane.showMessageDialog(this, 除數(shù)不能為0);d2=d1/Double.parseDouble(txtinput.getText();txtinput.setText(Double.toString(d2);else if(s=*) d2=d1*Double.parseDouble(txtinput.getText();txtinput.setText(Double.toString(d2); catch(Exception ouch)/錯(cuò)誤輸入:當(dāng)只單擊運(yùn)算符時(shí),彈出“錯(cuò)誤輸入”窗體 JOptionPane.showMessageDialog(null,錯(cuò)誤輸入,error,JOptionPane.ERROR_MESSAGE); 四效果及存在的問題4.1運(yùn)行效果(1)加法運(yùn)算功能:例如12+14=先輸入12,在按+,在輸入14在按=,結(jié)果如下圖(2)減法運(yùn)算功能:例如26-14=先輸入26,在按-,在輸入14,在按=,結(jié)果如下圖(3)乘法運(yùn)算功能:例如25*15=先輸入25,在按*,在輸入15,在按=,結(jié)果如下圖(4)除法運(yùn)算功能:例如1255=先輸入125,在按,在輸入5,在按=,結(jié)果如下圖(5) “清零按鈕”數(shù)據(jù)清除功能清除前清除后(6). 異常處理機(jī)制當(dāng)除數(shù)為0時(shí)當(dāng)只單擊運(yùn)算符號(hào)運(yùn)算時(shí)4.2本計(jì)算器存在的不足在完成課程設(shè)計(jì)的期間,參閱了相關(guān)的書籍并在網(wǎng)絡(luò)上查找相關(guān)的資料,對(duì)實(shí)現(xiàn)這個(gè)設(shè)計(jì)提供了很大的幫助。由于目前知識(shí)方面的匱乏,本次課程設(shè)計(jì)的計(jì)算器沒能夠順利實(shí)現(xiàn)開方運(yùn)算、正余弦正切運(yùn)算、階乘運(yùn)算,進(jìn)制轉(zhuǎn)換等高級(jí),更復(fù)雜的數(shù)據(jù)計(jì)算功能,希望在以后的時(shí)間里豐富這方面的知識(shí),以便更好的運(yùn)用。五結(jié)果分析及心得體會(huì)在這次課程設(shè)計(jì)中,我利用課堂所學(xué)的知識(shí)和通過查閱課外資料,順利的實(shí)現(xiàn)了計(jì)算器的各個(gè)功能,并對(duì)其進(jìn)行按鍵的排版、監(jiān)聽、處理、運(yùn)算等各個(gè)步驟的親力親為,基本上完成了任務(wù)書上的各項(xiàng)內(nèi)容。雖然在這次的課程設(shè)計(jì)的過程和結(jié)果中,也存在一些的不足, 但通過分析和解決,我也收獲了很多。其次,在本次的課程設(shè)計(jì)中,通過與同學(xué)們的交流,解決了不少長(zhǎng)久以來困擾我的java語言問題,讓我深切體會(huì)到了大家共同努力的重要性。在設(shè)計(jì)這個(gè)系統(tǒng)的時(shí)候,我查閱了很多相關(guān)的書籍,并通過網(wǎng)絡(luò)解決了不少問題。通過這次課程設(shè)計(jì),我對(duì)eclipse的開發(fā)環(huán)境和使用也有了更多的認(rèn)識(shí)和了解,讓我對(duì)java語言的認(rèn)識(shí)又加深了一步,不僅使我學(xué)會(huì)了如何查閱資料,同時(shí)也讓我發(fā)現(xiàn)了網(wǎng)絡(luò)這個(gè)好老師,總之收獲了很多。六參考文獻(xiàn)1雍俊海Java程序設(shè)計(jì)教程(第三版)清華大學(xué)出版社2(美)??藸栔愱基i譯Java編程思想(第4版).機(jī)械工業(yè)出版社3李興華Java從入門到精通人民郵電出版社2010-4-1版4溫沿書Java入門與實(shí)戰(zhàn)教程人民郵電出版社2010-03-01版5李鐘尉Java范例完全自學(xué)手冊(cè)人民郵電出版社2009-10-1七源程序附錄package com.demo1;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Calculator extends JFrame implements ActionListenerJPanel txtpanel,btnpanel;/txtpanel用于放置文本框,btnpanel用于放置按鈕JTextField txtinput;JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bdes,multiply,divide,add,subtract,clear,equal;GridLayout gl;double d1;/操作數(shù)1double d2;/ 操作數(shù)2String s;/ 運(yùn)算符/聲明各個(gè)UI組件對(duì)象并初始化public Calculator()super(基于JavaJDK的計(jì)算器);txtpanel=new JPanel();btnpanel=new JPanel();txtinput=new JTextField(25);txtinput.setEditable(false);/ 設(shè)置文本框不能編輯txtinput.setHorizontalAlignment(JTextField.RIGHT); / 設(shè)置文本框?yàn)橛覍?duì)齊,使輸入和結(jié)果都靠右顯示txtinput.setText();b1=new JButton(1);b2=new JButton(2);b3=new JButton(3);b4=new JButton(4);b5=new JButton(5);b6=new JButton(6);b7=new JButton(7);b8=new JButton(8);b9=new JButton(9);b0=new JButton(0);bdes=new JButton(.);add=new JButton(+);subtract=new JButton(-);multiply=new JButton(*);divide=new JButton(/);clear=new JButton(清 零);equal=new JButton(=);/清除鍵的邏輯(Clear)clear.addActionListener(new ActionListener()/注冊(cè)監(jiān)聽 public void actionPerformed(ActionEvent argh) btnCancelActionPerformed(););b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);b0.addActionListener(this);bdes.addActionListener(this);multiply.addActionListener(this);divide.addActionListener(this);add.addActionListener(this);subtract.addActionListener(this);equal.addActionListener(this);/將UI組件添加進(jìn)容器內(nèi)getContentPane().add(txtpanel,BorderLayout.NORTH);txtpanel.add(txtinput);txtpanel.add(clear);gl=new GridLayout(4,4,5,5);btnpanel.setLayout(gl);getContentPane().add(btnpanel);btnpanel.add(b7);btnpanel.add(b8);btnpanel.add(b9);btnpanel.add(multiply);btnpanel.add(b4);btnpanel.add(b5);btnpanel.add(b6);btnpanel.add(divide);btnpanel.add(b1);btnpanel.add(b2);btnpanel.add(b3);btnpanel.add(add);btnpanel.add(b0);btnpanel.add(bdes);btnpanel.add(equal);btnpanel.add(subtract);setSize(400,250);setVisible(true);setLocation(300,200);/ 設(shè)置主窗口出現(xiàn)在屏幕上的位置setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);/注冊(cè)各個(gè)監(jiān)聽器,即綁定事件響應(yīng)邏輯到各個(gè)UI組件上public void btnCancelActionPerformed() txtinput.setText();public void actionPerformed(ActionEvent e) tryObject obj=e.getSource();if(obj=b1)txtinput.setText(txtinput.getText()+1);else if(obj=b2)txtinput.setText(txtinput.getText()+2);else if(obj=b3)txtinput.setText(txtinput.getText()+3);else if(obj=b4)txtinput.setText(txtinput.getText()+4);else if(obj=b5)txtinput.setText(txtinput.getText()+5);else if(obj=b6)txtinput.setText(txtinput.getText()+6);else if(obj=b7)txtinput.setText(txtinput.getText()+7);else if(obj=b8)txtinput.setText(txtinput.getText()+8);else if(obj=b9)txtinput.setText(txtinput.getText()+9);else if(obj=b0)txtinput.setText(txtinput.getText()+0);else if(obj=bdes)txtinput.setText(txtinput.getText()+.);else if(obj=add) d1=Double.parseDouble(txtinput.getText();s=+;txtinput.setText();else if(obj=subtract) d1=Double.parseDouble(txtinput.getText();s=-;txtinput.setText(); else if(obj=divide) d1=Double.parseDouble(txtinput.getT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生殖整形試題答案及
- 激光技術(shù)工程師證書考試方法及試題答案
- 系統(tǒng)規(guī)劃與管理師考試的影響因素分析試題及答案
- 組織知識(shí)研討的試題及答案
- 醫(yī)院文秘考試試題及答案
- 考試流程與注意事項(xiàng)稅務(wù)師試題及答案
- 礦山巖體力學(xué)試題及答案
- 理解科技政策對(duì)專利創(chuàng)新活動(dòng)的激勵(lì)與引導(dǎo)作用試題及答案
- 系統(tǒng)規(guī)劃與管理師考試中的應(yīng)變能力與臨場(chǎng)發(fā)揮技巧的培養(yǎng)方向試題及答案
- 職高汽修面試題及答案
- DB15-T 3967.3-2025 氣候可行性論證技術(shù)規(guī)范 第3部分:水利工程
- Module 9 Friendship 大單元整體教學(xué)設(shè)計(jì)2023-2024學(xué)年外研(新標(biāo)準(zhǔn))版八年級(jí)下冊(cè)
- 《人工智能技術(shù)基礎(chǔ)》課件-第五章 深度學(xué)習(xí)
- 2025年戶外廣告牌租賃合同(合同范本)
- 2025年第六屆美麗中國(guó)全國(guó)國(guó)家版圖知識(shí)競(jìng)賽測(cè)試題庫及答案
- 2025年project使用培訓(xùn)標(biāo)準(zhǔn)課件
- 文獻(xiàn)檢索與科技論文寫作考核大綱
- 湖北淺圓倉滑模施工方案
- 第二章第二節(jié)氯氣及其化合物-氯氣制備及性質(zhì)微型化實(shí)驗(yàn)改進(jìn)設(shè)計(jì) 教學(xué)設(shè)計(jì) 2024-2025學(xué)年高一上學(xué)期化學(xué)人教版(2019)必修第一冊(cè)
- 【MOOC】《研究生英語科技論文寫作》(北京科技大學(xué))中國(guó)大學(xué)MOOC慕課答案
- 《PCR技術(shù)簡(jiǎn)介》PPT課件.ppt
評(píng)論
0/150
提交評(píng)論