當前位置:首頁 » 編程語言 » c語言模擬atm

c語言模擬atm

發布時間: 2022-05-06 10:14:54

⑴ 編寫一個c語言程序模擬銀行ATM機的賬戶管理功能,系統主要實現以下功能

按照你的願意把空都填好了,VC++ 6.0下編譯能通過,有警告信息,運行基本上能用,不過個人認為這個系統有很大的不足,比如輸入賬號的時候沒有輸出反饋信息,以及沒有對誤操作的處理等等。需要的話可以幫你改改!

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define AN 9 //表示賬號8位
#define PN 7 //表示密碼6位
#define ASN 3 //表示系統中共有3個賬戶信息
struct Account
{
char accountnumber[AN]; //表示賬號信息
char password[PN]; //表示賬戶的密碼信息
double balance; //表示賬戶的余額
};
struct Account ats[ASN]={{"00000001","123456",100},{"00000002","123456",200},{"00000003","123456",300}};
//ats數組用於存儲系統中三個賬戶的信息
int isCorrect(char *an,char *psd)
{
int i;
for(i=0;i<ASN;i++)
if(strcmp(ats[i].accountnumber,an)==0 && strcmp(psd,ats[i].password)==0)
return 1;
return 0;
}
double getBalance(char *an)
{
int i;
for(i=0;i<ASN;i++)
if(strcmp(an,ats[i].accountnumber)==0)
return ats[i].balance;
}

void deposit(char *an,int amount)
{
int i;
for(i=0;i<ASN;i++)
if(strcmp(an,ats[i].accountnumber)==0)
ats[i].balance+=amount;
}
int withdraw(char *an,int amount)
{
int i;
for(i=0;i<ASN;i++)
if(strcmp(an,ats[i].accountnumber)==0)
return ats[i].balance-=amount;
}

void main()
{
char AccountNumber[AN]={'\0'};
char psd[PN]={'\0'};
int i,errorcount=0;
while(1)
{
printf("\n請輸入8位賬號:");
for(i=0;i<8;i++)
AccountNumber[i]=getch();
printf("\n請輸入6為密碼:");
for(i=0;i<6;i++)
{
psd[i]=getch();
putchar('*');
}
if(isCorrect(AccountNumber,psd)==1)
{
int tag,amount;
while(1)
{
printf("\n歡迎登錄銀行賬戶管理系統,請選擇您要的服務:1、查詢余額;2、存款操作;3、取款操作;4、退出系統\n");
scanf("%d",&tag);
switch(tag)
{
case 1:
printf("您現在的余額為%f元\n",getBalance(AccountNumber));
break;
case 2:
printf("請輸入您的存款金額:");
scanf("%d",&amount);
deposit(AccountNumber,amount);
printf("存款成功!您的當前余額為:%f元\n",getBalance(AccountNumber));
break;
case 3:
printf("請輸入您的取款金額:");
scanf("%d",&amount);
if(amount<=getBalance(AccountNumber))
printf("取款成功!您的當前余額為:%f元\n",withdraw(AccountNumber,amount));
else
printf("取款失敗!\n");
break;
case 4:
break;
}
if(tag==4)
break;
}

}
else
{
errorcount++;
if(errorcount==3)
{
printf("您已經連續三次輸入錯誤,系統將自動關閉\n");
break;
}
}
}
}

⑵ C語言實現簡單ATM操作

// t.cpp : Defines the entry point for the console application.//#include "stdafx.h"int Card[100][5+3];void main(){ for(int i=0;i<100;i++) { Card[i][0]=i; Card[i][1]=0; Card[i][2]=0; } int nCahao,nT=0,nPose; while(nT==0) { printf("請輸入卡號\n"); scanf("%d",&nCahao); for(int i=0;i<100;i++) { if(Card[i][0]==nCahao) { nT=1; nPose=i; break; } } printf("卡號不正確"); } printf("你的存款余額為%d\n",Card[nPose][1]); while(1) { printf("1,取款 2, 存款\n"); int nSelect; scanf("%d",&nSelect); switch(nSelect) { case 1: printf("請輸入提款金額\n"); int nJine; scanf("%d",&nJine); Card[nCahao][Card[nCahao][2]]=-nJine; Card[nCahao][2]=Card[nCahao][2]++; printf("你的取款額為%d請在出鈔口領現金\n",nJine); break; case 2: printf("請輸入存款金額\n"); scanf("%d",&nJine); Card[nCahao][Card[nCahao][2]]=nJine; Card[nCahao][2]=Card[nCahao][2]++; printf("你的存款額為%d\n",nJine); break; default: printf("請取卡\n"); return; } } }

⑶ 怎麼用C語言編寫模擬ATM機

你可以加一個ini文件處理,就是每次開始程序是都到ini 或者 txr 文件中讀取你那個密碼 ,在更改時寫入你更改的密碼到ini 或者 txt 文件中 ,ini的編程很簡單 你上網查一下就明白了

⑷ 有誰學過C語言的可以幫我設計一個模擬ATM自動取款機的程序嗎不用太復雜,謝謝。

/*初始密碼和賬號都為:123456*/

#include<stdio.h>

intchaxun(inta3)

{

intb;

b=a3;

printf("你的余額為:%d ",b);

}

intqukuan(inta3)

{

inta,b;

printf("請輸入您要提取的現金: ");

scanf("%d",&a);

b=a3-a;

if(b<0)

printf("對不起,你的余額不足 ");

else

{

printf("請收好您的%d元現金 ",a);

a3=a3-a;

}

return(a3);

}

intgaini(inta2)

{

inta,b,c=1,d,e=1;

while(e)

{

printf("請輸入你的舊密碼: ");

scanf("%d",&d);

if(d==a2)

e=0;

else

{

e=1;

printf("你輸入的密碼錯誤,請重新輸入: ");

}

}

while(c)

{

printf("請輸入您的六位數新密碼 ");

scanf("%d",&a2);

printf("請確認您的六位數新密碼 ");

scanf("%d",&b);

if(a2==b)

{

if(b>100000&&b<999999&&b/(b/100000)!=111111)

{

c=0;

printf("密碼修改成功 ");

}

else

{

printf("您輸入的密碼不符合要求,請從新輸入 ");

c=1;

}

}

else

{

c=1;

printf("您兩次輸入的密碼不一致,請重新輸入: ");

}

}

returna2;

}

intquka()

{

printf(" 夢若保保提醒您 ");

printf("請收好您的卡片,謝謝,再見 ");

}

intcunkuan(inta3)

{

inti,j,k;

printf("請輸入你要存的金額 ");

scanf("%d",&k);

if(k<0)

{

printf("對不起,沒有負存款 ");

}

else

{

printf(" 您好,您已經存進去了%d元 ",k);

a3=a3+k;

}

returna3;

}

main()

{

inti,j,b=1,c,k,l,m,n;

inta1=123456,a2=123456,a3=1000;

printf("歡迎使用自動櫃員機: ");

while(b==1)

{

printf("請輸入您的賬號: ");

scanf("%d",&k);

printf("請輸入您的密碼: ");

scanf("%d",&l);

if(k==a1&&l==a2)

{

b=0;

printf("您的賬戶余額為:%d ",a3);

}

else

{

b=1;

printf("對不起,您輸入的賬號或者密碼有誤,請重新輸入: ");

}

}

do

{

printf(" 請選擇您要的服務項目: ");

printf("1.查詢余額 ");

printf("2.取款 ");

printf("3.修改密碼 ");

printf("4.取卡 ");

printf("5.存款 ");

scanf("%d",&c);

switch(c)

{

case1:

chaxun(a3);

break;

case2:

a3=qukuan(a3);

break;

case3:

a2=gaini(a2);

break;

case4:

quka();

break;

case5:

a3=cunkuan(a3);

break;

}

}while(c!=4);

}

完全符合你的要求啦,請插入磁卡…^_^

哈哈,不然你自己寫一個演算法吧。其實想糾正一下,這個程序代碼是上弦的芭蕉也就是樓主他寫的,他寫好後給我而我呢僅僅是做了一下輔助修改,其實要我寫呢,我自己應該寫不出來,你如果有其他的問題還是通過回答樓主問題的方式來問一下樓主吧,就是上弦的芭蕉這傢伙,悄悄的告訴你:他代碼程序真的很強,我只是打了一下醬油、醬紫而已;而如果您要引用呢,也先問一下源代碼主人樓主他的意思先哈^_^

⑸ 簡單的C語言模擬ATM取款機問題(大蝦幫幫忙!)

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void LanguageMenu();
void MainMenu();
void Query(float*);
void Deposite(float*);
void WithDraw(float*);
float a=1000;

void LanguageMenu()
{
printf("1 中文\n");
printf("2 English\n");
printf("3 退出\\Exit");
switch(getch())
{
case '1':MainMenu();break;
case '2':MainMenu();break;
default:break;
}
}

void MainMenu()
{
system("cls");

printf("1 查詢\n");
printf("2 存款\n");
printf("3 取款\n");
printf("4 退出\n");
switch(getch())
{
case '1':Query(&a);break;
case '2':Deposite(&a);break;
case '3':WithDraw(&a);break;
default: system("cls");return;
}
}

void Query(float *p)
{
system("cls");
printf("此賬戶中錢數為:¥ %-.2f",*p);
printf("請按任意鍵繼續...");
getch();
}

void Deposite(float *p)
{
float mon;
printf("請輸入您要存入的錢數:¥ ");
scanf("%f",&mon);
*p += mon;
printf("存款成功,請按任意鍵繼續...");
}

void WithDraw(float *p)
{
float mon;
printf("請輸入您要取出的錢數:¥ ");
scanf("%f",&mon);
if(mon>*p)
printf("對不起,您賬戶上的錢數不足。\n請按任意鍵繼續...");
else
{
*p -= mon;
printf("取款成功,請按任意鍵繼續...");
getch();
}

}

void main()
{
LanguageMenu();
}

⑹ C語言編程,模擬銀行的ATM機

我也是初學者,剛做完這個。
輸入密碼能進入的功能你可以先建立個整型的數,然後你輸入的整型數字跟你之前建立好的數字進行比較,如果一致就執行下一步,如果不一致就輸入密碼錯誤,用if語句
取款,存款的更簡單了,加減法而已。
這個東西最後建立一個文件保存你輸入的數據,就是賬戶名,密碼什麼的,需要用的時候從文件里讀取,然後和你輸入的數據進行比較。
存取款的可以把文件里的數據進行讀取,然後進行相應的加減,然後用修改後的數據用「w」寫入文件,「w」有覆蓋功能以前的數據就會被覆蓋了

⑺ 怎樣用c語言編寫ATM系統

#include<stdio.h>
#include<string.h>
void print_welcome();
int main()
{
print_welcome();
char c[11]="1234567890",d[7]="123456";
char a[20],b[20];
char p,q;
int h=0,i=0,j=0,k,l=0;
do
{
printf("請輸入賬號:\n");
gets(a);
printf("請輸入密碼:\n");
gets(b);
if(strcmp(c,a)==0&&strcmp(d,b)==0)
{
printf("賬號正確 歡迎使用\n");
h++;
}
else
printf("賬號或密碼錯誤請重新輸入\n");
}while(h!=1);
do
{
print_welcome();
retrn:
printf("請選擇對應的字母\n");
printf(" a存款業務 \n");
printf(" b余額查詢\n");
printf(" c資金轉賬\n");
printf(" d取款業務\n");
printf(" e退卡\n");
printf("請選擇您要辦理的業務\n");
scanf("%c",&p);
getchar();
switch(p)
{
case'a':printf(" 存款業務\n");
printf("**本服務暫停 請重新選擇**\n");
break;
case'b':
printf(" 余額查詢\n");
printf("**您的余額為 ¥9999999\n請重新選擇**\n");
break;
case'c':
printf(" 資金轉賬\n");
printf("**您的銀行卡不支持該業務 請重新選擇**\n");
break;
case'd':
printf(" 取款業務\n");
do
{
printf("請選擇您要取款的金額\n**請輸入序號\n**請您注意每位用戶每天只能去20000 每次最多取2500\n");
printf(" r 100\n");
printf(" s 200\n");
printf(" t 500\n");
printf(" u 1000\n");
printf(" v 2000\n");
printf(" w 其他\n");
printf(" x 返回\n");
printf("請選擇要取的金額\n");
scanf("%c",&q);
getchar();
switch(q)
{
case'r':printf("**取款成功 金額為100元**");goto retrn;break;
case's':printf("**取款成功 金額為200元**");goto retrn;break;
case't':printf("**取款成功 金額為500元**");goto retrn;break;
case'u':printf("**取款成功 金額為1000元**");goto retrn;break;
case'v':printf("**取款成功 金額為2000元**");goto retrn;break;
case'w':printf("**請輸入你想取出的金額**\n**並保證是100的倍數\n");
while(l!=1)
{
scanf("%d",&k);
getchar();
if(k%100==0&&k>=0&&k<=2500)
{
printf("您取出的金額%d元\n",k);
l++;
goto retrn;
}
else
{
printf("您輸入的面額有誤請重新輸入\n");
printf("請您保證為100的倍數\n");
}
}
break;
case'x':goto retrn;break;
default:printf("**操作有誤請從新輸入**");
j++;
}
}while(j!=1);
break;
case'e':
printf("**歡迎您的使用 請勿忘取卡**\n");
i++;
break;
default:printf("**操作有誤請從新輸入**\n");
}
}while(i!=1);
print_welcome();
return 0;
}
void print_welcome()
{
printf(" **歡迎使用**\n");
}

⑻ C語言簡單模擬ATM櫃員機

在取款成功和存款成功後加上這條語句:*p += n;(存款)*p -= n;(取款),這樣就改變了price的值了,還有,考慮到程序的健壯性我提一個意見,你的程序很容易出問題,從鍵盤接受字元你用的是getch,但getch只有在你輸入回車之後才會返回你輸入的第一個字元,這樣問題就來了,如果你輸入一個字元串再敲回車會發生什麼,自己試試吧,很可能就出問題了,因為你輸入的很多字元還在緩存中。。。

⑼ 用C語言寫ATM的程序代碼要求用循環語句

#include<stdio.h>
int chaxun(int a3)
{
int b;
b=a3;
printf("你的余額為:%d\n",b) ;

}
int qukuan(int a3)
{
int a,b;
printf("請輸入您要提取的現金:\n");
scanf("%d",&a);
b=a3-a;
if(b<0)
printf("對不起 ,你的余額不足\n");
else
{
printf("請收好您的%d元現金\n",a);
a3=a3-a;
}
return (a3);
}
int gaini(int a2)
{
int a,b,c=1,d,e=1;
while(e)
{
printf("請輸入你的舊密碼:\n");
scanf("%d",&d);
if(d==a2)
e=0;
else
{
e=1;
printf("你輸入的密碼錯誤,請重新輸入:\n");
}
}
while(c)
{
printf("請輸入您的六位數新密碼\n");
scanf("%d",&a2);
printf("請確認您的六位數新密碼\n");
scanf("%d",&b);
if(a2==b)
{
if(b>100000&&b<999999&&b/(b/100000)!=111111)
{
c=0;
printf("密碼修改成功\n");
}
else
{
printf("您輸入的密碼不符合要求,請從新輸入\n");
c=1;

}
}
else
{
c=1;
printf("您兩次輸入的密碼不一致,請重新輸入:\n");
}

}
return a2;
}
int quka()
{
printf("\n 夢若保保提醒您\n");
printf("請收好您的卡片,謝謝,再見\n\n");
}
int cunkuan(int a3)
{
int i,j,k;
printf("請輸入你要存的金額\n");
scanf("%d",&k);
if(k<0)
{
printf("對不起,沒有負存款\n");
}
else
{
printf("\n您好,您已經存進去了%d元\n",k);
a3=a3+k;
}
return a3;
}

main()
{
int i,j,b=1,c,k,l,m,n;
int a1=123456,a2=123456,a3=1000;
printf("歡迎使用自動櫃員機:\n\n");
while(b==1)
{
printf("請輸入您的賬號:\n");
scanf("%d",&k);
printf("請輸入您的密碼:\n");
scanf("%d",&l);
if(k==a1&&l==a2)
{
b=0;
printf("您的賬戶余額為:%d\n",a3);
}
else
{
b=1;
printf("對不起,您輸入的賬號或者密碼有誤,請重新輸入:\n");
}
}
do
{
printf("\n請選擇您要的服務項目:\n");
printf("1.查詢余額\n");
printf("2.取款\n");
printf("3.修改密碼\n");
printf("4.取卡\n");
printf("5.存款\n");
scanf("%d",&c);
switch(c)
{
case 1:
chaxun(a3);
break;
case 2:
a3=qukuan(a3);
break;
case 3:
a2=gaini(a2);
break;
case 4:
quka();
break;
case 5:
a3=cunkuan(a3);
break;
}
}while(c!=4);

}

⑽ 用C語言模擬ATM機工作流程編程

#include
"stdio.h"對ATM機器的模擬就是一個對隊列的模擬下面代碼在VC6環境下調試已經通過了其中有個缺陷就是因為代碼執行速度過快導致二次執行根據時間隨機出來的數字都是一樣的因此你可以自己加上一個延遲子程序部分功能已經注釋了#include
"stdlib.h"#include
"time.h"#define
OK
1#define
ERROR
0
typedef
struct
node{
int
number;
struct
node*
next;}*Lnode;
typedef
struct
list{
node
*head,*rear;}*Plist;
//模擬
ATM開業bool
ListInit(Plist
list){
Lnode
p;
p
=
(Lnode)malloc(sizeof(Lnode));
list->head
=
p;
list->rear
=
list->head;
list->head->next
=
NULL;
if(list->head!=NULL)
return
ERROR;
else
return
OK;}
//模擬
有客戶排隊bool
ListInsert(Plist
list,int
number){
Lnode
p;
p
=
(Lnode)malloc(sizeof(Lnode));
if(p==NULL)
return
ERROR;
else
{
p->number
=
number;
p->next
=
NULL;
list->rear->next
=
p;
list->rear
=
p;
return
OK;
}}
//模擬
客戶辦完事離開bool
ListDelete(Plist
list){
Lnode
p;
if(list->head
==list->rear)
return
ERROR;
else
{
p
=
list->head->next;
list->head->next
=
p->next;
list->rear
=
list->head;
//
free(p);
return
OK;
}}
void
sand(int*
gettime,int*
needtime){
srand(time(NULL))
;
*gettime
=
rand()%100;
srand(time(NULL))
;
*needtime
=rand()%100;}
//模擬客戶到達事件void
CustomerArrived(Plist
list,int
gettime,int
needtime,int
kehu,int
time){
int
nextgettime,nextneedtime;
sand(&nextgettime,&nextneedtime);
while(needtime>0
&&
nextgettime>0
&&
time>0)
{
needtime
--;
nextgettime
--;
time
--;
}
if(nextgettime
==
0
&&
needtime>0
&&time>0)
{
kehu++;
ListInsert(list,kehu);
while(needtime>0
&&
time>0)
{
needtime--;
time
--;
}
ListDelete(list);
CustomerArrived(list,nextgettime,nextneedtime,kehu,time);
}
if(needtime
==0
&&
nextgettime>0
&&
time>0)
{
ListDelete(list);
while(nextgettime>0
&&
time>0)
{
nextgettime--;
time
--;
}
kehu++;
ListInsert(list,kehu);
//未刪除
,list未傳遞進去
CustomerArrived(list,nextgettime,nextneedtime,kehu,time);
}
if(time
==0)
{
printf("ATM關門,請明天在來!\n");
return;
}}
main(){
list
list;
int
i
=
10000;
//ATM機器每天工作時間
int
kehu
=
0;
//客戶標號
int
gettime,needtime;
ListInit(&list);
//ATM開業
sand(&gettime,&needtime);
ListInsert(&list,kehu);
CustomerArrived(&list,gettime,needtime,kehu,i);
getchar();
}

熱點內容
動圖在線壓縮 發布:2025-05-14 03:35:24 瀏覽:132
w7共享無法訪問 發布:2025-05-14 03:35:24 瀏覽:482
為什麼微信會出現賬號密碼錯誤 發布:2025-05-14 03:03:30 瀏覽:692
幻影腳本官網 發布:2025-05-14 03:01:13 瀏覽:826
servlet的webxml怎麼配置 發布:2025-05-14 02:51:46 瀏覽:772
怎麼取消手勢密碼 發布:2025-05-14 02:51:11 瀏覽:639
openvpn搭建vpn伺服器搭建 發布:2025-05-14 02:47:52 瀏覽:998
密碼忘了從哪裡找 發布:2025-05-14 02:39:09 瀏覽:548
我的世界什麼伺服器有前途 發布:2025-05-14 02:30:31 瀏覽:528
java程序反編譯 發布:2025-05-14 02:18:46 瀏覽:459