import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class ATM {
private ArrayList<Account> accounts=new ArrayList<>();
private Scanner sc=new Scanner(System.in);
//展示欢迎页面
public void start() {
while (true) {
System.out.println("--------------------------------欢迎来到南瓜ATM系统--------------------------------");
System.out.println("请选择你要进行的操作:\n1.注册一个新的账户:\n2.登录账号:\n3.退出系统结束操作");
String n = sc.next();
switch (n) {
case "1":
createAccount();
break;
case "2":
login();
break;
case "3":
System.exit(0);
default:
System.out.println("没有此功能请重新选择你需要进行的操作");
break;
}
}
}
//注册
//创建一个新的账户并把这个账户加在已有账户集合里面
private void createAccount(){
System.out.println("--------------------------------欢迎进入到南瓜ATM账户开户页面--------------------------------");
Account account=new Account();
System.out.println("请输入你的姓名:");
account.setUserName(sc.next());
while (true) {
System.out.println("请输入你的性别:");
String sex=sc.next();
if(sex.equals("男")||sex.equals("女")){
account.setSex(sex);
break;
}else{
System.out.println("你输入的性别有误哦,只能是男或者女,请输入正确的性别:");
}
}
while (true) {
System.out.println("请输入你的账户密码:");
String password=sc.next();
System.out.println("请确认你的账户密码:");
String word=sc.next();
if(password.equals(word)){
account.setPassword(password);
break;
}else{
System.out.println("你两次输入的密码不一致哦~~请重新再试一次看看:");
}
}
while (true) {
System.out.println("请您输入你的取现额度:");
double limit=sc.nextDouble();
if(limit>0){
account.setLimit(limit);
break;
}else{
System.out.println("取现额度不能小于0哦~~请重新输入");
}
}
//需要为这个开户的人生成一个卡号,应该是由系统自己生成的一个随机卡号且这个卡号不能与已经有的卡号重复!!!!
String newcardid=createCardId();
account.setCardId(newcardid);
//把账户加入到已有账户里面去
accounts.add(account);
//需要给一个提示告诉用户是否开户成功!!!
System.out.println("恭喜"+account.getUserName()+"开户成功,您的卡号是:"+account.getCardId());
}
//定义一个新的方法:
// 返回一个八位数字的银行卡号且这个卡号不和已经创建好的卡号重复(做一个判断)
private String createCardId(){
while (true) {
String cardid="";
Random r=new Random();
//循环8次,每次随机产生一个各位数字然后连接起来组成一个卡号
for (int i = 0; i < 8; i++) {
int data=r.nextInt(10);
cardid += data;//返回0~9的数字
}
//判断卡号是否重复;
Account ac=getAccountByCardId(cardid);
if(ac==null){
return cardid;
}
}
}
//根据卡号查找对象(为什么要重新创造一个方法?)
// 因为这个卡号查找对象不仅判断卡号是否重复的时候要用,并且登陆的时候也要用;
private Account getAccountByCardId(String cardId){
//在accounts里面寻找
for (int i = 0; i < accounts.size(); i++) {
Account ac=accounts.get(i);
if(ac.getCardId().equals(cardId)){
return ac;
}
}
return null;
}
//登录
private void login(){
System.out.println("--------------------------------欢迎进入到南瓜ATM登录页面--------------------------------");
//判断系统里面是否有账户
if(accounts.size()==0){
System.out.println("系统里没有账户哦~~ 无法登录,请先开户或者退出系统");
return;
}
while (true) {
System.out.println("请先输入你的卡号:");
String cardid=sc.next();
if(getAccountByCardId(cardid)==null){
//想不想回到注册,还是输错了卡号
while (true) {
System.out.println("你是否还没有注册,如果想要注册请回答:yes 如果只是输错卡号请回答:no");
String s=sc.next();
if(s.equals("yes")){
System.out.println("已经为你跳转到注册页面");
createAccount();
System.out.println("已为你跳到登录页面,请继续你的操作");
break;
}else if(s.equals("no")){
break;
}else{
System.out.println("请重新输入yes或者no");
}
}
}else{
//登陆进去后
int count=0;
System.out.println("请输入你的密码");
while (true) {
String password=sc.next();
if(getAccountByCardId(cardid).getPassword().equals(password)){
System.out.println("恭喜"+getAccountByCardId(cardid).getUserName()+"登录成功");
//登录以后需要进行的操作
System.out.println("请选择你要进行的操作:\n1.取款:\n2.存款:\n3.转账:\n4.余额查询:\n" +
"5.修改密码:\n6.返回首页面: \n7.退出系统结束操");
Scanner sc=new Scanner(System.in);
switch (sc.next()) {
case "1":
System.out.println("取款");
break;
case "2":
System.out.println("存款");
break;
case "3":
System.out.println("转账");
case "4":
System.out.println("余额查询");
case "5":
System.out.println("修改密码");
case "6":
return;
case "7":
System.exit(0);
default:
System.out.println("没有此功能请重新选择你需要进行的操作");
break;
}
}else{
count++;
if(count==3){
System.out.println("你已经连续三次输错密码了哦~~请稍后再试");
return;
}
System.out.println("密码错误请重新输入你的密码");
}
}
//登录进去处理完后
}
}
}
}
//目前暂时准备先把所有的东西磊在一起再分开诺列整齐,里面还有登录的一堆功能没有实现,今天先暂时到这里,剩下的明天继续补齐