




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上摘 要本設(shè)計要求學(xué)生設(shè)計、開發(fā)出一個簡單的計算器。通過該題目的設(shè)計,培養(yǎng)學(xué)生面向?qū)ο蟪绦蛟O(shè)計的思想,要求學(xué)生達到熟練掌握J(rèn)ava語言的基本知識和技能,基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法,能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題。同時強調(diào)好的程序設(shè)計風(fēng)格,提高解決實際問題的能力。關(guān)鍵詞:Java語言、計算器、圖形界面前 言該程序是一個圖形界面的簡單的java計算器,使用人員能快捷簡單地進行操作。即時準(zhǔn)確地獲得需要的計算的結(jié)果,充分降低了數(shù)字計算的難度和節(jié)約了時間,對人們的生活有一定的幫助??梢赃M行簡單的四則運算(加,減,乘,除,以及求相反數(shù)),
2、有退格功能,歸零表示初始化,界面顏色為灰白,該程序支持鍵盤操作等。隨著科學(xué)技術(shù)的不斷發(fā)展,計算機已經(jīng)成為我們工作學(xué)習(xí)和生活中不可缺少的工具。文本編輯器是個人計算機最司空見慣的應(yīng)用程序了,在學(xué)習(xí)了Java語言之后,使用Java語言編寫一個簡單的計算器,可以實現(xiàn)簡單的運算功能,滿足日?;镜墓ぷ鲗W(xué)習(xí)和娛樂需要。Java是由Sun公司開發(fā)的新一代純面向?qū)ο蟮木W(wǎng)絡(luò)編程語言。其目標(biāo)是建立一種在任意種機器,任一種操作系統(tǒng)的網(wǎng)絡(luò)環(huán)境中運行的軟件,實行所謂“程序?qū)懸淮?到處運行”的目標(biāo)。正因為如此,Java已成為當(dāng)今Internet上最流行,最受歡迎的一種程序開發(fā)語言。專心-專注-專業(yè)目 錄第1章 任務(wù)要求1
3、.1 基本要求:繪制基本國際象棋棋盤。國際象棋棋盤由88的深淺相間的格子構(gòu)成。1.2 系統(tǒng)要求:1. 要求利用面向?qū)ο蟮姆椒ㄒ约癑ava的編程思想來完成系統(tǒng)的設(shè)計;2. 要求在設(shè)計的過程中,建立清晰的類層次; 3. 在系統(tǒng)設(shè)計中要分析和定義各個類,每個類中要有各自的屬性和方法;4. 在系統(tǒng)的設(shè)計中,要求運用面向?qū)ο蟮臋C制(繼承、派生及多態(tài)性)來實現(xiàn)系統(tǒng)功能。5. 在基本要求達到后,可進行創(chuàng)新設(shè)計,如設(shè)計出比較友好的界面等。6. 該系統(tǒng)的要求:(1)界面模擬Windows中的計算器程序;(2)實現(xiàn)基本數(shù)學(xué)運算、函數(shù)等功能:加、減、乘、除、階乘、正弦、余弦和指數(shù)運算;(3)提交Applicatio
4、n和Applet兩個版本的程序。第2章 詳細(xì)設(shè)計2.1 實現(xiàn)功能實現(xiàn)基本數(shù)學(xué)運算、函數(shù)等功能:加、減、乘、除、階乘、正弦、余弦和指數(shù)運算。2.2 功能模塊主界面顯示區(qū)輸入?yún)^(qū)(鍵盤區(qū))功能區(qū)(操作區(qū))選擇功能操作輸入數(shù)據(jù)數(shù)據(jù)處理顯示結(jié)果圖2.1 迷你計算器功能模塊2.3 圖形界面設(shè)計1. 主界面總體設(shè)計及顯示區(qū) CalFrame() super(迷你計算器); setLayout(new FlowLayout(FlowLayout.CENTER,8,10); setBackground(new Color(150,150,150); setForeground(Color.white); set
5、Resizable(false); setSize(310,210); tf = new TextField(22); tf.setEditable(false); tf.setBackground(new Color(50,118,103); tf.setForeground(Color.white); tf.setFont(new Font(Arial,Font.BOLD,18); add(tf); p1 = new CalPanelL(); p2 = new CalPanelR(); add(p1); add(p2); setVisible(true); addWindowListene
6、r(new Wclose(); 2. 輸入?yún)^(qū)及功能區(qū)class CalPanelL extends Panel CalButton b0, b1, b2, b3, b4, b5, b6, b7,bSqrt, bSin, bCos, bYx, b8, b9, bPN, bPoint; /輸入?yún)^(qū) CalPanelL() setLayout(new GridLayout(4,3); setFont(new Font(TimesRoman,Font.BOLD,16); b0 = new CalButton(0); b1 = new CalButton(1); b2 = new CalButton(2)
7、; b3 = new CalButton(3); b4 = new CalButton(4); b5 = new CalButton(5); b6 = new CalButton(6); b7 = new CalButton(7); b8 = new CalButton(8); b9 = new CalButton(9); bPN = new CalButton(+/-); bPoint = new CalButton(.); / 加入按鈕 add(b7); b7.addActionListener(new PressB7(); add(b8); b8.addActionListener(ne
8、w PressB8(); add(b9); b9.addActionListener(new PressB9(); add(b4); b4.addActionListener(new PressB4(); add(b5); b5.addActionListener(new PressB5(); add(b6); b6.addActionListener(new PressB6(); add(b1); b1.addActionListener(new PressB1(); add(b2); b2.addActionListener(new PressB2(); add(b3); b3.addAc
9、tionListener(new PressB3(); add(b0); b0.addActionListener(new PressB0(); add(bPN); bPN.addActionListener(new PressBPN(); ; add(bPoint); bPoint.addActionListener(new PressBPoint(); /功能區(qū) class CalPanelR extends Panel CalButton bAdd, bSub, bMul, bDiv, bSqrt, bSin, bCos, bYx, bJie, bEqual, bCE, bBack; C
10、alPanelR() setLayout(new GridLayout(4,3); setFont(new Font(TimesRoman,Font.BOLD,16); bAdd = new CalButton(+); bSub = new CalButton(-); bMul = new CalButton(*); bDiv = new CalButton(/); bSqrt = new CalButton(); bSin = new CalButton(sin); bCos = new CalButton(cos); bYx = new CalButton(yx); bJie = new
11、CalButton(!); bEqual = new CalButton(=); bCE = new CalButton(CE); bBack = new CalButton(-); add(bDiv); bDiv.addActionListener(new PressBDiv(); add(bSqrt); bSqrt.addActionListener(new PressBSqrt(); add(bJie); bJie.addActionListener(new PressBLn(); add(bMul); bMul.addActionListener(new PressBMul(); ad
12、d(bSin); bSin.addActionListener(new PressBSin(); add(bBack); bBack.addActionListener(new PressBBack(); add(bSub); bSub.addActionListener(new PressBSub(); add(bCos); bCos.addActionListener(new PressBCos(); add(bCE); bCE.addActionListener(new PressBCE(); add(bAdd); bAdd.addActionListener(new PressBAdd
13、(); add(bYx); bYx.addActionListener(new PressBYx(); add(bEqual); bEqual.addActionListener(new PressBEqual(); 2.4 功能實現(xiàn)class PressBEqual implements ActionListener /計算四則運算及指數(shù)運算 public void actionPerformed(ActionEvent e) try double result = 0; d2 = Double.parseDouble(tf.getText(); switch(op) case 0:resu
14、lt = d1 + d2; break; case 1:result = d1 - d2; break; case 2:result = d1 * d2; break; case 3:result = d1 / d2; break; case 4:result = Math.pow(d1,d2); break; default: tf.setText(String.valueOf(result); catch(Exception ee) /計算階乘 class PressBLn implements ActionListener public void actionPerformed(Acti
15、onEvent e) try double x = Double.parseDouble(tf.getText(); double y; y = jiec(x); tf.setText(y+); catch(Exception ee) /階乘調(diào)用方法private double jiec(double x) int b=1;for(int i=1;i=x;i+)b*=i;return b; /計算正弦 class PressBSin implements ActionListener public void actionPerformed(ActionEvent e) try double x
16、 = Double.parseDouble(tf.getText(); double y; y = Math.sin(x); tf.setText(y+); catch(Exception ee) / 計算余弦 class PressBCos implements ActionListener public void actionPerformed(ActionEvent e) try double x = Double.parseDouble(tf.getText(); double y; y = Math.cos(x); tf.setText(y+); catch(Exception ee
17、) 2.5 小程序2.5.1 圖形界面設(shè)計 public CalculatorPanel() setLayout(new BorderLayout(); result.setEditable(false); esult.setSize(300,200); add(result,BorderLayout.NORTH); JPanel panel=new JPanel(); panel.setLayout(new GridLayout(5,4); sin=new JButton(sin); panel.add(sin); sin.addActionListener(this); cos=new J
18、Button(cos); panel.add(cos); cos.addActionListener(this); jie=new JButton(!); panel.add(jie); jie.addActionListener(this); zhi=new JButton(); panel.add(zhi); zhi.addActionListener(this); n7=new JButton(7); panel.add(n7); n7.addActionListener(this); n8=new JButton(8); panel.add(n8); n8.addActionListe
19、ner(this); n9=new JButton(9); panel.add(n9); n9.addActionListener(this); div=new JButton(/); panel.add(div); div.addActionListener(this); n4=new JButton(4); panel.add(n4); n4.addActionListener(this); n5=new JButton(5); panel.add(n5); n5.addActionListener(this); n6=new JButton(6); panel.add(n6); n6.a
20、ddActionListener(this); mul=new JButton(*); panel.add(mul); mul.addActionListener(this); n1=new JButton(1); panel.add(n1); n1.addActionListener(this); n2=new JButton(2); panel.add(n2); n2.addActionListener(this); n3=new JButton(3); panel.add(n3); n3.addActionListener(this); minus=new JButton(-); pan
21、el.add(minus); minus.addActionListener(this); dot=new JButton(.); panel.add(dot); dot.addActionListener(this); n0=new JButton(0); panel.add(n0); n0.addActionListener(this); equal=new JButton(=); panel.add(equal); equal.addActionListener(this); plus=new JButton(+); panel.add(plus); plus.addActionList
22、ener(this); add(panel,BorderLayout.CENTER); 2.5.2 功能運算public void actionPerformed(ActionEvent ae) if(ae.getSource()=n1) assign(1); else if(ae.getSource()=n2) assign(2); else if(ae.getSource()=n3) assign(3); else if(ae.getSource()=n4) assign(4); else if(ae.getSource()=n5) assign(5); else if(ae.getSou
23、rce()=n6) assign(6); else if(ae.getSource()=n7) assign(7); else if(ae.getSource()=n8) assign(8); else if(ae.getSource()=n9) assign(9); else if(ae.getSource()=n0) assign(0); else if(ae.getSource()=dot) if(result.getText().indexOf(.)=-1) result.setText(result.getText()+.); else if(ae.getSource()=minus
24、) preRes=Double.parseDouble(result.getText(); lastCommand=-; result.setText(0); else if(ae.getSource()=div) preRes=Double.parseDouble(result.getText(); lastCommand=/; result.setText(0); else if(ae.getSource()=equal) secVal=Double.parseDouble(result.getText(); if(lastCommand.equals(/) res=preRes/secV
25、al; else if(lastCommand.equals(*) res=preRes*secVal; else if(lastCommand.equals(-) res=preRes-secVal; else if(lastCommand.equals(+) res=preRes+secVal; else if(lastCommand.equals(sin) res=Math.sin(preRes); else if(lastCommand.equals(cos) res=Math.cos(preRes); else if(lastCommand.equals() res=Math.pow
26、(preRes, secVal); else if(lastCommand.equals(!) res=jiec(preRes); result.setText( +res); lastCommand=; else if(ae.getSource()=sin) preRes=Double.parseDouble(result.getText(); lastCommand=sin; result.setText(0); else if(ae.getSource()=cos) preRes=Double.parseDouble(result.getText(); lastCommand=cos;
27、result.setText(0); else if(ae.getSource()=jie) preRes=Double.parseDouble(result.getText(); lastCommand=!; result.setText(0); else if(ae.getSource()=zhi) preRes=Double.parseDouble(result.getText(); lastCommand=; result.setText(0); else if(ae.getSource()=mul) preRes=Double.parseDouble(result.getText()
28、; lastCommand=*; result.setText(0); else if(ae.getSource()=plus) preRes=Double.parseDouble(result.getText(); lastCommand=+; result.setText(0); private double jiec(double preRes2) int b=1;for(int i=1;i=preRes;i+)b*=i;return b; 第3章 系統(tǒng)測試3.1 測試方案1. 打開迷你計算器,輸入數(shù)據(jù);2. 點擊功能按鈕,執(zhí)行相應(yīng)運算;3. 使用計算器或計算軟件檢驗運算結(jié)果是否正確。4
29、. 評價該計算器的可行性;5. 找出該計算器的不足信和有待改進的地方。3.2 測試用例1.進入計算器,依次執(zhí)行“152+23.2”,“32.3-63”,“15*62.2”,“6/96.6”,“20.1/0”,檢驗基本四則運算結(jié)果是否正確以及對錯誤操作的處理。2.每次計算結(jié)束后,按“CE”鍵清除數(shù)據(jù)或按“-”鍵修改數(shù)據(jù)以進行下一輪運算。3.依次執(zhí)行“6!”,“15 yx 4 =”,“6 sin”,“6 cos”,“12.96 ”“9 +/- ”,檢驗結(jié)果是否正確。4.輸入數(shù)字,按“*/-”鍵可進行數(shù)據(jù)的正負(fù)切換,將數(shù)據(jù)轉(zhuǎn)換為負(fù)數(shù),依次執(zhí)行上述操作,檢驗結(jié)果。3.3 測試結(jié)果 3.3.1 四則運算
30、測試結(jié)果 加法:152+23.2=175.2; 減法:32.3-63=-30.7; 乘法:15*62.2=933.0; 除法:6/96.6=0.0621;除法(錯誤處理):20.1/0=Infinity;(如圖3.1) 圖3.1 “20.1/0”的錯誤處理 3.3.2其他運算測試結(jié)果 階乘:6!=720.0; 指數(shù):15 4 =50625.0; 正弦:sin6 =-0.2794; 余弦:cos6 =0.9602; 開方: 12.96 =3.6;開方(錯誤處理):(-9)=NaN;(如圖3.2) 圖3.2 “(-9)”的錯誤處理 3.4 軟件可靠性分析 1.圖形界面簡單、直觀明了,易于初次使用者
31、方便使用; 2.基本四則運算準(zhǔn)確無誤,小數(shù)數(shù)位精確度高; 3.對其他常用功能計算(如:指數(shù)、正余弦等)較為精確; 4.能有效處理錯誤操作,如:“20.1/0”,“(-9)”等。3.5 軟件不足性分析 1.計算數(shù)位有限,不能輸入科學(xué)計數(shù);2. 與常見計算器相比,常見計算器每執(zhí)行玩一次運算,當(dāng)運行下一次運算時會將前一次運算結(jié)果清零或自動跳轉(zhuǎn)到下一計算運行;本軟件每執(zhí)行完一次運算都要按“CE”鍵清零或按“-”鍵修改數(shù)據(jù),使用起來較為繁瑣。3. 本計算器不存在記憶功能,清零之后,原有數(shù)據(jù)不可恢復(fù)。第4章 軟件使用說明書4.1圖形界面 圖4.1 迷你計算器主界面4.2四則運算舉例 1.計算“15.2/3
32、0.4”; 2.輸入“15.2”; 圖4.2 輸入“15.2” 3.輸入“/”; 圖4.3 輸入“/” 4.輸入“30.4”; 圖4.4 輸入“30.4” 5.按下“=”,得出結(jié)果; 圖4.5 按“=”,所得結(jié)果4.3其他運算舉例 1.計算“6!”; 2.輸入“6”; 圖4.6 輸入“6” 3.按下“!”,得出結(jié)果; 圖4.7 按“!”,所得結(jié)果4.4清零及退格操作 1.按下“CE”鍵,對數(shù)據(jù)清零,返回主界面; 2.按下“-”鍵,對數(shù)據(jù)進行修改,這里對上一數(shù)據(jù)按“-”后,結(jié)果如下: 圖4.8 按“sin”-“=”。參考文獻1曲朝陽,楊杰明等.Java程序設(shè)計. 北京: 清華大學(xué)出版社,2008.102耿祥以,張躍平.Java大學(xué)生實用教程. 北京: 電子工業(yè)出版社,2012.6 3明日科技.Java經(jīng)典編程.北京:清華大學(xué)出版社,2012
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車輛維修保養(yǎng)完成后借用合同
- 餐飲服務(wù)員團隊管理與溝通合同范本
- 財務(wù)信息保密與內(nèi)部審計質(zhì)量保證合同
- 車輛報廢回收全權(quán)委托合同范本
- 新世紀(jì)以來國產(chǎn)電影中的方言文化研究
- 高中文言文拓展教學(xué)研究
- 泌尿系統(tǒng)結(jié)構(gòu)與功能解析
- 頸椎疾病的護理課件
- 健康體檢銷售技巧實戰(zhàn)指南
- 直銷如何做好級別管理
- 牛屠宰檢疫培訓(xùn)
- 2025標(biāo)準(zhǔn)版的還建房買賣合同
- 有限空間監(jiān)理實施細(xì)則
- s7-1200plc編程及應(yīng)用第三版-廖常初-課后習(xí)題答案
- 晶體植入術(shù)的術(shù)后護理
- 勞動通論學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- ISO56002-2019創(chuàng)新管理體系管理手冊及程序文件
- 新教材北師大版必修第一冊unit1 life choices單詞短語句型寫作知識點提煉
- 貴州省貴陽市2023-2024學(xué)年七年級下學(xué)期期末考試生物試題(無答案)
- 廣東省湛江市2023-2024學(xué)年高二下學(xué)期7月期末考試化學(xué)試題
評論
0/150
提交評論