




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、.課程設(shè)計報告程序設(shè)計語言-JAVA 開課院系:經(jīng)濟管理學(xué)院班 級: 學(xué)生姓名: 學(xué) 號: 2011.12 目 錄一、課設(shè)任務(wù)及要求- - 3二、系統(tǒng)分析- - 3三、系統(tǒng)總體設(shè)計或詳細(xì)設(shè)計- 4 四、程序代碼- 5五、調(diào)試和測試記錄以及運行結(jié)果展示- 10六、收獲體會- 15JAVA語言課程設(shè)計報告一、設(shè)計任務(wù)/*將下列程序,改造成算器,要求1 增加乘、除、減法運算2 改正現(xiàn)行的近似計算,即現(xiàn)在用7.6+7.8=15.39999999這個問題3 (選作)進行乘方、開方、取模運算4 (選作)進行統(tǒng)計功能開發(fā),功能自定義。比如多個數(shù)的平均值求法等5 (選作)實現(xiàn)二進制運算二、系統(tǒng)分析 第一步:
2、對于此計算器程序,首先要設(shè)計其GUI界面,總體界面有一個文本框,15個按鈕,總體界面用BorderLayout布局。第二步:本應(yīng)用程序繼承自框架類(Frame),此程序使用Frame布局管理器BorderLayout,將單行文本框加入到“North”區(qū)域,包含各種按鈕加入到“Center”區(qū)域,包含各種按鈕的面板采用n行n列的網(wǎng)格布局,然后將數(shù)字按鈕和運算符按鈕添加到面板中。同時注冊按鈕事件監(jiān)聽器。如:b = new JButton("1");/add butten 1b.addActionListener(this);pn1.add(b);事件監(jiān)聽器中的事件處理方法voi
3、d actionPerformed(ActionEvent e)完成主要按鈕事件的處理。事件處理分一下幾種情況:數(shù)字按鈕事件(1”,”2”,”3”,”4”,”5”,”6”,”7”,”8”,“9”,”0”)、運算符按鈕(”+”,”-“,”*”,”/” 、”%”,)、小數(shù)點按鈕(”.”)、等號按鈕事件(”=”)、求倒按鈕事件(”1/x”)、求平方根按鈕(”sqr”)、清除鍵按鈕(clear)、退出鍵按鈕(”off”)等。第三步:布局和監(jiān)聽事件完成后,要考慮具體的計算思路以及如何去合理的布局代碼編排方式,完成大致的代碼雛形。 第四步:對于所完成的代碼,要進行實地的測試,修改編寫過程中所出現(xiàn)的問題,使
4、其更加完善。例如:7.6+7.8=15.39999999這個問題,該如何去解決。 第五步: 在完成實驗報告的期間,對系統(tǒng)進行進一步的完善。三、系統(tǒng)總體設(shè)計或詳細(xì)設(shè)計(簡單寫出即可) 1. 界面設(shè)計 界面設(shè)計要求用GUI,界面設(shè)計有用到swing組件的textField和Button,用到awt中的BorderLayout和GridLayout布局管理方式,其圖形界面如下: 2. 功能介紹這是計算器中的一種:簡單計算器,本實驗用到了java中的GUI界面和swing組件以及awt布局,所以簡單易用,它能完成如下的幾個功能:點擊按鈕中的數(shù)字鍵和運算符鍵就能進行簡單的加、減、乘、除、求模、開方等運算
5、輸入有誤時可以按Clear撤消后可以重新輸入新數(shù)據(jù)點擊off鍵可以直接退出該界面 3. 程序流程圖如下 四、程序代碼 */import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.math.BigDecimal;public class Calculator implements ActionListenerString s="",s1;double d1,d2;JFrame jf = new JFrame("計算器-王旭麗") ;JTextField tf =
6、new JTextField();/實現(xiàn)計算器界面public void init() Container c=jf.getContentPane();tf.setHorizontalAlignment(JTextField.RIGHT); /文本框c.add(tf,"North");JPanel pn3 = new JPanel(new BorderLayout();c.add(pn3,"Center");JPanel pn2 = new JPanel(); /功能鍵界面(清除鍵和關(guān)閉鍵) pn2.setLayout(new BorderLayout(
7、);JPanel pn1 = new JPanel(); /運算界面pn1.setLayout(new GridLayout(6,6);pn3.add(pn2,"North");pn3.add(pn1);JButton b = new JButton("CLEAR"); b.setToolTipText("請按清除鍵!"); /設(shè)置清零鍵b.setForeground(Color.RED); /設(shè)置字體顏色b.setBackground(Color.YELLOW); /設(shè)置背景色b.addActionListener(this);pn
8、2.add(b,"Center");b = new JButton("OFF");b.setToolTipText("請按退出鍵!"); /設(shè)置off鍵,點擊退出應(yīng)用程序b.addActionListener(this);b.setForeground(Color.RED);b.setBackground(Color.ORANGE);pn2.add(b,"East");b = new JButton("1");/add butten 1b.addActionListener(this);pn1.
9、add(b);b = new JButton("2");/add butten 2b.addActionListener(this);pn1.add(b);b = new JButton("3");/add butten 3b.addActionListener(this);pn1.add(b);b = new JButton("+");/add butten +b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton("
10、4");/add butten 4b.addActionListener(this);pn1.add(b);b = new JButton("5");/add butten 5b.addActionListener(this);pn1.add(b);b = new JButton("6");/add button 6b.addActionListener(this);pn1.add(b);b = new JButton("-");/add butten -b.setForeground(Color.BLUE);b.addAc
11、tionListener(this);pn1.add(b);b = new JButton("7");/add button 7b.addActionListener(this);pn1.add(b);b = new JButton("8");/add button 8b.addActionListener(this);pn1.add(b);b = new JButton("9");/add button 9b.addActionListener(this);pn1.add(b);b = new JButton("*&quo
12、t;);/add butten *b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton("0");/add button 0b.addActionListener(this);pn1.add(b);b = new JButton(".");/add button .b.addActionListener(this);pn1.add(b);b = new JButton("");/add butten b.setForegroun
13、d(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton("/"); /add butten /b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton("平均數(shù)"); /add butten 平均數(shù)b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton("%&q
14、uot;); /add butten %b.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton("sqr"); /add butten sqrb.setForeground(Color.BLUE);b.addActionListener(this);pn1.add(b);b = new JButton("="); /add button =b.setForeground(Color.RED);b.addActionListener(this);pn1
15、.add(b);jf.setSize(500,500); /設(shè)置大小jf.setVisible(true); /設(shè)置為可視/處理按鈕按下時的動作,進行相應(yīng)的處理public void actionPerformed(ActionEvent e)String command = e.getActionCommand();tf.setText(tf.getText()+command);if(command.equals("CLEAR") /清零鍵 按下時返回初始狀態(tài)s1=null;s=""tf.setText(""); /記錄輸入值的變
16、量清空else if(command.equals("OFF") System.exit(0); /off鍵 關(guān)閉應(yīng)用程序else if(!command.equals("+")&&!command.equals("=")&&!command.equals("-")&&!command.equals("*")&&!command.equals("/")&&!command.equals("
17、;")&&!command.equals("%")&&!command.equals("sqr")&&!command.equals("平均數(shù)")if(s1=null) /判斷輸入是否為第一個s1 = command;else s1+=command;d1 = new Double(s1).doubleValue(); /字符串型轉(zhuǎn)換為雙精度型,還原輸入tryBigDecimal bd1 = new BigDecimal(d1+"");BigDecimal
18、bd2 = new BigDecimal(d2+"");if(s.equals("+") d1 = bd1.add(bd2).doubleValue();else if(s.equals("-") d1 = bd1.subtract(bd2).doubleValue();else if(s.equals("*") d1 = bd1.multiply(bd2).doubleValue();else if(s.equals("/") if(d2!=0.0) d1 = bd1.divide(bd2,1
19、5,BigDecimal.ROUND_HALF_UP).doubleValue(); else Exception ex;else if(s.equals("") d1 = Math.pow(d2,d1);else if(s.equals("sqr") d1 = Math.sqrt(d1);else if(s.equals("%") d1 = d2%d1;else if(s.equals("平均數(shù)") d1 = d1/2;catch(Exception ex)tf.setText("Error"
20、); /錯誤顯示"Error"System.out.println(ex.getMessage();else if(!command.equals("=") /判斷輸入是否為+ - * s = command;s1 = null;d2 = d1;Else /輸入=時,顯示運算結(jié)果tf.setText(tf.getText()+d1);public static void main(String args)new Calculator().init();五、調(diào)試和測試記錄以及運行結(jié)果展示實例一:加法運算 7.8+7.6=15.4 注:解決了7.6+7.8=
21、15.39999999這個問題,通過增加精確度來實現(xiàn)的。具體解決方式如下: BigDecimal bd1 = new BigDecimal(d1+"");BigDecimal bd2 = new BigDecimal(d2+"");if(s.equals("+") d1 = bd1.add(bd2).doubleValue();實例二:減法運算 6.5-3.56=2.94代碼如下:BigDecimal bd1 = new BigDecimal(d1+"");BigDecimal bd2 = new BigDecim
22、al(d2+""); if(s.equals("-") d1 = bd1.subtract(bd2).doubleValue();實例三:乘法運算:3.5*5=17.5代碼如下:if(s.equals("*") d1 = bd1.multiply(bd2).doubleValue();實例四:除法運算:6.4/2=3.2 代碼如下: if(s.equals("/") if(d2!=0.0) d1 = bd1.divide(bd2,15,BigDecimal.ROUND_HALF_UP).doubleValue();
23、 else Exception ex;實例五:乘方運算:23=8代碼如下: if(s.equals("") d1 = Math.pow(d2,d1); 實例六:開方運算:sqr36=6 if(s.equals("sqr") d1 = Math.sqrt(d1);實例七:取模運算:5%3=2具體代碼實現(xiàn)如下:if(s.equals("%") d1 = d2%d1;六、收獲體會終于做完了這次的實驗報告,最初有一種如釋重負(fù)的感覺,但平靜過后,又有一些欣喜。在做這次的計算器設(shè)計與實現(xiàn)的課程設(shè)計中,雖說看上去有些簡單,但真真的具體去操作實現(xiàn),確實是有些困難。所以體會最深的莫過于“紙上得來終覺淺,絕知此事要躬行”,的確,在這次的親身實踐中,我覺得每件事都需要我們?nèi)フ嬲娴耐度肫渲校ゲ粩嗨伎?,才能不斷促進我們的進步,成長。 在這次的計算器的設(shè)計與實現(xiàn)實驗中,相對而言,它是一個相對簡單的設(shè)計,它牽涉的知識面不是很多,功能相對簡單,界面要求不是很高,相對適合初次承擔(dān)java課程設(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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物學(xué)基因工程研究熱點練習(xí)題集編選
- 股份制公司運營指南
- 航空模型制造安全責(zé)任協(xié)議
- 高分子化學(xué)材料性質(zhì)題庫
- 語言學(xué)語言應(yīng)用知識問答
- 高中英語閱讀技巧課:如何快速找到文章主旨與細(xì)節(jié)教案
- 餐飲行業(yè)市場份額分析表
- 歷史文物保護修復(fù)技藝考查點
- 鄉(xiāng)村生態(tài)環(huán)境保護農(nóng)業(yè)合同
- 互聯(lián)網(wǎng)+農(nóng)業(yè)實踐應(yīng)用方案
- GB/T 20972.2-2025石油天然氣工業(yè)油氣開采中用于含硫化氫環(huán)境的材料第2部分:抗開裂碳鋼、低合金鋼和鑄鐵
- 美團供應(yīng)鏈管理案例分析
- 《鈉離子電池產(chǎn)業(yè)發(fā)展白皮書》
- 深圳市一模+Z20名校聯(lián)盟+浙江名校協(xié)作體高三語文2月聯(lián)考作文題目解析及相關(guān)范文
- 2025中考作文預(yù)測
- 油氣田開發(fā)專業(yè)危害因素辨識與風(fēng)險防控
- 2025年浙江省寧波市外事服務(wù)中心招聘2人歷年高頻重點提升(共500題)附帶答案詳解
- 《工程制圖》題庫(含答案)
- 預(yù)充氣競技步槍 標(biāo)準(zhǔn)A4靶紙
- 避免同業(yè)競爭承諾函
- 產(chǎn)品批量質(zhì)量事故追責(zé)管理規(guī)范
評論
0/150
提交評論