花了两天时间的,不知道快还是慢。。。
2个功能:用户类和银行管理类
1.用户类:
①注册功能
1)重复注册功能
2)用户名能不重复
3)自动添加一个4位的卡号
②登录功能
1)重复登录功能
2)用户名密码的判定
3)当存储用户名数组无数据时的判定
③存钱取钱功能
1)存款取款数的判定
④查看登录用户余额
⑤查看登录用户信息
2.管理类:
①打印当前已注册用户的信息
②允许进行新的用户信息的录入
③打印指定余额区间的所有用户信息
④打印指定用户的用户信息
⑤打印指定性别的所有用户信息
⑥查询指定卡号的用户余额
更新:把user类里的那两个方法想办法移到管理类里去了,解决了我上周的心头顽疾。
* 实现一个简单的银行用户系统,要求可以查看该银行下所有用户的信息,用户可以存钱,取钱,查询余额等等功能。
新建一个User类,具有的属性有卡号(字符串),用户名,性别,年龄,存款金额,具有存款,和取款的方法。
新建一个BankMngr 类,BankMngr中可以存储若干个User,要求具有增加User,及查看所有User的方法
BankMngr类中的方法大致如下:
//增加用户
Public void addUser(User user);
//打印所有用户信息
Public void showInfo();
//查询余额大于money的所有用户信息
Public User[] getUser(int money);
//查询用户名等于name的用户信息
Public User getUser(String name);
//查询所有性别等于sex的用户信息
Public User[] getUserBySex(String sex);
//根据卡号card查询用户的余额
Public double getMoney(String card);
在main方法中实现循环增加若干个用户到BankMngr对象中,然后打印所有用户信息,并且测试BankMngr中所有方法。
*/
package day20171229;
import java.util.Random;
import java.util.Scanner;
/**
* 测试类
* @author Administrator
*
*/
public class Bank_test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
BankMngr bo = new BankMngr();
// User admin = new User();
System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");// 主菜单
System.out.println("\t\t\t欢迎进入中国银行系统!");
do {
System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
System.out.println("\t\t\t\t 1.用户通道");
System.out.println("\t\t\t\t 2.管理通道");
System.out.println("\t\t\t\t 3.退出");
System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
System.out.print("请选择您要进行的操作:");
int identity = input.nextInt(); // 选择身份
switch (identity) {
// 用户系统
case 1:
System.out.println("成功进入!");
do {
System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");// 用户界面
System.out.println("\t\t\t\t 1.注册");
System.out.println("\t\t\t\t 2.登录");
System.out.println("\t\t\t\t 3.退出");
System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
System.out.print("请选择您要进行的操作:");
int handle1 = input.nextInt();
if (handle1 == 1) {
User q = new User();
String id = String.valueOf(new Random().nextInt(9000) + 1000);
q.setId(bo.id_testing(id));
System.out.print("请输入注册的用户名:");
String username = input.next();
q.setUsername(bo.username_testing(username));
System.out.print("请输入注册的密码:");
q.setPassword(input.next());
System.out.print("请输入性别(m/f):");
q.setSex(input.next());
System.out.print("请输入年龄:");
q.setAge(input.nextInt());
q.setBalance(0);
bo.addUsers(q);
System.out.println("注册成功!!");
} else if (handle1 == 2) {
if ((bo.array_users()).length == 0) {
System.out.println("系统出现未知错误,系统将自动返回上一层。");
break;
}
System.out.print("请输入用户名:");
String name = input.next();
System.out.print("请输入密码:");
String password = input.next();
User admins = bo.FindUser(name, password);
if (admins != null) {
System.out.println("登陆成功。");
do {
System.out.println(
"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
System.out.println("1.存钱");
System.out.println("2.取钱");
System.out.println("3.查看余额");
System.out.println("4.查看用户信息");
System.out.println("5.退出");
System.out.print("请选择您要进行的操作:");
int userchoice = input.nextInt();
if (userchoice == 1) {
System.out.print("请输入您要存款的金额:");
double money1 = input.nextDouble();
if (bo.addBalance(money1, admins) == false) {
System.out.println("您输入的金额有误");
} else {
System.out.println("存入成功。");
System.out.println("账户余额:" + admins.getBalance());
}
continue;
} else if (userchoice == 2) {
System.out.print("请输入您要取款的金额:");
double money2 = input.nextDouble();
if (bo.subBalance(money2, admins) == false) {
System.out.println("您输入的金额有误。");
} else {
System.out.println("取款成功。");
System.out.println("账户余额:" + admins.getBalance());
}
continue;
} else if (userchoice == 3) {
double check = admins.getBalance();
System.out.println("您的余额为:" + check);
} else if (userchoice == 4) {
System.out.println("卡号\t用户名\t性别(m/f)\t年龄(岁)\t余额(元)");
bo.UserInfo(admins);
continue;
} else if (userchoice == 5) {
break;
} else {
System.out.println("您输入的账户或密码有误。");
continue;
}
} while (true);
break;
} else {
System.out.println("您输入帐号或密码有误。");
}
} else if (handle1 == 3) {
break;
} else {
System.out.println("您的输入有误。");
}
} while (true);
continue;
// 管理系统
case 2:
System.out.println("成功进入!");
// BankMngr bo = new BankMngr();
do {
System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
System.out.println("\t\t\t\t 1.添加用户信息");
System.out.println("\t\t\t\t 2.查询");
System.out.println("\t\t\t\t 3.退出");
System.out.print("请选择您要进行的操作:");
int handle2 = input.nextInt();
if (handle2 == 1) {
do {
User s = new User();
System.out.print("请输入用户名:");
s.setUsername(input.next()); // 用户名
System.out.print("请输入4位卡号:");
s.setId(input.next());// 卡号
System.out.print("请输入密码:");
s.setPassword(input.next());// 密码
System.out.print("请输入性别(m/f):");
s.setSex(input.next()); // 性别
System.out.print("请输入年龄:");
s.setAge(input.nextInt()); // 年龄
System.out.print("请输入余额:");
s.setBalance(input.nextDouble()); // 余额
bo.addUsers(s); // 调用增加用户的方法
System.out.print("继续吗?(y/n)");
String choice = input.next();
if (choice.equals("n")) {
break;
}
} while (true);
} else if (handle2 == 2) {
System.out.println("成功进入!");
System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
System.out.println("\t\t\t 1.打印所有用户列表");
System.out.println("\t\t\t 2.打印指定余额区间的所有用户信息");
System.out.println("\t\t\t 3.打印指定用户的用户信息");
System.out.println("\t\t\t 4.打印指定性别的所有用户信息");
System.out.println("\t\t\t 5.查询指定卡号的用户余额");
System.out.println("\t\t\t 6.退出");
System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
System.out.print("请选择您要进行的操作:");
int handle2_1 = input.nextInt();
switch (handle2_1) {
case 1:
// 打印所有用户列表
System.out.println("卡号\t用户名\t性别(m/f)\t年龄(岁)\t余额(元)");
bo.showInfo();
break;
case 2:
// 查询余额大于money的所有用户信息
System.out.print("请输入您要查找的范围:");
double balance_test = input.nextDouble();
User[] arr2 = bo.getUser(balance_test);
if (arr2.length == 0) {
System.out.println("未找到余额大于或等于" + balance_test + "的用户");
} else {
System.out.println("卡号\t用户名\t性别(m/f)\t年龄(岁)\t余额(元)");
for (int i = 0; i < arr2.length; i++) {
System.out.println(
arr2[i].getId() + "\t" + arr2[i].getUsername() + "\t\t" + arr2[i].getSex()
+ "\t\t" + arr2[i].getAge() + "\t\t\t" + arr2[i].getBalance());
}
}
break;
case 3:
// 查询用户名等于name的用户信息
System.out.print("请输入您要查找的指定用户:");
String name_test = input.next();
User[] arr3 = bo.getUser(name_test);
if (arr3.length == 0) {
System.out.println("未找到此用户!");
} else {
System.out.println("卡号\t用户名\t性别(m/f)\t年龄(岁)\t余额(元)");
for (int i = 0; i < arr3.length; i++) {
System.out.println(
arr3[i].getId() + "\t" + arr3[i].getUsername() + "\t\t" + arr3[i].getSex()
+ "\t\t" + arr3[i].getAge() + "\t\t\t" + arr3[i].getBalance());
}
}
break;
case 4:
// 查询所有性别等于sex的用户信息
System.out.print("请输入您要打印的性别(m/f):");
String sex_test = input.next();
User[] arr4 = bo.getUserBySex(sex_test);
if (arr4.length == 0) {
System.out.println("未找到您输入的性别。");
} else {
bo.showTheSameSex();
}
break;
case 5:
// 根据卡号来查询用户信息
System.out.print("请输入您要查询的卡号:");
String id_test = input.next();
double id_balance = bo.getMoney(id_test);
if (id_balance == -1) {
System.out.println("未找到您输入的卡号。");
} else {
System.out.println("卡号:" + id_test + "的余额为:" + id_balance + "元");
}
break;
case 6:
// System.exit(0);
break;
default:
System.out.println("您的输入有误。");
break;
}
} else if (handle2 == 3) {
break;
} else {
System.out.println("您的输入有误。");
}
} while (true);
break;
case 3:
System.out.println("即将退出,感谢使用!");
System.exit(0);
break;
default:
System.out.println("您的输入有误。");
break;
}
} while (true);
}
}
/**
*
* 银行管理类
* @author Administrator
*
*
*/
package day20171229;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class BankMngr {
/**
* 用户数据
*
* @author Administrator
*
*/
// 创建用户数组
Scanner input = new Scanner(System.in);
User[] users = new User[0];
int index2;
public void addUsers(User user) {
if (index2 >= 0) {
users = Arrays.copyOf(users, index2 + 1);
users[index2++] = user;
}
}
// 卡号出现随机数
public String id_testing(String id) {
for (int i = 0; i < index2; i++) {
for (int x = 0; x < index2; x++) {
if (id.equals(users[x].getId())) {
id = String.valueOf(new Random().nextInt(9000) + 1000);
i--;
break;
}
}
}
return id;
}
// 用户名验证不重名
public String username_testing(String username) {
for (int i = 0; i < index2; i++) {
for (int x = 0; x < index2; x++) {
if (username.equals(users[x].getUsername())) {
System.out.print("用户名已被使用,请继续输入:");
username = input.next();
i--;
break;
}
}
}
return username;
}
// 验证用户名和密码
public User FindUser(String a, String b) {
for (int i = 0; i < index2; i++) {
if (a.equals(users[i].getUsername()) && b.equals(users[i].getPassword())) {
User test1 = new User();
test1 = users[i];
return test1;
}
}
return null;
}
// 打印用户数据
public void UserInfo(User user) {
System.out.println(user.getId() + "\t" + user.getUsername() + "\t\t" + user.getSex() + "\t\t" + user.getAge()
+ "\t\t\t" + user.getBalance());
}
// 返回user数组
public User[] array_users() {
return users;
}
/**
* 管理类
*
* @author Administrator
*
*/
// 打印所有用户信息
public void showInfo() {
for (int i = 0; i < index2; i++) {
System.out.println(users[i].getId() + "\t" + users[i].getUsername() + "\t\t" + users[i].getSex() + "\t\t"
+ users[i].getAge() + "\t\t\t" + users[i].getBalance());
}
}
/**
* 查询功能
*
* @param money
*
*/
// 查询余额大于money的所有用户信息
public User[] getUser(double balance_test) {
User[] arr2 = new User[0];
int index3 = 0;
for (int i = 0; i < index2; i++) {
if (users[i].getBalance() >= balance_test) {
arr2 = Arrays.copyOf(arr2, index3 + 1);
arr2[index3++] = users[i];
}
}
return arr2;
}
// 查询用户名等于name的用户信息
public User[] getUser(String name_test) {
User[] arr3 = new User[0];
int index3 = 0;
for (int i = 0; i < index2; i++) {
if (users[i].getUsername().equals(name_test)) {
arr3 = Arrays.copyOf(arr3, index3 + 1);
arr3[index3++] = users[i];
}
}
return arr3;
}
// 查询所有性别等于sex的用户信息
User[] arr4 = new User[0];
int index4;
public User[] getUserBySex(String sex_test) {
for (int i = 0; i < index2; i++) {
if (sex_test.equals(users[i].getSex())) {
arr4 = Arrays.copyOf(arr4, index4 + 1);
arr4[index4++] = users[i];
}
}
return arr4;
}
public void showTheSameSex() {
System.out.println("卡号\t用户名\t性别(m/f)\t年龄(岁)\t余额(元)");
for (int i = 0; i < index4; i++) {
System.out.println(arr4[i].getId() + "\t" + arr4[i].getUsername() + "\t\t" + arr4[i].getSex() + "\t\t"
+ arr4[i].getAge() + "\t\t\t" + arr4[i].getBalance());
}
}
// 根据卡号card查询用户的余额
public double getMoney(String id_test) {
for (int i = 0; i < index2; i++) {
if (id_test.equals(users[i].getId())) {
return users[i].getBalance();
}
}
return -1.0;
}
// 用户存钱功能
public boolean addBalance(double money, User admins) {
if (money > 0) {
admins.setBalance(admins.getBalance() + money);
return true;
} else {
return false;
}
}
// 用户取钱功能
public boolean subBalance(double money, User admins) {
if (money > 0 && money <= admins.getBalance()) {
admins.setBalance(admins.getBalance() - money);
return true;
} else {
return false;
}
}
}
/*
* 新建一个User类,具有的属性有卡号(字符串),用户名,性别,年龄,存款金额,具有存款,和取款的方法。
*/
package day20171229;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
/**
* 存储用户信息
*
* @author Administrator
* @ID 卡号
* @username 用户名
* @password 密码
* @sex 性别
* @age 年龄
* @balance 余额
* @money 金钱
*/
public class User {
private String ID;
private String username;
private String password;
private String sex;
private int age;
private double balance;
// ID
public void setId(String ID) {
this.ID = ID;
}
public String getId() {
return ID;
}
// 用户名
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
// 密码
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
// 性别
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
// 年龄
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
// 储存余额的方法
public void setBalance(double balance) {
this.balance = balance;
}
public double getBalance() {
return balance;
}
}