JAVA課程設(shè)計(jì)模擬科學(xué)計(jì)算器_第1頁
JAVA課程設(shè)計(jì)模擬科學(xué)計(jì)算器_第2頁
JAVA課程設(shè)計(jì)模擬科學(xué)計(jì)算器_第3頁
JAVA課程設(shè)計(jì)模擬科學(xué)計(jì)算器_第4頁
JAVA課程設(shè)計(jì)模擬科學(xué)計(jì)算器_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、課程設(shè)計(jì)報(bào)告課程:模擬科學(xué)計(jì)算器 學(xué)號(hào): 姓名: 班級(jí): 教師: 時(shí)間:10.12.1011.01.12 計(jì)算機(jī)科學(xué)與技術(shù)系課程設(shè)計(jì)指導(dǎo)書姓 名學(xué) 號(hào)班 級(jí)課程名稱java課程性質(zhì)專業(yè)必修課設(shè)計(jì)時(shí)間2010年12 月10日2011年01月12日設(shè)計(jì)名稱模擬科學(xué)計(jì)算器設(shè)計(jì)目的鞏固所學(xué)理論知識(shí),提高程序設(shè)計(jì)能力的重要實(shí)踐環(huán)節(jié)。綜合應(yīng)用java基礎(chǔ)知識(shí)和基本方法。設(shè)計(jì)要求界面模擬windows中的計(jì)算器程序。實(shí)現(xiàn)基本數(shù)學(xué)運(yùn)算、函數(shù)等功能:加、減、乘、除、階乘、正弦、余弦和指數(shù)運(yùn)算。實(shí)現(xiàn)要點(diǎn):添加相關(guān)組件并進(jìn)行按鈕事件處理。要求提交application和applet兩個(gè)版本的程序。設(shè)計(jì)思路與設(shè)計(jì)過程

2、設(shè)計(jì)application和applet兩個(gè)版本的程序,對(duì)application運(yùn)用繼承jframe設(shè)計(jì),類的設(shè)計(jì)構(gòu)造方法利用等。而applet則繼承applet,在瀏覽器上運(yùn)行。application過程:1. 菜單欄設(shè)計(jì).2. 文本域,即為計(jì)算器的屏幕顯示區(qū)域3. 初始化操作4. 統(tǒng)一設(shè)置按鈕的的使用方式5. 計(jì)算器的基礎(chǔ)操作(+ - )6. 運(yùn)算符號(hào)的事件監(jiān)聽7. 清除按鈕的事件監(jiān)聽8. 數(shù)字輸入的事件監(jiān)聽9. 小數(shù)點(diǎn)的事件監(jiān)聽10. main方法applet過程:1. init()方法:完成初始化操作;2. 事件統(tǒng)一監(jiān)聽;3. 科學(xué)計(jì)算;4. 建立calucator.html;5. 瀏

3、覽器運(yùn)行;計(jì)劃與進(jìn)度12.10-12.13 復(fù)習(xí)java程序開發(fā)的相關(guān)操作,了解“計(jì)算器相關(guān)知識(shí)”;12.14-12.17 熟悉題目并理解,及找尋相關(guān)資料;12.18-12.20 根據(jù)題目要求進(jìn)行需求分析設(shè)計(jì);12.21-12.25 對(duì)application進(jìn)行總體程序設(shè)計(jì);12.26-12.30 對(duì)applet進(jìn)行相關(guān)各功能的程序設(shè)計(jì);12.31-01.05 對(duì)程序進(jìn)行細(xì)節(jié)完善;01.06-01.10 進(jìn)行調(diào)試運(yùn)行并完成資料歸檔。任課教師意 見備 注設(shè)計(jì)名稱:模擬科學(xué)計(jì)算器日期:2010年01月05日 設(shè)計(jì)內(nèi)容:application和applet兩個(gè)版本的程序,實(shí)現(xiàn)基本數(shù)學(xué)運(yùn)算、函數(shù)等功能

4、:加、減、乘、除、階乘、正弦、余弦和指數(shù)運(yùn)算。對(duì)application運(yùn)用繼承jframe設(shè)計(jì),類的設(shè)計(jì)構(gòu)造方法利用等。而applet則繼承applet,在瀏覽器上運(yùn)行。設(shè)計(jì)目的與要求:界面模擬windows中的計(jì)算器程序。實(shí)現(xiàn)基本數(shù)學(xué)運(yùn)算、函數(shù)等功能:加、減、乘、除、階乘、正弦、余弦和指數(shù)運(yùn)算。實(shí)現(xiàn)要點(diǎn):添加相關(guān)組件并進(jìn)行按鈕事件處理。要求提交application和applet兩個(gè)版本的程序。設(shè)計(jì)環(huán)境或器材、原理與說明:設(shè)計(jì)環(huán)境或器材: 硬件:計(jì)算機(jī) 軟件:myeclipse 集成開發(fā)環(huán)境 java jcreator pro;設(shè)計(jì)原理說明:運(yùn)用application和applet兩個(gè)版本的

5、程序。設(shè)計(jì)過程(步驟)或程序代碼(可以加頁):application程序代碼:import java.awt.*;import java.awt.event.*;import java.text.decimalformat;import javax.swing.*;public class calucator extends jframe private jtextfield tf;private jpanel panel1, panel2, panel3, panel4;private jmenubar mybar;private jmenu menu1, menu2, menu3;priv

6、ate jmenuitem edititem1, edititem2, help1, help2, help3;private jradiobuttonmenuitem seeitem1, seeitem2;/單選框private jcheckboxmenuitem seeitem3;/復(fù)選框private buttongroup bgb;private string back;private boolean ifresult = true, flag = false;private string oper = =;private double result = 0;private num n

7、umactionlistener;private decimalformat df;public calucator()super(科學(xué)計(jì)算器);/設(shè)置標(biāo)題欄df = new decimalformat(#.#);/保留四位小數(shù)this.setlayout(new borderlayout(10, 5);panel1 = new jpanel(new gridlayout(1, 3, 10, 10);panel2 = new jpanel(new gridlayout(5, 6, 5, 5);/5行6列panel3 = new jpanel(new gridlayout(5, 1, 5, 5)

8、;panel4 = new jpanel(new borderlayout(5, 5);/* * 菜單欄 */mybar = new jmenubar();menu1 = new jmenu(編輯(e);menu2 = new jmenu(查看(v);menu3 = new jmenu(幫助(h);menu1.setfont(new font(宋體, font.plain, 12);menu2.setfont(new font(宋體, font.plain, 12);menu3.setfont(new font(宋體, font.plain, 12);/* * 編輯欄 */edititem1

9、= new jmenuitem(復(fù)制(c) ctrl+c);edititem2 = new jmenuitem(粘貼(p) ctrl+v);edititem1.setfont(new font(宋體,font.plain,12);edititem2.setfont(new font(宋體,font.plain,12);/* * 查看欄 */seeitem1 = new jradiobuttonmenuitem(科學(xué)型(t);seeitem2 = new jradiobuttonmenuitem(標(biāo)準(zhǔn)型(s);seeitem3 = new jcheckboxmenuitem(數(shù)字分組(i);se

10、eitem1.setfont(new font(宋體,font.plain,12);seeitem2.setfont(new font(宋體,font.plain,12);seeitem3.setfont(new font(宋體,font.plain,12);/* * 幫助欄 */help1 = new jmenuitem(幫助主題(h);help2 = new jmenuitem(關(guān)于計(jì)算器(a);help1.setfont(new font(宋體,font.plain,12);help2.setfont(new font(宋體,font.plain,12);bgb = new button

11、group();/選項(xiàng)組menu1.add(edititem1);menu1.add(edititem2);menu2.add(seeitem1);menu2.add(seeitem2);menu2.addseparator();/添加一條分割線menu2.add(seeitem3);menu3.add(help1);menu3.addseparator();/添加一條分割線menu3.add(help2);mybar.add(menu1);mybar.add(menu2);mybar.add(menu3);this.setjmenubar(mybar);numactionlistener =

12、 new num();/實(shí)現(xiàn)數(shù)字監(jiān)聽/* * 文本域,即為計(jì)算器的屏幕顯示區(qū)域 */tf = new jtextfield();tf.seteditable(false);/文本區(qū)域不可編輯tf.setbackground(color.white);/文本區(qū)域的背景色tf.sethorizontalalignment(jtextfield.right);/文字右對(duì)齊tf.settext(0);tf.setborder(borderfactory.createloweredbevelborder();init();/對(duì)計(jì)算器進(jìn)行初始化/* * 初始化操作 * 添加按鈕 */private voi

13、d init()addbutton(panel1, backspace, new clear(), color.red);addbutton(panel1, ce, new clear(), color.red);addbutton(panel1, c, new clear(), color.red);addbutton(panel2, 1/x, new signs(), color.magenta);addbutton(panel2, log, new signs(), color.magenta);addbutton(panel2, 7, numactionlistener, color.

14、blue);addbutton(panel2, 8, numactionlistener, color.blue);addbutton(panel2, 9, numactionlistener, color.blue);addbutton(panel2, , new signs(), color.red);addbutton(panel2, n!, new signs(), color.magenta);addbutton(panel2, sqrt, new signs(), color.magenta);addbutton(panel2, 4, numactionlistener, colo

15、r.blue);addbutton(panel2, 5, numactionlistener, color.blue);addbutton(panel2, 6, numactionlistener, color.blue);addbutton(panel2, , new signs(), color.red);addbutton(panel2, sin, new signs(), color.magenta);addbutton(panel2, x2, new signs(), color.magenta);addbutton(panel2, 1, numactionlistener, col

16、or.blue);addbutton(panel2, 2, numactionlistener, color.blue);addbutton(panel2, 3, numactionlistener, color.blue);addbutton(panel2, -, new signs(), color.red);addbutton(panel2, cos, new signs(), color.magenta);addbutton(panel2, x3, new signs(), color.magenta);addbutton(panel2, 0, numactionlistener, c

17、olor.blue);addbutton(panel2, -/+, new clear(), color.blue);addbutton(panel2, ., new dot(), color.blue);addbutton(panel2, +, new signs(), color.red);addbutton(panel2, tan, new signs(), color.magenta);addbutton(panel2, %, new signs(), color.magenta);addbutton(panel2, , numactionlistener, color.orange)

18、;addbutton(panel2, e, numactionlistener, color.orange);addbutton(panel2, , new signs(), color.orange);addbutton(panel2, =, new signs(), color.red);jbutton btns = new jbutton(計(jì)算器);btns.setborder(borderfactory.createloweredbevelborder();btns.setenabled(false);/按鈕不可操作btns.setpreferredsize(new dimension

19、(20, 20);panel3.add(btns);/加入按鈕addbutton(panel3, mc, null, color.red);addbutton(panel3, mr, null, color.red);addbutton(panel3, ms, null, color.red);addbutton(panel3, m+, null, color.red);panel4.add(panel1, borderlayout.north);panel4.add(panel2, borderlayout.center);this.add(tf, borderlayout.north);t

20、his.add(panel3, borderlayout.west);this.add(panel4);pack();this.setresizable(false);/窗口不可改變大小this.setlocation(300, 200);this.setdefaultcloseoperation(jframe.exit_on_close);/* * 統(tǒng)一設(shè)置按鈕的的使用方式 * param panel * param name * param action * param color */private void addbutton(jpanel panel, string name, ac

21、tionlistener action, color color)jbutton bt = new jbutton(name);panel.add(bt);/在面板上增加按鈕bt.setforeground(color);/設(shè)置前景(字體)顏色bt.addactionlistener(action);/增加監(jiān)聽事件/* * 計(jì)算器的基礎(chǔ)操作(+ - ) * param x */private void getresult (double x)if(oper = +)result += x;else if(oper = -)result -= x;else if(oper = )result *

22、= x;else if(oper = )result /= x;else if(oper = =)result = x;tf.settext(df.format(result);/* * 運(yùn)算符號(hào)的事件監(jiān)聽 */class signs implements actionlistenerpublic void actionperformed(actionevent e) /* * 用actionevent對(duì)象的getactioncommand()方法 * 取得與引發(fā)事件對(duì)象相關(guān)的字符串 */string str = e.getactioncommand();/* sqrt求平方根 */if(st

23、r.equals(sqrt)double i = double.parsedouble(tf.gettext();if(i=0)/* * string.valueof() 轉(zhuǎn)換為字符串 * df.format() 按要求保留四位小數(shù) * math.sqrt() 求算數(shù)平方根 */tf.settext(string.valueof(df.format(math.sqrt(i);elsetf.settext(負(fù)數(shù)不能開平方根);/* log求常用對(duì)數(shù) */else if(str.equals(log)double i = double.parsedouble(tf.gettext();if(i0)

24、tf.settext(string.valueof(df.format(math.log(i);elsetf.settext(負(fù)數(shù)不能求對(duì)數(shù));/* %求百分比 */else if(str.equals(%)tf.settext(df.format(double.parsedouble(tf.gettext() / 100);/* 1/x求倒數(shù) */else if(str.equals(1/x)if(double.parsedouble(tf.gettext() = 0)tf.settext(除數(shù)不能為零);elsetf.settext(df.format(1 / double.parsedo

25、uble(tf.gettext();/* sin求正弦函數(shù) */else if(str.equals(sin)double i = double.parsedouble(tf.gettext();tf.settext(string.valueof(df.format(math.sin(i);/* cos求余弦函數(shù) */else if(str.equals(cos)double i = double.parsedouble(tf.gettext();tf.settext(string.valueof(df.format(math.cos(i);/* tan求正切函數(shù) */else if(str.

26、equals(tan)double i = double.parsedouble(tf.gettext();tf.settext(string.valueof(df.format(math.tan(i);/* n!求階乘 */else if(str.equals(n!)double i = double.parsedouble(tf.gettext();if(i%2=0)|(i%2=1)/判斷為整數(shù)放進(jìn)行階乘操作int j = (int)i;/強(qiáng)制類型轉(zhuǎn)換int result=1;for(int k=1;k 0)if(tf.gettext().length() 1)tf.settext(tf.

27、gettext().substring(0, tf.gettext().length() - 1);/使用退格刪除最后一位字符elsetf.settext(0);ifresult = true;elseif(tf.gettext().length() 2)tf.settext(tf.gettext().substring(0, tf.gettext().length() - 1);elsetf.settext(0);ifresult = true;else if(str = ce)tf.settext(0);ifresult = true;/* * 數(shù)字輸入的事件監(jiān)聽 */class num

28、implements actionlistenerpublic void actionperformed(actionevent e) string str = e.getactioncommand();if(ifresult)tf.settext();ifresult = false;if(str=)tf.settext(string.valueof(math.pi);else if(str=e)tf.settext(string.valueof(math.e);elsetf.settext(tf.gettext().trim() + str);if(tf.gettext().equals(

29、0)tf.settext(0);ifresult = true;flag = true;/* * 小數(shù)點(diǎn)的事件監(jiān)聽 */class dot implements actionlistenerpublic void actionperformed(actionevent e) ifresult = false;if(tf.gettext().trim().indexof(.) = -1)tf.settext(tf.gettext() + .);/* * main方法 */public static void main(string args) new calucator().setvisible

30、(true);applet程序代碼:import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.applet.*;public class calucator extends japplet implements actionlistenerboolean i=true;private jbutton num0=new jbutton(0);private jbutton num1=new jbutton(1);private jbutton num2=new jbu

31、tton(2);private jbutton num3=new jbutton(3);private jbutton num4=new jbutton(4);private jbutton num5=new jbutton(5);private jbutton num6=new jbutton(6);private jbutton num7=new jbutton(7);private jbutton num8=new jbutton(8);private jbutton num9=new jbutton(9);private jbutton zuok=new jbutton();priva

32、te jbutton youk=new jbutton();private jbutton dian=new jbutton(.);private jbutton null=new jbutton(n);private jbutton plu=new jbutton(+);private jbutton min=new jbutton(-);private jbutton mul=new jbutton(x);private jbutton div=new jbutton(/);private jbutton equ=new jbutton(=);private jbutton cle=new

33、 jbutton(c);/清除private jtextfield space=new jtextfield(30);public void init()jpanel text=new jpanel();text.setlayout(new flowlayout();text.add(space);jpanel buttons=new jpanel();buttons.setlayout(new gridlayout(5,4);buttons.add(num9);buttons.add(num8);buttons.add(num7);buttons.add(plu);buttons.add(n

34、um6);buttons.add(num5);buttons.add(num4);buttons.add(min);buttons.add(num3);buttons.add(num2);buttons.add(num1);buttons.add(mul);buttons.add(num0);buttons.add(cle);buttons.add(equ);buttons.add(div);buttons.add(zuok);buttons.add(youk);buttons.add(dian);buttons.add(null);(num9).addactionlistener(this)

35、;(num8).addactionlistener(this);(num7).addactionlistener(this);(num6).addactionlistener(this);(num5).addactionlistener(this);(num4).addactionlistener(this);(num3).addactionlistener(this);(num2).addactionlistener(this);(num1).addactionlistener(this);(num0).addactionlistener(this);(plu).addactionliste

36、ner(this);(min).addactionlistener(this);(mul).addactionlistener(this);(div).addactionlistener(this);(equ).addactionlistener(this);(cle).addactionlistener(this);(zuok).addactionlistener(this);(youk).addactionlistener(this);(dian).addactionlistener(this);setlayout(new borderlayout();add(north,text);ad

37、d(south,buttons);space.settext(0);public void actionperformed(actionevent e)if(e.getsource()=num9)if(i=true)space.settext(9);i=false;else space.settext(space.gettext()+9);if(e.getsource()=num8)if(i=true)space.settext(8);i=false;else space.settext(space.gettext()+8);if(e.getsource()=num7)if(i=true)sp

38、ace.settext(7);i=false;else space.settext(space.gettext()+7);if(e.getsource()=num6)if(i=true)space.settext(6);i=false;else space.settext(space.gettext()+6);if(e.getsource()=num5)if(i=true)space.settext(5);i=false;else space.settext(space.gettext()+5);if(e.getsource()=num4)if(i=true)space.settext(4);

39、i=false;else space.settext(space.gettext()+4);if(e.getsource()=num3)if(i=true)space.settext(3);i=false;else space.settext(space.gettext()+3);if(e.getsource()=num2)if(i=true)space.settext(2);i=false;else space.settext(space.gettext()+2);if(e.getsource()=num1)if(i=true)space.settext(1);i=false;else sp

40、ace.settext(space.gettext()+1);if(e.getsource()=num0)if(i=true)space.settext(0);i=false;else space.settext(space.gettext()+0);if(e.getsource()=zuok)if(i=true)space.settext();i=false;else space.settext(space.gettext()+(); if(e.getsource()=youk)if(i=false)space.settext(space.gettext()+);if(e.getsource

41、()=dian)if(i=false)space.settext(space.gettext()+.);if(e.getsource()=plu)space.settext(space.gettext()+);i=false;if(e.getsource()=min)space.settext(space.gettext()+-);i=false;if(e.getsource()=mul)space.settext(space.gettext()+*);i=false;if(e.getsource()=div)space.settext(space.gettext()+/);i=false;i

42、f(e.getsource()=equ)space.settext(string.valueof(calculator(space.gettext();i=true;if(e.getsource()=cle)space.settext(0);i=true;public double calculator(string f)/科學(xué)計(jì)算int i=0,j=0,k;char c;stringbuffer s=new stringbuffer();s.append(f);s.append(=);string formula=s.tostring();char anarray;anarray=new char50;stack mystack=new stack();while(formula.charat(i)!=)c=formula.charat(i);switch(c)case (: mystack.push(new character(c);i+;break;case ):while(mystack.peek().charvalue()!=()an

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論