第一篇:java上機(jī)實(shí)驗(yàn)
1、實(shí)驗(yàn)一:多線程程序設(shè)計(jì):炮打飛機(jī)
實(shí)驗(yàn)?zāi)康模簩W(xué)會(huì)使用多線程進(jìn)行并發(fā)程序設(shè)計(jì)
實(shí)驗(yàn)內(nèi)容:編寫一個(gè)應(yīng)用程序模擬大炮打飛機(jī)。在GUI界面上,飛機(jī)水平飛行,用界面上的按鈕控制大炮的運(yùn)行方向(如向左,向右,向上,向下)。當(dāng)炮彈碰著飛機(jī)后,飛機(jī)墜落。
2、實(shí)驗(yàn)二:數(shù)據(jù)庫(kù)編程:書目信息管理
實(shí)驗(yàn)?zāi)康模赫莆諗?shù)據(jù)庫(kù)編程技術(shù)。能正確連接數(shù)據(jù)庫(kù),能對(duì)數(shù)據(jù)庫(kù)中信息進(jìn)行查詢、插
入、刪除、修改。
實(shí)驗(yàn)內(nèi)容:在數(shù)據(jù)庫(kù)中創(chuàng)建一張書目信息表,包括書名、作者、出版社、出版日期、書
號(hào)、價(jià)格字段。設(shè)計(jì)一個(gè)GUI界面進(jìn)行書目管理。在該界面上有四個(gè)選項(xiàng)卡,分別是查詢、插入、刪除、修改。點(diǎn)擊查詢選項(xiàng)卡,出現(xiàn)的界面上有書名、作者、出版社、書號(hào)四個(gè)文本框,一個(gè)按鈕和一個(gè)只讀文本區(qū)。文本框內(nèi)容可以為空,輸入相應(yīng)的查詢信息后(例如根據(jù)書名查詢可以僅輸入書名),點(diǎn)擊界面上的“查詢”按鈕,可以在界面下方的文本區(qū)中顯示出符合條件的書目詳細(xì)信息。點(diǎn)擊插入選項(xiàng)卡,出現(xiàn)的界面上有書名、作者、出版社、出版日期、書號(hào)、價(jià)格文本框,一個(gè)按鈕。在文本框中輸入信息后,點(diǎn)擊“插入”按鈕,該書目信息插入數(shù)據(jù)庫(kù)表中。點(diǎn)擊刪除選項(xiàng)卡,出現(xiàn)的界面上有書名文本框和一個(gè)按鈕,輸入書名后點(diǎn)擊“刪除”按鈕,該書目信息從數(shù)據(jù)庫(kù)表中刪除。點(diǎn)擊修改選項(xiàng)卡,出現(xiàn)的界面上有書名、作者、出版社、出版日期、書號(hào)、價(jià)格文本框,一個(gè)按鈕。輸入的書名必須是已存在的,否則會(huì)彈出消息框顯示出錯(cuò)信息。輸入信息后,點(diǎn)擊“修改”按鈕,數(shù)據(jù)庫(kù)表中的相應(yīng)書目信息被修改為新值。
3、實(shí)驗(yàn)三:Applet編程:鴨子的移動(dòng)
實(shí)驗(yàn)?zāi)康模赫莆誂pplet程序設(shè)計(jì)的方法,學(xué)會(huì)在Applet中繪制圖片,能采用雙緩沖技術(shù)進(jìn)行圖片繪制,會(huì)在Applet中采用多線程進(jìn)行動(dòng)畫顯示。能在Applet中實(shí)現(xiàn)動(dòng)畫的平滑顯示,避免閃爍現(xiàn)象。
實(shí)驗(yàn)內(nèi)容:在Applet窗口中顯示一只鴨子圖片,要求這只鴨子以每秒100幀的速率水平移動(dòng),移到窗口邊界再返回移動(dòng)。在窗口中點(diǎn)擊鼠標(biāo),鴨子停止移動(dòng);再次點(diǎn)擊鼠標(biāo),鴨子恢復(fù)移動(dòng)。
4、實(shí)驗(yàn)四:網(wǎng)絡(luò)編程:聊天室的實(shí)現(xiàn)
實(shí)驗(yàn)?zāi)康模簳?huì)編寫客戶端和服務(wù)器程序?qū)崿F(xiàn)C/S模式下的通信,會(huì)使用多線程進(jìn)行網(wǎng)絡(luò)編程。
實(shí)驗(yàn)內(nèi)容:編寫一個(gè)聊天室程序:客戶端界面請(qǐng)自行設(shè)計(jì),可使其具有個(gè)性化特征; 可在實(shí)現(xiàn)基本的聊天室功能的基礎(chǔ)上添加個(gè)性化的功能。
第二篇:java上機(jī)實(shí)驗(yàn)心得體會(huì)報(bào)告
北京聯(lián)合大學(xué)信息學(xué)院
“面向?qū)ο蟪绦蛟O(shè)計(jì)”課程上機(jī)實(shí)驗(yàn)報(bào)告
題目:
JAVA上機(jī)實(shí)驗(yàn)心得體會(huì) 姓名(學(xué)號(hào)):
專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)
編制時(shí)間:
2012年12月19日
版本:
1.0.0
指導(dǎo)教師:
北京聯(lián)合大學(xué)-信息學(xué)院編制 實(shí)驗(yàn)1 熟悉Java運(yùn)行環(huán)境
實(shí)驗(yàn)?zāi)康模菏煜DK環(huán)境和操作,編寫簡(jiǎn)單的Java應(yīng)用程序。
心得體會(huì):在該實(shí)驗(yàn)中,我碰到的問題是JDK環(huán)境變量的設(shè)置。解決方法是通過查閱資料書和網(wǎng)上搜索相關(guān)解決方法及同學(xué)的有力幫助。實(shí)驗(yàn)2 選擇語(yǔ)句練習(xí)
實(shí)驗(yàn)?zāi)康模赫_理解并能夠熟練操作和使用Java的if和switch語(yǔ)句。
心得體會(huì):我個(gè)人感覺有了C的編程基礎(chǔ),if和switch這些簡(jiǎn)單的流程控制語(yǔ)句運(yùn)用起來(lái)比較輕松,實(shí)現(xiàn)簡(jiǎn)單的邏輯運(yùn)算也跟C非常相近,所以上手比較快。但是在這次程序中,首次涉及到了java程序的數(shù)據(jù)輸入,與C區(qū)別很大。但經(jīng)過老師的講解和查閱相關(guān)資料,基本明白相關(guān)的使用規(guī)則和注意事項(xiàng)。在第二個(gè)小題中還涉及到了charAt()方法,經(jīng)查閱JDK文檔,知道charAt()方法返回一個(gè)位于提供給它的參數(shù)索引處的字符,如: str.chatAt(0)檢索str中的第一個(gè)字符,str.charAt(str.length()-1)檢索最后一個(gè)字符。我運(yùn)用此方法解決了比較字符串間首字母異同的問題。
實(shí)驗(yàn)3 迭代練習(xí)
實(shí)驗(yàn)?zāi)康模赫_理解并能夠熟練操作和使用Java的for、while、do..while語(yǔ)句。心得體會(huì):在該實(shí)驗(yàn)中,我學(xué)會(huì)了為具體操作選擇最合適的循環(huán)語(yǔ)句及for、while、do..while語(yǔ)句的相互轉(zhuǎn)換使用。最重要的是,明白了JAVA程序中,定義方法中的局部變量時(shí)一定要賦初始值,否則編譯不能通過會(huì)報(bào)錯(cuò);但類中的成員變量則不一定需要。如我在實(shí)驗(yàn)3main()方法定義的整型局部變量command,當(dāng)不初始化則不能通過編譯。原因是局部變量不能有JVM自動(dòng)賦給相關(guān)的默認(rèn)值,而成員變量可以。實(shí)驗(yàn)4 方法的實(shí)現(xiàn)練習(xí)
實(shí)驗(yàn)?zāi)康模郝暶鳌⒍x和調(diào)用方法,理解實(shí)參和形參的含義。
心得體會(huì):在該實(shí)驗(yàn)中,我掌握如何寫方法、調(diào)用方法,并掌握如何向方法中傳遞信息和從方法中返回信息。方法聲明為非void(構(gòu)造方法除外)則需要用return語(yǔ)句返回一個(gè)相應(yīng)類型的返回值。
實(shí)驗(yàn)5 簡(jiǎn)單類型數(shù)組練習(xí)
實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)創(chuàng)建簡(jiǎn)單類型的數(shù)組,并能用循環(huán)語(yǔ)句處理數(shù)組。
心得體會(huì):通過該實(shí)驗(yàn),我學(xué)會(huì)了如何讓建立簡(jiǎn)單類型的數(shù)組,并掌握了將數(shù)組作為方法的傳入?yún)?shù)和返回值。在該實(shí)驗(yàn)中,遇到的問題主要是如何將一個(gè)連續(xù)的多位數(shù)在存入數(shù)組時(shí),每個(gè)數(shù)組元素只對(duì)應(yīng)改多位數(shù)的一個(gè)組成數(shù)。我解決的方法如下: for(i=0;i<6;i++){ n[i] = aa%10;//aa%10的結(jié)果是aa的末尾數(shù),將多位數(shù)aa的末尾數(shù)賦給a[i] aa =(int)aa/10;//對(duì)aa/10的結(jié)果強(qiáng)制取整,去掉了aa的末尾數(shù),以便對(duì)下一位數(shù)的存數(shù)。}
實(shí)驗(yàn)6 類和對(duì)象的練習(xí)
實(shí)驗(yàn)?zāi)康模赫_理解并能夠熟練操作和使用Java的類、對(duì)象和方法。心得體會(huì):我學(xué)會(huì)了如何建立類和對(duì)象,分別輸出其中包含的成員值;以及分別引用各方法,實(shí)現(xiàn)不同的操作。在該程序中,我進(jìn)一步了解了如何定義成員方法和成員屬性以及相關(guān)方法的調(diào)用。特別是我掌握了利用構(gòu)造方法對(duì)成員屬性賦初始值。值得一提的是,我在相應(yīng)的程序中運(yùn)用了toUpperCase方法,經(jīng)查看JDK文檔知道該方法的作用是返回一個(gè)所有字母都被轉(zhuǎn)化為大寫字母字符串。實(shí)驗(yàn)7 類的實(shí)現(xiàn)
實(shí)驗(yàn)?zāi)康模菏褂媒y(tǒng)一建模語(yǔ)言(UML)設(shè)計(jì)類,并實(shí)現(xiàn)類。
心得體會(huì):通過該實(shí)驗(yàn),我學(xué)會(huì)了使用public、private控制訪問及其訪問權(quán)限;體會(huì)了static關(guān)鍵字的作用。并對(duì)JAVA程序中的類及面向?qū)ο蟮木幊趟枷胗辛烁M(jìn)一步的了解。實(shí)驗(yàn)8 繼承的練習(xí)
實(shí)驗(yàn)?zāi)康模赫_理解并能夠熟練操作和使用Java類的繼承關(guān)系。
心得體會(huì):理解了繼承的含義,并使用UML符號(hào)設(shè)計(jì)了繼承結(jié)構(gòu);掌握了用Java實(shí)現(xiàn)繼承關(guān)系;學(xué)會(huì)了區(qū)分方法重寫和方法重載;并深入理解了abstract 和 final修飾符的作用。用final標(biāo)記的變量只能賦值一次,標(biāo)記的類不可被繼承,方法不可被子類重寫。用關(guān)鍵字extends表繼承,例如子類A繼承了父類B則可寫作 class A extends B。在這些概念性知識(shí)點(diǎn)弄明白后,在解決實(shí)際問題時(shí),碰到了輸入年月日計(jì)算車齡的問題,我的解決辦法如下: public int age(int year){
int age;
int a1 =(int)(time/10000);//(int)time/10000是將8位數(shù)表示的生產(chǎn)年月日強(qiáng)制轉(zhuǎn)換成四位數(shù)表示的年
int a2 =(int)(year/10000);//將當(dāng)前年月日轉(zhuǎn)換為年
age = a2-a1 +1;//計(jì)算車齡
return age;} 實(shí)驗(yàn)9 抽象類、接口練習(xí)
實(shí)驗(yàn)?zāi)康模壕C合運(yùn)用接口,類的知識(shí)。
心得體會(huì):在該實(shí)驗(yàn)中,我掌握了接口定義,以及類實(shí)現(xiàn)接口。接口用interface關(guān)鍵字定義,在接口中,可以用abstract是修飾方法的,也可以去掉abstract,編譯時(shí)會(huì)默認(rèn)為抽象方法。類實(shí)現(xiàn)接口可用implements表示,例如class Circle implements Shape表示,Circle類實(shí)現(xiàn)了接口Shape。實(shí)驗(yàn)10 多態(tài)練習(xí)
實(shí)驗(yàn)?zāi)康模豪斫獠⑹褂妹嫦驅(qū)ο蟮奶卣鳎憾鄳B(tài)。
心得體會(huì):在實(shí)驗(yàn)10中,我基本掌握了多態(tài)的句柄、多態(tài)方法的定義。在改程序中,我遇到了要求隨機(jī)產(chǎn)生一個(gè)圖形的難題,通過網(wǎng)上查閱資料,利用系統(tǒng)函數(shù)Math.random()經(jīng)一系列的運(yùn)算處理來(lái)隨機(jī)產(chǎn)生一個(gè)圖形解決了該難題,具體的程序如下: public static void main(String[] args)
{
Circle cir = new Circle(9);
Square squ = new Square(4);
Shape shape;
int r;
r =(int)(Math.random()*2);//用Math.random()方法產(chǎn)生0.00到1.00的隨機(jī)數(shù),乘2取整后非0即1
if(r == 0)
shape = cir;
else
shape = squ;
} shape.testShape(shape);//同一條語(yǔ)句產(chǎn)生不同的執(zhí)行結(jié)果,多態(tài)性。
實(shí)驗(yàn)11 多線程處理
實(shí)驗(yàn)?zāi)康模豪斫饩€程的基本概念。
心得體會(huì):通過該實(shí)驗(yàn),基本能夠理解線程的運(yùn)行了。學(xué)會(huì)調(diào)用Thread類中的系統(tǒng)函數(shù)以及掌握這些函數(shù)的作用是難點(diǎn),setName()是設(shè)置線程名字,start()是開辟一條新線程,Thread.currentThread().getName()是獲得正在執(zhí)行的線程的名字,Thread.currentThread().getId()是thread類中返回該線程的標(biāo)識(shí)符的方法,Thread.currentThread().getPriority()是thread類中返回線程的優(yōu)先級(jí)的方法。
實(shí)驗(yàn)12 I/O及文件處理
實(shí)驗(yàn)?zāi)康模赫莆詹⑹褂肑ava中的I/O和文件。
心得體會(huì):對(duì)于該實(shí)驗(yàn),由于比較難,只是基本掌握了文件讀寫的方法和規(guī)則,還有待17周JAVA實(shí)訓(xùn)時(shí)繼續(xù)攻堅(jiān)克難。
結(jié)語(yǔ):在這一系列的實(shí)驗(yàn)中,我基本掌握了Java的編程規(guī)則、知識(shí)要點(diǎn)和一些小技巧,特別是對(duì)面向?qū)ο蟮木幊趟枷牒惋L(fēng)格有了進(jìn)一步的認(rèn)識(shí)和體會(huì)。同時(shí),因正確的編出程序而帶來(lái)的成就感讓我對(duì)編程更加感興趣。對(duì)于在這些實(shí)驗(yàn)過程中,請(qǐng)教老師、同學(xué)互助、查閱資料等基本的學(xué)習(xí)方式,使我更加領(lǐng)悟到集體和團(tuán)隊(duì)的力量,也樹立了敢于攻堅(jiān)的信心。
第三篇:Java上機(jī)實(shí)驗(yàn)報(bào)告
Homework3實(shí)驗(yàn)報(bào)告
一、實(shí)驗(yàn)?zāi)康呐c要求
1、掌握J(rèn)ava中類和接口的基本知識(shí);
2、繼承的基本知識(shí);
3、集合的基本操作
二、實(shí)驗(yàn)內(nèi)容 1.PIMCollection 類
創(chuàng)建一個(gè)可以管理PIMEntities實(shí)體的集合,該類實(shí)現(xiàn)了Collection接口,且必須實(shí)現(xiàn)了以下方法:(1).getNotes();返回PIMCollection中所有的PIMNote項(xiàng),如果不包含PIMNote項(xiàng),則返回一個(gè)空集合
(2).getTodos();返回集合PIMCollection中所有的PIMTodo項(xiàng),如果不包含PIMTodo項(xiàng),則返回一個(gè)空集合
(3).getAppointment();返回集合PIMCollection中所有的PIMAppointment項(xiàng),如果不包含PIMAppointment項(xiàng)。則返回一個(gè)空集合(4).getContacts();返回結(jié)合PIMCollection中所有的PIMContact項(xiàng),如果不包含PIMContact項(xiàng),則返回一個(gè)空集合
(5).getItemsForDate(Date d);返回集合PIMCollection中所有與d匹配的PIMEntities,如果沒有匹配d的項(xiàng),則返回一個(gè)空集合
(只有PIMTodo和PIMAppointment項(xiàng),因?yàn)镻IMNote和PIMContact跟日期沒有關(guān)系)。
2.TestPIMCollection類(自己的測(cè)試類)
向PIMCollection集合類中加入了一些PIMEntity實(shí)體類,并用PIMCollection類中實(shí)現(xiàn)的方法分別篩選出了其中的PIMNote、PIMTodo、PIMAppointment、PIMContact、符合指定日期d的集合并打印輸出。
三、實(shí)驗(yàn)器材
計(jì)算機(jī)+windows操作系統(tǒng)+eclipse
四、實(shí)驗(yàn)步驟
1.程序源代碼(壓縮在文件夾里)2.編譯執(zhí)行程序 3.記錄執(zhí)行結(jié)果
五、實(shí)驗(yàn)結(jié)果
1.TestPIMCollection的測(cè)試代碼:
2.程序的執(zhí)行結(jié)果:
如圖所示:程序分別輸出了Todo、Note、Appointment、Contact、以及匹配指定日期的結(jié)合的結(jié)果。
六、實(shí)驗(yàn)小結(jié)
1、熟悉了Java集合的基本內(nèi)容和操作,也包括了泛型的一些知識(shí)。
2、通過這個(gè)實(shí)驗(yàn)鞏固了java的基礎(chǔ)知識(shí):類和接口的有關(guān)知識(shí),繼承的應(yīng)用。
3、掌握了在eclipse下編譯執(zhí)行Java程序的知識(shí)。
4、通過幾次的編程,熟悉了java的編程規(guī)則。
5、綜合應(yīng)用所學(xué)知識(shí)完成java程序的分析、設(shè)計(jì)、調(diào)試和總結(jié),為以后編寫更復(fù)雜的java程序打下了很好的基礎(chǔ)。
第四篇:計(jì)算方法上機(jī)實(shí)驗(yàn)
龍格-庫(kù)塔
#include
#include
float function(float x,float y)
{
return(0-(y*y));//f(x,y)μ?±í′?ê? }
int main()
{
float x0,x1,y0,y1,k1,k2,k3,k4,a,b,c,n,h;int i;
scanf(“%f %f %f %f”,&a,&b,&c,&n);x0=a;
y0=c;
h=(b-a)/n;
for(i=1;i<=n;i++)
{
k1=h*function(x0,y0);
k2=h*function(x0+h/2,y0+k1/2);k3=h*function(x0+h/2,y0+k2/2);k4=h*function(x0+h,y0+k3);x1=x0+h;
y1=y0+(k1+2*k2+2*k3+k4)/6;
printf(“x%d=%f,y%d=%fn”,i,x1,i,y1);x0=x1;
y0=y1;
}
return 0;
}
拉格朗日
#include
#include
#include
#define maxlength 500
#define pi 3.14***
floata[maxlength],f[maxlength];
float n;
floatlagrange(floata[],floatf[],float x,int n)
{
int k=0,j;
floaty=0.0,l;
while(k<=n)
{
l=1.0;
// printf(“%lfn”,y);
for(j=0;j<=n;j++)
{
if(j!=k)
{
l=l*(x-a[j])/(a[k]-a[j]);// printf(“%lfn”,l);
}
}
//printf(“%lfn”,f[k]);
// printf(“%lfn”,l);
y=y+l*f[k];
k++;
}
printf(“x=%f,y=%fn”,x,y);
return y;
}
float fx1(floatx)
{
return(1/(1+x*x));
}
floatfx2(floatx)
{
return exp(x);
}
floatfx3(float x)
{
return sqrt(x);
}
void math1(float c,float n)
{
int i=0;
float h;
h=2*c/n;
while(i<=n)
{
a[i]=i*h-5;
i++;
}
}
void math2()
{
int i=0;
while(i<=n)
{
a[i]=cos((2*i+1)*pi/2/(n+1));
i++;
}
}
int main()
{
n=20;
int i;
math1(5,n);
for(i=0;i<=n;i++)
{
f[i]=fx1(a[i])
}
lagrange(a,f,0.75,n);
return 0;
}
龍貝格
#include
#include
#include
double t[1000],r[1000];
double f(double x)
{
return(x*x*exp(x));
}
int main()
{
double h,a,b,e;
int i,N,m;
scanf(“%lf,%lf,%d,%lf”,&a,&b,&N,&e);
h=b-a;
m=0;
t[1]=0.5*h*(f(a)+f(b));
printf(“%lf”,t[1]);
r[0]=t[0];
while(1)
{
printf(“n”);
for(i=0;i<((m<4)?m:4);i++)
t[i]=r[i];
m++;
h=h/2;
r[0]=t[0]/2;
for(i=1;i<=pow(2,m);i++)
r[0]+=h*f(a+(i-0.5)*h)/2;
printf(“%lf”,r[0]);
r[1]=(4*r[0]-t[0])/3;
printf(“ %lf”,r[1]);
if(m==1)
continue;
r[2]=(16*r[1]-t[1])/15;
printf(“ %lf”,r[2]);
if(m==2)
continue;
r[3]=(64*r[2]-t[2])/63;
printf(“ %lf”,r[3]);
if(m==3)
continue;
if((fabs(r[3]-t[3])<=e)||(m==N))
break;
}
printf(“nthe current time is :%dn”,m);
return 0;
}
牛頓
#include
#include
#include
double function(double point)
{
return(point*point-2*point*exp(-point)+exp(-2*point));
}
double d_function(double point)
{
return(2*point+2*point*exp(-point)-2*exp(-point)-2*exp(-2*point));}
int main()
{
double beginner,error1,error2;
int max_times=0;
beginner=error1=error2=0;
scanf(“%lf %lf %lf %d”,&beginner,&error1,&error2,&max_times);int current_times=0;
while(current_times<=max_times)
{
if(fabs(function(beginner)) { printf(“%lfn”,beginner); return 0; } if(fabs(d_function(beginner)) { printf(“failuren”); return 0; } beginner=beginner-function(beginner)/d_function(beginner);if(fabs(function(beginner)/d_function(beginner)) printf(“%lfn”,beginner); return 0; } current_times++; } printf(“failuren”); return 0; } 實(shí)驗(yàn)八 折半查找 一、實(shí)驗(yàn)?zāi)康?、熟悉visual C++上機(jī)環(huán)境,進(jìn)一步掌握C語(yǔ)言的結(jié)構(gòu)特點(diǎn)。 2、進(jìn)一步掌握?qǐng)D的基本概念及其含義。 3、掌握查找的結(jié)構(gòu)特征,以及各種存儲(chǔ)結(jié)構(gòu)的特點(diǎn)及使用范圍。 4、掌握查找的基本運(yùn)算及其實(shí)現(xiàn)。 二、實(shí)驗(yàn)內(nèi)容(參照課本上的第220頁(yè)) 設(shè)計(jì)一個(gè)算法,實(shí)現(xiàn)折半查找算法。 三、實(shí)驗(yàn)要求 參照課本220頁(yè)算法9.2 四、實(shí)驗(yàn)報(bào)告要求(參照《數(shù)據(jù)結(jié)構(gòu)題集》第83頁(yè)實(shí)驗(yàn)報(bào)告模板) 實(shí)驗(yàn)報(bào)告必須有以下內(nèi)容:實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)內(nèi)容、實(shí)驗(yàn)要求、源程序、測(cè)試結(jié)果(打印界面的形式表示)。第五篇:上機(jī)實(shí)驗(yàn)八