简单的银行系统

花了两天时间的,不知道快还是慢。。。


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;
	}
}









  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值