Accounts.java
*****************************************************************************************************************************************************************************************************************************
package yaoxia.atm.java;
public class Accounts {
private String password;
private String name;
private float money;
private boolean isEnable;
public boolean isEnable() {
return isEnable;
}
public void setEnable(boolean isEnable) {
this.isEnable = isEnable;
}
public float getMoney() {
return money;
}
public void setMoney(float money) {
if(money<=0){
money=0;
}
this.money = money;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
****************************************************************************************************************************************************************************************************************************
Atm.java
****************************************************************************************************************************************************************************************************************************
package yaoxia.atm.java;
import java.util.Scanner;
public class Atm {
Scanner input=new Scanner(System.in);
Bank bank=new Bank();
public void start(){
System.out.println("----------主菜单----------");
System.out.println("1.开户");
System.out.println("2.插卡");
System.out.println("3.系统管理");
System.out.println("4.退出系统");
System.out.println("请选择菜单");
String choose=input.next();
if("1".equals(choose)){
creatAccount();
}else if("2".equals(choose)){
login();
}else if("3".equals(choose)){
managementSystem();
}else if("4".equals(choose)){
}else{
System.out.println("请输入正确的选项");
start();
}
}
/**
* 管理系统
*/
private void managementSystem() {
System.out.println("请输入管理账号");
String name=input.next();
if("yaoxia".equals(name)){
showAdministratormenu();
}
}
/**
* 管理系统菜单
*/
private void showAdministratormenu() {
System.out.println("1.显示用户");
System.out.println("2.冻结用户");
System.out.println("3.恢复用户");
System.out.println("4.退出系统");
System.out.println("请选择菜单");
String choose=input.next();
if("1".equals(choose)){
showAdministratorAccount();
}else if("2".equals(choose)){
freezeUser();
}else if("3".equals(choose)){
thawAccount();
}else if("4".equals(choose)){
System.exit(0);
}else{
System.out.println("请选择正确的菜单");
showAdministratormenu();
}
}
/**
* 解冻用户(thaw解冻)
*/
private void thawAccount() {
Accounts[] accounts=bank.accountsMessage();
for(Accounts acc:accounts){
if(acc!=null){
System.out.println("账号"+"\t\t\t\t是/否\t冻结");
System.out.println(acc.getName()+"\t\t\t\t"+(acc.isEnable() ?"是":"否"));
}
}
System.out.println("请输入要解冻的用户账号");
String name=input.next();
Accounts newAccount=null;
for(Accounts acc:accounts){
if(name.equals(acc.getName())){
newAccount=acc;
break;
}
}
if(newAccount!=null){
newAccount.setEnable(true);
System.out.println("解冻成功!");
showAdministratormenu();
}else{
System.out.println("账号错误!请核实!");
showAdministratormenu();
}
}
/**
* 管理员冻结用户
*/
private void freezeUser() {
Accounts[] accounts=bank.accountsMessage();
for(Accounts acc:accounts){
if(acc!=null){
System.out.println("账号"+"\t\t\t\t是/否\t冻结");
System.out.println(acc.getName()+"\t\t\t\t"+(acc.isEnable() ?"是":"否"));
}
}
System.out.println("请输入冻结用户账号");
String name=input.next();
Accounts newAccount=null;
for(Accounts acc:accounts){
if(name.equals(acc.getName())){
newAccount=acc;
break;
}
}
if(newAccount!=null){
newAccount.setEnable(false);
showAdministratormenu();
}else{
System.out.println("账号错误!请核实!");
showAdministratormenu();
}
}
/**
* 给管理员显示所有用户
*/
private void showAdministratorAccount() {
Accounts[] accounts=bank.accountsMessage();
for(Accounts acc:accounts){
if(acc!=null){
System.out.println("账号"+"\t\t\t\t是/否\t冻结");
System.out.println(acc.getName()+"\t\t\t\t"+(acc.isEnable() ?"是":"否"));
}
}
showAdministratormenu();
}
/**
* 插卡
*/
private void login() {
System.out.println("请输入账号");
String name=input.next();
System.out.println("请输入密码");
String password=input.next();
Accounts account=bank.getAccountByNameByPassword(name, password);
if(account!=null){
System.out.println("登陆成功!");
showMenu(account);
}else{
System.out.println("账号或密码错误!");
start();
}
}
/**
* 成功登陆后给用户显示可操作菜单
*/
private void showMenu(Accounts account) {
System.out.println("1.查询余额");
System.out.println("2.取款");
System.out.println("3.存款");
System.out.println("4.转账");
System.out.println("5.修改密码");
System.out.println("6.返回主菜单");
System.out.println("请选择菜单");
String choose=input.next();
if("1".equals(choose)){
showMoney(account);
}else if("2".equals(choose)){
getMoney(account);
}else if("3".equals(choose)){
saveMoney(account);
}else if("4".equals(choose)){
tranAccount(account);
}else if("5".equals(choose)){
changePassword(account);
}else if("6".equals(choose)){
start();;
}else{
System.out.println("请选择正确的菜单");
}
}
/**
* 已登录用户修改密码
* @param account
*/
private void changePassword(Accounts account) {
System.out.println("请输入旧密码");
String password=input.next();
if(password.equals(account.getPassword())){
System.out.println("请输入新密码");
String newPassword=input.next();
System.out.println("请在输入一次新密码");
String newPassword1=input.next();
if(newPassword.equals(newPassword1)){
account.setPassword(newPassword);
System.out.println("密码修改成功!");
}else{
System.out.println("新密码两次输入不一致!");
}
}else{
System.out.println("密码错误!");
}
showMenu(account);
}
/**
* 已登录用户转账
* @param account
*/
private void tranAccount(Accounts account) {
System.out.println("请输入要转入的账号");
String inName=input.next();
//因不可跨行转、取,要去Bank中查有无该用户
Accounts inAccount=bank.getAccountByName(inName);
if(inAccount==null){
System.out.println("用户不存在!请查证后再输入!");
showMenu(account);;
}else{
System.out.println("请输入要转入的金额");
float money=input.nextFloat();
float newMoney=account.getMoney()-money;
account.setMoney(newMoney);
float newInMoney=inAccount.getMoney()+money;
inAccount.setMoney(newInMoney);
System.out.println("您的余额:"+newMoney+"\n您要转入的账户余额:"+newInMoney);
showMenu(account);
}
}
/**
* 已登录用户存款
* @param account
*/
private void saveMoney(Accounts account) {
System.out.println("请输入存款金额");
float money=input.nextFloat();
if(money<=0){
System.out.println("请输入正确的存款金额");
saveMoney(account);
}else {
float newMoney=account.getMoney()+money;
account.setMoney(newMoney);
System.out.println("您的余额:"+newMoney);
showMenu(account);;
}
}
/**
* 已登录用户取款
* @param account
*/
private void getMoney(Accounts account) {
System.out.println("请输入取款金额");
float money=input.nextFloat();
if(money>account.getMoney()){
System.out.println("余额不足!");
showMenu(account);;
}else if(money<=0){
System.out.println("请输入正确的取款金额");
getMoney(account);
}else{
float newMoney=account.getMoney()-money;
account.setMoney(newMoney);
System.out.println("您的余额:"+newMoney);
showMenu(account);
}
}
/**
* 已登录用户查询余额
* @param account
*/
private void showMoney(Accounts account) {
System.out.println("用户"+account.getName()+"您好!\n您的余额:"+account.getMoney());
showMenu(account);
}
/**
* 开户
*/
private void creatAccount() {
System.out.println("请输入账号");
String name=input.next();
//转到Bank查找该账号是否已存在
Accounts account=bank.getAccountByName(name);
if(account==null){
System.out.println("恭喜!此账号可用");
System.out.println("请输入密码");
String password=input.next();
System.out.println("请输入首次存额");
float money=input.nextFloat();
account=new Accounts();
account.setName(name);
account.setPassword(password);
account.setMoney(money);
account.setEnable(true);
boolean isOk=bank.saveAccount(account);
if(isOk){
System.out.println("账户存储成功!");
}else{
System.out.println("系统繁忙!");
}
start();
}else{
System.out.println("用户名已存在,请重新输入");
creatAccount();
}
}
}
*************************************************************************************************************************************************************
Bank.java
*************************************************************************************************************************************************************
package yaoxia.atm.java;
public class Bank {
Accounts[] accounts=new Accounts[100];
/**
* 根据账号查找是否该账号已经存在
* @param name
* @return Accounts
*/
public Accounts getAccountByName(String name){
for(Accounts acc:accounts){
if(acc!=null&&name.equals(acc.getName())){
return acc;
}
}
return null;
}
/**
* 在银行存入新开的账户
* @param account
* @return flag
*/
public boolean saveAccount(Accounts account){
boolean flag=false;
for(int i=0;i<accounts.length;i++){
if(accounts[i]==null){
accounts[i]=account;
flag=true;
break;
}
}
return flag;
}
public Accounts getAccountByNameByPassword(String name,String password){
for(Accounts acc:accounts){
if(acc!=null&&name.equals(acc.getName())&&password.equals(acc.getPassword())){
return acc;
}
}
return null;
}
/**
* 将用户信息反映到atm机上,助于管理员管理
*/
public Accounts[] accountsMessage(){
return accounts;
}
}
*************************************************************************************************************************************************************
Test.java
*************************************************************************************************************************************************************
package yaoxia.atm.java;
public class Test {
public static void main(String[] args) {
Atm atm=new Atm();
atm.start();
}
}
*************************************************************************************************************************************************************
估计有些毛病我没查出,若有发现,请帮指出,谢谢!
*************************************************************************************************************************************************************