`
softor
  • 浏览: 18688 次
  • 性别: 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面向对象编程经典实例-银行账户"中,我们将深入探讨如何利用Java实现银行账户系统的模型。 首先,银行账户系统的核心实体是"账户",它具有存款、取款、查询余额等基本功能。我们可以创建一个名为`...

    Java实战项目:银行账户管理系统 - 创建一个模拟银行账户交易的程序

    总的来说,构建一个银行账户管理系统是一个综合性的任务,涉及到面向对象编程、数据结构、算法和数据库设计等多个方面。上述代码仅为基础框架,实际项目会更复杂,需要根据具体需求进行设计和扩展。

    JAVA实现银行账户类

    在Java编程语言中,设计和实现一个银行账户类(BankAccount class)是学习面向对象编程的一个常见练习。这个"JAVA实现银行账户类"小程序旨在模拟真实世界中的银行账户操作,如存款、取款和查看账户余额。下面我们将...

    JAVA银行账户

    在Java编程领域,银行账户管理是一个常见的练习项目,它涉及到核心的面向对象编程概念、数据持久化以及数据库交互。本项目是一个适用于初学者的实践案例,旨在帮助他们理解如何在实际场景中应用Java技术。以下是这个...

    Java面向对象程序设计耿祥义版课件

    Java面向对象程序设计是编程领域中的核心概念,尤其在企业级应用开发中占据了主导地位。...耿祥义版的课程结合PPT和源码,为学习者提供了一个全面、直观的学习路径,有助于他们在实践中掌握面向对象编程的核心技能。

    使用Java实现面向对象编程

    你可能需要编写代码来实现特定功能,如实现一个简单的银行系统,处理多个账户之间的转账操作,或者设计一个具有不同类型的账户(如储蓄账户和信用卡账户)的系统。 此外,你还将学习抽象类和接口,它们在表示共同...

    面向对象银行取款机实例源码.rar

    在这个案例中,"面向对象银行取款机实例源码" 提供了一个具体的应用场景,帮助初学者理解和实践面向对象编程的核心概念。下面将详细阐述相关知识点。 1. **类与对象**:在Java中,类是创建对象的模板,描述了对象的...

    java银行账户管理

    在Java编程语言中,银行账户管理系统是一个典型的案例,用于学习面向对象编程、数据持久化以及基本的业务逻辑处理。这个简单的银行账户管理程序通常包括创建账户、存款、取款、查询余额、转账等功能。以下是对这些...

    75个Java实例 实例下载

    "75个Java实例"提供了一系列的代码示例,旨在帮助初学者和有经验的开发者更好地理解和掌握Java语言的核心概念及实际应用。这些实例涵盖了从基础语法到高级特性的各种主题,包括但不限于: 1. **基础语法**:Java的...

    java银行账户管理系统

    《Java银行账户管理系统详解》 Java银行账户管理系统是一款...综上,Java银行账户管理系统是一个综合性的软件工程实例,涵盖了从基础编程到高级应用的诸多Java知识点,对于学习和提升Java开发技能具有很高的实践价值。

    JAVA项目:银行业务调度系统视频教程.rar

    银行业务调度系统是Java技术应用的一个典型实例,它涉及到多个关键的技术点和业务流程。 1. **项目背景**:银行业务调度系统通常用于处理银行日常运营中的各种任务,如贷款审批、账户管理、交易处理等。这些任务...

    Java面向对象编程-ATm取款机系统

    例如,一个具体的银行卡就是“银行卡”类的一个实例,它有卡号、余额等属性,并能执行存款、取款等操作。 2. 封装: - 封装是OOP的三大特性之一,它隐藏了对象内部的实现细节,只对外提供公共接口。在ATM系统中,...

    银行账户管理系统 java课程设计 流程图

    【银行账户管理系统】是一个基于Java语言的课程设计项目,旨在帮助学生巩固和深化对Java基础知识的理解,特别是关于循环语句、选择语句的运用,以及面向对象编程和继承的概念。这个系统采用JDK作为开发环境,...

    面向对象银行管理系统JAVA代码.rar

    综上所述,这个面向对象银行管理系统是一个综合运用了Java OOP概念和设计模式的项目,涉及类的设计、对象间的交互以及银行业务逻辑的实现。开发者通过遵循良好的编程实践,构建了一个可扩展、易于维护的系统。

    Java面向对象高级编程

    Java 面向对象高级编程是 Java 编程语言中的一个重要概念,通过继承和方法覆盖创建子类,并能够创建异类集合并使用多态。本资源摘要信息将详细介绍 Java 面向对象高级编程的概念、继承、方法覆盖、抽象类和接口等...

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

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

    java 实现医院病人看病系统 (面向对象)

    总的来说,这个Java实现的医院病人看病系统是一个很好的面向对象编程实践案例,它展示了如何利用类和对象来组织和实现业务逻辑。通过这样的系统,我们可以学习到如何设计和实现具有实际意义的程序,同时理解和应用...

    Java数据结构与面向对象编程基础

    例如,设计和实现一个简单的银行系统,可以使用类来表示账户,利用接口实现不同类型的账户(储蓄账户、信用卡账户),通过继承实现账户的通用功能,以及利用数据结构如链表来管理账户列表。 在实际项目中,理解数据...

    软件工程面向对象银行管理系统报告

    本报告详细探讨了如何运用面向对象的软件工程方法来构建一个全面的银行管理系统。面向对象编程(Object-Oriented Programming, OOP)是一种流行的编程范式,它以对象为中心,通过封装、继承和多态等特性,使代码更加...

Global site tag (gtag.js) - Google Analytics