package wuwei.bank;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
public class Bank //定义一个银行类
{
public static float money=0;//定义保存总金额的变量
public float gm;//定义保存取钱金额的变量
public float pm;//定义保存存钱金额的变量
public static int number;//定义流水号的变量
ArrayList list= new ArrayList(); //用来保存用户的操作记录
DecimalFormat df=new DecimalFormat("0.00");//规格化float类型的操作数
DecimalFormat df1=new DecimalFormat("0000");//规格化int类型的操作数
String get[]=new String[4];//用来保存流水号,总金额,存入/取出金额,操作时间的数组
public Bank()//空的构造函数
{
}
public String input()//从键盘上接受字符串
{
try{InputStreamReader in=new InputStreamReader(System.in);
BufferedReader readline=new BufferedReader(in);
String user=null;
user=readline.readLine();
return user;
}catch(IOException e){
e.printStackTrace();
}
return null;
}
public String data()//输出本机时间日期的函数
{
Date date=new Date();
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowDate=sf.format(date);
return nowDate;
}
public void record(String m[])//定义了一个保存操作的方法
{
list.add(" "+m[0]+" ");//存入流水号
list.add(m[1]+" ");//存入取款/存款金额
list.add(m[2]+" ");//存入总金额
list.add(m[3]+" \n");//存入当前操作时的时间
}
public void getmoney()//取钱的函数
{
int j=0;
try{
System.out.println("请输入取款金额!");
gm=Float.parseFloat(input());
}
catch(NumberFormatException e)
{
System.out.println("请输入数字!");//确定输入的是数字
getmoney();
}
if(money>=gm)//判断账号里的钱是否大于等于要取得钱
{
try{
System.out.println("1 确定 2 取消");
j=Integer.parseInt(input());// 输入整数的方法
}
catch(NumberFormatException e)
{
System.out.println("请输入数字!");
getmoney();
}
switch(j)
{
case 1: //确定执行的操作
money=money-gm;
number++; //流水号加一
get[0]=df1.format(number);//存入规格化后的流水号
get[1]=df.format(-gm);//存入规格化后的取款金额
get[2]=df.format(money);//存入规格化后的总金额
get[3]=data();//存入当前的日期时间
record(get);//调用record方法
System.out.println("操作成功!");
break;
case 2:
getmoney();//取消后,重新输入要取款的金额
break;
default: //输入的不是1或着2的其他数字
System.out.println("对不起,请输入提示选项!");
getmoney();
}
}
else
{
System.out.println("你的余额不足!你还有"+money+"元");
}
menu();
}
public void putmoney()//存钱函数
{
int i=0;
try{
System.out.println("请输入存款金额!");
pm=Float.parseFloat(input());
}catch(NumberFormatException e)
{
System.out.println("请输入数字!");
putmoney();
}
try{
System.out.println("1 确定 2 取消");
i=Integer.parseInt(input());// 输入整数的方法
}
catch(NumberFormatException e)
{
System.out.println("请输入数字!");
putmoney();
}
switch(i)
{
case 1:
money=money+pm;
number++;//流水号加一
get[0]=df1.format(number);//存入规格化后的流水号
get[1]=df.format(pm);//存入规格化后的存款金额
get[2]=df.format(money);//存入规格化后的总金额
get[3]=data();//存入当前的日期时间
record(get);//调用record方法
System.out.println("操作成功!");
break;
case 2:
putmoney();
break;
default:
System.out.println("对不起,请输入提示选项!");
putmoney();
}
menu();
}
public void query()//查询函数
{
if(list.size()==0)//没有执行任何操作
{
System.out.println("你还没有操作记录!");
menu();
}else
{
System.out.println(" 流水号 "+" 存入/取出金额 "+" 总金额 "+" 操作日期 ");
int i=0;
for(i=0;i<list.size();i++)
{
System.out.print(list.get(i));//输出存储记录
}
System.out.println();
menu();
}
}
public void menu()//菜单函数,根据提示选择你要的服务类型
{
System.out.println("请选择服务类型:1 取款 2 存款 3 查询 4 退出 ");
int i=0;
try{
i=Integer.parseInt(input());// 输入整数的方法
}
catch(NumberFormatException e)
{
System.out.println("对不起,请输入数字!");
menu();
}
switch(i)
{
case 1:getmoney();//调用取钱函数
break;
case 2:putmoney();//调用存钱函数
break;
case 3:query();//调用查询函数
break;
case 4:System.exit(0);;//系统退出
break;
default:System.out.println("对不起,请输入提示选项!");
menu();
}
}
}