版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 目錄 二、課程設計任務.2 三、開發(fā)工具與平臺. 3 4、 設計思路.4 4.1、 界面設計.4 4.2.2、程序流程圖.5 4.2.3、主要代碼展示及說明.5 一、課程設計目的1、熟練掌握java面向?qū)ο缶幊獭?、選擇合適的數(shù)據(jù)結(jié)構實現(xiàn)需求。3、熟練使用各種控制結(jié)構。4、GUI組件、事件處理技術。 二、課程設計任務 2.1、設計任務設計一個簡易的計算器,可以進行四則運算:加、減、乘、除等(限于十進制下)程序要求:(1)應具有相應的界面,可參考Windows操作系統(tǒng)自帶的計算器界面。(2)操作符號定為:“+”,“-”,“*”,“/”,“+/-”等。(按國際慣例設計)
2、(3)用戶通過點擊程序界面上按鈕,實現(xiàn)數(shù)字、運算符的輸入操作。(4)以上部分為必須完成的內(nèi)容。選作部分:(1)具有操作符號“1/x”,“sqrt”(開方),“.”(小數(shù)功能)等。 2.2、課程設計要求: (1)應用自己所學課程知識完成對計算器的基本任務。 (2)查閱相關資料,學習和掌握項目中涉及的新知識,提高自學能力。 (3)通過應用java程序編寫計算器來提升自己對簡單的圖形界面有一定的掌握和了解。2.3、需求分析1. 設計的計算器可以完成加法、減法、乘法、除法的簡單運算。2. 實現(xiàn)一些簡單的擴展運算,如:正負號、倒數(shù)、退格、清零等功能。3. 添加小數(shù)點功能,用以實現(xiàn)浮點型數(shù)據(jù)的計算。4.
3、使用布局管理器設計一個計算器的界面,使用事件監(jiān)聽器處理數(shù)據(jù)的輸入,并完成相關的計算。三、開發(fā)工具與平臺 3.1、開發(fā)工具 Microsoft Windows 7旗艦版 3.2、開發(fā)平臺 JDK1.6.0-02 和UE編譯器 四、設計思路 4.1、界面設計:(如圖3-1)圖3-1 4.2.1、邏輯設計:(1) 根據(jù)所設計出來的界面,首先要設計其GUI界面,總體界面有一個文本框,20個按鈕,總體界面用BorderLayout布局,文本框放置在最NORTH,然后0到9以及+,-,*,/等按鈕放置到一個面板Panel中,完成界面設計。(2) 設計計算流程,首先點擊數(shù)字按鈕時,將按鈕數(shù)值添加到文本框當中
4、,并將該數(shù)值保存到一個字符串中,再次點擊數(shù)字按鈕時,將之前保存的字符串與新的數(shù)值拼接起來,再添加到文本框當中,直到點擊運算符按鈕時,將文本框當中的字符串保存在一個字符串變量中,然后重置文本框內(nèi)容,將運算符號顯示到文本框中,隨后輸入第二個計算數(shù)據(jù)時,用同樣的辦法保存數(shù)據(jù),最后通過控制“=”運算符先將字符串數(shù)據(jù)轉(zhuǎn)化成雙精度類型,然后計算出結(jié)果并顯示到文本框當中。(3) 基本運算設計完成以后則開始考慮其他個別功能的實現(xiàn),例如倒數(shù)、清零、退格等功能的實現(xiàn),清零直接重置文本框內(nèi)容,退格功能則采用substring函數(shù)截取字符串長度。 4.2.2、程序流程圖: 4.2.3、主要代碼展示及說明: 總體代碼的
5、設計:程序采用繼承windowadapter類,新建Jframe窗體,利用數(shù)組來定義JBotton按鈕,同時利用數(shù)組注冊監(jiān)聽,采用4行5列網(wǎng)格布局,完成計算器界面的基本設置,在窗體的正常關閉方面,采用匿名類實現(xiàn)窗體的正常關閉。最后對按鈕進行計算分析,分別設定輸入數(shù)據(jù)的A類、運算符控制的Opertion類,退格功能的BackSpace類、計算結(jié)果的Result類等等,一步步實現(xiàn)計算器的基本功能?。?)類A的設計(數(shù)據(jù)的輸入)class A implements ActionListenerpublic void actionPerformed(ActionEvent e)String a = J
6、text.getText();String s = e.getActionCommand();if(a.equals("0.")|a.equals("+")|a.equals("-")|a.equals("*")|a.equals("/") Jtext.setText(s);elseif(flag2)Jtext.setText(s);flag2=false;elseJtext.setText(a+s);功能解釋:程序開始時,程序初始化文本框的內(nèi)容為“0.”,點擊數(shù)字按鈕,則調(diào)用類A,首先用a來獲
7、取當前文本框內(nèi)容,s來獲取按鈕數(shù)值,然后進行判斷,若a的值為上述代碼的值則輸出s的值,再次點擊數(shù)字按鈕時,再次調(diào)用A類,此時a的值為上次輸入的s值,第一個if語句不滿足,執(zhí)行下個if語句if(flag2),flag2初始值為false,該語句的功能是在執(zhí)行了“=”號按鈕時,防止新的數(shù)字按鈕的值合并到到已經(jīng)得出的結(jié)果上,例如:12+12=24,此時再點擊數(shù)字按鈕3時,則文本框內(nèi)容被重置,輸出數(shù)值3,而不是243,如果if(flag2)不滿足,則將字符串a(chǎn)和s合并并輸出,得出第一個要計算的數(shù)據(jù)。(2)類Opertion的設計:(運算符的控制)class Opertion implements Ac
8、tionListener public void actionPerformed(ActionEvent e)cal=e.getActionCommand();if(flag1=true) x=Jtext.getText();Jtext.setText(cal);flag1=false;功能解釋:當點擊運算符控制按鈕時,首先將運算符的數(shù)值賦值給cal(初值為空),緊接著進行判斷,flag1初值為ture,該類的作用為在點擊運算符按鈕時,將計算的第一個數(shù)據(jù)保存在x字符串變量當中,然后將文本框內(nèi)容重置為點擊的運算符的數(shù)值,類的結(jié)尾將flag1賦值為false,防止再次點擊運算符按鈕時改變了x的值。
9、(附:此時文本框內(nèi)容為運算符的值,輸入第二個計算數(shù)據(jù)時,點擊數(shù)字按鈕,則再次調(diào)用A類,此時滿足A類中第一個if語句,文本框內(nèi)容被重置為數(shù)字按鈕的值,接下來與獲取第一個計算數(shù)據(jù)步驟一樣,直到點擊“=”號運算符為止?。?)類Result的設計:(計算并輸出結(jié)果)class Result implements ActionListener/計算并顯示結(jié)果public void actionPerformed(ActionEvent e)double num1;num1=Double.parseDouble(x);y=Jtext.getText();double num2;num2=Double.p
10、arseDouble(y);double result=0;if(num2!=0)if(cal.equals("+")result=num1+num2;if(cal.equals("-")result=num1-num2;if(cal.equals("*")result=num1*num2;String s1=Double.toString(result);Jtext.setText(s1);if(cal.equals("/")if(num2=0)Jtext.setText("除數(shù)不能為0");
11、elseresult=num1/num2;String s1=Double.toString(result);Jtext.setText(s1); flag1=true; flag2=true;功能解釋:首先定義兩個Double型num1,num2,將之前保存的第一個計算數(shù)據(jù)x強制轉(zhuǎn)換為Double型后賦值給num1,接著用字符串變量y來獲取當前文本框的內(nèi)容,即第二個計算數(shù)據(jù)的值,同樣再將其強制轉(zhuǎn)換Double型后賦值給num2,然后進行運算符判斷,對cal的值進行比較,然后進行相應的計算,將計算的結(jié)果轉(zhuǎn)換成字符串后將其輸出到文本框中,在類的最后將flag1、flag2賦值為true,作用是將
12、計算的結(jié)果當作第二次計算的數(shù)據(jù)進行再運算,即將結(jié)果重新賦值給x作為第一個計算數(shù)據(jù)?。ǜ剑涸诖祟愔羞€考慮了當除數(shù)為零的情況。)(4)類BackSpace的設計:(功能類退格)class BackSpace implements ActionListenerpublic void actionPerformed(ActionEvent e)String s = e.getActionCommand();String s1 = Jtext.getText();if(s.equals("退格")s1=new String (s1.substring(0,s1.length()-1)
13、;Jtext.setText(s1);功能解釋:這是計算器附加功能的實現(xiàn),這里只介紹退格功能,像正負號、求倒數(shù)、清零等功能相似,所以就不再一一介紹。首先獲取退格按鈕的命令值賦給s,然后獲取當前文本框的內(nèi)容,即輸入的數(shù)據(jù),將其賦給s1,接著進行判斷,利用substring函數(shù)將s1字符串截取為從第一個字符至倒數(shù)第二個字符為止的字符串并重新賦值給s1,再將其輸出到文本框,實現(xiàn)退格的功能。 4.3、 程序測試1.簡單的運算:(以加法為例:123+456)分析:計算的結(jié)果為579.0,為雙精度型,計算的結(jié)果被設置在文本框的最右端,該計算器的一個特點是可直接在文本框中輸入數(shù)據(jù)以及進行更改。2.倒數(shù)的運算
14、:(以123為例)分析:輸出的結(jié)果如圖所示,倒數(shù)功能實現(xiàn),計算時,不僅是結(jié)果,輸入的數(shù)據(jù)同樣可以先實現(xiàn)倒數(shù)功能后再進行相應的計算,沒有影響!3.退格的運算:(以123為例)分析:輸出的結(jié)果如圖所示,本計算器退格鍵有一個特點是,就算是是計算后得出的結(jié)果也能實現(xiàn)退格,缺點是不能很好的處理小數(shù)點的問題,因為小數(shù)點也是字符串的一部分。4.正負號的運算:(以123為例)分析:輸出的結(jié)果如圖所示,正負號添加能夠很好的實現(xiàn),但可以進行一些改進,比如在計算過程當中直接點擊負號運算符輸入負數(shù)進行計算!5.總體分析:該計算器基本運算沒有問題,清零、正負號、求倒數(shù)、退格功能都能很好的實現(xiàn),總體能完成一個計算器的基本
15、功能,但仍有許多地方需要改進,比如小數(shù)點的實現(xiàn)所存在的一些問題,雖然在基本的運算過程當中不會造成太大影響,但這依然不能認為是一個很好的計算器,同時,在另一方面,該計算器還沒能很好的實現(xiàn)連續(xù)計算的功能,必須每次按下等號按鈕計算出結(jié)果后才能用產(chǎn)生的結(jié)果接著進行下一次的計算,改進的方法是在運算符上同時注冊Result類,讓運算符同時擁有計算結(jié)果的功能。五、實驗小結(jié)本次課程設計到此算是告一段落了,經(jīng)過這次的學習,我學到了很多東西,在此基礎上更加鞏固了自己對java的認識與了解。在做本項目是時候,會遇到很多小問題,比如說,在整個運算過程中要如何確保輸入的計算數(shù)據(jù)哪個是第一個計算數(shù)據(jù)的,哪個是第二個計算數(shù)
16、據(jù)的,同時也要區(qū)分運算符,因為該計算器程序應用的都是利用字符串來完成計算的,而且不能重復輸出運算符,更不能將運算符錯誤的存儲在了第一個計算數(shù)據(jù)的數(shù)值中,也得考慮到萬一不小心重復點擊了運算符按鈕會不會造成第一個計算數(shù)據(jù)的重新賦值等等問題,最后想到利用布爾類型來很好的控制運算符的應用!此次課程設計讓我更了解熟悉了Java中的圖形用戶界面和它的編程方式。在完成課題的過程中也不斷充實了自己,學習到了很多以前沒有學習到的知識,收獲很大。最大的收獲就是對大學學習的總結(jié)和培養(yǎng)了解決困難的信心和能力,使我對所學知識能夠融會貫通,又不斷豐富了新知識。Java計算器設計使得我們對所學的專業(yè)課有了更為深刻的認識,使
17、得知識得到了鞏固和提高。在接下來的時間里,我覺得我要更加努力的往深一層次的方面看齊,了解更多有關java的知識,對java有更深一步的了解,我會一步一步的走下去!六、附錄 (程序代碼)import java.awt.*;import javax.swing.*;import java.awt.event.*;public class TheCalculator extends WindowAdapter/程序框架繼承自WindowAdapter類private JTextField Jtext=new JTextField("0.");private JFrame f=ne
18、w JFrame("計算器-趙磊");private String x=""private String y=""private String cal=""private boolean flag1=true;private boolean flag2=false;public void init()/初始化String buttonValue = new String"1","2","3","+","C",&quo
19、t;4","5","6","-","退格","7","8","9","*","1/x","0","+/-",".","/","="Container contain = f.getContentPane();JPanel Jpan = new JPanel();JButton Jb=new JButton20
20、;contain.setLayout(new BorderLayout();/采用4行5列的網(wǎng)格布局Jpan.setLayout(new GridLayout(4,5);Jtext.setHorizontalAlignment(JTextField.RIGHT);contain.add(Jtext,"North");contain.add(Jpan);A num=new A();/數(shù)據(jù)Result re=new Result();/結(jié)果Opertion op=new Opertion();/運算符Clear cl=new Clear();/清零BackSpace back=
21、new BackSpace();/退格CountDown count_d=new CountDown();/倒數(shù)Strains stra=new Strains();/相反數(shù)for(int i = 0 ; i <Jb.length ; i+)/利用For循環(huán)添加按鈕Jbi = new JButton (buttonValuei);Jpan.add(Jbi); if(i=3 | i=8 | i=13 | i=18)Jbi.addActionListener(op);if(i=0 | i=1 | i=2 | i=5 | i=6 | i=7| i=10 | i=11 | i=12 | i=15
22、 | i=17)Jbi.addActionListener(num);if(i=3|i=4|i=8|i=9)|(i>12)&&(i<=19)&&i!=15)Jbi.setForeground(new Color(255, 0, 0);elseJbi.setForeground(new Color(0, 0, 255); /控制按鈕字體顏色Jb4.addActionListener(cl);Jb9.addActionListener(back);Jb14.addActionListener(count_d);Jb16.addActionListener
23、(stra);Jb19.addActionListener(re);f.setSize(320,240);f.setVisible(true);f.addWindowListener(/采用匿名類實現(xiàn)窗口的正常關閉new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(0););class A implements ActionListener/輸入數(shù)據(jù)public void actionPerformed(ActionEvent e)String a = Jtext.getText();String s =
24、 e.getActionCommand();if(a.equals("0.")|a.equals("+")|a.equals("-")|a.equals("*")|a.equals("/") Jtext.setText(s);elseif(flag2)Jtext.setText(s);flag2=false;elseJtext.setText(a+s);class Opertion implements ActionListener public void actionPerformed(Act
25、ionEvent e)cal=e.getActionCommand();if(flag1=true) x=Jtext.getText();Jtext.setText(cal);flag1=false;class Clear implements ActionListener/清零功能public void actionPerformed(ActionEvent e)Jtext.setText("0.");class CountDown implements ActionListener/求倒數(shù)類public void actionPerformed(ActionEvent
26、e)String s = e.getActionCommand();String s1 = Jtext.getText();if(s.equals("1/x")s1 = new String (""+1/Double.parseDouble(s1);Jtext.setText(s1);class Strains implements ActionListener /求相反數(shù)類public void actionPerformed(ActionEvent e)String s = e.getActionCommand();String s1 = Jtext.getText();if(s.equals("+/-")s1=new String (""+(0-Double.parseDouble(s1);Jtext.setText(s1);class BackSpace implements ActionListener/退格功能public void actionPerformed(ActionEvent e)String s = e.getActionCom
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高二化學寒假銜接講練 (人教版)寒假提升練-專題10 原電池(教師版)
- 2021年國家公考行測試題和答案詳解
- 廣東省廣州市番禺區(qū)2023-2024學年七年級上學期期末生物試題
- 2020-2022年運動員醫(yī)療用品供應資格商采購項目招標文件
- 2024年07月湖北漢口銀行消費者權益保護部社會招考(726)筆試歷年參考題庫附帶答案詳解
- 2024年淳安縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年湖南醫(yī)學高等??茖W校第三附屬醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年07月浙江浙江泰隆商業(yè)銀行溫州分行社會招考筆試歷年參考題庫附帶答案詳解
- 2024年07月浙江浙江民泰商業(yè)銀行社會招考(717)筆試歷年參考題庫附帶答案詳解
- 2024年深澤縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年南京市第一醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024年度寵物用品銷售代理合同范本3篇
- 湖南2025年湖南生物機電職業(yè)技術學院招聘35人歷年參考題庫(頻考版)含答案解析
- 部隊物業(yè)服務投標方案
- 2024北京海淀五年級(上)期末英語(教師版)
- 2024年民營醫(yī)院醫(yī)生與醫(yī)院合作協(xié)議
- 銷售單 代合同范例
- 2024-2025學年語文二年級上冊 部編版期末測試卷(含答案)
- 煤炭供應項目(運輸供貨方案)
- 醫(yī)院搶救領導工作小組制度
評論
0/150
提交評論