版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.JAVA程序設(shè)計(jì)課程設(shè)計(jì)任務(wù)書一、課程設(shè)計(jì)的目的1、培養(yǎng)學(xué)生面向?qū)ο缶幊痰乃枷耄?、使學(xué)生熟悉JAVA語言的使用;3、培養(yǎng)學(xué)生JAVA編程的思想和方法;4、使學(xué)生掌握J(rèn)AVA編程調(diào)試的基本技能;5、培養(yǎng)學(xué)生分析、解決問題的能力。二、課程設(shè)計(jì)內(nèi)容與要求1、內(nèi)容一:1簡單計(jì)算器題目描述使用Java的GUI圖形用戶界面編程設(shè)計(jì)并編寫一個(gè)計(jì)算器程序,用戶可以通過鼠標(biāo)或者鍵盤操作輸入?yún)⒓舆\(yùn)算的數(shù)值和運(yùn)算符,要求能進(jìn)行加、減、乘、除等混合運(yùn)算?;疽髮?shí)現(xiàn)加、減、乘、除的雙目單類別的基礎(chǔ)運(yùn)算;實(shí)現(xiàn)提示GUI編程 Component的事件響應(yīng)。參考界面JAVA程序設(shè)計(jì)課程設(shè)計(jì)一、系統(tǒng)中所使用的數(shù)據(jù)對象及說
2、明1、Calculator類屬性屬性名稱類型描述JmbJMenuBar菜單欄Jm1 jm2 jm3 JMenu 菜單JmiJMenuItem菜單項(xiàng)fJFrame 實(shí)例化對象Panel1 1JPanel 輸入面板CommandsPanelJPanel 運(yùn)算符面板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
3、數(shù)字相乘quzheng JButton 數(shù)字相除dian JButton 點(diǎn)符號(hào)deng JButton 等于號(hào)zero JButton 一one JButton 二two JButton 三three JButton 四four JButton 五five JButton 六six JButton 七seven JButton 八eight JButton 九num1 String保存第一個(gè)運(yùn)算數(shù)字operator String保存運(yùn)算符號(hào)方法方法名稱功能Calculator計(jì)算器布局Add添加組件、面板addMouseListener添加鼠標(biāo)監(jiān)聽事件setJMenuBar設(shè)置菜單2、 系統(tǒng)
4、功能結(jié)構(gòu)及相關(guān)算法描述1、系統(tǒng)功能結(jié)構(gòu) 計(jì)算器按鍵文本框菜單欄標(biāo)題欄1-9、BackspaceCE、C+、-、*、/%、.、1/x=文本框幫助查看編輯標(biāo)題:計(jì)算器關(guān)于計(jì)算器幫助主題數(shù)學(xué)分組科學(xué)型標(biāo)準(zhǔn)型粘貼復(fù)制系統(tǒng)功能結(jié)構(gòu)圖2、 相關(guān)算法流程圖(1)加減法流程N(yùn)Y將S添加到show文本框執(zhí)行加、減法運(yùn)算得出SMun1是否存在(2) 乘除法流程N(yùn)Mun1是否存在Y執(zhí)行乘、除法運(yùn)算得出S將S添加到show文本框(3) 乘方取余法流程Mun1是否存在NY執(zhí)行乘方、取余法運(yùn)算得出S將S添加到show文本框三、系統(tǒng)運(yùn)行結(jié)果(截圖)1、主菜單四、課程設(shè)計(jì)總結(jié)通過此次課程設(shè)計(jì),使我更加扎實(shí)的掌握了有關(guān)JAVA
5、圖形界面布局等方面的知識(shí),雖然在設(shè)計(jì)過程中也遇到了很多問題,但經(jīng)過一次又一次的思考,一遍又一遍檢查和反復(fù)修改終于找到了原因所在,也暴露了前期我在這方面的知識(shí)欠缺。課程設(shè)計(jì)是一種實(shí)踐活動(dòng),不但可以提升專業(yè)知識(shí)和專業(yè)能力,也培養(yǎng)了我們獨(dú)立思考,動(dòng)手操作的能力,使我對抽象的知識(shí)有了具體的認(rèn)識(shí)。這對于我們的將來也有很大的幫助。此次課程設(shè)計(jì)也讓我明白沒有最完善的程序代碼,只有不斷地改善才能使程序變得更完美,同時(shí)也增強(qiáng)了我對JAVA的興趣,相信繼續(xù)保持下去對JAVA的理解一定會(huì)更上一層樓。附錄:程序源碼import java.awt.BorderLayout;import java.awt.Color;i
6、mport 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 java
7、x.swing.JTextField; public class Calculator extends JFrame implements ActionListener JMenuBar jmb; JMenu jm1,jm2,jm3; JMenuItem jmi; /* 計(jì)算器上的鍵的顯示名字 */ private final String KEYS = 7, 8, 9, /, sqrt, 4, 5, 6, *, %, 1, 2, 3, -, 1/x, 0, +/-, ., +, = ; /* 計(jì)算器上的功能鍵的顯示名字 */ private final String COMMAND = Ba
8、ckspace, CE, C ; /* 計(jì)算器上鍵的按鈕 */ private JButton keys = new JButtonKEYS.length; /* 計(jì)算器上的功能鍵的按鈕 */ private JButton commands = new JButtonCOMMAND.length; /* 計(jì)算器左邊的M的按鈕 */ /* 計(jì)算結(jié)果文本框 */ private JTextField resultText = new JTextField(0); / 標(biāo)志用戶按的是否是整個(gè)表達(dá)式的第一個(gè)數(shù)字,或者是運(yùn)算符后的第一個(gè)數(shù)字 private boolean firstDigit = t
9、rue; / 計(jì)算的中間結(jié)果。 private double resultNum = 0.0; / 當(dāng)前運(yùn)算的運(yùn)算符 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);
10、jm.add(jmi);jmi= new JMenuItem(粘貼(p) Ctrl+v);jm.add(jmi);jm2=new JMenu(查看(v);jmb.add(jm2);jmi= new JMenuItem(標(biāo)準(zhǔn)型(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)于計(jì)算器(A);jm3.add(jmi); / 初始化計(jì)算器 init(); / 設(shè)置計(jì)算器的背景顏色 this.setBackground(Color.LIGHT_GRAY); this.setTitle(計(jì)算器); / 在屏幕(500, 300)坐標(biāo)處顯示計(jì)算器 this.setLocation(500, 300); / 不許修改計(jì)算器的大小 this.setResizable(false); / 使計(jì)算器中各組件大小合適 this.pack(); /* * 初始化計(jì)算器 */ priva
12、te void init() / 文本框中的內(nèi)容采用右對齊方式 resultText.setHorizontalAlignment(JTextField.RIGHT); / 不允許修改結(jié)果文本框 resultText.setEditable(false); / 設(shè)置文本框背景顏色為白色 resultText.setBackground(Color.WHITE); / 初始化計(jì)算器上鍵的按鈕,將鍵放在一個(gè)面板內(nèi) JPanel calckeysPanel = new JPanel(); / 用網(wǎng)格布局器,4行,5列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為3個(gè)象素,垂直方向間隔為3個(gè)象素 calckeysP
13、anel.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); / 運(yùn)算符鍵用紅色標(biāo)示,其他鍵用藍(lán)色表示 keys3.setForeground(Color.red); keys8.setForeground(Color.red); keys13.setForeground(Color.red); keys18.setForegro
14、und(Color.red); keys19.setForeground(Color.red); / 初始化功能鍵,都用紅色標(biāo)示。將功能鍵放在一個(gè)面板內(nèi) JPanel commandsPanel = new JPanel(); / 用網(wǎng)格布局器,1行,3列的網(wǎng)格,網(wǎng)格之間的水平方向間隔為3個(gè)象素,垂直方向間隔為3個(gè)象素 commandsPanel.setLayout(new GridLayout(1, 3, 3, 3); for (int i = 0; i COMMAND.length; i+) commandsi = new JButton(COMMANDi); commandsPanel.
15、add(commandsi); commandsi.setForeground(Color.red); / 下面進(jìn)行計(jì)算器的整體布局,將calckeys和command面板放在計(jì)算器的中下部 / 新建一個(gè)大的面板,將上面建立的command和calckeys面板放在該面板內(nèi) JPanel panel1 = new JPanel(); / 面板采用邊界布局管理器,面板里組件之間的水平和垂直方向上間隔都為3象素 panel1.setLayout(new BorderLayout(3, 3); panel1.add(North, commandsPanel); panel1.add(Center,
16、calckeysPanel); / 建立一個(gè)面板放文本框 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)聽器 / 都使用同一個(gè)事件監(jiān)聽器,即本對象。本類的聲明中有implements
17、ActionListener for (int i = 0; i KEYS.length; i+) keysi.addActionListener(this); for (int i = 0; i = 0) / 用戶按了數(shù)字鍵或者小數(shù)點(diǎn)鍵 handleNumber(label); / handlezero(zero); else / 用戶按了運(yùn)算符鍵 handleOperator(label); /* * 處理Backspace鍵被按下的事件 */ private void handleBackspace() String text = resultText.getText(); int i
18、= text.length(); if (i 0) / 退格,將文本最后一個(gè)字符去掉 text = text.substring(0, i - 1); if (text.length() = 0) / 如果文本沒有了內(nèi)容,則初始化計(jì)算器的各種值 resultText.setText(0); firstDigit = true; operator = =; else / 顯示新的文本 resultText.setText(text); /* * 處理數(shù)字鍵被按下的事件 * * param key */ private void handleNumber(String key) if (first
19、Digit) / 輸入的第一個(gè)數(shù)字 resultText.setText(key); else if (key.equals(.) & (resultText.getText().indexOf(.) 0) / 輸入的是小數(shù)點(diǎn),并且之前沒有小數(shù)點(diǎn),則將小數(shù)點(diǎn)附在結(jié)果文本框的后面 resultText.setText(resultText.getText() + .); else if (!key.equals(.) / 如果輸入的不是小數(shù)點(diǎn),則將數(shù)字附在結(jié)果文本框的后面 resultText.setText(resultText.getText() + key); / 以后輸入的肯定不是第一個(gè)
20、數(shù)字了 firstDigit = false; /* * 處理C鍵被按下的事件 */ private void handleC() / 初始化計(jì)算器的各種值 resultText.setText(0); firstDigit = true; operator = =; /* * 處理運(yùn)算符鍵被按下的事件 * * param key */ private void handleOperator(String key) if (operator.equals(/) / 除法運(yùn)算 / 如果當(dāng)前結(jié)果文本框中的值等于0 if (getNumberFromText() = 0.0) / 操作不合法 ope
21、rateValidFlag = false; resultText.setText(除數(shù)不能為零); else resultNum /= getNumberFromText(); else if (operator.equals(1/x) / 倒數(shù)運(yùn)算 if (resultNum = 0.0) / 操作不合法 operateValidFlag = false; resultText.setText(零沒有倒數(shù)); else resultNum = 1 / resultNum; else if (operator.equals(+) / 加法運(yùn)算 resultNum += getNumberFr
22、omText(); else if (operator.equals(-) / 減法運(yùn)算 resultNum -= getNumberFromText(); else if (operator.equals(*) / 乘法運(yùn)算 resultNum *= getNumberFromText(); else if (operator.equals(sqrt) / 平方根運(yùn)算 resultNum = Math.sqrt(resultNum); else if (operator.equals(%) / 百分號(hào)運(yùn)算,除以100 resultNum = resultNum / 100; else if (operator.equals(+/-) / 正數(shù)負(fù)數(shù)運(yùn)算 res
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年國際足球賽事場地租賃合同
- 2024年建筑施工勞務(wù)承包簡約合同樣本
- 2024樁基礎(chǔ)工程專業(yè)分包合同模板
- 2024代理合同樣式
- 2024技術(shù)參股合作協(xié)議書
- 2024版藥品代理合同
- 二手房交易合同
- 店面承租協(xié)議書范本
- 2024項(xiàng)目開發(fā)全過程專項(xiàng)法律服務(wù)合同
- 2024常用合作合同范本
- 2023~2024學(xué)年第一學(xué)期高一期中考試數(shù)學(xué)試題含答案
- 《消化道出血》優(yōu)秀課件
- (完整版)青年就業(yè)創(chuàng)業(yè)見習(xí)基地匯報(bào)材料(完整版)
- 月光(羽泉)原版五線譜鋼琴譜正譜樂譜.docx
- 660MW機(jī)組空預(yù)器聲波吹灰器可行性研究報(bào)告最新(精華版)
- 控制柜安裝施工方案
- 動(dòng)車組火災(zāi)檢測(報(bào)警)系統(tǒng)
- 水面垃圾自動(dòng)打撈船的設(shè)計(jì) (全套圖紙)
- 煙草企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化 規(guī)范
- 裝飾施工技術(shù)標(biāo)準(zhǔn)及要求
- 2018秋七年級虎外考試卷英語試卷
評論
0/150
提交評論