當前位置:萬佳範文網 >

實習 >實習總結 >

java專案實訓報告免費(精選4篇)

java專案實訓報告免費(精選4篇)

java專案實訓報告免費 篇1

一、專案需求

java專案實訓報告免費(精選4篇)

本程式的主要功能:

(1)單擊“計算器”上的數字按鈕(0~9)可以設定參與計算的運算數。

(2)單擊“計算器”上的運算子按鈕(+、-、_、/、1/x、sqrt、%)可以選擇運算子號。

(3)單擊“計算器”上的“=”按鈕顯示計算結果。

(4)單擊“計算器”上的“復位”按鈕清空計算結果。

(5)單擊“計算器”上的“刪除”按鈕刪除輸入的最後一個數字。

二、專案設計

在設計計算器時,編寫2個Java源檔案:CalculatorWindow.java、NumberButton.java計算器除了上述Java原始檔所給出的類外,還需要Java系統提供的一些重要類,如JButton,JTextField等。

下面是2個Java原始檔的總體設計。

(1)CalculatorWindow.java(主類)

CalculatorWindow類負責建立計算器的主視窗,該類含有main方法,計算器從該類開始執行。CalculatorWindow類有4種類型的物件,分別是:LinkedList、NumberButton、JButton、JTextField。

(2)NumberButton.java

NumberButton類建立的物件是主類CalculatorWindow視窗的一個“數字”按鈕。NumberButton有一個int型別的成員temp,用於標明所建立的按鈕所含有的運算子號。NumberButton所建立的22個按鈕被新增到CalculatorWindow視窗中。

1、CalculatorWindow類(主類)

(1)資料和方法

CalculatorWindow類是javax.swing包中JFrame的一個字類,並實現了ActionListener介面。類中有關資料和方法的詳細說明。

1)成員變數

jbArray是NumberButton型陣列,每個單元是一個NumberButton類建立的“數字按鈕”物件,該陣列長度為10。numberButton陣列中的“數字按鈕”含有的數字依次為0~9。每個“數字按鈕”都註冊有ActionEvent事件監聽器。

2)方法

main(String args)方法是計算器程式執行的入口方法。

CalculatorWindow是構造方法,負責完成視窗的初始化。

(2)程式碼:

import java.awt._;

import java.awt.event._;

import javax.swing._;

public class jisuanqi extends JFrame implements ActionListener

{

private JTextField jtResult=new JTextField;

private JButton jb_clear=new JButton("復位");

private JButton jb_delete=new JButton("刪除");

private static JButton jbArray={{new JButton("7"),new JButton("4"),new JButton("1"),new JButton("0")},

{new JButton("8"),new JButton("5"),new JButton("2"),new JButton("+/-")},

{new JButton("9"),new JButton("6"),new JButton("3"),new JButton(".")},

{new JButton("/"),new JButton("_"),new JButton("-"),new JButton("+")},

{new JButton("sqrt"),new JButton("%"),new JButton("1/x"),new JButton("=")}

};

int first=0;

double qian;

String fuhao;

boolean clear=true,clickable=true;

public jisuanqi

{

setFrame;

addListener;

}

public void setFrame

{

this.setLayout(null);

this.setTitle("計算器");

jtResult.setBounds(120,100,310,30);

jtResult.setEditable(false);

jtResult.setHorizontalAlignment(JTextField.RIGHT);this.add(jtResult); jb_clear.setBounds(290,150,60,30); this.add(jb_clear); for(int i=0;i

{ if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText+"6"); clear=true; } if(temp==jbArray[0][0])//點選"7"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText+"7"); clear=true; }if(temp==jbArray[1][0])//點選"8"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText+"8"); clear=true; } if(temp==jbArray[2][0])//點選"9"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText+"9"); clear=true; } if(temp==jbArray[2][3])//點選"."按鈕 { clickable=true; for (int i = 0; i < jtResult.getText.length; i++) if ('.' == jtResult.getText.charAt(i)) { clickable=false; break; } //第一層判斷是否裡面含有小數點; if(clickable==true)//第二壇判斷 jtResult.setText(jtResult.getText+"."); } try { if(temp==jbArray[3][3])//點選"+"按鈕 { qian=Double.parseDouble(jtResult.getText); fuhao="+";clear=false; } if(temp==jbArray[3][2])//點選"-"按鈕 { qian=Double.parseDouble(jtResult.getText); fuhao="-"; clear=false; } if(temp==jbArray[3][1])//點選"_"按鈕 { qian=Double.parseDouble(jtResult.getText); fuhao="_"; clear=false; } if(temp==jbArray[3][0])//點選"/"按鈕 { qian=Double.parseDouble(jtResult.getText); fuhao="/"; clear=false; } if(temp==jbArray[4][3])//點選"="按鈕 { double ss=Double.parseDouble(jtResult.getText); jtResult.setText(""); if(fuhao=="+") jtResult.setText(qian+ss+""); if(fuhao=="-") jtResult.setText(qian-ss+""); if(fuhao=="_") jtResult.setText(qian_ss+""); if(fuhao=="/") jtResult.setText(qian/ss+""); clear=false;//要清空前一次的資料 } if(temp==jbArray[4][0])//點選"sqrt"按鈕 { String s = jtResult.getText; if(s.charAt(0) == '-') { jtResult.setText("負數不能開根號"); } else jtResult.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(jtResult.getText))));} if(temp==jbArray[4][2])//點選"1/x"按鈕 { if (jtResult.getText.charAt(0) == '0'&&jtResult.getText.length == 1) { jtResult.setText("除數不能為零"); } else { boolean isDec = true; int i, j, k; String s = Double.toString(1 / Double.parseDouble(jtResult.getText)); for (i = 0; i < s.length; i++) if (s.charAt(i) == '.') break; for (j = i + 1; j < s.length; j++) if (s.charAt(j) != '0') { isDec = false; break; } if (isDec == true) { String stemp = ""; for (k = 0; k < i; k++) stemp += s.charAt(k); jtResult.setText(stemp); } else jtResult.setText(s); } clear=false; } if(temp==jbArray[4][1])//點選"%"按鈕 { jtResult.setText("0"); clear=false; } if (temp == jbArray[1][3]) //點選"+/-"按鈕 { boolean isNumber = true; String s = jtResult.getText; for (int i = 0; i < s.length; i++)去掉

} { isNumber = false; break; } if (isNumber == true) { //如果當前字串首字母有'-'號,代表現在是個負數,再按下時,則將首符號 if(s.charAt(0) == '-') { jtResult.setText(""); for (int i = 1; i < s.length; i++) { char a = s.charAt(i); jtResult.setText(jtResult.getText + a); } } //如果當前字串第一個字元不是符號,則新增一個符號在首字母處 else jtResult.setText('-' + s); } } } catch(Exception eee) { System.out.println("運算時,首先輸入數字或字元"); jtResult.setText("運算出錯"); clear=false; } } public static void main(String args) { new jisuanqi; }

(3)效果圖

三、專案總結

本程式為JAVA中簡單的計算器,主要實現簡單的數學計算,刪除,復位等功能。運用JAVA中的類,陣列,成員變數等知識,有簡單的介面,按鈕等。

本程式還存在一定的缺陷,功能簡單,介面還需美化等。

四、心得體會

編寫一個程式,無論會實現什麼功能,都必須掌握這門語言的要領、基本知識及工具的運用,同時別的輔助工具也要有一定的瞭解。因此要更好的運用Java語言程式設計還需更深入的學習,這樣才能把一個程式的功能實現的淋漓盡致,介面才會更加美觀。

同時編寫這個程式讓我更好的理解了陣列、類的運用及事件的監聽和獲取等功能。

java專案實訓報告免費 篇2

一、專案需求

本程式的主要功能:

(1)單擊“計算器”上的數字按鈕(0~9)可以設定參與計算的運算數。

(2)單擊“計算器”上的運算子按鈕(+、-、*、/、1/x、sqrt、%)可以選擇運算子號。

(3)單擊“計算器”上的“=”按鈕顯示計算結果。

(4)單擊“計算器”上的“復位”按鈕清空計算結果。

(5)單擊“計算器”上的“刪除”按鈕刪除輸入的最後一個數字。

二、專案設計

在設計計算器時,編寫2個Java原始檔:CalculatorWindow.java、NumberButton.java計算器除了上述Java原始檔所給出的類外,還需要Java系統提供的一些重要類,如JButton,JTextField等。

下面是2個Java原始檔的總體設計。

(1)CalculatorWindow.java(主類)

CalculatorWindow類負責建立計算器的主視窗,該類含有main方法,計算器從該類開始執行。CalculatorWindow類有4種類型的物件,分別是:LinkedList、NumberButton、JButton、JTextField。

(2)NumberButton.java

NumberButton類建立的物件是主類CalculatorWindow視窗的一個“數字”按鈕。NumberButton有一個int型別的成員temp,用於標明所建立的按鈕所含有的運算子號。NumberButton所建立的22個按鈕被新增到CalculatorWindow視窗中。

1、CalculatorWindow類(主類)

(1)資料和方法

CalculatorWindow類是javax.swing包中JFrame的一個字類,並實現了ActionListener介面。類中有關資料和方法的詳細說明。

1)成員變數

jbArray是NumberButton型陣列,每個單元是一個NumberButton類建立的“數字按鈕”物件,該陣列長度為10。numberButton陣列中的“數字按鈕”含有的數字依次為0~9。每個“數字按鈕”都註冊有ActionEvent事件監聽器。

2)方法

main(String args)方法是計算器程式執行的入口方法。

CalculatorWindow是構造方法,負責完成視窗的初始化。

(2)程式碼:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class jisuanqi extends JFrame implements ActionListener

{

private JTextField jtResult=new JTextField;

private JButton jb_clear=new JButton("復位");

private JButton jb_delete=new JButton("刪除");

private static JButton jbArray={{new JButton("7"),new JButton("4"),new JButton("1"),new JButton("0")},

{new JButton("8"),new JButton("5"),new JButton("2"),new JButton("+/-")},

{new JButton("9"),new JButton("6"),new JButton("3"),new JButton(".")},

{new JButton("/"),new JButton("*"),new JButton("-"),new JButton("+")},

{new JButton("sqrt"),new JButton("%"),new JButton("1/x"),new JButton("=")}

};

int first=0;

double qian;

String fuhao;

boolean clear=true,clickable=true;

public jisuanqi

{

setFrame;

addListener;

}

public void setFrame

{

this.setLayout(null);

this.setTitle("計算器");

jtResult.setBounds(120,100,310,30);

jtResult.setEditable(false);

jtResult.setHorizontalAlignment(JTextField.RIGHT);this.add(jtResult); jb_clear.setBounds(290,150,60,30); this.add(jb_clear); for(int i=0;i

{ if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText+"6"); clear=true; } if(temp==jbArray[0][0])//點選"7"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText+"7"); clear=true; }if(temp==jbArray[1][0])//點選"8"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText+"8"); clear=true; } if(temp==jbArray[2][0])//點選"9"按鈕 { if(clear==false) jtResult.setText(""); jtResult.setText(jtResult.getText+"9"); clear=true; } if(temp==jbArray[2][3])//點選"."按鈕 { clickable=true; for (int i = 0; i < jtResult.getText.length; i++) if ('.' == jtResult.getText.charAt(i)) { clickable=false; break; } //第一層判斷是否裡面含有小數點; if(clickable==true)//第二壇判斷 jtResult.setText(jtResult.getText+"."); } try { if(temp==jbArray[3][3])//點選"+"按鈕 { qian=Double.parseDouble(jtResult.getText); fuhao="+";clear=false; } if(temp==jbArray[3][2])//點選"-"按鈕 { qian=Double.parseDouble(jtResult.getText); fuhao="-"; clear=false; } if(temp==jbArray[3][1])//點選"*"按鈕 { qian=Double.parseDouble(jtResult.getText); fuhao="*"; clear=false; } if(temp==jbArray[3][0])//點選"/"按鈕 { qian=Double.parseDouble(jtResult.getText); fuhao="/"; clear=false; } if(temp==jbArray[4][3])//點選"="按鈕 { double ss=Double.parseDouble(jtResult.getText); jtResult.setText(""); if(fuhao=="+") jtResult.setText(qian+ss+""); if(fuhao=="-") jtResult.setText(qian-ss+""); if(fuhao=="*") jtResult.setText(qian*ss+""); if(fuhao=="/") jtResult.setText(qian/ss+""); clear=false;//要清空前一次的資料 } if(temp==jbArray[4][0])//點選"sqrt"按鈕 { String s = jtResult.getText; if(s.charAt(0) == '-') { jtResult.setText("負數不能開根號"); } else jtResult.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(jtResult.getText))));} if(temp==jbArray[4][2])//點選"1/x"按鈕 { if (jtResult.getText.charAt(0) == '0'&&jtResult.getText.length == 1) { jtResult.setText("除數不能為零"); } else { boolean isDec = true; int i, j, k; String s = Double.toString(1 / Double.parseDouble(jtResult.getText)); for (i = 0; i < s.length; i++) if (s.charAt(i) == '.') break; for (j = i + 1; j < s.length; j++) if (s.charAt(j) != '0') { isDec = false; break; } if (isDec == true) { String stemp = ""; for (k = 0; k < i; k++) stemp += s.charAt(k); jtResult.setText(stemp); } else jtResult.setText(s); } clear=false; } if(temp==jbArray[4][1])//點選"%"按鈕 { jtResult.setText("0"); clear=false; } if (temp == jbArray[1][3]) //點選"+/-"按鈕 { boolean isNumber = true; String s = jtResult.getText; for (int i = 0; i < s.length; i++)去掉

} { isNumber = false; break; } if (isNumber == true) { //如果當前字串首字母有'-'號,代表現在是個負數,再按下時,則將首符號 if(s.charAt(0) == '-') { jtResult.setText(""); for (int i = 1; i < s.length; i++) { char a = s.charAt(i); jtResult.setText(jtResult.getText + a); } } //如果當前字串第一個字元不是符號,則新增一個符號在首字母處 else jtResult.setText('-' + s); } } } catch(Exception eee) { System.out.println("運算時,首先輸入數字或字元"); jtResult.setText("運算出錯"); clear=false; } } public static void main(String args) { new jisuanqi; }

(3)效果圖

三、專案總結

本程式為JAVA中簡單的計算器,主要實現簡單的數學計算,刪除,復位等功能。運用JAVA中的類,陣列,成員變數等知識,有簡單的介面,按鈕等。

本程式還存在一定的缺陷,功能簡單,介面還需美化等。

四、心得體會

編寫一個程式,無論會實現什麼功能,都必須掌握這門語言的要領、基本知識及工具的運用,同時別的輔助工具也要有一定的瞭解。因此要更好的運用Java語言程式設計還需更深入的學習,這樣才能把一個程式的功能實現的淋漓盡致,介面才會更加美觀。

同時編寫這個程式讓我更好的理解了陣列、類的運用及事件的監聽和獲取等功能。

java專案實訓報告免費 篇3

作為就業培訓,專案的好壞對培訓質量的影響非常大,常常是決定性的作用,簡單總結為以下幾點:

1、專案一定要全新的專案,不能是以前做過的

2、專案一定要企業真實專案,不能是精簡以後的,不能脫離實際應用系統

3、在開發時要和企業的開發保持一致

4、在做專案的時候不應該有參考程式碼

長話短說就是以上幾點,如果你想要更多的瞭解,可以繼續往後看。

一:專案的地位

因為參加就業培訓的學員很多都是有一定的計算機基礎,大部分都具備一定的程式設計基礎,尤其是在校或者是剛畢業的學生,多少都有一些基礎。

他們欠缺的主要是兩點:

(1)不能全面系統的、深入的掌握某種技術,也就是會的挺多,但都是皮毛,不能滿足就業的需要。

(2)沒有任何實際的開發經驗,完全是想象中學習,考試還行,一到實際開發和應用就歇菜了。

解決的方法就是通過專案練習,對所學知識進行深化,然後通過專案來獲取實際開發的經驗,從而彌補這些不足,儘快達到企業的實際要求。

二:如何選擇專案

專案既然那麼重要,肯定不能隨隨便便找專案,那麼究竟如何來選擇呢?根據java的研究和實踐經驗總結,選擇專案的時候要注意以下方面:

1:專案不能太大,也不能太小

這個要根據專案練習的階段,練習的時間,練習的目標來判斷。不能太大,太大了做不完,也不能太小,太小了沒有意義,達不到練習的目的。

2:專案不能脫離實際應用系統

專案應該是實際的系統,或者是實際系統的簡化和抽象,不能夠是沒有實戰意義的教學性或者是純練習性的專案。因為培訓的時間有限,必須讓學員儘快地融入到實際專案的開發當中去。任何人接受和掌握一個東西都需要時間去適應,需要重複幾次才能夠真正掌握,所以每個專案都必須跟實際應用掛鉤。

3:專案應能覆蓋所學的主要知識點

學以致用,學完的知識點需要到應用中使用,才能夠真正理解和掌握,再說了,軟體開發是一個動手能力要求很高的行業,什麼算會了,那就是能夠做出來,寫出程式碼來,把問題解決了,你就算會了。

4:最後綜合專案一定要是實際應用系統

學員經過這個專案的練習,就要走上實際的工作崗位了,如果這個系統還達不到實際應用系統的標準,學員練習過後也還是達不到企業實際的需要,那麼這個培訓應該說質量就不高了。理想的狀況是這個專案就是實際專案,到時候學員就業到另外一個公司,不過是換個地方幹活而已,完全沒有技能上的問題。

三:java怎麼選擇專案

這個不是靠想象,而是根據實際的情況一步一步分析出來的(呵呵要賣弄一下:這也算是邏輯思維),當然這裡只是討論方法,不涉及具體的專案案例。

我們可以採用倒推的方式來分析:

(1)最終的專案一定是真實的專案,也就是要把學員訓練到能夠獨立開發實際應用,通常我們還不能選最簡單的專案,因為學員的吸收還要有一個折扣,所以最終的專案應該選實際專案中中等難度的專案

(2)最終專案定下來過後,開始分解這個專案,看看為了達到完成這個專案需要哪些技術和知識點,以及每部分知識點的深度,然後定出每個分階段的任務

(3)然後開始選擇分階段的專案,分階段的專案應該比剛才分析出來的分階段任務稍稍複雜點,這樣才能達到訓練的目標。定下分階段專案後,同樣去分解,定出為了完成他所需要的各部分知識點和深度。

(4)然後是選擇上課期間的演示專案,演示的專案是為了做分階段專案服務的,可以認為是分階段專案的分階段專案

(5)最終把要求掌握的知識點和要求掌握的深度,分散到日常教學和練習中。

好了,把上面的分析用正向描述就是:

日常教學和練習中學習和掌握的知識 ==〉演示專案 ==〉分階段專案 ==〉綜合專案 ==〉勝任企業實際開發需要。

附註:有了好的專案還要有好的訓練方法(這個另外立文討論),最最基本和重要的一條就是:絕對要指導學生親自動手做,而不是看和聽,所以儘量不要選擇有現成程式碼的專案,演示用的專案也最好不配發程式碼,讓學生能夠跟著做出來才是真的掌握了。

上面闡述了java對專案的態度和基本選擇方法,這裡再把其中幾個重要的、與眾不同的特點闡述如下:

1:真專案

專案一定要真實,要是企業實際應用的,不能是教學性的專案,否則會脫離實達不到專案實訓的效果。還有一個一定要是最新的專案,企業的要求也是在不斷變化的,應用技術的方向和層次也在不斷變化,這些都體現在最新專案的要求上,舊專案所要求的技術和層次很可能已經過時了,根本達不到訓練的目的。

java的做法是:沒有固定專案,每個班做專案之前會從企業獲取最新的專案需求,然後經過挑選和精心設計,以保證既能訓練技術,又能得到實際的開發經驗。這樣實現了跟企業的同步,企業做什麼,我們就學什麼,然後也跟著做什麼。

2:真流程

開發的流程也要跟企業的實際開發保持一致。從專案立項開始,到需求分析、概要設計、詳細設計、編碼、測試的各個環節,都要完全按照真實的開發流程來做。

java的主力老師都是實戰出身,在java開發方面都至少有七年以上的開發經驗,同時具備多年的專案管理經驗,所以能夠完全按照企業開發的流程來訓練學生。

3:真環境

開發的環境也要跟企業一樣,包括常用的開發工具、開發平臺、應用伺服器、常用外掛、測試工具、專案管理工具、專案管理文件等等。

java的做法是:構建跟企業完全一樣的環境,然後跟企業開發一樣,分團隊開發。老師就相當於專案經理,一個班分成多個小組,每個組有自己的team leader,大家分工合作,共同完成專案。

4:真開發

這是java最與眾不同的一點,java深知:軟體是做出來的,而不是聽出來或者看出來的,企業需要能實際開發的人員,而不是隻聽過、看過但不能做的人。所以java非常強調:專案一定要讓學生動手寫出來。

java的做法是:老師做為專案經理,帶領著大家一起去做需求分析、概要設計、資料結構設計、介面設計、重要業務流程的分析設計等,然後由學生們分團隊進行開發,實現整個專案。這裡有幾個與眾不同:

(1):現場帶領學生一起做分析和設計,而不是預先做好了來講講。因為需要學生學習的是分析設計的過程和方法,而不是已經做好的結果。

(2):java選用的專案基本都是企業最新的專案,很多都是java的學生和企業在同期開發,所以是不配發原始碼的。這樣也斷絕了學生的依賴思想,認認真真去開發。可能有同學會問:為什麼不選擇有原始碼的專案呢,那樣還可以參考學習啊!

這是一個典型的誤區:覺得通過看人家的程式碼能夠加快自己的學習。這個方法對有經驗的人來講是對的,但是對於還在學習期間,沒有經驗的學員來講,就是一個認識的誤區了。因為你也許能看懂程式碼的語法,但根本看不懂程式碼背後的含義,看不懂程式碼的設計,看不懂為什麼要這麼實現,看不懂程式碼所體現的思想,其實,看了跟沒看沒有多大區別。

事實上,java界最不缺的就是程式碼了,那麼多開源軟體,小到一個工具,到企業級erp都有開源的,而且很多都是大師級的作品,說實話比你參考的那些程式碼質量高多了,但是又有多少人能真正看明白呢,原因就在於達不到那個水平,看不懂程式碼背後所體現的設計和思想以及為什麼要這麼做,效果也就不好了。

當然不排除有這樣的高人是能夠完全能理解和掌握這些大師級作品的,但估計不會是剛開始學習java開發的學生,所以java根據多年的培訓經驗,友情提示:在初學階段,看一千遍,聽一千遍,都不如自己動手寫一遍所達到的學習效果。自己能寫出來的功能才是你真正掌握的功能,而不是你看得程式碼或者是聽老師講的,就算講過看過,但是自己做不出來,那都不算會。

(3):java在課堂上除了帶領學生去分析設計外,還會分析一些重點、難點功能的實現機制和原理,然後指導學生去實現。

5:真技術

java在每個專案中,特別會抽取有難度的部分讓學生們在老師指導下實現,專門啃硬骨頭,那才能真正鍛鍊學生的開發能力。

比如:在做oa類的專案時,會重點去做工作流、公文收發、線上office控制等;在做crm類專案時:會重點去做銷售自動化和市場塊的業務;在做人力資源類專案的時候會重點去做人力跟蹤和人力評測模型等......

java在每個專案中,都會使用目前企業最新最流行的技術,按照最新的難度去要求,從而讓學員能更符合企業的需要。

6:真經驗

java的專案都是企業最新的真實專案,經過開發訓練,學員能夠積累足夠的真實的開發經驗,以勝任企業的工作需要。在進行專案分析時,還會全面講解專案所要求的業務,讓學員從業務和技術上都能充分積累。

7:真實力

作為就業培訓,專案的好壞對培訓質量的影響非常大,常常是決定性的作用。這篇文章是關於在學習java軟體開發時練習專案的總結,簡單總結為以下幾點:事實上,不採用有原始碼的教學性專案對java的要求非常高。 試想一下,如果專案分發下去,老師帶著分析後,學生都不會做會出現什麼樣的後果?這對java的教學質量提出了極高的要求,如果教學質量達不到讓學員獨立開發的水平,對依靠質量取勝和口碑發展的java將是毀滅性的。

另外一個,由於是全真的專案,在開發的過程中,肯定會有很多的問題出現,這些都要老師去解決,由於不像教學專案那樣預先做好,又需要老師能很快地解決各個問題,這對老師的真實開發水平有極高的要求,這可是需要真功夫的。

總結

總之,java通過真實的專案,真實的開發環境和開發流程,指導學員去真正開發,讓學員得到真正的鍛鍊,收穫真正的開發能力。

有了真正的開發能力==>能夠勝任企業的實際需要==>高薪好工作。

java專案實訓報告免費 篇4

一、 課程設計名稱及主要內容:

1、 課程設計名稱:

時鐘動畫

2、 課程設計的主要內容:

以下題目任選一個:

(1)圖形介面類,如科學計算器、繪圖板、日曆、遊戲程式等。

(2)動畫類,編制功能較複雜、效果較好的Applet動畫程式。

(3)資料處理類,如學生學籍、課程成績、圖書編目、倉庫貨物等資料錄入查詢程式。

(4)其他型別,自選題目,須經指導老師同意。

我所選的題目是動畫類的Applet動畫程式,主要任務是用Java程式設計一個時鐘動畫。

二、 程式的設計思想和流程圖:

1、 設計思想:

現在的各種時鐘花樣百出,千奇百怪,功能亦是越來越先進了。我很喜歡這些各式各樣的時鐘,所以希望自己也能設計出一個來。於是,我希望自己能夠用自己所學的Java知識設計出一個自己的時鐘動畫,即使是最簡單的,但我相信這是暫時的。只要我能夠努力學好Java知識,將來一定能夠設計出更好更完美的時鐘動畫。

2、 流程圖:

三、 程式介紹:

1、設計方法及步驟 :

? 題目分析:

根據《課程設計任務書》要求,分析題目,構造出程式的基本思路(演算法設計)。畫出程式

設計結構框圖。

? 構造資料結構:

根據程式結構框圖和題目分析結果(採用演算法),構造程式所用各項資料,各種窗體及他們

之間的聯絡。

? 構造程式框架:

在窗體確定之後,根據演算法設計出所用各個窗體之間的呼叫關係。

? 程式設計:

①畫出程式功能框圖和結構框圖;

②根據框圖設計程式;

③編譯程式除錯程式,使程式可以使用;

④完備程式功能。

? 程式打包:

所設計程式彙總,將程式分類歸入相應子目錄,完成程式所有設計要求。

2、完成情況:

經過一系列的Java程式程式碼的設計,雖然過程中遇到了許多的問題,但是最終解決了所有的問題,準確的設計出了時鐘動畫,執行情況正常。

3、類的關係:

“public class AnimatorDemo”是公共類,且是程式中的唯一的一個類。

4、構造方法、成員變數和成員方法的功能說明:

“Thread timer”用於顯示時鐘的執行緒;

“SimpleDateFormat formatter”用於格式化時間顯示; “String lastdate”用於儲存當前時間的字串;

“Font clockFaceFont”用於設定顯示時鐘裡面的數字的字型; “Date currentDate”用於顯示當前時間;

“Color handColor”用於顯示時針、分針和錶盤的顏色; “Color numberColor” 用於顯示秒針和數字的顏色; “public void init”用於設計時鐘格式並捕捉異常;

“public void plotpoints(int x0, int y0, int x, int y, Graphics g)” 用於計算四分之一的圓弧;

“public void circle(int x0, int y0, int r, Graphics g”) 用Bresenham演算法來畫圓,其中(x0,y0)是圓的中心,r為圓半徑; “public void paint(Graphics g)”用於執行時鐘程式; “public void start” applet的啟動方法;

“public void stop” applet的停止方法;

“public void run” 執行緒的run方法。

四、 遇到的問題和解決方法:

1、 問題:

? 寫程式的時候,由於對有些Java知識不懂,所以有些想要表達的意思無法用Java程式碼準確的表達出來,老是出錯或者無法寫下去;

? 一開始,自己準備的參考資料不足,無法在遇到問題時有效的利用參考資料解決,遇到不懂的問題和不會用程式語言表達的問題時,只能留在那裡,無法解決,結果問題最後越積越多,導致我無法再把程式寫下去;

? 一開始,對於老師佈置的作業題目,我不太懂,無法進行有效而且清晰的分析,自然也無法繼續下去寫程式了,耽誤了較多的時間;

? 對於要寫流程圖,一開始我並不懂是什麼意思,也不知道怎麼去寫。

2、 解決方法:

? 對於那些不懂的Java知識和不會寫的程式,我通過向同學尋求幫助和利用參考資料書,最終都解決了;

? 對於自己參考資料不足的缺點,我在下課後,去了圖書館借閱有關方面的Java參考資料書,並且向同學借閱了他們所擁有的資料書,然後又利用自己的電腦上網查找了一些有關方面的參考知識,終於在最後解決了資料不足的缺點;

? 對於不懂的題目,我也通過向多個同學進行詢問,最終弄懂了老師佈置的題目所要求的內容;

? 至於流程圖,在我向同學詢問過,並且上網進行了一番查詢和諮詢後,也總算弄懂了流程圖的含義,並努力寫了出來。

五、 認識、感想、建議:

六、 參考資料:

《精通Java——JDK、資料庫系統開發、Web開發》

《Java進階教程》

《零起點Java應用程式設計》

《Java程式設計應用基礎教程》

七、 附加源程式:

import java.util._;

import java.awt._;

import java.applet._;

import java.text._;

public class AnimatorDemo extends Applet implements Runnable

{

Thread timer; // 用於顯示時鐘的執行緒

int lastxs, lastys, lastxm,

lastym, lastxh, lastyh;

SimpleDateFormat formatter; //格式化時間顯示

String lastdate; // 儲存當前時間的字串

Font clockFaceFont; //設定顯示時鐘裡面的數字的字型

Date currentDate; // 顯示當前時間

Color handColor; // 用於顯示時針、分針和錶盤的顏色

Color numberColor; // 用於顯示秒針和數字的顏色

public void init

{

int x,y;

lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;

formatter = new SimpleDateFormat ("yyyy EEE MMM dd hh:mm:ss ");

currentDate = new Date;

lastdate = formatter.format(currentDate);

clockFaceFont = new Font("Serif", Font.PLAIN, 14);

handColor = Color.blue;

numberColor = Color.darkGray;

try {

setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),16)));}

catch (Exception E) { }

try {

handColor = new Color(Integer.parseInt(getParameter("fgcolor1"),16));}

catch (Exception E) { }

try {

numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"),16));} catch (Exception E) { } resize(300,300); // 設定時鐘視窗大小}

// 計算四分之一的圓弧

public void plotpoints(int x0, int y0, int x, int y, Graphics g)

{

g.drawLine(x0+x,y0+y,x0+x,y0+y);

g.drawLine(x0+y,y0+x,x0+y,y0+x);

g.drawLine(x0+y,y0-x,x0+y,y0-x);

g.drawLine(x0+x,y0-y,x0+x,y0-y);

g.drawLine(x0-x,y0-y,x0-x,y0-y);

g.drawLine(x0-y,y0-x,x0-y,y0-x);

g.drawLine(x0-y,y0+x,x0-y,y0+x);

g.drawLine(x0-x,y0+y,x0-x,y0+y);}

// 用Bresenham演算法來畫圓,其中(x0,y0)是圓的中心,r為圓半徑

public void circle(int x0, int y0, int r, Graphics g)

{

int x,y;

float d;

x=0;

y=r;

d=5/4-r;

plotpoints(x0,y0,x,y,g);

while(y>x){

if (d<0) {

d=d+2_x+3;

x++;}

else {

d=d+2_(x-y)+5;

x++;

y--;}

plotpoints(x0,y0,x,y,g);}}

public void paint(Graphics g)

{int xh, yh, xm, ym, xs, ys, s = 0, m = 10, h = 10, xcenter, ycenter; String today;

currentDate = new Date;

SimpleDateFormat formatter = new SimpleDateFormat("s",Locale.getDefault); try {

s = Integer.parseInt(formatter.format(currentDate));

} catch (NumberFormatException n) {

s = 0;}

formatter.applyPattern("m");

try {

m = Integer.parseInt(formatter.format(currentDate));

} catch (NumberFormatException n) {

m = 10;}

formatter.applyPattern("h");

try {

h = Integer.parseInt(formatter.format(currentDate));

} catch (NumberFormatException n) {

h = 10;}

formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy");

today = formatter.format(currentDate);

//設定時鐘的錶盤的中心點為(80,55)

xcenter=80;

ycenter=55;

// a= s_ pi/2 - pi/2 (to switch 0,0 from 3:00 to 12:00)

// x = r(cos a) + xcenter, y = r(sin a) + ycenter

xs = (int)(Math.cos(s _ 3.14f/30 - 3.14f/2) _ 45 + xcenter);

ys = (int)(Math.sin(s _ 3.14f/30 - 3.14f/2) _ 45 + ycenter);

xm = (int)(Math.cos(m _ 3.14f/30 - 3.14f/2) _ 40 + xcenter);

ym = (int)(Math.sin(m _ 3.14f/30 - 3.14f/2) _ 40 + ycenter);

xh = (int)(Math.cos((h_30 + m/2) _ 3.14f/180 - 3.14f/2) _ 30 + xcenter); yh = (int)(Math.sin((h_30 + m/2) _ 3.14f/180 - 3.14f/2) _ 30 + ycenter); //畫時鐘最外面的圓盤其中心在(xcenter,ycenter)半徑為50

g.setFont(clockFaceFont);

g.setColor(handColor);

circle(xcenter,ycenter,50,g);

//畫時鐘錶盤裡的數字

g.setColor(numberColor);

g.drawString("9",xcenter-45,ycenter+3);

g.drawString("3",xcenter+40,ycenter+3);

g.drawString("12",xcenter-5,ycenter-37);

g.drawString("6",xcenter-3,ycenter+45);

// 如果必要的話抹去然後重畫

g.setColor(getBackground);

if (xs != lastxs || ys != lastys) {

g.drawLine(xcenter, ycenter, lastxs, lastys);

g.drawString(lastdate, 5, 125);}

if (xm != lastxm || ym != lastym) {

g.drawLine(xcenter, ycenter-1, lastxm, lastym);

g.drawLine(xcenter-1, ycenter, lastxm, lastym); }

if (xh != lastxh || yh != lastyh) {

g.drawLine(xcenter, ycenter-1, lastxh, lastyh);

g.drawLine(xcenter-1, ycenter, lastxh, lastyh); }

g.setColor(numberColor);

g.drawString("", 5, 125);

g.drawString(today, 5, 125);

g.drawLine(xcenter, ycenter, xs, ys);

g.setColor(handColor);

g.drawLine(xcenter, ycenter-1, xm, ym);

g.drawLine(xcenter-1, ycenter, xm, ym);

g.drawLine(xcenter, ycenter-1, xh, yh);

g.drawLine(xcenter-1, ycenter, xh, yh);

lastxs=xs; lastys=ys;

lastxm=xm; lastym=ym;

lastxh=xh; lastyh=yh;

lastdate = today;

currentDate=null;

}//applet的啟動方法

public void start

{timer = new Thread(this);

timer.start;

}// applet的停止方法

public void stop

{timer = null;

}//執行緒的run方法

public void run

{Thread me = Thread.currentThread;

while (timer == me) {

try {Thread.currentThread.sleep(1000);}

catch (InterruptedException e)

repaint;}

}//注意:這裡重寫了update方法,只是呼叫了paint方法來消除閃爍現象 public void update(Graphics g)

{paint(g);}

}

  • 文章版權屬於文章作者所有,轉載請註明 https://wjfww.com/zh-tw/shixi/zongjie/qw90rg.html
專題