"落满南山" 2021-10-26 08:12 采纳率: 100%
浏览 89
已结题

已经不行了!这个代码真不会

模拟银行存取款业务

编写一个Java应用程序,模拟网上银行登录及存取款业务。登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型。操作类型包括四种(存款:1取款:2余额:3退出:0),输入数字1、2时,将进行存取款操作,此时需要输入存取的金额,并进行正确的金额加减计算;输入数字3时,显示当前账户的余额;输入数字0时将退出整个系统。

要求及解题思路:

1)程序中涉及到的输入,均采用在控制台通过键盘录入的方式进行。

2)利用类的封装的思想,创建银行帐户类User,在类中定义五个属性cardId、cardPwd、userName、call和account分别表示帐户的银行卡号、银行卡密码、账户名、手机号码和存款额。

3)创建DBUtil类,该类用于模拟银行系统中的账户人信息,相当于数据库的功能。登录时需通过用户输入的信息和系统中保存的账户信息进行比较,从而判断登录是否成功。DBUtil类中通过Map集合存储模拟的账户信息,其中key值用于存储银行卡号,value值用于存储整个账户对象。该类中还需提供两个方法,分别是获取单个账户信息的方法和获取所有个账户信息的方法。

4)创建一个Bank类,该类用于处理网上银行的登录、存取款和显示余额等所有业务逻辑。登录时需要验证用户输入的银行卡号和银行卡密码,是否存在于银行系统中,如果是提示登录成功,否则提示登录失败,让用户重新登录。登录成功后,需根据提示的四种操作类型,输入相应的数字,对当前账户存款进行存取和查询余额操作。操作完成后,输入数字0将退出整个系统。

5)在应用程序的开发过程中,请尽可能地做到程序的健壮性和操作中提示人性化。例如用户在存款和取款时,显然输入非数字值是不合理的,此时应该加强判断并引导用户输入正确的数值,

  • 写回答

3条回答 默认 最新

  • iilmx 2021-10-26 10:06
    关注

    简单给你写写,
    首先是User类,存放用户信息

    import java.math.BigDecimal;
    
    public class User {
        private Long cardId; //银行卡号
    
        private String cardPwd;  //密码
    
        private String userName; //用户名
    
        private Long call; //手机号
    
        private BigDecimal account;  //存款额
    
        public Long getCardId() {
            return cardId;
        }
    
        public void setCardId(Long cardId) {
            this.cardId = cardId;
        }
    
        public String getCardPwd() {
            return cardPwd;
        }
    
        public void setCardPwd(String cardPwd) {
            this.cardPwd = cardPwd;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public Long getCall() {
            return call;
        }
    
        public void setCall(Long call) {
            this.call = call;
        }
    
        public BigDecimal getAccount() {
            return account;
        }
    
        public void setAccount(BigDecimal account) {
            this.account = account;
        }
    }
    
    

    接着是存储类,存放银行全部的账户信息

    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    
    public class DBUtil {
        private HashMap<Long, User> userMap = new HashMap<>(); //key值用于存储银行卡号,value值用于存储整个账户对象
        //获取单个账户信息的方法
        public User queryOneUser(String key){
            return userMap.get(key);
        }
        // 获取所有账户信息的方法
        public List<User> queryAllUser(){
            List<User> list = new ArrayList<>();
            userMap.forEach((key, user)-> list.add(user));
            return list;
        }
        public HashMap<Long, User> getUserMap() {
            return userMap;
        }
        public void setUserMap(HashMap<Long, User> userMap) {
            this.userMap = userMap;
        }
    }
    
    

    最后是银行处理类:

    import java.util.HashMap;
    import java.util.Scanner;
    
    public class Bank {
        public DBUtil dbUtil = new DBUtil();    //存储账户信息的类
    
        public static void main(String[] args) {
            //需要增加一个注册逻辑,将用户信息存入到dbUtil的map中
            new Bank().start();
    
        }
        public void start(){
            System.out.println("请输入(注册:1;登录:2):");
            int type = new Scanner(System.in).nextInt();
            if(type == 1){
                regist();
            }else if (type == 2){
                login();
            }else{
                System.out.println("无此选项,请重新输入");
                start();
            }
        }
    
        public void regist(){   //注册
            //输入用户信息,创建并保存到User对象并存放到dbUtil的map下
    
        }
        public void login(){    //登录
            Scanner s = new Scanner(System.in);
            System.out.println("请输入银行卡号:");
            Long cardId = s.nextLong();
            System.out.println("请输入银行卡密码:");
            String pwd = s.nextLine();
            HashMap<Long, User> userMap = dbUtil.getUserMap();
            if(!userMap.isEmpty() && userMap.get(cardId).getCardPwd().equals(pwd)){
                System.out.println("登录成功");
                oper(userMap.get(cardId));
            }else{
                System.out.println("登录失败,请重新登录");
                login();
            }
        }
        public void oper(User user){
            System.out.println("请输入操作类型(存款:1;取款:2;余额:3;退出:0):");
            int type = new Scanner(System.in).nextInt();
            if(type == 1){
                if(deposit(user)){
                    System.out.println("存款成功!");
                }else{
                    System.out.println("存款失败!");
                }
                oper(user);
            }else if(type == 2){
                if(draw(user)){
                    System.out.println("取款成功!");
                }else{
                    System.out.println("取款失败!");
                }
                oper(user);
            }else if(type == 3){
                query(user);
                oper(user);
            }else{
                System.out.println("退出成功,感谢您的使用!");
            }
        }
        public boolean deposit(User user){  //存款 成功返回true;失败返回false
            //存款逻辑
            //将user更新到dbUtil的map当中
            return true;
        }
        public boolean draw(User user){  //取款 成功返回true;失败返回false
            //取款逻辑
            //将user更新到dbUtil的map当中
            return true;
        }
        public boolean query(User user){ //查询余额
            System.out.println("您的余额为:"+ user.getAccount());
            return true;
        }
    }
    
    

    给你写个大概吧,剩下的靠你自己发挥了!!!!
    请采纳支持哈!!!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月3日
  • 已采纳回答 10月26日
  • 创建了问题 10月26日

悬赏问题

  • ¥15 android报错 brut.common.BrutException: could not exec (exit code = 1)
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择
  • ¥15 部分网页页面无法显示!
  • ¥15 怎样解决power bi 中设置管理聚合,详细信息表和详细信息列显示灰色,而不能选择相应的内容呢?