软件工程作业:设计一个学生类,里面有学生的三相成绩:计算机成绩数学成绩英语成绩

Posted @阿证1024

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程作业:设计一个学生类,里面有学生的三相成绩:计算机成绩数学成绩英语成绩相关的知识,希望对你有一定的参考价值。

详细要求:

在这里插入图片描述

实现代码(Java):

package 包装类;

public class Student {
	
	/**
	 * 姓名
	 */
	private String name;
	
	/**
	 * 年龄
	 */
	private int age;
	
	/**
	 * 计算机成绩
	 */
	private int computer;
	
	/**
	 * 英语成绩
	 */
	private int english;
	
	/**
	 * 数学成绩
	 */
	private int math;
	
	/**
	 * 科目数
	 */
	private int subNumber = 3;
	
	// 构造器
	public Student() {
		
	}
	
	public Student(String name, int age, int computer, int english, int math) {
		this.name = name;
		this.age = age;
		this.computer = computer;
		this.english = english;
		this.math = math;
	}
	
	/*
	 * 求总分
	 */
	public int getTotalScore() {
		return computer + english + math;
	}
	
	/*
	 * 求最高分
	 */
	public int getHighestScore() {
		return ((computer > english) ? computer : english) > math ? ((computer > english) ? computer : english) : math;
	}
	
	/*
	 * 求最低分
	 */
	public int getLowestScore() {
		return ((computer < english) ? computer : english) < math ? ((computer < english) ? computer : english) : math;
	}
	
	/*
	 * 求平均分
	 */
	public double getAverage() {
		return this.getTotalScore() / this.subNumber;
	}
	
	/*
	 * 我们规定所有成绩的范围在0-100之间
	 */
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		if(age <= 0 || age >= 200) {
			System.out.println("年龄范围是1-200");
		} else {
			this.age = age;
		}
	}

	public int getComputer() {
		return computer;
	}

	public void setComputer(int computer) {
		if(computer < 0 || computer > 100) {
			System.out.println("成绩范围是0-100");
		} else {
			this.computer = computer;
		}
	}

	public int getEnglish() {
		return english;
	}

	public void setEnglish(int english) {
		if(english < 0 || english > 100) {
			System.out.println("成绩范围是0-100");
		} else {
			this.english = english;
		}
	}

	public int getMath() {
		return math;
	}

	public void setMath(int math) {
		if(math < 0 || math > 100) {
			System.out.println("成绩范围是0-100");
		} else {
			this.math = math;
		}
	}

	public int getSubNumber() {
		return subNumber;
	}

	public void setSubNumber(int subNumber) {
		this.subNumber = subNumber;
	}
	
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + ", computer=" + computer + ", english=" + english + ", math=" + math + "]";
	}
}

设计思路:

(1)Student类是一个实体类,设计要求里面类具有name、age、computer、english、math等属性,并且属性都要私有化,所以在此将属性的数据类型设置为:nameString、ageint、Computerint、englishint、mathint;

(2)既然属性的访问权限都是私有的,并且设计要求要求所有属性必须通过getter和setter访问以体现面向对象的三大特性之一—“封装性”,所以我们在此基础上可以对数据格式进行规范:age的大小范围为1—200、computer English Math等学科成绩的大小范围为0—100;

(3)对于构造方法在此我提供了两个构造方法,一个是空参构造、另一个是包含参数(name,age,computer,English,math)的构造方法。空参主要用于有些情况下我们还不知道学生信息但是需要实例化一个Student类对象或者序列化时,参数构造器用于实例化一个Student类对象时并给相关属性进行赋值。

(4)Student类应该具有求总分、最高分、最低分、平均分的方法,这些方法应该都是public的,并且设计要求所有的信息不要在类中直接输出,而是交给调用处输出,所以我们计算出总分、最高分、最低分、平均分不能直接打印而是应该返回给调用处。既然涉及到返回值,那么四个函数的返回值为:getTotalScore()int、getHighestScore()int、getLowestScore()int、getAverage()double;前三个函数返回int是由于我们的各科成绩都设置为int数据类型、至于求平均分函数设置为double是因为平均分要求的精度更高,方便我们之后的统计、比较操作。

(5) 重写toString()方法返回学生的完整信息。

(6) 在设计要求的基础上增加了学科数(subNumber)属性并赋予默认值3(因为当前只有三个学科成绩),这里是考虑到将来类的扩展。举例:假如说将来我们的学科成绩增加了一项或者两项甚至多项,而且类所包含的方法里面不只求平均分会用到总科目数这个值,我们只需要更改subNumber的默认值即可。如果学生科目已定,我们可以将属性设置为静态常量,这个根据实际应用更改即可。

以上是关于软件工程作业:设计一个学生类,里面有学生的三相成绩:计算机成绩数学成绩英语成绩的主要内容,如果未能解决你的问题,请参考以下文章

设计表:多张表存储学生成绩及各种信息

C语言(学生成绩管理系统)

JAVA:编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。

C++设计一个学生信息管理系统

c语言大作业 学生成绩管理系统

《团队-团队编程项目作业名称-设计文档》