A. 如何用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);
}
}
}
B. JAVA模擬ATM機
import java.util.*;
public class ATM {
static int people=123456;
static int mima=123456;
static int yue=10000;
static Scanner in=null;
public ATM(int people,int mima){
this.mima=mima;
}
public static void main(String[] args) {
chongxindenglu();
int count=1;
while(count!=0){
System.out.println("1、查詢余額");
System.out.println("2、取款");
System.out.println("3、存款");
System.out.println("4、修改密碼");
System.out.println("5、重新登錄");
count=in.nextInt();
switch(count){
case 1: System.out.println(10000); System.out.println(); break;
case 2: quKuan(); break;
case 3: cunKuan(); break;
case 4: xiugai(); break;
case 5: chongxindenglu();
}
}
}
public static void quKuan(){
System.out.println("請輸入取款金額:");
int qukuanjine=in.nextInt();
if(qukuanjine>5000){
System.out.println("取款金額不能大於5000"+"\n");
}else{
if(qukuanjine%100!=0){
System.out.println("取款金額必須為100的整逗凳數倍"+"\n");
}else{
yue=yue-qukuanjine;
System.out.println("您取出了"+qukuanjine+"元虧指指,您現在的余額為:"+yue+"元"+"\n");
}
}
}
public static void cunKuan(){
System.out.println("請輸入存款金額");
int cunkuanjine=in.nextInt();
if(cunkuanjine<0){
System.out.println("存款金額不能小於0");
}else{
yue=yue+cunkuanjine;
System.out.println("您已成功存入:"+cunkuanjine+"元,您現在總余額為:"+yue+"元"+"\n");
}
}
public static void xiugai(){
System.out.println("請輸入您的密碼:");
int mima1=in.nextInt();
if(mima1==mima){
System.out.println("請輸入新密碼:");
mima=in.nextInt();
System.out.println("您的銷配密碼已修改為:"+mima+"\n");
}else{
System.out.println("密碼輸入錯誤:"+"\n");
}
}
public static void chongxindenglu(){
in=new Scanner(System.in);
System.out.println("請輸入登錄帳號:");
int denglupeople=in.nextInt();
System.out.println("請輸入登錄密碼:");
int denglumima=in.nextInt();
if(denglupeople==people && denglumima==mima)
System.out.println("帳號登錄成功"+"\n");
else
System.out.println("密碼輸入錯誤,登錄失敗"+"\n");
}
}
C. 一個用java模擬ATM機的代碼且資料庫為mysql,
最後一列為備注 1、 管理員表(tb_admin) 欄位 類型 約束 備注 aId number(6) 主鍵 --管理員編號 aName varchar2(10) 唯一、非空 --管理員登陸名 aPassword varchar2(16) 非空 --管理員登陸密碼 aLastDate date 非空 --上次登陸時間 aNowDate date 非空 --本次登陸時間 2、 銀行卡登陸表(tb_login) 欄位 類型 約束 備注 lId number(8) 主鍵 --登錄ID lCardNumber varchar2(19) 引用銀行卡信息表 卡號 lPassword number(6) 非空 銀行卡密碼 bIsLock char(1) 默認1 是否被鎖,0表示被鎖,1表示開啟 lTime number(10) 初始為0 登陸次數 aLastDate date 非空 上次登陸時間 aNowDate date 非空 本次登陸時間 3、 客戶詳細資料表(tb_userInfo) 欄位 類型 約束 備注 usId number(8) 主鍵 客戶ID usName varchar2(10) 非空 客戶姓名 usIDNumber varchar2(18) 非空 客戶身份證號碼 usSex char(1) 默認0 客戶性別,0表示男,1表示女 usTel varchar2(11) 非空 客戶電話 usAddress varchar2(50) 非空 客戶地址 4、 銀行支行表(tb_Branch) 欄位 類型 約束 備注 bId number(3) 主鍵 支行ID bName varchar2(20) 唯一、非空 支行名 bAddress varchar2(100) 非空 支行地址 5、 銀行卡信息表(tb_CardInfo) 欄位 類型 約束 備注 bCardID number(19) 主鍵 卡號 bBalance number(8,2) 默認0.00 余額 bUserId number(8) 引用客戶詳細資料表 卡對應用戶ID bBranchID number(4) 引用支行表 支行ID bDate date 默認系統時間 開戶時間 6、 銀行卡交易類型表(tb_TransType) 欄位 類型 約束 備注 tId number(2) 主鍵 類型ID tType nvarchar2(6) 唯一 類型(轉賬、存款、取出等) 7、 銀行卡個人賬戶存、取款記錄表(tb_ Pacount) 欄位 類型 約束 備注 tId number(10) 主鍵 交易記錄流水號 tType number(2) 引用交易類型表 交易類型ID tCardID number(19) 引用銀行卡信息表 交易卡號 tamount number(10) 非空 交易金額 tDate date 非空 交易時間 8、 銀行卡轉賬等交易記錄表(tb_TransInfo) 欄位 類型 約束 備注 tId number(10) 主鍵 交易記錄流水號 tType number(2) 引用交易類型表 交易類型ID tCardIDout number(19) 引用銀行卡信息表 交易金額轉出卡號 tCardIDIn number(19) 引用銀行卡信息表 交易金額轉入卡號 tamount number(10) 非空 交易金額 tDate date 非空 交易時間
D. 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);
}
}
}
}
E. 用java編寫的ATM機源代碼
/** * @author admin * 該程序的功能為實現模擬銀行ATM自動取款機提款,查詢等功能. */ import Java.io.*; /*該類為實現客戶信息及部分功能*/ class Account { private String code =null; //信用卡號 private String name =null; //客戶姓名 private String password=null; //客戶密碼 private double money =0.0; //卡里金額 public Account(String code,String name,String password,double money) { this.code=code; this.name=name; this.password=password; this.money=money; } protected String get_Code() { return code; } protected String get_Name() { return name; } protected String get_Password() { return password; } public double get_Money() { return money; } /*得到剩餘的錢的數目*/ protected void set_Balance(double mon) { money -= mon; } } /**********實現具體取款機功能*********/ class ATM { Account act; // private String name; // private String pwd; public ATM() { act=new Account("000000","Devil","123456",50000); } /***********歡迎界面***********/ protected void Welcome() { String str="---------------------------------"; System.out.print(str "\n" "歡迎使用Angel模擬自動取款機程序.\n" str "\n"); System.out.print(" 1.>取款." "\n" " 2.>查詢信息." "\n" " 3.>密碼設置." "\n" " 4.>退出系統." "\n"); } /**********登陸系統**********/ protected void Load_Sys() throws Exception { String card,pwd; int counter=0; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); do { System.out.println("請輸入您的信用卡號:"); card=br.readLine(); System.out.println("請輸入您的密碼:"); pwd=br.readLine(); if(!isRight(card,pwd)) { System.out.println("您的卡號或密碼輸入有誤."); counter ; } else SysOpter(); }while(counter<3); Lock_Sys(); } 回復獲取全部
F. 求高手用JAVA編寫一個模擬ATM機取款業務需求如下:
樓主您好,編碼如下,直接運行即可:
import java.util.Scanner;
public class AtmGetMoney {
public static void main(String[] args) {
String password = "111111";
int count = 0;
int a = 0;
while(count<3){
System.out.println("請輸入銀行卡密碼: ");
Scanner scan = new Scanner(System.in);
String passwd = scan.nextLine();
while(passwd.equals(password)){
System.out.println("請輸入取款金額: ");
int amount = scan.nextInt();
if(amount%100 == 0 && amount <= 1000){
System.out.println("您的取款金額為: "+amount);
System.out.println("交易完成,請讀卡!");
a = a + 1;
break;
}
else {
System.out.println("只能提取100元紙幣,要求最低0,最高1000!");
continue;
}
}
if (a == 1){
break;
}
else if (count < 2) {
System.out.println("銀行卡密碼錯誤");
count = count + 1;
continue;
}
else {
System.out.println("密碼錯誤請讀卡");
break;
}
}
}
}
G. 用java編譯ATM櫃員機模擬程序
#include<iostream.h>
class consumer;
class ATM
// ATM取款機
{
public:
ATM(consumer& cn):cnsm(cn)
{
}
void welcome();
// 登陸界面
bool check_passwd(char n[],char pwd[]);
// 核對密碼
void change_passwd();
// 修改密碼
void fetchmoney();
// 取款
void information();
// 查詢信息
void exitATM();
// 退出系統
void functionshow();
// 功能界面
void lock();
// 鎖機
private:
int times;
// 記錄密碼輸入次數
consumer& cnsm;
};
class consumer
// 用戶
{
public:
friend class ATM;
consumer(char Name[],char Num[],
float Money,char Password[]);
protected:
char* get_name();
// 取得姓名
char* get_num();
// 取得卡號
char* get_passwd();
// 取得密碼
float get_money();
// 取得余額
void set_passwd(char pwd[]);
// 設置密碼
void set_money(float m);
// 取錢
private:
char passwd[8];
// 用戶密碼
char name[20];
// 用戶姓名
char num[20];
float money;
};#include"function.h"
#include<string.h>
consumer::consumer(char Name[],
char Num[],float Money,char Password[])
{
strcpy(name,Name);
strcpy(num,Num);
money=Money;
strcpy(passwd,Password);
}
float consumer::get_money()
{
return money;
}
char* consumer::get_name()
{
return name;
}
char* consumer::get_num()
{
return num;
}
char* consumer::get_passwd()
{
return passwd;
}
void consumer::set_money(float m)
{
money-=m;
}
void consumer::set_passwd(char pwd[])
{
strcpy(passwd,pwd);
}#include "function.h"
#include <string.h>
#include<stdlib.h>
void ATM::welcome()
{
times=0;
cout<<"$ 歡迎使用若雪銀行ATM自動取款機!~! "<<endl;
char pwd[8],num[20],ch;
int i=0;
do
{
i=0;
cout<<endl<<"請輸入卡號:";
do
{
cin.get(ch);
num[i++]=ch;
}while(ch!='\n');
num[i-1]='\0';
i=0;
cout<<"請輸入密碼:";
do
{
cin.get(ch);
pwd[i++]=ch;
}while(ch!='\n');
pwd[i-1]='\0';
if(!check_passwd(num,pwd))
{
cout<<"你輸入的卡號或密碼有誤, 請重新輸入"<<endl;
times++;
}
else
{
functionshow();
}
}while(times<3);
lock();
}
bool ATM::check_passwd(char num[],
char pwd[])
{
if(strcmp(num,cnsm.get_num())==0&&strcmp
(pwd,cnsm.get_passwd())==0)
return true;
else
return false;
}
void ATM::functionshow()
{
int n;
do
{
cout<<endl<<"請你輸入相應的操作序號進行操作: "<<endl;
cout<<"1) 修改密碼 "<<endl
<<"2) 取款 "<<endl
<<"3) 查詢余額 "<<endl
<<"4) 退出系統 "<<endl;
cout<<"$ >\\";
cin>>n;
while(n<1||n>4)
{
cout<<"請輸入正確的操作序號!"<<endl;
cout<<"$ >\\";
cin>>n;
}
switch(n)
{
case 1: change_passwd();
break;
case 2: fetchmoney();
break;
case 3: information();
break;
case 4: exitATM();
break;
}
}while(true);
}
void ATM::change_passwd()
{
char pwd[8],repwd[8];
times=0;
do
{
cout<<endl<<"請輸入舊密碼:";
cin>>pwd;
if(!check_passwd(cnsm.get_num(),pwd))
times++;
else
break;
}while(times<3);
if(times==3)
lock();
int t=0;
do
{
cout<<"請輸入新密碼:";
cin>>pwd;
cout<<"請再輸入一次新密碼:";
cin>>repwd;
if((t=strcmp(pwd,repwd))!=0)
cout<<"你輸入的兩次密碼不一樣, 請重新輸入!"<<endl;
}while(t!=0);
cnsm.set_passwd(pwd);
cout<<"密碼修改成功,請牢記!"<<endl;
}
void ATM::fetchmoney()
{
float m;
char ch;
do
{
cout<<endl<<"你要取多少錢:" <<"\n$>\\"<<endl ;
cin>>m;
while(m<=0)
{
cout<<"請輸入正確的數字!"<<endl;
cout<<"$ >\\ ";
cin>>m;
}
if(cnsm.get_money()-m<0)
{
cout<<"對不起,你的余額不足!"
<<endl;
}
else
{
cout<<endl<<"操作成功,請收好錢!" <<endl;
cnsm.set_money(m);
}
cout<<"是否要繼續該項操作:(Y/N) " <<endl;
cout<<"$ >\\ ";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
{
cout<<"$ >\\";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
void ATM::information()
{
cout<<"**********************************"<<endl;
cout<<"*"<<endl;
cout<<"* 用戶姓名:"<<cnsm.get_name()<<endl;
cout<<"* 卡號: "<<cnsm.get_num()<<endl;
cout<<"* 余額: "<<cnsm.get_money()<<endl;
cout<<"**********************************"<<endl;
}
void ATM::lock()
{
cout<<endl<<"對不起,由於你的操作有誤, 你的卡已經被沒收! "<<endl;
exit(1);
}
void ATM::exitATM()
{
cout<<endl<<"感謝你對本銀行的支持, 歡迎下次光臨!"<<endl;
cout<<"請取卡……"<<endl;
exit(0);
}#include<iostream.h>
#include"function.h"
void main()
{
consumer c1("jim","12345",5200.3f,"123"); // 先構造一個用戶
ATM atm(c1);
atm.welcome();
}用C++語言也行的!
H. 用java編寫多線程銀行ATM 模擬程序
先構建一個客戶端,再構建一個伺服器端,其實做一個簡單的界面,建立一個資料庫,調用SQl 語句,,實現單機,模擬多線程的就可以了,伺服器部分不做也可以模擬出來。。
PS:這不會是程序專題訓練一吧。。。