Java面向对象开发作业

目录

1、设计一个包含多个构造方法的类,并分别用这些构造方法实例化对象

2、编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算

Calculate1:

派生类Calculate2:

3、建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能

居民类:

成人继承自居民:

官员则继承自成人:

4、编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出

5.设计一个立方体类Box,它能计算并输出立方体的体积和表面积

6.编写一个程序,设计一个点类Point,实例化两个点之后,能调用其方法求两个点之间的距离

点类Point:

点类Point的测试类:

7、 写一个学生类,包括属性: 学号,班号,姓名,年龄,性别;要求用无参构造,方法获得:学号,班号,姓名,年龄(只能小于100岁,大于1,否则重新输入) ,性别(只能男或者女,否则重新输入),最后在主方法输出你对一个学生对象赋值的信息

8、设计一个BankAccount类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。BankAccount类包括,账号(BankAccountId)、开户日期Date(日期),Money(金额),Rest(余额)。另有一个构造方法和三个成员方法Bankin()(处理存入账),Bankout()处理取出账)和和一个负责生成账号的自动增长的方法

9、编写一个程序,已有若干学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。思路:设计一个学生类Stud,除了包括no(学号)、name(姓名)、和deg(成绩)数据成员外。有两个静态变量sum和num,分别存放总分和人数,另有一个构造方法、一个普通成员方法disp()和一个静态成员方法avg(),它用于计算平均分

10.编写一个程序,统计学生成绩,其功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前70%的学生定为合格(PASS),而后30%的学生定为不合格(FAIL)。思路: 设计一个类student,包含学生的姓名和成绩等数据。设计一个类Compute: sort()、disp(),它们分别用于按成绩排序和输出数据

Compute类:

Student类:

Demo类:


1、设计一个包含多个构造方法的类,并分别用这些构造方法实例化对象

class Figure {
    public String name;
    public int age;
    public String gender;
    Figure(){}
    Figure(String name,int age){
        this.name = name;
        this.age = age;
    }
    Figure(String name,int age ,String gender){
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
}
public class Text01 {
    public static void main(String[] args){
    	Figure one = new Figure("孙悟空",500,"男");//创建对象one
        
        System.out.println("第一个人物是:");
        System.out.println(one.name);//使用对象
        System.out.println(one.age);
        System.out.println(one.gender);
        
        Figure two = new Figure("唐僧",30);//创建对象two
        
        System.out.println("第二个人物是:");
        System.out.println(two.name);//使用对象
        System.out.println(two.age);
    }
}

2、编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算

Calculate1:

public class Calculate1 {
    //加法运算
    public double sum(double sum1,double sum2){
        return sum1+sum2;
    }
    //减法运算
    public double substruction(double sub1,double sub2){
        return sub1-sub2;
    } 
}

 派生类Calculate2:

public class Calculate2 extends Calculate1{
    //因为继承了Calculate1故加法和减法可以用父类的
    //乘法运算
    public double multiply(double mul1,double mul2){
        return mul1*mul2;
    }
    //除法运算
    public double divide(double div1,double div2){
        return div1/div2;
    }
}

3、建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能

居民类:

import java.util.Date;

public class Resident {
	private String idCard;
	private String name;
	private Date birth;

	public String getIdCard() {
		return idCard;
	}

	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}

	public String getName() {
		return name;
	}

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

	public Date getBirth() {
		return birth;
	}

	public void setBirth(Date birth) {
		this.birth = birth;
	}
}

成人继承自居民:

public class Adult extends Resident {
	private String education;
	private String vocation;

	public String getEducation() {
		return education;
	}

	public void setEducation(String education) {
		this.education = education;
	}

	public String getVocation() {
		return vocation;
	}

	public void setVocation(String vocation) {
		this.vocation = vocation;
	}
}

官员则继承自成人:

public class Official extends Adult {
	private String party;
	private String duties;

	public String getParty() {
		return party;
	}

	public void setParty(String party) {
		this.party = party;
	}

	public String getDuties() {
		return duties;
	}

	public void setDuties(String duties) {
		this.duties = duties;
	}
}

4、编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出

import java.util.Arrays;

public class Comment {
	public static void main(String[] args) {

		String[] objs = { "f", "b", "m", "c", "y" };
		int[] obj = { 1, 2, 5, 3, 8 };
		objs = sort(objs);//调用方法排序
		obj = sort(obj);

		//输出已经排序好的字符串
		for (String i : objs) {
			System.out.print(i + " ");
		}
		
		System.out.println();
		
		for(int s : obj) {
			System.out.print(s + " ");
		}
	}

	public static int[] sort(int[] nums) {
		Arrays.sort(nums);
		return nums;
	}

	// 冒泡排序
	public static String[] sort(String[] strs) {
		for (int i = 0; i < strs.length; i++) {
			for (int j = 0; j < strs.length - i - 1; j++) {
				if (strs[j].compareTo(strs[j + 1]) < 1) {
					String temp = strs[j];
					strs[j] = strs[j + 1];
					strs[j + 1] = temp;
				}
			}
		}
		return strs;
	}
}

5.设计一个立方体类Box,它能计算并输出立方体的体积和表面积

import java.util.Scanner;

public class Box {
	double length;
	double width;
	double height;

	// 求立方体体积
	double volume(double length, double width, double height) {
		return length * width * height;
	}

	// 求立方体表面积
	double area(double length, double width, double height) {
		return 2 * (length * width + length * height + width * height);
	}

	public static void main(String[] args) {
		Box box = new Box(); // 实例化一个对象
		System.out.println("请输入该立方体的长、宽、高:");
		Scanner sc = new Scanner(System.in);
		box.length = sc.nextDouble();
		box.width = sc.nextDouble();
		box.height = sc.nextDouble();

		System.out.println("立方体的体积为:" + box.volume(box.length, box.width, box.height)); // 调用方法
		System.out.println("立方体的表面积为:" + box.area(box.length, box.width, box.height));
	}
}

6.编写一个程序,设计一个点类Point,实例化两个点之后,能调用其方法求两个点之间的距离

点类Point:

public class Point {
	private double x ;
	private double y ;
	public Point(double x, double y) {
		this.x = x;
		this.y = y;
	}
	public static void distance(Point p1,Point p2) {
		double sum = Math.sqrt(Math.pow(p1.x-p2.x, 2)+Math.pow(p1.y-p2.y, 2));
		System.out.println(sum);
	}
}

点类Point的测试类:

public class PointDemo {
	public static void main(String[] args) {
		Point.distance(new Point(0,0), new Point(3,4));
	}
}

7、 写一个学生类,包括属性: 学号,班号,姓名,年龄,性别;要求用无参构造,方法获得:学号,班号,姓名,年龄(只能小于100岁,大于1,否则重新输入) ,性别(只能男或者女,否则重新输入),最后在主方法输出你对一个学生对象赋值的信息

public class Student {
	static int studentID;
	static int classID;
	static String name;
	static int age;
	static char sex;

	public Student() {
	}

	public int getStudentID() {
		return studentID;
	}

	public void setStudentID(int studentId) {
		this.studentID = studentId;
	}

	public int getClassID() {
		return classID;
	}

	public void setClassID(int classID) {
		this.classID = classID;
	}

	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 > 1 && age < 100)
			this.age = age;
		else
			throw new RuntimeException("输入年龄:大于1,小于100");
	}

	public char getSex() {
		return sex;
	}

	public void setSex(char sex) {
		if (sex == '男' || sex == '女')
			this.sex = sex;
		else
			throw new RuntimeException("只能男或者女");
	}

	public static void main(String[] args) {
		Student aa = new Student();
		aa.setStudentID(54321);
		aa.setClassID(121);
		aa.setName("风清扬");
		aa.setAge(20);
		aa.setSex('男');

		System.out.println("学号:" + studentID + "\n" + "班号:" + classID);
		System.out.print("姓名:" + name + "\n" + "年龄:" + age + "\n" + "性别:" + sex);
	}

8、设计一个BankAccount类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。BankAccount类包括,账号(BankAccountId)、开户日期Date(日期),Money(金额),Rest(余额)。另有一个构造方法和三个成员方法Bankin()(处理存入账),Bankout()处理取出账)和和一个负责生成账号的自动增长的方法

class BankAccount {
	String Date;
	double Money;
	String BankAccountId;

	public BankAccount() {
		BankAccountId = "";
		Money = 0.0;
	}

	public BankAccount(String ID, String date, double balance) {
		Date = date;
		BankAccountId = ID;
		Money = balance;
	}

	public String getBankAccountId() {
		return BankAccountId;
	}

	public void getBankAccountId(String ID) {
		BankAccountId = ID;
	}

	public double getBalance() {
		return Money;
	}

	public void printAccountMsg() {
		System.out.print("账户名:" + BankAccountId + " 开户日期 " + Date + " 当前余额" + Money + "元\n");
	}

	public void Bankin(double money) {
		System.out.print("此次存入:" + money + "元 ");
		Money += money;
	}

	public void Bankout(double money) {
		System.out.print("此次取出:" + money + "元 ");
		if (money <= Money)
			Money -= money;
		else
			System.out.print("账户余额不足,操作失败!");
	}
}

public class Test {
	public static void main(String[] args) {
		BankAccount user = new BankAccount("user", "2020-03-24", 150000);
		user.printAccountMsg();
		user.Bankin(15000);
		System.out.println();
		user.printAccountMsg();
		user.Bankout(288888);
		System.out.println();
		user.printAccountMsg();
	}
}

9、编写一个程序,已有若干学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。思路:设计一个学生类Stud,除了包括no(学号)、name(姓名)、和deg(成绩)数据成员外。有两个静态变量sum和num,分别存放总分和人数,另有一个构造方法、一个普通成员方法disp()和一个静态成员方法avg(),它用于计算平均分

public class Stud {
	int no;
	String name;
	double deg;
	static double sum = 0;
	static int num = 0;

	public Stud(int no, String name, double deg) {
		this.no = no;
		this.name = name;
		this.deg = deg;
		disp();
		sum += deg;
		num++;
	}

	public void disp() {
		System.out.println("学号:" + this.no + "\t姓名:" + this.name + "\t成绩:" + this.deg);
	}

	public static void avg() {
		System.out.println("平均分:" + sum / num);
	}

	public static void main(String[] args) {
		Stud[] studs = new Stud[5];
		studs[0] = new Stud(2022001, "张三", 88);
		studs[1] = new Stud(2022002, "李四", 77);
		studs[2] = new Stud(2022003, "王五", 68);
		studs[3] = new Stud(2022004, "杨六", 87);
		studs[4] = new Stud(2022005, "刘七", 95);
		Stud.avg();
	}
}

10.编写一个程序,统计学生成绩,其功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前70%的学生定为合格(PASS),而后30%的学生定为不合格(FAIL)。思路: 设计一个类student,包含学生的姓名和成绩等数据。设计一个类Compute: sort()、disp(),它们分别用于按成绩排序和输出数据

Compute类:

public class Compute {
    public void sort(Student [] students){
        for(int i = 0;i < students.length;i++){
            for(int j = i;j < students.length;j++){
                if(students[i].deg < students[j].deg){
                    Student temp = students[i];
                    students[i] = students[j];
                    students[j] = temp;
                }
            }
        }
    }

    public void disp(Student[] students){
        sort(students);
        for(int i = 0;i < students.length;i++){
            if(i <= students.length*0.7-1){
                System.out.println("姓名:"+students[i].name+"  成绩:"+students[i].deg+"  PASS");
            }else {
                System.out.println("姓名:"+students[i].name+"  成绩:"+students[i].deg+"  FAIL");
            }
        }
    }
}

Student类:

public class Student {
    String name;
    double deg;
 
    public Student(String name, double deg) {
        this.name = name;
        this.deg = deg;
    }
}

Demo类:

public class Demo {
    public static void main(String[] args) {
        Student[] s = new Student[5];
        s[0] = new Student("张三",79);
        s[1] = new Student("李四",88);
        s[2] = new Student("王五",56);
        s[3] = new Student("杨六",75);
        s[4] = new Student("刘七",65);
 
        Compute compute = new Compute();
        compute.disp(s);
    }
}
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏志121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值