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% |