`
softor
  • 浏览: 18212 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个面向对象的Java实例:银行账户

阅读更多
//纯面向对象
//银行普通客户类
//取款不可透支,不可转账
public class Cust {
	
	String name;
	int ID;
	int password;
	int money;
	
	Cust(String name,int ID,int password,int money)
	{
		this.name=name;
		this.ID=ID;
		this.password=password;
		this.money=money;
	}
	
	boolean getMoney(int m)
	{
		if(m<0)
			{
			if(saveMoney(-m))
				return true;
			else
				return false;
			}
		else
		{
			if(m>money)
			{
				System.out.println("Warning:该账户不可透支,本次操作中断!");
				return false;
			}
			this.money-=m;
			return true;
		}
	}
	
	boolean saveMoney(int m)
	{
		if(m<0)
		{
			if(getMoney(-m))
				return true;
			else
				return false;
		}
		else
			{
			this.money+=m;
			return true;
			}
	}
	
	void search()
	{
		System.out.println(name+"(" + ID +") 余额:"+money);
	}
	
	boolean checkpw()
	{
		int i;
		for(i=0;i<3;i++)
		{
			if(i>0)
				System.out.println("Warning:密码错误,请输入密码:");
			int pw=KB.scanInt();
			if(pw==password)
				return true;
		}
		if(i==3)
			System.out.println("Warning:密码输入出错3次,操作中断!");
		return false;
	}
	
	void run(Cust st[])
	{
		
		while(true)
		{
			printMenu();
			int cmd=KB.scanInt();
			switch(cmd)
			{
			case 1:
			{
				System.out.println("请输入存款数:");
				int m=KB.scanInt();
				saveMoney(m);
				break;
			}
			case 2:
			{
				System.out.println("请输入取款数:");
				int m=KB.scanInt();
				getMoney(m);
				break;
			}
			case 3:
				search();break;
			case 0:return;
			}
		}
	}
	
	static void printMenu()
	{
		//System.out.println("诚信银行");
		System.out.println("——————");
		System.out.println("存款——1");
		System.out.println("取款——2");
		System.out.println("查余——3");
		System.out.println("退出——0");
		System.out.println("——————");
	}
}

//银行VIP客户类
//取款可透资,可转账
public class CustVip extends Cust
{
	CustVip(String name,int ID,int password,int money)
	{
		super(name,ID,password,money);
	}
	
	boolean getMoney(int m)
	{
		if(m<0)
			{
			if(saveMoney(-m))
				return true;
			else
				return false;
			}
		else
		{
			if(m-5000>money)
			{
				 System.out.println("Warning:该账户透支不可超过5000元,本次操作中断!");
				 return false;
			}
			this.money-=m;
			return true;
		}
	}
	
	void moveMoney(Cust st[])
	{
		System.out.println("请输入目标帐户ID:");
		int id=KB.scanInt();
		int i;
		for(i=0;i<st.length;i++)
		{
			if(st[i].ID==id)
			{
				System.out.println("请输入目标帐户密码:");
				if(st[i].checkpw())
				{
					System.out.println("请输入转账金额:");
					int m=KB.scanInt();
					if(this.getMoney(m))
					{
						st[i].saveMoney(m);
						System.out.println("转账成功!");
					}
					else
					{
						System.out.println("Warning:转账失败!");						
					}
				return ;	
				}
			}
		}
		if(i==st.length)
			System.out.println("Warning:用户不存在!");
	}
	
	void run(Cust st[])
	{
		
		while(true)
		{
			printMenu();
			int cmd=KB.scanInt();
			switch(cmd)
			{
			case 1:
			{
				System.out.println("请输入存款数:");
				int m=KB.scanInt();
				saveMoney(m);
				break;
			}
			case 2:
			{
				System.out.println("请输入取款数:");
				int m=KB.scanInt();
				getMoney(m);
				break;
			}
			case 3:
				search();break;
			case 4:
				moveMoney(st);break;
			case 0:return;
			}
		}
	}

	static void printMenu()
	{
		//System.out.println("诚信银行");
		System.out.println("——————");
		System.out.println("存款——1");
		System.out.println("取款——2");
		System.out.println("查余——3");
		System.out.println("转账——4");
		System.out.println("退出——0");
		System.out.println("——————");
	}
}
//测试类,主函数
public class Test {

	/**
	 * @WrittenBy:http://hi.baidu.com/duxing
	 */
	public static void main(String[] args) {
		Cust st[]=new Cust[4];
		st[0]=new Cust("admin",0,0,0);
		st[1]=new Cust("笃行",111,111,1000);
		st[2]=new CustVip("冬梅",222,222,2000);
		st[3]=new CustVip("乐乐",333,333,3000);
		while(true)
		{
			System.out.println("请输入帐户ID:");
			int id=KB.scanInt();
			if(id==0)return;
			int i;
			for(i=0;i<st.length;i++)
			{
				if(st[i].ID==id)
				{
					System.out.println("请输入帐户密码:");
					if(st[i].checkpw())
					{
						st[i].run(st);
						break;
					}
				}			
			}
			if(i==st.length)
			{
				System.out.println("Warning:该用户不存在!");
			}	
		}		
	}
}
//获取键盘输入类
import java.io.*;

public class KB 
{
	public static String scan()
	{
		String str = "";
		try
		{
			BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
			str = buf.readLine();
		}
		catch (Exception e)
		{
		}
		return str;
	}
	public static int scanInt()
	{
		int temp=0;
		while(true)
		{
			
			try {
				temp=Integer.parseInt(scan());		
				break;
			} catch (Exception e) {
				System.out.println("Warning:输入不合法,请输入整数:");
			}			
		}
		return temp;
	}
}

1
0
分享到:
评论

相关推荐

    Java面向对象编程经典实例-银行账户

    Java面向对象编程经典实例-银行账户 Eclipse下的一个完整的工程

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java源码包2

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    java源码包4

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    java源码包3

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,让读者及时练习,巩固提高,并提供了参考答案 目录 第1篇 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,让读者及时练习,巩固提高,并提供了参考答案 目录 第1篇 ...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多...

    案例student--学生管理系统.zip

    案例--账户管理系统是java面向对象编程的应用实例,模仿ATM机进行登陆、注册、存款、取款、查询、转账等业务,有助于加深对面向对象编程的理解,熟悉程序开发的基础框架

    《设计模式实训教程》【PPT+类图与代码+样章】

    5.2.8状态模式实例之银行账户 5.2.9策略模式实例之电影票打折 5.2.10模板方法模式实例之数据库操作 5.2.11访问者模式实例之奖励审批 5.3实训练习 第6章模式联用与综合实例实训 6.1设计模式补充知识 6.1.1反射...

    JAVA程序开发大全---上半部分

    19.2.2 创建一个空白的插件项目 331 19.3 RCP应用程序的开发 333 19.3.1 RCP应用开发初步 333 19.3.2 创建用户自定义的菜单和工具条 338 19.4 本章小结 341 第20章 网上宠物商店(JSP+JavaBean) 342 20.1 系统需求...

    Oracle_Database_11g完全参考手册.part3/3

    第41章 面向对象的高级概念 第42章 JAVA简介 第43章 JDBC程序设计 第44章 JAVA存储过程 第Ⅶ部分 指南 第45章 Oracle数据字典指南 第46章 应用程序和SQL调整指南 第47章 SQL结果缓存和客户端查询缓存 第48章 关于...

    蓝鲸作业平台(Job)是一套运维基础操作管理系统具备海量任务并发处理能力.zip

    除了支持脚本执行、文件分发、定时任务等一系列基础运维场景以外,还支持通过流程调度能力将零碎的单个任务组装成一个自动化作业流程;而每个作业都可做为一个原子节点,提供给上层或周边系统/平台使用,实现跨系统...

    Oracle_Database_11g完全参考手册.part2/3

    第41章 面向对象的高级概念 第42章 JAVA简介 第43章 JDBC程序设计 第44章 JAVA存储过程 第Ⅶ部分 指南 第45章 Oracle数据字典指南 第46章 应用程序和SQL调整指南 第47章 SQL结果缓存和客户端查询缓存 第48章 关于...

    Android高级编程--源代码

    由于现有的手机应用程序的开发是构建在各手机厂家的私有操作系统之上的,所以它限制了第三方应用程序的开发,而Android为我们提供了一个开放和通用的选择。因为没有了人为制造的障碍,所以Android开发人员可以自由地...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

     ·分享c++程序的错误查找技术,并介绍通用的调试原则讨论每一个windows应用程序的结构和基本元素  ·举例说明如何使用mfc开发本地windows应用程序  ·指导读者用c++和c++/cli设计和创建大量的windows应用程序 ...

Global site tag (gtag.js) - Google Analytics