標籤:
北京電子科技學院(BESTI)
實 驗 報 告
課程:Java程式設計實驗 班級:1353 姓名:符運錦 學號:20135323
成績: 指導教師:婁嘉鵬 實驗日期:2015.4.17
實驗密級:無 預習程度: 實驗時間:15:30~18:00
儀器組次: 23 必修/選修: 選修 實驗序號:1
實驗名稱:Java開發環境的熟悉
實驗目的與要求:
1.使用JDK編譯、運行簡單的Java程式
2.使用Eclipse 編輯、編譯、運行、調試Java程式
3.實現學產生績管理功能,並進行測試;
實驗儀器:
名稱 |
型號 |
數量 |
PC |
SONY |
1 |
虛擬機器 |
實驗樓 |
1 |
實驗知識點
1. JVM、JRE、JDK的安裝位置與區別;
2. 命令列運行javac,java;javac -cp; java -cp;
3. PATH,CLASSPATH,SOURCEPATH的設定方法與應用;
4. 包管理:package;import;javac -d ;
5. Eclipse(Netbeans)管理Java項目,調試:斷點、逐步執行等;
6. Java基礎文法:類型與類型轉換;變數;運算子;流程式控制制等;
7. JDK協助文檔的使用;
一、實驗內容:
(一)命令列下Java程式開發
代碼:
package fyj;
import java.util.Scanner;
public class Hello
{
public static void main(String[] args)
{
System.out.println("Input your first name, please:");
Scanner s = newScanner(System.in);
String name = s.next();
System.out.println("Hello "+ name +" !");
}
}
實驗:
按照虛擬機器中的實驗操作,得到以下結果:
注意事項:
1.注意代碼的第一行,這會影響到我們使用javac編譯代碼的方式。
2.注意代碼第二行,我們使用到Java類庫中的類時,要用import匯入相關的類(你可以暫時理解為C語言中include的功能),匯入路徑可以查看JDK協助文檔。
3.輸入javac -d . Hello.java命令編譯代碼,輸入java yjx.Hello命令運行程式。
4.注意:代碼中有package時,使用javac編譯代碼時一定要加-d參數,運行代碼時一定要加包名首碼。
(二)Eclipse下Java程式開發、調試
代碼:
package fyj;
public class Hellofyj {
public static void main(String[] args) {
int i = 5;
int j = 6;
int sum = add(i,j);
System.out.println(sum);
sum = 0;
for(i=0;i<100;i++)
sum+=i;
System.out.println(sum);
}
public static int add(int augend, int addend){
int sum = augend + addend;
return sum;
}
}
實驗:
運行,調試,並設定斷點後:
(三)實現學產生績管理功能,並進行測試
代碼:
import java.util.ArrayList;
import java.util.Scanner;
public class student2
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("請輸入學生人數:");
int number = 0;
number = input.nextInt();
System.out.println("請輸入課程的數目:");
int courses = 0;
courses = input.nextInt();
String[] coursesname = new String[courses];
for(int i=0;i<coursesname.length;i++)
{
System.out.println("請輸入第"+(i+1)+"門課的名字:");
coursesname[i]=input.next();
}
ArrayList<student> name=new ArrayList<student>();
int [][] score = new int[number][courses];
for(int i=0;i<number;i++)
{
student forNew=new student();
name.add(forNew);
System.out.println("請輸入第"+(i+1)+"個學生的名字:");
name.get(i).name = input.next();
System.out.println("請輸入第"+(i+1)+"個學生的學號:");
name.get(i).number = input.next();
for (int j=0;j<coursesname.length;j++ )
{
System.out.println("請輸入"+name.get(i).name+"的"+coursesname[j]+"的成績");
score[i][j] = input.nextInt();
}
}
int sum = 0;
int[] scoreSum = new int[number];
int[] ci = new int[number];
for (int i=0;i<number;i++)
{
for (int j=0;j<courses;j++)
{
sum += score[i][j];
}
scoreSum[i] = sum;
ci[i] = sum;
sum = 0;
}
for (int i = 0;i<number-1;i++)
{
for (int j=i+1;j<number;j++)
{
if (ci[i]<ci[j])
{
int temp = ci[j];
ci[j] = ci[i];
ci[i] = temp;
}
}
}
System.out.print("學生\t");
System.out.print("學號\t");
for (int i=0;i<courses;i++)
{
System.out.print(coursesname[i]+"\t");
}
System.out.print("總分\t");
System.out.print("平均分\t");
System.out.print("熱門排行榜");
System.out.print("\n");
int[] temp = new int[number];
for (int i=0;i<temp.length;i++)
{
for (int j=0;j<scoreSum.length;j++)
{
if (ci[i] == scoreSum[j])
{
temp[i] = j;
}
}
}
for (int i=0;i<number;i++)
{
System.out.print(name.get(temp[i]).name+"\t");
System.out.print(name.get(temp[i]).number+"\t");
for (int j=0;j<courses;j++)
{
System.out.print(score[temp[i]][j]+"\t");
}
System.out.print(scoreSum[temp[i]]+"\t");
System.out.print(scoreSum[temp[i]]/courses+"\t");
System.out.print("NO."+(i+1));
System.out.print("\n");
}
}
}
class student{
public String name;
public String number;
}
:
(四)實驗總結:
本次實驗是本學期的第一次實驗,對於實驗的一切內容都令我感受到了JAVA這門課程並不好學,但是我對自己充滿信心。
對於實驗一,目的是讓我們熟悉虛擬機器的運用並熟悉SCANNER。在這個實驗中,按照操作執行,並沒有遇到特別多的問題
對於實驗二,插入斷點,這個實驗讓我瞭解到了如果代碼出現錯誤該要如何進行找出。斷點可以有效地分離出代碼,快速找到錯誤之處。
對於實驗三,1.我的學號抽到的是學生管理系統,對於我而言真的很難,因為自己對於JAVA的編程沒有完全上手,學生管理系統可以做的內容又太多。最後,結合自身的一些水平,我做了一個涵蓋學號、姓名、科目、 總分、平均分、排名的簡單的學產生績管理系統。
2.在實驗一當中,我學會了調用Scanner,這就可以解決輸入的問題。但是輸入完了以後,問題就出來了,如何處理這些輸入的資料並實現它的功能。
3.對於學生的屬性,可以涵蓋成三類,分別是學號、姓名、各科成績。到這時,我就想到需要調用一個二維數組。但是二維數組只能調用兩類資料,自己又不會使用多維陣列,如何將剩餘的一個類與之進行 同步呢?這成為我一個很難解決的問題。
4.對於如何解決多出一個類,我上網尋找了很多資料,並且查閱了很多跟學生管理系統有關的代碼,發現他們對於處理這個問題時會用一個動態數組ArrayList。並且在代碼中,我加入了
class student{
public String name;
public String number;
} 這就相當於C語言當中的結構體,然後用ArrayList<student> name=new ArrayList<student>();相當於student[],為student分配一個容量,可以儲存name和number。這樣學號 和姓名就捆綁在了一起。
5.在接下來的代碼中,用arraylist中的add和get功能。add功能負責將姓名和學號插入動態數組中,get負責將姓名和學號從動態數組中讀取輸出。
6.其餘的例如總分,平均分和排名跟C語言類似,在此不贅述。
總而言之,這次實驗自己準備了一個周,查閱了很多的相關資料,真的學到了很多,也希望自己下次能夠再更積極一點,學習到更多有關JAVA的知識。
(五)PSP時間統計
步驟 |
耗時百分比 |
需求分析 |
5% |
設計 |
8% |
代碼實現 |
70% |
測試 |
10% |
分析總結 |
7% |
Java實驗報告一