zoukankan      html  css  js  c++  java
  • 简单的银行小案例

    银行案例

    • 实现银行功能

      • 用户输入正确卡号和密码可执行一下操作
      • 菜单如下:1.存款 2.取款 3.转账 4.查询余额 5.修改密码 0.退出
    • 分析:

      • User类(cardNo、identity、username、password、phone、balance)
      • Bank类主要包括以下功能
        • 初始化用户(initial)
        • 用户登录(login)
        • 显示菜单
        • 存款(save)、取款(withDraw)、转账(trans)、查询余额(query)、修改密码(modifyPassword)
          该案例未实现保存数据的功能,再次运行仍为初始数据
    package com.lemon.bank;
    /**
     *用户类
     * @author gyq
     */
    
    public class User {
        //卡号
        private String cardNo;
        //身份证号
        private String identity;
        //用户名
        private String username;
        //密码
        private String password;
        //电话
        private String phone;
        //余额
        private double balance;
    
        //默认构造方法
        public User() {
        }
        //带参构造方法
    
    
        public User(String cardNo, String identity, String username, String password, String phone, double balance) {
            this.cardNo = cardNo;
            this.identity = identity;
            this.username = username;
            this.password = password;
            this.phone = phone;
            this.balance = balance;
        }
    
        public String getCardNo() {
            return cardNo;
        }
    
        public void setCardNo(String cardNo) {
            this.cardNo = cardNo;
        }
    
        public String getIdentity() {
            return identity;
        }
    
        public void setIdentity(String identity) {
            this.identity = identity;
        }
    
        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 getPhone() {
            return phone;
        }
    
        public void setPhone(String phone) {
            this.phone = phone;
        }
    
        public double getBalance() {
            return balance;
        }
    
        public void setBalance(double balance) {
            this.balance = balance;
        }
    }
    
    package com.lemon.bank;
    
    import sun.security.util.Password;
    
    import java.util.Scanner;
    
    /**
     * 银行类
     * @author gyq
     */
    public class Bank {
        //保存用户的数组
        private User[] users = new User[5];
        //保存个数
        private int size;
        //初始化方法
        public void initial(){
            //创建用户1
            User user1=new User();
            user1.setCardNo("1234567890");
            user1.setIdentity("411123456");
            user1.setUsername("xiaoming");
            user1.setPassword("123456");
            user1.setPhone("110");
            user1.setBalance (100000);
            //创建用户2
            User user2=new User("1234567891","411123451","xiaoli","123123","111",12000);
            //放入数组
            users[0]=user1;
            users[1]=user2;
            size=2;
            //System.out.println ("用户初始化完成!");
        }
        public Bank(){
            initial ();
        }
        //2用户登录
        public void login(){
            Scanner input = new Scanner (System.in);
            System.out.println ("请输入卡号:");
            String cardNo=input.next ();
            System.out.println ("请输入密码:");
            String password=input.next ();
            //遍历数组
            User u=null;
            for (int i = 0; i < size; i++) {
                if(users[i].getCardNo ().equals (cardNo)&&users[i].getPassword ().equals (password)){
                    u=users[i];
                    break;
                }
            }
            if (u!=null){
                //登陆成功!
                System.out.println ("登录成功!");
                //显示菜单
                showMenu(u);
            }else{
                System.out.println ("卡号或密码错误~!");
            }
        }
        //显示菜单
        public void showMenu(User u){
            Scanner input = new Scanner (System.in);
            System.out.println ("==============欢迎进入xxx银行系统=====当前用户:"+u.getCardNo ()+"=================");
    
            do{
                System.out.println ("1.存款   2.取款    3.转账    4.查询余额  5.修改密码  0.退出");
    
                int choice=input.nextInt ();
                switch (choice){
                    case 1://存钱
                        this.save (u);
                        break;
                    case 2://取款
                        this.withDraw (u);
                        break;
                    case 3://转账
                        this.trans (u);
                        break;
                    case 4://查询余额
                        this.query (u);
                        break;
                    case 5://修改密码
                        this.modifyPassword (u);
                        break;
                    case 0://退出
    
                        return;
                    default:
                        break;
                }
            }while (true);
    
        }
        //存钱
        public void save(User u){
            Scanner input = new Scanner (System.in);
            System.out.println ("请输入存款金额");
            double m = input.nextDouble ();
            if (m>0){
                u.setBalance (u.getBalance ()+m);
                System.out.println ("存钱成功:余额:"+u.getBalance ());
            }else{
                System.out.println ("存钱失败,请重新输入!");
            }
    
        }
        //5.取钱
        public void withDraw(User u){
            Scanner input = new Scanner (System.in);
            System.out.println ("请输入取款金额");
            double m = input.nextDouble ();
            if (m>0){
                if (u.getBalance ()>=m) {
                    u.setBalance (u.getBalance () - m);
                    System.out.println ("取钱成功:余额:" + u.getBalance ());
                }else {
                    System.out.println ("余额不足!");
                }
            }else{
                System.out.println ("取钱失败,请重新输入!");
            }
    
        }
        //6.转账
        public void trans(User u){
            Scanner input = new Scanner (System.in);
            System.out.println ("请输入对方卡号:");
            String cardNo = input.next ();
            System.out.println ("请输入转账金额:");
            double m=input.nextDouble ();
            //判断对方卡号是否存在
            User toUser=null;
            for (int i=0;i<size;i++){
                if (users[i].getCardNo ().equals (cardNo)){
                    toUser=users[i];
                    break;
                }
            }
            if (toUser!=null){//存在对方卡号
                if(u.getBalance ()>=m){
                    //转账
                    //扣钱
                    u.setBalance (u.getBalance ()-m);
                    //加钱
                    toUser.setBalance (toUser.getBalance ()+m);
                    System.out.println ("转账成功!当前您的余额为"+u.getBalance ());
                }else{
                    System.out.println ("转账失败!余额不足!");
                }
    
            }else{
                System.out.println ("对方卡号不存在,请重新输入");
            }
        }
        //7查询余额
        public void query(User u){
            System.out.println ("卡号:"+u.getCardNo ()+"用户名:"+u.getUsername ()+"余额:"+u.getBalance ());
        }
        //8修改密码
        public void modifyPassword(User u){
            Scanner input = new Scanner (System.in);
            System.out.println ("请输入新密码(密码长度6位):");
            String newpassword=input.next ();
            if (newpassword.length ()==6){
                u.setPassword (newpassword);
                System.out.println ("修改成功!");
            }else {
                System.out.println ("输入密码不符合要求!");
            }
        }
    }
    
    package com.lemon.bank;
    
    public class TestBank {
        public static void main(String[] args) {
            Bank bank = new Bank ();
            //bank.initial ();
            bank.login ();
        }
    }
    
  • 相关阅读:
    Java版本及历史简述
    ASCII、Unicode、UTF-8、UTF-16、GBK、GB2312、ANSI等编码方式简析
    同步(Synchronous)和异步(Asynchronous)方法的区别
    例10-12 *uva1637(概率dp)
    例10-11 uva11181
    例10-10 uva10491(简单概率)
    例10-9 uva1636简单概率问题
    全排列hash-康拓展开
    10-8 uva1262密码
    例10-6 uva1635(唯一分解定理)
  • 原文地址:https://www.cnblogs.com/lemonlover/p/14053677.html
Copyright © 2011-2022 走看看