20155223第一次实验报告
20155223 第一次Java实验报告
实验题目:学生成绩管理系统
使用Java编程语言建立一个学生成绩管理系统,要求系统具备添加学生信息、删除指定学生信息、成绩排序的功能。
实验设计
我之前用C语言编程过这种程序,知道编辑这种程序的难度在哪里。
-
C语言与Java不同,C语言面向过程,Java面向对象。所以从一开始,我就不用事先想好该怎么将后来设计的子函数加入到已有程序框架下,基本就是想到怎么加方法就怎么加方法。
-
主程序为test.java,其主体结构只有一个无条件执行的for循环和一个switch结构,只负责根据不同的输入值调用副程序的相应功能。
-
副程序包含了所有题目指定的功能,我甚至还加了个计算班级总成绩的方法。
-
副程序包含了一个数据结构,储存学生姓名、学生学号、学生的Java成绩和Network成绩。
-
学生添加方法:
-
搜索学生方法:
-
求均值方法:
-
删除学生方法:
-
按成绩排序的方法(冒泡排序):
-
实验遇到的难题及解决方法
我遇到的难题是在副程序的冒泡排序上。最初的版本使用的是由C语言改编而来的冒泡排序方法。编译时没有报错,但是当使用上该功能时,系统无法运行。
for (int i=0;i<n.length;i++){
for (int j=0;j<n.length;j++){
if (n[i].java<n[j].java){
temp=n[j].java;
n[j].java=n[i].java;
n[i].java=temp;
}
}
}
后来查电脑后将代码改成Java风格的,但是还是运行不了该功能。
……
for (int j=0;j<n.length-1-i;j++){
if (n[j].java<n[j+1].java){
temp=n[j].java;
n[j].java=n[j+1].java;
n[j+1].java=temp;
}
}
然而并没有什么卵用。不过系统提示是NullPointerExopetion,是说系统调用了一个没有任何东西的部分。
然后我又添加了一段if语句,系统就可以使用了。
if (n[j].java!=null && n[j+1]!=null)
感想
好好玩的一个过程,本来我还以为这个程序会耗费我好多时间的,但是我就是每天用半个小时解决了。