本项目包含java se最基础的知识,在保证不超纲的条件下能很好锻炼逻辑思维,各方面的功能知识点都有用到,以下是讲解
先创建一个包,这个包有4个类,以下是具体步骤
一.首先我们要创建一个用户对象类 ,在进行封装。
public class UserStruct {
private String name;//户主名字
private String Id;//卡号
private String code;//密码
private double money1;//提款限额
private double money;//余额
public UserStruct(double money) {
this.money = money;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public UserStruct() {
}
public UserStruct(String name, String id,String code, double money1) {
this.name = name;
Id = id;
this.code = code;
this.money1 = money1;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public double getMoney1() {
return money1;
}
public void setMoney1(double money1) {
this.money1 = money1;
}
}
二. 创建一个测试类 也是用户的主页面 ,先用集合录入对象,用方法把各功能区域分开,保证每一个类都有每一个的功能,方便调试的同时更加美观,不会看起来乱糟糟。
1.用户注册页面
public class Lil_6 {
public static void main(String[] args) {
// 创建集合数据库,用于储存用户信息
ArrayList home = new ArrayList<>();
// 1.首页
System.out.println("==========测试版ATM======");
ControlMenu(home);
}
public static void ControlMenu(ArrayList home){
while (true) {
System.out.println("==========欢迎来到12ATM系统======");
Scanner sc = new Scanner(System.in);
System.out.println("1.登陆账号");
System.out.println("2.注册账号");
int number = sc.nextInt();
switch (number) {
case 1: ControlLogin(home); break; // 登陆功能
case 2: ControlReg(home,sc); break; // 注册功能
default: System.out.println("没有这个功能");break;
}
}
}
private static void ControlReg(ArrayList home,Scanner sc) {
//注册功能方法
System.out.println("==============================");
System.out.println("请您输入您的名字");
String name = sc.next();
String code3;
while (true) {
System.out.println("请您输入您的密码");
String code = sc.next();
System.out.println("请确认密码");
String code2 = sc.next();
if (code.equals(code2)){
code3=code;
break;
}else{
System.out.println("两次密码有误,请重新输入");
}
}
System.out.println("请您输入您的提款限额");
double money1 = sc.nextDouble();
//生成卡号
String Id = Utils.GetCardId(home);
//录入集合数据库
UserStruct card = new UserStruct(name,Id,code3,money1);
home.add(card);
//显示信息
System.out.println("恭喜你开户成功n"+"名称"+card.getName()+"n卡号"+card.getId()+"n限额"+card.getMoney1());
}
public static void ControlLogin(ArrayList home) {
if(home.size()==0){
System.out.println("请注册您的账户");
return;
}
while (true) {
System.out.println("================================");
Scanner sc = new Scanner(System.in);
System.out.println("请您输入卡号");
String ID = sc.next();
UserStruct ss =Utils.FindCard(home,ID);
if (ss!=null){
while(true) {
System.out.println("请您输入密码");
String code = sc.next();
if (ss.getCode().equals(code)){
System.out.println("登陆成功,欢迎您");
Power.ADD1(ss,sc,home);
return;
}else{
System.out.println("密码错误请重新输入");
}
}
}else{
System.out.println("对不起,不存在这个账户");
}
}
}
}
2. 工具类单独放一个类,记住把这个类设置私密,以防用这个包面向对象,并且更加专业
import java.util.ArrayList;
import java.util.Random;
public class Utils {
//private私密
private Utils() {
}
public static String GetCardId(ArrayList home) {
//生成功能卡号方法,8位数卡号并遍历集合是否有相同卡号功能
Random vc = new Random();
while (true) {
String number2 = "";
for (int i = 0; i < 8; i++) {
number2 += vc.nextInt(10);
}
//检测
UserStruct s =FindCard(home,number2);
if (s==null){
return number2;
}
}
}
public static UserStruct FindCard(ArrayList home, String number2) {
for (int i = 0; i < home.size(); i++) {
UserStruct ID = home.get(i);
if (ID.getId().equals(number2)){
return ID;
}
}
return null ;
}
}
三. 在创一个类,用于用户登录页面
import java.util.ArrayList;
import java.util.Scanner;
public class Power {
public static void ADD1(UserStruct ss, Scanner sc, ArrayList home) {
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.注销账户");
int number = sc.nextInt();
switch (number) {
case 1: GetInfo(ss); break; // 查询
case 2: AddMoney(ss,sc); break; // 存款
case 3: GetMoney(ss,sc); break; // 取款
case 4: TransferMoney(ss,sc,home); break; // 转账
case 5: ChangePassword(ss,sc); //修改密码
return;
case 6: System.out.println("祝您有美好的一天~"); break; //退出
case 7: DeleteUser(ss,sc,home); break; // 注销账户
default: System.out.println("指令错误"); break;
}
}
}
public static void DeleteUser(UserStruct ss,Scanner sc, ArrayList home) {
System.out.println("注销前请取出所有余额");
GetMoney(ss, sc);
UserStruct ID = ss;
if(ss.getMoney()==0){
while (true) {
for (int i = 0; i < home.size(); i++) {
UserStruct kk = home.get(i);
if (ID.getId().equals(kk.getId())) {
home.remove(i);
System.out.println("注销成功");
return;
}
}
}
}else{
System.out.println("账户金额暂未清零,无法注销,如有疑问请致电110");
}
}
public static void ChangePassword(UserStruct ss, Scanner sc) {
while (true) {
System.out.println("请您输入您的密码");
String code = sc.next();
System.out.println("请确认密码");
String code2 = sc.next();
if (code.equals(code2)){
ss.setCode(code);
System.out.println("修改成功");
return;
}else{
System.out.println("两次密码有误,请重新输入");
}
}
}
public static void TransferMoney(UserStruct ss, Scanner sc,ArrayList home) {
while (true) {
System.out.println("请您输入对方卡号");
String ID = sc.next();
//调用对方用户信息
UserStruct vc = Utils.FindCard(home, ID);
if (vc != null) {
System.out.println("请您确认户主名字" + vc.getName());
System.out.println("确认请输入1,不确认请输入2");
int c = sc.nextInt();
if (c==1){
while(true) {
System.out.println("请您输入转账金额");
double money = sc.nextDouble();
if (money <= ss.getMoney()) {
double money2 = vc.getMoney()+money;
vc.setMoney(money2);
System.out.println("转账成功");
return;
} else {
System.out.println("您的余额不足");
}
}
}
} else {
System.out.println("没有这个卡号");
}
}
}
public static void GetMoney(UserStruct ss, Scanner sc) {
UserStruct kk =ss;
while(true) {
System.out.println("您的账户余额为" + kk.getMoney() + "请您输入取款金额");
double money = sc.nextDouble();
if (kk.getMoney() >= money) {
if (money <= kk.getMoney1()) {
double a = kk.getMoney();
double b = a - money;
kk.setMoney(b);
System.out.println("取款成功");
return;
} else {
System.out.println("超出提款限额,您的提款限额为" + kk.getMoney1());
}
} else {
System.out.println("取款金额大于存款金额");
}
}
}
public static void AddMoney(UserStruct ss,Scanner sc) {
UserStruct vc = ss;
System.out.println("请您输入存款金额");
double money =sc.nextDouble();
double vc1 = ss.getMoney();
vc1+=money;
ss.setMoney(vc1);
System.out.println("存款成功");
}
public static void GetInfo(UserStruct ss) {
UserStruct one =ss;
System.out.println("户主名字:"+one.getName());
System.out.println("您的卡号:"+one.getId());
System.out.println("您的存款:"+one.getMoney());
System.out.println("您的提款限额:"+one.getMoney1());
}
}



