2020-09-05(面向对象相关练习题,部分附源码)

1.
 * 创建一个类,包含一个int属性,一个char属性,一个String属性,
 * 它们都没有初始化,创建对象,在main方法中将它们的值打印出来,
 * 查看其默认初始化的值。
2.
 * 商场为员工提供了基本工资(3000元)、
 * 物价津贴及房租津贴,其中物价津贴为基本工资的40%,房租津贴为基本工资的25%。
 * 编程计算实领工资(CalcSalary.java)
3.
 * 定义一个Human类(人类),
 * 为其定义name(名字),age(年龄),sex(性别)height(身高)4个字段,
 * 其访问修饰符均为public;
 * 在Main中创建一个名字为小芳,年龄为21,身高为1.65,性别为女的人类对象
4. 
 * 定义一个电脑类(Computer),
 * 为其定义type(品牌),size(尺寸),cpu(cpu大小) memory(内存大小),yp(硬盘大小),
 * 访问修饰符全为public e) 
 * 为该电脑类定义一个方法ShowData(),用来打印该电脑基本信息,
 * 格式如下:品牌为:xxx,尺寸为:xxx,cpu大小为:xxx,内存大小为:xxx,硬盘大小为:xxx 
 * 在Main方法内创建一个电脑对象,
 * 分别赋值为:宏基,1.41(尺寸),2(cpu),2(内存),200(硬盘) 
 * 调用该电脑对象的ShowData()方法,打印其基本资料
5.
 * 设计一个银行账户类,其中包括: 
 * (1)帐户信息:帐号、姓名、开户时间、身份证号码等。
 * (2)存款方法
 * (3)取款方法。
 * (4)其他方法如“查询余额“和“显示帐号“等
 * 并用字符界面模拟存款和取款过程
6. 
 * 1.为学生创建一个类,这个类包括每个学生的姓名(String)、ID(int)和状态(int)。
 *   状态表示学生的年级:1表示新生,2表示二年级,3表示三年级, 4表示四年级。
 * 2.创建5个学生,姓名为NAME1,NAME2直到NAME5, 其ID和年级均随机指定,然后将其放入数组中。
 * 3.遍历数组找出所有三年级的学生并打印出他们的姓名和ID。
7.
 * 1.定义一个高压炉锅类:GuoZi  
 * 2.为该GuoZi类添加两个方法,分别为:   
 *   1)煮饭的方法:public string GetFan(int wan){}; 
 *     参数wan表示煮多少碗米,返回值为:根据煮的碗数返回该两倍数量的碗饭    
 *     比如煮:10碗米,返回20碗饭  
 *   2)煮汤的方法:public string GetTang(string caiName){};    
 *     参数:caiName表示煮的菜名,返回值为:一盆xxx汤 
 * 在main方法中创建一个高压炉锅对象:lg  
 * 在Main方法中调用该lg对象的GetFan(10),并打印其结果 
 * 在Main方法中调用该lg对象的GetTang(“白菜”),并打印其结果 
8.
 * 请创建一个水果类Fruit,为该类提供两个公有的字段:name(水果名),wd(味道)  
 * 请创建一个人类Person,为该人类提供一个公有的字段:name用来表示人的姓名  
 * 为人类Person添加一个Eat方法,传入一个水果,并在方法内打印该人正在干什么
 * Eat方法:  public void Eat(Fruit f){ }  
 * 如果传进的水果为:桔子,酸酸的,即在人的Eat方法打印:xxx正在吃一个酸酸的桔子 
 * 在Main方法中创建一个人对象p,为该人取名为:哈利油 
 * 在Main方法中创建一个水果对象f,水果名为:桔子,味道:酸酸的  
 * 调用p对象的Eat方法并传入f,查看其结果
9.
 * 1) 创建一个老师类:Teacher 
 * 2) 为老师添加字段:id,name,sex,age,height 
 * 3) 分别为字段添加对应的属性: 
 * id:int类型  
 * name:string,长度大于一位少于四位 
 * sex:string,只能是男和女 
 * age:int,只能在20-55之间 
 * height:double,只能在1.50-1.80之间 
 * 4) 定义一个ShowData方法,打印编号、姓名、性别、身高 
 * 5) 在Main方法中创建一个老师对象,分别通过各个属性为各个字段赋值
 *    再调用该对象的ShowData方法,运行看其结果
10.
 * 定义一个笔记本类,该类有如下两个属性:
 *    颜色,数据类型为字符串,厂家,数据类型为字符串,
 * 该类有两个方法: 
 *    带两个参数的构造方法,完成对两个成员变量的初始化,两个参数分别是初始化时候需要的值
 * 定义获取和设置两个属性的方法 
 * 定义一个笔记本类的测试类,该类只有一个main方法,在main方法中创建笔记本类的一系列参数,输出结 
   果。

 

package com.wdd.week02.day06.test05;
/**
 * 设计一个银行账户类,其中包括: 
 * (1)帐户信息:帐号、姓名、开户时间、身份证号码等。
 * (2)存款方法
 * (3)取款方法。
 * (4)其他方法如“查询余额“和“显示帐号“等
 * 并用字符界面模拟存款和取款过程
 */

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Information p = new Information("张三", 925622397, 123456, 5000, "2020/09/05", "340222688413432131");	
		System.out.println(p.toString());
		Scanner sc = new Scanner(System.in);
		int s;
		do {
			System.out.println("身份验证成功,请选择服务项目:");
			System.out.println("1.存钱操作:");
			System.out.println("2.取钱操作:");
			System.out.println("3.余额查询:");
			System.out.println("4.账号查询:");
			System.out.println("5.退出系统:");
			System.out.println("请选择操作:");
			
			
			s = sc.nextInt();
			
			switch (s) {
			case 1:
				p.saveMoney();
				break;
			case 2:
				p.drawMoney();
				break;
			case 3:
				p.showBalance();
				break;
			case 4:
				p.showAccountNumber();
				break;
			case 5:
				p.exit();
				break;
			}
		}while (s !=5);
		sc.close();
	}

}




package com.wdd.week02.day06.test05;

import java.util.Scanner;

public class Information {
	private String name;//姓名
	private int accountNumber;//账号
	private int password;//密码
	private double balance;//余额
	private String openingTime;//开户时间
	private String IDCard;//身份证号码
	
	public void saveMoney() {
		Scanner sc = new Scanner(System.in);
		for (int i = 1; i <= 3; i++) {
			System.out.println("请输入密码:");
			int p = sc.nextInt();
			if (p == password) {
				System.out.println("请输入存款金额:");
				double m = sc.nextDouble();
				System.out.println("存款成功,您的余额为:" + (this.balance += m));
				break;
			} else if (p != password){
				if( i < 3) {
					System.out.println("警告:您输入的密码错误,您还有" + (3 - i) + 
                        "次机会,超过3次您的账户将冻结。");
					continue;
				}else {
					System.out.println("您输入的次数超过3次,您的账户已冻结,
                        请持身份证到柜台办理相关业务。");
					System.exit(0);
					
				}
			} 
		}
		
	}
	
	public void drawMoney() {
		Scanner sc = new Scanner(System.in);
		for (int i = 1; i <= 3; i++) {
			System.out.println("请输入密码:");
			int p = sc.nextInt();
			if (p == password) {
				System.out.println("请输入取款金额:");
				double m = sc.nextDouble();
				if (m <= this.balance) {
					System.out.println("取款成功,您的余额为:" + (this.balance -= m));
					break;
				} else if (m > this.balance) {
					System.out.println("取款失败,您的余额不足...");
					break;
				}
			} else if (p != password){
				if( i < 3) {
					System.out.println("警告:您输入的密码错误,您还有" + (3 - i) + 
                        "次机会,超过3次您的账户将冻结。");
					continue;
				}else {
					System.out.println("您输入的次数超过3次,您的账户已冻结,
                        请持身份证到柜台办理相关业务。");
					System.exit(0);
				}
			} 
		}
		
	
		
	}
	
	public void showBalance() {
		System.out.println("您卡上余额为:" + this.balance);
	}
	
	public void showAccountNumber() {
		System.out.println("您的账号为:" + this.accountNumber);
	}
	
	public void exit() {
		System.out.println("退出成功,请拿好您的磁卡。");
	}

	public Information() {
		super();
	}

	public Information(String name, int accountNumber, int password, double balance, String openingTime,
			String iDCard) {
		super();
		this.name = name;
		this.accountNumber = accountNumber;
		this.password = password;
		this.balance = balance;
		this.openingTime = openingTime;
		IDCard = iDCard;
	}

	public String getName() {
		return name;
	}

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

	public int getAccountNumber() {
		return accountNumber;
	}

	public void setAccountNumber(int accountNumber) {
		this.accountNumber = accountNumber;
	}

	public int getPassword() {
		return password;
	}

	public void setPassword(int password) {
		this.password = password;
	}

	public double getBalance() {
		return balance;
	}

	public void setBalance(double balance) {
		this.balance = balance;
	}

	public String getOpeningTime() {
		return openingTime;
	}

	public void setOpeningTime(String openingTime) {
		this.openingTime = openingTime;
	}

	public String getIDCard() {
		return IDCard;
	}

	public void setIDCard(String iDCard) {
		IDCard = iDCard;
	}

	@Override
	public String toString() {
		return "Information [name=" + name + ", accountNumber=" + accountNumber + ", password=" + password
				+ ", balance=" + balance + ", openingTime=" + openingTime + ", IDCard=" + IDCard + "]";
	}

}

 

package com.wdd.week02.day06.test06;

/**
 * 1.为学生创建一个类,这个类包括每个学生的姓名(String)、ID(int)和状态(int)。
 *   状态表示学生的年级:1表示新生,2表示二年级,3表示三年级, 4表示四年级。
 * 2.创建5个学生,姓名为NAME1,NAME2直到NAME5, 其ID和年级均随机指定,然后将其放入数组中。
 * 3.遍历数组找出所有三年级的学生并打印出他们的姓名和ID。
 * @author WDD
 *
 */

public class Main {
	public static void main(String[] args) {
		Student[] s = new Student[5];
		s[0] = new Student("NAME1",(int)(10000+Math.random()*20000), (int)(1+Math.random()*5));
		s[1] = new Student("NAME2",(int)(10000+Math.random()*20000), (int)(1+Math.random()*5));
		s[2] = new Student("NAME3",(int)(10000+Math.random()*20000), (int)(1+Math.random()*5));
		s[3] = new Student("NAME4",(int)(10000+Math.random()*20000), (int)(1+Math.random()*5));
		s[4] = new Student("NAME5",(int)(10000+Math.random()*20000), (int)(1+Math.random()*5));
		
		Student.print(s);//输出所有学生信息
		
		Student.search(s);//寻找某年级学生信息
		
	}

}





package com.wdd.week02.day06.test06;

import java.util.Scanner;

public class Student {
	private String name; //姓名
	private int ID; //学号
	private int grade;//年级 1表示新生,2表示二年级,3表示三年级,4表示四年级。
	
	//打印学生详细信息
	public static void print(Student[] s) {
		for (int i = 0; i < s.length; i++) {
			System.out.println(s[i].toString());
		}
	}
	//找出所有三年级的学生并打印出他们的姓名和ID。
	public static void search(Student[] s) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要查找学生的年级(1~5):");
		int h = sc.nextInt(); //记录该年级学生数量
		int count = 0;
		for (int i = 0; i < s.length; i++) {
			if (s[i].getGrade() == h) {
				System.out.println(s[i].toString());
			} else {
				count++;
				if(count == s.length - 1) {
				System.out.println("没有该年级学生。");
				}
			}
		}
		sc.close();
	}
	
	public Student(String name, int iD, int grade) {
		super();
		this.name = name;
		ID = iD;
		this.grade = grade;
	}

	public Student() {
		super();
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", ID=" + ID + ", grade=" + grade + "]";
	}

	public String getName() {
		return name;
	}

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

	public int getID() {
		return ID;
	}

	public void setID(int iD) {
		ID = iD;
	}

	public int getGrade() {
		return grade;
	}

	public void setGrade(int grade) {
		this.grade = grade;
	}


}
package com.wdd.week02.day06.test08;

/**
 * 请创建一个水果类Fruit,为该类提供两个公有的字段:name(水果名),wd(味道)  
 * 请创建一个人类Person,为该人类提供一个公有的字段:name用来表示人的姓名  
 * 为人类Person添加一个Eat方法,传入一个水果,并在方法内打印该人正在干什么
 * Eat方法:  public void Eat(Fruit f){ }  
 * 如果传进的水果为:桔子,酸酸的,即在人的Eat方法打印:xxx正在吃一个酸酸的桔子 
 * 在Main方法中创建一个人对象p,为该人取名为:哈利油 
 * 在Main方法中创建一个水果对象f,水果名为:桔子,味道:酸酸的  
 * 调用p对象的Eat方法并传入f,查看其结果
 * @author WDD
 *
 */
public class Main {
	public static void main(String[] args) {
		Person p = new Person("哈利油");
		Fruit f = new Fruit("橘子", "酸酸的");
		p.Eat(f);
	}

}





package com.wdd.week02.day06.test08;

/**
 * 请创建一个水果类Fruit,为该类提供两个公有的字段:name(水果名),wd(味道)  
 * 请创建一个人类Person,为该人类提供一个公有的字段:name用来表示人的姓名  
 * 为人类Person添加一个Eat方法,传入一个水果,并在方法内打印该人正在干什么
 * Eat方法:  public void Eat(Fruit f){ }  
 * 如果传进的水果为:桔子,酸酸的,即在人的Eat方法打印:xxx正在吃一个酸酸的桔子 
 * 在Main方法中创建一个人对象p,为该人取名为:哈利油 
 * 在Main方法中创建一个水果对象f,水果名为:桔子,味道:酸酸的  
 * 调用p对象的Eat方法并传入f,查看其结果
 * @author WDD
 *
 */
public class Main {
	public static void main(String[] args) {
		Person p = new Person("哈利油");
		Fruit f = new Fruit("橘子", "酸酸的");
		p.Eat(f);
	}

}






package com.wdd.week02.day06.test08;

public class Fruit {
	public String name;
	public String wd;//表示水果的味道
	
	public Fruit(String name, String wd) {
		super();
		this.name = name;
		this.wd = wd;
	}
	
	public Fruit() {
		super();
	}
	
	@Override
	public String toString() {
		return "Fruit [name=" + name + ", wd=" + wd + "]";
	}
	
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值