用java实现简易的银行系统
创建银行系统 实现多用户的开户 存款 取款 查询余额功能
思路
新建两个类:
1.(users)用户类 用于存储用户个人信息
- 用户的卡号
- 姓名
- 密码
- 余额
2.(manageUsersfunction) 功能实现类 用于实现银行系统的功能
- 实现功能类
- 开户
- 存钱
- 取钱
- 查余额
- 登录
要求:
Q:如何确保id的唯一性
用一个id数组存储 用于后续新增id比较
代码:
用户类
用于设置基本的用户信息
/**
* 用户类 用于存储用户的卡号、姓名、密码、余额等属性
*/
class users{
/**
* 创建私有类封装用户的个人信息
*/
private String name;//存储用户姓名
private long id;//存储用户的卡号
private int password;//存储用户的密码
private double balance;//存储用户的余额
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
功能实现类
实现银行的功能
/**
* 实现功能类
* 1.开户
* 2.存钱
* 3.取钱
* 4.查余额
* 5.登录
*/
class manageUsersfunction {
/**
* 创建一个arraylist数组用于存储user全部用户
*/
ArrayList<users> userslist=new ArrayList<>();
/**
* 存储1000个卡号用于判断是否有重复
*/
long[] cardId = new long[1000];
/**
* 主界面
*/
void start() {
System.out.println("===========================================");
System.out.println("欢迎登录银行系统!");
System.out.println("===========================================");
System.out.println();
System.out.println("请选择您需要的功能: (1)开户 (2)登录 (3)退出程序");
while (true){
Scanner scanner = new Scanner(System.in);
if (scanner.hasNextInt()) {//scanner.hasNextInt 判断输入为int类型
int num = scanner.nextInt();
if (num > 0 && num < 4) {
switch (num) {
/**
* 新增用户后 给用户选择登录或再新增 返回主程序界面
*/
case 1:
add();
System.out.println("请选择您需要的功能: (1)开户 (2)登录 (3)退出程序");
continue;
case 2:
signIn();
case 3:
System.out.println("您的银行程序已结束,谢谢使用!");
break;
}
} else {
System.out.println("没有此功能请重新输入!");
continue;
}
}
else {
System.out.println("没有此功能请重新输入!");
scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
}
}
}
/**
* 新增用户
*/
void add(){
double balance=0;
users user=new users();
System.out.println("请输入你的姓名:");
Scanner sc=new Scanner(System.in);
String name=sc.next();
/**
* 依次存入user数据 姓名 id卡号 密码 余额
*/
userslist.add(user);
user.setName(name);
user.setId(noRepeat(user));
user.setPassword(check(user));
user.setBalance(balance);
System.out.println("您已成功开户!");
System.out.println("你的姓名为:"+user.getName());
System.out.println("您的id卡号为:"+user.getId());
System.out.println("您的余额为:"+user.getBalance());
}
/**
* 登录
*/
void signIn(){
A:
while (true) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的账户:");
boolean reInputPwd = true;
if (scanner.hasNextLong()) {
long id = scanner.nextLong();
if (index(id) >= 0) {
/**
* 用户存在,判断输入的密码
*/
B:
while (reInputPwd) {
System.out.println("请输入你的密码:");
int password = scanner.nextInt();
/**
* 判断密码是否输入错误
*/
if (userslist.get(index(id)).getPassword() == password) {
System.out.println("成功登录!请选择您想要的功能");
/**
* 功能方法 1.存款 2.取款 3.查询余额
*/
D:
while (true) {
System.out.println("(1)存款 (2)取款 (3)查询余额 (4)返回主界面 ");
if (scanner.hasNextInt()) {
int num = scanner.nextInt();
if (num > 0 && num < 5) {
switch (num) {
/**
* 新增用户后 给用户选择登录或再新增 返回主程序界面
*/
case 1:
deposit(userslist.get(index(id)));
System.out.println("请选择您想要的功能:");
continue D;
case 2:
withdrawal(userslist.get(index(id)));
System.out.println("请选择您想要的功能:");
continue D;
case 3:
checkBalance(userslist.get(index(id)));
System.out.println("请选择您想要的功能:");
continue D;
case 4:
System.out.println("您的程序已结束");
start();
/**
* 返回主界面
*/
}
break;
} else {
System.out.println("没有此功能请重新输入!");
continue D;
}
} else {
System.out.println("没有此功能请重新输入!");
scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
}
}
} else {
System.out.println("密码输入错误请重新输入");
continue B;
}
}
} else {
System.out.println("该账号不存在!");
C:
while (true) {
System.out.println("(1)重输id (2)新建用户 (3)返回主界面");
if (scanner.hasNextInt()) {
int num = scanner.nextInt();
if (num > 0 && num < 4) {
switch (num) {
case 1:
continue A;
/**
* 新增用户后 给用户选择登录或再新增 返回主程序界面
*/
case 2:
add();
break A;
case 3:
System.out.println("您的程序已结束!");
start();
break A;
}
break;
} else {
System.out.println("没有此功能请重新输入!");
continue C;
}
} else {
System.out.println("没有此功能请重新输入!");
scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
}
}
}
}
else {
System.out.println("账号格式输入错误!");
continue A;
}
}
}
/**
*
*返回id对于的arrays里的下标 用于保证id的唯一
*/
int index (long id){
int index=-1;
for (int i = 0; i <userslist.size() ; i++) {
if(id==userslist.get(i).getId()){
index=i;
break;
}
}
return index;//返回对应id用户的在list中的位置
}
/**
*
*存款
*/
void deposit(users user){
System.out.println("您当前的余额:"+user.getBalance());
System.out.println("请输入您要存款的金额");
Scanner scanner=new Scanner(System.in);
Double deposit;
/**
* while循环判断输入格式是否正确
*
*/
while(true) {
if (scanner.hasNextDouble()) {
deposit = scanner.nextDouble();
if(deposit>0){
break;
}
else {System.out.println("输入的金额必须为正数!");
System.out.println("请重新输入:");
}
} else if (!scanner.hasNextInt()) {
System.out.println("输入格式不正确请再次输入:");
scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
}
}
System.out.println("您已成功存储金额!");
user.setBalance(user.getBalance()+deposit);
System.out.println("您当前的金额为:"+user.getBalance());
}
/**
* 取款
*/
void withdrawal(users user){
System.out.println("您当前的余额:"+user.getBalance());
System.out.println("请输入您要取款的金额");
Scanner scanner=new Scanner(System.in);
Double withdrawal;
/**
* while循环判断输入格式是否正确
*
*/
A:
while (true) {
B:
while (true) {
if (scanner.hasNextDouble()) {
withdrawal = scanner.nextDouble();
if (withdrawal > 0) {
if (withdrawal <= user.getBalance()) {
break;
} else {
System.out.println("您没有足够的钱取出!");
break A;
}
} else {
System.out.println("输入的金额必须为正数!");
System.out.println("请重新输入:");
}
} else if (!scanner.hasNextInt()) {
System.out.println("输入格式不正确请再次输入:");
scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
}
}
System.out.println("您已成功存储金额!");
user.setBalance(user.getBalance() - withdrawal);
System.out.println("您当前的金额为:" + user.getBalance());
break A;
}
}
/**
* 查询余额
*/
void checkBalance(users user){
System.out.println("您当前的余额为:"+user.getBalance());
}
/**
* 获得银行卡的账户
*/
int check(users user) {
int[] pwd = new int[2];//存储两位密码用于比较验证
boolean bool = true;//用于判断是否继续while循环重输入密码
while (bool) {
System.out.println("请输入你的密码(提示:密码为6位整数):");
Scanner scanner = new Scanner(System.in);
/**
* for循环直达输入为int类型进入下一个密码输入
*/
for (int i = 0; i < 2; i++) {
if (scanner.hasNextInt()) {
pwd[i] = scanner.nextInt();
if(pwd[i]>=100000&&pwd[i]<=999999){
if(i==0){
System.out.println("输入成功请再次输入密码:");
}
}
else {
i = i - 1;
System.out.println("请正确输入6位正整数密码");
continue;
}
}
else if(!scanner.hasNextInt()) {
i = i - 1;
System.out.println("输入格式不正确请再次输入:");
scanner.next();//一定要写 不然用户写的数据会保存在缓存中,这样可以清空数据
continue;
}
}
/**
* 条件判断两次密码是否一直是否需要重新输入
*/
if (pwd[0] == pwd[1]) {
bool = false;
System.out.println("您的密码验证成功,您已经成功开户!");
} else {
bool = true;
System.out.println("您两次输入密码不同!请再重新输入");
}
}
return pwd[0];//方法结束返回密码
}
/**
* 用与判断是否有重复的id 若有则反复直到没有重复id
*/
long noRepeat(users user) {
boolean bool = true;
long id = 0;
A:
while (bool) {
long id_ = (long) ((Math.random() * 9 + 1) * 1e10);//19位卡号
/**
* 逐个查看是否有卡号重复
*/
for (int i = 0; i < userslist.size(); i++) {
if (userslist.get(i).getId() == id_) {
bool = true;
continue A;
}
}
bool = false;
id = id_;
}
return id;
}
}
调用方法 运行银行系统
import java.util.ArrayList;
import java.util.Scanner;
public class text {
public static void main(String[] args) {
manageUsersfunction muf=new manageUsersfunction();
muf.start();
}
}
版权声明:本文为weixin_52122032原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。