用java实现一个简易自动提款机

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39984761/article/details/78858082

用java实现一个简易自动提款机,且有以下要求

这里写图片描述

如何实现呢?首先,我们定义一个用户类User,同时根据要求设计好属性(本人部分命名没有使用驼峰命名法,不够规范)。因为一个人可能有多个卡,卡号又不能重复,所以我定义一个set来存储卡号。其余姓名,密码用String定义即可,余额我这里用的的double定义(不嫌麻烦也可以用BigDecimal)。然后自动生成构造方法和Getter和setter方法即可

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

public class User {                            //用户类User
private Set<Integer> set=new TreeSet<Integer>()  ;  //私有的成员变量——卡号
private String name;                                //私有的成员变量 姓名
private String miMa;                                //私有的成员变量 密码
private double yuE;                                 //私有的成员变量 余额
public User(int cardNum, String name, String miMa) {
    this.set.add(cardNum) ;
    this.name = name;
    this.miMa = miMa;
    this.yuE = 0;
}
public boolean hasNum(int CardNum) {
    Iterator<Integer> iter=set.iterator();
    while(iter.hasNext()){
        int in=iter.next();
        if(in==CardNum){
            return true;
        }
    }
    return false;
}
public void setCardNum(int cardNum) {
    this.set.add(cardNum);
}

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getMiMa() {
    return miMa;
}
public void setMiMa(String miMa) {
    this.miMa = miMa;
}
public double getYuE() {
    return yuE;
}
public void setYuE(double yuE) {
    this.yuE += yuE;
}
public void setYuE2(double yuE) {
    this.yuE -= yuE;
}
}

然后再定义一个类写方法实现取款机的功能,因为取款机不提供开户功能,所以这里我只写了简单的create方法,然后实现取款,存款,查询方法即可。

package com.baidu.HomeWork.Work16;

import java.util.InputMismatchException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Scanner;

public class Method {
    static LinkedList<User> userList = new LinkedList<User>();
    Scanner scan = new Scanner(System.in);
    double mon;
    static int cardNum = 100000;
    static int Card = 0;
    void saveMon(int Card, int i) { 
        /*存款方法
         * 传入账号Card,循环变量i
         * 
         * 
         * 
         * 
         * 
         * 
         * 
         * */
        System.out.println("您的名字是" + userList.get(i).getName());
        System.out.println("请输入存款金额");
        try {
            mon = scan.nextDouble();
        } catch (InputMismatchException e) {
            e.printStackTrace();
        } catch (RuntimeException e) {
            e.printStackTrace();
        }
        userList.get(i).setYuE(mon);
        System.out.println("存入" + mon + "元");
        System.out.println("现在您的账号余额" + userList.get(i).getYuE());

    }

    void getMon(int Card, int i) {
        /*取款方法
         * 传入账号Card,循环变量i
         * 
         * 
         * 
         * 
         * 
         * 
         * 
         * */
        System.out.println("您的名字是" + userList.get(i).getName());
        System.out.println("请输入取款金额");
        try {
            mon = scan.nextDouble();
        } catch (InputMismatchException e) {
            e.printStackTrace();
        }
        if (mon < userList.get(i).getYuE()) {
            userList.get(i).setYuE2(mon);
            System.out.println("取出" + mon + "元");
            System.out.println("现在您的账号余额" + userList.get(i).getYuE());
        }

    }

    void cha(int Card, int i) {
        /*查询方法
         * 传入账号Card,循环变量i
         * 
         * 
         * 
         * 
         * 
         * 
         * 
         * */
            System.out.println("您的名字是" + userList.get(i).getName());
            System.out.println("现在您的账号余额" + userList.get(i).getYuE());
    }

    void creatUser() {
        /*创建用户方法,因为取款机不提供该功能,因此仅调用一次做测试使用 
         * 
         * 
         * 
         * 
         * 
         * 
         * 
         * */
        String name = "";
        String miMa = "";
        System.out.println("请输入姓名");
        try {
            name = scan.next();
        } catch (RuntimeException e) {
            e.printStackTrace();
        }

        System.out.println("请输入密码");
        try {
            miMa = scan.next();
        } catch (RuntimeException e) {
            e.printStackTrace();
        }
        userList.add(new User(++cardNum, name, miMa));
        System.out.println("您的账号是:" + cardNum);
    }

    int dengLu() {       //登录方法,判断用户是否存在以及密码是否正确
        boolean tag = true;

        String miMa;
        System.out.println("请输入账号");
        try {
            Card = scan.nextInt();
        } catch (InputMismatchException e) {
            e.printStackTrace();
        } catch (RuntimeException e) {
            e.printStackTrace();
        }
        System.out.println("请输入密码");
        miMa = scan.next();
        for (int i = 0; i < userList.size(); i++) {
            if (userList.get(i).hasNum(Card)) {
                if (userList.get(i).getMiMa().equals(miMa)) {
                    return i;
                } else {
                    System.out.println("密码错误");
                    break;
                }

            } else {

            }
        }

        System.out.println("查无此号");
        return -2;
    }
}

最后,在主类中定义一个链表存储User,在编写一个简易的菜单,把第二个文件写好的文件放入其中,取款机就写好了。

package com.baidu.HomeWork.Work16;

import java.util.InputMismatchException;
import java.util.LinkedList;
import java.util.Scanner;

public class GetMonMachine {
    static int num = 0;
    static boolean tag = true;
    static boolean tag_1 = true;
    static Scanner scan = new Scanner(System.in);
    static Method gm = new Method();

    public static void main(String[] args) {
        gm.creatUser();
        while (tag) { // 主菜单
            int num;
            if ((num = gm.dengLu()) != -2) {
                System.out.println("1.存款");
                System.out.println("2.取款");
                System.out.println("3.查询余额");
                System.out.println("4.退出取款机");
                int scan_num = 4;
                try {
                    scan_num = scan.nextInt();
                } catch (InputMismatchException e) {
                    System.out.println("输入非法");
                    e.printStackTrace();
                }
                switch (scan_num) { // 主菜单选择
                case 1:
                    gm.saveMon(Method.Card,num);
                    break;
                case 2:
                    gm.getMon(Method.Card,num);
                    break;
                case 3:
                    gm.cha(Method.Card,num);
                    break;
                case 4:
                    tag = false;
                    break;
                default:
                    System.out.println("输入有误,请重新输入");
                    break;
                }

            }
        }
    }

}

最后,在有输入的地方加上try{}catch(){}处理可能发生的异常,就可以了。

猜你喜欢

转载自blog.csdn.net/qq_39984761/article/details/78858082