欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      (騎士游歷)JAVA程序設計課程設計報告

      時間:2019-05-12 18:10:55下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《(騎士游歷)JAVA程序設計課程設計報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《(騎士游歷)JAVA程序設計課程設計報告》。

      第一篇:(騎士游歷)JAVA程序設計課程設計報告

      目錄

      設計課題名稱..........................................................................1 二 設計目的與意義......................................................................1 三

      系統(tǒng)描述..................................................................................1 四

      運行環(huán)境..................................................................................1 五

      系統(tǒng)的分析與設計..................................................................1

      5.1

      創(chuàng)建騎士游歷程序......................................................................................................2 5.2

      程序的基本組成............................................................................................................3 5.3

      程序結構說明................................................................................................................3 5.4

      AccessibleSquare算法實現(xiàn).........................................................................................4 5.5

      圖形化界面....................................................................................................................5 5.6

      主調(diào)用程序的設計和開發(fā)............................................................................................6 5.7 程序的源程序..................................................................................................................7

      運行結果..................................................................................14 七

      總結..........................................................................................16 八 參考文獻....................................................................................19

      設計課題名稱

      騎士游歷程序的開發(fā) 二 設計目的與意義

      Java是目前最流行的軟件開發(fā)語言之一,有Sun Microsystem 公司推出,成為網(wǎng)絡上的“世界語”。Java適合開發(fā)基于多媒體、與平臺無關、面向?qū)ο蟮姆椒ㄟM行的基于Internet、Intranet、Extranet的Applet和應用程序。Java課程設計是計算機科學與技術專業(yè)學生必做的集中實踐性環(huán)節(jié)之一,是學習完《Java程序設計》課程后進行的一次全面的綜合練習。其目的在于通過課程設計,使學生能夠得到較系統(tǒng)的技能訓練,從而鞏固和加深對Java 編程的基礎理論知識的理解,培養(yǎng)學生綜合運用所學理論解決實際問題的能力,使學生成為具有扎實的計算機理論基礎和較強的獨立動手能力的復合型、應用型人才。

      系統(tǒng)描述

      騎士游歷問題是一個古老而著名的問題,它最初是由大數(shù)學家Euler提出的.問題是這樣的:國際象棋中的棋子(叫作騎士)在一個空棋盤內(nèi)移動,問它能否經(jīng)過64格中的每一格且只經(jīng)過一次?(騎士按L行移動,即在某方向前進兩格接著在與原方向垂直的方向上前進一格)本程序?qū)崿F(xiàn)了騎士游歷問題的求解,并能夠演示起始位置在棋盤上任何位置的游歷問題的實現(xiàn).程序采用動態(tài)的圖形演示,使算法的描述更形象,更生動,使教學能產(chǎn)生良好的效果.本程序采用Applet來編制整個程序,這樣既可以使大家對算法的實現(xiàn)有了一定的了解,也可以熟悉一下Java圖形界面, Applet以及Java語言的命名規(guī)范.作為本書的第一例子,希望能讓大家熟悉Java的基本語言結構和強大的開發(fā)能力.在騎士游歷的課程設計中,我們嚴格按照面向?qū)ο蟮乃枷脒M行開發(fā),其中有AccessibleSquare 類,MyPanel類和KnightsTour類.讀者應注意各個類之間的關系,以便更深入地理解Java中類的思想.四

      運行環(huán)境

      本程序是在windows xp,JBuild 9的環(huán)境下運行的.五

      系統(tǒng)的分析與設計

      此次騎士游歷問題,在JBuild 9集成開發(fā)環(huán)境下完成編寫調(diào)試等工作.JBuilder是Borland公司開發(fā)的針對java的開發(fā)工具,使用JBuilder將可以快速,有效的開發(fā)各類java應用,它使用的JDK與sun公司標準的JDK不同,它經(jīng)過了較多的修改,以便開發(fā)人員能夠像開發(fā)Delphi應用那樣開發(fā)java應用。

      JBuilder的核心有一部分采用了VCL技術,使得程序的條理非常清晰,就算是初學者,也能完整的看完整個代碼。JBuilder另一個特點是簡化了團隊合作,它采用的互聯(lián)網(wǎng)工作室技術使不同地區(qū),甚至不同國家的人聯(lián)合開發(fā)一個項目成為了可能。

      Jbuilder 9是功能強大的可視化Java集成開發(fā)工具,可以快速開發(fā)包括復雜企業(yè)級應用系統(tǒng)的各種Java程序,包括獨立運行程序、Applet程序、Servlet、JSP、EJB、Web Service等,最新的Jbuilder 9版本支持Sun的J2SE 1.4和J2EE 1.4。使用可視化工具開發(fā)程序有很多好處,其中最顯著的是能夠快速生成程序框架、設計圖形界面、調(diào)試程序等,此外Jbuilder 9內(nèi)置了對一些企業(yè)級服務器的支持,包括Borland服務器、Bea公司的WebLogic服務器、IBM的WebSphere服務器和iPlanet服務器。Jbuilder 9在以前版本的基礎上,增強和增加了許多功能。

      JBuilder9的代碼預覽功能(CodeInsight)可以在編輯器中顯示一個與上下文相關的彈出窗口。它可以幫助用戶快速、準確地編寫Java代碼。例如,單擊一個對象,馬上在相應位置出現(xiàn)其所有的屬性和方法等內(nèi)容,用戶可以快速地選擇所需要的內(nèi)容。代碼預覽功能可幫助用戶顯示與上下文相關的數(shù)據(jù)成員與方法列表(MemberInsight)、當前代碼中要使用的方法的參數(shù)列表(ParameterInsight)、可以通過當前類路徑訪問的類列表(ClassInsight)、結構窗口中的錯誤(ErrorInsight)以及在調(diào)試時顯示變量值及表達式的值。

      5.1

      創(chuàng)建騎士游歷程序

      在對Jbuilder9的基本常識有了初步的了解后,就可以起步創(chuàng)建騎士游歷程序了。

      創(chuàng)建過程如下:

      (1)單擊桌面圖標,啟動Jbuilder9開發(fā)平臺進入一個新的工程界面。

      (2)命名新的工程并保存文件,方法是單擊菜單File?New Project,出現(xiàn)一個對話框窗口,將工程名為Knighttour,選擇保存工程文件目錄之后,單擊Finish按鈕完成騎士游歷工程的創(chuàng)建。

      5.2

      程序的基本組成

      下面著重介紹一下騎士游歷程序的界面、程序結構以及程序效果顯示圖。程序運行的界面上主要包括6個按鈕:

      (1)Info:幫助信息。(2)Start:開始游歷。(3)Stop:停止游歷。(4)Exit:退出游歷。

      (5)NextTour:重新開始一個新的游歷。(6)NextMoving:騎士要走的下一步

      5.3

      程序結構說明

      整個程序界面由三部分組成,上方是由Info、Start、Stop和Exit四個按鈕的工具欄,可以執(zhí)行相應的操作;中間是騎士游歷效果顯示圖,動態(tài)演示騎士游歷的過程;最下邊一排是Next Tour和Next Moving兩個按鈕,單擊Next Tour按鈕,可重新開始一個新的游歷,單擊Next Moving按鈕,可顯示騎士要走的下一步。如圖 5-1 所示。(這是騎士在第一個格子起始位置進行游歷的情況,如果想在其他位置開始游歷,直接單擊Next Tour按鈕就可以了,程序?qū)崿F(xiàn)的騎士騎士位置的方式是按照順序從第一列第一個開始、直到組后一列、最后一行)。

      另外,可以由邊框顏色的不同,判斷騎士初始的位置、上一步所走的位置和現(xiàn)在所處的位置。單擊Next Moving按鈕可以顯示騎士游歷的下一步。連續(xù)單擊直到64個格子全部走完,可以清晰地顯示整個游歷的過程。圖5-2顯示的是騎士起始位置在第一個格子的游歷的一個中間狀態(tài)。當然,騎士可以在棋盤的任何位置開始,操作者可以自己運行程序,以獲得更深的認識。

      圖5-1 騎士在第一個格子的請況

      圖5-2 騎士在第一個格子游歷的中間狀態(tài)

      本程序由三個類組成一個工程文件.其中KnightsTour是主類,或者說是控制類, AccessibleSquare類主要是算法實現(xiàn), MyPanel實現(xiàn)圖形化顯示結果.程序的運行關系如圖5-3.圖5-3 程序運行關系圖

      5.4

      AccessibleSquare算法實現(xiàn)

      AccessibleSquare類主要是算法實現(xiàn),采用啟發(fā)式算法.先把八個可能走的方向用兩個數(shù)組(horizontal[ ]和vertical[ ])表示出來,選擇走哪個方向就在原坐標上進行相應的加法,表示騎士到了一個新的位置.horizontal[ ]和vertical[ ]表示騎士8個方向走L形狀所需的X坐標和Y坐標的變化量: horizontal[] = {2,1,-1,-2,-2,-1,1,2}, vertical [] = {-1,-2,-2,-1,1,2,2,1}.坐標圖如下: 5 7 8 4 3 2 1

      圖5-4

      騎士游歷走向坐標圖

      (1)

      由于程序采用啟發(fā)式算法,應考察每一方格的可到達性.使用數(shù)組accessibility []表示可達到數(shù),并當騎士游歷時,程序動態(tài)修正剩余格子的可達到數(shù).accessibility [ arrayPos ] = 0 表明格子已經(jīng)被占據(jù).(2)

      使用冒泡法來查詢最小數(shù).冒泡排序的基本概念是:依次比較相鄰的兩個數(shù),將大數(shù)放在前面,小數(shù)放在后面。即首先比較第1個和第2個數(shù),將大數(shù)放前,小數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將大數(shù)放前,小數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將大數(shù)放前,小數(shù)放后,此時第一趟結束,在最后的數(shù)必是所有數(shù)中的最小數(shù)。重復以上過程,仍從第一對數(shù)開始比較(因為可能由于第2個數(shù)和第3個數(shù)的交換,使得第1個數(shù)不再大于第2個數(shù)),將大數(shù)放前,小數(shù)放后,一直比較到最小數(shù)前的一對相鄰數(shù),將大數(shù)放前,小數(shù)放后,第二趟結束,在倒數(shù)第二個數(shù)中得到一個新的最小數(shù)。如此下去,直至最終完成排序。由于在排序過程中總是大數(shù)往前放,小數(shù)往后放,相當于氣泡往上升,所以稱作冒泡排序。

      5.5

      圖形化界面

      由于目前用戶對界面的要求逐步提高,因此,現(xiàn)在的可視化編程已經(jīng)取代了傳統(tǒng)的用戶界面的設計方法。而在可視化編程中,人機之間的直接聯(lián)系主要是通過一些窗口和對話框來實現(xiàn)。JBuilder9也不例外,它也是通過這些窗口和對話框來實現(xiàn)窗體。用戶需要的控件則可以直接放置在窗體上,利用這些控件來實現(xiàn)復雜的功能。

      用戶界面設計器是用戶在編寫程序過程中最常用到的工具。用戶在進行界面設計時,只需單擊文件視圖標簽中的Design頁,就會出現(xiàn)該用戶界面設計

      器。用戶可以利用JBuilder提供的各種控件來搭建自己的程序界面。而且同時,JBuilder9還為這些界面自動生成了相應的代碼,為用戶提供了程序的環(huán)境。接下來,就要由用戶設置屬性,來編寫一些實現(xiàn)用戶特定功能的代碼。這在很大程度上減少了用戶界面設計的復雜度,使用戶的主要精力投入到如何實現(xiàn)和加強功能上來。

      本程序是Applet的圖形界面以及如何利用圖形用戶界面的控件接受用戶信息,并用圖形或圖像顯示結果.(1)

      MyPanel函數(shù)實現(xiàn)圖形化顯示結果, MyPanel類就是畫圖類.首先用兩種不同顏色的方塊(WHITE和BIACK)顯示出棋盤,還有其他兩種方塊(WKNIGHT和BKNIGHT),這兩種方塊上都有騎士,但顏色不一樣.在騎士游歷過程中不斷用后來兩種有騎士的方塊代替前兩種方塊,其中需要注意的是保持棋盤的顏色一致性.如5-3圖所示.將其設置為靜態(tài)變量,方便使用,防止修改時出錯.5-5 騎士游歷游戲中的棋盤用圖

      (2)

      其次就是要顯示騎士起始位置,剛走過的步的位置和現(xiàn)在的位置,用邊框的不同來加以區(qū)別,采用函數(shù)g.setColor(Color.green)(剛走過的步顯示為綠色)和g.setColor(Color.biue)(當步顯示為藍色)實現(xiàn).這個類的對象在主類KnightsTour中被實例化.5.6

      主調(diào)用程序的設計和開發(fā)

      KnightsTour類是控制類,它完成對算法類和畫圖類的調(diào)用.由于JAVA的GUI編程是事件驅(qū)動的,因此在KnightsTour類中,通過監(jiān)聽前面介紹的幾個Button的事件相應,完成程序的調(diào)用過程.采用二維數(shù)組表示初始位置位于某個位置的可達到數(shù), 即以棋盤任意一點為初試位置,騎士游歷完整個棋盤的路徑數(shù).利用access[][]數(shù)組來表示這個二維數(shù)組.{ 2, 3, 4, 4, 4, 4, 3, 2 },{ 3, 4, 6, 6, 6, 6, 4, 3 },{ 4, 6, 8, 8, 8, 8, 6, 4 },{ 4, 6, 8, 8, 8, 8, 6, 4 },{ 4, 6, 8, 8, 8, 8, 6, 4 },{ 4, 6, 8, 8, 8, 8, 6, 4 },{ 3, 4, 6, 6, 6, 6, 4, 3 },{ 2, 3, 4, 4, 4, 4, 3, 2 }};

      本程序中在KnightsTour類中添加了兩個按鈕 JButton nextMoving = new JButton(“下一步”);

      JButton nextTour = new JButton(“新起點重新開始”);用于用戶對游戲進行操作,這兩個按鈕分別有事件響應.5.7 程序的源程序

      package gao;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.awt.image.*;public class KnightsTour extends JApplet {

      // 初始位置位于某個位置的可達到數(shù)采用二維數(shù)組表示

      //即以棋盤任意一點為初試位置,騎士游歷完整個棋盤的路徑數(shù)

      public static int access[][] = {

      {2,3,4,4,4,4,3,2},{3,4,6,6,6,6,4,3},{4,6,8,8,8,8,6,4},{4,6,8,8,8,8,6,4},{4,6,8,8,8,8,6,4},{4,6,8,8,8,8,6,4},{3,4,6,6,6,6,4,3},{2,3,4,4,4,4,3,2}};

      public static int accessbak[][] = arrayCopy(access);

      int countMoving =-1;

      int tourXpos [] = new int [ 64 ];//游歷中,X,Y都有64個位置

      int tourYpos [] = new int [ 64 ];

      private int recordXpos [][];

      private int recordYpos [][];

      private int recordCount =1){

      recordCount ++;

      } else { recordCount = 0;}

      myPanel.initboard(recordXpos [ recordCount ] ,recordYpos [ recordCount ]);

      myPanel.repaint();

      }

      });//end call to addActionListener

      }

      public void paint(Graphics g)

      { super.paint(g);

      } }//end of class KnightsTour class AccessibleSquares { //騎士8個方向走L形狀所需的X坐標和Y坐標的變化量

      private static int horizontal[] = {2,1,-1,-2,-2,-1,1,2};

      private static int vertical [] = {-1,-2,-2,-1,1,2,2,1};

      private int xpos[];//騎士所處X軸的坐標

      private int ypos[];//騎士所處y軸的坐標

      private int accessibility [];//表示可達到數(shù)

      private int ownxpos ,ownypos;

      private int ownAccessibility;

      private int arrayPos;

      private int countAccessibility;

      public AccessibleSquares(int x , int y){//構造函數(shù)

      int testXPos;

      int testYPos;

      xpos = new int [ 8 ];//騎士所處X軸的坐標

      ypos = new int [ 8 ];

      accessibility = new int [ 8 ];

      arrayPos = 0;

      ownxpos = x;

      ownypos = y;

      ownAccessibility = KnightsTour.access[ x ][ y ];

      for(int i = 0;i < horizontal.length;i++){//有八種到達的情況

      testXPos = x + horizontal[ i ];//得出X,Y坐標的測試位置

      testYPos = y + vertical [ i ];

      if((testXPos >= 0)&(testXPos < 8)&

      (testYPos >= 0)&(testYPos < 8)){//判斷測試位置是否在棋盤內(nèi)

      xpos [ arrayPos ] = testXPos;//由測試位置給出正確X,Y坐標

      ypos [ arrayPos ] = testYPos;

      accessibility [ arrayPos ] = KnightsTour.access [testXPos][testYPos];

      //利用對應的X,Y坐標得出相應的可到達的路徑總數(shù)

      // accessibility [ arrayPos ] = 0 表明格子已經(jīng)被占據(jù)

      if(accessibility [ arrayPos ] > 0)

      arrayPos ++;

      }//尋找空格子結束

      }// 結束for循環(huán),尋找結束

      countAccessibility = arrayPos;//統(tǒng)計可達到數(shù)

      if(countAccessibility > 0)

      {sortAll();}

      arrayPos =-1;

      }

      public boolean hasMoreAccessible(){

      // arrayPos + 1 指向下一個可行的

      if((arrayPos + 1)< countAccessibility){

      return true;} else { return false;}

      }// hasMoreAccessible()方法結束

      public AccessibleSquares nextAccessible(){

      arrayPos ++;

      return this;

      }

      public AccessibleSquares accessibleAt(int pos){

      if((pos >= 0)&(pos < countAccessibility))

      arrayPos = pos;

      return this;

      }

      public int getXpos(){

      return xpos[ arrayPos ];

      }

      public int getYpos(){

      return ypos[ arrayPos ];

      }

      public int getAccessibility(){

      return accessibility[ arrayPos ];

      }

      public int getTotalAccessible(){

      return countAccessibility;

      }

      //冒泡排序法.冒泡排序的基本概念是:依次比較相鄰的兩個數(shù),將大數(shù)放在前面,小數(shù)放在后面。

      private void sortAll(){

      for(int begin = 0;begin < countAccessibility1){

      displayCount ++;

      chessboard [ xrecord [ displayCount ] ][ yrecord [ displayCount ] ] += 2;

      repaint();

      }

      }

      public void paintComponent(Graphics g){

      //用于顯示運行時態(tài)的顏色

      for(int row = 0;row < 8;row ++){

      for(int column = 0;column < 8;column ++){

      images[ chessboard[ row ][ column ] ].paintIcon(this , g, 40 * row,40 * column);

      }//end of inner for

      }//end of outer for

      if(displayCount > 0){

      lastxpos = xrecord [ displayCount 1];

      nextxpos = xrecord [ displayCount ];

      nextypos = yrecord [ displayCount ];

      g.setColor(Color.green);

      g.drawRect(40 * xrecord [ displayCount1 ] + 2, 36, 36);

      g.setColor(Color.green);//剛走過的步顯示為綠色

      g.drawRect(40 * xrecord [ displayCount ] + 2 ,40 * yrecord [ displayCount ] + 2, 36, 36);

      g.setColor(Color.blue);//當前步顯示為藍色

      g.drawRect(40 * Math.min(nextxpos, lastxpos),40 * Math.min(nextypos, lastypos),(Math.abs(nextxposlastypos)+ 1)* 40);

      }//end of if

      g.setColor(Color.red);//起始位置顯示為紅色

      g.drawRect(40 * xrecord [ 0 ] + 2,40 * yrecord [ 0 ] + 2, 36, 36);

      }// end of the method paintComponent }

      運行結果

      程序能正常運行,并得出正確的結果,其運行結果如下.圖 6-1騎士游歷游戲進入界面

      圖 6-2騎士游歷游戲以(1,1)為起點運行圖

      圖 6-3騎士游歷游戲以(6,3)為起點

      圖 6-4 騎士游歷游戲以(6,3)為起點運行圖

      總結

      這一周的java課程設計,我收獲了很多,學到了很多知識,同時也發(fā)現(xiàn)了自己許多的不足。

      通過騎士游歷程序的設計,初步熟悉了Jbuilder集成卡發(fā)環(huán)境的使用,讓那個我熟悉了如何在Jbuilder下開發(fā)應用程序、程序設計的基本步驟等,另外熟悉了Java環(huán)境下圖形用戶界面的編程,為后續(xù)工作打下了基礎。

      雖然這個課題是所有的課題中最簡單的,按照參考書上的程序可以得出正確結果.但是要了解所有程序的思路并不是一件很輕松的事情,在準備添加功能的時候,突然發(fā)現(xiàn)在菜單欄內(nèi)的四個按鈕不能更改,而且程序中也沒有相關代碼控制它,于是開始千方百計的對程序進行修改.但到最后仍沒收獲,請教了老師后才知道問題出在哪里.在JBuild9的開發(fā)環(huán)境中,在建立Application類型的文件時,如果其最后一項中的”Create a runtime configuration”沒被選中的話(見圖7-1),則不會出現(xiàn)菜單

      欄中的”Info”,”Start”,”Stop”和”Exit”四個按鈕(見圖7-2).圖7-1

      JBuild9 新建Application文件截圖

      圖7-2 無自動菜單欄的運行圖

      不找出問題的根本,就無法理解自己獲得的是什么,在一個星期的課程設計中,我將掌握的專業(yè)理論知識很好地運用到對這個課題的理解中.做到了理論和實踐相結合,在實踐中加深了對專業(yè)理論知識的理解,并提升了對理論知識的運用能力,獲得了許多寶貴的經(jīng)驗。

      這個課程設計的順利完成,離不開劉國清老師的指導和幫助,在他的細心指導和幫助下,我對騎士游歷程序的開發(fā)的整個流程有了深刻地了解和系統(tǒng)

      地掌握.通過這個星期的課程設計,我們更加理解了小組合作的重要性。真正理解了作為一個計算機學習者不僅僅要學好計算機知識,同時也要與自己的搭檔配合,共同克服困難.騎士游歷課程設計是我和同學一起探討,最后慢慢理解的,所以說不管有什么樣的困難,團隊的合作都能把問題一一解決??傊@次的課程設計讓我受益匪淺。

      八 參考文獻

      [1] 黃曉東等.Java課程設計案例精編(第2版)[M].北京:中國水利水電出版社,2007

      [2] 李尊朝 蘇軍.JAVA語言程序設計[M].北京:中國鐵通出版社,2007.10 [3] 李明 袁曉君.Java計算機語言函數(shù)應用[M].北京:科學出版社,2000

      第二篇:課程設計《JAVA程序設計》任務書.

      《 JA V A 程序設計》課程設計任務書 一.課程設計基本信息

      課程名稱:《JAVA 程序設計》課程設計 學時:1周 學分:1學分

      二.課程設計目的與要求

      1.教學目的:本課程是學習《 Java 程序設計》后的綜合實踐課,使學生能夠比較深入的理解 Java 語言的特征及體系;熟練的掌握并會運用 Java 語言與面向?qū)ο蟪绦蛟O計的思想和方法設計應用程序解 決應用問題,積累程序設計的實踐經(jīng)驗,為培養(yǎng)軟件技術高技能人才奠定基礎。

      本課程是培養(yǎng)計劃中綜合性較強的實踐教學環(huán)節(jié)之一, 幫助學生掌握教學內(nèi)容、培養(yǎng)學生運用知識 解決應用問題的實際動手能力、提高學生綜合素質(zhì)有很重要的意義。

      2.教學要求:本課程設計以設計一個或多個實際應用系統(tǒng)為目的,通過課程設計讓學生較全面的 掌握 Java 語法基礎知識、面向?qū)ο蟪绦蛟O計方法, 尤其是基于 Java 的應用程序設計的方法與技術, 能 夠運用 J2SE平臺,結合相應的數(shù)據(jù)庫系統(tǒng)開發(fā)應用程序,理論聯(lián)系實際,達到培養(yǎng)實踐操作技能的目 的。

      學生要了解 Java 程序開發(fā)的一般過程,特別掌握系統(tǒng)分析與設計的基本方法,寫出系統(tǒng)分析與設 計報告,并能設計真實可用的應用系統(tǒng)。

      三.課程設計內(nèi)容與安排

      根據(jù)老師提供的設計題目, 寫出系統(tǒng)分析與設計報告, 并建立原型系統(tǒng)。題目可以由教師與學生根 據(jù)實際情況商定,可參考的題目:圖書借閱管理系統(tǒng)、產(chǎn)品管理

      系統(tǒng)、學生成績管理、學生信息管理、人事管理、人力資源管理系統(tǒng)、物流信息管理系統(tǒng)等。

      1.主要設計內(nèi)容如下:(1系統(tǒng)設計:包括系統(tǒng)需求分析、總體設計和功能設計,必要時使用圖表說明。(2數(shù)據(jù)庫設計與實現(xiàn):包括數(shù)據(jù)庫的需求分析、數(shù)據(jù)庫的概念結構設計和數(shù)據(jù)庫的邏輯設計。

      (3系統(tǒng)各模塊設計:包括用戶界面及相應功能算法等程序設計。2.教學安排

      總課時 30課時,其中需求分析與系統(tǒng)設計、數(shù)據(jù)庫設計與實現(xiàn)、系統(tǒng)各模塊實現(xiàn)所以及系統(tǒng)集成 調(diào)試運行用時間建議各占 15%,15%,40%,20%的課時, 學生可根據(jù)具體情況調(diào)整, 利用 10%的時間完成課 程設計報告。

      四.課程設計教學建議及要求

      1.要求學生有一定的程序設計和數(shù)據(jù)庫基礎知識,由老師指定或?qū)W生自行組織形成項目小組,必 要時由多人開發(fā)一個項目, 其中需要指定負責項目的小組長控制項目進度。每個小組的項目開發(fā)過程應 該遵從項目管理規(guī)范。

      2.嚴格要求每個學生按照規(guī)定時間進行設計,禁止無故遲到和曠課。3.要求學生有自我學習的能力,遇到問題要學會自我解決。

      4.要求設計的界面美觀、合理、便于操作等,功能與實際應用系統(tǒng)緊密聯(lián)系,系統(tǒng)結構合理構思 巧妙、模塊化程度高等。

      五.課程設計成績評定

      課程設計成績由學生的出勤情況和程序設計情況各分別占 10%和 90%組成。程序的考核從界面、功 能實現(xiàn)、創(chuàng)新性、問題回答和課程設計報告等幾方面進行。

      考核內(nèi)容和比重表(參考

      考核內(nèi)容 出勤 界面 功能實現(xiàn) 創(chuàng)新 問題回答 設計報告 比重 10%15%30%15%10%20% 六.課程設計報告撰寫與提交

      1.課程設計報告格式見本文后面所附 “課程設計報告模板” , 課程設計報告最終以電子稿形式提交, 如需打印另行通知。在課程設計正文中使用圖表時, 所有的圖必須有圖號和圖題, 所有的表必須有表的 名稱和編號。

      2.對課程設計報告正文內(nèi)容的提示說明如下:(1摘要(100-150個字: 主要包括設計內(nèi)容、方法和結果,最后列出報告中用到關鍵字。(2課程設計介紹(要求 400-600個字: 對課程設計內(nèi)容做綜述,介紹課程設計的目的和要求等內(nèi)容。同時對課程設計小組成員構成 進行介紹,并說明自己在整個課程設計中將承擔的任務。

      (3系統(tǒng)設計(要求 600-800個字: 主要介紹完成系統(tǒng)需求分析、總體設計和功能設計。必要時利用圖表說明。(4數(shù)據(jù)庫設計與實現(xiàn): 主要介紹數(shù)據(jù)庫的需求分析、數(shù)據(jù)庫的概念結構設計和數(shù)據(jù)庫的邏輯設計。數(shù)據(jù)庫設計應利 用圖表說明。

      (5系統(tǒng)各功能模塊設計(字數(shù)根據(jù)實際情況而定 : 主要介紹系統(tǒng)各功能模塊的界面設計及相應的功能程序設計。對于界面設計應的描述界面中所

      使用的相應的組件列表,包括組件類別、組件 ID 值、組件作用等。同時應附相應界面設計狀 態(tài)的界面截圖和相應的運行界面截圖。如果涉及多個功能模塊,則應分別描

      述。

      (6課程設計總結和體會

      主要對課程設計所做的工作進行總結, 同時描述課程設計后的體會, 包括專業(yè)技術方面的體會 和職業(yè)能力和職業(yè)意識方面的體會。另外對課程設計內(nèi)容中存在的不足和改進意見進行闡述。(7致謝

      在課程設計過程中,如果得到他人的幫助,則不要忘記致謝。(8參考文獻

      要列出在課程設計過程中用到的主要參考文獻和站點。雖然看過, 但沒有用到的文獻或站點則 不必列出。參考文獻要與報告正文關聯(lián),要不少于 4項。

      (9附錄:帶注釋的程序清單

      源程序清單只寫關鍵程序要有注釋。注釋是功能性的注釋,而不須要對語句或命令本身進行 注釋。

      Java 課程設計參考題目

      1、編寫一個記事本程序 要求:

      用圖形用戶界面實現(xiàn)。

      能實現(xiàn)編輯、保存、另存為、查找替換等功能。提示:使用文件輸入輸出流。

      2、模擬龜兔賽跑 要求: 用圖形用戶界面實現(xiàn)。

      能設置比賽時間,馬匹的數(shù)量等等。在任意時間段內(nèi)馬匹的速度是隨機的。開始比賽之后以動畫顯示賽馬過程。提示:使用多線程

      3、學生信息管理系統(tǒng) 要求: 使用圖形用戶界面

      用數(shù)據(jù)庫建立 1或 2個學生信息表。(可以使用 txt 文件代替數(shù)據(jù)庫 能連接數(shù)據(jù)庫并實現(xiàn)查詢、增、刪、改等功能。

      4、聊天小程序 要求: 使用圖形用戶界面。

      能實現(xiàn)一個聊天室中多人聊天。

      可以兩人私聊。提示:使用 socket 通信

      5、ATM 柜員機模擬程序

      要求:使用圖形用戶界面。當輸入給定的卡號和密碼(初始卡號和密碼為 123456 時, 系統(tǒng)能登錄 ATM 柜員機系統(tǒng),用戶可以按照以下規(guī)則進行:

      1、查詢余額:初始余額為 10000元

      2、ATM 取款:每次取款金額為 100的倍數(shù),總額不超過 5000元,支取金額不允許透支。

      3、ATM 存款:不能出現(xiàn)負存款。

      4、修改密碼:新密碼長度不小于 6位,不允許出現(xiàn) 6位完全相同的情況,只有舊密碼正確,新密碼符 合要求,且兩次輸入相同的情況下才可以成功修改密碼。

      6、實現(xiàn)數(shù)據(jù)結構中二叉樹的遍歷演示過程 要求:使用圖形用戶界面

      實現(xiàn)二叉樹的前序遍歷、中序遍歷、后續(xù)遍歷、按層遍歷的算法的演示過程。動畫演示盡量與程序執(zhí)行 同步,人機交互、適于教學。

      7、超市收銀系統(tǒng) 要求:使用圖形用戶界面。

      由收銀員輸入顧客的會員卡卡號(若有卡、所購商品的貨號等。從數(shù)據(jù)庫中取出有關價格信息,再把

      這些信息返回給收銀臺。同時把該收銀臺的銷售總量和有關種類商品的剩余量以及該持卡顧客的消費情 況交數(shù)據(jù)庫存儲以供查詢。

      另外,對沒有卡的消費情況不記錄該顧客的消費情況等個人信息。如果一個未持卡顧客一次購物滿 200元,可為其發(fā)放一張會員卡,以后在該商場購物可向 9折優(yōu)惠。

      8、萬年歷

      要求:使用圖形用戶界面。

      實現(xiàn)日期與星期的查詢,其他功能自定義。

      9、五子棋游戲 要求:使用圖形用戶界面 實現(xiàn)兩人游戲,能夠判斷輸贏

      有 “ 開始 ” 按鈕,當選擇完棋盤大小后,按此按鈕進入對戰(zhàn)狀態(tài)。當有勝利者(垂直、水平、對角線連續(xù) 5子 ,顯示對話框,提示誰(黑還是白勝利了。若當棋盤滿了還無勝利者,顯示平局對話框。界面 上還要有 “ 復盤 ” 按鈕,可對完成的棋局進行復盤,例如每 3秒走一步。

      10、日歷記事本

      要求:帶有日程提醒功能的日歷。

      1、顯示信息:用戶可以向前翻頁查詢前一個月的日期,也可以向后翻頁查詢下一個月的日期。

      2、定時提醒:用戶可以針對某一天來添加,刪除和編輯這一天的日程提醒信息,當系統(tǒng)時間和提醒時 間相吻合時,給出具有提示信息的對話框。

      3、查詢信息:用戶可以查詢到某個月的所有的提示信息。

      11、電子英漢詞典

      要求: 能夠編輯詞典庫中的信息

      能夠?qū)崿F(xiàn)英譯漢,漢譯英。(要考慮一詞多義

      12、計算器小程序 要求:使用圖形用戶界面

      能在鍵盤或鼠標上讀入數(shù)據(jù),并完成加。減。乘。除計算。在屏幕上顯示一個主菜單。提示用戶輸入 相應的數(shù)字鍵,分辨執(zhí)行加。減。乘。除計算功能和結束程序的功能。

      13、圖的最小生成樹算法過程演示 要求:使用圖形用戶界面

      使用菜單顯示普利姆和克魯斯卡爾最小生成樹的動畫實現(xiàn)過程, 動畫與算法的實現(xiàn)盡量同步實現(xiàn), 便于 人機交互和教學。

      14、加密與解密 要求:采用圖形用戶界面

      1、給定任意一個文本文件,進行加密,生成另一個文件。

      2、對加密后的文件還原。

      15、小游戲 要求:。

      程序隨機產(chǎn)生 20— 50根火柴,由人與計算機輪流拿,每次拿的數(shù)量不超過 3根,拿到最后一根為勝。(使用圖形界面

      16、敏感詞匯分析 要求: 任意選擇一個文本文件,分析該文件,如果存在敏感詞匯(這些詞匯保存在 sentive.txt 文件中,每個詞 占一行 ,報告每個詞出現(xiàn)的次數(shù)。

      17、基數(shù)排序過程動畫演示 要求:使用圖形用戶界面

      基數(shù)排序算法的實現(xiàn)過程參照《數(shù)據(jù)結構》教材,動畫效果強??梢圆捎米罡呶粌?yōu)先算法實現(xiàn),也可以 采用最低位優(yōu)先算法實現(xiàn),人機交互、便于教學。

      課程設計時間安排 序 號

      時 間 實習主要內(nèi)容 實習地點 指導教師

      1星期一 上午 概要設計:確定項目的實施方案、設 計程序模塊連接圖、完成模塊功能描 述

      實訓室 劉延嶺

      2星期一 下午 總體設計:設計程序流程圖,完成數(shù) 據(jù)庫設計、方法設計

      實訓室 劉延嶺 3星期二 上午 詳細設計:實現(xiàn)系統(tǒng)功能 實訓室 劉延嶺 4星期二 下午 詳細設計:實現(xiàn)系統(tǒng)功能 實訓室 劉延嶺 5星期三 上午 詳細設計:實現(xiàn)系統(tǒng)功能

      實訓室 劉延嶺 6星期三 下午 詳細設計:實現(xiàn)系統(tǒng)功能 實訓室 劉延嶺 7星期四 上午 系統(tǒng)功能完善,整合測試 實訓室 劉延嶺 8星期四 下午 撰寫設計文檔 實訓室 劉延嶺 9星期五 上午 撰寫設計文檔 實訓室 劉延嶺 10星期五 下午 檢查驗收 實訓室 劉延嶺

      計算機與信息工程系

      《 JAVA 程序設計》課程設計(字為黑體四號粗 課程設計題目(黑體二號粗 專業(yè) 計算機 班級 1001班 學號 02 姓名;劉騰帥 E-Mail 電話 *** 時間

      (字為黑體四號粗 承德石油高等專科學校(字為楷體四號粗

      (報告正文為宋體,多倍行間距:1.25倍 摘要:(四號粗

      內(nèi)容(小四號字

      關鍵字:(小四號粗 內(nèi)容(小四號字 1.課程設計介紹(四號粗

      對課程設計內(nèi)容做綜述,介紹課程設計的目的和要求等內(nèi)容。同時對課程設計小組成 員構成進行介紹,并說明自己在整個課程設計中將承擔的任務。2.系統(tǒng)設計(四號粗 內(nèi)容(小四 2.1需求分析 2.2總體設計 2.3功能設計

      3.系統(tǒng)各功能模塊設計(四號粗(注:必要時應分模塊(頁面描述 內(nèi)容(小四

      4.1界面設計(必要時使用用戶組件 4.2功能實現(xiàn)

      4.課程設計總結和體會(小四號粗 內(nèi)容(小四 5.致謝(四號粗 參考文獻(四號粗

      內(nèi)容(小四內(nèi)容如下例所示:

      小四

      ([1]博彥科技.編程高手 J2EE.北京大學出版社,2000.94-97 [2]http://004km.cn/learning/lesson/xinxi/20030401/lesson.asp 附錄(注:另起一頁

      1.xx 功能模塊(頁面相關事件或方法程序清單(1 xx 事件或方法(2 xxxxxxxxxxxx 2.xx 功能模塊(頁面相關事件或方法程序清單(1xx 事件或方法(2 xxxxxxxxxxxx 成績評定

      出勤情況(10分 界面設計(15分 功能實現(xiàn)(30分 創(chuàng)新點(15分 答辯情況(10分 設計報告(20分 設計評語

      指導教師

      第三篇:《Java程序設計課程設計》教學大綱1

      《Java程序設計課程設計》教學大綱

      Java Programming Course Design

      課程代碼: I1101Y09

      課程總周數(shù):

      2-4

      分:

      課程性質(zhì):

      必修

      課程類別:

      集中實踐環(huán)節(jié)

      先修課程:

      《 Java程序設計 》

      面向?qū)I(yè):

      信息管理與信息系統(tǒng)

      開課單位 :

      經(jīng)濟與管理學院

      執(zhí)

      筆:

      校:

      一、課程設計的地位與任務

      《Java程序設計課程設計》是信息管理與信息系統(tǒng)專業(yè)必做的集中實踐性環(huán)節(jié)之一,是學習完《Java程序設計》課程后進行的一次全面的綜合練習。其目的在于通過課程設計,使學生能夠得到較系統(tǒng)的技能訓練,從而鞏固和加深對Java 編程的基礎理論知識的理解,培養(yǎng)學生綜合運用所學理論解決實際問題的能力,使學生成為具有扎實的計算機理論基礎和較強的獨立動手能力的復合型、應用型人才。

      二、課程設計的內(nèi)容和基本要求

      1、內(nèi)容:設計題目需要在老師課堂上演示的程序基礎上增加1-9個功能。

      2、要求:

      (1)學生兩到三人組成一組,每組必須獨立完成設計任務,嚴禁抄襲或找人代做等行為,一經(jīng)發(fā)現(xiàn)成績以不及格計。

      (2)課程設計期間要嚴格遵守學習紀律,遵守作息時間,不得遲到、早退和曠課,課程設計期間缺勤1/3以上者,成績以不及格記。

      (3)課程設計報告每組學生上交一份課程設計報告打印稿(A4雙面打?。?。每班以班級為單位交一張刻錄光盤,并且將光盤內(nèi)容每班學委打個壓縮包發(fā)老師郵箱。

      該光盤包括每組的文件夾,其中包括每組的設計報告內(nèi)容以及每組獨立開發(fā)的軟件。每組的文件夾命名規(guī)則為“組長名字_組員1名字_組員2名字”)。注意:光盤要有封皮,注明班級、小組總數(shù),一起上交。

      三、教學安排與教學方法

      依照教學計劃,課程安排在2或4周內(nèi)完成,共32學時。1.復習過去所學主要內(nèi)容(8學時)

      2.系統(tǒng)分析,主要核心功能及代碼設計(8學時)3.剩余功能代碼實現(xiàn)、編程調(diào)試(12學時)4.完成課程設計報告(4學時)

      四、考核方法及成績評定

      1、考核類別:考查

      2、考核形式:平時成績(20%)、課程設計報告及軟件驗收(80%)。

      3、成績評定:百分制,100分滿分,低于60分為不及格。

      五、推薦教材與主要參考書 推薦教材

      1、梁勇 :《Java語言程序設計 基礎篇(原書第8版)》,機械工業(yè)出版社,2012;

      2、梁勇 :《Java語言程序設計 進階篇(原書第8版)》,機械工業(yè)出版社,2012。

      主要參考書

      1、[美]塞若,[美]貝茨:《Head First Java(中文版)》,中國電力出版社,2007;

      2、[美]??藸枺骸禞ava編程思想(第4版)》,機械工業(yè)出版社,2007;

      3、[美]史蒂芬.約翰.梅特斯克:《Java設計模式(第2版)》, 電子工業(yè)出版社,2012。

      第四篇:《Java語言程序設計》課程設計指導書

      《Java語言程序設計》課程設計指導書

      一、教學目標

      《Java語言程序設計》是計算機類專業(yè)和信息安全專業(yè)的專業(yè)課。Java語言是目前廣為流行的面向?qū)ο蟪绦蛟O計語言,適用于網(wǎng)絡編程,滿足Internet上軟件開發(fā)的需要。因此本課程是一門概念性和實踐性都很強的專業(yè)課程。本課程從基本程序設計流程出發(fā),逐步過渡到面向?qū)ο蟮某绦蛟O計方法,由淺入深地講解面向?qū)ο蟮木幊趟枷搿?/p>

      java課程設計是鞏固所學理論知識、提高程序設計能力的重要實踐環(huán)節(jié)。通過課程設計的訓練,使學生能夠綜合應用Java的基礎知識和基本方法,體會軟件設計的全過程,編寫出高效率的應用程序,培養(yǎng)學生的數(shù)據(jù)處理能力,提高軟件設計能力,從而為今后進行系統(tǒng)軟件和應用軟件的開發(fā)研究打下堅實的基礎,并倡導刻苦鉆研的精神和嚴謹?shù)闹螌W作風。

      二、教學要求

      課程設計要求每位學生熟練運用Java語言,按照面向?qū)ο蟪绦蛟O計思想,獨立編制一個略具規(guī)模、中等難度的應用程序。調(diào)試通過并寫出課程設計報告,課程設計報告包括題目說明、題意分析、設計目的、設計特點、功能說明、主要功能程序段、運行結果及結果分析、編程經(jīng)驗、設計體會、存在問題及解決方法等。

      三、課程設計題目

      課程設計課題分推薦課題和其它課題:

      推薦課題:javaweb開發(fā)的管理系統(tǒng)(圖書查詢系統(tǒng)、汽車租賃系統(tǒng)、倉庫管理系統(tǒng)、人事管理系統(tǒng)等)

      其它課題:javaswing開發(fā)的游戲、工具、管理系統(tǒng) 俄羅斯方塊、5子棋游戲、掃雷、模擬考試系統(tǒng)

      2、設計要求

      ⑴ 獨立編制一個略具規(guī)模、中等難度的應用程序。

      ⑵ 調(diào)試通過并寫出課程設計報告,課程設計報告包括題目說明、題意分析、設計目的、設計特點、功能說明、主要功能程序段、運行結果及結果分析、編程經(jīng)驗、設計體會、存在問題及解決方法等。

      四、主要開發(fā)工具

      Javaweb相關工具

      五、課程設計報告要求

      1.封面:按下面所給的格式填寫 2.正文要求如下:(1)題目說明;(2)題意分析;(2)設計目的;(3)設計特點;(4)功能說明;(5)主要程序段;

      (6)運行結果分析以及測試結果(7)存在問題解決方法

      (8)結束語(設計收獲體會)3.報告正文格式要求: ·大標題三號加粗 ·小標題四號加粗 ·正文宋體小四號字

      ·每個自然段開始空兩格.·文中英文用新羅馬(time new roman),四號

      4.其他要求:字數(shù)5000字

      六、提交的材料

      (一)、程序(電子版)

      (二)、程序設計說明書(打印)

      七、課程設計成績評定

      平時出勤及表現(xiàn): 10% 課程設計完成情況,難度等級60% 課程設計報告、文檔資料:30%

      1、期末成績評定

      實習成績 = 實際操作、調(diào)試和測試(效果)+ 設計報告 +平時表現(xiàn)。

      2、評定標準

      (1)嚴格控制95分,其標準是有創(chuàng)意;(2)90分以上,必須全部正確;(3)有少許錯誤,可給80—89;(4)錯誤不多,可給60—79;

      注:如甲、乙有拷貝、復印等抄襲現(xiàn)象,甲、乙均按0分處理。

      第五篇:Java程序設計報告

      楚雄師范學院

      2015年春季期末Java程序設計報告

      項目名稱:基于Java平臺開發(fā)的五子棋程序設計

      學 院: 物理與電子科學學院

      專 業(yè):電子信息科學與技術

      班 級:2 0 1 3 級 電 信 一 班

      組員姓名:楊邦桂 許勇 董俊宏 課程教師: 程 滿

      目錄

      引言...........................................................................................................................................4 第一章 設計目的和要求.........................................................................................................4 第二章JAVA語言概述.........................................................................................................4 2.1 JAVA簡介........................................................................................................................4 2.1.1 JAVA的基本特點.....................................................................................................4 2.2 JAVA工具

      JDK............................................................................................................5 第三章 程序的設計思路和算法.............................................................................................5 3.1 人機博弈的要點............................................................................................................5 3.2 五子棋特點及規(guī)則......................................................................................................5 3.3 設計思路......................................................................................................................6 3.3.1...................................................................................................................................6 第四章 測試及運行效果.........................................................................................................6 4.1棋盤系統(tǒng)主界面.............................................................................................................6 4.2下期博弈過程界面.........................................................................................................7 4.3黑方贏的結果.................................................................................................................7 4.4白方贏的結果.................................................................................................................8 第五章 設計體會與總結.........................................................................................................9 附錄.........................................................................................................................................10 源程序代碼及簡要說明:.................................................................................................10

      引言

      隨著計算機技術的不斷發(fā)展,網(wǎng)絡技術的普及范圍越來越廣,網(wǎng)絡能夠提供的服務多樣、便捷,已經(jīng)成為人們生產(chǎn)生活中不可缺少的重要組成部分。如今網(wǎng)絡休閑游戲發(fā)展迅速,它憑借健康、方便、互動性強、益智等諸多優(yōu)點,成為大部分現(xiàn)代人休閑娛樂的首選。

      網(wǎng)絡五子棋游戲是使用Java語言開發(fā)的一款游戲。它使用SOCKET建立連接,多線程處理數(shù)據(jù),以及可嵌入網(wǎng)絡瀏覽器的APPLET作為客戶端,這些特點使這款游戲無論是服務器還是客戶端的實現(xiàn)都相對容易。通過對該軟件的編寫,還可以鞏固學生對以上各種知識的掌握和理解。

      第一章 設計目的和要求

      1.1 實現(xiàn)一個簡單的五子棋游戲程序,包括如下兩個界面:(1)對弈及角色(黑方先落棋)。

      (2)在游戲界面,有游戲欄(開局、悔棋、退出),幫助欄; 顯示區(qū);棋盤區(qū)。1.2在實際系統(tǒng)中使用、實現(xiàn)人工智能的相關算法

      1.3進一步加深對人工智能算法的理解

      第二章JAVA語言概述

      2.1 JAVA簡介

      JAVA是Sun Microsystem公司開發(fā)的編程語言,是一個簡單,面向?qū)ο螅植际?,解釋性,強壯,安全,與系統(tǒng)無關,可移植,高性能,多線程和動態(tài)的語言。

      2.1.1 JAVA的基本特點

      (1)簡單性

      Java與C++語言非常相近,但Java比C++簡單,它拋棄了C++中的一些不是絕對必要的功能,如頭文件、預處理文件、指針、結構、運算符重載、多重繼承以及自動強迫同型。Java實現(xiàn)了自動的垃圾收集,簡化了內(nèi)存管理的工作。

      (2)面向?qū)ο?/p>

      Java提供了簡單的類機制和動態(tài)的構架模型。對象中封裝了它的狀態(tài)變量和方法,很好地實現(xiàn)了模塊化和信息隱藏;而類則提供了一類對象的原型,通過繼承和重載機制,子類可以使用或重新定義父類或超類所提供的方法,從而既實現(xiàn)了代碼的復用,又提供了一種動態(tài)的解決方案。

      (3)多線程

      多線程使應用程序可以同時進行不同的操作,處理不同的事件。在多線程機制中,不同的線程處理不同的任務,他們之間互不干涉,不會由于一處等待影響其他部分,這樣容易實現(xiàn)網(wǎng)絡上的實時交互操作。

      (4)分布性

      Java是面向網(wǎng)絡的語言。通過它提供的類庫可以處理TCP/IP協(xié)議,用戶可以通過URL地址在網(wǎng)絡上很方便的訪問其他對象。(5)體系結構中立

      Java是一種網(wǎng)絡語言,為使Java程序能在網(wǎng)絡的任何地方運行,Java解釋器生成與體系結構無關的字節(jié)碼結構的文件格式。為了使Java的應用程序能不依賴于具體的系統(tǒng),Java語言環(huán)境還提供了用于訪問底層操作系統(tǒng)功能的類組成的包,當程序使用這些包時,可以確保它能運行在各種支持Java的平臺上。

      (6)安全性

      用于網(wǎng)絡、分布環(huán)境下的Java必須要防止病毒的入侵,Java不支持指針,一切對內(nèi)存的訪問都必須通過對象的實例變量來實現(xiàn),這樣就防止了程序員使用欺騙手段訪問對象的私有成員,同時也避免了指針操作中容易產(chǎn)生的錯誤。

      2.2 JAVA工具

      JDK

      (1)Java編譯器

      Java編譯器將Java源代碼文件編譯成可執(zhí)行的Java字節(jié)碼。Java源代碼文件的擴展名為.java,Java編譯器把這種擴展名的文件編譯成擴展名為.class的文件。源文件中的每個類在編譯后都將產(chǎn)生一個class文件,這意味一個Java源代碼文件可能編譯生成多個class文件。

      (2)Java解釋器

      Java解釋器對編譯生成的字節(jié)碼格式的可執(zhí)行程序的運行提供支持,它是運行非圖形Java程序的命令行工具。

      第三章 程序的設計思路和算法

      3.1 人機博弈的要點

      人機對弈的程序,至少應具備以下5個部分:

      (1)某種在機器中表示棋局的方法,能夠讓程序知道博弈的狀態(tài)。(2)產(chǎn)生合法走法的規(guī)則,以使博弈公正地進行,并可判斷人類對手是否亂走。(3)從所有合法的走法中選擇最佳的走法技術。(4)一種評估局面優(yōu)劣的方法,用以同上面的技術配合做出智能的選擇。(5)一個界面,有了他,這個程序才能用。

      3.2 五子棋特點及規(guī)則

      五子棋的娛樂性強、規(guī)則簡單、易學、流行性廣。普通人不需長時間專門訓練即可自如行棋。因此極受大眾歡迎。五子棋的規(guī)則為:

      (1)棋盤

      采用像圍棋盤一樣的15路或19路線的棋盤,在此采用19路的棋盤。

      (2)下法

      兩人分別執(zhí)黑白兩色棋子。輪流在棋盤上選擇一個無子的交叉點落子,無子的交叉點又被稱為空點。

      (3)輸贏判斷

      黑、白雙方有一方的五個棋子在橫、豎或斜方向上連接成一線即為該方贏。

      (4)特殊規(guī)定

      職業(yè)五子棋雖然對黑棋采取了種種限制,但黑子先行的優(yōu)勢依然很大。因此,在高段位的職業(yè)比賽中,又出現(xiàn)了三種特殊的規(guī)定。

      a.指定打法:是指比賽雙方按照約定好的開局進行對弈,由白棋先行。

      b.三手可交換:是指黑棋下盤面第3手棋后,白方在下第四手之前,如感覺黑方棋形不利于己方,可提出交換,即執(zhí)白棋一方變?yōu)閳?zhí)黑棋一方,而黑方不可以不換。

      c.五手兩打法:是指黑棋在下盤面上關鍵的第5手棋時,必須下兩步棋,讓白棋在這兩步棋中拿掉一粒棋子,然后再繼續(xù)對弈。一般說來,白棋肯定拿掉對白方不利的一點,而保留對黑方較為不利的那點讓黑方行棋。3.3 設計思路

      3.3.1開始——下棋——判斷輸贏——結束游戲或重新再來——退出。

      1.建立一個棋盤類,繪制棋盤的樣式,在棋盤面板上添加各種按鈕及相應胡觸發(fā)事件。同時注意面板的設計,使面板設計的盡量胡的合理美觀。2.編寫一個功能判斷落子的位置及畫出相應的黑白棋子。3.判斷勝負

      第四章 測試及運行效果

      4.1棋盤系統(tǒng)主界面

      圖4-1初始化棋盤效果,玩家為黑棋 4.2下棋博弈過程界面

      圖4-2黑白棋博弈

      4.3黑方贏的結果

      圖4-3黑方勝利界面

      4.4白方贏的結果

      圖4-4白方勝利界面

      第五章 設計體會與總結

      Java編程最強大的地方不是它是容易學,或者難學,而是它擁有一個強大的庫。JAVA是一個完全面向?qū)ο蟮恼Z言,JAVA的命名規(guī)則是很容易讓人接受的。而且容易被編程人員記住。經(jīng)過實踐訓練,對JAVA的綜合應用能力有了較大的提高,另外對JAVA的特點有了更深層次的認識。這次實踐中使用的代碼雖然不長,但類與類之間也有很強的邏輯關系,這就是面向?qū)ο笳Z言的最大優(yōu)勢,這樣可使我們更輕松的運用JAVA。

      經(jīng)過努力,查閱相關資料,終于完成該課題,雖然效果不是很好,但親手做過之后還是很有成就感的。

      通過此次課程設計,將我本學期所學的JAVA知識得到鞏固和應用,在設計的過程中我遇到了很到問題,不過在老師和同學們的幫助和自己的思考下還是很好的完成了。這此課程設計還讓我懂得了寫程序不能閉門造車,要努力拓寬知識面,開闊視野,拓展思維。它還讓我學會了在網(wǎng)上查閱那些無限的資料。通過對此課題的開發(fā),使我對用Eclipse開發(fā)平臺有了一個比較清楚的認識,體會到理論和實踐的重要性。由于自己的分析設計和程序經(jīng)驗不足,該系統(tǒng)設計和實現(xiàn)過程中,還有許多沒有完善的地方,比如用戶界面設計不夠美觀,異常出錯處理比較差等多方面問題,這些都有待進一步完善和提高。

      附錄

      源程序代碼及簡要說明:

      import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Timer;import java.util.TimerTask;import java.lang.Thread;public class WZQ_2008 extends Frame implements ActionListener { Timer t=new Timer(true);//Thread mt=new MyThread(this);MenuBar mb=new MenuBar();Menu myx=new Menu(“游戲”);Menu mbz=new Menu(“幫助”);MenuItem mikj=new MenuItem(“開局”);MenuItem mihq=new MenuItem(“悔棋”);MenuItem mitc=new MenuItem(“退出”);MenuItem migy=new MenuItem(“關于”);int x=0;int y=0;String stb=“五子棋游戲

      請黑方落子”;String stw=“五子棋游戲

      請白方落子”;boolean isBlack=true;String str=“Game Over”;boolean over=false;int count=0;int jj=30;int r=25;String str1;int [][]date=new int[15][15];

      int i=0;public WZQ_2008(){

      this.setMenuBar(mb);

      mb.add(myx);

      mb.add(mbz);

      myx.add(mikj);mikj.addActionListener(this);mikj.setEnabled(false);myx.add(mihq);mihq.setEnabled(false);mihq.addActionListener(this);myx.add(mitc);mitc.addActionListener(this);mbz.add(migy);migy.addActionListener(this);this.setTitle(stb);this.setBounds(100,100,485,500);this.setBackground(new Color(206,148,49));this.setResizable(false);this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){

      System.exit(0);} });this.addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e){

      if(over)

      {

      return;

      }

      x=(e.getX()-30+jj/2)/jj;

      y=(e.getY()-60+jj/2)/jj;

      if(x<0||x>14||y<0||y>14)

      {

      return;

      }

      if(date[x][y]!=0)

      {

      return;

      }

      if(isBlack)

      {

      setTitle(stw);

      date[x][y]=1;

      }

      else

      {

      setTitle(stb);

      date[x][y]=2;

      }

      mikj.setEnabled(true);

      mihq.setEnabled(true);

      isBlack=!isBlack;

      pd();

      repaint();

      } });this.setVisible(true);

      } public void pd(){ int xq=0,xz=14;int yq=0,yz=14;if(x-4>0){

      xq=x-4;} if(x+4<14){

      xz=x+4;} if(y-4>0){

      yq=y-4;} if(y+4<14){

      yz=y+4;} pdh(xq,xz);count =0;pds(yq,yz);count=0;pdfx(xq,xz);count=0;pdzx(xq,xz);} public void pdzx(int xq,int xz){ for(int i=xq;i<=xz;i++){

      if(y+x-i<0)

      {

      break;

      }

      if(y+x-i>14)

      {

      continue;

      }

      if(date[i][y+x-i]==date[x][y])

      {

      count++;

      isOver();

      }

      else

      {

      count=0;

      } } } public void pdfx(int xq,int xz){ for(int i=xq;i<=xz;i++){

      if(y-x+i<0)

      {

      continue;

      }

      if(y-x+i>14)

      {

      break;

      }

      if(date[i][y-x+i]==date[x][y])

      {

      count++;

      isOver();

      }

      else

      {

      count=0;

      } }

      } public void pds(int yq,int yz){ for(int i=yq;i<=yz;i++){

      if(date[x][i]==date[x][y])

      {

      count++;

      isOver();

      }

      else

      {

      count=0;

      } } } public void pdh(int xq,int xz){ for(int i=xq;i<=xz;i++){

      if(date[i][y]==date[x][y])

      {

      count++;

      isOver();

      }

      else

      {

      count=0;

      } } } public void isOver(){ if(count==5){

      over=true;

      if(date[x][y]==1)

      {

      str1=“黑方勝利”;

      }

      else if(date[x][y]==2)

      {

      str1=“白方勝利”;

      }

      //mt.start();

      //for(int i=0)

      t.schedule(new MyTimer(this),100,500);

      this.repaint();} } public void actionPerformed(ActionEvent e){ if(e.getSource()==mikj){

      mikj.setEnabled(false);

      mihq.setEnabled(false);

      for(int i=0;i

      {

      for(int j=0;j

      {

      date[i][j]=0;

      }

      }

      isBlack=true;

      this.setTitle(stb);

      over=false;

      this.repaint();} if(e.getSource()==mihq){

      mihq.setEnabled(false);

      date[x][y]=0;

      if(isBlack)

      {

      this.setTitle(stw);

      }

      else

      {

      this.setTitle(stb);

      }

      isBlack=!isBlack;

      this.repaint();} if(e.getSource()==mitc){

      this.dispose();}

      if(e.getSource()==migy){

      new MyAbout(this);} } public void update(Graphics g){ paint(g);} public void paint(Graphics g){ Image ii=this.createImage(485,500);Graphics gg=ii.getGraphics();paintBuffer(gg);g.drawImage(ii,0,0,this);} public void paintBuffer(Graphics g){ for(int i=0;i<15;i++){

      g.drawLine(30,60+i*jj,30+14*jj,60+i*jj);

      g.drawLine(30+i*jj,60,30+i*jj,60+14*jj);} for(int i=0;i

      for(int j=0;j

      {

      if(date[i][j]==1)

      {

      g.setColor(Color.BLACK);

      }

      else if(date[i][j]==2)

      {

      g.setColor(Color.WHITE);

      }

      else

      {

      continue;

      }

      //抗鋸齒,使繪畫出來的圖形更圓滑

      Graphics2D g2d=(Graphics2D)g;

      g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);

      g.fillOval(30-jj/2+i*jj,60-jj/2+j*jj,r,r);

      }

      }

      if(over)

      {

      g.setColor(Color.GRAY);

      g.setFont(new Font(“楷體”,3,70));

      g.drawString(str,45,250);

      g.drawString(str1,48,350);

      g.setColor(Color.RED);

      g.setFont(new Font(“楷體”,3,70));

      g.drawString(str,50,253);

      g.drawString(str1,60,353);

      mihq.setEnabled(false);

      } } public static void main(String[]args){

      new WZQ_2008();

      } } class MyAbout extends Dialog { Button bok=new Button(“確定”);public MyAbout(WZQ_2008 wzq){

      super(wzq,“百納科技五子棋”,true);

      this.add(bok);

      bok.setBounds(180,250,60,20);

      this.setLayout(null);

      this.addWindowListener(new WindowAdapter()

      {

      public void windowClosing(WindowEvent e)

      {

      dispose();

      }

      });

      bok.addActionListener(new ActionListener()

      {

      public void actionPerformed(ActionEvent e)

      {

      dispose();

      }

      });

      this.setBounds(100,100,400,300);

      this.setResizable(false);

      this.setVisible(true);} public void paint(Graphics g){

      Image ii=new ImageIcon(“about.jpg”).getImage();

      g.drawImage(ii,0,0,this);} } class MyTimer extends TimerTask { WZQ_2008 wzq;boolean b=true;public MyTimer(WZQ_2008 wzq){

      this.wzq=wzq;} public void run(){

      if(!wzq.over)

      {

      return;

      }

      if(b)

      {

      wzq.str=“Game Over”;

      }

      else

      {

      wzq.str=“";

      }

      b=!b;

      wzq.repaint();

      wzq.i++;

      if(wzq.i==11)

      {

      cancel();

      wzq.i=0;

      }

      System.out.println(wzq.i);} } /*class MyThread extends Thread { WZQ_2008 wzq;boolean b=true;public MyThread(WZQ_2008 wzq){

      this.wzq=wzq;} public void run(){

      if(!wzq.over)

      {

      return;

      }

      if(b)

      {

      wzq.str=”Game Over“;

      }

      else

      {

      wzq.str=”";

      }

      b=!b;

      wzq.repaint();}

      }*/

      下載(騎士游歷)JAVA程序設計課程設計報告word格式文檔
      下載(騎士游歷)JAVA程序設計課程設計報告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

      相關范文推薦

        Java程序設計課程設計學生考勤系統(tǒng)

        信息與電子工程學院 課程設計報告 課程名稱: 姓名: 學號: 班級: 指導老師: 完成時間: 2016年6月 Java程序設計課程設計 學生考勤系統(tǒng) 問題描述: 以班為單位,可以以日期為標識記錄每......

        Java課程設計報告

        課 程 設 計 課程名稱 Java語言課程設計 題目名稱 人事管理系統(tǒng)的設計與實現(xiàn) 學生學院 應用數(shù)學學院 專業(yè)班級 學 號 學生姓名 指導教師 劉科峰 2014 年 10 月 29 日......

        java課程設計報告[本站推薦]

        《Java語言程序設計》 題 目:指導老師:姓 名:專 業(yè):班 級:日 期:課程設計報告 目 錄 一、系統(tǒng)總體設計 ....................................... 1 (一)設計目標及完成功能..............

        Java課程設計報告

        《Java課程實習》報告 題目 學號 學生姓名 音樂播放器 201011621335 201011621329 200811621320 朱劍峰 薛文博 劉彬 聯(lián)系方式 *** *** *** 所在......

        java程序設計實習報告[大全]

        中原工學院信息商務學院 《Java程序設計》 實習報 告 中原工學院信息商務學院 經(jīng)濟管理系 2010年6月20號 1 中原工學院信息商務學院 目錄 一、實習題目 .....................

        JAVA課程設計報告_完整版

        《JAVA面向?qū)ο蟪绦蛟O計》 課 程 設 計 報 告 (2011-2012學年第2學期)系 別: 專業(yè)名稱: 廈門理工學院計算機科學與技術系 10級網(wǎng)絡工程1班 課程設計科目: 《JAVA面向?qū)ο蟪绦蛟O計......

        java課程設計報告—計算器

        1 --計算器 Java實習報告目錄一、課程設計目的 ................................................................................................................. 2......

        Java聊天室課程設計報告[最終定稿]

        UML課程設計 題 目網(wǎng)絡聊天程序開發(fā)設計與實現(xiàn) 學 號:201515614376 姓 名: 衛(wèi)國輝 指導教師: 完成時間:2017年 12月 0 目錄 1.摘要...............................................