當前位置:首頁 » 編程語言 » C語言ATM模擬

C語言ATM模擬

發布時間: 2023-01-19 09:07:07

❶ 編寫一個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自動取款機的程序嗎不用太復雜,謝謝。

/*初始密碼和賬號都為: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機

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

❹ 用c語言寫模擬ATM取款系統,取款存款等可以儲存數據

用printf 一類的輸出語句,在命令行做界面
因為你不可能讀卡,所以只能是手動輸入賬戶和密碼
這就需要你保存一個列表

於是 大致功能
1 登陸
2 退出
3 查詢余額
4 取錢。

就這么四個 足夠了。
轉賬什麼的 就算了。

❺ 怎樣用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語言 簡單模擬取款機操作 取款金額為2000的確定演算法怎麼寫

如下,實際過程中還需要加個菜單選擇,另外要對用戶輸入進行合法性檢查。

#include<stdio.h>
int main()
{
int n;
char ch;
printf("請輸入您要取款的金額:");
scanf("%d",&n);
printf("請確認您的取款金額(y 或者n):");
ch = getchar();
if(ch == 'y' && ch =='Y') //這個是你要的演算法
printf("取款%d成功\n",n)
//同樣的這里可以加入其它的判斷,手機打字不便,自己根據需要加。

return 0;
}

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

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

❽ 用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();
}

❾ 簡單的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

密碼 余額
存款:
1 存款數額為正數,不符合報錯
2 余額 = 初始余額 + 存款金額
取款:
1 取款數額為100的倍數,不符合報錯
2 余額 = 初始余額–取款金額
取款總額不大於余額
僅需要做兩個函數,我曾經做過一個ATM機的模擬系統

熱點內容
蔬菜解壓游戲大全 發布:2025-07-18 10:00:12 瀏覽:70
linuxand 發布:2025-07-18 09:48:27 瀏覽:725
為什麼安卓的app下載不了 發布:2025-07-18 09:47:45 瀏覽:178
如何用伺服器搭建網路 發布:2025-07-18 09:36:05 瀏覽:451
迷你世界電腦版怎麼改密碼 發布:2025-07-18 09:26:41 瀏覽:51
php創建目錄 發布:2025-07-18 09:26:17 瀏覽:659
為什麼手機游戲分ios和安卓端 發布:2025-07-18 09:22:17 瀏覽:140
android數據顯示 發布:2025-07-18 09:17:27 瀏覽:528
腳本精靈天天酷跑怎麼用 發布:2025-07-18 09:00:04 瀏覽:154
android技術面試 發布:2025-07-18 08:59:55 瀏覽:967