import java.io.*;
//银行卡类
class BankCard
{
//属性和行为:
//属性 即本类有什么?
//卡号
private String id;
//密码
private String pwd;
//真实姓名
private String name;
//钱数
private float money;
BankCard(String id,String pwd,String name,float money)
{
this.id = id;
this.pwd = pwd;
this.name = name;
this.money = money;
}
//功能
//获取卡号
public String getId()
{
return id;
}
//获取密码
public String getPwd()
{
return pwd;
}
//设置密码
public void setPwd(String newPwd)
{
pwd = newPwd;
}
//获取真实姓名
public String getName()
{
return name;
}
//获取钱数
public float getMoney()
{
return money;
}
//设置钱数
public void setMoney(float myMoney)
{
money += myMoney;
}
public String toString()
{
return "帐号:"+id+" 户主:"+name+" 余额:"+money;
}
};
//ATM机类
class ATM
{
//数据库链接
static DataBase db = new DataBase();
//键盘读写流
public BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//属性:
//插卡口
private BankCard bc;
//功能
//插卡
public void insertCard(BankCard bc) throws Exception
{
this.bc = bc;
welcome();
}
//欢迎界面
public void welcome() throws Exception
{
String s = "******************************************";
System.out.println(s+"\n\t欢迎使用IBM-ATM模拟系统\n"+s);
login();
}
//登录界面
public void login() throws Exception
{
String pwd = null;
int count = 0;
do
{
//验证用户密码
System.out.println("请输入您的密码:");
pwd = br.readLine();
if(pwd.equals(bc.getPwd()))
{
//验证成功转至操作界面
oparator();
break;
}
else
{
if(count!=2)
{
System.out.println("您输入的密码不正确!请重新输入!");
}
count++;
}
}
while (count<3);
if(count==3)
{
lock();
}
else
{
oparator();
}
}
//操作界面
public void oparator() throws Exception
{
System.out.println("请选择操作类型:(其他键退出)\n"
+"1.>取钱\n"
+"2.>存钱\n"
+"3.>查询\n"
+"4.>修改密码\n"
+"5.>转账\n"
+"6.>退卡");
String select = br.readLine();
char type;
if(!select.equals(""))
{
type = select.charAt(0);
}
else
{
type = '\0';
}
switch(type)
{
case '1':
{
blance();
oparator();
break;
}
case '2':
{
setMoney();
oparator();
break;
}
case '3':
{
query();
oparator();
break;
}
case '4':
{
setPwd();
oparator();
break;
}
case '5':
{
turn();
oparator();
break;
}
case '6':
{
exit();
break;
}
default:
{
exit();
}
}
}
//取钱
public void blance() throws Exception
{
System.out.println("请输入取钱金额:");
int money = Integer.parseInt(br.readLine());
if(money<bc.getMoney())
{
bc.setMoney(-money);
System.out.println("请收好您的钱!");
query();
}
else
{
System.out.println("余额不足!");
}
}
//存钱
public void setMoney() throws Exception
{
System.out.println("请输入存钱金额:");
float money = Float.parseFloat(br.readLine());
if(money>0)
{
bc.setMoney(money);
System.out.println("您的钱已存入!");
query();
}
else
{
System.out.println("请正确输入您要存的钱数!");
}
}
//查询
public void query()
{
System.out.println("用户姓名:"+bc.getName());
System.out.println("余额:"+bc.getMoney());
}
//修改密码
public void setPwd() throws Exception
{
String pwd = null;
int count = 0;
do
{
System.out.println("请输入旧密码:");
pwd = br.readLine();
if(pwd.equals(bc.getPwd()))
{
do
{
System.out.println("请输入新密码:");
String pwd1 = br.readLine();
System.out.println("请再次输入新密码:");
String pwd2 = br.readLine();
if(pwd1.equals(pwd2))
{
bc.setPwd(pwd2);
System.out.println("密码修改成功!请使用新密码!");
oparator();
}
else
{
System.out.println("两次密码输入不一致,请重新输入!");
}
}
while (true);
}
else
{
System.out.println("密码验证出错!");
count++;
}
}
while (count<3);
lock();
}
//转账
public void turn() throws Exception
{
System.out.println("请输入转入帐号:");
String id = br.readLine();
if(!id.equals(bc.getId()))
{
BankCard turn = db.query(id);
if(turn!=null)
{
System.out.println("转入帐号:"+turn.getId());
System.out.println("户主:"+turn.getName());
System.out.println("确认转账?y-确定 其他键-返回操作界面");
String ok = br.readLine();
if(ok.equals("y"))
{
System.out.println("请输入转账金额:");
float money = Float.parseFloat(br.readLine());
if(money<bc.getMoney())
{
bc.setMoney(-money);
turn.setMoney(money);
System.out.println("转账成功!");
System.out.println(db);
}
else
{
System.out.println("余额不足!不能转账!");
}
}
}
else
{
System.out.println("转入帐号不存在!");
}
}
else
{
System.out.println("不能为自己转账!");
}
}
//退卡
public void exit()
{
System.out.println("谢谢使用!再会!");
System.exit(0);
}
//吞卡
public void lock()
{
System.out.println("您操作失误次数过多,卡片暂时由我们保管!请即时和我们联系!");
System.exit(1);
}
};
class ATMTest
{
public static void main(String[] args) throws Exception
{
BankCard bc1 = new BankCard("001","123456","李四",100000);
BankCard bc2 = new BankCard("002","123456","王五",100000);
BankCard bc3 = new BankCard("003","123456","麻子",100000);
BankCard bc4 = new BankCard("004","123456","李毅",100000);
BankCard bc5 = new BankCard("005","123456","王三",100000);
BankCard bc6 = new BankCard("006","123456","杨怡",100000);
BankCard bc7 = new BankCard("008","123456","刘华",100000);
BankCard bc8 = new BankCard("010","123456","何新",100000);
BankCard bc9 = new BankCard("013","123456","无名",100000);
BankCard bc0 = new BankCard("007","123456","邦德",100000);
DataBase db = new DataBase();
db.add(bc0);
db.add(bc1);
db.add(bc2);
db.add(bc3);
db.add(bc4);
db.add(bc5);
db.add(bc6);
db.add(bc7);
db.add(bc8);
db.add(bc9);
ATM atm = new ATM();
atm.insertCard(bc0);
}
};
class DataBase
{
private static BankCard[] cards = new BankCard[10];
static int count;
public void add(BankCard bc)
{
cards[count] = bc;
count++;
}
public BankCard query(String id)
{
BankCard bc = null;
for(int i=0;i<cards.length;i++)
{
if(id.equals(cards[i].getId()))
{
bc = cards[i];
break;
}
}
return bc;
}
public String toString()
{
String message = "";
for(int i=0;i<cards.length;i++)
{
message += cards[i]+"\n";
}
return message;
}
};
分享到:
相关推荐
C语言模拟ATM机存取款管理系统设计,内含运行程序,流程图源文件、说明书、源代码 模拟ATM机存取款管理系统的设计,并实现以下功能: (1)显示界面和用户交互过程:界面包括输入卡号和密码、查询银行卡余额、取款、...
- **ATM** 类:模拟ATM机,包含操作菜单、用户交互等方法,可能还需要与BankAccount类进行交互,调用其提供的服务。 2. 用户交互: - 使用C++的`cin`和`cout`进行标准输入输出,实现用户通过键盘输入指令,ATM机...
《C++模拟ATM机存取款管理系统设计》 该设计是基于C++编程语言,旨在构建一个模拟ATM机的存取款管理系统。这个系统主要用于理解和实践面向对象的编程概念,同时也涉及到数据结构和软件工程的基本原则。下面将详细...
【模拟ATM机】是一个基于多线程技术的项目,旨在实现类似真实自动取款机(ATM)的各种功能,如存款、取款、查询余额等。在这个项目中,我们利用了多线程来模拟并发操作,使得多个用户能够同时进行交易,提高系统的...
ATM机系统是一种常见的金融自助服务设备,模拟ATM机系统的开发可以帮助我们深入理解银行交易流程、网络通信以及多线程编程。在这个C++实现的项目中,我们重点关注以下几个核心知识点: 1. **C++ 编程语言**:C++是...
java实现“模拟ATM机存取款管理系统”课程设计 模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余额、取款、存款、修改密码、退出系统等功能。 功能要求: (1)卡号、密码输入最多三次,否则...
在这个模拟ATM机的操作控制台应用程序中,我们将深入探讨如何用编程实现这些功能。 首先,这个控制台应用程序的核心在于用户交互设计。在控制台环境中,用户通过输入命令来执行操作,比如“存款”、“取款”或...
2. **用户界面**:模拟ATM机需要一个友好的用户界面,可以使用C++标准库中的`iostream`进行控制台输入输出,或者利用更高级的GUI库如Qt或wxWidgets创建图形界面。用户通过输入命令或点击按钮与ATM机进行交互。 3. *...
C++模拟ATM机存取款管理系统设计 本文档介绍了使用C++语言设计的ATM机存取款管理系统的实现方案。该系统仿真了真实的ATM机的功能,包括卡号和密码输入、取款、查询余额、更改密码、锁卡和退卡等功能。 一、系统...
在这个模拟ATM机中,涵盖了十五种不同的应用功能,这些功能包括但不限于存款、取款、转账以及修改个人信息等,这些都是实际ATM操作中的基本要素。 首先,存款和取款功能是ATM机的核心。存款功能需要处理用户存入的...
在IT领域,模拟ATM机存取款是一个常见的编程练习,它可以帮助开发者理解银行系统的基本运作,以及如何通过文件操作来持久化数据。这个项目主要涉及以下几个知识点: 1. **文件操作**:在这个项目中,文件被用作存储...
ATM机系统是银行服务的重要组成部分,而C语言模拟ATM机系统则是一种常见的编程练习,旨在帮助开发者理解和实现基本的金融交易逻辑。这个“ATM.rar”压缩包包含了一个用C语言编写的ATM模拟机项目,让我们来详细探讨...
通过模拟ATM机,我们可以学习到如何设计一个具有实际功能的软件系统,这涵盖了面向对象编程、数据存储、用户交互等多个方面。 首先,我们需要定义ATM机系统的核心类,如`Account`(账户)、`Bank`(银行)和`ATM`。...
基于C++的ATM机模拟程序系统源码。基于C++基于C++的ATM机模拟程序系统源码。基于C++的ATM机模拟程序系统源码。基于C++的ATM机模拟程序系统源码。基于C++的ATM机模拟程序系统源码。基于C++的ATM机模拟程序系统源码。...
在这个名为"ATM.zip"的压缩包中,包含了一个名为"ATM.txt"的文本文件,我们可以推测这可能是用纯文本形式记录的Java代码,用于模拟ATM机的功能。 在设计一个ATM机模拟程序时,通常会涉及到以下几个关键知识点: 1....
用JAVA编写的模拟ATM取款,存款流程
本文通过对ATM机的模拟项目,使用了access数据库连接,设置背景图片,等附加功能。项目中主要实现的是查询余额,存钱,取钱,目前没有写出转账功能。具体代码描述请点击...
是银行的取款存款的界面,用turboc编写的 可以通过 界面清楚
《基于JAVA和SQL的模拟ATM机取款系统详解》 在信息技术日益发达的今天,自动取款机(ATM)已经成为人们日常生活中不可或缺的一部分。为了让学生更好地理解银行系统的运作原理,以及提升软件开发能力,许多教育机构...
java语言编写的简单模拟ATM机功能案例,有美观的UI界面,和比较完善的功能模块,业务分层,编码格式规范。可供初学者参考。 另在db文件夹中附带两种数据库(mysql、sqlserver)表结构。 项目目录结构: .classpath ....