《 面向?qū)ο蟪绦蛟O(shè)計》 課程設(shè)計報告題 目: 科學(xué)計算器軟件設(shè)計與實現(xiàn) 院 (系):信息科學(xué)與工程學(xué)院專業(yè)班級: 計算機科學(xué)與技術(shù)1201班 學(xué)生姓名:程 偉學(xué) 號:指導(dǎo)教師:吳 奕20 14 年 12 月 29 日至20 15 年 1 月 9 日 華中科技大學(xué)武昌分校制 面向?qū)ο蟪绦蛟O(shè)計 課程設(shè)計任務(wù)書一、設(shè)計(調(diào)查報告/論文)題目科學(xué)計算器軟件設(shè)計與實現(xiàn)二、設(shè)計(調(diào)查報告/論文)主要內(nèi)容內(nèi)容:完成一個圖形界面的計算器,可以在標(biāo)準(zhǔn)計算器和科學(xué)計算器之間切換,標(biāo)準(zhǔn)計算器的基本功能有:加、減、乘、除基本算術(shù)運算;科學(xué)計算器的基本功能有:三角函數(shù)、進制轉(zhuǎn)換、對數(shù)、階乘;一元二次方程界面可以求一元二次方程的解;勾股定理界面可以求直角三角形邊長?;竟δ芘c要求:1.標(biāo)準(zhǔn)計算器:加、減、乘、除、求平方根;2.科學(xué)計算器:進制轉(zhuǎn)換、求解三角函數(shù)、對數(shù)運算、階乘;3.一元二次方程:求一元二次方程的解;4.勾股定理:求直角三角邊長。 三、原始資料1.《面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計》指導(dǎo)書2. 耿祥義.JAVA大學(xué)實用教程.北京:清華大學(xué)出版社,2009.四、要求的設(shè)計(調(diào)查/論文)成果1.課程設(shè)計報告2.課程設(shè)計軟件五、進程安排布置任務(wù),查找資料、需求分析1天總體設(shè)計1天詳細設(shè)計1.5天編制源程序?qū)崿F(xiàn)3.5天測試與修改1天撰寫課設(shè)報告2天六、主要參考資料[1] 張廣彬. Java課程設(shè)計案例精編(第二版).北京:清華大學(xué)出版社, 2011. [2] 耿祥義. Java課程設(shè)計(第二版).北京:清華大學(xué)出版社, 2008.[3] 耿祥義.JAVA大學(xué)實用教程.北京:清華大學(xué)出版社,2009.[4] 鄒林達.陳國君 Java2程序設(shè)計基礎(chǔ).北京:清華大學(xué)出版社,2010.[5] 鄒林達.Java2程序設(shè)計基礎(chǔ)實驗指導(dǎo).北京:清華大學(xué),2010.指導(dǎo)教師(簽名):20 年 月 日目錄1需求與總體設(shè)計11.1需求分析11.2總體設(shè)計思路11.3功能圖21.4類圖22詳細設(shè)計32.1詳細設(shè)計思路32.2類圖設(shè)計說明和細化103編碼實現(xiàn)113.1java編碼實現(xiàn)114系統(tǒng)測試59總 結(jié)61 1需求與總體設(shè)計1.1需求分析1.剛啟動計算器時的狀態(tài):開始計算按鍵開始鍵"ON"清零:計算剛啟動時,或者任何時候鍵入了清零鍵,計算器所處的狀態(tài)。
2.一個操作數(shù):輸入了一個操作數(shù)時計算器所處的狀態(tài),如鍵入“”后的狀態(tài),此時操作數(shù)為“”,或者依次鍵入“”、“”后的狀態(tài),此時操作數(shù)為“”。 3.運算結(jié)果:鍵入了“=”鍵后計算器所處的狀態(tài),如依次鍵入“3+5=”之后計算器的狀態(tài)。在此狀態(tài)如果輸入數(shù)字,輸入的數(shù)字將作為第一個操作數(shù),開始一次新的計算。4.一個操作數(shù)和一個兩元符號:輸入了一個操作數(shù)和加減乘除中的一個鍵后計算器的狀態(tài),如依次輸入“2+”或“31×5=÷”之后計算器的狀態(tài)。5.操作數(shù)兩元符操作數(shù):輸入了一個操作數(shù)、一個加減乘除符號和另一個操作數(shù)后計算器所處的狀態(tài),如依次鍵入“30÷4”或“3+5=÷5”后計算器的狀態(tài)。6.操作數(shù)兩元符運算結(jié)果:輸入了一個操作數(shù)、一個加減乘除符號和另一個操作數(shù)后緊接著鍵入開方鍵計算器所處的狀態(tài)。7.錯誤:執(zhí)行非法計算后所處的狀態(tài),如執(zhí)行÷0計算或者對負數(shù)的開方計算后的狀態(tài)。1.4類圖2詳細設(shè)計2.1詳細設(shè)計思路流程圖,如圖6。 圖6 流程圖設(shè)置窗體窗體名稱繼承JFrame類和接口,并實現(xiàn)public void ( e){}方法。
定義菜單、菜單條、菜單項、按鈕、文本框、容器,設(shè)置為private類型。定義變量double memoryd;//使用內(nèi)存中存儲的數(shù)字; df;//保留小數(shù)位數(shù)。使用private JButton ()方法添加按鈕并給按鈕命名,使用setFont(new Font("楷體", Font.BOLD, 30)); (new Color(250,0,0));方法設(shè)置按鈕的字體和字體顏色。設(shè)置數(shù)字按鈕1到9并添加監(jiān)控,使其在發(fā)生鼠標(biāo)事件時改變按鈕顏色(new (){public void ( e) {jButton.(new Color(0,100,0));}public void ( e) {jButton.(new Color(0,150,100));}public void ( e) {jButton.(new Color(0,0,250));}public void ( e) {jButton.(new Color(250,0,0));}public void ( e) {jButton.(new Color(0,250,0));}public void ( e) {jButton.(new Color(250,250,0));}});開根號運算,定義 = new JButton("sqrt");對其設(shè)置監(jiān)控,調(diào)用Math.sqrt()方法來實現(xiàn)開根號運算,并在文本框中輸出結(jié)果,.(new () {public void ( e) {double a=Double.(.getText());double b;if(a='0'&&e.()0){.setText(String.valueOf(df.format(Math.ln(i))));}else{.setText("負數(shù)不能求對數(shù)!");}}});將科學(xué)計算器按鈕添加到j(luò)Panel1中,通過()方法返回jPanel1,再定義,將jPanel1、按鈕、文本框添加到中,通過調(diào)用()返回,窗體通過調(diào)用this.(());在窗體中顯示出相對應(yīng)的按鈕。
書寫主函數(shù) = new ();.tion(JFrame.);//關(guān)閉窗口.(true);Image image=.this.().("計算器圖標(biāo).jpg");.this.(image);()方法返回此圖標(biāo)的image并賦給image,通過this來調(diào)用(imager)方法來改變窗體標(biāo)題欄上的圖標(biāo)2.2類圖設(shè)計說明和細化java應(yīng)用程序由許多類所構(gòu)成,類圖的設(shè)計與實現(xiàn),是Java實現(xiàn)面向?qū)ο髴?yīng)用程序的核心。本文通過一個具體的應(yīng)用程序的設(shè)計與實現(xiàn)過程,具體說明了利用UML類圖設(shè)計Java應(yīng)用程序,使得開發(fā)過程標(biāo)準(zhǔn)化、可視化,代碼編程簡單化。 頂層為類名,一般用加粗字體表示。假如類是抽象的,其名稱用斜體表示;假如類是接口,則在類名上方標(biāo)注。中間層包含類的屬性(或變量),底層包含類的方法。與類名相似,假如方法是抽象的,那么它的名稱也用斜體表示。
我們要設(shè)計的應(yīng)用程序應(yīng)用程序在基于字符的網(wǎng)格上畫點、框和文本串,該應(yīng)用程序涉及到Java面向?qū)ο蟮脑S多概念與應(yīng)用方法,非常系統(tǒng)、全面,在您仔細研讀后,定能迅速把握UML類圖,并將其應(yīng)用到實際的Java應(yīng)用程序開發(fā)過程中。為減少代碼長度,讓程序簡單易懂,這里使用Java控制臺窗口顯示程序運行結(jié)果。該程序總共由10個大類組成,以下分別介紹。一、Point類在程序中定義的第一個類是Point類,該類用于通過x和y坐標(biāo)在網(wǎng)格上標(biāo)識一點。在該類中,有2個成員變量x和y,類圖中,“-”表示變量或方法為PRivate,“+”表示public,“#”則表示。該類定義了三個不同的構(gòu)造函數(shù),這是重載()的例子。 接著該類設(shè)計了7個訪問方法。getX()和getY()方法分別返回一點的x和y坐標(biāo)。SetX()和setY()方法根據(jù)參數(shù)xValue和yValue的值設(shè)置這些坐標(biāo)的值。兩個add()方法通過被訪問點的坐標(biāo)加上一個值來建立一個新的Point對象。New運算符建立類的新實例。它后面緊跟著初始化新生成實例的構(gòu)造函數(shù)。() 方法返回類String的一個對象,該對象用一個有序?qū)砻枋鲆粋€點。
3編碼實現(xiàn)源代碼import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.text.;import java.awt.Font;import java.awt.;import java.awt.Image;import java.awt.event.;import java.awt.event.; public class extends JFrame {public static void main(String[] args) {//主方法 = new ();.tion(JFrame.);//實現(xiàn)關(guān)閉窗口.(true);}private static final long = 1L;private JPanel = null;private JPanel jPanel = null;private JButton jButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private = null;private = null;//作為輸入M用private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;double memoryd; //使用內(nèi)存中存儲的數(shù)字int memoryi;//科學(xué)計算器按鈕private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;//A- JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JButton = null;private JPanel jPanel1 = null;private JPanel = null;private String str=""; private double dataone;private char ='A';private boolean =false;private = null;private JMenu jMenu = null;private = null;private = null;private JMenu jMenu1 = null;private = null;private = null;private JMenu jMenu2 = null;private = null;private = null;private = null;private = null; df;//保留小數(shù)位數(shù)private JButton () {if (jButton == null) {jButton = new JButton();jButton.setText("9");jButton.setFont(new Font("楷體", Font.BOLD, 30));jButton.(new Color(250,0,0));//紅色、綠色和藍色jButton.(false);jButton.(new () {public void ( e) {str+="9";.setText(str);}});//單擊后變色jButton.(new (){public void ( e) {jButton.(new Color(0,100,0));}public void ( e) {jButton.(new Color(0,150,100));}public void ( e) {jButton.(new Color(0,0,250));}public void ( e) {jButton.(new Color(250,0,0));}public void ( e) {jButton.(new Color(0,250,0));}public void ( e) {jButton.(new Color(250,250,0));}});}return jButton;}private JButton () {if ( == null) { = new JButton();.setText("/");.setFont(new Font("楷體", Font.BOLD, 30));.(new Color(0,150,100));.(new () {public void ( e) {str=.getText();='/';dataone=Double.(str);str="";.setText(str);}});}return ;}private JButton () {if ( == null) { = new JButton("sqrt");.setFont(new Font("楷體", Font.BOLD, 30));.(new Color(0,0,200));.(new () {public void ( e) {double a=Double.(.getText());double b;if(a