简单Java小程序----无界面ATM机

              软件设计掌握软件内部结构至关重要,初次接触编程的我们可以从代码中学习软件内部结构,本次对该程序的学习充分理解到软件工程中系统分析的重要性。

下面是对最近学习的无界面虚拟ATM机的一些学习:

1.   代码认识

代码如下:

Atm类

<span style="font-size:18px;">import java.util.*;   //引用数据类
public class Atm {
	Scanner sc =new Scanner(System.in);    //设置可以输入项sc--scanner缩写。

	Vector<Account> v =new Vector<Account>();  // <Account>将容器范围限定为只能放Account类
	Account current;       //ATM类中定义使用的account对象
	
	public Atm( ){           //构造函数---数组容器V存储4个用户
		v.add(new Account("a","1",100));
		v.add(new Account("b","2",100));
		v.add(new Account("c","3",100));
		v.add(new Account("d","4",100));
	}
	public boolean check(String account,String pw){   //循环检查用户与密码是否对应
		int i;
		Account a;  //对象a只在该方法中作用,用于调用Account类check方法
		for(i =0;i <v.size();i++){    
			a =v.get(i);
			if(a.check(account,pw)){
				current =a;   //输入的账户赋值给current
				return true;
			}
		}
		current =null;
		return false;
	}
	public void inputNoPassword(){    //输入用户账户与密码
		String account,pw;
		boolean b;
		do{
			System.out.print("Please enter account:");
			account =sc.next();
			System.out.print("Please enter password:");
			pw =sc.next();
			b =check(account,pw);  //检查结果付给b
			if(b ==false)
				System.out.println("Your No or password error! Please try again.");
		}while(b ==false);    //循环输入直到正确为止
	}
	public void operate(){    //功能操作部分(前面加数字建立索引)
		int i;
		do{
			System.out.println("please choose:");  //选择功能
			System.out.println("1:Get out money;");//取钱
			System.out.println("2:Put into money;");//存钱
			System.out.println("3:search");//检查
			System.out.println("4:quit");   //退出
			try{                             
				i =sc.nextInt();
				if(i ==1)
					getMoney();
				else if(i ==2)
					putMoney();
				else if(i ==3)
					search();
				else if(i ==4)
					break;//输入数字4时程序退出
				else
					System.out.println("Your choose error,please try again!");
			}catch(InputMismatchException e){   //错误处理机制,输入的项目不为数字时避免程序报错使用
				System.out.println("Your input error!\nPlease choose1-4:");
				sc.nextLine();
			}	
		}while(true);  //循环输入操作执行
	}
	private void getMoney(){
		int i,num;
		System.out.print("Please enter number : ");
		i =sc.nextInt();   //输入取出金额
		num =current.getMoney(i);//调用account类中的getmoney()方法
		System.out.println("You have got out:"+num);
	}
	private void putMoney(){
		int i,num;
		System.out.print("Please enter number : ");
		i =sc.nextInt();
		num =current.putMoney(i);
		System.out.println("You have put into: "+num);
	}
	private void search(){     //查询操作
		int num;
		num =current.getBalance();
		System.out.println("Your balance: "+num);
	}
	public void start(){    //程序的执行入口
		do{
			inputNoPassword();
			operate();
			System.out.print("Are you quit? y/n");
			if(sc.next().equals("y"))
				break;
		}while(true);
	}
	public static void main(String[] args){
		Atm atm =new Atm();  //atm对象生成,执行构造函数
		atm.start();
	}</span>
Account类

虽然只用到两个类,但类中的结构设计确实是一门学问,只有在大量的生活经历或是经过详细调查,分析,抽象才能将方法设计的足够全面。

2.   结构分析:

这个简单的程序两个类实现用户存钱,取钱,简单查询功能,其结构分析如下:

简单Java小程序----无界面ATM机_第1张图片

简单Java小程序----无界面ATM机_第2张图片

account类需要从纵向的角度考虑其数据成员,一个账户包括账号,密码,余额基本信息。对账户的操作只要获得用户名即可,修改只能通过银行窗口;密码操作涉及的就是密码修改,但是改程序中未能体现该功能;余额要涉及的是存钱,取钱,后的更新以及获取。

Atm类从操作流程上理解,进入银行,插上银行卡,进行的第一步操作就是输入自己的账户与密码(该程序中所有的操作流程通过start()方法执行,清晰度明显增强,这样主函数中如果再添加其他操作也不会显得很乱),这时Atm机要查询自己数据库中的信息进行核对检查,查询正确后才能进行具体操作;然后就是具体操作,像查询,改密,取款,存款等操作。

3.总结:

 正确的软件开发过程应是先进行软件结构设计,然后代码编写,处于初级阶段的我们多操作一些实例,相信一定可以建立一种结构化设计模型的思维,然后逐渐走向正规化软件设计过程。

你可能感兴趣的:(java,编程语言,软件)