zoukankan      html  css  js  c++  java
  • 模拟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
  • 相关阅读:
    UVa 1451 Average (斜率优化)
    POJ 1160 Post Office (四边形不等式优化DP)
    HDU 3507 Print Article (斜率DP)
    LightOJ 1427 Substring Frequency (II) (AC自动机)
    UVa 10245 The Closest Pair Problem (分治)
    POJ 1741 Tree (树分治)
    HDU 3487 Play with Chain (Splay)
    POJ 2828 Buy Tickets (线段树)
    HDU 3723 Delta Wave (高精度+calelan数)
    UVa 1625 Color Length (DP)
  • 原文地址:https://www.cnblogs.com/yongyuandishen/p/13720237.html
Copyright © 2011-2022 走看看