ATM测试总结报告

package manage;//信1905-1 张国强 20193996
import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.util.Date;
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 get_accountID()
	{
		return accountID;
	}
	public String get_accountname()
	{
		return accountname;
	}
	public String get_operatedate()
	{
		return operatedate;
	}
	public int get_operatetype()
	{
		return operatetype;
	}
	public String get_accountpassword()
	{
		return accountpassword;
	}
	public int get_accountbalance()
	{
		return accountbalance;
	}
	public int get_amount()
	{
		return amount;
	}
	public void set_accountID(String a)
	{
		accountID=a;
	}
	public void set_accountname(String a)
	{
		accountname=a;
	}
	public void set_operatedate(String a)
	{
		operatedate=a;
	}
	public void set_operatetype(int a)
	{
		operatetype=a;
	}
	public void set_accountpassword(String a)
	{
		accountpassword=a;
	}
	public void set_accountbalance(int a)
	{
		accountbalance=a;
	}
	public void set_(int a)
	{
		amount=a;
	}
	Account(String accountID,String accountname,String accountpassword,int accountbalance)
	{
		this.accountID=accountID;
		this.accountname=accountname;
		this.accountpassword=accountpassword;
		this.accountbalance=accountbalance;
	}
	public void accountlist(String accountID,String accountname,String operatedate,int operatetype,int amount)
	{
		this.accountID=accountID;
		this.accountname=accountname;
		this.operatedate=operatedate;
		this.operatetype=operatetype;
		this.amount=amount;
	}
}
public class AccountManager {
	static int di;
	static Scanner input=new Scanner(System.in);
	static Account m[]=new Account[5];
	static int length=5;
	static void chushi()
	{
		m[0]=new Account("20190001", "qwe","123456",5123);
		m[1]=new Account("20190002", "asd","654321",5166);
		m[2]=new Account("20190003", "fgh","112233",9658);
		m[3]=new Account("20190004", "uio","224466",1230);
		m[4]=new Account("20190005", "jkl","445566",1504);
	}
	static public void faceid()//账号界面
	{
		System.out.println("****************************************************************");
		System.out.println("           欢迎使用中国工商银行自动柜员系统");
		System.out.println("****************************************************************");
		System.out.println("                 请输入您的账号:\n");
		System.out.println("****************************************************************");
	}
	
	static public void judgeid()//判断账户
	{
		
		String p;
		int qq=0;
		p=input.next();
		int width;
		width=p.length();
		if(width!=8)
		{
			System.out.println("该卡不是工行卡");
		}
		for(int i=0;i<length;i++)
		{
			if(p.equals(m[i].get_accountID()))
			{
				qq=1;
				di=i;
				facepassword();
				judgepassword();
			}
		}
		if(qq==0)
		{
			System.out.println("该账号不存在");
		}
		
	}
	
	static public void facepassword()//密码界面
	{
		System.out.println("****************************************************************");
		System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
		System.out.println("****************************************************************");
		System.out.println("                 请输入您的密码:\n");
		System.out.println("****************************************************************");
	}
	
	static public void judgepassword()//判断密码是否正确
	{
		String password;
		password=input.next();
		for(int i=0;i<3;i++)
		{
		   if(password.equals(m[di].get_accountpassword()))
		   {
			   zhuface();
			   break;
		   }
		   else
		   {
				System.out.println("密码录入错误");
		   }
		   if(i==3)
		   {
			   System.out.println("该账号三次录入密码错误,该卡已被系统没收,请与工行及时联系处理");
			   faceid();
		   }
		}
		
	}
	static public void zhuface()//主界面
	{
		System.out.println("****************************************************************");
		System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
		System.out.println("****************************************************************");
		System.out.println("\t\t\t1.存款\n\t\t\t2.取款\n\t\t\t3.转账汇款\n\t\t\t4.修改密码\n\t\t\t5.查询余额\n");
		System.out.println("****************************************************************");
		
	}
	static public void chance()//选择
	{
		int ss;
		for(;;) {
		ss=input.nextInt();
		m[di].set_operatetype(ss);
		switch(ss)
		{
		case 1:cun();break;
		case 2:qu();break;
		case 3:zhuan();break;
		case 4:xiugai();break;
		case 5:chaxun();break;
		}
		System.out.println("输入q返回,不返回输入continue");
		String kk;
		kk=input.next();
		if(kk.equals("q"))
		{
			faceid();
			judgeid();
			chance();
		}
		else {
			zhuface();
		}
		}
	}
	static public void cun()//存钱
	{
		System.out.println("****************************************************************");
		System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
		System.out.println("****************************************************************");
		System.out.println("                 请输入存款金额:\n");
		System.out.println("****************************************************************");
		double l;
		l=input.nextDouble();
		if(l-(int)l==0)
		{
			System.out.println("****************************************************************");
			System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
			System.out.println("****************************************************************");
			System.out.println("                当前账户存款操作成功。\n当前账户余额为:"+((int)l+m[di].get_accountbalance()));
			System.out.println("****************************************************************");
			m[di].set_accountbalance((int)l+m[di].get_accountbalance());
		}
		else
		{
			System.out.println("输入金额有误");
		}
	}
	static public void qu()//取钱
	{
		System.out.println("****************************************************************");
		System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
		System.out.println("****************************************************************");
		System.out.println("           当前账户每日可以支取2万元。\n1、100元\r\n" + 
				"2、500元\r\n" + 
				"3、1000元\r\n" + 
				"4、1500元\r\n" + 
				"5、2000元\r\n" + 
				"6、5000元\r\n"+"7、其他金额\r\n" + 
				"8、退卡\r\n" + 
				"9、返回");
		System.out.println("****************************************************************");
		int qq;
		qq=input.nextInt();
		int mm = 0;
		switch(qq)
		{
		case 1:mm=100;break;
		case 2:mm=500;break;
		case 3:mm=1000;break;
		case 4:mm=1500;break;
		case 5:mm=2000;break;
		case 6:mm=5000;break;
		case 7:
			System.out.println("****************************************************************");
			System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
			System.out.println("****************************************************************");
			System.out.println("                     请输入取款金额:");
			int ee;
			ee=input.nextInt();
			System.out.println("****************************************************************");
			if(m[di].get_accountbalance()<ee)
			{
				System.out.println("账户余额不足");
			}
			else
			{
				m[di].set_accountbalance(m[di].get_accountbalance()-qq);
				System.out.println("****************************************************************");
				System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
				System.out.println("****************************************************************");
				System.out.println("                当前账户取款操作"+ee+"元成功。");
				System.out.println("                当前账户余额为:"+m[di].get_accountbalance());
			}
			break;
		case 8:
			faceid();
			judgeid();
			chance();
			break;
		case 9:
			faceid();
			judgeid();
			chance();
			break;
		}
		if(qq==1||qq==2||qq==3||qq==4||qq==5||qq==6)
		{
		if(m[di].get_accountbalance()<mm)
		{
			System.out.println("账户余额不足");
		}
		else {
		m[di].set_accountbalance(m[di].get_accountbalance()-qq);
		System.out.println("****************************************************************");
		System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
		System.out.println("****************************************************************");
		System.out.println("                当前账户取款操作"+mm+"元成功。");
		System.out.println("                当前账户余额为:"+m[di].get_accountbalance());
		}
		}
		
	}
	static public void zhuan()//转账
	{
		System.out.println("****************************************************************");
		System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
		System.out.println("****************************************************************");
		System.out.println("                 请输入转账账户:\n");
		System.out.println("****************************************************************");
		String ff;
		ff=input.next();
		int qian=0;
		int ww=0;int dd = 0;
		for(int i=0;i<5;i++)
		{
			if(ff.equals(m[i].get_accountID()))
			{
				ww=1;dd=i;
			}
		}
		if(ww==0)
		{
			System.out.println("该账户不存在");
		}
		else
		{
			System.out.println("****************************************************************");
			System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
			System.out.println("****************************************************************");
			System.out.println("                 请输入转账金额;");
			System.out.println("****************************************************************");
			qian=input.nextInt();
			if(qian>m[di].get_accountbalance())
			{
				System.out.println("账户余额不足");
			}
			else
			{
				System.out.println("****************************************************************");
				System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
				System.out.println("****************************************************************");
				System.out.println("请确认是否向*"+m[dd].get_accountID().substring(1,8)+"转账"+qian+"元");
				System.out.println("****************************************************************");
		        m[dd].set_accountbalance(m[dd].get_accountbalance()+qian);
		        m[di].set_accountbalance(m[di].get_accountbalance()-qian);
			}
			
		}
	}
	static public void xiugai()//修改密码
	{
		for(;;)
		{
		System.out.println("****************************************************************");
		System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
		System.out.println("****************************************************************");
		System.out.println("                 请输入当前密码:\n");
		String ss;
		ss=input.next();
		if(ss.equals(m[di].get_accountpassword()))
		{
			System.out.println("                 请输入修改密码:");
			String s1;
			s1=input.next();
			System.out.println("                 请输入修改密码:");
			String s2;
			s2=input.next();
			if(s1.equals(s2))
			{
				m[di].set_accountpassword(s1);
				break;
			}
			else
			{
				System.out.println("修改密码与确认密码不一致");
			}
		}
		else
		{
			System.out.println("原密码错误");
		}
		System.out.println("****************************************************************");
		}
	}
	static public void chaxun()//查询
	{
		System.out.println("****************************************************************");
		System.out.println("           欢迎"+m[di].get_accountname()+"使用中国工商银行自动柜员系统");
		System.out.println("****************************************************************");
		System.out.println("                 当前账户余额为:\n"+m[di].get_accountbalance());
		System.out.println("账户清单信息为:");
		SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.applyPattern("yyyy-MM-dd");
        Date date = new Date();// 获取当前时间 
        System.out.println("现在时间:" + sdf.format(date));
		
		System.out.println("****************************************************************");
	}
	public static void main(String []args)
	{
		faceid();
		chushi();
		judgeid();
		chance();
		
	}
}

  截图

 

 

 

 

 总结:

今天进行了Java开学测试。编译了一个关于ATM的程序。因为在平时练习中编写的程序都是比较短的。所以在看到这个程序的时候是比较慌。开始的时候没有理清头绪,开始也没有身体就直接开始敲基本数据。这样肯定就感觉思路不是很清晰。 后来就停下来认真的审了题。首先弄明白了这个题要建两个类。首先建立了一个account类。然后又建了一个accountmanage类。在account类中,我定义了基本的数据变量。并对这些数据变量。进行了,做出设置和得到的函数。 在这个程序中,遇到的问题有,首先,我对文件的操作不是十分明确。我承认在自学Java的时候,对于文件的操作不是十分熟悉。所以我在写这个程序的时候采用了数组的方法。在程序的开头,我定义了一个acount数组。先对数组进行了初始化。利用构造函数。对数组初始化了五组数据。在这一点上也遇到了一些问题。开始没有用构造函数。使用了一个。不同函数对其数据进行赋值。但是没有成功。然后便采用了构造函数的方法。 接下来我认为这个程序比较困难的一点就是,要在不同功能之间来回切换。这就需要我有清晰的思路。对程序有一个整体的把握。在编译时老师给我们提出的意见。鉴于我们先搭建整个框架,然后再添加其中的细节。这却是是做这种工程的有效方法。在编译时,为了方便我将。这个单独的页面都分成。都编译成单独的小函数。方便使用时调用。把取款,存款,转账和查询都分别编译成函数。因为在这个程序中使用。存款,取款和转账。还有账户界面之间要相互进行切换。于是我就根据题意在每个函数中给他们留下接口。F如果存款不成功的话。返回账户界面。我就会在存款函数中调用界面函数。从而能够返回账号界面。其余都采用了这种方式。 这个程序没有得满分原因有以下几点。首先,我对题目的理解不是十分透彻。所以我在审题方面就花费了很多时间。开始自己的思路不是十分清晰。也不知道从什么地方开始编译。等有了思路,已经过去了很多时间。所以以后在写程序的时候思路不能乱。首先要把程序的整个思路捋清楚。把整体的框架先搭建出来。然后再增加其中的一些细节。 在写这个程序的时候,首先在文件部分就纠结了很长时间。因为我对文件的操作不是十分熟悉。所以这个程序没有做到很完善。其中比较重要的一点就是没有进行文件的读写。接下来我会在java学习中学习对数据进行文件读写。然后比较困难的一点应该就是,在查询那一块儿。对每一条信息的执行记录没有得出来。我认为这个需求也是可以实现的。我想到了一个比较笨的方法。就是先定义时间的一个函数。然后再定义一个字符串数组。。每个操作之后就使用一次这个时间函数。并把这个时间记录在字符串数组中。操作记录也是同样的方法。也可以定义一个字符串数组。然后在里面进行记录。当然这个方法是比较笨的,大佬们有什么好的办法也可以给我提出来。我感觉在程序跳转方面的思路还是比较清晰的。各个页面之间的跳转是可以成功实现的。当时在测试时犯了一个比较低级的错误。我在修改密码之后。忘记了要返回到账号页面。因为我是用数组进行存储信息的。如果重新运行程序的话。我的密码是没有修改的。所以我如果要验证我的密码是否修改,我应该在运行的程序是可以返回到账号页面。从而验证是否密码修改成功。这可能也就是没有应用文件操作的弊端了。对文件信息的操作能够记录下来,可能是比较重要的。所以之后我应该学习这方面的技术。提高这个程序的实际应用能力。希望我的编译能力也能够不断的提高。

原文地址:https://www.cnblogs.com/qiangini/p/13715446.html