• 模拟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
  • 相关阅读:
    C++的类继承方式
    leetcode面试题53
    leetcode56 区间合并
    epoll源码分析
    C++11 lambda表达式是如何实现的?
    用 CPI 火焰图分析 Linux 性能问题
    cache
    mysql insert锁机制
    MySQL 各级别事务的实现机制
    cache line 伪共享
  • 原文地址:https://www.cnblogs.com/yongyuandishen/p/13720237.html
Copyright © 2020-2023  润新知