实验二 Java简单类与对象

实验目的
掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
理解static修饰付对类、类成员变量及类方法的影响。

实验内容
写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:
(1) 使用构造函数完成各属性的初始赋值

(2) 使用get…()和set…()的形式完成属性的访问及修改

(3) 提供计算面积的getArea()方法和计算周长的getLength()方法

实验代码

package 第四周;

	public class Rectangle {
	    private String color;           //定义String 类型颜色
	    private double width,height;     //定义宽和高的高度属性
	    public void setWidth(double width) {   //设置宽度
	        this.width=width;
	    }
	    public void setHeight(double height) {   //设置高度
	        this.height=height;
	    }
	    public void setColor(String color) {   //设置颜色
	        this.color=color;  
	    }
	    public String getColor() {    //取得颜色
	        return color;
	    }
	    public double getWidth() {    //取得宽度
	        return width;
	    }
	    public double getHeight() {   //取得高度
	        return height;
	    }
	    public  double getArea() {    //求矩形面积
	        return width*height;
	    }
	    public double getLength() {    //求矩形周长
	        return 2*(width+height);    
	    }
	   
	    public static void main(String args[]) {
	        	Rectangle Regional=new Rectangle();
	        	Regional.setWidth(8);
	        	Regional.setHeight(2);
	            System.out.println(Regional.getArea());    //输出面积
	            System.out.println(Regional.getLength());  //输出周长
	    }
	    
}

设计思路:提示我局部变量和全局变量有问题,还有静态也有问题。一开始运行后显示的依旧是上一题的答案,百度了后是因为,没有入口。问了同学、查了百度才勉强搞定。
运行截图:

银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。
实验代码

package 第四周;

	import java.util.Scanner;
	import java.util.Date;
	 
	class Handle {
	    private String sign,password,name="none",date;
	    private double balance;
	    public Handle(String password,double balance){
	        this.setPassword(password);
	        this.setBalance(balance);
	    }
	    public String getsign() {
	        return sign;
	    }
	    public void setsign(String sign) {
	        this.sign = sign;
	    }
	    public String getPassword() {
	        return password;
	    }
	    public void setPassword(String password) {
	        this.password = password;
	    }
	    public String getName() {
	        return name;
	    }
	    public void setName(String name) {
	        this.name = name;
	    }
	    public double getBalance() {
	        return balance;
	    }
	    public void setBalance(double balance) {
	        this.balance = balance;
	    }
	    public String getDate() {
	        return date;
	    }
	    public void setDate(String date) {
	        this.date = date;
	    }
	}
	 
	public class 银行系统 {
	    static Handle per[]=new Handle[100];
	static int i=-1;
	static int id=0;
	static String s;
	    public static void main(String[] args) {
	        // TODO Auto-generated method stub
	        for(int j=0;j<100;j++){
	            per[j]=new Handle("计科二班666",0.0);
	            }
	        zhuyemian();
	    }
	 
	    public static void yewu(int i) {
	        // TODO Auto-generated method stub
	        System.out.println("1:土豪想存款 2:没钱过日子了,我要取款 3:变更密码 4:查询黑卡卡号 5:查询姓名 6:查询开户日期 7:当前余额 0:返回");
	        Scanner input=new Scanner(System.in);
	        switch(input.nextInt()){
	        case 1:System.out.println("存款金额:");
	        per[i].setBalance(input.nextDouble()+per[i].getBalance());
	        System.out.println("存款成功!");yewu(i);
	        case 2:System.out.println("取款金额:");
	        if(per[i].getBalance()-input.nextDouble()<0){
	            System.out.println("没钱取了哦!");yewu(i);
	        }
	        else{
	        per[i].setBalance(per[i].getBalance()-input.nextDouble());
	        System.out.println("取款成功!");yewu(i);
	        }
	        case 3:System.out.println("请输入新密码:");
	        per[i].setPassword(input.next());
	        System.out.println("修改成功!");yewu(i);
	        case 4:System.out.println("您的黑卡卡号:"+per[i].getsign());yewu(i);
	        case 5:System.out.println("您的姓名为:"+per[i].getName());yewu(i);
	        case 6:System.out.println("您的开户日期为:"+per[i].getDate());yewu(i);
	        case 7:System.out.println("您的余额为:"+per[i].getBalance());yewu(i);
	        case 0:zhuyemian();
	        }
	    }
	 
	    public static void denglu() {
	        // TODO Auto-generated method stub
	        System.out.println("请输入您的姓名:");
	        Scanner input=new Scanner(System.in);
	        s=input.next();
	        i=-1;
	        while(i<99){
	            i++;
	            if(s.equals(per[i].getName())){
	                System.out.println("请输入您的密码:");
	                if(input.next().equals(per[i].getPassword())){
	                    System.out.println("登陆成功!");
	                    yewu(i);
	                }
	                else{
	                    System.out.println("姓名或密码有误,请重新输入");
	                    denglu();
	                }
	            }
	        }
	        System.out.println("没有此用户!");
	        zhuyemian();
	    }
	 
	    public static void kaihu() {
	        // TODO Auto-generated method stub
	        per[id]=new Handle("计科二班666",0.0);
	        if(id>=100){
	            s="uniqueid"+id;
	            per[id].setsign(s);
	}else if(id>=10){
	            s="uniqueid0"+id;
	            per[id].setsign(s);
	}else{
	            s="uniqueid00"+id;
	            per[id].setsign(s);
	}
	        Date date=new Date();
	        per[id].setDate(date.toString());
	        System.out.println("请输入您的姓名:");
	        Scanner input=new Scanner(System.in);
	        per[id].setName(input.next());
	        System.out.println("哇,你超级厉害的,初始密码为计科二班666,亲,一定要记住哦!");
	        id++;
	        denglu();
	    }
	 
	    public static void zhuyemian() {
	        // TODO Auto-generated method stub
	        System.out.println("1:开户 2:业务办理");
	        Scanner input =new Scanner(System.in);
	        s=input.next();
	        if(s.equals("1")){
	kaihu();
	}
	        if(s.equals("2")){
	denglu();
	}
	    }
}

设计思路:这个问题不会,我问了问同学,还是有些地方听不懂,感觉自己打不出来,所以参考了他人的代码和思路。https://www.cnblogs.com/521-PENG/p/11551732.html
实验结果:

1:开户 2:业务办理
1
请输入您的姓名:
元歌
哇,你超级厉害的,初始密码为计科二班666,亲,一定要记住哦!
请输入您的姓名:
元歌
请输入您的密码:
计科二班666
登陆成功!
1:土豪想存款 2:没钱过日子了,我要取款 3:变更密码 4:查询黑卡卡号 5:查询姓名 6:查询开户日期 7:当前余额 0:返回
1
存款金额:
28921473847736541984
存款成功!
1:土豪想存款 2:没钱过日子了,我要取款 3:变更密码 4:查询黑卡卡号 5:查询姓名 6:查询开户日期 7:当前余额 0:返回
4
您的黑卡卡号:uniqueid000
1:土豪想存款 2:没钱过日子了,我要取款 3:变更密码 4:查询黑卡卡号 5:查询姓名 6:查询开户日期 7:当前余额 0:返回
6
您的开户日期为:Fri Sep 20 17:06:14 CST 2019
1:土豪想存款 2:没钱过日子了,我要取款 3:变更密码 4:查询黑卡卡号 5:查询姓名 6:查询开户日期 7:当前余额 0:返回
5
您的姓名为:元歌
1:土豪想存款 2:没钱过日子了,我要取款 3:变更密码 4:查询黑卡卡号 5:查询姓名 6:查询开户日期 7:当前余额 0:返回
2
取款金额:
847217846718
284619846918
取款成功!
1:土豪想存款 2:没钱过日子了,我要取款 3:变更密码 4:查询黑卡卡号 5:查询姓名 6:查询开户日期 7:当前余额 0:返回
7
您的余额为:2.8921473563116696E19
1:土豪想存款 2:没钱过日子了,我要取款 3:变更密码 4:查询黑卡卡号 5:查询姓名 6:查询开户日期 7:当前余额 0:返回
0
1:开户 2:业务办理


总结:java开始逐渐变得难,要记得东西很多,一个String类常用操作方法就21种,一节课讲的内容很多。虽然程序在运行时看不到摸不着,但李津老师平时讲的很认真,还是能听懂一些。上课时要不停的翻书,知识点讲的多,我平时还是要多实践才行。