2022/09/29 22:25 完成第七次课作业 银行系统

This commit is contained in:
zyx 2022-09-29 22:25:43 +08:00
parent df6bc60349
commit e17519f1c1
11 changed files with 622 additions and 0 deletions

1
.idea/modules.xml generated
View File

@ -5,6 +5,7 @@
<module fileurl="file://$PROJECT_DIR$/Week2/Week2.iml" filepath="$PROJECT_DIR$/Week2/Week2.iml" />
<module fileurl="file://$PROJECT_DIR$/Week3/Week3.iml" filepath="$PROJECT_DIR$/Week3/Week3.iml" />
<module fileurl="file://$PROJECT_DIR$/Week4/Week4.iml" filepath="$PROJECT_DIR$/Week4/Week4.iml" />
<module fileurl="file://$PROJECT_DIR$/Week5/Week5.iml" filepath="$PROJECT_DIR$/Week5/Week5.iml" />
<module fileurl="file://$PROJECT_DIR$/java_class.iml" filepath="$PROJECT_DIR$/java_class.iml" />
<module fileurl="file://$PROJECT_DIR$/week1/week1.iml" filepath="$PROJECT_DIR$/week1/week1.iml" />
</modules>

11
Week5/Week5.iml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@ -0,0 +1,34 @@
/**
* @author : 张宇轩
* @createTime : 2022/9/28 - 8:54
*/
public class Administrator extends Employee{
private Double bonus;
public Administrator(String id, String name, String department, Double baseSalary, Double bonus) {
super(id, name, department, baseSalary);
this.bonus = bonus;
}
public Double getBonus() {
return bonus;
}
public void setBonus(Double bonus) {
this.bonus = bonus;
}
@Override
public void updateSalary() {
super.updateSalary();
super.setBaseSalary(super.getBaseSalary()+this.bonus);
}
@Override
public String toString() {
return "Administrator{" +
"bonus=" + bonus +
"," + super.toString() +
'}';
}
}

74
Week5/src/Employee.java Normal file
View File

@ -0,0 +1,74 @@
/**
* @author : 张宇轩
* @createTime : 2022/9/28 - 8:51
*/
public class Employee {
private String id;
private String name;
private String department;
private Double baseSalary;
public Employee() {
id = "00000";
name="未知";
department="销售";
baseSalary=1000.0;
}
public Employee(String id, String name, String department, Double baseSalary) {
this.id = id;
this.name = name;
this.department = department;
this.baseSalary = baseSalary;
}
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 getBaseSalary() {
return baseSalary;
}
public void setBaseSalary(Double baseSalary) {
this.baseSalary = baseSalary;
}
@Override
public String toString() {
return "Employee{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", department='" + department + '\'' +
", baseSalary=" + baseSalary +
'}';
}
public void displayEmployee(){
System.out.println(this);
}
public void updateSalary(){
this.baseSalary = this.baseSalary*1.0725;
}
}

View File

@ -0,0 +1,37 @@
/**
* @author : 张宇轩
* @createTime : 2022/9/28 - 9:05
*/
public class SalesPerson extends Employee{
private Double yearlySales;
public SalesPerson() {
}
public SalesPerson(String id, String name, String department, Double baseSalary, Double yearlySales) {
super(id, name, department, baseSalary);
this.yearlySales = yearlySales;
}
public Double getYearlySales() {
return yearlySales;
}
public void setYearlySales(Double yearlySales) {
this.yearlySales = yearlySales;
}
@Override
public void updateSalary() {
super.updateSalary();
super.setBaseSalary(super.getBaseSalary()+this.yearlySales*0.1);
}
@Override
public String toString() {
return "SalesPerson{" +
"yearlySales=" + yearlySales +
"," + super.toString() +
'}';
}
}

19
Week5/src/TestDriver.java Normal file
View File

@ -0,0 +1,19 @@
/**
* @author : 张宇轩
* @createTime : 2022/9/28 - 9:08
*/
public class TestDriver {
public static void main(String[] args) {
Administrator administrator = new Administrator("001", "Tom", "董事会", 4000.0, 2000.0);
SalesPerson salesPerson = new SalesPerson("002", "Lily", "销售", 5000.0, 20000.0);
System.out.println(administrator);
System.out.println(salesPerson);
administrator.updateSalary();
System.out.println(administrator.getBaseSalary());
salesPerson.updateSalary();
System.out.println(salesPerson.getBaseSalary());
}
}

View File

@ -0,0 +1,36 @@
package bank;
/**
* @author : 张宇轩
* @createTime : 2022/9/28 - 9:37
*/
public class BankAccount {
private String accountNum;
private Double balance;
public BankAccount(String accountNum, Double balance) {
this.accountNum = accountNum;
this.balance = balance;
}
public String getAccountNum() {
return accountNum;
}
public void setAccountNum(String accountNum) {
this.accountNum = accountNum;
}
public Double getBalance() {
return balance;
}
public void setBalance(Double balance) {
this.balance = balance;
}
@Override
public String toString() {
return "卡号:" + accountNum + ",余额:" + balance;
}
}

View File

@ -0,0 +1,27 @@
package bank;
/**
* @author : 张宇轩
* @createTime : 2022/9/28 - 9:39
*/
public class CheckingAccount extends BankAccount{
private Double serviceCharge;
public CheckingAccount(String accountNum, Double balance, Double serviceCharge) {
super(accountNum, balance);
this.serviceCharge = serviceCharge;
}
public Double getServiceCharge() {
return serviceCharge;
}
public void setServiceCharge(Double serviceCharge) {
this.serviceCharge = serviceCharge;
}
@Override
public String toString() {
return super.toString() + ",服务费:" + this.serviceCharge;
}
}

View File

@ -0,0 +1,61 @@
package bank;
/**
* @author : 张宇轩
* @createTime : 2022/9/28 - 9:36
*/
public class Customer {
private String SSN;//身份证号
private String name;
private CheckingAccount checkingAccount;
private SavingAccount savingAccount;
public Customer(String SSN, String name) {
this.SSN = SSN;
this.name = name;
}
public String getSSN() {
return SSN;
}
public void setSSN(String SSN) {
this.SSN = SSN;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public CheckingAccount getCheckingAccount() {
return checkingAccount;
}
public void setCheckingAccount(CheckingAccount checkingAccount) {
this.checkingAccount = checkingAccount;
}
public SavingAccount getSavingAccount() {
return savingAccount;
}
public void setSavingAccount(SavingAccount savingAccount) {
this.savingAccount = savingAccount;
}
@Override
public String toString() {
String info = "身份证号:" + this.SSN + ",姓名:" + this.name + "\n";
if (savingAccount != null) {
info += "存储卡信息:\n" + savingAccount + "\n";
}
if (checkingAccount != null) {
info += "信用卡信息:\n" + checkingAccount + "\n";
}
return info;
}
}

295
Week5/src/bank/Driver.java Normal file
View File

@ -0,0 +1,295 @@
package bank;
import java.io.IOException;
import java.util.Scanner;
/**
* @author : 张宇轩
* @createTime : 2022/9/28 - 10:02
*/
public class Driver {
private static Customer customer = null;
public static void main(String[] args) throws IOException {
while (true) {
int opt = menu();
switch (opt) {
case 1:
create();
break;
case 2:
save();
break;
case 3:
withDraw();
break;
case 4:
consume();
break;
case 5:
repay();
break;
case 6:
settle();
break;
case 7:
balance();
break;
case 8:
return;
}
System.out.println("按任意键继续...");
System.in.read();
}
}
/**
* 检查菜单选项输入合法性
* @param low 选项下界
* @param high 选项上界
* @return 合法选项值
*/
public static int checkInput(int low, int high) {
Scanner scanner = new Scanner(System.in);
if (scanner.hasNextInt()) {
int opt = scanner.nextInt();
if (opt >= low && opt <= high) {
return opt;
}
System.out.println("输入超限,请输入" + low + "-" + high + "的数字");
} else {
System.out.println("输入数据类型错误,请输入" + low + "-" + high + "的数字");
scanner.next();
}
return -1;
}
public static int menu() {
System.out.println("欢迎使用银行系统");
System.out.println("1.开户");
System.out.println("2.存款");
System.out.println("3.取款");
System.out.println("4.消费");
System.out.println("5.还款");
System.out.println("6.银行结算");
System.out.println("7.查询余额");
System.out.println("8.退出");
System.out.print(">>>请选择(1-8)");
int opt = -1;
while (opt == -1) {
opt = checkInput(1,8);
}
return opt;
}
/**
* 主菜单选项1 子菜单
*/
public static void create() {
if (customer != null && customer.getCheckingAccount() != null && customer.getSavingAccount() != null){
System.out.println("用户 " + customer.getName() + "(" + customer.getSSN() + ")" + " 信用卡、存储卡已全部开户!无需再次开户");
return;
}
System.out.println("请选择开卡类型");
System.out.println("1.信用卡");
System.out.println("2.存储卡");
System.out.println("3.返回");
System.out.print(">>>请选择(1-3)");
int opt = checkInput(1,3);
switch (opt){
case 1://信用卡开户
createCheckingAccount();
break;
case 2://存储卡开户
createSavingAccount();
break;
case 3://返回上一级
return;
}
}
/**
* 主菜单选项1 子菜单1 信用卡开户
*/
public static void createCheckingAccount() {
Scanner scanner = new Scanner(System.in);
if (customer == null){
System.out.print("请输入SSN");
String SSN = scanner.nextLine();
System.out.print("请输入姓名:");
String name = scanner.nextLine();
customer = new Customer(SSN, name);
}
if (customer.getCheckingAccount() == null){
System.out.print("请输入卡号:");
String accountNum = scanner.nextLine();
System.out.print("请输入服务费:");
double serviceCharge = scanner.nextDouble();
customer.setCheckingAccount(new CheckingAccount(accountNum, 0.0, serviceCharge));
System.out.println("成功创建信用卡账户!");
System.out.println(customer.getCheckingAccount());
} else {
System.out.println("信用卡已开户!无需创建");
}
}
/**
* 主菜单选项1 子菜单2 存储卡开户
*/
public static void createSavingAccount() {
Scanner scanner = new Scanner(System.in);
if (customer == null){
System.out.print("请输入SSN");
String SSN = scanner.nextLine();
System.out.print("请输入姓名:");
String name = scanner.nextLine();
customer = new Customer(SSN, name);
}
if (customer.getSavingAccount() == null) {
System.out.print("请输入卡号:");
String accountNum = scanner.nextLine();
System.out.print("请输入利率:");
double interestRate = scanner.nextDouble();
customer.setSavingAccount(new SavingAccount(accountNum, 0.0, interestRate));
System.out.println("成功创建存储卡账户!");
System.out.println(customer.getSavingAccount());
} else {
System.out.println("存储卡已开户!无需创建");
}
}
/**
* 主菜单选项2 存款
*/
public static void save(){
if (customer != null) {
SavingAccount savingAccount = customer.getSavingAccount();
if (savingAccount != null) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入存款金额:");
double balance = scanner.nextDouble();
savingAccount.setBalance(savingAccount.getBalance()+balance);
System.out.println("成功存款 " + balance + "");
} else {
System.out.println("存储卡未开户!");
}
} else {
System.out.println("用户未开户请先执行功能1");
}
}
/**
* 主菜单选项3 取款
*/
public static void withDraw(){
if (customer != null) {
SavingAccount savingAccount = customer.getSavingAccount();
if (savingAccount != null) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入取款金额:");
double balance = scanner.nextDouble();
Double accountBalance = savingAccount.getBalance();
if (accountBalance > balance){
savingAccount.setBalance(accountBalance - balance);
System.out.println("成功取款 " + balance + "");
} else System.out.println("取款失败,余额不足");
} else {
System.out.println("存储卡未开户!");
}
} else {
System.out.println("用户未开户请先执行功能1");
}
}
/**
* 主菜单选项4 消费
*/
public static void consume(){
if (customer != null) {
CheckingAccount checkingAccount = customer.getCheckingAccount();
if (checkingAccount != null) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入消费刷卡金额:");
double consumeMoney = scanner.nextDouble();
checkingAccount.setBalance(checkingAccount.getBalance() - consumeMoney);
System.out.println("成功消费 " + consumeMoney + "");
} else {
System.out.println("信用卡未开户!");
}
} else {
System.out.println("用户未开户请先执行功能1");
}
}
/**
* 主菜单选项5 还款
*/
public static void repay(){
if (customer != null) {
CheckingAccount checkingAccount = customer.getCheckingAccount();
if (checkingAccount != null) {
if (checkingAccount.getBalance() >= 0){
System.out.println("无需还款!");
return;
}
Scanner scanner = new Scanner(System.in);
System.out.print("请输入还款金额:");
double repayMoney = scanner.nextDouble();
checkingAccount.setBalance(checkingAccount.getBalance() + repayMoney);
System.out.println("成功还款 " + repayMoney + "");
} else {
System.out.println("信用卡未开户!");
}
} else {
System.out.println("用户未开户请先执行功能1");
}
}
/**
* 主菜单选项6 银行结算
*/
public static void settle(){
if (customer != null) {
SavingAccount savingAccount = customer.getSavingAccount();
if (savingAccount != null) {
Double oldBalance = savingAccount.getBalance();
double interestBalance = oldBalance * savingAccount.getInterestRate();
savingAccount.setBalance(oldBalance + interestBalance);
System.out.println("存储卡 " + savingAccount.getAccountNum() + " 结算已完成");
System.out.println("根据利率 " + savingAccount.getInterestRate() + " 获得利息 " + interestBalance + "");
}
CheckingAccount checkingAccount = customer.getCheckingAccount();
if (checkingAccount != null) {
checkingAccount.setBalance(checkingAccount.getBalance() - checkingAccount.getServiceCharge());
System.out.println("信用卡 " + checkingAccount.getAccountNum() + " 结算已完成");
System.out.println("已扣除服务费 " + checkingAccount.getServiceCharge() + "");
}
} else {
System.out.println("用户未开户请先执行功能1");
}
}
/**
* 主菜单选项7 查询信用卡余额存储卡余额
*/
public static void balance(){
if (customer != null) {
CheckingAccount checkingAccount = customer.getCheckingAccount();
if (checkingAccount != null) {
System.out.println("信用卡 " + checkingAccount.getAccountNum() + " 余额:" + checkingAccount.getBalance() + "");
} else {
System.out.println("信用卡 未开户");
}
SavingAccount savingAccount = customer.getSavingAccount();
if (savingAccount != null) {
System.out.println("存储卡 " + savingAccount.getAccountNum() + " 余额:" + savingAccount.getBalance() + "");
} else {
System.out.println("存储卡 未开户");
}
} else {
System.out.println("用户未开户请先执行功能1");
}
}
}

View File

@ -0,0 +1,27 @@
package bank;
/**
* @author : 张宇轩
* @createTime : 2022/9/28 - 9:44
*/
public class SavingAccount extends BankAccount{
private Double interestRate;
public SavingAccount(String accountNum, Double balance, Double interestRate) {
super(accountNum, balance);
this.interestRate = interestRate;
}
public Double getInterestRate() {
return interestRate;
}
public void setInterestRate(Double interestRate) {
this.interestRate = interestRate;
}
@Override
public String toString() {
return super.toString() + ",利率:" + this.interestRate;
}
}