java atm模拟系统项目_Java ATM模拟系统报告

这是一个用Java编写的ATM模拟系统,包括读取用户数据、验证账户、余额查询、存款、取款等功能。系统还提供了管理员模式,可以读取用户、添加用户和删除用户。在用户操作过程中,如果输入错误会进行相应的错误提示。
摘要由CSDN通过智能技术生成

import java.util.*;import java.io.*;public classATM {static intnumber;static int usernum = 0;static boolean isAdmin = false;public static Scanner kbd = newScanner(System.in);public static void readLength() throwsIOException {

BufferedReader file= null;try{

file= new BufferedReader(new InputStreamReader(new FileInputStream("ATMUsers")));

String line= null;int count = 0;while ((line = file.readLine()) != null) count++;

number=count;

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{if (file != null) {try{

file.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}public static void readUsers(String[][] users) throwsIOException {

BufferedReader file= null;try{

file= new BufferedReader(new InputStreamReader(new FileInputStream("ATMUsers")));

String line= null;int count = 0;while ((line = file.readLine()) != null) {

String data=line;

String[] strArray= data.split(" ");

users[0][count] = strArray[0];

users[1][count] = strArray[1];

users[2][count] = strArray[2];

count++;

}

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{if (file != null) {try{

file.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}public staticString checkID(String acctNum, String pwd, String[][] users) {

String result= "错误!";for(int i = 0;i < number;i++) {if (acctNum.equals("000000") && pwd.equals("000000")) {

isAdmin= true;return "0";

}if (acctNum.equals(users[0][i]) && pwd.equals(users[1][i])) {

result= users[2][i];

usernum=i;

}

}returnresult;

}public static intmenu() {intmenuChoice;do{

System.out.print("\n请选择想要执行的操作:\n"

+ "**********************"

+ "\n* 一、余额\t二、存款 *\n"

+ "* *"

+ "\n* 三、取款\t四、退出 *\n"

+ "**********************\n");

menuChoice=kbd.nextInt();if (menuChoice < 1 || menuChoice > 4){

System.out.println("错误!");

}

}while (menuChoice < 1 || menuChoice > 4);returnmenuChoice;

}public static intadminMenu() {intmenuChoice;do{

System.out.print("\n请选择想要执行的操作:\n"

+ "******************************"

+ "\n* 一、读取用户\t二、添加用户 *\n"

+ "* *"

+ "\n* 三、删除用户\t四、退出管理 *\n"

+ "******************************\n");

menuChoice=kbd.nextInt();if (menuChoice < 1 || menuChoice > 4){

System.out.println("错误!");

}

}while (menuChoice < 1 || menuChoice > 4);returnmenuChoice;

}public static void displayBalance(doublex) {

System.out.printf("\n您的余额为 $%.2f\n", x);

}public static double deposit(double x, doubley, String[][] users) {double depositAmt = y, currentBal =x;double newBalance = depositAmt +currentBal;

System.out.printf("您现在的余额为:$%.2f\n", newBalance);

users[2][usernum] = "" +newBalance;returnnewBalance;

}public static double withdraw(double x, doubley, String[][] users) {double withdrawAmt = y, currentBal =x, newBalance;

newBalance= currentBal -withdrawAmt;

users[2][usernum] = "" +newBalance;

System.out.printf("您现在的余额为:$%.2f\n",newBalance);returnnewBalance;

}public static String[][] addUser(String[][] users) throwsIOException {

System.out.print("\n请输入您想要添加的用户卡号:");

String data1=kbd.next();if(data1.length() != 10) {

System.out.print("卡号长度不符!");returnusers;

}for(int i = 0;i < number;i++) {if(data1 == users[0][i])

System.out.print("已有同名用户!");returnusers;

}

System.out.print("\n请输入密码:");

String data2=kbd.next();if(data2.length() != 6) {

System.out.print("密码长度不符!");

}

System.out.print("\n请输入初始资金:");

String data3=kbd.next();

String[][] newusers= new String[3][number + 1];for(int i = 0; i < number;i++) {

newusers[0][i] = users[0][i];

newusers[1][i] = users[1][i];

newusers[2][i] = users[2][i];

}

newusers[0][number] =data1;

newusers[1][number] =data2;

newusers[2][number] =data3;

FileWriter fileWriter= new FileWriter("ATMUsers",true);

BufferedWriter bufferWriter= newBufferedWriter(fileWriter);

bufferWriter.newLine();

bufferWriter.write(data1);

bufferWriter.write(' ');

bufferWriter.write(data2);

bufferWriter.write(' ');

bufferWriter.write(data3);

bufferWriter.close();

number++;

System.out.print("\n添加成功!");returnnewusers;

}public static void deleteUser(String[][] users) throwsIOException {

System.out.print("\n请输入您想要删除的用户卡号:");

String todelete=kbd.next();inti;boolean exist = false;for(i = 0;i < number;i++) {if(todelete.equals(users[0][i])) {

exist= true;break;

}

}if(exist != true) {

System.out.print("\n错误:用户不存在!");return;

}

System.out.print("\n确认要删除该用户吗?(键入Y以确认)");

String check=kbd.next();if(!check.equals("y") && !check.equals("Y")) {return;

}intj;for(j = i;j < number - 1;j++) {

users[0][j] = users[0][j + 1];

users[1][j] = users[1][j + 1];

users[2][j] = users[2][j + 1];

}

number--;

System.out.print("\n删除成功!");

}public static void remakeFile(String[][] users) throwsIOException {

File file= new File("ATMUsers");

file.delete();

File newfile= new File("ATMUsers");

newfile.createNewFile();

FileWriter fileWriter= new FileWriter(newfile.getName(),true);

BufferedWriter bufferWriter= newBufferedWriter(fileWriter);for(int i = 0;i < number;i++) {if(i != 0) bufferWriter.newLine();

bufferWriter.write(users[0][i]);

bufferWriter.write(' ');

bufferWriter.write(users[1][i]);

bufferWriter.write(' ');

bufferWriter.write(users[2][i]);

}

bufferWriter.close();

}public static void main(String[] args) throwsIOException {

String accNum, pass, origBal= "错误!";int count = 0, menuOption = 0;double depositAmt = 0, withdrawAmt = 0, currentBal = 0;

readLength();

String[][] users= new String[3][number];

readUsers(users);do{

System.out.print("请输入账户名:");

accNum=kbd.next();

System.out.print("请输入密码:");

pass=kbd.next();

origBal=checkID(accNum, pass,users);

count++;if (count >= 3 && origBal.equals("错误!")){

System.out.print("尝试次数已达上限!");

System.exit(0);

}if (!(origBal.equals("错误!"))){if(isAdmin == false) System.out.println("\n您的余额为 $" + Float.parseFloat(users[2][usernum]));if(isAdmin == true) System.out.println("\n您正以管理员身份登录。");

}elseSystem.out.println(origBal);

}while(origBal.equals("错误!"));

currentBal=Double.parseDouble(origBal);while (menuOption != 4 && isAdmin == true) {

menuOption=adminMenu();switch(menuOption) {case 1:for (int i = 0; i < number; i++){

System.out.println("用户" + (i + 1) + ": " + users[0][i]);

}continue;case 2:

users=addUser(users);continue;case 3:

deleteUser(users);continue;case 4:

System.out.print("\n正在退出……");

remakeFile(users);

System.exit(0);break;

}

}while (menuOption != 4 && isAdmin == false) {

menuOption=menu();switch(menuOption)

{case 1:

displayBalance(currentBal);continue;case 2:

System.out.print("\n请输入您想要存储的数额:$ ");

depositAmt=kbd.nextDouble();if(depositAmt < 0.0) {

System.out.print("\n不得进行负存款!");continue;

}

currentBal=deposit(depositAmt, currentBal,users);continue;case 3:

System.out.print("\n请输入您想要提取的数额:$ ");

withdrawAmt=kbd.nextDouble();while(withdrawAmt > 100.0 || withdrawAmt >currentBal) {

System.out.print("错误:一次取款太多!" + "\n请输入较小的数额:$");

withdrawAmt=kbd.nextDouble();

}

currentBal=withdraw(currentBal, withdrawAmt,users);continue;case 4:

System.out.print("\n正在退出……");

remakeFile(users);

System.exit(0);break;

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值