持续更新,敬请关注!
题目描述
定义一个StudentList类用来存储Student对象
属性有
1)Student[] list; //list存储学生对象
2)int total; //学生总人数
方法至少有:
1)StudentList(int length) //length是数组长度
2)boolean add(Student stu) //增加stu到数组中,成功,返回true,否则false
3)boolean remove(String number) //删除学号为number的学生,删除成功,返回true,否则false
4)boolean updateItem(String number , int math , int english , int science)//更新学生成绩,成功,返回true,否则false
5)boolean isEmpty() //判断数组是否为空,若是,返回true,否则false
6)int getTotal() 返回学生总人数
7)Student getItem(String number) //返回学号为number的学生,若该生不存在,返回null。
编写StudentList类,并且编写一个StudentListTest类,对StudentList类进行测试。
StudentListTest类功能有:
功能1:添加学生信息
执行1时,输入学号,姓名,三门科目成绩;如果添加学生成功则输出“Add success”,如果学生已存在则输出“Students already exist”
功能2:删除学生信息
执行2时,输入学号信息;如果学生不存在,输出“Students do not exist”,如果存在,则输出“Delete success”
功能3:更改学生成绩信息
执行3时,输入学号信息;如果学生不存在,输出“Students do not exist”,如果存在,输出“Update success”
功能4:显示学生平均分成绩
执行4时,输入学号信息;如果学生不存在,输出“Students do not exist”,如果存在,则输出学生信息,如下格式:
Student ID:2019989890
Name:Jerry
Average Score:89.3
其中平均分为三门科目相加除以3,保留一位小数,每行之间换行。
功能5:判断是否为空。如果为空输出"List is empty",否则输出"List is not empty"。
功能6:输出学生总人数。
输入
第一行为一个整数n(0<n<130),后边共n行,每一行表示执行一种功能。其中1,2,3,4,5,6分别对应执行上面6种功能,具体格式见输入样例。
测试用例保证:学号和名字均为长度不超过10的字符串,各门课成绩为0到100之间的整数。
要注意的是当添加学生或更新学生信息时,无论是否成功,输入格式是固定的,程序要读全所有输入,否则会出问题。
样例输入:
10
1 201817123 Tom 89 80 76
1 2019989890 Jerry 78 99 67
4 201817123
2 201817123
4 201817123
4 2019989890
3 2019989890 79 90 99
4 2019989890
5
6
输出
样例输出:
Add success
Add success
Student ID:201817123
Name:Tom
Average Score:81.7
Delete success
Students do not exist
Student ID:2019989890
Name:Jerry
Average Score:81.3
Update success
Student ID:2019989890
Name:Jerry
Average Score:89.3
List is not empty
1
代码
package student.list;
import java.util.Scanner;
import java.text.DecimalFormat;
class Student{
String StudentName,StudentNumber;
int score1,score2,score3;
double average;
Student(String StudentNumber,String StudentName,int score1,int score2,int score3)
{
this.StudentNumber=StudentNumber;
this.StudentName=StudentName;
this.score1=score1;
this.score2=score2;
this.score3=score3;
average=(score1+score2+score3)/3.0;
}
public void print() {
System.out.println("Student ID:"+this.StudentNumber+'\n'+"Name:"+this.StudentName+'\n'+"Average Score:"+this.average);
}
public String toString()
{
DecimalFormat df=new DecimalFormat("#.0");
return ("Student ID:"+this.StudentNumber+"\n"+"Name:"+this.StudentName+"\n"+"Average Score:"+df.format(average));
}
}
class StudentList {
int total;
Student[] list ;
StudentList(int length){
list= new Student[length];
}
boolean add(Student stu) {
for(int i=0;i<total;i++) {
if(stu.StudentNumber.equals(list[i].StudentNumber))
return false;
}
list[total]=new Student(stu.StudentNumber,stu.StudentName,stu.score1,stu.score2,stu.score3);
total++;
return true;
}
boolean remove(String number) {
if(!isEmpty())
{
for(int i = 0;i < total;i++)
{
if(list[i].StudentNumber.equals(number))
{
for(int j = i;j < total;j++)
{
list[j] = list[j + 1];
}
total--;
return true;
}
}
}
return false;
}
boolean updateItem(String number,int math,int english,int science) {
if(list.length!=0) {
for(int i=0;i<total;i++) {
if(list[i].StudentNumber.equals(number)){
list[i].average=(math+english+science)/3.0;
list[i].score1=math;
list[i].score2=english;
list[i].score3=science;
return true;
}
}
}
return false;
}
boolean isEmpty() {
if(total==0)
{
return true;
}
else
{
return false;
}
}
int getTotal() {
System.out.println(total);
return total;
}
Student getItem(String num)
{
if(!isEmpty())
{
for(int i = 0;i < total ;i++)
{
if(list[i].StudentNumber.equals(num))
{
return list[i];
}
}
}
return null;
}
void display(int i) {
System.out.println("Student ID:"+list[i].StudentNumber+'\n'+"Name:"+list[i].StudentName+'\n'+"Average Score:"+list[i].average);
}
}
public class StudentListTest{
public static void main(String args[]) {
StudentList list=new StudentList(131);
Scanner in = new Scanner(System.in);
int n=in.nextInt();
String temp=in.nextLine();
String arr[]=new String[n];
String [][] str=new String[n][6] ;
for(int i=0;i<n;i++) {
arr[i]=in.nextLine();
str[i]= arr[i].split(" ");
}
for(int i=0;i<n;i++) {
int number = Integer.parseInt(str[i][0]);
if(number==1) {
String StudentNumber = str[i][1];
String StudentName = str[i][2];
int markForMath = Integer.parseInt(str[i][3],10);
int markForEnglish = Integer.parseInt(str[i][4],10);
int markForScience = Integer.parseInt(str[i][5],10);
Student stu = new Student(StudentNumber,StudentName,markForMath,markForEnglish,markForScience);
if(list.add(stu))
{
System.out.println("Add success");
}
else System.out.println("Students already exist");
}
if(number == 2){
if(list.remove(str[i][1]))
System.out.println("Delete success");
else
System.out.println("Students do not exist");
}
if(number==3) {
int markForMath = Integer.parseInt(str[i][2]);
int markForEnglish = Integer.parseInt(str[i][3]);
int markForScience = Integer.parseInt(str[i][4]);
if(list.updateItem(str[i][1],markForMath,markForEnglish,markForScience))
System.out.println("Update success");
else
System.out.println("Students do not exist");
}
if(number==4) {
if(list.getItem(str[i][1])!=null)
System.out.println(list.getItem(str[i][1]).toString());
else
System.out.println("Students do not exist");
}
if(number==5) {
if(list.isEmpty()==true)
System.out.println("List is empty");
else
System.out.println("List is not empty");
}
if(number==6) {
list.getTotal();
}
}
in.close();
}
}
通过OJ需要删去第一行,并且将唯一公有类名改为Main