java实现ATM机系统(2.0版)

网友投稿 217 2023-01-25

java实现ATM机系统(2.0版)

java实现银行ATM自助取款机,实现功能:用户登录、余额查询、存钱、取钱、转账、修改密码、退出系统。

用java实现一个ATM机系统(2.0版)

设计思路

设计五个类包括测试类:

1、ATM类也是主要的类,负责实现用户一系列的操作;

2、Data类,作为ATM类的一个属性,主要实现从java文件user中获取用户全部信息,并返回要找的用户,再将修改完之后的用户信息写入文件中。

这个类是ATM机与文件之间的桥梁;

3、Bank类,有ATM机(has-a),欢迎用户来使用ATM机;

4、User类,使用ATM机(use-a);

5、Demo类,测试类,创建一个环境,让类产生关系。

源码

需要注意java文件user的位置,Data类要进行操作它。

package newBank;

import java.util.Scanner;

//ATM类

public class ATM {

//有一个类操作数据的类

private Data data = new Data();

//ATM机里的数据

private String userName;//用户账号且唯一

private String userPassword;//用户密码

private double userMoney;//用户账户里的钱

private double money;//变量,存,取,转账的钱

private String user;//使用该台ATM机的用户全部信息

//ATM界面

public void show(){

System.out.println("欢迎使用ATM机");

//使用登录方法,输入账号和密码

int number = login();

//如果登录成功

if(number == 4)

working();//ATM机办理业务

}

//登录方法

private int login(){

int number = 3;//用户输入次数

while(number > 0) {

Scanner input = new Scanner(System.in);

System.out.println("请输入账号:");

//输入账号

String inUserName = input.nextLine();

//输入密码

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

String inUserPassword = input.nextLine();

String x = data.bacTwGXMkUser(inUserName);

//判断账户是否存在

if(!x.equals("null")){

user = x;//获取用户所有信息

String[] str = user.split("\\*");//将用户信息分割

userName = str[0];//用户名

userPassword = str[1];//用户密码

userMoney = Double.parseDouble(str[2]);//用户余额

//密码正确

if(userPassword.equals(inUserPassword)){

System.out.println("登录成功");

number = 4;//次数变为4

break;

}

}

number --;//次数减一

System.out.println("账号或密码输入错误。。。");

System.out.println("您还有" + number + "次机会");

}

return number;//是否登录成功

}

//功能界面

private void functionShow(){

System.out.println("**********************");

System.out.println("\t欢迎使用ATM");

System.out.println("1,账户余额查询\n2,存钱\n3,取钱\n4,转账\n5,修改用户密码\n6,退出系统\n");

System.out.println("**********************");

}

//用户要进行的操作

private void working(){

String index;//业务序号

do{

functionShow();//调用功能界面

System.out.println("请输入要办理的业务序号:");

Scanner input = new Scanner(System.in);

index = input.nextLine();

switch(index){

case "1":

look();

break;

case "2":

saveMoney();

break;

case "3":

getMoney();

break;

case "4":

giveMoney();

break;

case "5":

changePassword();

break;

case "6":

System.out.println("欢迎下次光临!");

user = changeUser(userName,userPassword,userMoney);

data.saveData(user,true);//用户退出后保存用户信息

break;

default:

System.out.println("您输入有误,请重新输入。。。。");

}

}while(!index.equals("6"));

}

//是否继续某项操作

private boolean isContinue(){

System.out.println("继续办理该项业务:请输入Y/y");

System.out.println("返回上一级:请输入N/n");

Scanner input = new Scanner(System.in);

String str = input.nextLine();

if(str.equalsIgnoreCase("Y"))

return true;

else

return false;

}

//存钱,取钱,转账共用

private void howMuch(String str){

System.out.println("欢迎办理"+ str +"业务。。。。。。");

System.out.println("请输入金额(只能是整数且是100的倍数,最多为10000):");

Scanner input = new Scanner(System.in);

Double money = input.nextDouble();

if(money%10 != 0) {

System.out.println("您输入有误!");

this.money = 0;

}

else

this.money = money;

}

//查询实现

private void look(){

System.out.println("用户余额为:" + userMoney);

try{

Thread.sleep(2000);

}catch(Exception e){

e.printStackTrace();

}

}

//存钱实现

private void saveMoney(){

howMuch("存钱");

if(money != 0) {//如果存的钱正确

userMoney = userMoney + money;//存上

System.out.println("已存入");

look();//显示余额

}

if(isContinue())

saveMoney();

}

//判断余额是否充足

private boolean isEnough(){

if(money <= userMoney){

userMoney = userMoney - money;

return true;

}

else{

System.out.println("您的余额不足!");

return false;

}

}

//取钱实现

private void getMoney(){TwGXM

howMuch("取钱");

//如果取的钱正确且如果转账账户余额够

if(money != 0 && isEnough()){

look();

System.out.println("请收好您的钱");

}

if(isContinue())

getMoney();

}

//转账实现

private void giveMoney(){

//只判断用户账户是否存在

Scanner input = new Scanner(System.in);

System.out.println("请输入要转账账号:");

//输入账号

String inUserName = input.nextLine();

String str = data.backUser(inUserName);

//如果该账户存在

if(!str.equals("null")) {

String antherUser = str;//获取被转账账户所有信息

String[] str1 = antherUser.split("\\*");//分割

Double x = Double.parseDouble(str1[2]);//获取被转账账户余额

howMuch("转账");

//如果转的钱正确且如果转账账户余额够

if (money != 0 && isEnough()) {

x = x + money;

antherUser = changeUser(str1[0], str1[1], x);//改变被转账账户信息

data.saveData(antherUser,false);//将用户信息传给Data类保存被转账账户信息

System.out.println("转账成功");

look();

}

}

else

System.out.println("被转账账户不存在。。。");

if(isContinue())

giveMoney();

}

//修改密码实现

private void changePassword(){

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

Scanner input = new Scanner(System.in);

userPassword = input.nextLine();

System.out.println("密码修改成功!");

}

//办完业务后修改用户信息

private String changeUser(String n,String w,Double d){

String str = n + "*" + w + "*" + d;

return str;

}

}

package newBank;

import java.io.*;

import java.util.HashMap;

import java.util.Map;

import java.util.Set;

//数据类是文件和ATM机之间操作用户信息的桥梁

public class Data {

//Map储存数据库里所有用户的全部信息

Map userData = new HashMap();

//返回用户的信息

private String user;

//创建数据类加载所有用户信息

public Data(){

getUsers();

}

private void getUsers(){

String str;

String[] string;

File file = new File("src\\newBank\\user");

FileReader fileReader = null;

BufferedReader bufferedReader = null;

try{

fileReader = new FileReader(file);

bufferedReader = new BufferedReader(fileReader);

while((str = bufferedReader.readLine())!=null){

string = str.split("\\*",2);

userData.put(string[0],string[1]);

}

}catch(Exception e){

e.printStackTrace();

if((fileReader!=null)&&(bufferedReader!=null)){

try {

bufferedReader.close();

fileReader.close();

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

//告诉用户名,如果找到返回该用户所有信息,没找到返回null

public String backUser(String userName){

String str = "null";

if(userData.containsKey(userName))

str = userName + "*" + userData.get(userName);

user = str;

return user;

}

//修改用户数据并储存在userData图里

public void saveData(String user,boolean aBoolean){

String[] string = user.split("\\*",2);

userData.remove(string[0]);

userData.put(string[0],string[1]);

if(aBoolean)//判断用户是否操作结束

changeUser();

}

//用户操作完,将userData里所有的用户再写入文件里

private void changeUser(){

String str,string="";

Set keys = userData.keySet();

for(String key : keys){

str = key + "*" + userData.get(key);

string = string + str + "\n";

}

File file = new File("src\\newBank\\user");

FileWriter out = null;

try {

out = new FileWriter(file);

out.write(string);

out.flush();

} catch (IOException e) {

e.printStackTrace();

}finally{

if(out != null){

try {

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

package newBank;

//银行类

public class Bank {

//银行有ATM机供给用户使用

private ATM atm = new ATM();

//欢迎用户使用

public void welcome(User user){

System.out.println("欢迎用户来我行使用ATM机");

user.useATM(atm);

}

}

package newBank;

//用户类

public class User {

//用户使用ATM机办理业务

public void useATM(ATM atm){

atm.show();

}

}

//java文件当数据库

李四*123*1000.0

张三*456*10000.0

王五*789*100000.0

package newBank;

//测试类

public class Demo {

public static void main(String[] args){

//创建一个银行

Bank bank = new Bank();

//创建一个用户

User user = new User();

//银行欢迎用户

bank.welcome(user);

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:券商股票接口api(券商数据接口)
下一篇:JAVA基础之注解与反射的使用方法和场景
相关文章

 发表评论

暂时没有评论,来抢沙发吧~