我們在一些事情上受到啟發(fā)后,可以通過寫心得體會的方式將其記錄下來,它可以幫助我們了解自己的這段時間的學(xué)習(xí)、工作生活狀態(tài)。我們想要好好寫一篇心得體會,可是卻無從下手嗎?那么下面我就給大家講一講心得體會怎么寫才比較好,我們一起來看一看吧。
java項目實訓(xùn)日志 java項目實訓(xùn)心得體會篇一
1、 課程設(shè)計名稱:
時鐘動畫
2、 課程設(shè)計的主要內(nèi)容:
以下題目任選一個:
(1)圖形界面類,如科學(xué)計算器、繪圖板、日歷、游戲程序等。
(2)動畫類,編制功能較復(fù)雜、效果較好的applet動畫程序。
(3)數(shù)據(jù)處理類,如學(xué)生學(xué)籍、課程成績、圖書編目、倉庫貨物等數(shù)據(jù)錄入查詢程序。
(4)其他類型,自選題目,須經(jīng)指導(dǎo)老師同意。
我所選的題目是動畫類的applet動畫程序,主要任務(wù)是用java程序設(shè)計一個時鐘動畫。
二、 程序的設(shè)計思想和流程圖:
1、 設(shè)計思想:
現(xiàn)在的各種時鐘花樣百出,千奇百怪,功能亦是越來越先進(jìn)了。我很喜歡這些各式各樣的時鐘,所以希望自己也能設(shè)計出一個來。于是,我希望自己能夠用自己所學(xué)的java知識設(shè)計出一個自己的時鐘動畫,即使是最簡單的,但我相信這是暫時的。只要我能夠努力學(xué)好java知識,將來一定能夠設(shè)計出更好更完美的時鐘動畫。
2、 流程圖:
三、 程序介紹:
1、設(shè)計方法及步驟 :
? 題目分析:
根據(jù)《課程設(shè)計任務(wù)書》要求,分析題目,構(gòu)造出程序的基本思路(算法設(shè)計)。畫出程序
設(shè)計結(jié)構(gòu)框圖。
? 構(gòu)造數(shù)據(jù)結(jié)構(gòu):
根據(jù)程序結(jié)構(gòu)框圖和題目分析結(jié)果(采用算法),構(gòu)造程序所用各項數(shù)據(jù),各種窗體及他們
之間的聯(lián)系。
? 構(gòu)造程序框架:
在窗體確定之后,根據(jù)算法設(shè)計出所用各個窗體之間的調(diào)用關(guān)系。
? 程序設(shè)計:
①畫出程序功能框圖和結(jié)構(gòu)框圖;
②根據(jù)框圖設(shè)計程序;
③編譯程序調(diào)試程序,使程序可以使用;
④完備程序功能。
? 程序打包:
所設(shè)計程序匯總,將程序分類歸入相應(yīng)子目錄,完成程序所有設(shè)計要求。
2、完成情況:
經(jīng)過一系列的java程序代碼的設(shè)計,雖然過程中遇到了許多的問題,但是最終解決了所有的問題,準(zhǔn)確的設(shè)計出了時鐘動畫,運(yùn)行情況正常。
3、類的關(guān)系:
“public class animatordemo”是公共類,且是程序中的唯一的一個類。
4、構(gòu)造方法、成員變量和成員方法的功能說明:
“thread timer”用于顯示時鐘的線程;
“simpledateformat formatter”用于格式化時間顯示; “string lastdate”用于保存當(dāng)前時間的字符串;
“font clockfacefont”用于設(shè)置顯示時鐘里面的數(shù)字的字體; “date currentdate”用于顯示當(dāng)前時間;
“color handcolor”用于顯示時針、分針和表盤的顏色; “color numbercolor” 用于顯示秒針和數(shù)字的顏色; “public void init”用于設(shè)計時鐘格式并捕捉異常;
“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)”用于運(yùn)行時鐘程序; “public void start” applet的啟動方法;
“public void stop” applet的停止方法;
“public void run” 線程的run方法。
四、 遇到的問題和解決方法:
1、 問題:
? 寫程序的時候,由于對有些java知識不懂,所以有些想要表達(dá)的意思無法用java代碼準(zhǔn)確的表達(dá)出來,老是出錯或者無法寫下去;
? 一開始,自己準(zhǔn)備的參考資料不足,無法在遇到問題時有效的利用參考資料解決,遇到不懂的問題和不會用程序語言表達(dá)的問題時,只能留在那里,無法解決,結(jié)果問題最后越積越多,導(dǎo)致我無法再把程序?qū)懴氯?
? 一開始,對于老師布置的作業(yè)題目,我不太懂,無法進(jìn)行有效而且清晰的分析,自然也無法繼續(xù)下去寫程序了,耽誤了較多的時間;
? 對于要寫流程圖,一開始我并不懂是什么意思,也不知道怎么去寫。
2、 解決方法:
? 對于那些不懂的java知識和不會寫的程序,我通過向同學(xué)尋求幫助和利用參考資料書,最終都解決了;
? 對于自己參考資料不足的缺點(diǎn),我在下課后,去了圖書館借閱有關(guān)方面的java參考資料書,并且向同學(xué)借閱了他們所擁有的資料書,然后又利用自己的電腦上網(wǎng)查找了一些有關(guān)方面的參考知識,終于在最后解決了資料不足的缺點(diǎn);
? 對于不懂的題目,我也通過向多個同學(xué)進(jìn)行詢問,最終弄懂了老師布置的題目所要求的內(nèi)容;
? 至于流程圖,在我向同學(xué)詢問過,并且上網(wǎng)進(jìn)行了一番查找和咨詢后,也總算弄懂了流程圖的含義,并努力寫了出來。
五、 認(rèn)識、感想、建議:
六、 參考資料:
《精通java——jdk、數(shù)據(jù)庫系統(tǒng)開發(fā)、web開發(fā)》
《java進(jìn)階教程》
《零起點(diǎn)java應(yīng)用編程》
《java程序設(shè)計應(yīng)用基礎(chǔ)教程》
七、 附加源程序:
import ._;
import ._;
import ._;
import ._;
public class animatordemo extends applet implements runnable
{
thread timer; // 用于顯示時鐘的線程
int lastxs, lastys, lastxm,
lastym, lastxh, lastyh;
simpledateformat formatter; //格式化時間顯示
string lastdate; // 保存當(dāng)前時間的字符串
font clockfacefont; //設(shè)置顯示時鐘里面的數(shù)字的字體
date currentdate; // 顯示當(dāng)前時間
color handcolor; // 用于顯示時針、分針和表盤的顏色
color numbercolor; // 用于顯示秒針和數(shù)字的顏色
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 = (currentdate);
clockfacefont = new font("serif", , 14);
handcolor = ;
numbercolor = ay;
try {
setbackground(new color(nt(getparameter("bgcolor"),16)));}
catch (exception e) { }
try {
handcolor = new color(nt(getparameter("fgcolor1"),16));}
catch (exception e) { }
try {
numbercolor = new color(nt(getparameter("fgcolor2"),16));} catch (exception e) { } resize(300,300); // 設(shè)置時鐘窗口大小}
// 計算四分之一的圓弧
public void plotpoints(int x0, int y0, int x, int y, graphics g)
{
ne(x0+x,y0+y,x0+x,y0+y);
ne(x0+y,y0+x,x0+y,y0+x);
ne(x0+y,y0-x,x0+y,y0-x);
ne(x0+x,y0-y,x0+x,y0-y);
ne(x0-x,y0-y,x0-x,y0-y);
ne(x0-y,y0-x,x0-y,y0-x);
ne(x0-y,y0+x,x0-y,y0+x);
ne(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",ault); try {
s = nt((currentdate));
} catch (numberformatexception n) {
s = 0;}
attern("m");
try {
m = nt((currentdate));
} catch (numberformatexception n) {
m = 10;}
attern("h");
try {
h = nt((currentdate));
} catch (numberformatexception n) {
h = 10;}
attern("eee mmm dd hh:mm:ss yyyy");
today = (currentdate);
//設(shè)置時鐘的表盤的中心點(diǎn)為(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)((s _ 3.14f/30 - 3.14f/2) _ 45 + xcenter);
ys = (int)((s _ 3.14f/30 - 3.14f/2) _ 45 + ycenter);
xm = (int)((m _ 3.14f/30 - 3.14f/2) _ 40 + xcenter);
ym = (int)((m _ 3.14f/30 - 3.14f/2) _ 40 + ycenter);
xh = (int)(((h_30 + m/2) _ 3.14f/180 - 3.14f/2) _ 30 + xcenter); yh = (int)(((h_30 + m/2) _ 3.14f/180 - 3.14f/2) _ 30 + ycenter); //畫時鐘最外面的圓盤其中心在(xcenter,ycenter)半徑為50
t(clockfacefont);
or(handcolor);
circle(xcenter,ycenter,50,g);
//畫時鐘表盤里的數(shù)字
or(numbercolor);
ring("9",xcenter-45,ycenter+3);
ring("3",xcenter+40,ycenter+3);
ring("12",xcenter-5,ycenter-37);
ring("6",xcenter-3,ycenter+45);
// 如果必要的話抹去然后重畫
or(getbackground);
if (xs != lastxs || ys != lastys) {
ne(xcenter, ycenter, lastxs, lastys);
ring(lastdate, 5, 125);}
if (xm != lastxm || ym != lastym) {
ne(xcenter, ycenter-1, lastxm, lastym);
ne(xcenter-1, ycenter, lastxm, lastym); }
if (xh != lastxh || yh != lastyh) {
ne(xcenter, ycenter-1, lastxh, lastyh);
ne(xcenter-1, ycenter, lastxh, lastyh); }
or(numbercolor);
ring("", 5, 125);
ring(today, 5, 125);
ne(xcenter, ycenter, xs, ys);
or(handcolor);
ne(xcenter, ycenter-1, xm, ym);
ne(xcenter-1, ycenter, xm, ym);
ne(xcenter, ycenter-1, xh, yh);
ne(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);
;
}// applet的停止方法
public void stop
{timer = null;
}//線程的run方法
public void run
{thread me = tthread;
while (timer == me) {
try {tthread.sleep(1000);}
catch (interruptedexception e)
repaint;}
}//注意:這里重寫了update方法,只是調(diào)用了paint方法來消除閃爍現(xiàn)象 public void update(graphics g)
{paint(g);}
}
java項目實訓(xùn)日志 java項目實訓(xùn)心得體會篇二
作為就業(yè)培訓(xùn),項目的好壞對培訓(xùn)質(zhì)量的影響非常大,常常是決定性的作用,簡單總結(jié)為以下幾點(diǎn):
1、項目一定要全新的項目,不能是以前做過的
2、項目一定要企業(yè)真實項目,不能是精簡以后的,不能脫離實際應(yīng)用系統(tǒng)
3、在開發(fā)時要和企業(yè)的開發(fā)保持一致
4、在做項目的時候不應(yīng)該有參考代碼
長話短說就是以上幾點(diǎn),如果你想要更多的了解,可以繼續(xù)往后看。
一:項目的地位
因為參加就業(yè)培訓(xùn)的學(xué)員很多都是有一定的計算機(jī)基礎(chǔ),大部分都具備一定的編程基礎(chǔ),尤其是在校或者是剛畢業(yè)的學(xué)生,多少都有一些基礎(chǔ)。
他們欠缺的主要是兩點(diǎn):
(1)不能全面系統(tǒng)的、深入的掌握某種技術(shù),也就是會的挺多,但都是皮毛,不能滿足就業(yè)的需要。
(2)沒有任何實際的開發(fā)經(jīng)驗,完全是想象中學(xué)習(xí),考試還行,一到實際開發(fā)和應(yīng)用就歇菜了。
解決的方法就是通過項目練習(xí),對所學(xué)知識進(jìn)行深化,然后通過項目來獲取實際開發(fā)的經(jīng)驗,從而彌補(bǔ)這些不足,盡快達(dá)到企業(yè)的實際要求。
二:如何選擇項目
項目既然那么重要,肯定不能隨隨便便找項目,那么究竟如何來選擇呢?根據(jù)java的研究和實踐經(jīng)驗總結(jié),選擇項目的時候要注意以下方面:
1:項目不能太大,也不能太小
這個要根據(jù)項目練習(xí)的階段,練習(xí)的時間,練習(xí)的目標(biāo)來判斷。不能太大,太大了做不完,也不能太小,太小了沒有意義,達(dá)不到練習(xí)的目的。
2:項目不能脫離實際應(yīng)用系統(tǒng)
項目應(yīng)該是實際的系統(tǒng),或者是實際系統(tǒng)的簡化和抽象,不能夠是沒有實戰(zhàn)意義的教學(xué)性或者是純練習(xí)性的項目。因為培訓(xùn)的時間有限,必須讓學(xué)員盡快地融入到實際項目的開發(fā)當(dāng)中去。任何人接受和掌握一個東西都需要時間去適應(yīng),需要重復(fù)幾次才能夠真正掌握,所以每個項目都必須跟實際應(yīng)用掛鉤。
3:項目應(yīng)能覆蓋所學(xué)的主要知識點(diǎn)
學(xué)以致用,學(xué)完的知識點(diǎn)需要到應(yīng)用中使用,才能夠真正理解和掌握,再說了,軟件開發(fā)是一個動手能力要求很高的行業(yè),什么算會了,那就是能夠做出來,寫出代碼來,把問題解決了,你就算會了。
4:最后綜合項目一定要是實際應(yīng)用系統(tǒng)
學(xué)員經(jīng)過這個項目的練習(xí),就要走上實際的工作崗位了,如果這個系統(tǒng)還達(dá)不到實際應(yīng)用系統(tǒng)的標(biāo)準(zhǔn),學(xué)員練習(xí)過后也還是達(dá)不到企業(yè)實際的需要,那么這個培訓(xùn)應(yīng)該說質(zhì)量就不高了。理想的狀況是這個項目就是實際項目,到時候?qū)W員就業(yè)到另外一個公司,不過是換個地方干活而已,完全沒有技能上的問題。
三:java怎么選擇項目
這個不是靠想象,而是根據(jù)實際的情況一步一步分析出來的(呵呵要賣弄一下:這也算是邏輯思維),當(dāng)然這里只是討論方法,不涉及具體的項目案例。
我們可以采用倒推的方式來分析:
(1)最終的項目一定是真實的項目,也就是要把學(xué)員訓(xùn)練到能夠獨(dú)立開發(fā)實際應(yīng)用,通常我們還不能選最簡單的項目,因為學(xué)員的吸收還要有一個折扣,所以最終的項目應(yīng)該選實際項目中中等難度的項目
(2)最終項目定下來過后,開始分解這個項目,看看為了達(dá)到完成這個項目需要哪些技術(shù)和知識點(diǎn),以及每部分知識點(diǎn)的深度,然后定出每個分階段的任務(wù)
(3)然后開始選擇分階段的項目,分階段的項目應(yīng)該比剛才分析出來的分階段任務(wù)稍稍復(fù)雜點(diǎn),這樣才能達(dá)到訓(xùn)練的目標(biāo)。定下分階段項目后,同樣去分解,定出為了完成他所需要的各部分知識點(diǎn)和深度。
(4)然后是選擇上課期間的演示項目,演示的項目是為了做分階段項目服務(wù)的,可以認(rèn)為是分階段項目的分階段項目
(5)最終把要求掌握的知識點(diǎn)和要求掌握的深度,分散到日常教學(xué)和練習(xí)中。
好了,把上面的分析用正向描述就是:
日常教學(xué)和練習(xí)中學(xué)習(xí)和掌握的知識 ==〉演示項目 ==〉分階段項目 ==〉綜合項目 ==〉勝任企業(yè)實際開發(fā)需要。
附注:有了好的項目還要有好的訓(xùn)練方法(這個另外立文討論),最最基本和重要的一條就是:絕對要指導(dǎo)學(xué)生親自動手做,而不是看和聽,所以盡量不要選擇有現(xiàn)成代碼的項目,演示用的項目也最好不配發(fā)代碼,讓學(xué)生能夠跟著做出來才是真的掌握了。
上面闡述了java對項目的態(tài)度和基本選擇方法,這里再把其中幾個重要的、與眾不同的特點(diǎn)闡述如下:
1:真項目
項目一定要真實,要是企業(yè)實際應(yīng)用的,不能是教學(xué)性的項目,否則會脫離實達(dá)不到項目實訓(xùn)的效果。還有一個一定要是最新的項目,企業(yè)的要求也是在不斷變化的,應(yīng)用技術(shù)的方向和層次也在不斷變化,這些都體現(xiàn)在最新項目的要求上,舊項目所要求的技術(shù)和層次很可能已經(jīng)過時了,根本達(dá)不到訓(xùn)練的目的。
java的做法是:沒有固定項目,每個班做項目之前會從企業(yè)獲取最新的項目需求,然后經(jīng)過挑選和精心設(shè)計,以保證既能訓(xùn)練技術(shù),又能得到實際的開發(fā)經(jīng)驗。這樣實現(xiàn)了跟企業(yè)的同步,企業(yè)做什么,我們就學(xué)什么,然后也跟著做什么。
2:真流程
開發(fā)的流程也要跟企業(yè)的實際開發(fā)保持一致。從項目立項開始,到需求分析、概要設(shè)計、詳細(xì)設(shè)計、編碼、測試的各個環(huán)節(jié),都要完全按照真實的開發(fā)流程來做。
java的主力老師都是實戰(zhàn)出身,在java開發(fā)方面都至少有七年以上的開發(fā)經(jīng)驗,同時具備多年的項目管理經(jīng)驗,所以能夠完全按照企業(yè)開發(fā)的流程來訓(xùn)練學(xué)生。
3:真環(huán)境
開發(fā)的環(huán)境也要跟企業(yè)一樣,包括常用的開發(fā)工具、開發(fā)平臺、應(yīng)用服務(wù)器、常用插件、測試工具、項目管理工具、項目管理文檔等等。
java的做法是:構(gòu)建跟企業(yè)完全一樣的環(huán)境,然后跟企業(yè)開發(fā)一樣,分團(tuán)隊開發(fā)。老師就相當(dāng)于項目經(jīng)理,一個班分成多個小組,每個組有自己的team leader,大家分工合作,共同完成項目。
4:真開發(fā)
這是java最與眾不同的一點(diǎn),java深知:軟件是做出來的,而不是聽出來或者看出來的,企業(yè)需要能實際開發(fā)的人員,而不是只聽過、看過但不能做的人。所以java非常強(qiáng)調(diào):項目一定要讓學(xué)生動手寫出來。
java的做法是:老師做為項目經(jīng)理,帶領(lǐng)著大家一起去做需求分析、概要設(shè)計、數(shù)據(jù)結(jié)構(gòu)設(shè)計、接口設(shè)計、重要業(yè)務(wù)流程的分析設(shè)計等,然后由學(xué)生們分團(tuán)隊進(jìn)行開發(fā),實現(xiàn)整個項目。這里有幾個與眾不同:
(1):現(xiàn)場帶領(lǐng)學(xué)生一起做分析和設(shè)計,而不是預(yù)先做好了來講講。因為需要學(xué)生學(xué)習(xí)的是分析設(shè)計的過程和方法,而不是已經(jīng)做好的結(jié)果。
(2):java選用的項目基本都是企業(yè)最新的項目,很多都是java的學(xué)生和企業(yè)在同期開發(fā),所以是不配發(fā)源代碼的。這樣也斷絕了學(xué)生的依賴思想,認(rèn)認(rèn)真真去開發(fā)。可能有同學(xué)會問:為什么不選擇有源代碼的項目呢,那樣還可以參考學(xué)習(xí)啊!
這是一個典型的誤區(qū):覺得通過看人家的代碼能夠加快自己的學(xué)習(xí)。這個方法對有經(jīng)驗的人來講是對的,但是對于還在學(xué)習(xí)期間,沒有經(jīng)驗的學(xué)員來講,就是一個認(rèn)識的誤區(qū)了。因為你也許能看懂代碼的語法,但根本看不懂代碼背后的含義,看不懂代碼的設(shè)計,看不懂為什么要這么實現(xiàn),看不懂代碼所體現(xiàn)的思想,其實,看了跟沒看沒有多大區(qū)別。
事實上,java界最不缺的就是代碼了,那么多開源軟件,小到一個工具,到企業(yè)級erp都有開源的,而且很多都是大師級的作品,說實話比你參考的那些代碼質(zhì)量高多了,但是又有多少人能真正看明白呢,原因就在于達(dá)不到那個水平,看不懂代碼背后所體現(xiàn)的設(shè)計和思想以及為什么要這么做,效果也就不好了。
當(dāng)然不排除有這樣的高人是能夠完全能理解和掌握這些大師級作品的,但估計不會是剛開始學(xué)習(xí)java開發(fā)的學(xué)生,所以java根據(jù)多年的培訓(xùn)經(jīng)驗,友情提示:在初學(xué)階段,看一千遍,聽一千遍,都不如自己動手寫一遍所達(dá)到的學(xué)習(xí)效果。自己能寫出來的功能才是你真正掌握的功能,而不是你看得代碼或者是聽老師講的,就算講過看過,但是自己做不出來,那都不算會。
(3):java在課堂上除了帶領(lǐng)學(xué)生去分析設(shè)計外,還會分析一些重點(diǎn)、難點(diǎn)功能的實現(xiàn)機(jī)制和原理,然后指導(dǎo)學(xué)生去實現(xiàn)。
5:真技術(shù)
java在每個項目中,特別會抽取有難度的部分讓學(xué)生們在老師指導(dǎo)下實現(xiàn),專門啃硬骨頭,那才能真正鍛煉學(xué)生的開發(fā)能力。
比如:在做oa類的項目時,會重點(diǎn)去做工作流、公文收發(fā)、在線office控制等;在做crm類項目時:會重點(diǎn)去做銷售自動化和市場塊的業(yè)務(wù);在做人力資源類項目的時候會重點(diǎn)去做人力跟蹤和人力評測模型等......
java在每個項目中,都會使用目前企業(yè)最新最流行的技術(shù),按照最新的難度去要求,從而讓學(xué)員能更符合企業(yè)的需要。
6:真經(jīng)驗
java的項目都是企業(yè)最新的真實項目,經(jīng)過開發(fā)訓(xùn)練,學(xué)員能夠積累足夠的真實的開發(fā)經(jīng)驗,以勝任企業(yè)的工作需要。在進(jìn)行項目分析時,還會全面講解項目所要求的業(yè)務(wù),讓學(xué)員從業(yè)務(wù)和技術(shù)上都能充分積累。
7:真實力
作為就業(yè)培訓(xùn),項目的好壞對培訓(xùn)質(zhì)量的影響非常大,常常是決定性的作用。這篇文章是關(guān)于在學(xué)習(xí)java軟件開發(fā)時練習(xí)項目的總結(jié),簡單總結(jié)為以下幾點(diǎn):事實上,不采用有源代碼的教學(xué)性項目對java的要求非常高。 試想一下,如果項目分發(fā)下去,老師帶著分析后,學(xué)生都不會做會出現(xiàn)什么樣的后果?這對java的教學(xué)質(zhì)量提出了極高的要求,如果教學(xué)質(zhì)量達(dá)不到讓學(xué)員獨(dú)立開發(fā)的水平,對依靠質(zhì)量取勝和口碑發(fā)展的java將是毀滅性的。
另外一個,由于是全真的項目,在開發(fā)的過程中,肯定會有很多的問題出現(xiàn),這些都要老師去解決,由于不像教學(xué)項目那樣預(yù)先做好,又需要老師能很快地解決各個問題,這對老師的真實開發(fā)水平有極高的要求,這可是需要真功夫的。
總結(jié)
總之,java通過真實的項目,真實的開發(fā)環(huán)境和開發(fā)流程,指導(dǎo)學(xué)員去真正開發(fā),讓學(xué)員得到真正的鍛煉,收獲真正的開發(fā)能力。
有了真正的開發(fā)能力==>能夠勝任企業(yè)的實際需要==>高薪好工作。
java項目實訓(xùn)日志 java項目實訓(xùn)心得體會篇三
一、項目需求
本程序的主要功能:
(1)單擊“計算器”上的數(shù)字按鈕(0~9)可以設(shè)置參與計算的運(yùn)算數(shù)。
(2)單擊“計算器”上的運(yùn)算符按鈕(+、-、_、/、1/x、sqrt、%)可以選擇運(yùn)算符號。
(3)單擊“計算器”上的“=”按鈕顯示計算結(jié)果。
(4)單擊“計算器”上的“復(fù)位”按鈕清空計算結(jié)果。
(5)單擊“計算器”上的“刪除”按鈕刪除輸入的最后一個數(shù)字。
二、項目設(shè)計
在設(shè)計計算器時,編寫2個java源文件:、計算器除了上述java源文件所給出的類外,還需要java系統(tǒng)提供的一些重要類,如jbutton,jtextfield等。
下面是2個java源文件的總體設(shè)計。
(1)(主類)
calculatorwindow類負(fù)責(zé)創(chuàng)建計算器的主窗口,該類含有main方法,計算器從該類開始執(zhí)行。calculatorwindow類有4種類型的對象,分別是:linkedlist、numberbutton、jbutton、jtextfield。
(2)
numberbutton類創(chuàng)建的對象是主類calculatorwindow窗口的一個“數(shù)字”按鈕。numberbutton有一個int類型的成員temp,用于標(biāo)明所創(chuàng)建的按鈕所含有的運(yùn)算符號。numberbutton所創(chuàng)建的22個按鈕被添加到calculatorwindow窗口中。
1、calculatorwindow類(主類)
(1)數(shù)據(jù)和方法
包中jframe的一個字類,并實現(xiàn)了actionlistener接口。類中有關(guān)數(shù)據(jù)和方法的詳細(xì)說明。
1)成員變量
jbarray是numberbutton型數(shù)組,每個單元是一個numberbutton類創(chuàng)建的“數(shù)字按鈕”對象,該數(shù)組長度為10。numberbutton數(shù)組中的“數(shù)字按鈕”含有的數(shù)字依次為0~9。每個“數(shù)字按鈕”都注冊有actionevent事件監(jiān)聽器。
2)方法
main(string args)方法是計算器程序運(yùn)行的入口方法。
calculatorwindow是構(gòu)造方法,負(fù)責(zé)完成窗口的初始化。
(2)代碼:
import ._;
import .event._;
import ._;
public class jisuanqi extends jframe implements actionlistener
{
private jtextfield jtresult=new jtextfield;
private jbutton jb_clear=new jbutton("復(fù)位");
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
{
out(null);
le("計算器");
nds(120,100,310,30);
table(false);
izontalalignment();(jtresult); nds(290,150,60,30); (jb_clear); for(int i=0;i
{ if(clear==false) t(""); t(t+"6"); clear=true; } if(temp==jbarray[0][0])//點(diǎn)擊"7"按鈕 { if(clear==false) t(""); t(t+"7"); clear=true; }if(temp==jbarray[1][0])//點(diǎn)擊"8"按鈕 { if(clear==false) t(""); t(t+"8"); clear=true; } if(temp==jbarray[2][0])//點(diǎn)擊"9"按鈕 { if(clear==false) t(""); t(t+"9"); clear=true; } if(temp==jbarray[2][3])//點(diǎn)擊"."按鈕 { clickable=true; for (int i = 0; i < t.length; i++) if ('.' == (i)) { clickable=false; break; } //第一層判斷是否里面含有小數(shù)點(diǎn); if(clickable==true)//第二壇判斷 t(t+"."); } try { if(temp==jbarray[3][3])//點(diǎn)擊"+"按鈕 { qian=ouble(t); fuhao="+";clear=false; } if(temp==jbarray[3][2])//點(diǎn)擊"-"按鈕 { qian=ouble(t); fuhao="-"; clear=false; } if(temp==jbarray[3][1])//點(diǎn)擊"_"按鈕 { qian=ouble(t); fuhao="_"; clear=false; } if(temp==jbarray[3][0])//點(diǎn)擊"/"按鈕 { qian=ouble(t); fuhao="/"; clear=false; } if(temp==jbarray[4][3])//點(diǎn)擊"="按鈕 { double ss=ouble(t); t(""); if(fuhao=="+") t(qian+ss+""); if(fuhao=="-") t(qian-ss+""); if(fuhao=="_") t(qian_ss+""); if(fuhao=="/") t(qian/ss+""); clear=false;//要清空前一次的數(shù)據(jù) } if(temp==jbarray[4][0])//點(diǎn)擊"sqrt"按鈕 { string s = t; if((0) == '-') { t("負(fù)數(shù)不能開根號"); } else t(ng((ouble(t))));} if(temp==jbarray[4][2])//點(diǎn)擊"1/x"按鈕 { if ((0) == '0'&&t.length == 1) { t("除數(shù)不能為零"); } else { boolean isdec = true; int i, j, k; string s = ng(1 / ouble(t)); for (i = 0; i < ; i++) if ((i) == '.') break; for (j = i + 1; j < ; j++) if ((j) != '0') { isdec = false; break; } if (isdec == true) { string stemp = ""; for (k = 0; k < i; k++) stemp += (k); t(stemp); } else t(s); } clear=false; } if(temp==jbarray[4][1])//點(diǎn)擊"%"按鈕 { t("0"); clear=false; } if (temp == jbarray[1][3]) //點(diǎn)擊"+/-"按鈕 { boolean isnumber = true; string s = t; for (int i = 0; i < ; i++)去掉
} { isnumber = false; break; } if (isnumber == true) { //如果當(dāng)前字符串首字母有'-'號,代表現(xiàn)在是個負(fù)數(shù),再按下時,則將首符號 if((0) == '-') { t(""); for (int i = 1; i < ; i++) { char a = (i); t(t + a); } } //如果當(dāng)前字符串第一個字符不是符號,則添加一個符號在首字母處 else t('-' + s); } } } catch(exception eee) { n("運(yùn)算時,首先輸入數(shù)字或字符"); t("運(yùn)算出錯"); clear=false; } } public static void main(string args) { new jisuanqi; }
(3)效果圖
三、項目總結(jié)
本程序為java中簡單的計算器,主要實現(xiàn)簡單的數(shù)學(xué)計算,刪除,復(fù)位等功能。運(yùn)用java中的類,數(shù)組,成員變量等知識,有簡單的界面,按鈕等。
本程序還存在一定的缺陷,功能簡單,界面還需美化等。
四、心得體會
編寫一個程序,無論會實現(xiàn)什么功能,都必須掌握這門語言的要領(lǐng)、基本知識及工具的運(yùn)用,同時別的輔助工具也要有一定的了解。因此要更好的運(yùn)用java語言編程還需更深入的學(xué)習(xí),這樣才能把一個程序的功能實現(xiàn)的淋漓盡致,界面才會更加美觀。
同時編寫這個程序讓我更好的理解了數(shù)組、類的運(yùn)用及事件的監(jiān)聽和獲取等功能。
java項目實訓(xùn)日志 java項目實訓(xùn)心得體會篇四
一、項目需求
本程序的主要功能:
(1)單擊“計算器”上的數(shù)字按鈕(0~9)可以設(shè)置參與計算的運(yùn)算數(shù)。
(2)單擊“計算器”上的運(yùn)算符按鈕(+、-、*、/、1/x、sqrt、%)可以選擇運(yùn)算符號。
(3)單擊“計算器”上的“=”按鈕顯示計算結(jié)果。
(4)單擊“計算器”上的“復(fù)位”按鈕清空計算結(jié)果。
(5)單擊“計算器”上的“刪除”按鈕刪除輸入的最后一個數(shù)字。
二、項目設(shè)計
在設(shè)計計算器時,編寫2個java源文件:、計算器除了上述java源文件所給出的類外,還需要java系統(tǒng)提供的一些重要類,如jbutton,jtextfield等。
下面是2個java源文件的總體設(shè)計。
(1)(主類)
calculatorwindow類負(fù)責(zé)創(chuàng)建計算器的主窗口,該類含有main方法,計算器從該類開始執(zhí)行。calculatorwindow類有4種類型的對象,分別是:linkedlist、numberbutton、jbutton、jtextfield。
(2)
numberbutton類創(chuàng)建的對象是主類calculatorwindow窗口的一個“數(shù)字”按鈕。numberbutton有一個int類型的成員temp,用于標(biāo)明所創(chuàng)建的按鈕所含有的運(yùn)算符號。numberbutton所創(chuàng)建的22個按鈕被添加到calculatorwindow窗口中。
1、calculatorwindow類(主類)
(1)數(shù)據(jù)和方法
包中jframe的一個字類,并實現(xiàn)了actionlistener接口。類中有關(guān)數(shù)據(jù)和方法的詳細(xì)說明。
1)成員變量
jbarray是numberbutton型數(shù)組,每個單元是一個numberbutton類創(chuàng)建的“數(shù)字按鈕”對象,該數(shù)組長度為10。numberbutton數(shù)組中的“數(shù)字按鈕”含有的數(shù)字依次為0~9。每個“數(shù)字按鈕”都注冊有actionevent事件監(jiān)聽器。
2)方法
main(string args)方法是計算器程序運(yùn)行的入口方法。
calculatorwindow是構(gòu)造方法,負(fù)責(zé)完成窗口的初始化。
(2)代碼:
import .*;
import .event.*;
import .*;
public class jisuanqi extends jframe implements actionlistener
{
private jtextfield jtresult=new jtextfield;
private jbutton jb_clear=new jbutton("復(fù)位");
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
{
out(null);
le("計算器");
nds(120,100,310,30);
table(false);
izontalalignment();(jtresult); nds(290,150,60,30); (jb_clear); for(int i=0;i
{ if(clear==false) t(""); t(t+"6"); clear=true; } if(temp==jbarray[0][0])//點(diǎn)擊"7"按鈕 { if(clear==false) t(""); t(t+"7"); clear=true; }if(temp==jbarray[1][0])//點(diǎn)擊"8"按鈕 { if(clear==false) t(""); t(t+"8"); clear=true; } if(temp==jbarray[2][0])//點(diǎn)擊"9"按鈕 { if(clear==false) t(""); t(t+"9"); clear=true; } if(temp==jbarray[2][3])//點(diǎn)擊"."按鈕 { clickable=true; for (int i = 0; i < t.length; i++) if ('.' == (i)) { clickable=false; break; } //第一層判斷是否里面含有小數(shù)點(diǎn); if(clickable==true)//第二壇判斷 t(t+"."); } try { if(temp==jbarray[3][3])//點(diǎn)擊"+"按鈕 { qian=ouble(t); fuhao="+";clear=false; } if(temp==jbarray[3][2])//點(diǎn)擊"-"按鈕 { qian=ouble(t); fuhao="-"; clear=false; } if(temp==jbarray[3][1])//點(diǎn)擊"*"按鈕 { qian=ouble(t); fuhao="*"; clear=false; } if(temp==jbarray[3][0])//點(diǎn)擊"/"按鈕 { qian=ouble(t); fuhao="/"; clear=false; } if(temp==jbarray[4][3])//點(diǎn)擊"="按鈕 { double ss=ouble(t); t(""); if(fuhao=="+") t(qian+ss+""); if(fuhao=="-") t(qian-ss+""); if(fuhao=="*") t(qian*ss+""); if(fuhao=="/") t(qian/ss+""); clear=false;//要清空前一次的數(shù)據(jù) } if(temp==jbarray[4][0])//點(diǎn)擊"sqrt"按鈕 { string s = t; if((0) == '-') { t("負(fù)數(shù)不能開根號"); } else t(ng((ouble(t))));} if(temp==jbarray[4][2])//點(diǎn)擊"1/x"按鈕 { if ((0) == '0'&&t.length == 1) { t("除數(shù)不能為零"); } else { boolean isdec = true; int i, j, k; string s = ng(1 / ouble(t)); for (i = 0; i < ; i++) if ((i) == '.') break; for (j = i + 1; j < ; j++) if ((j) != '0') { isdec = false; break; } if (isdec == true) { string stemp = ""; for (k = 0; k < i; k++) stemp += (k); t(stemp); } else t(s); } clear=false; } if(temp==jbarray[4][1])//點(diǎn)擊"%"按鈕 { t("0"); clear=false; } if (temp == jbarray[1][3]) //點(diǎn)擊"+/-"按鈕 { boolean isnumber = true; string s = t; for (int i = 0; i < ; i++)去掉
} { isnumber = false; break; } if (isnumber == true) { //如果當(dāng)前字符串首字母有'-'號,代表現(xiàn)在是個負(fù)數(shù),再按下時,則將首符號 if((0) == '-') { t(""); for (int i = 1; i < ; i++) { char a = (i); t(t + a); } } //如果當(dāng)前字符串第一個字符不是符號,則添加一個符號在首字母處 else t('-' + s); } } } catch(exception eee) { n("運(yùn)算時,首先輸入數(shù)字或字符"); t("運(yùn)算出錯"); clear=false; } } public static void main(string args) { new jisuanqi; }
(3)效果圖
三、項目總結(jié)
本程序為java中簡單的計算器,主要實現(xiàn)簡單的數(shù)學(xué)計算,刪除,復(fù)位等功能。運(yùn)用java中的類,數(shù)組,成員變量等知識,有簡單的界面,按鈕等。
本程序還存在一定的缺陷,功能簡單,界面還需美化等。
四、心得體會
編寫一個程序,無論會實現(xiàn)什么功能,都必須掌握這門語言的要領(lǐng)、基本知識及工具的運(yùn)用,同時別的輔助工具也要有一定的了解。因此要更好的運(yùn)用java語言編程還需更深入的學(xué)習(xí),這樣才能把一個程序的功能實現(xiàn)的淋漓盡致,界面才會更加美觀。
同時編寫這個程序讓我更好的理解了數(shù)組、類的運(yùn)用及事件的監(jiān)聽和獲取等功能。