Java实验一----银行取款机(字符界面,用文本保存数据)

要求:

定义文本存储数据的格式,进行类和方法的设计和用户操作界面的流程设计,编码调试后,对程序进行测试。

控制台下模拟银行取款机,普通用户实现登录、取钱、存钱、转帐功能。管理员登录后可以添加、删除和冻结帐户。
下面是我写的程序,仅供同学参考!
主要的设计思路是以对象为单位存取,用到
ObjectI流 由于不用字符解析,所以是比较简单的方法,但在实际中应用可能会存在问题,但做个试验还是可以的.

源码:
package bank.dos;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

class Admin {

    private static String userName = "admin";

    private static String passWord = "admin";

    public Admin() {

    }

    public static String getPassWord() {
        return passWord;
    }
}

/*
 * Serializable 对象序列化
 */
class Users implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    private String userName;

    private String passWord;

    private boolean frozen;

    private float money;

    public Users() {
        setPassWord("123");
        frozen = false;
        money = 0;
    }

    public boolean isFrozen() {
        return frozen;
    }

    public void setFrozen(boolean frozen) {
        this.frozen = frozen;
    }

    public float getMoney() {
        return money;
    }

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

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

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

}

class Operation {
    /*
     * 创建用户
     */
    public static boolean createUser(String userName) throws IOException {
        Users user = new Users();
        user.setUserName(userName);
        File oldfile = new File(userName + ".dat");
        if (oldfile.exists()) {
            // System.out.println("该用户的帐户已经存在,请重新输入!");
            return false;
        } else {
            FileOutputStream f = new FileOutputStream(oldfile);
            ObjectOutputStream b = new ObjectOutputStream(f);
            b.writeObject(user);
            b.flush();
            b.close();
            return true;
        }
    }

    /*
     * 读取用户
     */
    public static Users readUsers(String userName) throws IOException,
            ClassNotFoundException {

        File oldfile = new File(userName + ".dat");
        if (!oldfile.exists()) {
            // System.out.println("您输入的帐户不存在,请重新输入!");
            return null;
        } else {
            FileInputStream f = new FileInputStream(oldfile);
            ObjectInputStream b = new ObjectInputStream(f);
            Users user = (Users) b.readObject();
            b.close();
            return user;
        }
    }

    /*
     * 更新用户
     */
    public static boolean upDataUsers(Users user) throws IOException {

        File oldfile = new File(user.getUserName() + ".dat");
        if (!oldfile.exists()) {
            // System.out.println("您输入的帐户不存在,请重新输入!");
            return false;
        } else {
            FileOutputStream f = new FileOutputStream(oldfile);
            ObjectOutputStream b = new ObjectOutputStream(f);
            b.writeObject(user);
            b.flush();
            b.close();
            return true;
        }
    }

    /*
     * 删除用户
     */
    public static boolean deleteUser(String user) {
        File f = new File(user+".dat");
        if (!f.exists()) {
            // System.out.println("您输入的帐户不存在,请重新输入!");
            return false;
        } else {
            f.delete();
            return true;
        }
    }
}

public class BankMain {

    /**
     * @ mc1035
     */
    public static void main(String[] args) {
        String operate = null;
        String userName = null;
        String passWord = null;       
        float money = 0;
        int ope=-1;
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("欢迎使用本银行系统,请先登陆!");
        while(ope!=10){
            System.out.print("请输入用户名:");
            try {
                userName = in.readLine();
                if (userName.equals("admin")) {
                    System.out.print("请输入密码:");
                    passWord = in.readLine();
                    if (passWord.equals(Admin.getPassWord())) {
                        System.out.println("欢迎管理员登陆:");
                   
                            System.out.println("0为开户");
                            System.out.println("1为消户");
                            System.out.println("2为冻结帐户");
                            System.out.println("10为退出本系统");
                            operate = in.readLine();
                            ope=Integer.parseInt(operate);
                            while (!operate.equals("10")) {                               
                                switch(ope){
                                case 0:
                                    System.out.print("请输入新的用户名,密码默认为123:");
                                    userName = in.readLine();
                                    if (userName != null) {
                                        if (Operation.createUser(userName)) {
                                            System.out.println("开户成功,请继续选择操作");
                                            System.out.println("0为开户");
                                            System.out.println("1为消户");
                                            System.out.println("2为冻结帐户");
                                            System.out.println("10为退出本系统");
                                            operate = in.readLine();
                                            ope=Integer.parseInt(operate);
                                            break ;
                                        } else {
                                            System.out.println("该用户的帐户已经存在,请重新输入用户名!");                                   
                                            break ;
                                        }
                                    } else {
                                        System.out.print("用户名不能为空,");
                                        break ;
                                    }
                               
                                case 1:
                                    System.out.print("请输入消户帐户的用户名:");
                                    userName = in.readLine();
                                    if (userName != null) {
                                        if (Operation.deleteUser(userName)) {
                                            System.out.println("消户成功,请继续选择操作");
                                            System.out.println("0为开户");
                                            System.out.println("1为消户");
                                            System.out.println("2为冻结帐户");
                                            System.out.println("10为退出本系统");
                                            operate = in.readLine();
                                            ope=Integer.parseInt(operate);
                                            break ;
                                        } else {
                                            System.out.println("该用户的帐户不存在,请继续操作!");
                                            System.out.println("0为开户");
                                            System.out.println("1为消户");
                                            System.out.println("2为冻结帐户");
                                            System.out.println("10为退出本系统");
                                            operate = in.readLine();
                                            ope=Integer.parseInt(operate);
                                            break ;
                                        }
                                    } else {
                                        System.out.print("用户名不能为空,");
                                        break ;
                                    }
                                case 2:
                                    System.out.print("请输入要冻结的帐户的用户名:");
                                    userName = in.readLine();
                                    if (userName != null) {
                                        Users user=Operation.readUsers(userName);
                                        if(user!=null){
                                            user.setFrozen(true);
                                            if(Operation.upDataUsers(user)){
                                                System.out.println("冻结成功,请继续操作");
                                                System.out.println("0为开户");
                                                System.out.println("1为消户");
                                                System.out.println("2为冻结帐户");
                                                System.out.println("10为退出本系统");
                                                operate = in.readLine();
                                                ope=Integer.parseInt(operate);
                                                break;
                                            }else{
                                                System.out.println("冻结失败,请重新操作");
                                                System.out.println("0为开户");
                                                System.out.println("1为消户");
                                                System.out.println("2为冻结帐户");
                                                System.out.println("10为退出本系统");
                                                operate = in.readLine();
                                                ope=Integer.parseInt(operate);
                                                break;
                                            }
                                        }else{
                                            System.out.println("该用户的帐户不存在,请重新操作!");
                                            System.out.println("0为开户");
                                            System.out.println("1为消户");
                                            System.out.println("2为冻结帐户");
                                            System.out.println("10为退出本系统");
                                            operate = in.readLine();
                                            ope=Integer.parseInt(operate);
                                            break;
                                        }
                                       
                                    } else {
                                        System.out.print("用户名不能为空,请重新输入:");
                                        break;
                                    }
                                case 10:
                                    System.out.print("退出成功:");
                                    break;
                                default:
                                    System.out.print("操作码错误,请重新输入!");
                                    operate = in.readLine();
                                    ope=Integer.parseInt(operate);
                                    break;
                                }   
                            }
                       
                    } else {
                        System.out.println("密码错误,请重新输入!");                   
                    }
                }else{
                    Users user=Operation.readUsers(userName);
                    if(user!=null){
                        if(user.isFrozen()){
                            System.out.print("该用户已经被冻结,请与管理员联系,系统将自动退出!");
                            ope=10;
                        }else{
                        System.out.print("请输入密码:");
                        passWord = in.readLine();
                        if(user.getPassWord().equals(passWord)){
                            System.out.println("欢迎"+user.getUserName()+"登陆:");
                            System.out.println("0为存钱");
                            System.out.println("1为取钱");
                            System.out.println("2为转帐");
                            System.out.println("10为退出本系统");
                            operate = in.readLine();
                            ope=Integer.parseInt(operate);
                            while (!operate.equals("10")) {                               
                                switch(ope){
                                case 0:
                                    System.out.print("请输入要存钱金额:");
                                    money = Float.parseFloat(in.readLine());
                                    money+=user.getMoney();
                                    user.setMoney(money);
                                    if(Operation.upDataUsers(user)){
                                        System.out.print("操作成功:");
                                    }else{
                                        System.out.print("系统错误,请与管理员联系!:");
                                        ope=10;
                                        operate="10";
                                        break;
                                    }       
                                    System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
                                    System.out.println("0为存钱");
                                    System.out.println("1为取钱");
                                    System.out.println("2为转帐");
                                    System.out.println("10为退出本系统");
                                    operate = in.readLine();
                                    ope=Integer.parseInt(operate);
                                    break ;       
                                case 1:
                                    System.out.print("请输入取款金额:");
                                    money = Float.parseFloat(in.readLine());
                                    if(user.getMoney()-money<0){
                                        System.out.println("余额不足,取款失败!");
                                        System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
                                        System.out.println("0为存钱");
                                        System.out.println("1为取钱");
                                        System.out.println("2为转帐");
                                        System.out.println("10为退出本系统");
                                        operate = in.readLine();
                                        ope=Integer.parseInt(operate);
                                        break;
                                    }else{
                                        money=user.getMoney()-money;
                                        user.setMoney(money);
                                        if(Operation.upDataUsers(user)){
                                            System.out.print("操作成功:");
                                        }else{
                                            System.out.print("系统错误,请与管理员联系!:");
                                            ope=10;
                                            operate="10";
                                            break;
                                        }   
                                        System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
                                        System.out.println("0为存钱");
                                        System.out.println("1为取钱");
                                        System.out.println("2为转帐");
                                        System.out.println("10为退出本系统");
                                        operate = in.readLine();
                                        ope=Integer.parseInt(operate);
                                        break;
                                    }
                                case 2:
                                    System.out.print("请输入要转帐的帐户的用户名:");
                                    userName = in.readLine();
                                    if (userName != null) {
                                        Users temp=Operation.readUsers(userName);
                                        if(temp!=null){
                                            System.out.println("请输入要转帐的金额:");
                                            money = Float.parseFloat(in.readLine());
                                            if(user.getMoney()-money<0){
                                                System.out.println("您当前余额不足,转帐失败!");
                                                System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
                                                System.out.println("0为存钱");
                                                System.out.println("1为取钱");
                                                System.out.println("2为转帐");
                                                System.out.println("10为退出本系统");
                                                operate = in.readLine();
                                                ope=Integer.parseInt(operate);
                                                break;
                                            }else{
                                                float addMoney=temp.getMoney()+money;
                                                float tempMonye=user.getMoney()-money;
                                                user.setMoney(tempMonye);
                                                if(Operation.upDataUsers(user)){                                                   
                                                    temp.setMoney(addMoney);
                                                    if(Operation.upDataUsers(temp)){
                                                        System.out.print("操作成功:");
                                                    }else{
                                                        System.out.print("系统错误,请与管理员联系!:");
                                                        ope=10;
                                                        operate="10";
                                                        break;
                                                    }   
                                                    System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
                                                }else{
                                                    System.out.println("操作失败!");
                                                    user.setMoney(user.getMoney()+money);
                                                    System.out.println("您当前余额为:"+user.getMoney()+"元请继续操作");
                                                }
                                                System.out.println("0为存钱");
                                                System.out.println("1为取钱");
                                                System.out.println("2为转帐");
                                                System.out.println("10为退出本系统");
                                                operate = in.readLine();
                                                ope=Integer.parseInt(operate);
                                                break;
                                            }
                                           
                                        }else{
                                            System.out.println("该您要转帐的帐户不存在,请重新操作!");
                                            System.out.println("0为存钱");
                                            System.out.println("1为取钱");
                                            System.out.println("2为转帐");
                                            System.out.println("10为退出本系统");
                                            operate = in.readLine();
                                            ope=Integer.parseInt(operate);
                                            break;
                                        }
                                       
                                    } else {
                                        System.out.print("用户名不能为空,转帐失败,请继续操作:");
                                        System.out.println("0为存钱");
                                        System.out.println("1为取钱");
                                        System.out.println("2为转帐");
                                        System.out.println("10为退出本系统");
                                        operate = in.readLine();
                                        ope=Integer.parseInt(operate);
                                        break;
                                    }
                                case 10:
                                    if(Operation.upDataUsers(user)){
                                        System.out.print("退出成功:");
                                    }else{
                                        System.out.print("系统错误,请与管理员联系!:");
                                    }                                   
                                    break;
                                default:
                                    System.out.print("操作码错误,请重新输入!");
                                    operate = in.readLine();
                                    ope=Integer.parseInt(operate);
                                    break;
                                }   
                            }
                       
                        }else{
                            System.out.print("密码错误,请重新输入!");
                        }
                     }
                    }else{
                        System.out.println("该用户不存在,请重新输入!");
                    }
                }
            } catch (Exception e) {
                // TODO 自动生成 catch 块
                e.printStackTrace();
            }
        }
    }
}
 
由于该程序写的比较匆忙,功能上不是很完善,还希望同学们能加以改进,并且多多交流,共同进步
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值