package longma_01;
//用户类
/**
* @安得广厦千万间
* @大庇天下寒士俱欢颜
* @-----龙马-----@
*/
public class demo_02 {
private String cardId;
private String userName;
private String passWord;
private double money;
private double quotaMoney;
public String getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public double getQuotaMoney() {
return quotaMoney;
}
public void setQuotaMoney(double quotaMoney) {
this.quotaMoney = quotaMoney;
}
}
package longma_01;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
/**
* @安得广厦千万间
* @大庇天下寒士俱欢颜
* @-----龙马-----@
*/
public class demo_01 {
public static void main(String[] args) {
ArrayList<demo_02> accounts = new ArrayList<>();
Scanner scan = new Scanner(System.in);
start:
while (true) {
System.out.println("------------龙马ATM系统------------");
System.out.println(" 1.账户登录");
System.out.println(" 2.账户注册");
System.out.println(" 3.退出登录系统");
for (int i = 0; i < accounts.size(); i++) {
System.out.println(accounts.get(i).getCardId());
}
System.out.print("请选择操作:");
int commond = scan.nextInt();
switch (commond) {
case 1:login(scan,accounts);
break;
case 2:
register(accounts, scan);
break;
case 3:
break start;
default:
System.out.println("输入操作错误,请重新输入:");
}
}
}
/**
* 登录功能
* @param scan
* @param accounts
*/
private static void login(Scanner scan, ArrayList<demo_02> accounts) {
System.out.println("--------欢迎进入用户登录界面--------");
if(accounts.size()==0) {
System.out.println("没有任何账户,请先进行账户注册");
return;
}
while (true) {
System.out.println("输入登录卡号");
String id= scan.next();
demo_02 acc=get_id(accounts,id);
if(acc!=null){
while (true) {
System.out.println("请您输入登录密码:");
String pass=scan.next();
if(acc.getPassWord().equals(pass)){
System.out.println("恭喜您"+acc.getUserName()+"登录成功");
showUserCommond(scan,acc,accounts);
return;
}
else{
System.out.println("您输入密码错误,请重新输入:");
}
}
}
else {
System.out.println("对不起,系统中没有该卡号,请重新输入卡号:");
}
}
}
private static void showUserCommond(Scanner scan,demo_02 acc,ArrayList<demo_02> accounts) {
while (true) {
System.out.println("-----------用户操作页------------");
System.out.println(" 1.查询账户");
System.out.println(" 2.存款");
System.out.println(" 3.取款");
System.out.println(" 4.转账");
System.out.println(" 5.修改密码");
System.out.println(" 6.退出");
System.out.println(" 7.注销账户");
System.out.println("请选择您的操作:");
int commond=scan.nextInt();
switch (commond){
case 1:showAccount(acc);
break;
case 2:sava(acc,scan);
break;
case 3:drawMoney(acc,scan);
break;
case 4:transformMoney(scan,acc,accounts);
break;
case 5:updatePassword(scan,acc);
return;
case 6:
System.out.println("成功退出!");
return;
case 7:
System.out.println("确认进行销户操作!!!y/n");
String rs=scan.next();
switch (rs){
case "y":
if(acc.getMoney()>0){
System.out.println("当前账户余额未取完,请取完余额在进行销户!!");
break;
}
else {
accounts.remove(acc);
System.out.println("您当前账户已完成销户!!");
return;
}
case "n":
System.out.println("当前账户继续进行保留");
break;
}
default:
}
}
}
/**
*
* @param scan
* @param acc
*/
private static void updatePassword(Scanner scan, demo_02 acc) {
System.out.println("-------------------用户密码修改----------------------");
while (true) {
System.out.println("请输入当前密码:");
String pass=scan.next();
if(acc.getPassWord().equals(pass)){
while (true) {
System.out.println("请输入新密码:");
String newPass1= scan.next();
System.out.println("请再次输入新密码:");
String newPass2= scan.next();
if(newPass2.equals(newPass1)){
acc.setPassWord(newPass1);
System.out.println("密码修改成功!!");
return;
}
else{
System.out.println("两次密码不一致!!!");
}
}
}
else{
System.out.println("密码不正确");
}
}
}
private static void transformMoney(Scanner scan, demo_02 acc, ArrayList<demo_02> accounts) {
System.out.println("-------------用户转账界面---------------");
if(accounts.size()>2){
System.out.println("当前系统账户总数小于2,无法完成转账,请去注册账户吧!!!");
return;
}
while (true) {
System.out.println("请输入对方卡号:");
String id=scan.next();
if(id.equals(acc.getCardId())) {
System.out.println("对不起,您不能给自己进行转账!!!");
continue;
}
demo_02 acc_temp=get_id(accounts,id);
if(acc_temp==null) {
System.out.println("系统中没有此开户卡号!!!");
}
else{
String name=acc_temp.getUserName();
String tip="*"+name.substring(1);
System.out.println("请输入["+tip+"]的姓氏:");
String str=scan.next();
if(name.startsWith(str)){
while (true) {
System.out.println("请您输入转账金额:");
double t_money=scan.nextDouble();
if(t_money>acc.getMoney())
{
System.out.println("对不起,您卡上余额不足!!!,当前余额"+acc.getMoney());
}
else{
acc.setMoney(acc.getMoney()-t_money);
acc_temp.setMoney(acc_temp.getMoney()+t_money);
System.out.println("转账成功!当前账户余额"+acc.getMoney());
return;
}
}
}
else{
System.out.println("对不起,您输入信息有误!!!");
}
}
}
}
private static void drawMoney(demo_02 acc, Scanner scan) {
System.out.println("---------------用户取款-----------------");
if(acc.getMoney()<100){
System.out.println("余额不足100元,不能取款!");
return;
}
while (true) {
System.out.println("输入取款金额:");
double money=scan.nextDouble();
if(money>acc.getQuotaMoney()){
System.out.println("对不起,取款失败,取款金额超过最大限额"+acc.getQuotaMoney()+"元\n请重新输入取款金额!!!");
}
else{
if(money>acc.getMoney())
System.out.println("卡上余额不足,您目前余额为:"+acc.getMoney()+"元");
else{
System.out.println("恭喜您,成功取款"+money+"元");
acc.setMoney(acc.getMoney()-money);
showAccount(acc);
return;
}
}
}
}
private static void sava(demo_02 acc, Scanner scan) {
System.out.println("------------进行用户存钱---------------");
System.out.println("输入存款金额:");
double money=scan.nextInt();
acc.setMoney(acc.getMoney()+money);
System.out.println("恭喜1存钱操作完成,更新后账户信息如下:");
showAccount(acc);
}
private static void showAccount(demo_02 acc) {
System.out.println("------------当前账户信息---------------");
System.out.println("卡号:"+acc.getCardId());
System.out.println("用户:"+acc.getUserName());
System.out.println("余额:"+acc.getMoney());
System.out.println("限额:"+acc.getQuotaMoney());
}
/**
* @param accounts
* 用户注册
*/
private static void register(ArrayList<demo_02> accounts, Scanner scan) {
System.out.println("--------系统开户操作---------");
demo_02 account = new demo_02();
System.out.println("输入用户名");
String name = scan.next();
account.setUserName(name);
while (true) {
System.out.println("输入登录密码");
String pass1 = scan.next();
System.out.println("请再次确认密码");
String pass2 = scan.next();
if (pass1.equals(pass2)) {
account.setPassWord(pass1);
break;
}
else {
System.out.println("对不起,两次密码不一致,请重新输入");
}
}
System.out.println("请输入限额");
double quot = scan.nextDouble();
account.setQuotaMoney(quot);
String id = get_rad_id(accounts);
account.setCardId(id);
accounts.add(account);
System.out.println("恭喜" + account.getUserName() + "开户成功");
System.out.println("您的开户卡号为"+account.getCardId());
}
/**
*
* @param accounts
* @return
* 获取随机卡号
*/
private static String get_rad_id(ArrayList<demo_02> accounts) {
Random rad = new Random();
while (true) {
String id = "";
for (int i = 0; i < 8; i++) {
id += rad.nextInt(10);
}
if (get_id(accounts, id) == null)
return id;
}
}
/**
* 判断卡号是否重复
* @param accounts
* @param id
* @return
*/
private static demo_02 get_id(ArrayList<demo_02> accounts, String id) {
for (int i = 0; i < accounts.size(); i++) {
demo_02 account = accounts.get(i);
if (account.getCardId().equals(id))
return account;
}
return null;
}
}