小飞银行系统(控制台)
银行需求与思路:
用户去银行进行操作
对象:
用户
银行
类
用户类
属性:
姓名
账号
密码
余额
构造函数
get与set方法
toString方法
银行类
属性:
名称
用户数组:存放所有用户,应该使用static修饰
记录用户数量:0
构造函数
带有名称的构造函数
方法
登录
输入账号
输入密码
判断账号密码是否匹配
登录成功:用户对象
登录失败:提示登录失败
注册
输入名称
输入账号
输入密码
确认密码
判断账号是否存在
存在:提示账号已经存在,请重新注册,结束注册
两次密码是否一致
不一致:提示两次密码不一致,请重新注册,结束注册
判断存储用户的数组长度是否足够
不足:扩容
创建用户对象
将用户添加到数组中(数量的位置上)
用户数量+1
存钱
形参:用户对象
输入存款金额
获取原存款金额
使用原存款金额+本次存入的金额 = 新余额
修改用户余额
提示原存款金额,存入金额,当前余额
取钱
形参:用户对象
输入取款金额
获取原存款金额
判断余额是否大于等于取款金额
可以取:
使用原存款金额-本次取出的金额 = 新余额
修改用户余额
提示原存款金额,取款金额,当前余额
不可以取:
提示余额不足
查询余额
形参:用户对象
获取余额
显示当前余额
转账
形参:用户对象
输入转出金额
输入转让账号
获取余额
判断转出金额是否小于等于余额
判断转让账号是否存在
可以转账
余额-转出金额=新余额
通过转让账号获取其对应的用户对象
获取目标账号余额
目标账号余额+转出金额=目标账号余额
修改当前用户余额
修改目标账号余额
显示原存款金额,转出金额,当前余额
账号错误
提示转出账号有误
余额不足
提示余额不足
修改密码
形参:用户对象
输入原密码
输入新密码
确认新密码
判断原密码是否正确
判断两次新密码是否一致
一致
修改用户密码
显示修改成功
不一致
提示两次密码不一致
不相同
提示密码错误
环境类:
main
创建一个银行对象
死循环
显示一级菜单
登录
用户对象 = 银行对象调用登录方法
判断用户对象是否为null
为空
登录失败
不为空
死循环
显示二级菜单
存钱
银行对象调用存钱方法
取钱
银行对象调用取钱方法
转账
银行对象调用转账方法
查询余额
银行对象调用查询余额方法
修改密码
银行对象调用修改密码方法
退出登录
提示欢迎下次光临
结束二级死循环
注册
银行对象调用注册方法
Bank(银行类)
import java.math.BigDecimal;
import java.util.Scanner;
public class Bank {
private String name;
public static User[] users = new User[1];
public static int number = 0;
public Bank(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User login() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入账号:");
String username = scanner.next();
System.out.println("请输入密码:");
String password = scanner.next();
for (User user : users) {
if (user == null) {
System.out.println("账号不存在");
return null;
}
if (username.equals(user.getUsername()) && password.equals(user.getPassword())) {
System.out.println("登陆成功");
System.out.println("欢迎尊贵的"+user.getName()+"用户");
return user;
}
}
return null;
}
public void regist() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入昵称:");
String name = scanner.next();
System.out.println("请输入账号:");
String username = scanner.next();
System.out.println("请输入密码:");
String password01 = scanner.next();
System.out.println("请确认密码:");
String password02 = scanner.next();
if (isExist(username)) {
System.out.println("该账号已存在,请重新注册");
return;
}
if (!password01.equalsIgnoreCase(password02)) {
System.out.println("两次密码不一致,请重新注册");
return;
}
User user = new User(name,username,password01);
if (number>=users.length-1) {
changeBigUsers();
}
users[number] = user;
number++;
System.out.println("注册成功");
}
public void changeBigUsers() {
User[] newUsers = new User[users.length+1];
for (int i = 0; i < users.length; i++) {
newUsers[i] = users[i];
}
users = newUsers;
}
public boolean isExist(String username) {
for (User user : users) {
if (user == null) {
return false;
}
if (username.equals(user.getUsername())) {
return true;
}
}
return false;
}
public void saveMoney(User user) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入存款金额:");
double saveMoney1 = scanner.nextDouble();
BigDecimal saveMoney = new BigDecimal(saveMoney1);
BigDecimal money = user.getMoney();
BigDecimal newMoney = money.add(saveMoney);
user.setMoney(newMoney);
System.out.println("原有余额:"+money.doubleValue()+"元");
System.out.println("存入余额:"+saveMoney.doubleValue()+"元");
System.out.println("当前余额:"+newMoney.doubleValue()+"元");
}
public void getMoney(User user) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入取款金额:");
double getMoney1 = scanner.nextDouble();
BigDecimal getMoney = new BigDecimal(getMoney1);
BigDecimal money = user.getMoney();
int i = money.compareTo(getMoney);
if (i<0) {
System.out.println("你的金额不足");
return;
}else {
BigDecimal newMoney = money.subtract(getMoney);
user.setMoney(newMoney);
System.out.println("原有余额:"+money.doubleValue()+"元");
System.out.println("取款余额:"+getMoney.doubleValue()+"元");
System.out.println("当前余额:"+newMoney.doubleValue()+"元");
}
}
public void showMoney(User user) {
BigDecimal money = user.getMoney();
System.out.println("当前余额:"+money.doubleValue()+"元");
}
public void moveMoney(User user) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入转账金额:");
double moveMoney1 = scanner.nextDouble();
System.out.println("请输入转收款人账号:");
String username = scanner.next();
BigDecimal money = user.getMoney();
BigDecimal moveMoney = new BigDecimal(moveMoney1);
int i = money.compareTo(moveMoney);
if (i<0) {
System.out.println("你的金额不足");
return;
}
for (User u : users) {
if (username.equals(u.getUsername())) {
BigDecimal newMoney = money.subtract(moveMoney);
BigDecimal uMoney = u.getMoney();
BigDecimal uNewMoney = uMoney.add(moveMoney);
user.setMoney(newMoney);
u.setMoney(uNewMoney);
System.out.println("原有余额:"+money.doubleValue()+"元");
System.out.println("转账余额:"+moveMoney.doubleValue()+"元");
System.out.println("当前余额:"+newMoney.doubleValue()+"元");
return;
}else {
System.out.println("转账的账号有误");
return;
}
}
}
public void chagePassWord(User user) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入原密码");
String passWord = scanner.next();
System.out.println("请输入新密码");
String passWord01 = scanner.next();
System.out.println("请再次输入新密码");
String passWord02 = scanner.next();
if(!passWord.equals(user.getPassword())) {
System.out.println("原密码错误");
return;
}
if (!passWord01.equals(passWord02)) {
System.out.println("两次密码不一致");
return;
}
user.setPassword(passWord01);
System.out.println("修改成功");
}
}
User(银行类)
import java.math.BigDecimal;
public class User {
private String name;
private String username;
private String password;
private BigDecimal money;
public User(String name, String username, String password) {
super();
this.name = name;
this.username = username;
this.password = password;
this.money = new BigDecimal(0+"");
}
public User() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public BigDecimal getMoney() {
return money;
}
public void setMoney(BigDecimal money) {
this.money = money;
}
@Override
public String toString() {
return "User [name=" + name + ", username=" + username + ", password=" + password + ", money=" + money + "]";
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (money == null) {
if (other.money != null)
return false;
} else if (!money.equals(other.money))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
if (username == null) {
if (other.username != null)
return false;
} else if (!username.equals(other.username))
return false;
return true;
}
}
CaiQuan(猜拳类)
import java.util.Random;
import java.util.Scanner;
public class CaiQuan {
public int computerChuQuan() {
Random random = new Random();
int q = random.nextInt(3)+1;
if (q == 1) {
System.out.println("电脑出的是石头");
}else if (q == 2) {
System.out.println("电脑出的是剪刀");
}else if (q == 3) {
System.out.println("电脑出的是布");
}
return q;
}
public int renChuQuan() {
Scanner scan = new Scanner(System.in);
System.out.println("请出拳:\n1:石头\n2:剪子\n3:布\n4:退出选择");
int tag = scan.nextInt();
switch (tag) {
case 1:
System.out.println("您选择的是石头");
break;
case 2:
System.out.println("您选择的是剪刀");
break;
case 3:
System.out.println("您选择的是布");
break;
case 4:
break;
default:
System.out.println("输入有误,请重新选择");
renChuQuan();
break;
}
return tag;
}
public void comparebleCaiQuan() {
int r = renChuQuan();
int j = computerChuQuan();
if(r == j) {
System.out.println("--平局--");
}else if((r == 1 && j == 2) ||
(r == 2 && j == 3) ||
(r == 3 && j == 1)) {
System.out.println("--哇哦-你赢了--");
}else {
System.out.println("--可惜,你输了,下次争取--");
}
}
}
Main(主函数)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
oneMenu();
}
public static void oneMenu() {
Bank bank = new Bank("小飞银行");
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.println("欢迎进入"+bank.getName());
System.out.println("请选择:\n1:登陆\n2:注册");
String tag = scanner.next();
if (tag.equals("1")) {
User user = bank.login();
if (user != null) {
twoMenu(bank,user);
}else {
System.out.println("登陆失败,请注册");
}
}else if (tag.equals("2")) {
bank.regist();
}else {
System.out.println("输入有误,请重新输入");
}
}
}
public static void twoMenu(Bank bank, User user) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.println("请选择:\n1:取款\n2:存款\n3:转账\n4:查询余额\n5:修改密码\n6:其他功能\n7:退出登陆");
String tag = scanner.next();
switch (tag) {
case "1":
bank.getMoney(user);
break;
case "2":
bank.saveMoney(user);
break;
case "3":
bank.moveMoney(user);
break;
case "4":
bank.showMoney(user);
break;
case "5":
bank.chagePassWord(user);
break;
case "6":
threeMenu();
break;
case "7":
return;
default:
System.out.println("输入有误,请重新输入");
break;
}
}
}
public static void threeMenu() {
Scanner scanner = new Scanner(System.in);
CaiQuan c = new CaiQuan();
while(true) {
System.out.println("请选择:\n1:人机猜拳(石头剪刀布)\n2:其他功能\n3:退出登陆");
String tag = scanner.next();
switch (tag) {
case "1":
c.comparebleCaiQuan();
break;
case "2":
System.out.println("研发中...");
System.out.println("敬请期待!");
break;
case "3":
return;
default:
System.out.println("输入有误,请重新输入");
break;
}
}
}
}