银行存取款系统(升级版)

User类

package com.hubstc.Bank;
/*
 * 该项目利用Java基础(基本数据类型、for循环、if语句、switch语句、while循环、do-whlie)、数组
 * 面向对象(封装、对象的创建与引用)、异常处理(try-catch)、List集合(list、Arraylist)
 */
public class User {
    //属性:账号、用户名、用户密码、身份证号、余额
    String account;
    String userName;
    String password;
    String id;
    double money;
//    //方法
//    public void showInfo(){
//            System.out.println("账号:"+account+",用户名:"+userName+",密码:"+password+",身份证号:"+id);
//    }
        
    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    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 String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
    
    /*
     * 用户存款方法  返回更新后的余额
     */
    
    public double UserAddMoney(double money,double addMoney){
        if(addMoney > 0){
            money += addMoney;
            return money;
        }else{
            System.out.println("存款金额不足,请充值!");
            return -1;
        }
    }
    
    //取款
    public int  UserCutMoney(double outMoney){
        if(outMoney > 0){
            if(outMoney < money){
                money -=  outMoney;
                return 1;
            }else{
                System.out.println("取款金额不能大于账号余额!");
                return -1;
            }
        }else{
            System.out.println("取款金额不能为负数!");
            return -1;
        }
    }
}    

Bank类

package com.hubstc.Bank;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Bank {
    Scanner input = new Scanner(System.in);
    
    //list集合存放用户信息
    List<User> userList = new ArrayList<User>();
    
    /*
     * 显示菜单,并设置循环输出
     */
    public void ShowMenu(){
        System.out.println("------------欢迎使用自动银行系统--------------");
        System.out.println("1.开户 2.存款 3.取款 4.转账 5.查询余额 6.退出");
        System.out.println();
        int choice = 0;   //默认用户进行开户操作
        do{
            System.out.println("请您输入服务代码:");
            choice = input.nextInt();  //接收用户输入信息
            switch(choice){
                case 1:
                    CreateAccount();    //开户
                    break;
                case 2:
                    BankAddMoney();        //存款
                    break;
                case 3:
                    BankCutMoney();                    //取款 
                    break;
                case 4:
                    Transfer();                    //转账
                    break;
                case 5:
                    CheckBalance();    //查询余额
                    break;
                case 6:
                    System.out.println("感谢您的使用,欢迎下次光临!");
                    break;              //退出
                    default:
                        System.out.println("没有您需要的服务项目,请重新输入!");
            }    
            if(choice == 6){
                break;  //退出本次循环
            }
        }
        while(choice != 0);    
    }
    
    /*
     * 开户类,创建用户,简而言之就是给用户新建一个账号,接收用户输入信息,并判断该账户名是否存在,如果存在则不能新建用户,否则就可以
     */
    User users[] = new User[5];
    public void CreateAccount() {
        User user = new User();
        System.out.print("请您输入账户名:");
        String account = input.next();
        //判断当前输入账号是否存在
        if(IsUser(account) != null){
            System.out.println("该账号已存在!");
            return;
        }    
        user.account = account; //输入的账号赋值给用户对象的账号属性
        System.out.print("请您输入密码:");
        String password = input.next();
        System.out.println("请您确认密码:");
        String password1 = input.next();
        if(!password.equals(password1)){
            System.out.println("您两次密码输入不一致!");
            return;
        }
        System.out.print("请您输入身份证号:");
        String id = input.next();
        System.out.print("请您输入存款金额:");
        int money = input.nextInt();
        userList.add(user); //追加用户到List集合中
        user.setAccount(account);
        user.setPassword(password);
        user.setId(id);
        user.setMoney(money);
        System.out.println("账户名:" + user.getAccount() + ",密码:" + user.getPassword()+ ",身份证号:" + user.id + 
                ",存款金额:" + user.money + ",恭喜" + user.account + "用户创建成功!");
    
    }

    /*
     * 初始化用户 该类主要是存放用户信息,并将用户信息初始化 主要利用数组来存放用户信息,并将其信息存放到List集合中并赋值
     */

    public void InitialUser() {
        // 创建一个长度为2的数组
        User users[] = new User[5];

        userList = new ArrayList<User>();

        // 创建两个User对象并给对象赋值
        User user = new User();
        user.setAccount("111");
        user.setUserName("张三");
        user.setPassword("111");
        user.setId("420");
        user.setMoney(1000);
        users[0] = user; // 将user对象的值赋给users
        userList.add(user); // 将user对象的值存放到集合中

        User user1 = new User();
        user1.setAccount("222");
        user1.setUserName("李四");
        user1.setPassword("222");
        user1.setId("421");
        user1.setMoney(2000);
        users[1] = user1; // 将user对象的值赋给users
        userList.add(user1); // 将user对象的值存放到集合中

        System.out.println("账户名\t用户名\t密码\t身份证号\t存款金额");
        // 利用foreach()循环遍历输出用户信息
        for (User u : userList) {
            System.out.println(u.getAccount() + "\t" + u.getUserName() + "\t" + u.getPassword() + "\t" + u.getId()
                    + "\t" + u.getMoney());
        }
    }

    // 判断账户是否存在
    public User IsUser(String account) {
        User u = null;
        for (User users : userList) {
            if (users.account.equals(account)) {
                u = users;
                break;
            }
        }
        return u;
    }
    
    /*
     * 银行存款方法,首先通过判断账号是否存在进行选择是否能够存款。
     * 其次,通过调用User类中的UserAddMoney()方法,累加用户存款余额,简而言之就是将用户存款金额加到用户余额中,如user.money += addMoney;
     */
    public void BankAddMoney(){
        System.out.print("请您输入存款账号:");
        String account = input.next();
        User user = IsUser(account);  //调用IsUser()方法,判断用户输入账户是否存在
        if(user == null){    
            System.out.println("该账户不存在!");
            return;
        }
        System.out.print("请您输入存款金额:");
        double addMoney = input.nextDouble();
        
        //调用用户类添加金额方法  (传递当前用户余额 和 存款金额)
        double result = user.UserAddMoney(user.getMoney(), addMoney);
        if(result == -1){
            System.out.println("存款失败!");
            return;
        }
            user.money =  result; //更新用户余额
            System.out.println("存款成功!当前余额:" + result);            
    }
    
    //取款
    public void BankCutMoney(){
        System.out.print("请您输入账号:");
        String account = input.next();
        User user = IsUser(account); //判断用户输入账户是否存在
        if(user == null){    
            System.out.println("该账户不存在!");
            return;
        }
        System.out.print("请您输入密码:");
        String password = input.next();
        if(!user.password.equals(password)){
            System.out.println("您密码输入有误!");
            return;
        }
        System.out.println("请您输入取款金额:");
        double cutMoney = input.nextDouble();
        
        int i = user.UserCutMoney(cutMoney);
        if(i < 0){
            System.out.println("取款失败!");
        }else{
            System.out.println("取款成功!当前余额:"+user.money);
        }
    }
    //查看余额
    public void CheckBalance(){
        System.out.print("请您输入账号:");
        String account = input.next();
        //判断用户输入账户是否存在
        User user = IsUser(account);
        if(user == null){    
            System.out.println("该账户不存在!");
            return;
        }
        
        System.out.print("请您输入密码:");
        String password = input.next();
        if(!user.password.equals(password)){
            System.out.println("您密码输入有误!");
            return;
        }
        System.out.println("账户的余额是:"+user.money);
    }
    
    //转账,并对其输入密码进行循环三次操作
    public void Transfer(){
        System.out.print("请您输入转出账户:");
        String accountOut = input.next();
        User userOut = IsUser(accountOut);
        if(userOut == null){
            System.out.println("您的账号不存在!");
            return;
        }
        
        int i = 0; //循环操作输入密码的次数
        do{
            System.out.print("请您输入转出账户密码:");
            String password = input.next();
            if(userOut.password.equals(password)){
                break;  //如果密码正确,退出循环(不执行break后的语句)
            }
            i++;
            if(i != 3){
                System.out.println("密码输入错误。您还有" + (3 - i) + "次机会输入密码");
            }else
            {
                System.out.println("您已三次输入密码错误,请重新操作。");
                return;
            }
            
        }
        while(i < 3);
        System.out.print("请您输入转入账户:");
        String accountIn = input.next();
        User userIn = IsUser(accountIn);
        if(userIn == null){
            System.out.println("您的账号不存在!");
            return;
        }    
        
        System.out.println("请您输出转出金额:");
        double moneyAddMoney = input.nextDouble();
        if(moneyAddMoney < 0 || moneyAddMoney > userOut.money){
            System.out.println("输入转账金额有误,请重新操作。");
            return;        
        }
        userOut.money -= moneyAddMoney;
        userIn.money += moneyAddMoney;
        System.out.println("转账成功!转出账户:"+userOut.account + "余额:"+userOut.money+
        "转入账户:"+userIn.account+"余额:"+userIn.money);      
    }
}      

TestBank类

package com.hubstc.Bank;

import java.util.ArrayList;
import java.util.List;

public class TestBank {
/*
 * 主要业务及实现功能阐述:开户:创建Bank类并添加 "创建帐户"方法
 *               存款:创建存款方法并对账户是否存在进行判断,如果符合条件则进行存款
 *               取款:通过判断账号、密码是否存在进行取款,并对存款金额进行判断
 *               转账:对账号是否存在、转入、转出账号、密码是否有误进行判断
 *              查看余额:当用户输入相对应的操作代码时,对账户和密码进行判断,如果均正确则进行查看余额
 */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
            Bank bank = new Bank();
            //bank.CreateAccount();
            bank.InitialUser();    
            bank.ShowMenu();
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值