User类
package com.hubstc.Bank;
/*
* 该项目利用Java基础(基本数据类型、for循环、if语句、switch语句、while循环、do-whlie)、数组
* 面向对象(封装、对象的创建与引用)、异常处理(try-catch)、List集合(list、Arraylist)
*/
public class User {
//属性:账号、用户名、用户密码、身份证号、余额
String account;
String userName;
String password;
String id;
double money;
// //方法
// public void showInfo(){
// System.out.println("账号:"+account+",用户名:"+userName+",密码:"+password+",身份证号:"+id);
// }
public double getMoney() {
return money;
}public void setMoney(double money) {
this.money = money;
}public String getAccount() {
return account;
}public void setAccount(String account) {
this.account = account;
}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 String getId() {
return id;
}public void setId(String id) {
this.id = id;
}
/*
* 用户存款方法 返回更新后的余额
*/
public double UserAddMoney(double money,double addMoney){
if(addMoney > 0){
money += addMoney;
return money;
}else{
System.out.println("存款金额不足,请充值!");
return -1;
}
}
//取款
public int UserCutMoney(double outMoney){
if(outMoney > 0){
if(outMoney < money){
money -= outMoney;
return 1;
}else{
System.out.println("取款金额不能大于账号余额!");
return -1;
}
}else{
System.out.println("取款金额不能为负数!");
return -1;
}
}
}
Bank类
package com.hubstc.Bank;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Bank {
Scanner input = new Scanner(System.in);
//list集合存放用户信息
List<User> userList = new ArrayList<User>();
/*
* 显示菜单,并设置循环输出
*/
public void ShowMenu(){
System.out.println("------------欢迎使用自动银行系统--------------");
System.out.println("1.开户 2.存款 3.取款 4.转账 5.查询余额 6.退出");
System.out.println();
int choice = 0; //默认用户进行开户操作
do{
System.out.println("请您输入服务代码:");
choice = input.nextInt(); //接收用户输入信息
switch(choice){
case 1:
CreateAccount(); //开户
break;
case 2:
BankAddMoney(); //存款
break;
case 3:
BankCutMoney(); //取款
break;
case 4:
Transfer(); //转账
break;
case 5:
CheckBalance(); //查询余额
break;
case 6:
System.out.println("感谢您的使用,欢迎下次光临!");
break; //退出
default:
System.out.println("没有您需要的服务项目,请重新输入!");
}
if(choice == 6){
break; //退出本次循环
}
}
while(choice != 0);
}
/*
* 开户类,创建用户,简而言之就是给用户新建一个账号,接收用户输入信息,并判断该账户名是否存在,如果存在则不能新建用户,否则就可以
*/
User users[] = new User[5];
public void CreateAccount() {
User user = new User();
System.out.print("请您输入账户名:");
String account = input.next();
//判断当前输入账号是否存在
if(IsUser(account) != null){
System.out.println("该账号已存在!");
return;
}
user.account = account; //输入的账号赋值给用户对象的账号属性
System.out.print("请您输入密码:");
String password = input.next();
System.out.println("请您确认密码:");
String password1 = input.next();
if(!password.equals(password1)){
System.out.println("您两次密码输入不一致!");
return;
}
System.out.print("请您输入身份证号:");
String id = input.next();
System.out.print("请您输入存款金额:");
int money = input.nextInt();
userList.add(user); //追加用户到List集合中
user.setAccount(account);
user.setPassword(password);
user.setId(id);
user.setMoney(money);
System.out.println("账户名:" + user.getAccount() + ",密码:" + user.getPassword()+ ",身份证号:" + user.id +
",存款金额:" + user.money + ",恭喜" + user.account + "用户创建成功!");
}/*
* 初始化用户 该类主要是存放用户信息,并将用户信息初始化 主要利用数组来存放用户信息,并将其信息存放到List集合中并赋值
*/public void InitialUser() {
// 创建一个长度为2的数组
User users[] = new User[5];userList = new ArrayList<User>();
// 创建两个User对象并给对象赋值
User user = new User();
user.setAccount("111");
user.setUserName("张三");
user.setPassword("111");
user.setId("420");
user.setMoney(1000);
users[0] = user; // 将user对象的值赋给users
userList.add(user); // 将user对象的值存放到集合中User user1 = new User();
user1.setAccount("222");
user1.setUserName("李四");
user1.setPassword("222");
user1.setId("421");
user1.setMoney(2000);
users[1] = user1; // 将user对象的值赋给users
userList.add(user1); // 将user对象的值存放到集合中System.out.println("账户名\t用户名\t密码\t身份证号\t存款金额");
// 利用foreach()循环遍历输出用户信息
for (User u : userList) {
System.out.println(u.getAccount() + "\t" + u.getUserName() + "\t" + u.getPassword() + "\t" + u.getId()
+ "\t" + u.getMoney());
}
}// 判断账户是否存在
public User IsUser(String account) {
User u = null;
for (User users : userList) {
if (users.account.equals(account)) {
u = users;
break;
}
}
return u;
}
/*
* 银行存款方法,首先通过判断账号是否存在进行选择是否能够存款。
* 其次,通过调用User类中的UserAddMoney()方法,累加用户存款余额,简而言之就是将用户存款金额加到用户余额中,如user.money += addMoney;
*/
public void BankAddMoney(){
System.out.print("请您输入存款账号:");
String account = input.next();
User user = IsUser(account); //调用IsUser()方法,判断用户输入账户是否存在
if(user == null){
System.out.println("该账户不存在!");
return;
}
System.out.print("请您输入存款金额:");
double addMoney = input.nextDouble();
//调用用户类添加金额方法 (传递当前用户余额 和 存款金额)
double result = user.UserAddMoney(user.getMoney(), addMoney);
if(result == -1){
System.out.println("存款失败!");
return;
}
user.money = result; //更新用户余额
System.out.println("存款成功!当前余额:" + result);
}
//取款
public void BankCutMoney(){
System.out.print("请您输入账号:");
String account = input.next();
User user = IsUser(account); //判断用户输入账户是否存在
if(user == null){
System.out.println("该账户不存在!");
return;
}
System.out.print("请您输入密码:");
String password = input.next();
if(!user.password.equals(password)){
System.out.println("您密码输入有误!");
return;
}
System.out.println("请您输入取款金额:");
double cutMoney = input.nextDouble();
int i = user.UserCutMoney(cutMoney);
if(i < 0){
System.out.println("取款失败!");
}else{
System.out.println("取款成功!当前余额:"+user.money);
}
}
//查看余额
public void CheckBalance(){
System.out.print("请您输入账号:");
String account = input.next();
//判断用户输入账户是否存在
User user = IsUser(account);
if(user == null){
System.out.println("该账户不存在!");
return;
}
System.out.print("请您输入密码:");
String password = input.next();
if(!user.password.equals(password)){
System.out.println("您密码输入有误!");
return;
}
System.out.println("账户的余额是:"+user.money);
}
//转账,并对其输入密码进行循环三次操作
public void Transfer(){
System.out.print("请您输入转出账户:");
String accountOut = input.next();
User userOut = IsUser(accountOut);
if(userOut == null){
System.out.println("您的账号不存在!");
return;
}
int i = 0; //循环操作输入密码的次数
do{
System.out.print("请您输入转出账户密码:");
String password = input.next();
if(userOut.password.equals(password)){
break; //如果密码正确,退出循环(不执行break后的语句)
}
i++;
if(i != 3){
System.out.println("密码输入错误。您还有" + (3 - i) + "次机会输入密码");
}else
{
System.out.println("您已三次输入密码错误,请重新操作。");
return;
}
}
while(i < 3);
System.out.print("请您输入转入账户:");
String accountIn = input.next();
User userIn = IsUser(accountIn);
if(userIn == null){
System.out.println("您的账号不存在!");
return;
}
System.out.println("请您输出转出金额:");
double moneyAddMoney = input.nextDouble();
if(moneyAddMoney < 0 || moneyAddMoney > userOut.money){
System.out.println("输入转账金额有误,请重新操作。");
return;
}
userOut.money -= moneyAddMoney;
userIn.money += moneyAddMoney;
System.out.println("转账成功!转出账户:"+userOut.account + "余额:"+userOut.money+
"转入账户:"+userIn.account+"余额:"+userIn.money);
}
}
TestBank类
package com.hubstc.Bank;
import java.util.ArrayList;
import java.util.List;
public class TestBank {
/*
* 主要业务及实现功能阐述:开户:创建Bank类并添加 "创建帐户"方法
* 存款:创建存款方法并对账户是否存在进行判断,如果符合条件则进行存款
* 取款:通过判断账号、密码是否存在进行取款,并对存款金额进行判断
* 转账:对账号是否存在、转入、转出账号、密码是否有误进行判断
* 查看余额:当用户输入相对应的操作代码时,对账户和密码进行判断,如果均正确则进行查看余额
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Bank bank = new Bank();
//bank.CreateAccount();
bank.InitialUser();
bank.ShowMenu();
}
}