Java实验报告一

北京电子科技学院(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%

                

posted @ 2015-04-16 22:52  20135323符运锦  阅读(455)  评论(0编辑  收藏  举报