java項目實訓報告免費(精選4篇)

來源:瑞文範文網 5.65K

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);}

}

熱門標籤