java程序設計課程報告書-計算器_第1頁
java程序設計課程報告書-計算器_第2頁
java程序設計課程報告書-計算器_第3頁
java程序設計課程報告書-計算器_第4頁
java程序設計課程報告書-計算器_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

-.z面向?qū)ο蟪绦蛟O計課程設計報告題目:計算器模擬程序組成員信息姓名班級學號任課教師:成績:2010年12月30日目錄1.課程設計目的…………………31.1………………31.2………………32.設計題目分析……………………32.1………………32.2………………33.課程設計容…………………33.1………………33.2………………4設計心得與總結…………………75、附錄………………86、小組成員分工說明………………161、課程設計目的(1)復習穩(wěn)固java語言的根底知識,進一步加深對java語言的理解和掌控〔2〕課程設計為大家提供了一個既動手又動腦,獨立實踐的時機,將課本上的理論知識和實際有機結合起來,鍛煉我們的分析解決實際問題的能力。提高我們適應實際,實踐編程的能力?!?〕培養(yǎng)我們在工程開發(fā)中創(chuàng)新意識及能力,通過親身實踐,利用所學編寫簡單的面向?qū)ο蟪绦?,提高對面向?qū)ο蠹癑AVA語言的理解。2、設計題目分析2.1題目簡介利用JAVA語言設計一個簡單的科學計算器,實現(xiàn)加減乘除及開根號、對數(shù)、平方、三角正/余弦、求倒數(shù)、進制轉換的簡單功能。2.2設計要求及需求分析設計要求:由于現(xiàn)代用戶更傾向于由鼠標方便操作的圖形用戶界面,所以我們采用GUI來實現(xiàn)計算器,并采用Swing組件,AWT事件處理等實現(xiàn)具體功能。需求分析:在我們?nèi)粘I钪?,計算開支、收入時,大額數(shù)字或是多倍小數(shù)的計算都需要計算器的幫助,而在學習一些科目時,也常常要處理數(shù)字。雖然現(xiàn)在的計算器價格比擬低廉,但是功能過于簡單的不能滿足個人需求,功能多的價格較貴,不僅操作不便,很多功能也根本用不到。所以我們想用自己所學設計開發(fā)一個屬于自己的簡單計算器來完成日常學習生活的需求。3、課程設計容3.1總體設計:系統(tǒng)總體設計框架PANEL0PANEL0PANEL2PANEL2PANELPANELPanel:5*6的數(shù)字及運算鍵Panel2:進制轉換的單項選擇按鈕及倒退清空鍵Panel0:輸入及運行結果系統(tǒng)功能模塊圖:簡單科學計算器開平方運算簡單科學計算器開平方運算進制轉換E*p運算求反運算正/余弦清零運算簡單計算器加減乘除3.2詳細設計:以下是其中一些類功能的說明:JFrameframe;//構造新窗體JPanelpanel,panel0,panel2,panel3;//定義面板uttonbutton;//定義按鈕JRadioButton//定義單項選擇按鈕JLabel//定義標簽Container//定義容器方法參數(shù)說明:布爾型的border,設置當前選中圖形中一組文字單元的邊框frame.setVisible,設置窗口的可見性frame.setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE);設置關閉窗口的默認執(zhí)行動作〔布爾型數(shù)據(jù)〕frame.setIconImage;設置窗口最小化圖標frame.setSize(int,int);設置窗口尺寸方法調(diào)用:主函數(shù)中的newCalculator()調(diào)用了前面的publicCalculator()流程圖:3.3調(diào)試與測試:包括程序調(diào)試過程、數(shù)據(jù)測試結果分析,測試過程中遇到的主要問題及采取的解決措施;〔列出主要問題的出錯現(xiàn)象、出錯原因、解決方法及效果等〕。主要問題:1.標點符號問題,經(jīng)常出現(xiàn)漏打分號,忽略中英文標點轉換等問題,所以一定要慎重仔細.2.進制轉換的實現(xiàn)及正/余弦計算經(jīng)常出現(xiàn)問題,結果不正確,經(jīng)過查閱資料及反復調(diào)試,我們終于克制了這一難題.3.界面設計,開場我們的設計不太合理,各類功能鍵排序不合理,看起來雜亂無章,既不美觀也不實用。經(jīng)過屢次調(diào)整程序終于能使界面美觀實用。4.要注意類、成員變量、成員方法的命名,其中,class后的類名由一個或多個英文單詞構成,每個單詞的第一個字符必須是大寫;而成員變量和成員方法名的第一個單詞的第一個字母必須小寫,其他單詞第一個字母大寫。以下是其中一些主要功能演示過程:初始界面:十進制25轉換成二進制Sin45e的5次方3開根號表達式運算4、設計心得與總結:通過此次的課程設計實踐,我們不但進一步理解掌握了課上老師教授的知識,而且通過查找資料學會了課上沒有的東西,進一步理解了面向?qū)ο蟮暮x,發(fā)現(xiàn)了很多它比面向過程突出的地方,第一次接觸了圖形界面,初步了解了GUI方面的知識。在實踐中我們遇到了很多問題,但我們都努力克制,并最終成功的完成了這次課程設計。通過編寫這個相對復雜的程序,我們認識解決實際問題前應先建立模型,再通過建立的模型使問題簡單化,從而解決問題。并且這次編寫的程序大局部是通過調(diào)用各包中的方法來實現(xiàn)的,這也讓我們充分理解了包和類的調(diào)用關系。由于這次編寫的程序比擬復雜,所以不能一次性編寫、調(diào)試,也由此讓我們學會把程序分塊,逐個編寫、調(diào)試。附錄packagecalculate;importjava.awt.*;importjava.awt.event.*;importjava*.swing.*;importjava.lang.*;publicclassCalculator{privateJLabeldisplay; privateJPanelpanel; privateJPanelpanel0; privateJPanelpanel2; privateJPanelpanel3; privateButtonb1,b2,b3; privateJRadioButton[]a; privateIntegerjin,jinzhi1; privatedoubleresult,qresult; privatedoubleq0,w0,displayTe*t,qdisplayTest; privateStringlastmand,qlastmand; privateStringlastmand1,qlastmand1; privatebooleanstart,T; privateJLabeldis; JFrameframe; publicCalculator(){frame=newJFrame("科學計算器");//窗口設置 frame.setContentPane(createContentpane()); frame.setDefaultCloseOperation(JFrame.E*IT_ON_CLOSE); frame.setLocation(250,200); Stringname="zyj.gif"; Imageimage=Toolkit.getDefaultToolkit().getImage(name); frame.setIconImage(image); frame.setSize(370,330); frame.setVisible(true); } publicContainercreateContentpane(){ //設計版面 ContainercontentPane=newContainer(); contentPane.setLayout(newBorderLayout(5,10)); result=0; lastmand="="; lastmand1="="; qlastmand="="; start=true; T=false; dis=newJLabel(",SwingConstants.RIGHT);//顯示界面設置 dis.setForeground(Color.BLACK); display=newJLabel("0",SwingConstants.RIGHT); display.setForeground(Color.RED); dis.setBorder(BorderFactory.createpoundBorder(BorderFactory.createLineBorder(Color.black), BorderFactory.createEmptyBorder(5,5,5,5))); display.setBorder(BorderFactory.createpoundBorder(BorderFactory.createLineBorder(Color.black), BorderFactory.createEmptyBorder(5,5,5,5))); ActionListenerinsert=newInsertAction(); ActionListenermand=newmandAction(); ActionListenerjinzhi=newJinzhiAction(); panel0=newJPanel(); panel0.setLayout(newGridLayout(2,1,3,3)); panel0.add(dis); panel0.add(display); contentPane.add(panel0,BorderLayout.NORTH); panel=newJPanel();//數(shù)字鍵按鈕以及操作按鈕等 panel.setLayout(newGridLayout(4,6)); addButton("7",insert); addButton("8",insert); addButton("9",insert); addButton("/",mand,Color.red); addButton("sin",mand); addButton("cos",mand); addButton("4",insert); addButton("5",insert); addButton("6",insert); addButton("*",mand,Color.red); addButton("+/-",mand); addButton("*^2",mand); addButton("1",insert); addButton("2",insert); addButton("3",insert); addButton("-",mand,Color.red); addButton("(",mand); addButton(")",mand); addButton("0",insert); addButton(".",insert); addButton("=",mand,Color.red); addButton("+",mand,Color.red); addButton("Sqrt",mand); addButton("e*p",mand);contentPane.add(panel,BorderLayout.SOUTH); panel2=newJPanel(); panel2.setLayout(newGridLayout(2,3,4,4)); ButtonGroupgroup=newButtonGroup(); a=newJRadioButton[3];//進制轉換按鈕 a[0]=newJRadioButton("二進制運算"); a[1]=newJRadioButton("十進制運算",true); a[2]=newJRadioButton("八進制運算"); for(inti=0;i<3;i++){ group.add(a[i]); panel2.add(a[i]); a[i].addActionListener(jinzhi); } uttonb1=newutton("Backspace");/*Backspace鍵*/ uttonb2=newutton("CE"); uttonb3=newutton("C"); b1.addActionListener(newActionListener() {publicvoidactionPerformed(ActionEvente) {Strings1=display.getTe*t(); intl=s1.length(); display.setTe*t(s1.substring(0,l-1)); } }); panel2.add(b1); /*C鍵監(jiān)聽*/b3.addActionListener(newActionListener() {publicvoidactionPerformed(ActionEvente) {display.setTe*t("0"); result=0; start=true; } }); panel2.add(b2); /*CE鍵監(jiān)聽*/ b2.addActionListener(newActionListener() {publicvoidactionPerformed(ActionEvente) {display.setTe*t("0"); lastmand="="; dis.setTe*t("); start=true; } }); panel2.add(b3); contentPane.add(panel2,BorderLayout.CENTER); returncontentPane;} privatevoidaddButton(Stringlable,ActionListenerlistener){ //構造關于添加按鈕的函數(shù) uttonbutton=newutton(lable); button.addActionListener(listener); panel.add(button);} privatevoidaddButton(Stringlable,ActionListenerlistener,Colorcolor){ //同上,函數(shù)的重寫 uttonbutton=newutton(lable); button.addActionListener(listener); button.setForeground(color); panel.add(button);} privateclassInsertActionimplementsActionListener //關于輸入數(shù)字的監(jiān)聽 { publicvoidactionPerformed(ActionEventevent){ Stringinput=event.getActionmand(); if(start){ display.setTe*t("); start=false; } display.setTe*t(display.getTe*t()+input); } } privateclassJinzhiActionimplementsActionListener{//進制運算監(jiān)聽函數(shù) publicvoidactionPerformed(ActionEvente){ Strings=e.getActionmand(); Integerm=newInteger((display.getTe*t().trim())); inta[]=newint[32]; intb=1,i,j=0,k=0; intc=0; if(s.equals("二進制運算")) { for(i=0;i<32;i++) {a[i]=m%2; m=m/2; b=b*10; c=c+b/10*a[i]; if(m==0) break; } display.setTe*t("+c); } if(s.equals("八進制運算")) { for(i=0;i<32;i++) {a[i]=m%8; m=m/8; b=b*10; c=c+b/10*a[i]; if(m==0) break; } display.setTe*t("+c); } }} privateclassmandActionimplementsActionListener{ //各命令監(jiān)聽設置 publicvoidactionPerformed(ActionEventevt){ Stringmand=evt.getActionmand(); displayTe*t=Double.parseDouble(display.getTe*t()); if(mand.equals("(")||mand.equals("sin")||mand.equals("+/-")||mand.equals("cos")||mand.equals("Sqrt")||mand.equals("e*p")) dis.setTe*t(dis.getTe*t()); elseif(!qlastmand.equals("=")) dis.setTe*t(dis.getTe*t()+displayTe*t); elseif(lastmand.equals("=")) //在主顯示窗口上方輸入命令 dis.setTe*t(display.getTe*t()); else dis.setTe*t(dis.getTe*t()+displayTe*t); if(mand.equals("(")){ //左括號的處理工作 qresult=result; qlastmand1=lastmand1; qlastmand=lastmand; qdisplayTest=displayTe*t; result=0; lastmand1="="; lastmand="="; } if(!(mand.equals("sin")||mand.equals("+/-")||mand.equals("cos")||mand.equals("Sqrt")||mand.equals("e*p"))) dis.setTe*t(dis.getTe*t()+mand); //在主顯示窗口上方輸入命令 cal(mand); //實現(xiàn)計算功能函數(shù) if(mand.equals(")")) { //右括號的處理工作 cal(mand); result=qresult; lastmand1=qlastmand1; lastmand=qlastmand; start=false; } } } publicvoidcal(Stringmand){ if(T){ calculate(displayTe*t); lastmand=lastmand1; lastmand1="="; T=false; result=w0; } if(start){ if(mand!="(") lastmand=mand; } elseif(mand.equals("sin")||mand.equals("+/-")||mand.equals("cos")||mand.equals("Sqrt")||mand.equals("e*p")){ calcul(displayTe*t,mand); } elseif(mand.equals("=")){ displayTe*t=Double.parseDouble(display.getTe*t()); calculate(displayTe*t); lastmand="="; dis.setTe*t("+result); start=false; } elseif(mand.equals(")")){ displayTe*t=Double.parseDouble(display.getTe*t()); calculate(displayTe*t); lastmand="="; start=false; } elseif(lastmand.equals("*")||lastmand.equals("/")){ displayTe*t=Double.parseDouble(display.getTe*t()); calculate(displayTe*t); lastmand=lastmand1; lastmand1="="; lastmand=mand; start=true; } elseif(mand.equals("+")||mand.equals("-")){ calculate(Double.parseDouble(display.getTe*t())); lastmand=mand; start=true; } elseif((mand.equals("*")||mand.equals("/"))&&(!lastmand.equals("="))){ lastmand1=lastmand; lastmand=mand; w0=result; result=Double.parseDouble(display.getTe*t()); start=true; T=true; } elseif((mand.equals("*")||mand.equals("/"))&&lastmand.equals("=")) { lastmand1=lastmand; lastmand=mand; result=displayTe*t; start=true;} } publicvoidcalcul(double*,Stringmand){ //單目運算函數(shù) if(mand.equals("+/-")) { *=-*; display.setTe*t("+*); start=false; } elseif(mand.equals("Sqrt")) {

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論