BUPT_HUSTOJ_1046

持续更新,敬请关注!

问题 A: 学生列表类

题目描述

定义一个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

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
实验1 类的定义、对象数组的使用 1. 定义一个学生类(Student), 属性有 1)非静态属性String studentNumber 2)非静态属性String studentName 3)非静态属性int markForMaths 4)非静态属性int markForEnglish 5)非静态属性int markForScience 方法有: 1)构造方法Student(String number, String name) 2)构造方法Student() 3)String getNumber() 4)String getName() 5)void enterMarks(int markForMaths, int markForEnglish, int markForScience) 6)int getMathsMark() 7)int getEnglishMark() 8)int getScienceMark() 9)double calculateAverage() 10)String toString() 返回学生信息,包括学号、姓名、数学成绩、英语成绩、科学成绩、平均成绩。 注意:为了保证calculateAverage返回double类型,需要把三个分数的和除以3.0,而不是3. 另外,分数的初始值是什么?如果每个分数初始值为0,会造成混淆,分数为0表示还没有输入分数,还是分数确实为0?有更好的初始值吗? 编写Student类,并且编写一个StudentTest类,对Student类进行测试。 StudentTest类运行效果如下: 请输入学生学号:2011211301 请输入学生姓名:王晓 请输入学生三门课成绩(数学,英语,科学):88,79,90 学生信息如下: 学号:2011211301 姓名:王晓 数学成绩:88 英语成绩:79 科学成绩:90 平均成绩:85.66666666666667 2.定义一个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(int no) //删除第no个数组元素,删除成功,返回true,否则false 4)boolean remove(String number) //删除学号为number的学生,删除成功,返回true,否则false 5)boolean isEmpty() //判断数组是否为空,若是,返回true,否则false 6)Student getItem(int no) //返回第no个学生 7)Student getItem(Student number) //返回学号为number的学生,若该生不存在,返回null。 8) int getTotal() 返回学生总人数 编写StudentList类,并且编写一个StudentListTest类,对StudentList类进行测试。 StudentListTest类运行效果: 菜单如下,请输入 1~8代表您要执行的操作: 1. 增加1个学生 2. 根据学号删除学生 3. 根据位置删除学生 4. 判断是否为空 5.根据位置返回学生 6.根据学号返回学生 7. 输出全部学生信息 8.退出程序 请输入您的操作:1 请输入学生信息: 学号:2011211301 姓名:王晓 数学成绩:88 英语成绩:79 科学成绩:90 ---目前有1个学生,信息为---: 学号:2011211301 姓名:王晓 数学成绩:88 英语成绩:79 科学成绩:90 平均成绩:85.66666666666667 请输入您的操作:1 学号:2011211311 姓名:李辉 数学成绩:80 英语成绩:79 科学成绩:93 ---目前有2个学生,信息为---: 学号:2011211301 姓名:王晓 数学成绩:88 英语成绩:79 科学成绩:90 平均成绩:85.66666666666667 姓名:李辉 数学成绩:80 英语成绩:79 科学成绩:93 平均成绩:84.0 请输入您的操作:5 请输入学生位置:10 对不起,没有对应的学生 请输入您的操作:5 请输入学生位置:2 学生信息如下: 姓名:李辉 数学成绩:80 英语成绩:79 科学成绩:93 平均成绩:84.0 请输入您的操作:3 请输入要删除第几个学生:2 删除成功 ---目前有1个学生,信息为:--- 学号:2011211301 姓名:王晓 数学成绩:88 英语成绩:79 科学成绩:90 平均成绩:85.66666666666667 ......//后面的玉运行效果略 作业命名: _学号(8位)_姓名_第几次作业(1位)_类名.java eg: _09211195_王晓_1_Student.java //定义Student类 _09211195_王晓_1_StudentList.java //定义StudentList类 为便于作业批改和查找,上传作业的时候,传.java文件,不要上传压缩包,一次作业可以有多个.java文件 为便于作业批改,要求源文件中的类名也需要和java文件名一致。如: public class _09211195_王晓_1_Student{ //略 }
实验1 类的定义、对象数组的使用 1. 定义一个学生类(Student), 属性有 1)非静态属性String studentNumber 2)非静态属性String studentName 3)非静态属性int markForMaths 4)非静态属性int markForEnglish 5)非静态属性int markForScience 方法有: 1)构造方法Student(String number, String name) 2)构造方法Student() 3)String getNumber() 4)String getName() 5)void enterMarks(int markForMaths, int markForEnglish, int markForScience) 6)int getMathsMark() 7)int getEnglishMark() 8)int getScienceMark() 9)double calculateAverage() 10)String toString() 返回学生信息,包括学号、姓名、数学成绩、英语成绩、科学成绩、平均成绩。 注意:为了保证calculateAverage返回double类型,需要把三个分数的和除以3.0,而不是3. 另外,分数的初始值是什么?如果每个分数初始值为0,会造成混淆,分数为0表示还没有输入分数,还是分数确实为0?有更好的初始值吗? 编写Student类,并且编写一个StudentTest类,对Student类进行测试。 StudentTest类运行效果如下: 请输入学生学号:2011211301 请输入学生姓名:王晓 请输入学生三门课成绩(数学,英语,科学):88,79,90 学生信息如下: 学号:2011211301 姓名:王晓 数学成绩:88 英语成绩:79 科学成绩:90 平均成绩:85.66666666666667 2.定义一个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(int no) //删除第no个数组元素,删除成功,返回true,否则false 4)boolean remove(Student number) //删除学号为number的学生,删除成功,返回true,否则false 5)boolean isEmpty() //判断数组是否为空,若是,返回true,否则false 6)Student getItem(int no) //返回第no个学生 7)Student getItem(Student number) //返回学号为number的学生,若该生不存在,返回null。 8) int getTotal() 返回学生总人数 编写StudentList类,并且编写一个StudentListTest类,对StudentList类进行测试。 StudentListTest类运行效果: 菜单如下,请输入 1~8代表您要执行的操作: 1. 增加1个学生 2. 根据学号删除学生 3. 根据位置删除学生 4. 判断是否为空 5.根据位置返回学生 6.根据学号返回学生 7. 输出全部学生信息 8.退出程序 请输入您的操作:1 请输入学生信息: 学号:2011211301 姓名:王晓 数学成绩:88 英语成绩:79 科学成绩:90 ---目前有1个学生,信息为---: 学号:2011211301 姓名:王晓 数学成绩:88 英语成绩:79 科学成绩:90 平均成绩:85.66666666666667 请输入您的操作:1 学号:2011211311 姓名:李辉 数学成绩:80 英语成绩:79 科学成绩:93 ---目前有2个学生,信息为---: 学号:2011211301 姓名:王晓 数学成绩:88 英语成绩:79 科学成绩:90 平均成绩:85.66666666666667 姓名:李辉 数学成绩:80 英语成绩:79 科学成绩:93 平均成绩:84.0 请输入您的操作:5 请输入学生位置:10 对不起,没有对应的学生 请输入您的操作:5 请输入学生位置:2 学生信息如下: 姓名:李辉 数学成绩:80 英语成绩:79 科学成绩:93 平均成绩:84.0 请输入您的操作:3 请输入要删除第几个学生:2 删除成功 ---目前有1个学生,信息为:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值