实验二 Java简单类与对象(银行的账户记录与写一个名为Rectangle的类表示矩形)

一、实验目的
(1)掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
(2)理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
(3)理解static修饰付对类、类成员变量及类方法的影响。
二、实验内容
1.写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:
(1) 使用构造函数完成各属性的初始赋值
(2) 使用get…()和set…()的形式完成属性的访问及修改
(3) 提供计算面积的getArea()方法和计算周长的getLength()方法
2.银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。


实验一
1.思路 :定义一个类Rectangle ,再在类中分别设置和获取width,height,color的方法,再建立getLength(),double getArea()两个方法,并在测试类中输出。
2.测试类代码如下

package Oop;

public class Text2 {
	public static void main(String[] args) {
		Rectangle rectangle=new Rectangle(15.1,16.5,"白色");
		System.out.println("矩形宽度为:"+rectangle.getWidth());
		System.out.println("矩形高度为:"+rectangle.getHeight());
		System.out.println("矩形颜色为:"+rectangle.getColor());
		System.out.println("矩形面积为:"+rectangle.getArea());
		System.out.println("矩形周长为:"+rectangle.getLength());
	}

}

3.Rectangle类

package Oop;
public class Rectangle {      /*定义矩形类*/
	
	private double width;
	private double height;
	private String color;
	public Rectangle(double width,double height,String color) {
		this.color=color;
		this.height=height;
		this.width=width;
	}

public void setWidth(double n){/*设置矩形宽度*/
	   width=n;
	   return;
	}
public void setHeight(double m) { /*设置矩形高度*/
	  height=m;
		return;
	}
public void setColor(String str) { /*设置矩形颜色*/
	  color=str;
		return;
	}
public double getWidth() {/*取得矩形宽度*/
	return width;
	}
public double getHeight() {/*取得矩形高度*/
	return height;
	}
public String getColor() {/*取得矩形颜色*/
	return color;
	}
public double getArea() {
	return width*height;	
}
public double getLength(){
	
	return 2*(width+height);
}

}

4.运行结果

java 定义一个实例类 java定义一个rectangle类_其他

实验二
1.思路:与实验一差不多。
2.测试类

package Oop;
import java.util.Scanner;
public class Bank {
		public static void main(String[] args) {
			Banks a=new Banks("131415926",0);
			System.out.println("请问您是否需要开户?\n 1.是  2.否");
			Scanner scanner=new Scanner(System.in);
			if(scanner.nextInt()==1) {
			System.out.println("请输入您的真实姓名:");
			a.setName(scanner.next());
			System.out.println("初始密码为:\"123456\"安全系数低\n请修改密码!");
			a.changepassword();
			a.cunqian(200001);
			System.out.println("请选择你要使用的功能\n 1.存钱  2.取钱  3.修改密码 4.查询账户信息 5.退出");
		switch (scanner.nextInt()) {
		case 1: {
			System.out.println("输入你要存的金额:");
			a.cunqian(scanner.nextInt());
			break;
		}
		case 2:{
			System.out.println("请输入你要取的金额:");
			a.quqian(scanner.nextInt());
			if(scanner.nextInt()>a.getBalance()) {
				System.out.println("您的钱包不足!!!");
			}
			break;
		}
		case 3:{
			a.changepassword();
		}
		default:
			break;
		}
		System.out.println("账户标识:"+a.getId());
		System.out.println("账户归属人:"+a.getName());
		System.out.println("开户日期:"+a.date());
		System.out.println("当前余额:"+a.getBalance());
		}
			else {
				System.out.println("谢谢您的使用,欢迎下次再来!");
			}
			System.out.println("谢谢您的使用,欢迎下次再来!");
		}
		}

3.Banks类

package Oop;
import java.util.Date;
import java.util.Scanner;
class Banks {
		private String id;
		private String name;
		private String password;
		private Date date;
		private double balance;
		public Banks() {
		}
		public Banks(String id,double balance) {
		this.setId(id);
		this.setName(name);
		this.date=new Date();
		this.password="123456";
		this.setBalance(balance);
		}
		public String getId() {   
		return id;
		}
		public String getName() {/*获取姓名*/
		return name;
		}
		public Date getDate() {/*获取开户日期*/
		return date;
		}
		public String getPassword() {
		return password;
		}
		public double getBalance() {/*获取账户余额*/
		return balance;
		}
		public void setId(String i) {/*设置初始id*/
		id=i;
		}
		public void setName(String n) {/*设置姓名*/
		name=n;
		}
		public void setDate(Date d) {
		date=d;
		}
		public void setPassword(String p) {
		password=p;
		}
		public void setBalance(double b) {/*设置账户*/
		balance=b;
		}
		public void cunqian(double money) {/*存钱*/
		this.balance=this.balance+money;
		}
		public void quqian(double money) {/*取钱*/
		this.balance=this.balance-money;
		}
		public Date date() {
		return date;
		}
		public void changepassword() {/*改密码*/
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入新密码:");
		String password=sc.nextLine();
		}
		}

4.运行结果

java 定义一个实例类 java定义一个rectangle类_java_02

java 定义一个实例类 java定义一个rectangle类_java 定义一个实例类_03

四、总结:1.本次实验是让我们了解封装,使用set,get,private,this等关键词的使用,让我们更了解如何去使用方法调用,开始的时候出现了很多错误,比如不能使用static静态方法调用非静态方法,烧脑,有学到了一个新的Data方法,java.util.Date 该类的每一个实例用于表示时间默认当时设备的时间。
2.在图二中测试取钱这个地方的时候想用以下代码去实现一个输入值scanner.nextInt()去比较的时候if中的scanner.nextInt()又输入了一遍,用赋值也没能解决,用a.quqian(scanner.nextInt()代替scanner.nextInt()也不成,直接呜呜呜!

System.out.println("请输入你要取的金额:");
			a.quqian(scanner.nextInt());
			if(scanner.nextInt()>a.getBalance()) {
				System.out.println("您的钱包不足!!!");
			}