版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、課 程 設(shè) 計課程名稱 JAVA 課程設(shè)計 題 目 計算器的設(shè)計與實(shí)現(xiàn)專 業(yè) 計算機(jī)科學(xué)與技術(shù) 班 級 學(xué) 號 姓 名 成 績 _指導(dǎo)教師 課程設(shè)計任務(wù)書設(shè)計題目: 計算器的設(shè)計與實(shí)現(xiàn)設(shè)計目的:1.鞏固和加深課堂所學(xué)知識;2.學(xué)習(xí)掌握一般的軟件的設(shè)計方法和查閱、運(yùn)用資料的能力;3.掌握J(rèn)AVA程序設(shè)計語言,面向?qū)ο蟮能浖O(shè)計思想、方法。設(shè)計任務(wù):(在規(guī)定的時間內(nèi)完成下列任務(wù))1、任務(wù):設(shè)計一個簡單的計算器程序功能要求:能夠?qū)崿F(xiàn)基本的加、減、乘、除運(yùn)算,以及其它的輔助功能;界面簡潔適用;要提供主要的設(shè)計思路、類的設(shè)計2、 設(shè)計任務(wù)要完成設(shè)計、編碼、測試等過程,給出設(shè)計思路、設(shè)計說明書、主要的代碼
2、的說明、使用說明書。源代碼以及可運(yùn)行的計算器程序。時間安排:12月12日布置題目,確定任務(wù)、查找相關(guān)資料12月12日12月16日 功能分析,系統(tǒng)設(shè)計,編寫程序,調(diào)試程序、運(yùn)行系統(tǒng);12月16日答辯后撰寫設(shè)計報告。具體要求:設(shè)計報告撰寫格式要求(按提供的設(shè)計報告統(tǒng)一格式撰寫)具體內(nèi)容如下: 設(shè)計任務(wù)與要求 總體方案與說明 面向?qū)ο蟮脑O(shè)計(主要類的設(shè)計) 源程序清單與注釋 軟件主要模塊流程圖 問題分析與解決方案(包括調(diào)式記錄、調(diào)式報告,即在調(diào)式過程中遇到的主要問題、解決方法及改進(jìn)設(shè)想);小結(jié)與體會附錄: 源程序(必須有簡單注釋) 使用說明 參考資料指 導(dǎo) 教 師 簽 名: 2011 年12月 16
3、 日教研室主任(或責(zé)任教師)簽名: 年 月 日一 設(shè)計目的1.1:設(shè)計一個簡單的計算器程序1.2:能夠?qū)崿F(xiàn)基本的加、減、乘、除運(yùn)算,以及其它的輔助功能;界面簡潔適用;要提供主要的設(shè)計思路、類的設(shè)計二 需求分析日常生活中經(jīng)常需要用到計算器,比如科學(xué)計算,數(shù)值計算,會計業(yè)務(wù)等等,在Applet中實(shí)現(xiàn)一個精巧的計算器,可以讓用戶的操作也更方便和快捷。本項(xiàng)目需要實(shí)現(xiàn)一個具有四則運(yùn)算的計算器,能夠?qū)崿F(xiàn)基本的加、減、乘、除運(yùn)算,以及其它的輔助功能;界面簡潔適用;要提供主要的設(shè)計思路、類的設(shè)計,本次設(shè)計添加轉(zhuǎn)進(jìn)制等功能三 設(shè)計思路本應(yīng)用程序繼承自框架(frame),此程序使用frame布局管理器bordel
4、ayout,將單行文本加入相應(yīng)區(qū)域,包含各種按紐的面板buttonpanel加入相應(yīng)區(qū)域還可以將進(jìn)制轉(zhuǎn)換的面板與單行文本框放一塊包含各種按紐的面板buttonpanel采用N行N列的網(wǎng)格布局,然后將數(shù)字按鈕和運(yùn)算符按鈕以及控制按鈕添加到面板中,同時注冊按鈕事件監(jiān)聽器四 詳細(xì)設(shè)計4.1數(shù)據(jù)分析計算器的程序設(shè)計,必然有數(shù)據(jù)輸入,其中數(shù)據(jù)包括運(yùn)算符和數(shù)字,均要通過計算器上的button按鈕選項(xiàng)按鈕輸入進(jìn)去,里面錄入的必然是字符型的數(shù)據(jù),如果進(jìn)行運(yùn)算要將輸入的數(shù)據(jù)轉(zhuǎn)化成Double型,以防出錯4.2算法思路大致思路已經(jīng)在上面闡述,主要是通過將數(shù)字鍵和其他符號區(qū)別開來進(jìn)行監(jiān)聽4.3類設(shè)計以下見代碼部分五
5、 詳細(xì)代碼import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends Frame implements ActionListener, WindowListenerprivate Container container;private GridBagLayout layout;private GridBagConstraints constraints;private JTextField displayField; /計算結(jié)果顯示區(qū)private String l
6、astCommand; /保存+,-,*,/,=命令0private double result; /保存計算結(jié)果private boolean start; /判斷是否為數(shù)字的開始private JMenuBar menubar;private JMenuItem m_exit,m2_ejz,m2_bjz;private Dialog dialog;private Label label_dialog;private JButton button_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2,button_3,
7、button_4,button_5,button_6,button_7,button_8,button_9,button_0,button_plus,button_minus,button_multiply,button_divide,button_point,button_equal,button_log,button_tan,button_cos,button_sin,button_exp;public Calculator() /構(gòu)造方法設(shè)置布局、為按鈕注冊事件監(jiān)聽器super(Calculator);this.setLocation(240,200);this.setSize(350,
8、300);this.setResizable(true);this.setLayout(new GridLayout(7,1);this.addmyMenu(); /調(diào)用成員方法添加菜單displayField=new JTextField(30);this.add(displayField);displayField.setEditable(true);start=true;result=0;lastCommand = =;JPanel panel0=new JPanel();panel0.setLayout(new GridLayout(1,4,4,4);JPanel panel1=new
9、 JPanel();panel1.setLayout(new GridLayout(1,5,4,4);this.add(panel1);button_sqrt=new JButton(sqrt);button_plusminus=new JButton(+/-);button_exp=new JButton(exp);button_CE=new JButton(退格);button_cancel=new JButton(C);JPanel panel2=new JPanel();panel2.setLayout(new GridLayout(1,5,4,4);this.add(panel2);
10、button_7=new JButton(7);button_8=new JButton(8);button_9=new JButton(9);button_log=new JButton(log);button_divide=new JButton(/);JPanel panel3=new JPanel();panel3.setLayout(new GridLayout(1,5,4,4);this.add(panel3);button_4=new JButton(4);button_5=new JButton(5);button_6=new JButton(6);button_tan=new
11、 JButton(tan);button_multiply=new JButton(*);JPanel panel4=new JPanel();panel4.setLayout(new GridLayout(1,5,4,4);this.add(panel4);button_1=new JButton(1);button_2=new JButton(2);button_3=new JButton(3);button_cos=new JButton(cos);button_minus=new JButton(-);JPanel panel5=new JPanel();panel5.setLayou
12、t(new GridLayout(1,5,4,4);this.add(panel5);button_0=new JButton(0);button_point=new JButton(.);button_equal=new JButton(=);button_sin=new JButton(sin);button_plus=new JButton(+);panel1.add(button_sqrt);panel1.add(button_plusminus);panel1.add(button_exp);panel1.add(button_CE);panel1.add(button_cancel
13、);panel2.add(button_7);panel2.add(button_8);panel2.add(button_9);panel2.add(button_log);panel2.add(button_divide);panel3.add(button_4);panel3.add(button_5);panel3.add(button_6);panel3.add(button_tan);panel3.add(button_multiply);panel4.add(button_1);panel4.add(button_2);panel4.add(button_3);panel4.ad
14、d(button_cos);panel4.add(button_minus);panel5.add(button_0);panel5.add(button_point);panel5.add(button_equal);panel5.add(button_sin);panel5.add(button_plus);button_sqrt.addActionListener(this);button_plusminus.addActionListener(this);button_exp.addActionListener(this);button_CE.addActionListener(thi
15、s);button_cancel.addActionListener(this);button_7.addActionListener(this);button_8.addActionListener(this);button_9.addActionListener(this);button_log.addActionListener(this);button_divide.addActionListener(this);button_4.addActionListener(this);button_5.addActionListener(this);button_6.addActionLis
16、tener(this);button_tan.addActionListener(this);button_multiply.addActionListener(this);button_1.addActionListener(this);button_2.addActionListener(this);button_3.addActionListener(this);button_cos.addActionListener(this);button_minus.addActionListener(this);button_0.addActionListener(this);button_po
17、int.addActionListener(this);button_equal.addActionListener(this);button_sin.addActionListener(this);button_plus.addActionListener(this);this.addWindowListener(new WinClose(); /注冊窗口監(jiān)聽器this.setVisible(true);private void addmyMenu()/菜單的添加JMenuBar menubar=new JMenuBar();this.add(menubar);JMenu m1=new JM
18、enu(選項(xiàng));JMenu m2=new JMenu(進(jìn)制轉(zhuǎn)換);JMenuItem m1_exit=new JMenuItem(退出);m1_exit.addActionListener(this);JMenuItem m2_ejz=new JMenuItem(二進(jìn)制);m2_ejz.addActionListener(this);JMenuItem m2_bjz=new JMenuItem(八進(jìn)制);m2_bjz.addActionListener(this);JMenu m3 = new JMenu( 幫助);JMenuItem m3_Help = new JMenuItem(用法);m
19、3_Help.addActionListener(this);dialog = new Dialog(this,提示,true); /模式窗口dialog.setSize(240,80);label_dialog = new Label(,Label.CENTER); /標(biāo)簽的字符串為空,居中對齊dialog.add(label_dialog);dialog.addWindowListener(this); /為對話框注冊窗口事件監(jiān)聽器m1.add(m1_exit);menubar.add(m1);m2.add(m2_ejz);m2.add(m2_bjz);menubar.add(m2);m3
20、.add(m3_Help);menubar.add(m3);public void actionPerformed(ActionEvent e) /按鈕的單擊事件處理方法if(e.getSource().equals(button_1)|e.getSource().equals(button_2)|e.getSource().equals(button_3)|e.getSource().equals(button_4)|e.getSource().equals(button_5)| e.getSource().equals(button_6)|e.getSource().equals(butt
21、on_7)| e.getSource().equals(button_8)|e.getSource().equals(button_9) |e.getSource().equals(button_0)|e.getSource().equals(button_point)|e.getSource().equals(button_plusminus)|e.getSource().equals(button_cancel)|e.getSource().equals(button_CE) /非運(yùn)算符的處理方法String input=e.getActionCommand();if (start)dis
22、playField.setText();start=false;if(input.equals(+/-)displayField.setText(displayField.getText()+-);if(!input.equals(+/-)String str=displayField.getText();if(input.equals(退格) /退格鍵的實(shí)現(xiàn)方法if(str.length()0)displayField.setText(str.substring(0,str.length()-1);else if(input.equals(C) /清零鍵的實(shí)現(xiàn)方法displayField.s
23、etText(0);start=true;elsedisplayField.setText(displayField.getText()+input);else if (e.getActionCommand()=二進(jìn)制) /二進(jìn)制的轉(zhuǎn)換int n=Integer.parseInt(displayField.getText();displayField.setText(Integer.toBinaryString(n);else if (e.getActionCommand()=八進(jìn)制) /八進(jìn)制的轉(zhuǎn)換int n=Integer.parseInt(displayField.getText();d
24、isplayField.setText(Integer.toOctalString(n);else if (e.getActionCommand()=退出) /選項(xiàng)中退出的處理方法System.exit(0);else if (e.getActionCommand()=用法) /按下幫助菜單欄中用法的處理方法label_dialog.setText(sqrt,exp等鍵是先輸運(yùn)算符再輸數(shù)字n);dialog.setLocation(400,250);dialog.setVisible(true);else /各運(yùn)算符的識別String command=e.getActionCommand();
25、if(start)lastCommand=command;elsecalculate(Double.parseDouble(displayField.getText();lastCommand=command;start=true;public void calculate(double x) /各運(yùn)算符的具體運(yùn)算方法double d=0;if (lastCommand.equals(+)result+= x;else if (lastCommand.equals(-)result-=x;else if (lastCommand.equals(*)result*=x;else if (last
26、Command.equals(/)result/=x;else if (lastCommand.equals(=)result=x;else if (lastCommand.equals(sqrt)d=Math.sqrt(x);result=d;else if (lastCommand.equals(exp)d=Math.exp(x);result=d;else if (lastCommand.equals(log)d=Math.log(x);result=d;else if (lastCommand.equals(tan)d=Math.tan(x);result=d;else if (las
27、tCommand.equals(cos)d=Math.cos(x);result=d;else if (lastCommand.equals(sin)d=Math.sin(x);result=d;displayField.setText(+ result);public void windowClosing(WindowEvent e)if(e.getSource()=dialog)dialog.setVisible(false); /隱藏對話框elseSystem.exit(0);public void windowOpened(WindowEvent e) public void wind
28、owActivated(WindowEvent e) public void windowDeactivated(WindowEvent e) public void windowClosed(WindowEvent e) public void windowIconified(WindowEvent e) public void windowDeiconified(WindowEvent e) public static void main(String args)Calculator calculator=new Calculator();class WinClose implements WindowListenerpublic void windowClosing(WindowEvent e)System.exit(0); /結(jié)束程序運(yùn)行public void windowOpened(WindowEvent e)public void windowActivated(W
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版?zhèn)€人二手車融資擔(dān)保合同3篇
- 2024渣車運(yùn)輸與環(huán)保達(dá)標(biāo)及工程驗(yàn)收合同范本3篇
- 2024版游戲開發(fā)與內(nèi)容采購合同
- 個性化正規(guī)借款協(xié)議模板2024版版B版
- 2024消防安全隱患排查及整改服務(wù)合同3篇
- 2024版外貿(mào)領(lǐng)域業(yè)務(wù)信息保密合作合同版B版
- 寧波浙江寧波慈溪市急救站派遣制工作人員招聘6人筆試歷年典型考點(diǎn)(頻考版試卷)附帶答案詳解
- 消防工程節(jié)能施工方案
- 2025至2030年中國垂直循環(huán)停車設(shè)備數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國廚用黃酒數(shù)據(jù)監(jiān)測研究報告
- 【傳媒大學(xué)】2024年新營銷
- 2025屆廣東省佛山市高三上學(xué)期普通高中教學(xué)質(zhì)量檢測(一模)英語試卷(無答案)
- 自身免疫性腦炎課件
- 人力資源管理各崗位工作職責(zé)
- 信陽農(nóng)林學(xué)院《新媒體傳播學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024建筑公司年終工作總結(jié)(32篇)
- 2024年項(xiàng)目投資計劃書(三篇)
- 配電安規(guī)課件
- 瀝青路面施工安全培訓(xùn)
- 機(jī)電設(shè)備安裝施工及驗(yàn)收規(guī)范
- 倉庫安全培訓(xùn)考試題及答案
評論
0/150
提交評論