第三题完整代码
- 银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期(Date),账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。
package homework;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
public class Account {
private String username;
private String name;
private Date date;
private String password;
private double balance;
private UUID uuid;
public Account() {
super();
password = "123456";
balance = 0;
username = "ab123456789";
uuid = UUID.randomUUID();
}
public UUID getUuid() {
return uuid;
}
public void setUuid(UUID uuid) {
this.uuid = uuid;
}
public Account(String username, String name, String password, double balance, UUID uuid) {
if (username.length()<11 && password.length()<6){
this.username = username;
this.name = name;
this.password = password;
this.balance = balance;
this.uuid = UUID.randomUUID();}
else {
System.out.println("构造失败,账号或者密码超过规格");
}
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public String getName() {
return name;
}
public String getDate() {
date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return (sdf.format(date));
}
public double getBalance() {
return balance;
}
public double Deposit(String username,String password,double money){
if(username == this.getUsername() && password == this.getPassword()){
balance = balance + money;}
return balance;
}
public double WithdrawMoney(String username,String password,double money){
if(balance > money ){
balance = balance - money;
System.out.printf("取款成功,当前余额为:");
return balance;
}
else{
System.out.printf("余额不足");
}
System.out.printf("当前余额为:");
return balance;
}
public void RenamePassword(String oldPassword,String newPassword){
System.out.println("请输入旧密码以及新密码");
if(oldPassword == this.getPassword()){
this.password = newPassword;
System.out.println("密码修改成功");
}
else{
System.out.println("输入的旧密码错误,无法更改");
}
}
}
package homework;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Date;
import java.util.UUID;
public class TestAccount {
public static void main(String[] args) {
// TODO Auto-generated method stub
Account account = new Account();
String password = account.getPassword();
String username = account.getUsername();
String name = account.getName();
String date = account.getDate();
UUID uuid = account.getUuid();
Double balance = account.getBalance();
System.out.println("测试查询方法");
System.out.println(password+";"+username+";"+name+";"+date+";"+uuid+";"+balance);
System.out.println("测试存款方法");
account.Deposit("ab123456789","123456",100);
System.out.println("存入后余额为"+account.getBalance());
System.out.println("测试取款方法");
System.out.println(account.WithdrawMoney("ab123456789","123456",50));
System.out.println(account.WithdrawMoney("ab123456789","123456",200));
System.out.println("测试修改密码的方法");
account.RenamePassword("123456","654321");
System.out.println("使用新密码存款试试");
account.Deposit("ab123456789","654321",100);
System.out.println("存入后余额为"+account.getBalance());
}
}
第四题
- 一个Fan有自己的品牌和型号,其调速旋钮speed可以调整Fan的速度(档级在0、1、2、3范围内),通电开关可以改变电扇状态(通电表示工作就绪或者工作,断电表示停止工作)请仔细分析并提供Fan类的定义。并编写程序对其进行测试。具体要求如下:
(1) 表示该类对象的状态可以用品牌(brand,可以用字符串型表示,因为品牌通常都是多个字符组成的)、工作状态(status,用来反映一个电风扇是否处于通电就绪ready、正在转动working或者静止stop)、当前的速度(speed,可以用数值型表示);
(2) 用构造函数可以创建一个电风扇对象,指定其品牌就可以了,一个电风扇的初始状态可以是静止,而且初始速度为0,分析为什么不适宜直接通过构造函数的形式参数来指定初始状态和速度;
(3) 给该类提供如下的方法,重点考虑每个动作导致的状态变化,形成代码逻辑;
提供一个方法来表示电风扇的开与关,模拟一个开关动作
通过加速和减速两个方法来调整速度,当速度超出极限(0或3),向控制台输出一条告警信息作为提示,并且不执行该调速动作。
提供一个方法能够返回电风扇当前的状态和速度
(4) 添加一个main方法,按顺序完成以下工作,考虑状态与速度变化和开关动作之间的关系:
创建一个电风扇对象,用f表示;
加速一次电风扇;
向控制台输出f的状态和速度;
启动电风扇(调用对象的开关方法);
向控制台输出f的状态和速度;
连续加速4次(考虑发生什么情况);
向控制台输出f的状态和速度;
连续减速4次(考虑发生什么情况);
向控制台输出f的状态和速度;
关掉电风扇(调用对象的开关方法);
连续加速2次
向控制台输出f的状态和速度;
package homework;
public class Fan {
private int speed = 0;
private String status = "stop";
private String brand = "伟记";
public Fan() {
}
public Fan(int speed, String status, String brand) {
this.speed = speed;
this.status = status;
this.brand = brand;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public void accelerate() {
if (status == "working") {
if (speed>=1 && speed<3) {
speed = speed + 1;
System.out.println("加速成功!此时风扇为" + (speed) + "档");
}
if (speed == 3) {
// throw new RuntimeException("已到达最高挡位,再按爆炸!!!"); 因为会中断运行所以直接输出
System.out.println("已到达最高挡位,再按爆炸!!!");
}
}
if (status=="stop"){
status="working";
speed=speed+1;
}
}
public void click() {
switch (status) {
case "stop":
status = "ready";
speed=0;
System.out.println(getStatus());
break;
case "ready":
status = "working";
speed=1;
System.out.println(getStatus());
break;
case "working":
status = "stop";
speed=0;
System.out.println(getStatus());
}
}
public void decelerate() {
if (status == "working") {
if (speed > 1) {
speed = speed - 1;
System.out.println("减速成功!此时风扇为" + (speed) + "档");
}
if (speed == 1) {
// throw new RuntimeException("已到达最低挡位,再按开摆!!!");因为会中断运行所以直接输出
System.out.println("已到达最低挡位,再按开摆!!!");
}
}
}
}
package homework;
public class TestFan {
public static void main(String[] args) {
Fan f = new Fan();
f.accelerate();
System.out.println("此时状态为"+f.getStatus()+"速度为"+f.getSpeed());
// 重置一下风扇
f.setStatus("stop");
System.out.println(f.getStatus());
f.click();
f.click();
System.out.println("此时状态为"+f.getStatus()+"速度为"+f.getSpeed()+"档");
f.accelerate();
f.accelerate();
f.accelerate();
f.accelerate();
System.out.println("此时状态为"+f.getStatus()+"速度为"+f.getSpeed()+"档");
f.decelerate();
f.decelerate();
f.decelerate();
f.decelerate();
System.out.println("此时状态为"+f.getStatus()+"速度为"+f.getSpeed()+"档");
f.click();
f.accelerate();
f.accelerate();
System.out.println("此时状态为"+f.getStatus()+"速度为"+f.getSpeed()+"档");
}
}
时间要紧写的确实糙,但能交就行
修正一下
第六题答案:AC
第七题答案:ACD