亲宝软件园·资讯

展开

Java ATM系统

LIiuxb 人气:0

一.业务分析

通过使用Java面向对象的基础知识,开发一个ATM系统,实现存款,取款,转账,修改密码,注销账户等功能。

二.开发准备

首先,创建一个用户类,为建立用户对象做准备,用户类主要包括用户卡号(系统随机生成),用户名,账户密码,余额,取现额度。并搭建构造器,以及get,set。

public class user {
    private String cardId ;     //卡号
    private String username;    //用户名
    private String password;    //密码
    private double money;       //余额
    private double qumoney;     //取现额度
 
 
    public user(String cardId, String username, String password,  double qumoney) {
        this.cardId = cardId;
        this.username = username;
        this.password = password;
        this.qumoney = qumoney;
    }
 
    public user() {
    }
 
    public String getCardId() {
        return cardId;
    }
 
    public void setCardId(String cardId) {
        this.cardId = cardId;
    }
 
    public String getUsername() {
        return username;
    }
 
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public double getMoney() {
        return money;
    }
 
    public void setMoney(double money) {
        this.money = money;
    }
 
    public double getQumoney() {
        return qumoney;
    }
 
    public void setQumoney(double qumoney) {
        this.qumoney = qumoney;
    }
}

三.创建测试类,写入main方法

public class ATMSystem {
    public static void main(String[] args) {
        ArrayList<user> users = new ArrayList<>();
        Main(users);
    }

四.将主界面设置成Main方法,设计主界面,包括登录账户,注册账户,并且设置登录方法,注册方法,再调用。

public static void Main(ArrayList<user> users) {
        System.out.println("==========欢迎进入xx银行ATM系统==========");
        while (true) {
            System.out.println("请选择操作:");
            System.out.println("1.登录账户");
            System.out.println("2.注册账户");
            Scanner sc = new Scanner(System.in);
            int command = sc.nextInt();
            switch (command) {
                case 1:                 //登录
                    denglu(users, sc);
                    break;
                case 2:                 //注册
                    zhuce(users, sc);
                    break;
                default:
                    System.out.println("功能不存在!");
            }
        }
    }

运行结果:

五.将注册账户写成方法 

public static void zhuce(ArrayList<user> users, Scanner sc) {
        System.out.println("==========注册账户==========");
        String password = "";
        String password2 = "";
        System.out.println("请输入您的账号名称:");
        sc = new Scanner(System.in);
        String name = sc.next();
        while (true) {
            System.out.println("请输入您的账号密码:");
            password = sc.next();
            System.out.println("请您再次输入密码:");
            password2 = sc.next();
            if (password2.equals(password)) {
                break;
            } else {
                System.out.println("两次密码输入不一致!,请重新输入");
            }
        }
        //生成卡号
        System.out.println("请输入账号当次限额");
        double qumoney = sc.nextDouble();
        String cardId = kahao(users);
        user u1 = new user(cardId, name, password, qumoney);
        users.add(u1);
        System.out.println("恭喜开户成功!,您的卡号是" + u1.getCardId() + ",请您保管");
 
    }

其中,涉及到生成卡号,以及查询系统生成的卡号是否相同,需要再写两个方法:

//生成卡号
    public static String kahao(ArrayList<user> users) {
        while (true) {
            Random rs = new Random();
            String cardId = "";
            for (int i = 0; i < 8; i++) {
                cardId += rs.nextInt(10);
            }
            user a = getcardId(cardId, users);
            if (a == null) {
                //无重复
                return cardId;
            }
        }
    }
//查询卡号
    public static user getcardId(String kahao, ArrayList<user> users) {
        for (int i = 0; i < users.size(); i++) {
            user a = users.get(i);
            if (a.getCardId().equals(kahao)) {
                return a;
            }
        }
        return null;
    }

六.将登录账户写成方法,并设计主界面

public static void denglu(ArrayList<user> users, Scanner sc) {
        System.out.println("==========登录账户==========");
        if (users.size() == 0) {
            System.out.println("系统中无账户!请先注册");
            return;
        }
        while (true) {
            System.out.println("请输入您的卡号:");
            String cardId = sc.next();
            String password = "";
            user acc = getcardId(cardId, users);
            if (acc != null) {
                while (true) {
                    System.out.println("请输入您的密码:");
                    password = sc.next();
                    //判断密码是否正确
                    if (acc.getPassword().equals(password)) {
                        System.out.println("登录成功!,欢迎卡号" + acc.getCardId() + "的贵宾" + acc.getUsername() + "进入系统");
                        //展示系统登录后的操作界面
                        jiemian(sc, acc, users);
                        return;
                    } else {
                        System.out.println("密码错误!请重新输入");
                    }
                }
            } else {
                System.out.println("不存在该卡号!");
            }
        }
    }

六.1编写 展示主界面方法

public static void jiemian(Scanner sc, user acc, ArrayList<user> users) {
        while (true) {
            System.out.println("==========欢迎进入xx银行用户操作界面===========");
            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.注销当前账户");
            sc = new Scanner(System.in);
            int commend = sc.nextInt();
            switch (commend) {
                case 1:
                    atm1(acc);
                    break;
                case 2:
                    atm2(acc, sc);
                    break;
                case 3:
                    atm3(acc, sc);
                    break;
                case 4:
                    atm4(users, acc, sc);
                    break;
                case 5:
                    atm5(acc, sc);
                    return;
                case 6:
                    System.out.println("欢迎下次来到ATM系统");
                    return;
                case 7:
                    System.out.println("是否确认注销账户?按1确认,按2取消注销");
                    int tf = sc.nextInt();
                    if (tf == 1) {
                        users.remove(acc);
                        System.out.println("注销成功!");
                        return;
                    } else {
                        System.out.println("取消注销");
                        break;
                    }
                default:
                    System.out.println("不存在该功能!");
            }
        }
 
    }

七.接下来,依次编写各个功能的方法

//查询功能
    private static void atm1(user acc) {
        System.out.println("========当前账户详情=========");
        System.out.println("卡号:" + acc.getCardId());
        System.out.println("姓名:" + acc.getUsername());
        System.out.println("余额:" + acc.getMoney());
        System.out.println("当次取款限额:" + acc.getQumoney());
    }
 
    //存款功能
    private static void atm2(user acc, Scanner sc) {
        System.out.println("=========存款操作=========");
        System.out.println("请您输入存款金额:");
        double money = sc.nextDouble();
        acc.setMoney(acc.getMoney() + money);
        System.out.println("存款成功!");
        atm1(acc);
 
    }
 
    //取款
    private static void atm3(user acc, Scanner sc) {
        System.out.println("=========取款操作=========");
        if (acc.getMoney() < 100) {
            System.out.println("您的账户余额不足100元!无法取款");
            return;
        } else {
            while (true) {
                System.out.println("请您输入取款金额:");
                double money = sc.nextDouble();
                if (money > acc.getMoney()) {
                    System.out.println("账户余额不足!");
                    System.out.println("继续取款按1,退出取款按2");
                    int commend = sc.nextInt();
                    switch (commend) {
                        case 1:
                            break;
                        case 2:
                            return;
                    }
                } else if (money > acc.getQumoney()) {
                    System.out.println("超过了当次取款限额!,每次最多可以取" + acc.getQumoney() + "元");
                } else {
                    System.out.println("取款成功!");
                    acc.setMoney(acc.getMoney() - money);
                    atm1(acc);
                    return;
                }
            }
        }
    }
 
    //转账
    private static void atm4(ArrayList<user> users, user acc, Scanner sc) {
        System.out.println("=========转账操作=========");
        //判断系统中是否有两个以上账户
        if (users.size() < 2) {
            System.out.println("系统中无其他账户,不可以转账!");
            return;
        } else {
            if (acc.getMoney() == 0) {
                System.out.println("您的账户余额为0,无法转账");
                return;
            } else {
                while (true) {
                    System.out.println("请输入对方的卡号:");
                    String dui = sc.next();
                    user c = getcardId(dui, users);
                    if (c != null) {
                        //判断账户对象是否为自己
                        if (c.getCardId().equals(acc.getCardId())) {
                            System.out.println("不能给自己转账!");
                        } else {
                            //确认对方姓氏
                            String name = "*" + c.getUsername().substring(1);
                            System.out.println("请您确认[" + name + "]的姓氏");
                            String xingshi = sc.next();
                            if (c.getUsername().startsWith(xingshi)) {
                                System.out.println("输入正确!");
                                while (true) {
                                    System.out.println("请您输入转账金额:");
                                    double money = sc.nextDouble();
                                    if (money > acc.getMoney()) {
                                        System.out.println("余额不足!");
                                        System.out.println("继续转账按1,退出转账按2");
                                        int commend = sc.nextInt();
                                        switch (commend) {
                                            case 1:
                                                break;
                                            case 2:
                                                return;
                                        }
                                    } else {
                                        acc.setMoney(acc.getMoney() - money);
                                        c.setMoney(c.getMoney() + money);
                                        System.out.println("为" + c.getUsername() + "用户" + "转账成功");
                                        atm1(acc);
                                        return;
                                    }
                                }
                            } else {
                                System.out.println("对不起,您输入的信息有误!");
                            }
                        }
 
                    } else {
                        System.out.println("对不起,您输入卡号有误!");
                    }
                }
            }
        }
    }
 
    //修改密码操作
    private static void atm5(user acc, Scanner sc) {
        System.out.println("=========修改密码操作=========");
        while (true) {
            System.out.println("请输入您的旧密码:");
            String oldpassword = sc.next();
            String newpassword = "";
            if (oldpassword.equals(acc.getPassword())) {
                while (true) {
                    System.out.println("请输入新密码:");
                    newpassword = sc.next();
                    if (newpassword.equals(oldpassword)) {
                        System.out.println("新密码不能与旧密码重复!");
                    } else {
                        System.out.println("请再次输入密码:");
                        String okpassword = sc.next();
                        if (newpassword.equals(okpassword)) {
                            System.out.println("修改密码成功!");
                            acc.setPassword(newpassword);
                            return;
                        } else {
                            System.out.println("两次密码输入不一致!");
                        }
                    }
                }
            }
                else{
                        System.out.println("旧密码输入错误!");
                    }
        }
    }

至此,所有功能完成。

加载全部内容

相关教程
猜你喜欢
用户评论