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