导航:首页 > 编程语言 > atm系统java

atm系统java

发布时间:2022-07-20 11:13:37

java项目编程----ATM系统

ATM系统势必要把,安全性放在第一位,那么用Java的多线程以及锁可以解决多用户操作统一账户的情况,关于每登录进来一个账户,也可以写一个事件监听,关于异常也就是你说的取款记得要用同步锁(synchronized) ,还有什么不明白的吗

❷ 就是用JAVA编写一个ATM的程序

你是做实习还是做真实项目,如果是真实项目,估计够呛,因为ATM这些要用嵌入式开发,Java需要环境,而且效率低,如果仅仅是做练习,你可以用JFrame来实现 或者swing,其实说白这些不过是一些框架类库,你安装了这些框架类库,然后用一个类去继承窗体类,其他的和一些窗体软件开发是一样的,用的是事件机制,说白了就是观察者设计模式。

❸ 如何用Java编写模拟ATM取款机的程序

import java.io.IOException;

/**
* ATM机类
*
* 查看余额
*
* 取款
*
* 存款
*
* 退出系统
*
*
*
*/

public class ATM {
static double yue = 1200.00;

public static void main(String[] arg) {
ATM localTest1 = new ATM();
localTest1.ATM_Operate();
}

/**
* ATM机的操作
*/
private void ATM_Operate() {
System.out.println("欢迎使用中国工商银行ATM取款机");
System.out.println("1、查看余额 2、取款");
System.out.println("3、存款 0、退出");
System.out.print("请输入您需要的服务:");
byte[] buffer = new byte[512];
try {
int count = System.in.read(buffer);// 返回实际读取的字节数
System.out.print("您输入的是:");
for (int i = 0; i < count; i++) {
System.out.print("" + (char) buffer[i]);
}
if ((char) buffer[0] == '1') {
// 查看余额
System.out.println("您的余额是:¥" + yue + "元");
System.out.println();
ATM_Operate();
} else if ((char) buffer[0] == '2') {
// 取款
withdrawal();
System.out.println();
ATM_Operate();
} else if ((char) buffer[0] == '3') {
// 存款
deposit();
System.out.println();
ATM_Operate();
} else if ((char) buffer[0] == '0') {
// 退出
System.out.println("您已经成功退出系统,谢谢你的使用");
System.exit(0);
} else {
System.out.println("输入不合法,请重新输入");
System.out.println();
ATM_Operate();
}

} catch (IOException e) {
e.printStackTrace();
}
}

/**
* 取款
*
* @throws IOException
*/
private void withdrawal() throws IOException {
byte[] buffer = new byte[512];

System.out.print("请输入您要取出的金额:¥");
int count2 = System.in.read(buffer);// 返回实际读取的字节数
System.out.print("您输入的金额是:");
for (int i = 0; i < count2 - 1; i++) {
System.out.print("" + (char) buffer[i]);
}
System.out.println();
// 字符0 ~ 9对应ASCII值48 ~ 57
boolean flag = false;
for (int i = 0; i < count2 - 1; i++) {
if ((char) buffer[i] > 47 && (char) buffer[i] < 58) {
if (i == count2 - 2) {
flag = true;
}
} else {
// 输入的字符不是数值
System.out.println("输入不合法,请重新输入");
withdrawal();
break;
}
}
System.out.println();
if (flag) {
System.out.print("您已成功取出¥:");
String num = "";
for (int i = 0; i < count2 - 1; i++) {
System.out.print("" + (char) buffer[i]);
num += (char) buffer[i];
}
yue -= Double.valueOf(num);
System.out.print(",现在余额¥:" + yue);

}
}

/**
* 存款
*
* @throws IOException
*/
private void deposit() throws IOException {
byte[] buffer = new byte[512];

System.out.print("请输入您要存入的金额:¥");
int count2 = System.in.read(buffer);// 返回实际读取的字节数
System.out.print("您输入的金额是:");
for (int i = 0; i < count2 - 1; i++) {
System.out.print("" + (char) buffer[i]);
}
System.out.println();
// 字符0 ~ 9对应ASCII值48 ~ 57
boolean flag = false;
for (int i = 0; i < count2 - 1; i++) {
if ((char) buffer[i] > 47 && (char) buffer[i] < 58) {
if (i == count2 - 2) {
flag = true;
}
} else {
// 输入的字符不是数值
System.out.println("输入不合法,请重新输入");
withdrawal();
break;
}
}
System.out.println();
if (flag) {
System.out.print("您已成功存入¥:");
String num = "";
for (int i = 0; i < count2 - 1; i++) {
System.out.print("" + (char) buffer[i]);
num += (char) buffer[i];
}
yue += Double.valueOf(num);
System.out.print(",现在余额¥:" + yue);

}
}
}

❹ 用java做ATM系统

在itjob时做过这项目可以将 账户封装成一个类User 其中包含基本属性 int id; String passWord; folat money; String name;
可以通过构造方法 创建多个 账户实例 将这些实例存放在一个 List<User> user = new arrayList();
通过用户输入 ID 找到对应的 user 验证其是否可以通过 最好将验证用户的方法写成一个方法
这样符合java 面向对象的思想 也去掉了许多重复的代码

❺ 怎么在java中的atm进行开户和销户

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LEN sizeof(struct Account)
#define RECORDCOUNT 5
#define MESSAGELENGTH 100
#define NAMELENGTH 100
#define VIEWCOUNT 5
#define DEFAULTBALANCE 0.00
#define SAVE 1
struct Account *head,*tail,*p; /*账户头部和尾部指针*/
struct Account
{
char name[NAMELENGTH]; /* 账户名称 */
float balance; /* 账户余额*/
char message[RECORDCOUNT][MESSAGELENGTH]; /* 交易记录 */
int maxMessageIndex;
struct Account *next; /* 指向下一账户 */
};

void freeMemory(); /*释放内存*/
void removeFirst(struct Account * account); /*移除第一个元素*/
void showMenu(); /*输出选择菜单*/
struct Account * findAccountByName(char name[]); /*通过账户名称找到对应的账户 */
void writeMessage(struct Account * account,char message[]); /* 写入交易记录 */
void init(); /* 创建链表,并返回表头指针 */
void openAccount(); /* 开户 */
void closeAccount(); /* 销户 */
void deposit(); /* 存款*/
void withdraw(); /* 取款 */
void transfer(); /* 转账 */
void print(); /*输出账户列表*/
void printMessage(); /*输出账户交易记录*/

int main()
{
init();
printf("欢迎使用ATM管理系统\n");
showMenu();
char choice;
fflush(stdin);
choice = getchar();
while(choice != '8')
{
switch(choice)
{
case '1':
openAccount();
showMenu();
fflush(stdin);
choice = getchar();
break;
case '2':
closeAccount();
showMenu();
fflush(stdin);
choice = getchar();
break;
case '3':
deposit();
showMenu();
fflush(stdin);
choice = getchar();
break;
case '4':
withdraw();
showMenu();
fflush(stdin);
choice = getchar();
break;
case '5':
transfer();
showMenu();
fflush(stdin);
choice = getchar();
break;
case '6':
print();
showMenu();
fflush(stdin);
choice = getchar();
break;
case '7':
printMessage();
showMenu();
fflush(stdin);
choice = getchar();
break;
default:
printf("无效菜单!\n");
showMenu();
fflush(stdin);
choice = getchar();
break;
}
}
freeMemory(); /*释放内存*/
return 0;
}

void showMenu()
{
printf("请选择 1.开户 2.销户 3.存款 4.取款 5.转账 6.查看所有账户 7. 最近五笔交易 8.退出\n");
}

//通过账户名称找到对应的账户
struct Account * findAccountByName(char name[])
{
if(strlen(name)>0)
{
p = head;
while(p != NULL)
{
if(strcmp(p->name,name)==0)
{
return p;
}
p = p->next;
}
}
return NULL;
}

//写入交易记录
void writeMessage(struct Account * account,char message[])
{
if(account->maxMessageIndex >= RECORDCOUNT)
{
removeFirst(account);
strcpy((account->message)[RECORDCOUNT-1],message);
account->maxMessageIndex = account->maxMessageIndex+1;
}
else
{
strcpy((account->message)[account->maxMessageIndex],message);
account->maxMessageIndex = account->maxMessageIndex+1;
}
}

void removeFirst(struct Account * account)
{
int i=0;
for(i=1; i<RECORDCOUNT; i++)
strcpy((account->message)[i-1],(account->message)[i]);
}

/* 初始化三个默认账户 */
void init()
{
p = (struct Account *)malloc(LEN); /* 创建第一个账户 */
p->balance=DEFAULTBALANCE;
p->next=NULL;
p->maxMessageIndex=0;
strcpy(p->name,"001");
head=p;
tail = p;

p = (struct Account *)malloc(LEN); /* 创建第二个账户 */
p->balance=DEFAULTBALANCE;
p->next=NULL;
p->maxMessageIndex=0;
strcpy(p->name,"002");
head->next = p;
tail = p;

p = (struct Account *)malloc(LEN); /* 创建第三个账户 */
p->balance=DEFAULTBALANCE;
p->next=NULL;
p->maxMessageIndex=0;
strcpy(p->name,"003");
tail->next = p;
tail = p;
}

//输出账户列表信息
void print()
{
int i;
p = head;
i = 1;
while(p != NULL)
{
printf("第%d个账户的数据 账户名称:%s 余额:%.2f\n",i++,p->name,p->balance);
p = p->next;
}
}
//释放内存
void freeMemory()
{
p = head;
while(p != NULL)
{
head = p;
free(head);
p = p->next;
}
}

//开户
void openAccount()
{
char name[NAMELENGTH];
printf("请输入新开立的账户名称 : ");
fflush(stdin);
gets(name);
if(strlen(name)>0)
{
p = (struct Account *)malloc(LEN); /* 创建一个新账户 */
p->balance=DEFAULTBALANCE;
p->next=NULL;
strcpy(p->name,name);
tail->next=p;
tail = p;
}
}
//销户
void closeAccount()
{
char name[NAMELENGTH];
printf("请输入要销户的账户名称 : ");
fflush(stdin);
gets(name);
if(strlen(name)>0)
{
struct Account *pre;
p = head;
pre=head;
int find=0;
while(p != NULL)
{
if(strcmp(p->name,name)==0)
{
if(head == p)
head=p->next;
else if(tail==p)
{
pre->next=NULL;
tail = pre;
}
else
{
pre->next = p->next;
}
find=1;
break;
}
pre = p;
p = p->next;
}
if(find==0)
printf("没有此账户,无法完成销户!\n");
}
}

//存款
void deposit()
{
char name[NAMELENGTH];
printf("请输入要存款的账户名称 :");
fflush(stdin);
gets(name);
p = findAccountByName(name);
if(p!=NULL)
{
float savemoney;
printf("请输入要存款的金额 : ");
scanf("%f",&savemoney);
while(savemoney<=0)
{
printf("存款额不能小于等于零,请重新输入! ");
scanf("%f",&savemoney);
}
p->balance = p->balance+savemoney; /*存入账户金额*/
char message[MESSAGELENGTH];
sprintf(message,"账户%s成功存入%.2f元!\n",name,savemoney);
writeMessage(p,message); /*写入交易记录*/
}
else
printf("没有此账户!\n");
}

//取款
void withdraw()
{
char name[NAMELENGTH];
printf("请输入要取款的账户名称 :");
fflush(stdin);
gets(name);
p = findAccountByName(name);
if(p!=NULL)
{
float savemoney;
printf("请输入要取款的金额 : ");
fflush(stdin);
scanf("%f",&savemoney);
while(savemoney<=0 || savemoney> p->balance)
{
printf("存款额不能小于等于零或者大于余额,请重新输入! ");
scanf("%f",&savemoney);
}
p->balance = p->balance-savemoney; /*存入账户金额*/
char message[MESSAGELENGTH];
sprintf(message,"账户%s成功取出%.2f元!\n",name,savemoney);
writeMessage(p,message); /*写入交易记录*/
}
else
printf("没有此账户!\n");
}

//转账
void transfer()
{
char outname[NAMELENGTH];
char inname[NAMELENGTH];
struct Account *outAccount;
struct Account *inAccount;
printf("请输入要转出的账户名称 :");
fflush(stdin);
gets(outname);
outAccount = findAccountByName(outname);
if(outAccount!=NULL)
{

printf("请输入要转入的账户名称 :");
fflush(stdin);
gets(inname);
inAccount = findAccountByName(inname);
if(inAccount != NULL)
{
float money;
printf("请输入要转账的金额 : ");
fflush(stdin);
scanf("%f",&money);
while(money<=0 || money> outAccount->balance)
{
printf("转账金额不能小于等于零或者大于转出账户余额,请重新输入! ");
scanf("%f",&money);
}
outAccount->balance = outAccount->balance-money; /*减少转出账户金额*/
inAccount->balance = inAccount->balance+money; /*增加转入账户金额*/
char outmessage[MESSAGELENGTH];
sprintf(outmessage,"账户%s成功转出%.2f元!\n",outname,money);
writeMessage(outAccount,outmessage); /*写入转出交易记录*/
char inmessage[MESSAGELENGTH];
sprintf(inmessage,"账户%s成功转入%.2f元!\n",inname,money);
writeMessage(inAccount,inmessage); /*写入转出交易记录*/
}
}
else
printf("没有此转出账户!\n");
}

//查看账户最近五笔交易历史
void printMessage()
{
char name[NAMELENGTH];
printf("请输入要查看最近五笔交易历史的账户名称 :");
fflush(stdin);
gets(name);
p = findAccountByName(name);
if(p!=NULL)
{
int i=0;
int end = (p->maxMessageIndex)>=VIEWCOUNT?VIEWCOUNT:(p->maxMessageIndex);
for(i=0; i<end; i++)
printf("%s",(p->message)[i]);
}
else
printf("没有此账户!\n");
}

❻ java如何用list map集合写ATM系统

你首先要了解什么是Map,可以理解为Map是一堆key和value的映射集合(或者说一堆键值对的集合)。 List list = new ArrayList(); Map map = new HashMap(); list.add("a"); list.add("c"); list.add("b"); for(int i =0;i<list.size();i++){ map.put(i, list.get(i));   } 然后你要用Map里的东西,可以使用map.get(依)这种形式获取,他和list.get(依); 相等都为“c”。 另外建议初始化Map和List的时候,定义好所存的数据类型。 List list = new ArrayList(); Map map = new HashMap()

❼ Java编程实现程序用于模拟ATM取款机。

package demo;

import java.util.Scanner;

public class Test3 {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
int cnt=3;
String username = null;
String password = null;
double money = 1000;
String targetName = "admin33";
double targetMoney = 1000;
while(true){

if(username!=null&&password!=null){

if("admin".equals(username) && "123".equals(password)){
System.out.println("欢迎光临");
while(true){
System.out.println("请选择您的操作 1 取钱 2 存钱 3 转账 4 查询 5 退出 ");
int n = scanner.nextInt();
if(n==1){//取钱
System.out.println("请输入金额");
int getter = scanner.nextInt();
if(getter>=0){
if(getter<=5000){
if(getter<=money){
money-=getter;
}else{
System.out.println("余额不足");
}
}else{
System.out.println("单笔只能取5000及以下");
}
}else{
System.out.println("银行不到给");
}
}else if(n==2){//存钱
System.out.println("请输入金额");
int save = scanner.nextInt();
if(save>=0){
money+=save;
}
}else if(n==3){//转账
System.out.println("请输入目标账户");
String target = scanner.next();
if(target.equals(targetName)){
System.out.println("请输入金额");
int getter = scanner.nextInt();
if(getter>=0){
if(getter<=5000){
if(getter<=money){
money-=getter;
targetMoney+=getter;
}else{
System.out.println("余额不足");
}
}else{
System.out.println("单笔只能取5000及以下");
}
}else{
System.out.println("银行不到给");
}
}
}else if(n==4){//查询
System.out.println(money);
}else if(n==5){//退出
System.exit(0);
}else{
System.out.println("没有该项服务");
}
}
}else{
cnt--;
System.out.println("输入错误,您还有"+cnt+"次机会");
username=null;
password=null;
if(cnt<=0){
System.out.println("对不起,您的账号被冻结,请到最近的营业厅解除冻结");
System.exit(0);
}
}
}else{
System.out.println("请输入您的账号");
username = scanner.next();
System.out.println("请输入您的密码");
password = scanner.next();
}
}
}
}

❽ 使用Java语言中(类和对象)编写: ATM自动存取款机的程序

很简单的例子,我把代码贴出来吧
import java.util.Scanner;
public class ATM {
/**
* @param args
*/
public static void main(String[] args) {
Scanner in = null;
int result;
double drawMoney;
double depositMoney;
Account account = new Account();
while (true) {
System.out.println("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆(ABC)中国农业银行ATM自动存取款机☆☆☆☆☆☆☆☆☆☆☆☆☆");
System.out.println("\n\t\t\t\t1.存款业务");
System.out.println("\n\t\t\t\t2.取款业务");
System.out.println("\n\t\t\t\t3.查询余额");
System.out.println("\n\t\t\t\t4.退出ATM系统");
System.out.println("\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆中国农业银行欢迎您的使用☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
in = new Scanner(System.in);
switch (in.nextInt()) {
case 1:
System.out.println("请输入您的存款数额!");
depositMoney = in.nextDouble();
if(depositMoney < 0)
System.out.println("您的输入无效,请重新输入!");
result = account.deposit(depositMoney);
if(result == 0){
System.out.println("存款业务完成,是否显示余额?Y/N");
if("Y".equalsIgnoreCase(in.next())){
System.out.println("您当前的余额为:"+account.checkCurrent());
}else {
break;
}
}else {
System.out.println("无法完成交易!");
break;
}
break;
case 2:
System.out.println("请输入您的取款数额!");
drawMoney = in.nextDouble();
if (drawMoney < 0) {
System.out.println("您的输入无效,请重新输入!");
}
result = account.withDraw(drawMoney);
if (result == 0) {
System.out.println("存款业务完成,是否显示余额?Y/N");
if("Y".equalsIgnoreCase(in.next())){
System.out.println("您当前的余额为:"+account.checkCurrent());
}else {
break;
}
} else {
System.out.println("无法完成交易!");
break;
}
case 3:
System.out.println("您当前的余额为:"+account.checkCurrent());
break;
case 4:
break;
default:
break;
}
}
}
}

public class Account {
private double currentMoney;//当前余额
public double getCurrentMoney() {
return currentMoney;
}
public void setCurrentMoney(double currentMoney) {
if (currentMoney > 0) {
this.currentMoney = currentMoney;
}
}
/**
* 取款业务
* @param drawMoney
* @return 0代表成功,1代表失败
*/
public int withDraw(double drawMoney) {
if (currentMoney > 0 && drawMoney <= currentMoney) {
currentMoney -= drawMoney;
} else {
System.out.println("您的余额已不足!");
return 1;
}
return 0;
}
/**
* 存款业务
* @param depositMoney
* @return 0代表成功,1代表失败
*/
public int deposit(double depositMoney) {
if (depositMoney > 0) {
currentMoney += depositMoney;
return 0;
}else {
System.out.println("您提交的存款为负数,无法完成存款交易");
return -1;
}
}
/**
* 查询余额业务
* @return
*/
public double checkCurrent() {
return currentMoney;
}
}

❾ ATM取款机系统用JAVA怎么做/

这里有个模拟
用户:blucastle ,密码: 123

import java.util.Scanner;

public class ATM1 {
Scanner sc = new Scanner(System.in);
private String name = "blucastle";

private double password = 123;

private double money = 500;

public void aloha(){
System.out.println("***********************");
System.out.println("* *");
System.out.println("* 欢迎使用ATM *");
System.out.println("* *");
System.out.println("* 制作人:blucastle*");
System.out.println("* *");
System.out.println("* *");
System.out.println("************************");
System.out.println("请输入用户名:");
String s = sc.next();
if(s.equals("blucastle")) {
System.out.println("请输入密码:");
int ss = sc.nextInt();
if(ss == 123) {
land();
}else{
System.out.println("密码错误,系统退出");
System.exit(0);
}
}else{
System.out.println("用户名错误,系统退出");
System.exit(0);
}

}
//登陆页面
public void land(){

System.out.println("请选择操作界面:1取款,2存款,3查询,4转账,5退出");
int a = sc.nextInt();// 请加入此句
switch(a){
case 1 : // 去掉‘’ 因为a 为int型。
get();
break;
case 2 :
set();
break;
case 3 :
query();
break;
case 4 :
divert();
break;
case 5 :
SetOut();
break;
}
}

//取款
public void get(){
System.out.println("请输入取款金额:");
int a = sc.nextInt();
if(a>money){
System.out.println("余额不足!");
}else{
money-=a;
System.out.println("当前余额为:"+money);
land();
}

}
//存款
public void set(){
System.out.println("请输入存款金额:");
int a = sc.nextInt();
money+=a;
System.out.println("当前余额为:"+money);
land();

}
//查询
public void query(){
System.out.println("当前余额为:"+money);
land();

}
//转账
public void divert(){
System.out.println("该功能站未开放!");
land();
}
//退出
public void SetOut(){
System.exit(0);
}

public static void main(String[] args) {
ATM1 atm = new ATM1();
atm.aloha();

}

}

❿ JAVA 模拟ATM柜员机模拟程序

/**
要求:使用字符用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:
1、查询余额:初始余额为10000元
2、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
3、ATM存款:不能出现负存款。
4、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
(卡号密码余额放到文件中)
*/
publicclassTest{
privatestaticintaccount;
privatestaticintpassword;
privatestaticintmoney;
privatestaticbooleanisLogin;
static{
account=123456;
password=123456;
money=10000;
isLogin=false;
}
//存款
publicvoidcun(intcunKuan){
if(cunKuan>=0){
this.money+=cunKuan;
}else{
System.out.println("存款不能为负!");
}
}
//取款
publicvoidqu(intquKuan){
if(this.money-quKuan<0){
System.out.println("余额不足!");
return;
}

if(isValid(quKuan)){
this.money-=quKuan;
}else{
System.out.println("取款不能为负,且应为100的倍数!");
}
}
//判断是否为有效的金额
privatebooleanisValid(intmoney){
if(money>=0&&money%100==0){
returntrue;
}
returnfalse;
}

//登陆
publicvoidlogin(){
System.out.println("请输入账号和密码【格式为:账号/密码】");
Stringlogin=newScanner(System.in).next();
if(login.equalsIgnoreCase("123456/123456")){
this.isLogin=true;
}else{
System.out.println("账号或者密码错误,请重新输入!");
login();
}
}

//主菜单
publicvoidshow(){
System.out.println("[1]存款");
System.out.println("[2]取款");
System.out.println("[3]退出");
System.out.println("请输入:");
intkey=newScanner(System.in).nextInt();
switch(key){
case1:
cun(newScanner(System.in).nextInt());
break;
case2:
qu(newScanner(System.in).nextInt());
break;
case3:
System.exit(0);
default:
break;
}
}
publicstaticvoidmain(String[]args){
Testt=newTest();
t.login();
if(t.isLogin){
for(;;){
t.show();
System.out.println("您当前的余额为:"+t.money);
}
}

}
}

阅读全文

与atm系统java相关的资料

热点内容
战双程序员 浏览:479
him触摸编程软件 浏览:929
植物大战僵尸存档怎么转移安卓 浏览:852
java栈的元素 浏览:737
程序员与篮球事件 浏览:675
app反编译不完整 浏览:788
电脑上的文件夹怎么调整 浏览:7
服务器无响应是什么原因呀 浏览:984
wd文档里的app怎么制作 浏览:513
电脑里的文件夹没有了一般能恢复吗 浏览:418
哪里有配加密钥匙的 浏览:210
服务器开不了机怎么把数据弄出来 浏览:958
gif动态图片怎么压缩 浏览:521
黑猴子棒球压缩文件解压密码 浏览:631
如何让app适应不同的手机屏幕大小 浏览:10
苹果手机如何给安卓手机分享软件 浏览:761
苹果电脑怎么运行腾讯云服务器 浏览:59
明日之后沙石堡命令助手 浏览:261
蛋糕店用什么样的app 浏览:877
长安银行信用卡app怎么取现 浏览:635