溫文爾雅java課程設(shè)計實驗報告_第1頁
溫文爾雅java課程設(shè)計實驗報告_第2頁
溫文爾雅java課程設(shè)計實驗報告_第3頁
溫文爾雅java課程設(shè)計實驗報告_第4頁
溫文爾雅java課程設(shè)計實驗報告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE2課程設(shè)計(論文)任務(wù)書經(jīng)管學(xué)院電子商務(wù)專業(yè)2011-1班一、課程設(shè)計(論文)題目:Window計算器設(shè)計二、課程設(shè)計(論文)工作:自2012年6月4日起至2012年6月8日止三、課程設(shè)計(論文)地點:15-615四、課程設(shè)計(論文)內(nèi)容要求:1.本課程設(shè)計的目的(1)使學(xué)生掌握軟件開發(fā)的基本工作流程;(2)鞏固JAVA程序設(shè)計課程所學(xué)的內(nèi)容;(3)培養(yǎng)學(xué)生的計算機(jī)思維能力以及合作的精神;(4)培養(yǎng)學(xué)生分析、解決問題的能力;(5)提高學(xué)生的科技論文寫作能力。2.課程設(shè)計的任務(wù)及要求1)基本要求:(1)研究課程設(shè)計任務(wù),并進(jìn)行系統(tǒng)需求分析;(2)對系統(tǒng)進(jìn)行總體設(shè)計,分解系統(tǒng)功能模塊,進(jìn)行任務(wù)分配,以實現(xiàn)分工合作;(3)實現(xiàn)各功能模塊代碼;(4)系統(tǒng)組裝,測試、完善系統(tǒng)。2)創(chuàng)新要求:在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計,如改進(jìn)界面、增加功能或進(jìn)行代碼優(yōu)化。3)課程設(shè)計論文編寫要求(1)要按照書稿的規(guī)格打印謄寫課程設(shè)計論文(2)論文包括封面、設(shè)計任務(wù)書(含評語)、摘要、目錄、設(shè)計內(nèi)容、設(shè)計小結(jié)(3)論文裝訂按學(xué)校的統(tǒng)一要求完成4)參考文獻(xiàn):(1)丁振凡,《JAVA語言程序設(shè)計》,清華大學(xué)出版社.(2)丁振凡,《JAVA語言程序設(shè)計實驗指導(dǎo)與習(xí)題解答》,清華大學(xué)出版社.(3)/5)課程設(shè)計進(jìn)度安排內(nèi)容天數(shù)地點系統(tǒng)總體設(shè)計1實驗室軟件設(shè)計及調(diào)試2實驗室答辯及撰寫報告2實驗室、圖書館學(xué)生簽名:20課程設(shè)計(論文)評審意見(1)課程設(shè)計過程(20分):優(yōu)()、良()、中()、一般()、差();(2)是否完成調(diào)試,系統(tǒng)運(yùn)行效果(30分):優(yōu)()、良()、中()、一般()、差();(3)回答問題(20分):優(yōu)()、良()、中()、一般()、差();(4)課程設(shè)計報告(30分):優(yōu)()、良()、中()、一般()、差();(5)格式規(guī)范性及考勤是否降等級:是()、否()評閱人:職稱:教授201計算器設(shè)計摘要:利用Java語言設(shè)計出一個簡易的計算器,能實現(xiàn)加減乘除等簡單運(yùn)算。該應(yīng)用涉及圖形界面的布局,按鈕的動作事件處理,窗體的事件處理。由于所有按鈕均用窗體作為事件監(jiān)聽者,在程序中通過區(qū)分事件源對不同的按鈕點擊區(qū)分處理。(100字以上)目錄TOC\o"1-2"\h\z\u1、項目內(nèi)容、要求與分組情況總體介紹 22、概要設(shè)計 22.1開發(fā)工具及環(huán)境 22.2任務(wù)及需求分析 22.3功能模塊設(shè)計 22.4工作原理 33、具體實現(xiàn) 33.1類設(shè)計 33.2模塊及實現(xiàn)代碼介紹 34、運(yùn)行調(diào)試與分析討論 45、設(shè)計體會與小結(jié) 66、參考文獻(xiàn) 7附錄:(源程序) 71、項目內(nèi)容、要求與分組情況總體介紹本次實驗的目標(biāo)是制作一個計算器,可以進(jìn)行簡單的四則運(yùn)算(加、減、乘、除)。小組的具體分工情況見下表:小組組長曾玉成員子項目名稱具體要求朱青林模塊的組合及測試查找出程序的錯誤并改正黃曉勇數(shù)字鍵的注冊、編寫具體的計算方法將數(shù)字鍵注冊監(jiān)聽者,使其功能正常胡林平窗口的創(chuàng)建和分配、組合其余同學(xué)的工作設(shè)計計算器的界面2、概要設(shè)計2.1開發(fā)工具及環(huán)境文本編輯器:記事本;運(yùn)行環(huán)境:命令提示符(DOS環(huán)境)。2.2任務(wù)及需求分析設(shè)計簡易計算器程序,實現(xiàn)簡單的運(yùn)算(加減乘除),具體任務(wù)如下:(1)計算器窗口界面布局設(shè)計;(2)各種計算功能的算法分析;(3)編程實現(xiàn)具體的計算功能,實現(xiàn)類的封裝處理;(4)運(yùn)行測試程序,調(diào)試糾正運(yùn)行錯誤。2.3工作原理(1)工作過程點擊相應(yīng)的數(shù)字鍵,即會在顯示文檔中顯示該數(shù)字。進(jìn)行相應(yīng)的運(yùn)算,首先輸入第一個計算數(shù)字,然后輸入運(yùn)算符,再輸入第二個計算數(shù)字,點擊“=”按鈕即得計算結(jié)果。同時,還有歸零功能,點擊該按鈕,顯示欄中即可歸零。(2)工作原理利用圖形界面編程實現(xiàn),利用到的知識點包括:窗體的創(chuàng)建和應(yīng)用界面布局;事件處理,包括按鈕的動作事件處理,窗體事件。接口知識:事件處理中通過接口約束事件監(jiān)聽者必須實現(xiàn)相應(yīng)接口中定義的方法。流程控制語句:通過條件判斷區(qū)分不同按鈕,作不同操作處理。3、具體實現(xiàn)3.1類設(shè)計(1)類名:jsq作用:實現(xiàn)窗口的布局設(shè)定,事件注冊。該類繼承WindowAdapter類。類中含有的方法介紹:frame()方法:實現(xiàn)窗體的界面布局及按鈕的事件注冊。main()方法:應(yīng)用程序的入口,完成創(chuàng)建對象并調(diào)用frame()方法。(2)類名:close該類為jsq的內(nèi)嵌類,作用是實現(xiàn)對關(guān)閉按鈕的動作事件監(jiān)聽處理。該類實現(xiàn)ActionListener接口。 類中含有的方法介紹:actionPerformed方法:實現(xiàn)關(guān)閉按鈕的動作事件處理。(3)類名:buttonlistener該類為jsq的內(nèi)嵌類,作用是實現(xiàn)計算器中數(shù)字按鈕和各類運(yùn)算按鈕等的動作事件監(jiān)聽處理。該類實現(xiàn)ActionListener接口。類中含有的方法介紹:actionPerformed方法:實現(xiàn)各類按鈕的動作事件處理。jisuan()方法:實現(xiàn)具體運(yùn)算操作。3.2關(guān)鍵技術(shù)處理(1)窗體界面設(shè)計及注冊事件監(jiān)聽Framefm=newFrame("簡單計算器");for(inti=0;i<=16;i++){b[i]=newButton(ss[i]);}for(inti=0;i<=15;i++){p2.add(b[i]);}//創(chuàng)建按鈕并添加到P2b[16].setBackground(Color.yellow);txt=newTextField(15);txt.setEditable(false);for(inti=0;i<=16;i++){b[i].addActionListener(newbuttonlistener());……}注:此方法主要設(shè)置窗口、面板、各個按鍵。對各個按鍵進(jìn)行定義(定義好各按鍵該實現(xiàn)什么功能)、排布,將各個按鍵注冊到監(jiān)聽器上。(2)按鈕事件處理區(qū)分事件源:通過事件對象的getSource()方法得到事件源。關(guān)鍵代碼如下:Buttonbtn=(Button)e.getSource();if(btn.getLabel()=="="){……}改變計算器的結(jié)果。更改文本框的顯示,先讀原有的數(shù)據(jù)。txt.setText(txt.getText()+btn.getLabel());清除計算器的顯示if(btn.getLabel()=="歸零")txt.setText("");(3)窗體關(guān)閉classcloseimplementsActionListener{//退出publicvoidactionPerformed(ActionEvente){System.exit(0);}}【注】也可以執(zhí)行窗體的dispose()方法實現(xiàn)窗體關(guān)閉。(4)記住前一個運(yùn)算符引入一個字符串類型的類變量s記錄前一個運(yùn)算符,每次按運(yùn)算符是先執(zhí)行前一個運(yùn)算符的結(jié)果。4、運(yùn)行調(diào)試與分析討論調(diào)試運(yùn)行9*5運(yùn)算,運(yùn)算過程如下所示:測試程序,點擊數(shù)字鍵可將數(shù)據(jù)輸入到文本框,點擊“+”、“-”、“*”、“/”In以及小數(shù)運(yùn)算,按鈕可進(jìn)行前一個運(yùn)算,點擊“=”可完成整個運(yùn)算。從而達(dá)到能進(jìn)行加、減、乘、除運(yùn)算的簡易計算器的功能。點擊退出圖標(biāo)可關(guān)閉計算器。5、設(shè)計體會與小結(jié)通過這次課程設(shè)計,我了解到j(luò)ava也是可以分工合作的,雖然最后的整合過程非常麻煩,但是在整合完后,我們發(fā)現(xiàn),課本被翻過很多遍,很多以前不知道的東西就這樣豁然開朗了。我們還引用了很多從來沒有用過的語句塊,大多是從網(wǎng)上找到,然后自己整合進(jìn)入代碼,再實現(xiàn)我們想要的功能。編程是個艱難的過程,很多功能語句都需要上網(wǎng)或者是查其他書籍來查看他們的用法,課本上的東西對我們來說遠(yuǎn)遠(yuǎn)不夠,我們要把目光放長遠(yuǎn)一些。這次的課程設(shè)計使我對JAVA的許多東西都有了更深一步的了解,以前對自己的要求是看得懂就行,現(xiàn)在才發(fā)現(xiàn),光能看懂是遠(yuǎn)遠(yuǎn)不夠的,能看懂并不代表你會!只有自己真的親身體驗到了,才會知道。這個禮拜的課程設(shè)計是這個學(xué)期最累的一個禮拜,但是,我們的付出總算有回報,雖然我們的計算器可能還存在不少的問題,但是,至少它可以正常運(yùn)行四則運(yùn)算,基本達(dá)到了我們預(yù)期的要求,所以,這個禮拜同樣是我最充實的一個禮拜。6、參考文獻(xiàn)[1]丁振凡,《JAVA語言程序設(shè)計》,清華大學(xué)出版社.[2]丁振凡,《JAVA語言程序設(shè)計實驗指導(dǎo)與習(xí)題解答》,清華大學(xué)出版社.[3]杜春濤,《面向?qū)ο蟪绦蛟O(shè)計—Java語言》,中國鐵道出版社.[4]/附錄:(源程序)importjava.awt.*;importjava.awt.event.*;publicclassjsq{publicstaticvoidmain(String[]args){JsqFramef=newJsqFrame();}}classJsqFrameextendsFrame{doubled1,d2;intop=-1;TextFieldtf;CalPanelLp1;CalPanelRp2;//ConstructorJsqFrame(){super("計算器");setLayout(newFlowLayout());setResizable(false);setSize(300,300);tf=newTextField(22);tf.setEditable(false);tf.setBackground(newColor(108,118,103));tf.setForeground(Color.red);tf.setFont(newFont("宋體",Font.BOLD,16));add(tf);p1=newCalPanelL();p2=newCalPanelR();add(p1);add(p2);setVisible(true);//addWindowListener(newWclose());}//innerclass:CalButtonclassCalButtonextendsButton{CalButton(Strings){super(s);setBackground(Color.green);}}//innerclass:CalPanelLclassCalPanelLextendsPanel{CalButtonb0,b1,b2,b3,b4,b5,b6,b7,b8,b9,bPN,bPoint;CalPanelL(){setLayout(newGridLayout(4,3));setFont(newFont("TimesRoman",Font.BOLD,16));b0=newCalButton("0");b1=newCalButton("1");b2=newCalButton("2");b3=newCalButton("3");b4=newCalButton("4");b5=newCalButton("5");b6=newCalButton("6");b7=newCalButton("7");b8=newCalButton("8");b9=newCalButton("9");bPN=newCalButton("+/-");bPoint=newCalButton(".");//加入按鈕add(b7);b7.addActionListener(newPressB7());add(b8);b8.addActionListener(newPressB8());add(b9);b9.addActionListener(newPressB9());add(b4);b4.addActionListener(newPressB4());add(b5);b5.addActionListener(newPressB5());add(b6);b6.addActionListener(newPressB6());add(b1);b1.addActionListener(newPressB1());add(b2);b2.addActionListener(newPressB2());add(b3);b3.addActionListener(newPressB3());add(b0);b0.addActionListener(newPressB0());add(bPN);bPN.addActionListener(newPressBPN());;add(bPoint);bPoint.addActionListener(newPressBPoint());}}classCalPanelRextendsPanel{CalButtonbAdd,bSub,bMul,bDiv,bLn,bEqual,bCE,bQuit;CalPanelR(){setLayout(newGridLayout(4,3));setFont(newFont("TimesRoman",Font.BOLD,16));bAdd=newCalButton("+");bSub=newCalButton("-");bMul=newCalButton("*");bDiv=newCalButton("/");bLn=newCalButton("ln");bEqual=newCalButton("=");bCE=newCalButton("CE");bQuit=newCalButton("退出");add(bDiv);bDiv.addActionListener(newPressBDiv());add(bCE);bCE.addActionListener(newPressBCE());add(bMul);bMul.addActionListener(newPressBMul());add(bLn);bLn.addActionListener(newPressBLn());add(bSub);bSub.addActionListener(newPressBSub());add(bEqual);bEqual.addActionListener(newPressBEqual());add(bAdd);bAdd.addActionListener(newPressBAdd());add(bQuit);bQuit.addActionListener(newPressBQuit());}}classPressBAddimplementsActionListener{publicvoidactionPerformed(ActionEvente){try{d1=Double.parseDouble(tf.getText());op=0;tf.setText("");}catch(Exceptionee){}}}classPressBSubimplementsActionListener{publicvoidactionPerformed(ActionEvente){try{d1=Double.parseDouble(tf.getText());op=1;tf.setText("");}catch(Exceptionee){}}}classPressBMulimplementsActionListener{publicvoidactionPerformed(ActionEvente){try{d1=Double.parseDouble(tf.getText());op=2;tf.setText("");}catch(Exceptionee){}}}classPressBDivimplementsActionListener{publicvoidactionPerformed(ActionEvente){try{d1=Double.parseDouble(tf.getText());op=3;tf.setText("");}catch(Exceptionee){}}}classPressBEqualimplementsActionListener{publicvoidactionPerformed(ActionEvente){try{doubleresult=0;d2=Double.parseDouble(tf.getText());switch(op){case0:result=d1+d2;break;case1:result=d1-d2;break;case2:result=d1*d2;break;case3:result=d1/d2;break;case4:result=Math.pow(d1,d2);break;default:}tf.setText(String.valueOf(result));}catch(Exceptionee){}}}classPressBLnimplementsActionListener{publicvoidactionPerformed(ActionEvente){try{doublex=Double.parseDouble(tf.getText());doubley;y=Math.log(x);tf.setText(y+"");}catch(Exceptionee){}}}classPressBCEimplementsActionListener{publicvoidactionPerformed(ActionEvente){tf.setText("");}}classPressBPNimplementsActionListener{publicvoidactionPerformed(ActionEvente){try{Stringtext=tf.getText();if(text!=""){if(text.charAt(0)=='-')tf.setText(text.substring(1));elseif(text.charAt(0)>='0'&&text.charAt(0)<='9')tf.setText("-"+text.substring(0));elseif(text.charAt(0)=='.')tf.setText("-0"+text.substring(0));}}catch(Exceptionee){}}}classPressBPointimplementsActionListener{publicvoidactionPerformed(ActionEvente){Stringtext=tf.getText();if(text.lastIndexOf(".")==-1)tf.setText(text+".");}}classPressB0implementsActionListener{publicvoidactionPerformed(ActionEvente){Stringtext=tf.getText();tf.setText(text+"0");}}classPressB1implementsActionListener{publicvoidactionPerformed(ActionEvente){Stringtext=tf.getText();tf.setText(text+"1");}}classPressB2implementsActionListener{publicvoidactionPerformed(ActionEvente){Stringtext=tf.getText();tf.setText(text+"2");}}classPressB3implementsActionListener{publicvoidactionPerformed(

溫馨提示

  • 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

提交評論