面向对象程序设计试题

一、技术
JDBC、MySQL数据库
二、实现功能
1)登陆功能(15分)
1.1)
用户名判断
1.2)
密码判断
1.2.1)密码输入错误3次,账号锁定5s
2)列表显示功能(10分)
3)查询功能(10分)
4)取款功能(15分)
4.1)判断取款金额是否为100倍数
4.2)判断卡内余额是否大于取款金额
5)存款功能(10分)
5.1)判断存款金额是否为100倍数
6)转账功能(15分)
6.1)判断转账金额是否为100倍数
6.2)判断卡内余额是否大于转账金额
6.3)转账给新的账户
7)改密功能(15分)
7.1)输入原始密码并确认无误
7.2)输入修改的密码
7.3)修改成功,重新登录

package view;

import java.util.Scanner;

import service.AccountService;
import service.AccountServiceImpl;

import entity.Account;

/**
 * View表示层
 * 
 */
public class AccountView {
     private static Scanner in = new Scanner(System.in);
     //View层调用Service层
     static AccountService accountService = new AccountServiceImpl();
        
    public static void main(String[] args) {
        System.out.println("************欢迎进入银行管理系统************");
        System.out.println("1.存钱√            2.取钱√");
        System.out.println("3.查询余额√        4.转账√");
        System.out.println("5.注册账户√        6.注销账户√");
        System.out.println("7.更改密码√        0.退出登录√");
        while (true) {
            System.out.print("请输入选项进行您的操作:");
            // 输入选择的业务项
            int n = in.nextInt();
            switch (n) {
            case 1:
                save();
                // 存钱
                break;
            case 2:
                draw();
                // 取钱
                break;
            case 3:
                queryBalance();
                // 查询余额
                break;
            case 4:
                transfer();
                // 转账
                break;
            case 5:
                // 注册账户
                regist();
                break;
            case 6:
                logout();
                // 注销账户
                break;
            case 7:
                changepassword();
                // 更改密码
                break;
            case 0:
                // 退出登录
                System.out.println("您已退出,感谢使用");
                System.exit(0);
                break;
            default:
                throw new RuntimeException("您的输入有误,请重新输入!");
            }
        }
    }
    
    //6.注销账户
    private static void logout() {
        //View层收集信息
        int cardid = -1;
        String password = null;
        System.out.println("请输入账号:");
        cardid = in.nextInt();
        System.out.println("请输入密码:");
        password = in.next();
        
        try{
            //进入Service层调用logout函数
            accountService.logout(cardid,password);
            System.out.println("账户注销完成!");
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        
    }

    //7.更改密码
    private static void changepassword() {
        //View层收集信息
        int cardid = -1;
        String password = null;
        String chpassword = null;
        
        System.out.println("请输入账号:");
        cardid = in.nextInt();
        System.out.println("请输入密码:");
        password = in.next();
        System.out.println("请输入修改后的密码");
        chpassword = in.next();
        
        try{
            //进入Service层调用changepassword函数
            accountService.changepassword(cardid,password,chpassword);
            System.out.println("密码修改完成");
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        
        
    }

    //2取钱
    private static void draw() {
        //View层收集信息
        int cardid = -1;
        String password = null;
        double money= 0.0;
        
        System.out.println("请输入账号:");
        cardid = in.nextInt();
        System.out.println("请输入密码:");
        password = in.next();
        
        System.out.println("请输入取钱金额:");
        money = in.nextDouble();
        
        try{
            //进入Service层调用draw函数
            accountService.draw(cardid,password,money);
            System.out.println("取钱完成");
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }

    //1.存钱
    private static void save() {
        //View层收集信息
        int cardid = -1;
        String password = null;
        double money= 0.0;
        
        System.out.println("请输入账号:");
        cardid = in.nextInt();
        System.out.println("请输入密码:");
        password = in.next();


        System.out.println("请输入存钱金额:");
        money = in.nextDouble();
        
        try{
            //进入Service层调用save函数
            accountService.save(cardid,password,money);
            System.out.println("存钱完成");
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }

    //4.转账
    private static void transfer() {
        //View层收集信息
        int from_cardid = -1;
        int to_cardid = -1;
        String password = null;
        double money= 0.0;
        
        System.out.println("请输入账号:");
        from_cardid = in.nextInt();
        System.out.println("请输入密码:");
        password = in.next();
        System.out.println("请输入对方账号:");
        to_cardid = in.nextInt();
        System.out.println("请输入转账金额:");
        money = in.nextDouble();
        
        try {
            //进入Service层调用transfer函数
            accountService.transfer(from_cardid,password,to_cardid,money);
            System.out.println("转账完成!");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    //3.查询余额
    private static void queryBalance() {
        //View层收集信息
        int cardid = -1;
        String password = null;
        
        System.out.println("请输入账户");
        cardid = in.nextInt();
        System.out.println("请输入密码");
        password = in.next();
        
        try{
            //交给Service层处理,Service又访问Dao层,获得balance的值
            Double balance = accountService.queryBalance(cardid,password);
            System.out.println("您当前的余额为:"+balance);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }    
    }
    
    //5.注册账户
    private static void regist() {
        //View层收集信息
        String name = null;
        String password = null;
        String repassword = null;
        
        System.out.println("请输入姓名:");
        name = in.next();
        System.out.println("请输入密码:");
        password = in.next();
        System.out.println("请确认密码:");
        repassword = in.next();

        Account account = new Account(null,name,password,0.0);
        try{
            //交给Service层处理
            accountService.regist(account,repassword);
            System.out.println("注册成功√");
        }catch(Exception e){
            //捕捉异常
            System.out.println(e.getMessage());
        }
    }
}

参考地址:


import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/*
 * 1. 客户登录或注册用户 2. 查询个人账户余额 3. 取入钱款交易 4. 存入钱款交易 5. 转账交易 6. 退出账户 7. 注销账户 
 * 要求:1.Switch语句,循环语句,集合,继承,构造方法,抽象方法,
 * super,this,Scanner,静态方法等的运用、呈现。2.添加注释
 * */
public class BankTest {

    public static void main(String[] args) {
        int num;
        Scanner input = new Scanner(System.in);
        UserData u=null;
        Map<String,UserData> userList = new HashMap<String,UserData>();
        while(true) {
            System.out.println("***************中国银行系统***************\n");
            System.out.println("1、注册                                                                                                  *\n");
            System.out.println("2、登录                                                                                                  *\n");
            System.out.println("3、查询个人账户                                                                                  *\n");
            System.out.println("4、存款                                                                                                   *\n");
            System.out.println("5、取钱                                                                                                  *\n");
            System.out.println("6、转账                                                                                                  *\n");
            System.out.println("7、退出**********************************\n");
            System.out.println("请选择(1~7):");
            num = input.nextInt();
            switch(num) {
                case 1:
                    System.out.println("你选择的是开户:请输入卡号,密码,存款金额:");
                    u = new UserData(input.next(),input.next(),input.nextFloat());
                    System.out.println("开户成功,信息如下:敲任意键继续....");
                    System.out.println(u);
                    userList.put(u.getId(), u);
                    input.next();
                    break;
                case 2:
                    System.out.println("你选择的是登录:请输入卡号,密码:");
                    String id = input.next();
                    String pwd = input.next();
                    u = userList.get(id);
                    if(u==null) {
                        System.out.println("卡号不存在:");
                        return;
                    }
                    if(u.getPassword().equals(pwd)) {
                        System.out.println("登录成功,你的信息如下:");
                        System.out.println(u);
                    }
                    break;
                case 3:
                    if(u==null) {
                        System.out.println("用户不存。");
                        break;
                    }
                    System.out.println("你选择的是查询个人账户:信息如下:");
                    System.out.println(u);
                    break;
                case 4:
                    if(u==null) {
                        System.out.println("用户不存。");
                        break;
                    }
                    System.out.println("你选择的是存款:请输入存款金额:");
                    float money = input.nextFloat();
                    u.setMoney(u.getMoney()+money);
                    System.out.println("存款后的信息如下:");
                    System.out.println(u);
                    break;
                case 5:
                    if(u==null) {
                        System.out.println("用户不存。");
                        break;
                    }
                    System.out.println("你选择的是取钱:请输入取款金额:");
                    money = input.nextFloat();
                    u.setMoney(u.getMoney()-+money);
                    System.out.println("取款后的信息如下:");
                    System.out.println(u);
                    break;
                case 6:
                    if(u==null) {
                        System.out.println("用户不存。");
                        break;
                    }
                    System.out.println("你选择的是转账:请输入对方账号:");
                    id = input.next();
                    UserData other = userList.get(id);
                    if(other==null) {
                        System.out.println("对方账号不存在:");
                        break;
                    }
                    System.out.println("请输入转账金额:");
                    money = input.nextFloat();
                    u.setMoney(u.getMoney()-money);
                    other.setMoney(other.getMoney()+money);
                    System.out.println(u);
                    System.out.println(other);
                    
                    break;
                case 7:
                    break;
                
            }
            if(num==7)
                break;
            
        }
    }
    
}


class UserData implements Serializable{
    private String id;
    private String password;

    private float money;

    public UserData() {
        
    }
    public UserData(String id,String password,float money) {
        this.id = id;
        this.password = password;
        this.money = money;

    }
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public float getMoney() {
        return money;
    }

    public void setMoney(float money) {
        this.money = money;
    }
    @Override
        public String toString() {
            return "id:"+this.id+",密码:"+this.password+",账户余额:"+this.money;
        }
    
    
}