数组

原创 2015年07月07日 00:17:47

今天将了数组的内容,以前张老师也将过,不过我没听懂,胡老师今天给我们讲,说实话还是听懂了一点,今天最主要的应用在了以前做的项目ATM机登录上面了;




public class Atm {

/**
* 代表ATM机器中存放的现金数量
*/
private int cash;//现金

private UserInfo theUser;//当前操作用户(登录成功的人)

private UserInfo[] allUsers;//所有的用户信息

public final int MAX_CASH = 100000;//最大现金数

public Atm(){
this.allUsers = new UserInfo[5];
for (int i = 0; i < allUsers.length; i++) {
this.allUsers[i] = new UserInfo("zhang" + i, "12345" + i, "12345" + i,
10000 + i * 1000);
}
this.cash = 50000;
}


//运行--完成流程控制
/**
* 本方法专门用于流程控制
*/
public void run(){
this.welcome();
boolean flag = this.login();

if(flag){
while(true){
int choice = this.choiceMenu();
switch(choice){
case 1:
this.query();
break;
case 2:
this.getMoney();
break;
case 3:
this.saveMoney();
break;
case 4:
this.changPwd();
break;
case 5:
this.exit(0);
break;
default:
System.out.println("只能输入数字1-5,请重新输入!");
break;
}
}
}else{
this.exit(1);
}
}

//欢迎
private void welcome(){
System.out.println("***************************");
System.out.println("**********欢***迎***********");
System.out.println("**********使***用***********");
System.out.println("**********爱存不存***********");
System.out.println("**********银***行***********");
System.out.println("***************************");
}

//登录
private boolean login(){
Scanner scan = new Scanner(System.in);

for(int i = 0; i < 3; i++){
System.out.println("请输入卡号:");
String inputCardNum = scan.next();
System.out.println("请输入密码:");
String inputPwd = scan.next();

for(int j = 0; j < this.allUsers.length; j++){
if(inputCardNum.equals(this.allUsers[j].getCardNum()) &&
inputPwd.equals(this.allUsers[j].getPassword())){
this.theUser = this.allUsers[j];
System.out.println("登录成功!");
return true;
}
}



System.out.println("您还有" + (2 - i) + "次机会!");
}
System.out.println("三次卡号密码输入错误,卡被没收!");
return false;
}

//选择菜单
private int choiceMenu(){
Scanner scan = new Scanner(System.in);
System.out.println("请选择您要操作的业务:");
System.out.println("1、查询余额;2、取款业务;3、存款业务;4、修改密码;5、退出");
int choice = scan.nextInt();

return choice;
}

//查询
private void query(){
System.out.println("您当前的余额是:" + this.theUser.getAccount() + "元。");
}

//存钱
private void saveMoney(){
Scanner scan = new Scanner(System.in);
System.out.println("请输入你要存入的金额:");
int inputMoney = scan.nextInt();
if(inputMoney <= 0){
System.out.println("你输入的钱是负数,无法操作!");
return;
}
if(inputMoney % 100 != 0){
System.out.println("你输入的钱不是100的整数,无法操作!");
return;
}
if(this.cash + inputMoney > this.MAX_CASH){
System.out.println("本机容量不足,无法操作!");
return;
}
this.cash += inputMoney;
this.theUser.setAccount(this.theUser.getAccount() + inputMoney);
System.out.println("存钱操作已经成功,谢谢!");
}

//取钱
private void getMoney(){
Scanner scan = new Scanner(System.in);
System.out.println("请输入你要取出的金额:");
int outputMoney = scan.nextInt();
if(outputMoney <= 0){
System.out.println("你输入的钱是负数,无法操作!");
return;
}
if(outputMoney % 100 != 0){
System.out.println("你输入的钱不是100的整数,无法操作!");
return;
}
if(this.theUser.getAccount() < outputMoney){
System.out.println("您账户的余额不足,无法操作!");
return;
}
if(this.cash <= outputMoney){
System.out.println("本机现金不足,无法操作!");
return;
}
this.theUser.setAccount(this.theUser.getAccount() - outputMoney);
this.cash -= outputMoney;
System.out.println("取钱操作已经成功,请收好现金!");
}

//修改密码
private void changPwd(){
Scanner scan = new Scanner(System.in);
System.out.println("请输入原密码:");
String oldPwd = scan.next();
System.out.println("请输入新密码:");
String newPwd = scan.next();
System.out.println("请确认新密码:");
String reNewPwd = scan.next();

if(!oldPwd.equals(this.theUser.getPassword())){
System.out.println("原密码输入错误!");
return;
}
if(!newPwd.equals(reNewPwd)){
System.out.println("两次新密码输入不一致!");
return;
}
this.theUser.setPassword(newPwd);
System.out.println("新密码设置成功!");
}

//退出
/**
* 本方法用于实现ATM系统退出
* @param 表示退出状态
*/
private void exit(int status){
if(status == 1){
System.out.println("本机停止为您服务,请去柜台操作处理!");
}else if(status == 0){
System.out.println("谢谢您的使用,期待下次为您服务!");
}
System.exit(0);
}
}

相关文章推荐

《编程之美》中的一个问题,在数组中找到出现频率大于1/4的数

这道题目的思路其实很简单,与在数组中找出现次数大于1/2的元素经典算法非常类似,O(n)的时间复杂度。定义出现频率大于1/4的数为频繁项,这样的频繁项最多有3个。算法的核心思想很简单,每次删去不同的4...

加密解密 数组排序

  • 2017年07月10日 22:33
  • 16KB
  • 下载

动态创建二维vector数组 C和C++ 及指针与引用的区别

二维vectorvector > ivec(m ,vector(n));    //m*n的二维vector动态创建m*n的二维vector方法一:vector > ivec;ivec.resize(...

使用数组实现二叉树

  • 2016年08月30日 11:54
  • 7KB
  • 下载

#Objective-C 经典字典数组排序 - 省市区

1.首先要准备好包含所有省市区的文档,将文档拖到我们建好的Xcode里 2.然后新建一个路径NSString *path = @" ";   再将省市区文档拖到@"  "中; 3.在进行排序前...

模拟数组中的内容交换(swap)

  • 2017年07月29日 11:44
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组
举报原因:
原因补充:

(最多只允许输入30个字)