用java实现一个ATM机系统(2.0版)
阅读原文时间:2023年07月11日阅读:1

用java实现一个ATM机系统(2.0版)

java实现银行ATM自助取款机,实现功能:用户登录、余额查询、存钱、取钱、转账、修改密码、退出系统。

文章目录

设计五个类包括测试类:
1,ATM类也是主要的类,负责实现用户一系列的操作;
2,Data类,作为ATM类的一个属性,主要实现从java文件user中获取用户全部信息,并返回要找的用户,再将修改完之后的用户信息写入文件中。
这个类是ATM机与文件之间的桥梁;
3,Bank类,有ATM机(has-a),欢迎用户来使用ATM机;
4,User类,使用ATM机(use-a);
5,Demo类,测试类,创建一个环境,让类产生关系。

需要注意java文件user的位置,Data类要进行操作它。

package newBank;

import java.util.Scanner;

//ATM类
public class ATM {
    //有一个类操作数据的类
    private Data data = new Data();
    //ATM机里的数据
    private String userName;//用户账号且唯一
    private String userPassword;//用户密码
    private double userMoney;//用户账户里的钱
    private double money;//变量,存,取,转账的钱
    private String user;//使用该台ATM机的用户全部信息

    //ATM界面
    public void show(){
        System.out.println("欢迎使用ATM机");
        //使用登录方法,输入账号和密码
        int number = login();
        //如果登录成功
        if(number == 4)
            working();//ATM机办理业务

    }
    //登录方法
    private int login(){
        int number = 3;//用户输入次数
        while(number > 0) {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入账号:");
            //输入账号
            String inUserName = input.nextLine();
            //输入密码
            System.out.println("请输入密码:");
            String inUserPassword = input.nextLine();
            String x = data.backUser(inUserName);
            //判断账户是否存在
            if(!x.equals("null")){
                user = x;//获取用户所有信息
                String[] str = user.split("\\*");//将用户信息分割
                userName = str[0];//用户名
                userPassword = str[1];//用户密码
                userMoney = Double.parseDouble(str[2]);//用户余额
                //密码正确
                if(userPassword.equals(inUserPassword)){
                    System.out.println("登录成功");
                    number = 4;//次数变为4
                    break;
                }
            }
            number --;//次数减一
            System.out.println("账号或密码输入错误。。。");
            System.out.println("您还有" + number + "次机会");
        }
        return number;//是否登录成功
    }

    //功能界面
    private void functionShow(){
        System.out.println("**********************");
        System.out.println("\t欢迎使用ATM");
        System.out.println("1,账户余额查询\n2,存钱\n3,取钱\n4,转账\n5,修改用户密码\n6,退出系统\n");
        System.out.println("**********************");
    }

    //用户要进行的操作
    private void working(){
        String index;//业务序号
        do{
            functionShow();//调用功能界面
            System.out.println("请输入要办理的业务序号:");
            Scanner input = new Scanner(System.in);
            index = input.nextLine();
            switch(index){
                case "1":
                    look();
                    break;
                case "2":
                    saveMoney();
                    break;
                case "3":
                    getMoney();
                    break;
                case "4":
                    giveMoney();
                    break;
                case "5":
                    changePassword();
                    break;
                case "6":
                    System.out.println("欢迎下次光临!");
                    user = changeUser(userName,userPassword,userMoney);
                    data.saveData(user,true);//用户退出后保存用户信息
                    break;
                default:
                    System.out.println("您输入有误,请重新输入。。。。");
            }
        }while(!index.equals("6"));
    }

    //是否继续某项操作
    private boolean isContinue(){
        System.out.println("继续办理该项业务:请输入Y/y");
        System.out.println("返回上一级:请输入N/n");
        Scanner input = new Scanner(System.in);
        String str = input.nextLine();
        if(str.equalsIgnoreCase("Y"))
            return true;
        else
            return false;
    }

    //存钱,取钱,转账共用
    private void howMuch(String str){
        System.out.println("欢迎办理"+ str +"业务。。。。。。");
        System.out.println("请输入金额(只能是整数且是100的倍数,最多为10000):");
        Scanner input = new Scanner(System.in);
        Double money = input.nextDouble();
        if(money%10 != 0) {
            System.out.println("您输入有误!");
            this.money = 0;
        }
        else
            this.money = money;
    }

    //查询实现
    private void look(){
        System.out.println("用户余额为:" + userMoney);
        try{
            Thread.sleep(2000);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    //存钱实现
    private void saveMoney(){
        howMuch("存钱");
        if(money != 0) {//如果存的钱正确
            userMoney = userMoney + money;//存上
            System.out.println("已存入");
            look();//显示余额
        }
        if(isContinue())
            saveMoney();
    }

    //判断余额是否充足
    private boolean isEnough(){
        if(money <= userMoney){
            userMoney = userMoney - money;
            return true;
        }
        else{
            System.out.println("您的余额不足!");
            return false;
        }
    }

    //取钱实现
    private void getMoney(){
        howMuch("取钱");
        //如果取的钱正确且如果转账账户余额够
        if(money != 0 && isEnough()){
            look();
            System.out.println("请收好您的钱");
        }
        if(isContinue())
            getMoney();
    }

    //转账实现
    private void giveMoney(){
        //只判断用户账户是否存在
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要转账账号:");
        //输入账号
        String inUserName = input.nextLine();
        String str = data.backUser(inUserName);
        //如果该账户存在
        if(!str.equals("null")) {
            String antherUser = str;//获取被转账账户所有信息
            String[] str1 = antherUser.split("\\*");//分割
            Double x = Double.parseDouble(str1[2]);//获取被转账账户余额
            howMuch("转账");
            //如果转的钱正确且如果转账账户余额够
            if (money != 0 && isEnough()) {
                x = x + money;
                antherUser = changeUser(str1[0], str1[1], x);//改变被转账账户信息
                data.saveData(antherUser,false);//将用户信息传给Data类保存被转账账户信息
                System.out.println("转账成功");
                look();
            }
        }
        else
            System.out.println("被转账账户不存在。。。");
        if(isContinue())
            giveMoney();
    }

    //修改密码实现
    private void changePassword(){
        System.out.println("请输入新密码:");
        Scanner input = new Scanner(System.in);
        userPassword = input.nextLine();
        System.out.println("密码修改成功!");
    }

    //办完业务后修改用户信息
    private String changeUser(String n,String w,Double d){
        String str = n + "*" + w + "*" + d;
        return str;
    }
}
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

  • 37

  • 38

  • 39

  • 40

  • 41

  • 42

  • 43

  • 44

  • 45

  • 46

  • 47

  • 48

  • 49

  • 50

  • 51

  • 52

  • 53

  • 54

  • 55

  • 56

  • 57

  • 58

  • 59

  • 60

  • 61

  • 62

  • 63

  • 64

  • 65

  • 66

  • 67

  • 68

  • 69

  • 70

  • 71

  • 72

  • 73

  • 74

  • 75

  • 76

  • 77

  • 78

  • 79

  • 80

  • 81

  • 82

  • 83

  • 84

  • 85

  • 86

  • 87

  • 88

  • 89

  • 90

  • 91

  • 92

  • 93

  • 94

  • 95

  • 96

  • 97

  • 98

  • 99

  • 100

  • 101

  • 102

  • 103

  • 104

  • 105

  • 106

  • 107

  • 108

  • 109

  • 110

  • 111

  • 112

  • 113

  • 114

  • 115

  • 116

  • 117

  • 118

  • 119

  • 120

  • 121

  • 122

  • 123

  • 124

  • 125

  • 126

  • 127

  • 128

  • 129

  • 130

  • 131

  • 132

  • 133

  • 134

  • 135

  • 136

  • 137

  • 138

  • 139

  • 140

  • 141

  • 142

  • 143

  • 144

  • 145

  • 146

  • 147

  • 148

  • 149

  • 150

  • 151

  • 152

  • 153

  • 154

  • 155

  • 156

  • 157

  • 158

  • 159

  • 160

  • 161

  • 162

  • 163

  • 164

  • 165

  • 166

  • 167

  • 168

  • 169

  • 170

  • 171

  • 172

  • 173

  • 174

  • 175

  • 176

  • 177

  • 178

  • 179

  • 180

  • 181

  • 182

  • 183

  • 184

  • 185

  • 186

  • 187

  • 188

  • 189

  • 190

  • 191

  • 192

  • 193

  • 194

  • 195

  • 196

  • 197

  • 198

  • 199

  • 200

  • 201

  • 202

  • 203

  • 204

  • 205

  • 206

  • 207

  • 208

  • 209

  • 210

  • 211

  • 212

  • 213

  • 214

  • 215

  • 216

  • 217

    package newBank;

    import java.io.*;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;

    //数据类是文件和ATM机之间操作用户信息的桥梁
    public class Data {
    //Map储存数据库里所有用户的全部信息
    Map userData = new HashMap();
    //返回用户的信息
    private String user;

    //创建数据类加载所有用户信息
    public Data(){
        getUsers();
    }
    
    private void getUsers(){
        String str;
        String[] string;
        File file = new File("src\\newBank\\user");
        FileReader fileReader = null;
        BufferedReader bufferedReader = null;
        try{
            fileReader = new FileReader(file);
            bufferedReader = new BufferedReader(fileReader);
            while((str = bufferedReader.readLine())!=null){
                string = str.split("\\*",2);
                userData.put(string[0],string[1]);
            }
        }catch(Exception e){
            e.printStackTrace();
            if((fileReader!=null)&&(bufferedReader!=null)){
                try {
                    bufferedReader.close();
                    fileReader.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
        }
    }
    
    //告诉用户名,如果找到返回该用户所有信息,没找到返回null
    public String backUser(String userName){
        String str = "null";
        if(userData.containsKey(userName))
            str = userName + "*" + userData.get(userName);
        user = str;
        return user;
    }
    //修改用户数据并储存在userData图里
    public void saveData(String user,boolean aBoolean){
        String[] string = user.split("\\*",2);
        userData.remove(string[0]);
        userData.put(string[0],string[1]);
        if(aBoolean)//判断用户是否操作结束
            changeUser();
    }
    
    //用户操作完,将userData里所有的用户再写入文件里
    private void changeUser(){
        String str,string="";
        Set<String> keys = userData.keySet();
        for(String key : keys){
            str = key + "*" + userData.get(key);
            string = string + str + "\n";
        }
        File file = new File("src\\newBank\\user");
        FileWriter out = null;
        try {
            out = new FileWriter(file);
            out.write(string);
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(out != null){
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    }

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

  • 37

  • 38

  • 39

  • 40

  • 41

  • 42

  • 43

  • 44

  • 45

  • 46

  • 47

  • 48

  • 49

  • 50

  • 51

  • 52

  • 53

  • 54

  • 55

  • 56

  • 57

  • 58

  • 59

  • 60

  • 61

  • 62

  • 63

  • 64

  • 65

  • 66

  • 67

  • 68

  • 69

  • 70

  • 71

  • 72

  • 73

  • 74

  • 75

  • 76

  • 77

  • 78

  • 79

  • 80

  • 81

  • 82

  • 83

  • 84

  • 85

  • 86

  • 87

  • 88

  • 89

  • 90

    package newBank;

    //银行类
    public class Bank {
    //银行有ATM机供给用户使用
    private ATM atm = new ATM();
    //欢迎用户使用
    public void welcome(User user){
    System.out.println("欢迎用户来我行使用ATM机");
    user.useATM(atm);
    }

    }

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

    package newBank;

    //用户类
    public class User {
    //用户使用ATM机办理业务
    public void useATM(ATM atm){
    atm.show();
    }
    }

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

    //java文件当数据库
    李四1231000.0
    张三45610000.0
    王五789100000.0

  • 1

  • 2

  • 3

  • 4

  • 5

    package newBank;

    //测试类
    public class Demo {

    public static void main(String[] args){
        //创建一个银行
        Bank bank = new Bank();
        //创建一个用户
        User user = new User();
        //银行欢迎用户
        bank.welcome(user);
    
    }

    }

原文章:https://blog.csdn.net/weixin_46085748/article/details/112095767

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章