Java类和对象

一、实验目的

1、熟练掌握类、对象的的概念以及对事物的抽象。

2、熟练掌握成员、方法的概念以及构造方法的概念。

3、熟练掌握封装性,多态性的概念

4、理解面向对象的程序设计方法。

二、实验内容与要求

Java定义一个类实现银行帐户

1定义一个类实现银行帐户bankaccount的概念,包括的变量有accountID(帐号)和leftmoney (存款余额),包括的方法有savemoney(double money) (存款)、getmoney (double money) (取款)、getleftmoney ()(查询余额)和getAccountID()(显示帐号)。定义主类,创建帐户类的对象,并完成相应操作。

主类中的主方法主要代码有:

bankaccount ba=new bankaccount(888123,1000);

ba.savemoney(21000);

System.out.println("存入21000元后余额为:"+ba.getleftmoney());

ba.getmoney(11500);

System.out.println("11500元后余额为:"+ba.getleftmoney());

package 实践;

public class shijian31 {
	@SuppressWarnings("unused")
	private double accountID; 
	@SuppressWarnings("unused")
	private double leftmoney;
	public shijian31(double i, double j) {
		accountID=i;
		leftmoney=j;
	}
	public void savemoney(double money) {
		leftmoney=leftmoney+money;
	}
    public void getmoney (double money)  {
    	leftmoney=leftmoney-money;
	}
    public double getleftmoney () {
    	return leftmoney;
	}
    public double getAccountID() {
    	return accountID;
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		shijian31 ba=new shijian31(888123,1000);
		ba.savemoney(21000);
		System.out.println("存入21000元后余额为:"+ba.getleftmoney());
		ba.getmoney(11500);
		System.out.println("11500元后余额为:"+ba.getleftmoney());
	}

}

Java定义多边形类

2 实现以下类:

1)定义一个Point类,包括:

两个成员变量x, y,用于表示平面点坐标;

两个构造方法,一个带参数,一个不带参数;

一个计算平面两个点之间长度的方法double len(Point p)

2)定义Triangle类,包括:

三个Point类型的成员变量,用于表示三角形三个顶点;

一个成员变量表示周长double perimeter,一个成员变量表示面积double area;

两个构造方法,一个带参数,一个不带参数;

一个方法void setTri(Point p1,Point p2,Point p3),实现对三个点进行赋值;

一个求三角形周长的方法double getPerimeter();

一个求三角形面积的方法double geArea();

3)定义一个测试类Test,完成以下功能:

构建一个三角形对象;

输出每条边的长度;

输出三角形的周长;

输出三角形的面积;

//point类

package 实践;

public class Point {
	double x;
	double y;
	public Point(){
		x=0;
		y=0;
	}
    public Point(double x1,double y1){
		x=x1;
		y=y1;
	}
    public double len(Point p) {
    	double length = 0;
    	length=Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
		return length;
    }
}
//Triangle类 
package 实践;

public class Triangle {
	Point a;
	Point b;
	Point c;
	double perimeter;
	double area;
    public Triangle(){
	}
    public Triangle(Point a1,Point b1,Point c1){
		a=a1;
		b=b1;
		c=c1;
	}
    public void setTri(Point p1,Point p2,Point p3) {
    	a=p1;
    	b=p2;
        c=p3;
    }
    public double getPerimeter() {
    	perimeter=a.len(b)+b.len(c)+c.len(a);
		return perimeter;
    }
    public double getArea() {
		double p;
		p=perimeter/2;
		area=Math.sqrt((p-a.len(b))+(p-b.len(c))+(p-c.len(a)));
    	return area;
    }
  
}
//Test类
package 实践;

public class Test {
    
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
	    Point a=new Point(0,0);
	    Point b=new Point(0,3);
	    Point c=new Point(4,0);
		Triangle tri1=new Triangle(a,b,c);
		//tri1.setTri(a, b, c);
		System.out.println("ab的长="+a.len(b));
		System.out.println("bc的长="+b.len(c));
		System.out.println("ca的长="+c.len(a));
		System.out.println("周长="+tri1.getPerimeter());
		System.out.println("面积="+tri1.getArea());
	}

}

Java操作学生类Student

3 实现以下类:

1) 定义一个学生类Student,包括:

成员变量:no:学号

name:姓名

sex:性别

math:数学成绩

java:java成绩

english:英语成绩

mean:平均分数

成员方法:无参数构造方法 Student();

​ 有参数构造方法Student(String no,String name,boolean sex,float math,float java,float english);

​ 设置除mean外的其他成员变量的方法:setNo(String no);setSex(String sex);setMath(float math);setJave(float java);setEnglish(float english)

​ 获取成员变量的方法:getNo(); getSex(); getMath(); getJave(); getEnglish(); getMean();

2)定义一个StuClass类,包括:

成员变量: Student[] stu: 学生数组;

​ int n:学生数组大小;

​ int num: 实际学生人数;

​ javaMean:Java平均分;

​ englishMean:英语平均分;

​ mathMean:数学平均分;

成员方法:构造方法:无参数构造方法:StuClass ():构造可以存放10个学生的对象;有参的构造方法:StuClass(int n):按照指定大小构造对照;

calMean();计算三科的平均分;

​ getJaveMean(),getEnglishMean (),getMathMean ():获取平均分

​ sortBy(int x): x1按java排序,x2按英语排序,x==3按数学排序,升序;

​ setStudentAt(int index, Student stu):设置位置index的学生的值;

​ Student getStudentAt(int index)获取位置index的学生;

​ int searchMaxJava():搜索java分数最高的学生,返回学生的序号;

​ addStudent(Student stu):在数组末尾添加一个学生对象

3)定义一个测试类Test,完成以下功能

完成构建一个包括8个学生对象的StuClass对象;

计算班级平均分,输出平均分;

分别按三个成绩排序,并按序输出所有学生;

输出java成绩最好的学生;

//Student类
package 实践;

public class Student {
	String no;
	String name;
	boolean sex;
	float math;
	float java;
	float english;
	float mean;
	public Student() {
		
	}
    public Student(String no,String name,boolean sex,float math,float java,float english) {
		this.no=no;
		this.name=name;
		this.sex=sex;
		this.math=math;
		this.java=java;
		this.english=english;
		this.mean=(math+java+english)/3;
	}
    public void setNo(String no) {
		this.no=no;
    }
    public void setSex(boolean sex) {
		this.sex=sex;
    }
    public void setMath(float math){
    	this.math=math;
    }
    public void setJave(float java){
    	this.java=java;
    	
    }
    public void setEnglish(float english){
    	this.english=english;
    	
    }
    public String getNo(){
    	return this.no;
    }
    public boolean getSex(){
    	return this.sex;
    }
    public float getMath(){
    	return this.math;
    }
    public float getJave() {
    	return this.java;
    }
    public float getEnglish(){
    	return this.english;
    }
    public float getMean() {
    	return this.mean;
    }
}
//StuClass类
package 实践;

public class StuClass {
    int n=4;
    Student stu[] =new Student[4];
    float javaMean;
    float englishMean;
    float mathMean;
    public StuClass() {
    	n=10;
    }
    public StuClass(int n1) {
    	n=n1;
    }
    public void calMean(){
    	System.out.println("");
    	int i;
    	float sumjava=0;
    	float sumenglish=0;
    	float summath=0;
    	for(i=0;i<n;i++) {
      		sumjava = stu[i].java+sumjava;
    		sumenglish = stu[i].english+sumenglish;
    		summath = stu[i].math+summath;
    	}
    	this.javaMean=sumjava/n;
    	this.englishMean=sumenglish/n;
        this.mathMean=summath/n;
        System.out.println("班级平均分为"+(this.mathMean+this.englishMean+this.javaMean)/3);
    }
   
    public float getJaveMean() { //获取平均分
    	System.out.println("");
    	return this.javaMean;
    }
    public float getEnglishMean () {
    	return this.englishMean;
    }
    public float getMathMean () {
    	return this.mathMean;
    }
    public void sortBy(int x) {// x==1按java排序,x==2按英语排序,x==3按数学排序,升序;
    	if(x!=1&&x!=2&&x!=3) {
    		System.out.println("选择错误  输入 1按java排序   输入 2按英语排序  输入3按数学排序  升序");
    	}
    	switch(x) {
    	case 1:
    		for(int i = 0;i<n-1;i++) {
    			int index=i;
    			for(int j = i+1;j<n;j++) {
    				if(stu[index].java>stu[j].java) {
    					float temp=stu[index].java;
    					stu[index].java=stu[j].java;
    					stu[j].java=temp;
    				}
    			}
    		}
    		
    	    //扩展代码串:输出Java成绩排序
    		
    		System.out.println("按java排序学生的成绩:");
    		for(int i = 0;i<n;i++) {
    			System.out.println("第"+(i+1)+"个学生的成绩   "+"java="+stu[i].java+"  "+"english="+stu[i].english+"  "+"math="+stu[i].math);
    		}
    	    break;
    	case 2:
    		for(int i = 0;i<n-1;i++) {
    			int index=i;
    			for(int j = i+1;j<n;j++) {
    				if(stu[index].english>stu[j].english) {
    					float temp=stu[index].english;
    					stu[index].english=stu[j].english;
    					stu[j].english=temp;
    				}
    			}
    		}
    		
    	    //扩展代码串:输出english成绩排序
    		
    		System.out.println("按english排序学生的成绩:");
    		for(int i = 0;i<n;i++) {
    			System.out.println("第"+(i+1)+"个学生的成绩   "+"english="+stu[i].english+"  "+"java="+stu[i].java+"  "+"math="+stu[i].math);
    		}
    		break;
    	case 3:
    		for(int i = 0;i<n-1;i++) {
    			int index=i;
    			for(int j = i+1;j<n;j++) {
    				if(stu[index].math>stu[j].math) {
    					float temp=stu[index].math;
    					stu[index].math=stu[j].math;
    					stu[j].math=temp;
    				}
    			}
    		}
    		
    	    //扩展代码串:输出math成绩排序
    	
    		System.out.println("按math排序学生的成绩:");
    		for(int i = 0;i<n;i++) {
    			System.out.println("第"+(i+1)+"个学生的成绩   "+"math="+stu[i].math+"  "+"java="+stu[i].java+"  "+"english="+stu[i].english);
    		}
    	break;
    	}
    }
    public void setStudentAt(int index, Student stu) {//设置位置index的学生的值;
    	this.stu[index].java=stu.java;
    	this.stu[index].english=stu.english;
    	this.stu[index].math=stu.math;
    }
    public Student getStudentAt(int index) {//获取位置index的学生;
		return stu[index];
    	
    }
    public int searchMaxJava() {//搜索java分数最高的学生,返回学生的序号;
    	int xuhao=0;
    	for(int i = 0;i<n-1;i++) {
			int index=i;
			
			for(int j = i+1;j<n;j++) {
				if(stu[index].java<=stu[j].java) {
					xuhao =j;
				}
			}
		}
    	return xuhao+1;
    }
    public void addStudent(Student stu) {//在数组末尾添加一个学生对象
    	this.stu[n]=stu;
    }
}
//Test类
package 实践;
import java.util.Scanner;
public class Test3 {
	
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		StuClass a=new StuClass(4);
		a.stu[0]=new Student("1","a",true,80,90,99);
		a.stu[1]=new Student("2","b",false,90,92,93);
		a.stu[2]=new Student("3","c",false,85,95,89);
		a.stu[3]=new Student("4","d",true,70,80,79);
		a.calMean();
		int xuehao;
		System.out.println("Java的平均分为="+a.getJaveMean());
		System.out.println("english的平均分为="+a.getEnglishMean());
		System.out.println("math的平均分为="+a.getMathMean());
		
		Scanner scan=new Scanner(System.in);
		System.out.println("成绩查询选择序号 1 Java 2 English 3 math  ");
		int x=scan.nextInt();
		a.sortBy(x);
		xuehao=a.searchMaxJava();
		System.out.println("java学习最好的学生学号为="+xuehao);
		scan.close();
	}
}
posted @ 2026-01-06 21:53  东血  阅读(1)  评论(0)    收藏  举报

载入天数...载入时分秒...