JAVA課程設(shè)計_第1頁
JAVA課程設(shè)計_第2頁
JAVA課程設(shè)計_第3頁
JAVA課程設(shè)計_第4頁
JAVA課程設(shè)計_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學(xué)華夏學(xué)院課程設(shè)計報告書課 程 名 稱 JAVA課程設(shè)計 課程設(shè)計總評成績 學(xué)生姓名、學(xué) 號 學(xué) 生 專 業(yè) 班級 指 導(dǎo) 教 師 姓名 課程設(shè)計起止日期 武漢理工大學(xué)華夏學(xué)院Java語言課程設(shè)計課程任務(wù)書Java語言課程設(shè)計是“面向?qū)ο蟪绦蛟O(shè)計(Java)”課程之后的一個教學(xué)實踐環(huán)節(jié),是信管專業(yè)的重要實踐性課程。其基本任務(wù)是綜合利用課程中學(xué)到的編程知識和編程技巧,完成具有一定難度、一定編程量的課程設(shè)計題目,使學(xué)生掌握高級編程語言的知識和編程技術(shù),掌握程序設(shè)計的思想和方法,具備利用計算機求解實際問題的能力。同時也是對軟件開發(fā)過程的綜合訓(xùn)練。通過Java語言課程設(shè)計,應(yīng)該達到以下基本目

2、標:(1) 進一步鞏固和復(fù)習(xí)Java程序設(shè)計的基礎(chǔ)知識,提高編程技術(shù)。(2) 進一步掌握Java面向?qū)ο蟮木幊趟枷搿?3) 進行利用Java語言開發(fā)項目的訓(xùn)練,獨立完成有一定工作量的程序設(shè)計任務(wù),同時強調(diào)好的程序設(shè)計風格。(4) 提高學(xué)生程序調(diào)試的技巧和程序設(shè)計的能力。(5) 提高學(xué)生分析問題、解決問題以及實際運用的能力。二、課程設(shè)計內(nèi)容及基本要求本課程設(shè)計包含如下兩個題目:1. 計算器基本要求:編寫程序?qū)崿F(xiàn)類似下圖所示的圖形用戶界面,實現(xiàn)windows計算器功能2. 數(shù)字秒表基本要求:設(shè)計一個圖所示的數(shù)字秒表,實現(xiàn)計時啟動、暫停、繼續(xù)、停止和重置等功能,要求多個按鈕之間的狀態(tài)是相互關(guān)聯(lián)的。三

3、、學(xué)時分配進度要求本課程設(shè)計將安排在第18周, 通信實驗室223機房。具體安排如下:本課程設(shè)計的時間為一周,學(xué)時分配如下表:序號內(nèi)容時間1教師講解第一題;學(xué)生查閱資料、準備程序周一上午2上機調(diào)試、測試第一題程序周二全天3教師講解第二題;學(xué)生查閱資料、準備程序周三上午4上機調(diào)試、測試第二題程序周四全天5分組答辯、提交課程設(shè)計報告及相關(guān)文檔,教師驗收評分周五 簽名: 日期:1. 設(shè)計題目與要求:1.1. 題目:JAVA程序課程設(shè)計1.2. 要求:1.2.1. 計算器基本要求:編寫程序?qū)崿F(xiàn)類似下圖所示的圖形用戶界面,實現(xiàn)windows計算器功能1.2.2. 數(shù)字秒表基本要求:設(shè)計一個圖所示的數(shù)字秒表

4、,實現(xiàn)計時啟動、暫停、繼續(xù)、停止和重置等功能,要求多個按鈕之間的狀態(tài)是相互關(guān)聯(lián)的。2. 需求分析:2.1. 在日常生活中計算器的使用頻率非常的高,比如科學(xué)計算器、數(shù)值計算。會計業(yè)務(wù)等,在Applet中實現(xiàn)一個精巧實用的計算器,可以讓用戶在使用網(wǎng)站服務(wù)的同時,可以很便捷的進行數(shù)據(jù)運算,可增加頁面的實用性。2.2. 同時也讓用戶的操作更加的方便與快捷。本次課程設(shè)計要求實現(xiàn)一個具有四則運算的計算器,擁有加減乘除功能,并且還要求具備清零等功能。3. 設(shè)計思路與思想:3.1. 思路:本應(yīng)用程序繼承自框架類cFrame。此程序使用Frame布局管理器FlowLayout,將單行文本框加入到最上方,含有各種

5、按鈕的兩個面板Panel加入到下方區(qū)域,包含各種按鈕的面板采用1-3和4-6的網(wǎng)格布局,然后將數(shù)字按鈕和運算符按鈕以及控制按鈕添加到面板中。同時注冊按鈕事件監(jiān)聽器。如:button=new CButton(M+);add(bMC);button.add;ActionListener(new Pressbbutton();事件監(jiān)聽器中事件處理方法class PressbDENGYU implements ActionListener本應(yīng)用程序中的數(shù)字按鈕和運算符按鈕可以分別定義以下兩個類的對象組件 數(shù)字按鈕Button類如下: import java.awt.*; import java.awt

6、.event.*; import javax.swing.*; 3.2. 思想:設(shè)計這個計算器主要是參考Windows操作系統(tǒng)中自帶的計算器,由于余水平和時間的限制,不能將計算器設(shè)計到科學(xué)型及其他更復(fù)雜的類型。4. 課程設(shè)計安排4.1. 本課程設(shè)計將安排在第17周, 教育技術(shù)中心。具體安排如下:4.2. 第一天,下發(fā)任務(wù)書,學(xué)生查閱資料4.3. 第二天,系統(tǒng)設(shè)計和原型開發(fā)4.4. 第三,四天 系統(tǒng)功能實現(xiàn)4.5. 第五天,系統(tǒng)調(diào)試 測試 打包和驗收5. 程序說明:5.1. 數(shù)據(jù)分析 5.1.1. 計算器:計算器的程序設(shè)計,必然有數(shù)據(jù)的輸入,當中就包含運算符和數(shù)字,都要通過計算器上的button

7、按鈕選項按鍵輸入進去,里面錄入的為double型的數(shù)據(jù),進行運算時比較方便,不用進行多次類型轉(zhuǎn)換。5.1.2. 計時器:計時器的程序設(shè)計,所有功能都要通過計時器上的button按鈕來實現(xiàn),計時開始后通過一個boolean isRun來確定計時器運行的狀態(tài),在不同的狀態(tài)可以按下不同的按鍵,還是較為方便的。6. 類的設(shè)計6.1.1. 計算器: class CFrame extends Frame 是初始化界面,以及響應(yīng)用戶的操作。CFrame是個內(nèi)部類,功能是進行進制的轉(zhuǎn)換。6.1.2. 計時器:class Timer extends Frame implements Runnable,Actio

8、nListener 是初始化界面,以及響應(yīng)用戶的操作。public void run()是個內(nèi)部類,功能是進行時間進制的轉(zhuǎn)換。6.2. 功能設(shè)計6.2.1. 計算器:數(shù)字鍵按鈕,選中所需要進行計算的數(shù)字。(”09”)。運算符按鈕,選中所需要進行的四則運算。(”+”、”-“、”*”、”/”)。點擊”=”按鈕,輸出運算的結(jié)果。點擊”CE”按鈕,實現(xiàn)數(shù)字的清零。點擊”C”按鈕,實現(xiàn)顯示框的重置6.2.2. 計時器:開始按鈕,讓計時開始;暫停按鈕,讓計時暫停;繼續(xù)按鈕,讓計時重新開始;停止按鈕,讓計時停止;重置按鈕,讓計時回到初始狀態(tài);6.3. 程序分析6.3.1. 計算器本程序是一個使用Frame容

9、器作為Java Application程序圖形用戶界面。本程序有兩個類組成,一個是主類,該類中main()方法創(chuàng)建了一個了框架類,在框架里設(shè)計了計算器的布局,以及對各個按鍵按下之后的對應(yīng)的事件產(chǎn)生。6.3.2. 計時器:本程序也是使用Frame容器作為Java Application程序圖形用戶界面。本程序有兩個類組成,一個是主類,該類中main()方法創(chuàng)建了一個了框架類,在框架里設(shè)計了計時器的布局,以及對各個按鍵按下之后的對應(yīng)的事件產(chǎn)生。開始6.4. 流程圖主類中定義主方法容器中增加按鍵和對個按鍵的監(jiān)聽寫各個按鍵的方法主方法中定義主框架主框架中添加顯示框和兩個容器計算器流程圖7. 運行結(jié)果和

10、結(jié)果分析: 7.1. 運行結(jié)果:7.1.1. 計算器:7.1.2. 計時器:7.2. 結(jié)果分析:7.2.1. 計算器:計算器正常工作以及顯示出來,界面分為三個部分,上方的顯示區(qū)域,中間的文字控制區(qū)域,和下方的輸入?yún)^(qū)域,以三個方面來組成整個計算器,計算器上的每個功能都是仿造WIN上的計算器制作的,計算器非常的好用,除了不支持鍵盤直接輸入,其計算功能還是可以打敗許多大街上賣的計算器的。7.2.2. 計時器:計時器可以正常工作以及顯示,按下開始后可以按下暫停、停止兩個按鍵,按下停止后可以按下重置按鈕,計時器時間精確達到毫秒級。8. 自我評價與總結(jié):作為一名物聯(lián)網(wǎng)工程專業(yè)的學(xué)生,我覺得能做類似的課程設(shè)

11、計是十分有意義,而且是十分必要的。經(jīng)過一周的努力,計算器課程設(shè)計終于結(jié)束了,雖然很忙碌、很疲勞,但是收獲很大當然在本次課程設(shè)計的過程中,我碰到了很多問題,比如寫好的程序無法運行,最先是缺少沒有權(quán)限調(diào)用什么什么的,百度之后解決了。還有就是實現(xiàn)退格功能時不知道怎樣處理,最后上網(wǎng)百度了一下才找到了方法,果然網(wǎng)絡(luò)的時代是學(xué)習(xí)的時代。還有取反按鈕的一個bug,后來發(fā)現(xiàn)是沒有把取反鍵設(shè)計進去。還遇到了其他的困難,這些花費了很多時間,使我失敗了很多次,但是通過我不解的努力還是一一克服了這些問題,最終還是成功了。課程設(shè)計中,我的JAVA能力理所當然的提高了,對JAVA不像剛開始學(xué)習(xí)的時候那樣模棱兩可的感覺,J

12、ava這種面相對象的編程方法,是非常好學(xué)習(xí)的。附錄:程序清單,計算器:package jisuanqi;import java.awt.*; import java.awt.event.*;public class Calculator public static void main(String args) CFrame f = new CFrame(); class CFrame extends Framedouble one,two,m;TextField tf;int op=-1;CPanelU p1;CPanelD p2;CFrame() super(Calculator); set

13、Layout(new FlowLayout(FlowLayout.CENTER); setBackground(new Color(100,150,150); setForeground(Color.white); setResizable(false); setSize(300,250); tf = new TextField(22); tf.setEditable(false); tf.setBackground(new Color(108,118,103); tf.setForeground(Color.white); tf.setFont(new Font(Arial,Font.BOL

14、D,16); add(tf); p1= new CPanelU(); p2 = new CPanelD(); add(p1); add(p2); setVisible(true); addWindowListener(new Wclose(); class CButton extends ButtonCButton(String s)super(s);setBackground(Color.blue);class CPanelU extends PanelCButton bBS,bCE,bC;CPanelU()setLayout(new GridLayout(1,3);bBS=new CBut

15、ton(BackSpace); bCE=new CButton(CE); bC=new CButton(C);add(bBS);bBS.addActionListener(new PressbBS();add(bCE);bCE.addActionListener(new PressbCE();add(bC);bC.addActionListener(new PressbC();class CPanelD extends PanelCButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bPoint,bP,bM,bCHENG,bCHU,bDENGYU,bDAOSHU,bQIU

16、YU,bSQRT,bMS,bMR,bMC,bMP,bQUFAN;CPanelD() setLayout(new GridLayout(4,6);b1=new CButton(1);b2=new CButton(2);b3=new CButton(3);b4=new CButton(4);b5=new CButton(5);b6=new CButton(6);b7=new CButton(7);b8=new CButton(8);b9=new CButton(9);b0=new CButton(0);bPoint=new CButton(.);bP=new CButton(+);bM=new C

17、Button(-);bCHENG=new CButton(*);bCHU=new CButton(/);bDENGYU=new CButton(=);bDAOSHU=new CButton(1/x);bQIUYU=new CButton(%);bQUFAN=new CButton(+/-);bSQRT=new CButton(sqrt);bMS=new CButton(MS);bMR=new CButton(MR);bMC=new CButton(MC);bMP=new CButton(M+);add(bMC);bMC.addActionListener(new PressbMC();add(

18、b7);b7.addActionListener(new Pressb7();add(b8);b8.addActionListener(new Pressb8();add(b9);b9.addActionListener(new Pressb9();add(bCHU);bCHU.addActionListener(new PressbCHU();add(bSQRT);bSQRT.addActionListener(new Pressbsqrt();add(bMR);bMR.addActionListener(new PressbMR();add(b4);b4.addActionListener

19、(new Pressb4();add(b5);b5.addActionListener(new Pressb5();add(b6);b6.addActionListener(new Pressb6();add(bCHENG);bCHENG.addActionListener(new PressbCHENG();add(bQIUYU);bQIUYU.addActionListener(new PressbQIUYU();add(bMS);bMS.addActionListener(new PressbMS();add(b1);b1.addActionListener(new Pressb1();

20、add(b2);b2.addActionListener(new Pressb2();add(b3);b3.addActionListener(new Pressb3();add(bM);bM.addActionListener(new PressbM();add(bDAOSHU);bDAOSHU.addActionListener(new PressbDAOSHU();add(bMP);bMP.addActionListener(new PressbMP();add(b0);b0.addActionListener(new Pressb0();add(bQUFAN);bQUFAN.addAc

21、tionListener(new PressbQUFAN();add(bPoint);bPoint.addActionListener(new PressbPoint();add(bP);bP.addActionListener(new PressbP();add(bDENGYU);bDENGYU.addActionListener(new PressbDENGYU();class Wclose extends WindowAdapter public void windowClosing(WindowEvent e) System.exit(0); class PressbP impleme

22、nts ActionListener public void actionPerformed(ActionEvent e) try one = Double.parseDouble(tf.getText(); op = 0; tf.setText(); catch(Exception ee) class PressbM implements ActionListener public void actionPerformed(ActionEvent e) try one = Double.parseDouble(tf.getText(); op = 1; tf.setText(); catch

23、(Exception ee) class PressbCHENG implements ActionListener public void actionPerformed(ActionEvent e) try one = Double.parseDouble(tf.getText(); op = 2; tf.setText(); catch(Exception ee) class PressbCHU implements ActionListener public void actionPerformed(ActionEvent e) try one = Double.parseDouble

24、(tf.getText(); op = 3; tf.setText(); catch(Exception ee) class PressbQIUYU implements ActionListener public void actionPerformed(ActionEvent e) try one = Double.parseDouble(tf.getText(); op = 4; tf.setText(); catch(Exception ee) class PressbDENGYU implements ActionListener public void actionPerforme

25、d(ActionEvent e) try double result =0; two = Double.parseDouble(tf.getText(); switch(op) case 0: result=one+two; break; case 1: result=one-two; break; case 2: result=one*two; break; case 3: result=one/two; break; case 4: result=one%two; break; tf.setText(String.valueOf(result); catch(Exception ee) c

26、lass PressbC implements ActionListener public void actionPerformed(ActionEvent e) try one=0;two=0; tf.setText(); catch(Exception ee) class Pressbsqrt implements ActionListener public void actionPerformed(ActionEvent e) try double x=Double.parseDouble(tf.getText(); double y; y=Math.sqrt(x); tf.setTex

27、t(y+); catch(Exception ee) class PressbBS implements ActionListener public void actionPerformed(ActionEvent e) try String text = tf.getText(); text = text.substring(0,text.length()-1); tf.setText(text); catch(Exception ee) class PressbCE implements ActionListener public void actionPerformed(ActionEv

28、ent e) try tf.setText(); catch(Exception ee) class PressbQUFAN implements ActionListener public void actionPerformed(ActionEvent e) try String text = tf.getText(); if (text != ) if(text.charAt(0) = -) tf.setText(text.substring(1); else if(text.charAt(0) = 0 & text.charAt(0) 59d)seconds=0d; minutes=m

29、inutes+1; System.out.print(minutes); refresh(); catch(Exception e) public void actionPerformed(ActionEvent e) if(e.getActionCommand().equals(開始) startCount(); else if(e.getActionCommand().equals(暫停) tstopCount(); else if(e.getActionCommand().equals(繼續(xù)) continusCount(); else if(e.getActionCommand().e

30、quals(停止) stopCount(); else reset(); public void refresh()display.setText(toString(); public void startCount() if(!isRun)isRun=true; mb=new Thread(this); mb.start(); reset.setEnabled(true);tstop.setEnabled(true);continus.setEnabled(false);stop.setEnabled(true); start.setEnabled(false); public void t

31、stopCount()if(isRun)boolean stop1 = false;isRun=stop1; reset.setEnabled(false);tstop.setEnabled(false);stop.setEnabled(false);continus.setEnabled(true);start.setEnabled(false); private void continusCount()if(!isRun) reset.setEnabled(false);tstop.setEnabled(true);continus.setEnabled(false);stop.setEnabled(true); start.setEnabled(false);isRun=true; mb=new Thread(this); mb.start(); public void stopCount() if(isRun) reset.setEnabled(true);tstop.setEnabled(false);continus.setEnabled(false);stop.setEnabled(false); s

溫馨提示

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

評論

0/150

提交評論