Java日志(四)


今天的内容是用Java模拟实现ATM取款系统,主要是对类和方法的使用。

前言

具体需要实现的功能:

用Java模拟简单的银行取款系统的相关功能,账户的登录与创建,实现存取款、余额查询、密码修改等相关功能


一、创建登录显示页面

登录页面需要有命令的索引便于用户操作和代码的实现,如图:

import java.util.Scanner;
public class ATM{
	public static void main(String[]args){
		System.out.println("***欢迎使用银行取款系统***");
		System.out.println();
		System.out.println("1.登录\t\t2.注册\t\t3.退出");
		System.out.println();
		Scanner in=new Scanner(System.in);
		while(true){
		int act=in.nextInt();
		if(act==1){
			//登录
		}else if(act==2){
			//注册
		}else if(act==3){
			System.out.println("欢迎您的使用,See You!!!");
			break;
		}else{
			System.out.println("该指令无效,请重新输入!");
		}
		}
	}
}


注意:这里相关功能均未实现,只是初步建立起一个大概的模版,提供一个程序运行的入口,然后分区域实现其功能。

二、创建用户信息

首先,用户需要选择登录or注册账号,Java刚入门的同学(比如我@-@)这里可以采用自定义类数组(其缺点是长度一旦确定便不能更改,管理起来比较麻烦,也可以采用Arraylist动态数组,我们这里只讲普通数组,可以类比一下C语言中的结构体数组)来储存用户的信息。

创建User类用来存储用户的各类信息

具体代码见下:

class User{
		 private String name;//用private修饰,进行访问控制,保护用户隐私
		 private String ID;
		 private String password;//密码
		 private String cell_phone_number;//电话号码
		 private int money;
		 public void print(){//查询个人资料
		 System.out.println("name:"+name);
		 System.out.println("ID:"+ID);
		 System.out.println("money:"+money);
		 System.out.println("cell_phone_number:"+cell_phone_number);
		 }
		 //构造方法,建立和修改用户信息
		 //建立用户信息
		 public User(String name,String ID,String password,String cell_phone_number,int money){
		 this.name=name;
		 this.ID=ID;
		 this.password=password;
		 this.cell_phone_number=cell_phone_number;
		 this.money=money;
		 }
		 //修改用户信息,修改密码,手机号,存取款
		 public void change_password(String password){
			this.password=password;
		 }
		 public void change_cell_phone_number(String cell_phone_number){
			this.cell_phone_number=cell_phone_number;
		 }
		 public void saving_money(int money){
			if(money>=0){
			this.money+=money;
			System.out.println("操作成功!您的余额为"+this.money);
			}else{
			System.out.println("存款失败!!!请重试");
			}
		 }
		 public void drawing_money(int money){
			if(money<=this.money){
			this.money-=money;
			System.out.println("操作成功!您的余额为"+this.money);
			}else{
			System.out.println("抱歉!您的余额不足");
			}
		 }
		 //查看用户信息
		 public String getcell_phone_number(){
			return cell_phone_number;
		 }
		 public String getpassword(){
			return password;
		 }
		 public String getID(){
			return ID;
		 }
		 public int getmoney(){
			return money;
		 }
	}

二、创建相关指令的处理

1.创建Rigister方法,完成用户的注册

当user为null,即未被使用时,调用方法在这个未被使用的类数组上储存用户数据。

public static void Rigister(Scanner in,User[] user){
		System.out.println("感谢您的信任,下面将注册您的账户");
		for(int i=0;i<user.length;i++){
			if(user[i]==null){
			System.out.println("请输入您的姓名:");
			String name=in.next();
			System.out.println("请输入您的ID:");
			String ID=in.next();
			System.out.println("请设置您的账号密码:");
			String password=in.next();
			System.out.println("请输入您的电话号码:");
			String cell_phone_number=in.next();
			System.out.println("请输入您的存款金额:");
			int money=in.nextInt();
			if(money<0){
				System.out.println("存款失败,系统默认为0");
				money=0;
			}
			User user1=new User(name,ID,password,cell_phone_number,money);
			user[i]=user1;
			System.out.println("恭喜您!您已经成功完成注册^-^");
			break;
			}
		}
	}

2.创建Using方法处理相关指令

这其中主要是对User这一类中的方法进行,相关调用和处理。

public static void Using(Scanner in,User[] user){
		System.out.println("欢迎您的登陆,请输入您的账号:");
		String ID1=in.next();
		int cnt=2,flag=1;
		for(int i=0;i<user.length;i++){
			if(user[i]==null){
				break;
			}
			if(ID1.equals(user[i].getID())){
			 flag=0;
			 User user0=user[i];
			 System.out.println("请输入您的账号密码:");
			 String password1=in.next();
			 while(true){
			 if(password1.equals(user0.getpassword())){
				int act2;
				while(true){
				System.out.println("登陆成功,请选择您要办理的业务:");
				System.out.println("1.查询个人资料\t\t2.修改密码");
				System.out.println("3.修改电话号码\t\t4.存款");
				System.out.println("5.取款\t\t6.退出登陆");
				act2=in.nextInt();
				if(act2==1){
				user0.print();
				}else if(act2==2){
				System.out.println("为确保您的账户安全,请再次输入您的密码:");
				String password2=in.next();
				if(password2.equals(user0.getpassword())){
					System.out.println("请输入您的新密码:");
					String password3=in.next();
					user0.change_password(password3);
					System.out.println("操作成功!!!");
				}else{
					System.out.println("密码错误请重试");
				}
				}else if(act2==3){
				System.out.println("请输入您的新手机号码:");
				String phone=in.next();
				user0.change_cell_phone_number(phone);
				System.out.println("操作成功!!!");
				System.out.println("您的新手机号码为"+user0.getcell_phone_number());
				}else if(act2==4){
				System.out.println("请输入您要存款的金额:");
				int mon=in.nextInt();
				user0.saving_money(mon);
				}else if(act2==5){
				System.out.println("请输入您要取款的金额:");
				int mon=in.nextInt();
				user0.drawing_money(mon);
				}else if(act2==6){
				 break;
				}else{
				System.out.println("无此指令,请重试!!!");
				}
				}
				break;
			 }else{
				System.out.println("抱歉,密码错误,您还有"+cnt+"次机会");
				cnt--;
				password1=in.next();//重新输入密码
			 }
				if(cnt==0){
					System.out.println("抱歉,密码多次错误,请重新再试");
					break;
				}
			 }
			}
			if(flag==0){
				break;
			}
		}
		if(flag==1){
		System.out.println("抱歉!不存在此账号");
		}
	}

编写过程中有几点需要注意:

1.区分return,break,continue,System.exit(0),System.exit(1)

1.return:跳出当前方法,回到调用此方法处;
2.break:结束循环体类的循环过程;
3.comntinue:进行下一次循环,结束此次循环;
4.System.exit(0):正常退出程序;
5.System.exit(1):非正常退出程序
使用过程中注意区分,不然程序可能会运行错误或编译错误。

2.字符串的比较(判断用户的账号的密码是否正确)

1.一般用String.equals()比较字符串是否相同;
如果字符串 arr,brr相同,arr.equal(b)的结果为true;
2.“==”是比较是否引用的同一个对象,比较的是地址;
3.CompareTo是比较对应字符的大小(即ASCII码顺序)如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值。如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度。
(想要更具体的可以看字符串的使用)

3.this的使用(储存修改用户的数据)

this代表一个引用,指向当前调用该方法的当前对象,列如:
在User类中,需要改变用户的密码,但有两个password,如果不用this指明,用户的password将不会改变,password=password可视为12345=12345;

private String password;//密码为123
public void change_password(String password){//改变后为12345
			this.password=password;
		 }

完整代码见下:

import java.util.Scanner;
public class ATM{
	public static void main(String[]args){
		System.out.println("***欢迎使用银行取款系统***");
		System.out.println();
		System.out.println("1.登录\t\t2.注册\t\t3.退出");
		Scanner in=new Scanner(System.in);
		User[] user=new User[1000];//采用数组的形式存放个人信息
		while(true){
		int act=in.nextInt();
		if(act==1){
			//登录
			Using(in,user);
		}else if(act==2){
			//注册
			Rigister(in,user);
		}else if(act==3){
			System.out.println("欢迎您的使用,See You!!!");
			break;
		}else{
			System.out.println("该指令无效,请重新输入!");
		}
		System.out.println("1.登录\t\t2.注册\t\t3.退出");
		}
	}
	public static void Rigister(Scanner in,User[] user){
		System.out.println("感谢您的信任,下面将注册您的账户");
		for(int i=0;i<user.length;i++){
			if(user[i]==null){
			System.out.println("请输入您的姓名:");
			String name=in.next();
			System.out.println("请输入您的ID:");
			String ID=in.next();
			System.out.println("请设置您的账号密码:");
			String password=in.next();
			System.out.println("请输入您的电话号码:");
			String cell_phone_number=in.next();
			System.out.println("请输入您的存款金额:");
			int money=in.nextInt();
			if(money<0){
				System.out.println("存款失败,系统默认为0");
				money=0;
			}
			User user1=new User(name,ID,password,cell_phone_number,money);
			user[i]=user1;
			System.out.println("恭喜您!您已经成功完成注册^-^");
			break;
			}
		}
	}
	public static void Using(Scanner in,User[] user){
		System.out.println("欢迎您的登陆,请输入您的账号:");
		String ID1=in.next();
		int cnt=2,flag=1;
		for(int i=0;i<user.length;i++){
			if(user[i]==null){
				break;
			}
			if(ID1.equals(user[i].getID())){
			 flag=0;
			 User user0=user[i];
			 System.out.println("请输入您的账号密码:");
			 String password1=in.next();
			 while(true){
			 if(password1.equals(user0.getpassword())){
				int act2;
				while(true){
				System.out.println("登陆成功,请选择您要办理的业务:");
				System.out.println("1.查询个人资料\t\t2.修改密码");
				System.out.println("3.修改电话号码\t\t4.存款");
				System.out.println("5.取款\t\t6.退出登陆");
				act2=in.nextInt();
				if(act2==1){
				user0.print();
				}else if(act2==2){
				System.out.println("为确保您的账户安全,请再次输入您的密码:");
				String password2=in.next();
				if(password2.equals(user0.getpassword())){
					System.out.println("请输入您的新密码:");
					String password3=in.next();
					user0.change_password(password3);
					System.out.println("操作成功!!!");
				}else{
					System.out.println("密码错误请重试");
				}
				}else if(act2==3){
				System.out.println("请输入您的新手机号码:");
				String phone=in.next();
				user0.change_cell_phone_number(phone);
				System.out.println("操作成功!!!");
				System.out.println("您的新手机号码为"+user0.getcell_phone_number());
				}else if(act2==4){
				System.out.println("请输入您要存款的金额:");
				int mon=in.nextInt();
				user0.saving_money(mon);
				}else if(act2==5){
				System.out.println("请输入您要取款的金额:");
				int mon=in.nextInt();
				user0.drawing_money(mon);
				}else if(act2==6){
				 break;
				}else{
				System.out.println("无此指令,请重试!!!");
				}
				}
				break;
			 }else{
				System.out.println("抱歉,密码错误,您还有"+cnt+"次机会");
				cnt--;
				password1=in.next();//重新输入密码
			 }
				if(cnt==0){
					System.out.println("抱歉,密码多次错误,请重新再试");
					break;
				}
			 }
			}
			if(flag==0){
				break;
			}
		}
		if(flag==1){
		System.out.println("抱歉!不存在此账号");
		}
	}
}
class User{
		 private String name;//用private修饰,进行访问控制,保护用户隐私
		 private String ID;
		 private String password;//密码
		 private String cell_phone_number;//电话号码
		 private int money;
		 public void print(){//查询个人资料
		 System.out.println("name:"+name);
		 System.out.println("ID:"+ID);
		 System.out.println("money:"+money);
		 System.out.println("cell_phone_number:"+cell_phone_number);
		 }
		 //构造方法,建立和修改用户信息
		 //建立
		 public User(String name,String ID,String password,String cell_phone_number,int money){
		 this.name=name;
		 this.ID=ID;
		 this.password=password;
		 this.cell_phone_number=cell_phone_number;
		 this.money=money;
		 }
		 //修改用户信息,修改密码,手机号,存取款
		 public void change_password(String password){
			this.password=password;
		 }
		 public void change_cell_phone_number(String cell_phone_number){
			this.cell_phone_number=cell_phone_number;
		 }
		 public void saving_money(int money){
			if(money>=0){
			this.money+=money;
			System.out.println("操作成功!您的余额为"+this.money);
			}else{
			System.out.println("存款失败!!!请重试");
			}
		 }
		 public void drawing_money(int money){
			if(money<=this.money){
			this.money-=money;
			System.out.println("操作成功!您的余额为"+this.money);
			}else{
			System.out.println("抱歉!您的余额不足");
			}
		 }
		 //查看用户信息
		 public String getcell_phone_number(){
			return cell_phone_number;
		 }
		 public String getpassword(){
			return password;
		 }
		 public String getID(){
			return ID;
		 }
		 public int getmoney(){
			return money;
		 }
	}

运行结果如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

以上就是今天要讲的内容,本文仅仅以代码的形式简单介绍了类与对象的使用,及一点字符串的处理,上述为较简单模拟银行取款系统,是为了熟练一些方法和语法的使用,还有很大的改正空间,此code仅为参考。
1.区分return,break,continue,System.exit(0),System.exit(1);
2.字符串的使用与比较;
3.关键字this的使用;
4.类数组的创建即使用;
5.利用不同类型的方法实现各类间数据的建立,传递与修改;

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值