ATM系统开发

package longma_01;
//用户类
/**
 * @安得广厦千万间
 * @大庇天下寒士俱欢颜
 * @-----龙马-----@
 */
public class demo_02 {
    private  String cardId;
    private  String userName;
    private  String passWord;
    private  double money;
    private  double quotaMoney;

    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 getQuotaMoney() {
        return quotaMoney;
    }

    public void setQuotaMoney(double quotaMoney) {
        this.quotaMoney = quotaMoney;
    }
}
package longma_01;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
/**
 * @安得广厦千万间
 * @大庇天下寒士俱欢颜
 * @-----龙马-----@
 */
public class demo_01 {
    public static void main(String[] args) {
        ArrayList<demo_02> accounts = new ArrayList<>();
        Scanner scan = new Scanner(System.in);
        start:
        while (true) {
            System.out.println("------------龙马ATM系统------------");
            System.out.println("            1.账户登录");
            System.out.println("            2.账户注册");
            System.out.println("            3.退出登录系统");
            for (int i = 0; i < accounts.size(); i++) {
                System.out.println(accounts.get(i).getCardId());
            }
            System.out.print("请选择操作:");
            int commond = scan.nextInt();
            switch (commond) {
                case 1:login(scan,accounts);
                    break;
                case 2:
                    register(accounts, scan);
                    break;
                case 3:
                    break start;
                default:
                    System.out.println("输入操作错误,请重新输入:");
            }
        }
    }

    /**
     * 登录功能
     * @param scan
     * @param accounts
     */

    private static void login(Scanner scan, ArrayList<demo_02> accounts) {
        System.out.println("--------欢迎进入用户登录界面--------");
        if(accounts.size()==0) {
            System.out.println("没有任何账户,请先进行账户注册");
            return;
        }
        while (true) {
            System.out.println("输入登录卡号");
            String id= scan.next();
            demo_02 acc=get_id(accounts,id);
            if(acc!=null){
                while (true) {
                    System.out.println("请您输入登录密码:");
                    String pass=scan.next();
                    if(acc.getPassWord().equals(pass)){
                        System.out.println("恭喜您"+acc.getUserName()+"登录成功");
                        showUserCommond(scan,acc,accounts);
                        return;
                    }
                    else{
                        System.out.println("您输入密码错误,请重新输入:");
                    }
                }
            }
            else {
                System.out.println("对不起,系统中没有该卡号,请重新输入卡号:");
            }
        }
    }

    private static void showUserCommond(Scanner scan,demo_02 acc,ArrayList<demo_02> accounts) {
        while (true) {
            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("请选择您的操作:");
            int commond=scan.nextInt();
            switch (commond){
                case 1:showAccount(acc);
                    break;
                case 2:sava(acc,scan);
                    break;
                case 3:drawMoney(acc,scan);
                    break;
                case 4:transformMoney(scan,acc,accounts);
                    break;
                case 5:updatePassword(scan,acc);
                    return;
                case 6:
                    System.out.println("成功退出!");
                    return;
                case 7:
                    System.out.println("确认进行销户操作!!!y/n");
                    String rs=scan.next();
                    switch (rs){
                        case "y":
                            if(acc.getMoney()>0){
                                System.out.println("当前账户余额未取完,请取完余额在进行销户!!");
                                break;
                            }
                            else {
                                accounts.remove(acc);
                                System.out.println("您当前账户已完成销户!!");
                                return;
                            }
                        case "n":
                            System.out.println("当前账户继续进行保留");
                            break;
                    }
                default:
            }
        }

    }

    /**
     *
     * @param scan
     * @param acc
     */
    private static void updatePassword(Scanner scan, demo_02 acc) {
        System.out.println("-------------------用户密码修改----------------------");
        while (true) {
            System.out.println("请输入当前密码:");
            String pass=scan.next();
            if(acc.getPassWord().equals(pass)){
                while (true) {
                    System.out.println("请输入新密码:");
                    String newPass1= scan.next();
                    System.out.println("请再次输入新密码:");
                    String newPass2= scan.next();
                    if(newPass2.equals(newPass1)){
                        acc.setPassWord(newPass1);
                        System.out.println("密码修改成功!!");
                        return;
                    }
                    else{
                        System.out.println("两次密码不一致!!!");
                    }
                }
            }
            else{
                System.out.println("密码不正确");
            }
        }
    }

    private static void transformMoney(Scanner scan, demo_02 acc, ArrayList<demo_02> accounts) {
        System.out.println("-------------用户转账界面---------------");
        if(accounts.size()>2){
            System.out.println("当前系统账户总数小于2,无法完成转账,请去注册账户吧!!!");
            return;
        }
        while (true) {
            System.out.println("请输入对方卡号:");
            String id=scan.next();
            if(id.equals(acc.getCardId())) {
                System.out.println("对不起,您不能给自己进行转账!!!");
                continue;
            }
            demo_02 acc_temp=get_id(accounts,id);
            if(acc_temp==null) {
                System.out.println("系统中没有此开户卡号!!!");
            }
            else{
                String name=acc_temp.getUserName();
                String tip="*"+name.substring(1);
                System.out.println("请输入["+tip+"]的姓氏:");
                String str=scan.next();
                if(name.startsWith(str)){
                    while (true) {
                        System.out.println("请您输入转账金额:");
                        double t_money=scan.nextDouble();
                        if(t_money>acc.getMoney())
                        {
                            System.out.println("对不起,您卡上余额不足!!!,当前余额"+acc.getMoney());
                        }
                        else{
                            acc.setMoney(acc.getMoney()-t_money);
                            acc_temp.setMoney(acc_temp.getMoney()+t_money);
                            System.out.println("转账成功!当前账户余额"+acc.getMoney());
                            return;
                        }
                    }
                }
                else{
                    System.out.println("对不起,您输入信息有误!!!");
                }

            }
        }

    }

    private static void drawMoney(demo_02 acc, Scanner scan) {
        System.out.println("---------------用户取款-----------------");
        if(acc.getMoney()<100){
            System.out.println("余额不足100元,不能取款!");
            return;
        }

        while (true) {
            System.out.println("输入取款金额:");
            double money=scan.nextDouble();
            if(money>acc.getQuotaMoney()){
                System.out.println("对不起,取款失败,取款金额超过最大限额"+acc.getQuotaMoney()+"元\n请重新输入取款金额!!!");
            }
            else{
                if(money>acc.getMoney())
                    System.out.println("卡上余额不足,您目前余额为:"+acc.getMoney()+"元");
                else{

                    System.out.println("恭喜您,成功取款"+money+"元");
                    acc.setMoney(acc.getMoney()-money);
                    showAccount(acc);
                    return;
                }
            }
        }
    }

    private static void sava(demo_02 acc, Scanner scan) {
        System.out.println("------------进行用户存钱---------------");
        System.out.println("输入存款金额:");
        double money=scan.nextInt();
        acc.setMoney(acc.getMoney()+money);
        System.out.println("恭喜1存钱操作完成,更新后账户信息如下:");
        showAccount(acc);

    }

    private static void showAccount(demo_02 acc) {
        System.out.println("------------当前账户信息---------------");
        System.out.println("卡号:"+acc.getCardId());
        System.out.println("用户:"+acc.getUserName());
        System.out.println("余额:"+acc.getMoney());
        System.out.println("限额:"+acc.getQuotaMoney());
    }

    /**
     * @param accounts
     * 用户注册
     */
    private static void register(ArrayList<demo_02> accounts, Scanner scan) {
        System.out.println("--------系统开户操作---------");
        demo_02 account = new demo_02();


        System.out.println("输入用户名");
        String name = scan.next();
        account.setUserName(name);

        while (true) {
            System.out.println("输入登录密码");
            String pass1 = scan.next();
            System.out.println("请再次确认密码");
            String pass2 = scan.next();
            if (pass1.equals(pass2)) {
                account.setPassWord(pass1);
                break;
            }
            else {
                System.out.println("对不起,两次密码不一致,请重新输入");
            }
        }


        System.out.println("请输入限额");
        double quot = scan.nextDouble();
        account.setQuotaMoney(quot);

        String id = get_rad_id(accounts);
        account.setCardId(id);

        accounts.add(account);
        System.out.println("恭喜" + account.getUserName() + "开户成功");
        System.out.println("您的开户卡号为"+account.getCardId());
    }


    /**
     *
     * @param accounts
     * @return
     * 获取随机卡号
     */
    private static String get_rad_id(ArrayList<demo_02> accounts) {
        Random rad = new Random();
        while (true) {
            String id = "";

            for (int i = 0; i < 8; i++) {
                id += rad.nextInt(10);
            }
            if (get_id(accounts, id) == null)
                return id;
        }
    }


    /**
     * 判断卡号是否重复
     * @param accounts
     * @param id
     * @return
     */
    private static demo_02 get_id(ArrayList<demo_02> accounts, String id) {
        for (int i = 0; i < accounts.size(); i++) {
            demo_02 account = accounts.get(i);
            if (account.getCardId().equals(id))
                return account;
        }
        return null;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值