第四周课程总结&试验报告(二)

实验二 Java简单类与对象java

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

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

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

 1 package java实验报告二;  2 
 3 class Rectangle{  4     private double width,height;    //声明属性
 5     private String color;           //声明属性
 6     public Rectangle(String color,double width,double height){     //定义构造方法为各属性赋值
 7         this.setColor(color);                                       //为属性赋值
 8         this.setWidth(width);  9         this.setHeight(height); 10  } 11     public void getArea(){                                     //计算面积的方法
12         System.out.println("面积:"+getWidth()*getHeight()); 13  } 14     public void getLength(){                                   //计算周长的方法
15         System.out.println("周长:"+2*(getWidth()+getHeight())); 16  } 17     public void getColor1(){                                    //定义颜色方法
18         System.out.println("颜色:"+getColor()); 19  } 20     public String getColor(){             //取得color
21         return color; 22  } 23     public void setColor(String n){       //设置color
24         color=n; 25  } 26     public double getWidth(){             //取得width
27         return width; 28  } 29     public void setWidth(double w){       //设置width
30         width=w; 31  } 32     public double getHeight(){            //取得height
33         return height; 34  } 35     public void setHeight(double h){      //设置height
36         height=h; 37  } 38 } 39 public class classdemo2 { 40 
41     public static void main(String[] args) { 42         Rectangle re=new Rectangle("yellow",15.01,22.22); 43         re.getArea();         //调用Rectangle类的方法
44  re.getLength(); 45  re.getColor1(); 46  } 47 }

 

 

实验过程:这道题很简单,理解了类与对象的关系,就以为很简单,基本操做。ui

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

 1 package java实验报告二;  2 
 3 import java.text.DecimalFormat;  4 import java.util.Scanner;  5 
 6 class Account{  7     private String id,name;                              //声明属性
 8     private int time,key;  9     private double balance;  10     public Account(String id,String name,int time,int key,int balance){     //定义构造方法为各属性赋值
 11         this.setId(id);                                       //为属性赋值
 12         this.setName(name);  13         this.setTime(time);  14         this.setKey(key);  15         this.setBalance(balance);  16  }  17     public void deposit(){              //存取款方法
 18         System.out.println("1.存款 2.取款");  19         System.out.print("再次输入你要进行的操做的序号:");  20         DecimalFormat df=new DecimalFormat("0.00");           //控制余额输出精度
 21         Scanner sc=new Scanner(System.in);  22         int a1=sc.nextInt();  23         if(a1==1){  24             System.out.println("当前余额:"+df.format(+getBalance())+"元");  25             System.out.print("请输入要存入的钱数:");  26             double money1=sc.nextDouble();  27             setBalance(getBalance()+money1);       //把输入的钱数赋值给getBalance
 28             System.out.println("成功!当前余额:"+df.format(+getBalance())+"元");  29  }  30         else if(a1==2){  31             System.out.println("当前余额:"+df.format(+getBalance())+"元");  32             System.out.print("请输入要取出的钱数:");  33             double money2=sc.nextDouble();  34             setBalance(getBalance()-money2);  35             if(getBalance()<0){  36                 System.out.println("余额不足!");  37  }  38             else{  39                 System.out.println("成功!当前余额:"+df.format(+getBalance())+"元");  40  }  41  }  42         
 43  }  44     public void change(){               //更改密码方法
 45         System.out.print("请设置新密码:");  46         Scanner sc=new Scanner(System.in);  47         int key1=sc.nextInt();  48         System.out.print("请再次确认密码:");  49         int key2=sc.nextInt();  50         if(key1==key2){  51             setKey(key1);             //把新设置的密码值赋给getKey()
 52             System.out.println("设置成功!你的密码为:"+getKey());  53  }  54         else{  55             System.out.println("两次输入的密码不一样!");  56  }  57         
 58  }  59     public void inquire(){              //查询信息方法
 60         System.out.print("输入六位数密码查询信息:");  61         Scanner sc=new Scanner(System.in);  62         int data=sc.nextInt();  63         if(data==getKey()){  64         DecimalFormat df=new DecimalFormat("0.00");      //控制余额输出精度
 65         System.out.println("标识:"+getId());  66         System.out.println("姓名:"+getName());  67         System.out.println("开户日期:"+getTime());  68         System.out.println("余额:"+df.format(+getBalance())+"元");  69  }  70         else{  71             System.out.println("密码错误");  72  }  73  }  74     public String getId(){  75         return id;  76  }  77     public void setId(String i){  78         id=i;  79  }  80     public String getName(){  81         return name;  82  }  83     public void setName(String n){  84         name=n;  85  }  86     public int getTime(){  87         return time;  88  }  89     public void setTime(int t){  90         time=t;  91  }  92     public int getKey(){  93         return key;  94  }  95     public void setKey(int k){  96         key=k;  97  }  98     public double getBalance(){  99         return balance; 100  } 101     public void setBalance(double b){ 102         balance=b; 103  } 104 } 105 public class classdemo3 { 106 
107     public static void main(String[] args) { 108         boolean R=false; 109         Account ac=new Account("yanzi404123","张晏子",20190917,123456,0); 110         while(!R) 111  { 112         System.out.println("1.存取款"); 113         System.out.println("2.修改密码"); 114         System.out.println("3.查询信息"); 115         System.out.println("4.退出程序"); 116         System.out.print("请输入你要进行的操做的序号:"); 117         Scanner sc=new Scanner(System.in); 118         int a=sc.nextInt(); 119         if(a==1){ 120             ac.deposit();    //存取款
121  } 122         else if(a==2){ 123             ac.change();     //修改密码
124             
125  } 126         else if(a==3){ 127             ac.inquire();       //信息查询
128  } 129         else if(a==4){ 130             System.out.println(" 感谢使用!"); 131             break; 132  } 133  } 134  } 135 }

       

       

 

 

作这道题花的时间比较多,大概3个小时,首先跟第一题同样,先作个框架。我提供了3个方法:存取款、修改密码、查询信息。
最早遇到的问题是,人民币余额得保留小数点后两位,而我直接经过get输出它的时候,默认保留的是后一位即0.0,而后仿造C
的方法失败,最后找了个b站教程知道了DecimalFormat的用法,一般经过这样一句话DecimalFormat df=new DecimalFormat("0.00");
来设置保留几位小数。
       第二个问题是写修改密码的代码时,由于我设置了要输入两次密码,因此须要把新密码int key1值赋值给getKey();很明显 getKey()=key1;
是错误的,在网上也搜不到办法,而后我乱写了半个小时,各类排列组合方法都试过了,最后套出了setKey(key1); 这个办法,彻底ok。
还有由于使用while循环没有设置break,致使陷入了死循环,下次注意。还有此程序是beta版 还有不少小细节没有完善,好比密码暂时spa

还不能以0开始,标识也不是随机生成,也没有优化程序。以后再改吧我先提交。code

相关文章
相关标签/搜索