atm設計java
『壹』 如何用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機。其中資料庫怎麼設計(詳細的資料庫設計)。。。。知道的告訴我一下!謝謝拉
最後一列為備注
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 非空 交易時間
『叄』 用java做一個簡易的ATM機具體流程在下面
代碼如下
packageBaiD;
importjava.util.Scanner;
publicclassATM{
/*1提示請輸入密碼然後直接進入下一步。密碼6位限制(限制方法用「最小大於100000最大小於999999」這樣限制)
2.提示密碼正確還是錯誤密碼直接弄成「123456」錯誤返回上一步循環方法用for循環。
3.密碼輸入正確後進入下一步提示5個選項(1.余額查詢「基礎10000」2.取款3存款4.退出)
4.進行取款或者存款之後要回到第三步重新選擇(余額和取款存款相關聯)
備註:用鍵盤輸入的方法用scanner*/
privatestaticintmoney=10000;//全局變數余額默認10000
publicstaticvoidmain(Stringargs[])
{
for(;;){//for循環,有意思嗎?
System.out.println("請輸入密碼:");
Scannerinput=newScanner(System.in);
intpw=input.nextInt();
if(Checkpw(pw)){
System.out.println("密碼正確。");
Next();
}
elseSystem.out.println("密碼錯誤!");
}
}
publicstaticbooleanCheckpw(intpw)
{
if(pw==123456)returntrue;//固定密碼就不需要限制位數了,反正不符合就錯
else
returnfalse;
}
publicstaticvoidNext(){
do{
System.out.println("請選擇你需要的功能:");
System.out.println("1.余額查詢2.取款3.存款4.退出");
intvalue=newScanner(System.in).nextInt();
switch(value){
case1://查詢余額
System.out.println("您的余額為"+money+"元");
break;
case2://取款
System.out.println("請輸入取款金額:");
intgetnum=newScanner(System.in).nextInt();
if(getnum<0)System.out.println("輸入金額有誤!");
elseif(getnum>money)System.out.println("余額不足.");
else{money=money-getnum;System.out.println("取款成功,余額為"+money);}
break;
case3://存款
System.out.println("請輸入存款金額:");
intpushnum=newScanner(System.in).nextInt();
if(pushnum<0)System.out.println("輸入金額有誤!");
else{money=money+pushnum;System.out.println("存款成功,余額為"+money);}
break;
case4://退出
System.out.println("謝謝使用!");
System.exit(0);
break;
default:
System.out.println("輸入有誤");
break;
}
}while(true);
}
}
2、運行效果
『肆』 java編寫的模擬ATM取款機程序
我現寫的: import java.util.Scanner;public class ATM {
private static String theName = "admin";
private static String thePassword = "123456";
private static int balance = 10000;
public static void getBalance(){
System.out.println("當前余額:" + balance);
}
public static void drawMoney(Scanner sc){
int money = 0;
System.out.println("請輸入取款金額:");
money = sc.nextInt();
String type = "";
if (balance > 0) {
if (balance >= money) {
if (money <= 5000) {
balance = balance - money;
type = "請在30秒內提取現金...\n剩餘余額:"+balance;
} else if (money <= 0) {
type = "金額錯誤";
} else {
type = "超出最大限制金額";
}
} else {
type = "超出最大余額";
}
} else {
type = "余額不足";
}
System.out.println(type);
}
public static void bankMoney(Scanner sc){
int money = 0;
System.out.println("請輸入存儲金額:");
money = sc.nextInt();
String type = "";
if (money > 0) {
balance = balance + money;
type = "存儲成功,現有餘額:" + balance;
} else {
type = "存儲金額不能為負";
}
System.out.println(type);
}
public static void updatePass(Scanner sc){
String oldPass = "";
String newPass1 = "";
String newPass2 = "";
while(true){
System.out.println("請輸入原密碼:");
oldPass = sc.next();
if (oldPass.equals(thePassword)) {
break;
} else {
System.out.println("密碼錯誤,請重新輸入");
}
}
while(true){
System.out.println("請輸入新密碼");
newPass1 = sc.next();
System.out.println("再次輸入");
newPass2 = sc.next();
if (newPass1.equals(newPass2)) {
if (!isSame(newPass1)) {
thePassword = newPass1;
System.out.println("修改成功");
break;
} else {
System.out.println("所有字元不能相同,重新輸入");
}
} else {
System.out.println("兩次輸入不一致,重新輸入");
}
}
}
public static boolean isSame(String string){
boolean bool = false;
for (int i = 0; i < string.length() - 1; i++) {
char char1 = string.charAt(i);
for (int j = i + 1; j < string.length(); j++) {
char char2 = string.charAt(j);
if (char1 == char2) {
bool = true;
break;
}
}
}
return bool;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true){
String name = "";
String password = "";
System.out.println("請輸入賬號:");
name = sc.next();
System.out.println("請輸入密碼:");
password = sc.next();
if (name.equals(theName) && password.equals(thePassword)) {
break;
} else {
System.out.println("賬號或密碼錯誤,請重新輸入!");
}
}
while(true){
int operate = 0;
System.out.println("請選擇你要進行的操作:\n1、查詢 2、取款 3、存款 4、修改密碼 0、退出");
operate = sc.nextInt();
if (0 == operate) {
System.out.println("謝謝使用!");
break;
} else if (1 == operate) {
getBalance();
} else if (2 == operate) {
drawMoney(sc);
} else if (3 == operate) {
bankMoney(sc);
} else if (4 == operate) {
updatePass(sc);
}
}
}
}