diff --git a/w3/BankAccount.java b/w3/BankAccount.java new file mode 100644 index 0000000..c504591 --- /dev/null +++ b/w3/BankAccount.java @@ -0,0 +1,84 @@ +public class BankAccount { + // 私有属性:账户号(final修饰,不可修改) + private final String accountNumber; + // 私有属性:户主姓名(可修改) + private String ownerName; + // 私有属性:余额(只能通过存款和取款操作改变) + private double balance; + + /** + * 构造方法:创建账户时必须提供账户号和户主姓名,初始余额为0 + * @param accountNumber 账户号(创建后不可修改) + * @param ownerName 户主姓名 + */ + public BankAccount(String accountNumber, String ownerName) { + this.accountNumber = accountNumber; + this.ownerName = ownerName; + this.balance = 0.0; + } + /// 获取账户号(只读,无setter方法) + /// @return 账户号 + public String getAccountNumber() { + return accountNumber; + } + + /** + * 获取户主姓名 + * @return 户主姓名 + */ + public String getOwnerName() { + return ownerName; + } + + /** + * 修改户主姓名 + * @param ownerName 新的户主姓名 + */ + public void setOwnerName(String ownerName) { + this.ownerName = ownerName; + System.out.println("户主姓名已修改为:" + ownerName); + } + + /** + * 查询余额(只读,无setter方法) + * @return 当前余额 + */ + public double getBalance() { + return balance; + } + + /** + * 存款操作 + * @param amount 存款金额(必须大于0) + */ + public void deposit(double amount) { + if (amount > 0) { + balance += amount; + System.out.println("存款 " + amount + " 元成功,当前余额:" + balance + " 元"); + } else { + System.out.println("存款金额必须大于0!"); + } + } + + /** + * 取款操作 + * @param amount 取款金额(必须大于0且不超过当前余额) + */ + public void withdraw(double amount) { + if (amount <= 0) { + System.out.println("取款金额必须大于0!"); + } else if (amount > balance) { + System.out.println("余额不足!当前余额为 " + balance + " 元,无法取出 " + amount + " 元。"); + } else { + balance -= amount; + System.out.println("取款 " + amount + " 元成功,当前余额:" + balance + " 元"); + } + } + + /** + * 查询余额并打印信息 + */ + public void queryBalance() { + System.out.println("账户 " + accountNumber + " 当前余额为:" + balance + " 元"); + } + } \ No newline at end of file diff --git a/w3/Employee.java b/w3/Employee.java new file mode 100644 index 0000000..5ee7ab8 --- /dev/null +++ b/w3/Employee.java @@ -0,0 +1,75 @@ +public class Employee { + // 私有属性:封装 + private String id; + private String name; + private String department; + private double salary; + + // 最低工资标准常量 + private static final double MIN_SALARY = 2000.0; + + // 全参构造方法 + public Employee(String id, String name, String department, double salary) { + this.id = id; + this.name = name; + this.department = department; + // 使用 setSalary 来确保工资符合最低标准 + setSalary(salary); + } + + // Getter 和 Setter + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDepartment() { + return department; + } + + public void setDepartment(String department) { + this.department = department; + } + + public double getSalary() { + return salary; + } + + // 在 setSalary 中检查工资是否低于最低标准 + public void setSalary(double salary) { + if (salary < MIN_SALARY) { + System.out.println("警告:工资不能低于最低工资 " + MIN_SALARY + " 元,已自动设置为最低工资。"); + this.salary = MIN_SALARY; + } else { + this.salary = salary; + } + } + + // 涨薪方法:percent 为 5 表示增加 5% + public void raiseSalary(double percent) { + if (percent <= 0) { + System.out.println("涨薪百分比必须大于 0"); + return; + } + double increase = this.salary * (percent / 100); + double newSalary = this.salary + increase; + setSalary(newSalary); // 复用 setSalary 的校验逻辑 + } + + // 方便展示员工信息的方法 + public void displayInfo() { + System.out.println("工号:" + id + ",姓名:" + name + ",部门:" + department + ",工资:" + salary); + } +} +