JAVA課程設(shè)計計算器

上傳人:max****ui 文檔編號:23689108 上傳時間:2021-06-10 格式:DOC 頁數(shù):15 大小:134.41KB
收藏 版權(quán)申訴 舉報 下載
JAVA課程設(shè)計計算器_第1頁
第1頁 / 共15頁
JAVA課程設(shè)計計算器_第2頁
第2頁 / 共15頁
JAVA課程設(shè)計計算器_第3頁
第3頁 / 共15頁

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《JAVA課程設(shè)計計算器》由會員分享,可在線閱讀,更多相關(guān)《JAVA課程設(shè)計計算器(15頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、JAVA程序設(shè)計課程設(shè)計任務(wù)書一、課程設(shè)計的目的1、培養(yǎng)學(xué)生面向?qū)ο缶幊痰乃枷耄?、使學(xué)生熟悉JAVA語言的使用;3、培養(yǎng)學(xué)生JAVA編程的思想和方法;4、使學(xué)生掌握JAVA編程調(diào)試的基本技能;5、培養(yǎng)學(xué)生分析、解決問題的能力。二、課程設(shè)計內(nèi)容與要求1、內(nèi)容一:1簡單計算器題目描述使用Java的GUI圖形用戶界面編程設(shè)計并編寫一個計算器程序,用戶可以通過鼠標或者鍵盤操作輸入?yún)⒓舆\算的數(shù)值和運算符,要求能進行加、減、乘、除等混合運算。基本要求實現(xiàn)加、減、乘、除的雙目單類別的基礎(chǔ)運算;實現(xiàn)提示GUI編程 Component的事件響應(yīng)。參考界面JAVA程序設(shè)計課程設(shè)計一、系統(tǒng)中所使用的數(shù)據(jù)對象及說明

2、1、Calculator類屬性屬性名稱類型描述JmbJMenuBar菜單欄Jm1 jm2 jm3 JMenu 菜單JmiJMenuItem菜單項fJFrame 實例化對象Panel1 1JPanel 輸入面板CommandsPanelJPanel 運算符面板calckeysPanelJPanel 數(shù)字面板showline JTextField 數(shù)據(jù)輸出框backspace JButton 退格鍵CE JButton 清空C JButton 刪除1/XJButton 取余dao JButton 取倒數(shù)add JButton 數(shù)字相加jian JButton 數(shù)字相減cheng JButton 數(shù)

3、字相乘quzheng JButton 數(shù)字相除dian JButton 點符號deng JButton 等于號zero JButton 一one JButton 二two JButton 三three JButton 四four JButton 五five JButton 六six JButton 七seven JButton 八eight JButton 九num1 String保存第一個運算數(shù)字operator String保存運算符號方法方法名稱功能Calculator計算器布局Add添加組件、面板addMouseListener添加鼠標監(jiān)聽事件setJMenuBar設(shè)置菜單2、 系統(tǒng)功

4、能結(jié)構(gòu)及相關(guān)算法描述1、系統(tǒng)功能結(jié)構(gòu) 計算器按鍵文本框菜單欄標題欄1-9、BackspaceCE、C+、-、*、/%、.、1/x=文本框幫助查看編輯標題:計算器關(guān)于計算器幫助主題數(shù)學(xué)分組科學(xué)型標準型粘貼復(fù)制系統(tǒng)功能結(jié)構(gòu)圖2、 相關(guān)算法流程圖(1)加減法流程NY將S添加到show文本框執(zhí)行加、減法運算得出SMun1是否存在(2) 乘除法流程NMun1是否存在Y執(zhí)行乘、除法運算得出S將S添加到show文本框(3) 乘方取余法流程Mun1是否存在NY執(zhí)行乘方、取余法運算得出S將S添加到show文本框三、系統(tǒng)運行結(jié)果(截圖)1、主菜單四、課程設(shè)計總結(jié)通過此次課程設(shè)計,使我更加扎實的掌握了有關(guān)JAVA圖

5、形界面布局等方面的知識,雖然在設(shè)計過程中也遇到了很多問題,但經(jīng)過一次又一次的思考,一遍又一遍檢查和反復(fù)修改終于找到了原因所在,也暴露了前期我在這方面的知識欠缺。課程設(shè)計是一種實踐活動,不但可以提升專業(yè)知識和專業(yè)能力,也培養(yǎng)了我們獨立思考,動手操作的能力,使我對抽象的知識有了具體的認識。這對于我們的將來也有很大的幫助。此次課程設(shè)計也讓我明白沒有最完善的程序代碼,只有不斷地改善才能使程序變得更完美,同時也增強了我對JAVA的興趣,相信繼續(xù)保持下去對JAVA的理解一定會更上一層樓。附錄:程序源碼import java.awt.BorderLayout;import java.awt.Color;im

6、port java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JSeparator;import javax

7、.swing.JTextField; public class Calculator extends JFrame implements ActionListener JMenuBar jmb; JMenu jm1,jm2,jm3; JMenuItem jmi; /* 計算器上的鍵的顯示名字 */ private final String KEYS = 7, 8, 9, /, sqrt, 4, 5, 6, *, %, 1, 2, 3, -, 1/x, 0, +/-, ., +, = ; /* 計算器上的功能鍵的顯示名字 */ private final String COMMAND = Bac

8、kspace, CE, C ; /* 計算器上鍵的按鈕 */ private JButton keys = new JButtonKEYS.length; /* 計算器上的功能鍵的按鈕 */ private JButton commands = new JButtonCOMMAND.length; /* 計算器左邊的M的按鈕 */ /* 計算結(jié)果文本框 */ private JTextField resultText = new JTextField(0); / 標志用戶按的是否是整個表達式的第一個數(shù)字,或者是運算符后的第一個數(shù)字 private boolean firstDigit = tr

9、ue; / 計算的中間結(jié)果。 private double resultNum = 0.0; / 當(dāng)前運算的運算符 private String operator = =; / 操作是否合法 private boolean operateValidFlag = true; /* * 構(gòu)造函數(shù) */ public Calculator() super(); JMenuBar jmb=new JMenuBar();this.setJMenuBar(jmb);JMenu jm=new JMenu(編輯(E);jmb.add(jm);jmi= new JMenuItem(復(fù)制(c) Ctrl+c);j

10、m.add(jmi);jmi= new JMenuItem(粘貼(p) Ctrl+v);jm.add(jmi);jm2=new JMenu(查看(v);jmb.add(jm2);jmi= new JMenuItem(標準型(T);jm2.add(jmi);jmi= new JMenuItem(科學(xué)型(S);jm2.add(jmi);jm2.add(new JSeparator();jmi= new JMenuItem(數(shù)學(xué)分組(I);jm2.add(jmi);jm3=new JMenu(幫助(H);jmb.add(jm3);jmi= new JMenuItem(幫助主題(H);jm3.add(

11、jmi);jm3.add(new JSeparator();jmi= new JMenuItem(關(guān)于計算器(A);jm3.add(jmi); / 初始化計算器 init(); / 設(shè)置計算器的背景顏色 this.setBackground(Color.LIGHT_GRAY); this.setTitle(計算器); / 在屏幕(500, 300)坐標處顯示計算器 this.setLocation(500, 300); / 不許修改計算器的大小 this.setResizable(false); / 使計算器中各組件大小合適 this.pack(); /* * 初始化計算器 */ privat

12、e void init() / 文本框中的內(nèi)容采用右對齊方式 resultText.setHorizontalAlignment(JTextField.RIGHT); / 不允許修改結(jié)果文本框 resultText.setEditable(false); / 設(shè)置文本框背景顏色為白色 resultText.setBackground(Color.WHITE); / 初始化計算器上鍵的按鈕,將鍵放在一個面板內(nèi) JPanel calckeysPanel = new JPanel(); / 用網(wǎng)格布局器,4行,5列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素 calckeysPa

13、nel.setLayout(new GridLayout(4, 5, 3, 3); for (int i = 0; i KEYS.length; i+) keysi = new JButton(KEYSi); calckeysPanel.add(keysi); keysi.setForeground(Color.blue); / 運算符鍵用紅色標示,其他鍵用藍色表示 keys3.setForeground(Color.red); keys8.setForeground(Color.red); keys13.setForeground(Color.red); keys18.setForegrou

14、nd(Color.red); keys19.setForeground(Color.red); / 初始化功能鍵,都用紅色標示。將功能鍵放在一個面板內(nèi) JPanel commandsPanel = new JPanel(); / 用網(wǎng)格布局器,1行,3列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為3個象素,垂直方向間隔為3個象素 commandsPanel.setLayout(new GridLayout(1, 3, 3, 3); for (int i = 0; i COMMAND.length; i+) commandsi = new JButton(COMMANDi); commandsPanel.a

15、dd(commandsi); commandsi.setForeground(Color.red); / 下面進行計算器的整體布局,將calckeys和command面板放在計算器的中下部 / 新建一個大的面板,將上面建立的command和calckeys面板放在該面板內(nèi) JPanel panel1 = new JPanel(); / 面板采用邊界布局管理器,面板里組件之間的水平和垂直方向上間隔都為3象素 panel1.setLayout(new BorderLayout(3, 3); panel1.add(North, commandsPanel); panel1.add(Center, c

16、alckeysPanel); / 建立一個面板放文本框 JPanel top = new JPanel(); top.setLayout(new BorderLayout(); top.add(Center, resultText); / 整體布局 getContentPane().setLayout(new BorderLayout(3, 5); getContentPane().add(North, top); getContentPane().add(Center, panel1); / 為各按鈕添加事件監(jiān)聽器 / 都使用同一個事件監(jiān)聽器,即本對象。本類的聲明中有implements A

17、ctionListener for (int i = 0; i KEYS.length; i+) keysi.addActionListener(this); for (int i = 0; i = 0) / 用戶按了數(shù)字鍵或者小數(shù)點鍵 handleNumber(label); / handlezero(zero); else / 用戶按了運算符鍵 handleOperator(label); /* * 處理Backspace鍵被按下的事件 */ private void handleBackspace() String text = resultText.getText(); int i =

18、 text.length(); if (i 0) / 退格,將文本最后一個字符去掉 text = text.substring(0, i - 1); if (text.length() = 0) / 如果文本沒有了內(nèi)容,則初始化計算器的各種值 resultText.setText(0); firstDigit = true; operator = =; else / 顯示新的文本 resultText.setText(text); /* * 處理數(shù)字鍵被按下的事件 * * param key */ private void handleNumber(String key) if (firstD

19、igit) / 輸入的第一個數(shù)字 resultText.setText(key); else if (key.equals(.) & (resultText.getText().indexOf(.) 0) / 輸入的是小數(shù)點,并且之前沒有小數(shù)點,則將小數(shù)點附在結(jié)果文本框的后面 resultText.setText(resultText.getText() + .); else if (!key.equals(.) / 如果輸入的不是小數(shù)點,則將數(shù)字附在結(jié)果文本框的后面 resultText.setText(resultText.getText() + key); / 以后輸入的肯定不是第一個數(shù)

20、字了 firstDigit = false; /* * 處理C鍵被按下的事件 */ private void handleC() / 初始化計算器的各種值 resultText.setText(0); firstDigit = true; operator = =; /* * 處理運算符鍵被按下的事件 * * param key */ private void handleOperator(String key) if (operator.equals(/) / 除法運算 / 如果當(dāng)前結(jié)果文本框中的值等于0 if (getNumberFromText() = 0.0) / 操作不合法 oper

21、ateValidFlag = false; resultText.setText(除數(shù)不能為零); else resultNum /= getNumberFromText(); else if (operator.equals(1/x) / 倒數(shù)運算 if (resultNum = 0.0) / 操作不合法 operateValidFlag = false; resultText.setText(零沒有倒數(shù)); else resultNum = 1 / resultNum; else if (operator.equals(+) / 加法運算 resultNum += getNumberFro

22、mText(); else if (operator.equals(-) / 減法運算 resultNum -= getNumberFromText(); else if (operator.equals(*) / 乘法運算 resultNum *= getNumberFromText(); else if (operator.equals(sqrt) / 平方根運算 resultNum = Math.sqrt(resultNum); else if (operator.equals(%) / 百分號運算,除以100 resultNum = resultNum / 100; else if (

23、operator.equals(+/-) / 正數(shù)負數(shù)運算 resultNum = resultNum * (-1); else if (operator.equals(=) / 賦值運算 resultNum = getNumberFromText(); if (operateValidFlag) / 雙精度浮點數(shù)的運算 long t1; double t2; t1 = (long) resultNum; t2 = resultNum - t1; if (t2 = 0) resultText.setText(String.valueOf(t1); else resultText.setText

24、(String.valueOf(resultNum); / 運算符等于用戶按的按鈕 operator = key; firstDigit = true; operateValidFlag = true; /* * 從結(jié)果文本框中獲取數(shù)字 * * return */ private double getNumberFromText() double result = 0; try result = Double.valueOf(resultText.getText().doubleValue(); catch (NumberFormatException e) return result; public static void main(String args) Calculator calculator1 = new Calculator(); calculator1.setVisible(true); calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

展開閱讀全文
溫馨提示:
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)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!