模拟ATM代码(有一点小问题)

一、测试要求:

 

1、按照测试内容要求完成程序的设计与编程;

2、建立学号姓名文件夹,如:“信1705-1班20173425陈欢”,将源程序文件、accountinformation.txt、accountlist.txt保存在文件夹中,压缩成rar文件提交。

3、以班级为单位上交最终考试结果。

 

二、 数据结构测试要求:(8分)

 

ATM机的账户记录Account有账户的唯一性标识(8个数字的组合),用户的姓名,操作日期(Date),操作类型,账户密码(六位的数字,可以用0开头),当前的余额(可以为0)。

1、定义Account类,其中包括七个私有变量(accountID,accountname,operatedate,operatetype,accountpassword, accountbalance,)。(3分)

各成员的含义如下:

变量accountID为字符串类型String,用于存储学生的用户账号(由八位数字组成)。

变量accountname为字符串类型String,用于存储账户的名称。

变量operatedate为字符串类型String,用于存储操作的时间,由十位字符组成,显示格式为“2018-09-20”。   

变量operatetype为int类型,用于存储操作账户的类型,具体描述为“1”表示存款,“2”表示取款,“3”表示转账汇款,“4”表示修改账户密码,“5”表示查询余额。

变量accountpassword为字符串类型String,用于用户密码,由六位数字组成。

变量accountbalance为整数类型int,用于存储账户余额,缺省为0。

变量amount为整数类型int,表示操作流水金额。

2、对每个变量定义get()(读取变量信息)和set()(设置变量信息)的方法。(3分)

3、定义accountinformation.txt作为账户基本信息库,基本信息包括accountID,accountname,accountpassword, accountbalance,要求事先实现至少存储五个账户的信息,定义accountlist.txt作为账户操作流水信息数据库,操作流水信息包括(accountID,accountname,operatedate,operatetype, amount)。(要求将学号作为帐号,将考生信息作为第一条记录)。(2分)

 

三、功能要求:(12分)

该程序模拟ATM的功能设计,当用户插卡后显示,输入密码界面,用户输入正确密码(用户输入错误密码,则提示该卡已被锁定,无法操作),则弹出选择界面:存款、取款、转账汇款、修改密码、查询余额。

Account.java

package jiang;

public class Account {
    private String accountID;
    private String accountname;
    private String operatedate;
    private int operatetype;
    private String accountpassword;
    private int accountbalance;
    private int amount;
    public String getAccountID() {
        return accountID;
    }
    public void setAccountID(String accountID) {
        this.accountID = accountID;
    }
    public String getAccountname() {
        return accountname;
    }
    public void setAccountname(String accountname) {
        this.accountname = accountname;
    }
    public String getOperatedate() {
        return operatedate;
    }
    public void setOperatedate(String operatedate) {
        this.operatedate = operatedate;
    }
    public int getOperatetype() {
        return operatetype;
    }
    public void setOperatetype(int operatetype) {
        this.operatetype = operatetype;
    }
    public String getAccountpassword() {
        return accountpassword;
    }
    public void setAccountpassword(String accountpassword) {
        this.accountpassword = accountpassword;
    }
    public int getAccountbalance() {
        return accountbalance;
    }
    public void setAccountbalance(int accountbalance) {
        this.accountbalance = accountbalance;
    }
    public int getAmount() {
        return amount;
    }
    public void setAmount(int amount) {
        this.amount = amount;
    }
    public Account(){
        
    }
    
}
View Code

AccountManager.java

package jiang;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
import java.util.Scanner;
 
public class AccountManager {

    //全局定义
    static Account a=new Account();
    static Scanner s=new Scanner(System.in);
    //选择
    public static void main(String[]args) {
        try {
            fileout();
            waterout();
        } catch (FileNotFoundException e1) {
            e1.printStackTrace();
        }
        try {
            if(loginAccount()&&loginPwd()) {
            Menu();
            String option;
            do {
            option=s.next();
            switch(option) {
            case"1":    handmoney();break;
            case"2":    getmoney();break;
            case"3":    moneygogogo();break;
            case"4":    update();break;
            case"5":    moneyhere();break;
            case "q":              ;break;
            default:    System.out.println("错误,请重新输入!
");
            }}while(!"q".equals(option));
            System.out.println("成功退出系统!
");}
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //读取账户基本信息库
    public static void fileout() throws FileNotFoundException {
        try {
        FileReader fr=new FileReader("accountinformation.txt");
        Scanner sc=new Scanner(fr);
        while(sc.hasNext()) {
        a.setAccountID(sc.next());
        a.setAccountname(sc.next());
        a.setAccountpassword(sc.next());
        a.setAccountbalance(sc.nextInt());
        }
        sc.close();
        fr.close();
        } catch (IOException e) {
            System.out.println("文件导入失败");
        }
    }
    //读取账户流水信息库
    public static void waterout() throws FileNotFoundException {
        try {
        FileReader fr=new FileReader("accountlist.txt");
        Scanner sc=new Scanner(fr);
        while(sc.hasNext()) {
        a.setAccountID(sc.next());
        a.setAccountname(sc.next());
        a.setOperatedate(sc.next());
        a.setOperatetype(sc.nextInt());
        a.setAmount(sc.nextInt());
        }
        sc.close();
        fr.close();
        } catch (IOException e) {
            System.out.println("文件导出失败");
        }
    }
    //导入账户基本信息库
    public static void filein() throws IOException {
        int i;
        FileReader fr=new FileReader("accountinformation.txt");
        FileWriter fw=new FileWriter("accountinformation.txt");
        i=fr.read();
        while(i!=-1) {
            fw.write(i);
            fr.read();
        }
        fr.close();
        fw.close();
    }
    //导入账户基本信息库
    public static void waterin() throws IOException {
        int i;
        FileReader fr=new FileReader("accountlist.txt");
        FileWriter fw=new FileWriter("accountlist.txt");
        i=fr.read();
        while(i!=-1) {
            fw.write(i);
            fr.read();
        }
        fr.close();
        fw.close();
    }
    //打印菜单
    public static void Menu(){
    StringBuffer s=new StringBuffer("
");
    s.append("	*************************************************
");
    s.append("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
    s.append("	*************************************************
");
    s.append("			1.存款;
");
    s.append("			2.取款;
");
    s.append("			3.转账汇款;
");
    s.append("			4.修改密码;
");
    s.append("			5.查询余额;
");
    s.append("	*************************************************
");
    s.append("	(输入q退出系统)
");
    s.append("请操作
");
    System.out.println(s);
    }
    //打印登陆账号界面
    public static boolean loginAccount() throws IOException  {
        System.out.println("	*************************************************
");
        System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
        System.out.println("	*************************************************
");
        System.out.println("		请输入您的账号:
");
            String checkAccount = s.next();
            if (a.getAccountID().equals (checkAccount)){
                System.out.println("输入账号成功,系统跳转到输入密码界面
");
                return true ;
          }else {
                   System.out.println("该账号不存在
");
                   return false ;
                }
    }
    //打印登陆密码界面
    public static boolean loginPwd() throws IOException {
        System.out.println("	*************************************************
");
        System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
        System.out.println("	*************************************************
");
        for (int i = 3 ;i>0;i--){
            System.out.println("		请输入您的密码:
");
            String checkPwd = s.next();
            if (a.getAccountpassword().equals (checkPwd)){
                System.out.println("输入密码成功,系统跳转到主界面!
");
                return true ;
          }else {
                if ( i ==1 ){
                    System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理
");
                   return false ;
                }
                System.out.println("密码录入错误!今日剩余次数:"+ (i-1));
           }
        }
        return false;
   
    }
    //存款
    private static void handmoney() {
        System.out.println("	*************************************************
");
        System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
        System.out.println("	*************************************************
");
        System.out.println("		请输入存款金额:
");
        int number=s.nextInt();
        a.setAccountbalance(a.getAccountbalance() + number);
        System.out.println("	*************************************************
");
        System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
        System.out.println("	*************************************************
");
        System.out.println("		当前账户存款操作成功
");
        System.out.println("		当前账户余额为"+a.getAccountbalance()+"元
");
        System.out.println("	*************************************************
");
        Menu();
        System.out.println("		请继续操作
");
    }
    //取款
    public static void getmoney() {
        a.setAccountbalance(a.getAccountbalance());
        System.out.println("	*************************************************
");
        System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
        System.out.println("	*************************************************
");
        System.out.println("		当前账户每日可以支取2万元
");
        System.out.println("		1.100元
");
        System.out.println("		2.500元
");
        System.out.println("		3.1000元
");
        System.out.println("		4.1500元
");
        System.out.println("		5.2000元
");
        System.out.println("		6.5000元
");
        System.out.println("		7.其他金额
");
        System.out.println("		8.退卡
");
        System.out.println("		9.返回
");
        System.out.println("	*************************************************
");
        int num1=100,num2=500,num3=1000,num4=1500,num5=2000,num6=5000;
        int str=s.nextInt();
        if (a.getAccountbalance() <str ){
          System.out.println("账户余额不足!!
");
          str=0;
        }else if(str==1){
            a.setAccountbalance(a.getAccountbalance() - num1);
        }else if(str==2){
            a.setAccountbalance(a.getAccountbalance() - num2);
        }else if(str==3){
            a.setAccountbalance(a.getAccountbalance() - num3);
        }else if(str==4){
            a.setAccountbalance(a.getAccountbalance() - num4);
        }else if(str==5){
            a.setAccountbalance(a.getAccountbalance() - num5);
        }else if(str==6){
            a.setAccountbalance(a.getAccountbalance() - num6);
        }else if(str==7){
             
            str=s.nextInt();
            a.setAccountbalance(a.getAccountbalance() - str);
        }else if(str==8){
            System.out.println("退卡成功
");
        }else if(str==9){
            System.out.println("返回成功
");
        }
        System.out.println("	*************************************************
");
        System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
        System.out.println("	*************************************************
");
        System.out.println("		当前账户存款操作成功
");
        System.out.println("		当前账户余额为"+a.getAccountbalance()+"元
");
        System.out.println("	*************************************************
");
         Menu();
        }
 
    //转账汇款
    public static void moneygogogo() {
        a.setAccountbalance(a.getAccountbalance());
        System.out.println("	*************************************************
");
        System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
        System.out.println("	*************************************************
");
        System.out.println("		请输入转账账户
");
        String str=s.next();
        if(a.getAccountID().equals(str)) {
            System.out.println("	*************************************************
");
            System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
            System.out.println("	*************************************************
");
            System.out.println("		请输入转账金额
");
            int num=s.nextInt();
            if(a.getAccountbalance()<=num){
                System.out.println("账户余额不足
");
            }else {
                a.setAccountbalance(a.getAccountbalance() - num);
                System.out.println("	*************************************************
");
                System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
                System.out.println("	*************************************************
");
                System.out.println("		当前账户向"+a.getAccountID()+"成功转账"+str+"元");
                System.out.println("		当前账户余额为"+a.getAccountbalance()+"元
");
                System.out.println("	*************************************************
");
            }
        }
        Menu();
    }
    //修改密码
    public static void update() throws IOException {
        fileout();
        System.out.println("	*************************************************
");
        System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
        System.out.println("	*************************************************
");
        System.out.println("		请输入当前密码:
");
        String str=s.next();
        if(!a.getAccountpassword().equals(str)) {
            System.out.println("当前密码录入错误");
        }else {
            System.out.println("		请输入修改密码:
");
            String str1=s.next();
            System.out.println("		请输入确认密码:
");
            String str2=s.next();
            if(!str1.equals(str2)) {
                System.out.println("修改密码与确认密码不一致
");
            }else {
                System.out.println("	*************************************************
");
                System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
                System.out.println("	*************************************************
");
                System.out.println("		当前账户密码修改成功");
                System.out.println("	*************************************************
");
            }
        }
        Menu();
    }
    //查询余额
    public static void moneyhere() {
        System.out.println("	*************************************************
");
        System.out.println("	  欢迎全世界最有钱的人使用中国工商银行自助柜员系统
");
        System.out.println("	*************************************************
");
        System.out.print("		当前账户余额为"+a.getAccountbalance()+"元
");
        System.out.print("		账户清单信息为:
");
        System.out.print("		操作日期"+a.getOperatedate()+" 操作类型"+a.getOperatetype()+"操作金额"+a.getAmount()+"
");
        System.out.println("	*************************************************
");
        Menu();
    }
}
View Code
原文地址:https://www.cnblogs.com/yongyuandishen/p/13720237.html