package com.hp.service;
//此类是完成客户的所有业务(增删改查)
import com.hp.bean.Customer;
import com.hp.bean.CustomerData;
import com.hp.util.TextUtil;
import java.awt.geom.CubicCurve2D;
import java.util.List;
import java.util.Scanner;
public class CustomerService {
private List<Customer> customerList;
private Customer currentCustomer;
// 1.查询,登录 判断账号密码是否正确
public void checkPwd(String cardid,String cardPwd){
CustomerData customerData = CustomerData.getInstance();
customerList = customerData.getCustomerList();
//1.拿到 carid中的账户和cardPwd对list中的数据作对比
System.out.println("cardid = " + cardid);
System.out.println("cardPwd = " + cardPwd);
for (Customer customer : customerList) {
if (customer.getAccount().equals(cardid) && customer.getPassword().equals(cardPwd)){
//拿出来这个人
currentCustomer = customer;
//账户正确
System.out.println("欢迎"+customer.getCname()+"顾客登录!请注意您的安全");
TextUtil.oneLeveOption();// 界面
Scanner sc = new Scanner(System.in);
String option = sc.nextLine();
oneOption(option);
//如何保证按了 1 3 5..让他在回到此界面
}
}
}
//提取成一个方法
private void oneOption(String option){
switch (option){
case "1":
System.out.println("余额查询");
//查询余额外
doSelectMoney();
//当按下1后,回退到1及选项
goOneHome();
break;
case "2":
System.out.println("请输入取多少钱:");
qukuan();
doSelectMoney();
goOneHome();
break;
case "3":
System.out.println("转账");
goOneHome();
break;
case "4":
System.out.println("请输入存多少钱");
cunkuan();
doSelectMoney();
goOneHome();
break;
case "5":
System.out.println("退卡");
break;
}
}
//查询余额
private void doSelectMoney() {
double money = currentCustomer.getMoney();
System.out.println("余额是 " +money);
}
//取款
private void qukuan(){
Scanner sc = new Scanner(System.in);
double money2 = sc.nextDouble();
System.out.println("取了"+money2+"元" );
double money = currentCustomer.getMoney();
double money3 = money-money2;
currentCustomer.setMoney(money3);
}
//存款
private void cunkuan(){
Scanner sc = new Scanner(System.in);
double money2 = sc.nextDouble();
System.out.println("cun了"+money2+"元" );
double money = currentCustomer.getMoney();
double money3 = money+money2;
currentCustomer.setMoney(money3);
}
private void goOneHome( ){
TextUtil.oneLeveOption(); //运行返回界面
Scanner scanner = new Scanner(System.in);
String option = scanner.nextLine();
System.out.println("option1 = " + option);
oneOption(option); // 递归算法
}
}
package com.hp.util;
public class TextUtil {
//welcome的界面
// static 修饰方法, 1. 可以 直接 被 类名.方法() 调用 2. 在内存中只有1份, 其他修改,他会跟着修改
// 还有. 关于 static 静态 代码块. 他一般适用于 界面场景的提前加载, 如 王者荣耀中 峡谷的轮廓永远优先英雄出现.
// static{
// 这就叫做 静态代码块
// }
//提取成为一个工具类
public static void welcome(){
System.out.println("****************");
System.out.println("欢迎使用atm取款机");
System.out.println("****************");
}
// 客户的 1级 选择 提取成一个工具类
public static void oneLeveOption(){
System.out.println("*****************************************");
System.out.println("********请输入你想要的操作类型:*********");
System.out.println("********1.余额查询 2.取款*********");
System.out.println("********3.转账 4.存款*********");
System.out.println("********5.退卡 *********");
System.out.println("*****************************************");
}
}
package com.hp.bean;
import java.util.ArrayList;
import java.util.List;
//使用单例模式把客户初始化了
public class CustomerData {
private static CustomerData ourInstance = new CustomerData();
private List<Customer> customerList;
public static CustomerData getInstance() {
return ourInstance;
}
private CustomerData() {
//在构造中初始化数据
customerList = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
//每循环一次 就诞生一个customer对象 放入到集合中
Customer customer = new Customer();
customer.setAccount("5201314"+i);
customer.setPassword("123");
customer.setCname("葫芦娃"+i+"号");
customer.setMoney(10000);
customer.setPaoneNum("15539530187"+i);
customerList.add(customer);
}
}
public List<Customer> getCustomerList() {
return customerList;
}
public void setCustomerList(List<Customer> customerList) {
this.customerList = customerList;
}
}
package com.hp.bean;
public class Customer {
private String account,password,cname,paoneNum;
private double money;
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getPaoneNum() {
return paoneNum;
}
public void setPaoneNum(String paoneNum) {
this.paoneNum = paoneNum;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
@Override
public String toString() {
return "Customer{" +
"account='" + account + '\'' +
", password='" + password + '\'' +
", cname='" + cname + '\'' +
", paoneNum='" + paoneNum + '\'' +
", money=" + money +
'}';
}
}
package com.hp.controller;
import com.hp.bean.Customer;
import com.hp.bean.CustomerData;
import com.hp.service.CustomerService;
import com.hp.util.TextUtil;
import java.util.List;
import java.util.Scanner;
//atm 取款机入口
public class AtmMain {
private static String cardid;// 提取成为常量
private static String cardPwd;
private static CustomerService customerService;
public static void main(String[] args) {
customerService = new CustomerService();
// 测试 客户类的 数据 // 作业1: 对 manager管理类 做出 单例模式. 并测试 是否数据初始了.
//CustomerData customerData = CustomerData.getInstance();
//List<Customer> customerList = customerData.getCustomerList();
// for (Customer customer : customerList) {
// System.out.println("customer = " + customer);
// }
//是一个阶段
TextUtil.welcome();
int i = 0;
while(i<6){ //如果输入超过5次就会终止程序
//输入账户密码一个阶段
doWritePassword();
//校检角色 账户密码的正确性
doCheckPassword(cardid,cardPwd);
i++;
}
}
//判断角色和判断密码
private static void doCheckPassword(String cardid, String cardPwd) {
// 1. 先校验角色, 判断 cardid 的长度.
if (cardid.length()==8) { // 客户
// 校验密码
customerService.checkPwd(cardid,cardPwd);
}
}
private static void doWritePassword(){
System.out.println("请输入卡号");
Scanner sc = new Scanner(System.in);
cardid = sc.nextLine();
System.out.println("cardid = " + cardid);
System.out.println("请输入密码");
cardPwd = sc.nextLine();
System.out.println("cardPwd = " + cardPwd);
}
}