javacjs三種語言實(shí)現(xiàn)計算器課程設(shè)計_第1頁
javacjs三種語言實(shí)現(xiàn)計算器課程設(shè)計_第2頁
javacjs三種語言實(shí)現(xiàn)計算器課程設(shè)計_第3頁
javacjs三種語言實(shí)現(xiàn)計算器課程設(shè)計_第4頁
javacjs三種語言實(shí)現(xiàn)計算器課程設(shè)計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、HUBEI NORMAL UNIVERSITY綜合課程設(shè)計(一)Integrated Curriculum Design(1)所在院系教育信息與技術(shù)學(xué)院專業(yè)名稱信息工程班級1202班題目計算器指導(dǎo)教師嚴(yán)焰老師成員羅顯吉 韓旭東 肖揚(yáng)完成時間2014年6 月2日一、設(shè)計任務(wù)及要求:設(shè)計任務(wù):設(shè)計簡單計算器: 計算器對我們每一個學(xué)生都很熟悉,從初中到高中再到大學(xué)。但是我們只知道按下幾個按鈕計算器便會顯示出結(jié)果,很少有學(xué)生分析過計算器究竟是如何運(yùn)行的。要 求: (1)算術(shù)運(yùn)算功能。能夠?qū)崿F(xiàn)加、減、乘、除(2)函數(shù)運(yùn)算功能。能夠?qū)崿F(xiàn)sin、xy、n!、1/x(3)進(jìn)制之間的轉(zhuǎn)換功能。能夠?qū)崿F(xiàn)十六、十、

2、二、八進(jìn)制數(shù)據(jù)之間的轉(zhuǎn)換。指導(dǎo)教師簽名:2014 年 6月2 日 二、指導(dǎo)教師評語:指導(dǎo)教師簽名: 2014 年 6月 3 日 三、成績 驗(yàn)收蓋章 2014 年6月 6日 題目1 設(shè)計目的設(shè)計簡單計算器: 計算器對我們每一個學(xué)生都很熟悉,從初中到高中再到大學(xué)。但是我們只知道按下幾個按鈕計算器便會顯示出結(jié)果,很少有學(xué)生分析過計算器究竟是如何運(yùn)行的。要 求:(1)算術(shù)運(yùn)算功能。能夠?qū)崿F(xiàn)加、減、乘、除(2)函數(shù)運(yùn)算功能。能夠?qū)崿F(xiàn)sin、xy、n!、1/x(3)進(jìn)制之間的轉(zhuǎn)換功能。能夠?qū)崿F(xiàn)十六、十、二、八進(jìn)制數(shù)據(jù)之間的轉(zhuǎn)換。2 設(shè)計思路 計算器,用途廣泛,能用計算器的平臺也很多,從便攜計算機(jī),手機(jī),平

3、板,到我們的捧場,甚至在web網(wǎng)頁上都誰處可以看到計算器,因此,本次課程設(shè)計我們小組,決定用多種語言分別實(shí)現(xiàn)計算器的基本功能。 Java面向?qū)ο?,自帶類庫,可以?shí)現(xiàn)美觀的界面,便于控制,由于java語言的特色,程序可以跨平臺使用;js為網(wǎng)站前臺腳本,程序可以在客戶端瀏覽器中運(yùn)行,而且交互界面友好,使用者可以快速入手,熟練操控;至于c語言,由于界面交互實(shí)現(xiàn)較難,我們最終決定讓其在DOS窗口中以對話的方式實(shí)現(xiàn)。3 設(shè)計分工分工:計算器的java實(shí)現(xiàn)由韓旭東完成;計算器的js實(shí)現(xiàn)由羅顯吉來完成;計算器的c實(shí)現(xiàn)由肖揚(yáng)完成。4 設(shè)計過程一, 實(shí)驗(yàn)過程1,運(yùn)行并編輯程序需要jdk環(huán)境的支持,用eclips

4、e來編寫的。2,程序設(shè)計由三個模塊,即三個類構(gòu)成(如圖4.1.1):(1)Calculator類,程序的啟動類,包含了main啟動方法;(2)CalculatorJFrame類,繼承自JFrame類,框架類,規(guī)定了窗口的大小,位置,設(shè)置了窗口的顯示和退出,添加了顯示框,面板;(3)CalculatorJPanel類,繼承自JPanel類,面板類,添加了36個按鈕,設(shè)置了三種監(jiān)聽事件(如圖4.1.2)即三種動作按鈕SwitAction 控制進(jìn)制類“SH”“B”“O”等按鈕InsertAction 控制數(shù)字類“1”“2”“3”等按鈕CommandAction 控制運(yùn)算類“+”“-”“/”等按鈕是計

5、算和進(jìn)制部分功能的實(shí)現(xiàn)類。二,程序運(yùn)行及調(diào)試開始界面Java代碼寫計算器,框架結(jié)構(gòu)代碼與功能實(shí)現(xiàn)代碼緊密耦合,所以這里就不粘貼代碼了;圖中,AC表示歸零,SH表示switch,即算術(shù)計算器與進(jìn)制計算器之間的切換,B O D H分別表示二,八,十,十六進(jìn)制的按鈕如圖4.1.4和圖4.1.5進(jìn)行對負(fù)數(shù)的階乘操作,程序會自動提示錯誤,同理還有開根號,等運(yùn)算,如果數(shù)值范圍不對,均會提示錯誤。相關(guān)代碼如下:if(thisCommand.equals("n!")if(Double.parseDouble(text.getText()<=0)text.setText("請

6、輸入大于0的數(shù)!"); elseresult=1;double t=Double.parseDouble(text.getText();/輸入的數(shù),即nfor(int i=0;i<Double.parseDouble(text.getText();i+)result=result*t;t=t-1;text.setText(Double.toString(result);如圖4.1.6和圖4.1.7進(jìn)行了對(-/2)的sin運(yùn)算,關(guān)于sin運(yùn)算的代碼,如下:if(thisCommand.equals("sin")String m=text.getText();

7、result=Math.sin(Double.parseDouble(m);text.setText(Double.toString(result);mid=false;圖4.1.8至圖4.1.11是進(jìn)制轉(zhuǎn)換的實(shí)例,如圖,八進(jìn)制的77777向二,十,十六進(jìn)制轉(zhuǎn)換,經(jīng)過驗(yàn)證,得到的結(jié)果和真實(shí)的完全一致,相關(guān)代碼如下:If(thisCommand.equals("B")if(text.getText()!=null&value=16)if(text.getText().length()>=8)text.setText("輸入的十六進(jìn)制數(shù)應(yīng)小于8位&quo

8、t;);i= Integer.parseInt(text.getText(), 16);s = String.valueOf(i);s = Integer.toBinaryString(Integer.parseInt(s);text.setText(s);if(text.getText()!=null&value=10)if(text.getText().length()>=10)text.setText("輸入的十進(jìn)制數(shù)應(yīng)小于10位");i=Integer.parseInt(text.getText();s=Integer.toBinaryString(I

9、nteger.valueOf(i);text.setText(s);if(text.getText()!=null&value=8)Text().length()>=11)text.setText("輸入的八進(jìn)制數(shù)應(yīng)小于11位");i=Integer.parseInt(text.getText(),8);s=Integer.toBinaryString(Integer.valueOf(i);text.setText(s);catch(Exception e)finallynabled(true);b24.setEnabled(true);b30.setEnab

10、led(true);swite(swite);value=2;if(thisCommand.equals("O")tryif(text.getText()!=null&value=16)if(text.getText().length()>=8)text.setText("輸入的十六進(jìn)制數(shù)應(yīng)小于8位");i=Integer.parseInt(text.getText(), 16);s=Integer.toOctalString(i); text.setText(s);if(text.getText()!=null&value=10)

11、if(text.getText().length()>=10)text.setText("輸入的十進(jìn)制數(shù)應(yīng)小于10位");i=Integer.parseInt(text.getText();s=Integer.toOctalString(i); text.setText(s);if(text.getText()!=null&value=2)if(text.getText().length()>=32)text.setText("輸入的二進(jìn)制數(shù)應(yīng)小于32位");s=Integer.toOctalString(Integer.parseI

12、nt(text.getText(), 2);text.setText(s);catch(Exception e)finallyb12.setEnabled(true);b18.setEnabled(false);b24.setEnabled(true);b30.setEnabled(true);switb(switb);value=8;if(thisCommand.equals("D")tryif(text.getText()!=null&value=16)if(text.getText().length()>=8)text.setText("輸入的

13、十六進(jìn)制數(shù)應(yīng)小于8位");i=Integer.parseInt(text.getText(), 16);s=Integer.toString(i);text.setText(s);if(text.getText()!=null&value=8)if(text.getText().length()>=11)text.setText("輸入的八進(jìn)制數(shù)應(yīng)小于11位");etText(), 8);s=Integer.toString(i);text.setText(s);if(text.getText()!=null&value=2)if(text.

14、getText().length()>=32)text.setText("輸入的二進(jìn)制數(shù)應(yīng)小于32位");i=Integer.parseInt(text.getText(), 2);s=Integer.toString(i);text.setText(s);catch(Exception e)finallyb12.setEnabled(true);b18.setEnabled(true);b24.setEnabled(false);b30.setEnabled(true);swits(swits);value=10;if(thisCommand.equals(&quo

15、t;H")tryif(text.getText()!=null&value=8)if(text.getText().length()>=11)text.setText("輸入的八進(jìn)制數(shù)應(yīng)小于11位");i=Integer.parseInt(text.getText(),8);s=Integer.toHexString(Integer.valueOf(i);text.setText(s);if(text.getText()!=null&value=10)if(text.getText().length()>=10)text.setText

16、("輸入的十進(jìn)制數(shù)應(yīng)小于10位");i=Integer.parseInt(text.getText();s=Integer.toHexString(Integer.valueOf(i);text.setText(s);if(text.getText()!=null&value=2)if(text.getText().length()>=32)text.setText("輸入的二進(jìn)制數(shù)應(yīng)小于32位");i=Integer.parseInt(text.getText(), 2);s=Integer.toHexString(Integer.val

17、ueOf(i);text.setText(s);三,結(jié)果分析 功能整體實(shí)現(xiàn),但有許多地方可以完善,存在bug。一,實(shí)現(xiàn)過程1,新建css與js文件夾以及index.html與index2.html。2,在index.html中構(gòu)建出計算器函數(shù)部分的整體框架。3,在index2.html中構(gòu)建出計算器進(jìn)制轉(zhuǎn)換部分框架。6,在js文件中實(shí)現(xiàn)計算器相應(yīng)功能二,程序運(yùn)行及調(diào)試 圖4.2.1開始界面 圖4.2.2運(yùn)算1+2*(3-4)開始界面源代碼<center><h1>計算器</h1><div id="cal"><table&g

18、t;<tr><td id="input" colspan="5" ></td></tr><tr><td class="ccc">sin</td><td>7</td><td>8</td><td>9</td><td class="green">+</td></tr><tr><td class="ccc&

19、quot;>n!</td><td>4</td><td>5</td><td>6</td><td class="green">-</td></tr><tr><td class="ccc">xy</td><td>1</td><td>2</td><td>3</td><td class="green">

20、*</td></tr><tr><td class="ccc">1/x</td><td>.</td><td>0</td><td>=</td><td class="green">/</td></tr><tr><td class="red">AC</td><td class="blue">(</td&g

21、t;<td class="blue">)</td><td class="blue">進(jìn)制</td><td class="red">C</td></tr></table></div></center>加減乘除源代碼a5.onclick=function() / "+"if(state=1) dexOf("")+1); value=Math.pow(str1,str2);str=s

22、tr+"="+value;state=""if(str.indexOf("=")!=-1)str=str.substring(str.indexOf("=")+1);str+="+"a0.innerHTML=str;a10.onclick=function() / "-"if(state=1) str2=str.substring(str.lastIndexOf("")+1); value=Math.pow(str1,str2);str=str+"

23、;="+value;state=""if(str.indexOf("=")!=-1)str=str.substring(str.indexOf("=")+1);str+="-"a0.innerHTML=str;a15.onclick=function() / "*"if(state=1) str2=str.substring(str.lastIndexOf("")+1); value=Math.pow(str1,str2);str=str+"="

24、+value;state=""if(str.indexOf("=")!=-1)str=str.substring(str.indexOf("=")+1);str+="*"a0.innerHTML=str;a20.onclick=function() / "/"if(state=1) str2=str.substring(str.lastIndexOf("")+1); value=Math.pow(str1,str2);str=str+"="+value;s

25、tate=""if(str.indexOf("=")!=-1)str=str.substring(str.indexOf("=")+1);str+="/"a0.innerHTML=str; n!源代碼a6.onclick=function() / "n!"if(str>170)vari=2;str="超出量程3秒后清屏!"a0.innerHTML=str;var SI=setInterval(function()str="超出量程"+i+"

26、秒后清屏!"i-;if(i=-1)clearInterval(SI);str=""a0.innerHTML=str;,1000) value=""else if(str!="")if(str.indexOf("=")!=-1)str=str.substring(str.indexOf("=")+1);if(eval(str)>=1&& str.indexOf(".")=-1)for(var i=2,sum=1;i<=parseInt(ev

27、al(str);i+)sum=sum*i;value=sum;str="("+str+")!"a0.innerHTML=str;str=str+"="+value;elsevari=2;str="輸入有誤3秒后清屏!" a0.innerHTML=str; var SI=setInterval(function() str="輸入有誤"+i+"秒后清屏!" i-; if(i=-1) clearInterval(SI); str="" a0.innerHTML

28、=str; ,1000)value=""elsevari=2;str="輸入有誤3秒后清屏!"a0.innerHTML=str;var SI=setInterval(function()str="輸入有誤"+i+"秒后清屏!"i-;if(i=-1)clearInterval(SI);str=""a0.innerHTML=str;,1000) Sin函數(shù)源代碼a1.onclick=function() / "sin"if(str!="")if(str.ind

29、exOf("=")!=-1)str=str.substring(str.indexOf("=")+1);elsestr=a0.innerHTML;value=Math.sin(eval(eval(str)+"/180*3.1415926"); str="sin("+str+")" a0.innerHTML=str;str=str+"="+value;elsevari=2;str="輸入有誤3秒后清屏!"a0.innerHTML=str;var SI=set

30、Interval(function()str="輸入有誤"+i+"秒后清屏!"i-;if(i=-1)clearInterval(SI);str=""a0.innerHTML=str;,1000) 進(jìn)制轉(zhuǎn)換源代碼a1.onclick=function() /2進(jìn)制if(str="") a0.innerHTML=""elseif(a2.style.background!="white") /2->8 var i=1; var b; var c; b=parseInt(str

31、,8); str="" while(i!=0) i=Math.floor(b/2); c=b%2; b=i; str=c+str; a0.innerHTML=str; if(a3.style.background!="white") /2->10 var i=1; var b; var c; b=parseInt(str,10); str="" while(i!=0) i=Math.floor(b/2); c=b%2; b=i; str=c+str; a0.innerHTML=str; if(a4.style.backgroun

32、d!="white") /2->16 var i=1; var b; var c; b=parseInt(str,16); str="" while(i!=0) i=Math.floor(b/2); c=b%2; b=i; str=c+str; a0.innerHTML=str; 三,結(jié)果分析 功能整體實(shí)現(xiàn),但還存在些許BUG一,實(shí)現(xiàn)過程1,聲明所需頭文件以及自定義函數(shù)2,定義變量類型3,提示輸入第一個數(shù)4,提示是否輸入第二個數(shù)5,列舉可執(zhí)行的方法并輸入6,獲取結(jié)果7,提示是否清屏并跳轉(zhuǎn)至第三步二,程序運(yùn)行及調(diào)試圖4.3.2運(yùn)行1+2=3加減乘除源代碼case 1: d=m+n;break;case 2: d=m-n;break;case 3: d=m*n;break;case 4: d=m/n;break; 圖4.3.3運(yùn)行12!階乘源代碼c

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論