//键盘输入的准备
public static Scanner sc = new Scanner(System.in);
public static String[][] us=new String[10][3];//第一个[]中放置行数,第二个[]每条数据上有几个空间
public static int loginIndex=-1;//登录成功时,信息所在二维数组中的行位置
static {
us[0][0]="woniu";
us[0][1]="1";
us[0][2]="5000";
us[1][0]="Lucy";
us[1][1]="2";
us[1][2]="3000";
}
/*
* 登录功能的实现
* 1.先判断这个us容器是否存在
* 2.先输入账号和密码
* 3.读取容器中的数据与输入的账号和密码比较
* 4.比较有相同的,代表成功,否则登录失败
* 5.登录成功,操作钱
*
* */
public static void main(String[] args) {
System.out.println("=====欢迎使用蜗牛ATM无限制存取款系统=========");
System.out.println("===请输入你的选项,1:登录 2:注册 3:退出=========");
System.out.println("========================================");
int input=sc.nextInt();
switch(input) {
case 1:
login();
break;
case 2:
regedit();
break;
case 3:
System.exit(-1);
break;
default:
System.out.println("请正确输入");
break;
}
//当再次输入的时候,判断用户输入的数是否有效
//如果有效进入下一步操作,无效则让用户再次重新输入
这一块需要解决的问题:当用户连续输入错误2次以上怎么处理
int secondInput=sc.nextInt();
switch(secondInput) {
case 1:
login();
break;
case 2:
regedit();
break;
case 3:
System.exit(-1);
break;
default:
System.out.println("请正确输入");
break;
}
}
public static void login() {
if(us!=null) {//判断这个us容器是否存在
System.out.println("输入账号");
String lname=sc.next();
System.out.println("请输入密码");
String psw=sc.next();
boolean isLoginOk =false;//登录是否成功的标记,默认值是登录失败
for(int i=0;i<us.length;i++) {
String[] u=us[i];
if(u[0]!=null && u[0].equals(lname) && u[1]!=null && u[1].equals(psw)) {
//登录成功
System.out.println("恭喜登录成功");
isLoginOk=true;
//缓存登录成功时这个用户所在数组的行值
loginIndex=i;
//操作钱
doMoney();
break;
}
}
//当isLoginOk是false的时候,进入失败处理
if(!isLoginOk) {
System.out.println("登录失败");
}
}
}
//账号钱的操作
public static void doMoney() {
System.out.println("==================请输入你的选项:=====================");
System.out.println("==1:查询余额 2:转账3:取款 4:取款 5:返回菜单 6:退出==");
System.out.println("====================================================");
int n=sc.nextInt();
switch(n) {
case 1:
showMoney();
break;
case 2:
transfer();
break;
case 3:
System.out.println("取款功能正在建设中...");
break;
case 4:
System.out.println("存款功能正在建设中");
break;
case 5://返回主菜单
main(null);
break;
default:
System.out.println("请正确输入");
break;
}
}
/*
* 展示余额
* */
public static void showMoney() {
System.out.println("当前用户"+us[loginIndex][0]+"的账号余额"+us[loginIndex][2]);
//回到子菜单的选项
doMoney();
}
/*
* 转账功能实现
* 1.输入转入账号
* 2.判断账号是否存在,存在了可以转,不存在友好提示
* 3.判断钱够不够,够了才可以转
* 4.给对方的余额增加,自己余额减少
*
* */
public static void transfer() {
System.out.println("请输入转入账号");
String yourLname=sc.next();
//判断对方账号是否存在
for(int i=0;i<us.length;i++) {
if(us[i][0]!=null && us[i][0].equals(yourLname)) {
//有账号了
System.out.println(us[loginIndex][0]+"的当前余额是"+us[loginIndex][2]);
System.out.println();
System.out.println("请输入转账金额");
int money=sc.nextInt();
if(money<=0) {
System.out.println("请输入大于0的金额");
break;
}
//将登陆用户的钱的字符串转为int类型
int loginMoney=Integer.parseInt(us[loginIndex][2]);
if(money<=loginMoney) {
//可以进行转账了
int otherMoney=Integer.parseInt(us[i][2]);//对方原有的余额
//给对方增加
us[i][2]=otherMoney+money+"";//“ ”把int类型转为字符串
//给当前账号减钱
us[loginIndex][2]=loginMoney-money+"";
System.out.println("转账成功");
System.out.println("您的当前账户余额为:"+us[loginIndex][2]);
System.out.println("对方当前账户余额为:"+us[i][2]);
}else {
System.out.println("你的余额不足,余额是:"+loginMoney);
}
}else {
System.out.println("您输入的账号不存在");
}
//继续操作钱
System.out.println();
doMoney();
}
}
/*
* 注册
* 1.输入注册的账号和密码
* 2.找到存放账号和密码的位置
* 3.存放账号密码,以及有个默认的金额5000
* 4.跳转至登录功能
* */
public static void regedit() {
System.out.println("请输入要注册的账号");
String lname=sc.next();
System.out.println("请输入要注册的密码");
String psw=sc.next();
boolean isRegeditOk=false;//是否成功的标记,默认没有注册成功
//找到存放账号和密码的位置
for(int i=0;i<us.length;i++) {//行中的每列
//第i行第0列中内容为null,直接进行注册
if(us[i][0]==null) {
us[i][0]=lname;//赋值给第i行上的的第0列为输入账号
us[i][1]=psw;//赋值给第i行上的的第1列为输入密码
us[i][2]="5000";//赋值给第i行上的的第2列为默认钱5000
isRegeditOk=true;
break;
}
if(isRegeditOk) {
break;
}
}
//注册后的处理
if(isRegeditOk) {
//调用登录的方法
System.out.println("====注册成功,请登录====");
login();
}else {//失败的处理
System.out.println("注册失败");
}
}