當前位置:首頁 » 編程語言 » c語言atm系統

c語言atm系統

發布時間: 2025-10-05 11:13:08

c語言程序設計ATM機

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<windows.h>
char ch[7]={"123456"};
void menu();
//int login();
int deposit();
int GetCash();
int Transf();
void Checkmoney();
int checkPass();
void modiPass();
void Exit();
int i,n;
//金額
int main()
{
int x;
//modiPass();
while(1)
{
checkPass();
menu();
while(1)
{
printf("\n請選擇業務:");
while(1)
{
scanf("%d",&x);
if(x>6||x<0)
{
printf("\n輸入有誤,請重新輸入:");
}
else break;
}
switch(x)
{
case 1:deposit();
break;
case 2:GetCash();
break;
case 3:Transf();
break;
case 4:Checkmoney();
break;
case 5:modiPass();
break;
case 6:Exit();
x = 6;
break;
default:break;
}
if(x == 6)break;
}
}
return 0;
}
/////菜單
void menu()
{
system("cls");
printf("\t\t\tPlease Select Service\n\n");
printf("\n\n\t\t\t**電子現金**\n\n");
printf("\t\t1.存款業務 2.取款業務\n\n");
printf("\t\t3.轉賬業務 4.查詢業務\n\n");
printf("\t\t5.修改密碼 6.退卡\n\n");
}
////存款業務
int deposit()
{
int m;
printf("請輸入您的存入金額\n");
scanf("%d",&m);
printf("成功存入 %d 元\n",m);
i+=m;
return i;
}
////取款業務
int GetCash()
{
int n;
if(i<=0)
{
printf("余額不足\n");
return i;
}
printf("請輸入您的取出金額\n");
while(1)
{
scanf("%d",&n);
if(n>i)
{
printf("請輸入少於%d 元\n",i);
}else
break;
}
printf("成功取出 %d 元\n",n);
i-=n;
return i;
}
int Transf()
{
int n;
long int number;
if(i<=0)
{
printf("余額不足\n");
return i;
}
printf("請輸入您要轉帳的銀行卡號\n");
scanf("%ld",&number);
printf("請輸入您的轉出金額\n");
while(1)
{
scanf("%d",&n);
if(n>i)
{
printf("請輸入少於%d 元\n",i);
}
else
break;
}
printf("成功向%ld 賬號轉賬 %d 元\n",number,n);
i-=n;
return i;
}
void Checkmoney()
{
if(i<=0)
printf("您的賬戶余額: 0 元\n");
else
printf("您的賬戶余額: %d 元\n",i);
}
int checkPass()
{
system("cls");
char m[7];
printf("\n@@@@@@@@中國建設銀行@@@@@@@@\n");
printf("\n**China Construction Bank**\n\n");
printf("\n正在進行IC卡認證,請稍吿...\n\n");
printf("請輸入密碼(系統默認初始密碼:123456):\n");
printf("Please input your Press Enter\n\n");
while(1)
{
for(n=0;n<6;n++)
{
m[n]=getch();
printf("*");
}
if(strcmp(ch,m)==0)
{
printf("\n\n\t\t 正在進行ID認證,請稍等");
//Sleep(400);
printf(".");
Sleep(400);
printf(".");
Sleep(400);
printf(".");
Sleep(400);
printf(".");
//Sleep(2000);
printf("\n\n\t\t 登錄成功.....\n");
break;
}
puts("\n密碼錯誤,請重新輸入密碼:\n");
}
return 0;
}
void modiPass()
{
char mi[7];
printf("請輸入原來的密碼:\n");
while(1)
{
for(n=0;n<6;n++)
{
mi[n]=getch();
printf("*");
}
printf("\n");
if(strcmp(mi,ch)==0)
{
puts("請輸入新的密碼:\n");
for(n=0;n<6;n++)
{
ch[n]=getch();
printf("*");
}
printf("\n");
if(strcmp(mi,ch)!=0)
{
printf("密碼修改成功!\n");
break;
}else
printf("密碼修改失敗(新密碼與舊密碼相同),請重新修改.\n請輸入原來的密碼:\n");
}else
printf("密碼錯誤,請重新輸入:\n");
}
}
void Exit()
{
printf("交易結束,請取回您的卡\n");
Sleep(1000);
}

㈡ 【C語言】編寫ATM機程序

幫我用C語言編寫一個ATM取款程序要求代碼在300行以上
作為一個二十一世紀的大學生,要養成自己動手的習慣!不懂就去圖書館翻閱資料!雖然網上現在很

㈢ 編寫一個關於「ATM系統」c語言程序。 要求,1功能:存錢,取錢,轉賬,修改密碼,只要現實中有的都得有,

下面的是我自己寫的一個, 裡面很多細節都沒有進行細致的處理, 只是粗略的實現了基本的功能
後面有我的測試數據, 希望能有幫助

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

typedef struct _account
{
char * UID;
char * pwd;
int balance;
char * UName;
}ACCOUNT, * PACCOUNT;

void InitAccount(PACCOUNT pA); // 初始化賬戶
void showAccount(ACCOUNT A, bool flag); // 顯示賬戶信息, flag表示是否顯示全部信息. 如果是true則需要輸入用戶密碼
bool deposite(PACCOUNT pA); // 存錢, 內部需要密碼驗證並輸入金額
bool withDraw(PACCOUNT pA); // 取錢, 內部需要密碼驗證並輸入金額
bool transfer(PACCOUNT pA, PACCOUNT pB); // 轉賬, 需要密碼驗證, 並輸入金額
bool conct(PACCOUNT pA, int chose, PACCOUNT pB); // 處理, 就是根據菜單項處理用戶的操作選擇
void modifyPwd(PACCOUNT pA); // 更改用戶密碼
bool Authentication(PACCOUNT pA); // 密碼認證, 3次機會輸入密碼
void memFree(PACCOUNT pA, PACCOUNT pB); // 在堆上分配的內存的釋放

int main(void)
{
// 建立兩個賬戶, 分別是操作賬戶和接受轉賬的賬戶
PACCOUNT pMainAcc = (PACCOUNT)malloc(sizeof(ACCOUNT));
PACCOUNT pAssistAcc = (PACCOUNT)malloc(sizeof(ACCOUNT));

// 初始化兩個賬戶的信息
InitAccount(pMainAcc);
InitAccount(pAssistAcc);

// 進行菜單控制, 提供用戶操作
int chose = -1;
while(chose != 0)
{
printf("\n1. 存錢\t2. 取錢\t3. 轉賬\t4. 更改密碼\t5. 顯示賬戶信息\t0.退出\n");
scanf("%d", &chose);

conct(pMainAcc, chose, pAssistAcc);
}

return 0;
}

bool conct(PACCOUNT pA, int chose, PACCOUNT pB)
{
bool rtnflag = true;
switch(chose)
{
case 1:
if(!deposite(pA))
printf("操作失敗!");
else
printf("操作成功!");
break;

case 2:
if(!withDraw(pA))
printf("操作失敗!");
else
printf("操作成功!");
break;

case 3:
if(!transfer(pA, pB))
printf("操作失敗!");
else
printf("操作成功!");
break;

case 4:
modifyPwd(pA);
break;

case 5:
showAccount(*pA, true);
break;

case 0:
rtnflag = false;
memFree(pA, pB);
break;
}
return rtnflag;
}

void InitAccount(PACCOUNT pA)
{
printf("請初始化賬戶名, 密碼, 姓名, 賬戶余額.\n");
pA->UID = (char *)malloc(sizeof(char)*20);
pA->pwd = (char *)malloc(sizeof(char)*20);
pA->UName = (char *)malloc(sizeof(char)*20);
gets(pA->UID);
gets(pA->pwd);
gets(pA->UName);
scanf("%d", &pA->balance);
getchar();
return ;
}

void showAccount(ACCOUNT A, bool flag)
{
if(flag)
{
int i = 0;
getchar();
char * tmpPwd = (char *)malloc(sizeof(char)*20);
while(strcmp(tmpPwd, A.pwd))
{
printf("請輸入賬戶%s的密碼:\n", A.UID);
gets(tmpPwd);
if(++i > 3)
{
printf("對不起, 密碼輸入錯誤!只能顯示部分信息!\n");
showAccount(A, false);
free(tmpPwd);
return ;
}
}
printf("賬戶信息如下:\n賬戶名\t賬戶密碼\t賬戶余額\t姓名\n");
printf("%6s\t%8s%8d\t%8\ts\n", A.UID, A.pwd, A.balance, A.UName);
free(tmpPwd);
}
else
{
printf("賬戶信息如下:\n賬戶名\t賬戶余額\t姓名\n");
printf("%6s\t%8d\t%4s\n", A.UID, A.balance, A.UName);
}

return ;
}

bool deposite(PACCOUNT pA)
{
if(!Authentication(pA))
return false;
int val = 0;
printf("請輸入金額:\n");
scanf("%d", &val);
pA->balance += val;

return true;
}

bool withDraw(PACCOUNT pA)
{
if(!Authentication(pA))
return false;

printf("請輸入金額");
int val = 0;
scanf("%d", &val);

if(pA->balance >= val)
{
pA->balance -= val;
}
else
{
printf("對不起, 余額不足!");
return false;
}

return true;
}

bool transfer(PACCOUNT pA, PACCOUNT pB)
{
if(!Authentication(pA))
return false;
printf("請輸入金額");
int val = 0;
scanf("%d", &val);

if(pA->balance >= val)
{
pA->balance -= val;
pB->balance += val;
}
else
{
printf("對不起, 余額不足!");
return false;
}

return true;
}

void modifyPwd(PACCOUNT pA)
{
if(Authentication(pA))
{
printf("請輸入新的密碼!");
free(pA->pwd);
pA->pwd = (char *)malloc(sizeof(char)*20);
gets(pA->pwd);
}
else
{
printf("對不起, 您沒有許可權進行密碼修改!");
}
}

bool Authentication(PACCOUNT pA)
{
getchar();
int i = 0;
char * tmpPwd = (char *)malloc(sizeof(char)*20);
while(strcmp(tmpPwd, pA->pwd))
{
printf("請輸入%s的密碼, 3次機會:\n", pA->UID);
gets(tmpPwd);
if(++i == 3)
{
return false;
}
}

return true;
}

void memFree(PACCOUNT pA, PACCOUNT pB)
{
free(pA);
free(pB);

return ;
}

/*
運行環境: VC6.0

請初始化賬戶名, 密碼, 姓名, 賬戶余額.
wed
qweasd
wednesday
800
請初始化賬戶名, 密碼, 姓名, 賬戶余額.
hu
sad
huni
200

1. 存錢 2. 取錢 3. 轉賬 4. 更改密碼 5. 顯示賬戶信息 0.退出
1
請輸入wed的密碼, 3次機會:
qwe
請輸入wed的密碼, 3次機會:
qweasd
請輸入金額:
54
操作成功!
1. 存錢 2. 取錢 3. 轉賬 4. 更改密碼 5. 顯示賬戶信息 0.退出
5
請輸入賬戶wed的密碼:
qwe
請輸入賬戶wed的密碼:
qweasd
賬戶信息如下:
賬戶名 賬戶密碼 賬戶余額 姓名
wed qweasd 854 s

1. 存錢 2. 取錢 3. 轉賬 4. 更改密碼 5. 顯示賬戶信息 0.退出
4
請輸入wed的密碼, 3次機會:
123
請輸入wed的密碼, 3次機會:
qweasd
請輸入新的密碼!123qwe

1. 存錢 2. 取錢 3. 轉賬 4. 更改密碼 5. 顯示賬戶信息 0.退出
1
請輸入wed的密碼, 3次機會:
qweasd
請輸入wed的密碼, 3次機會:
123qwe
請輸入金額:
43
操作成功!
1. 存錢 2. 取錢 3. 轉賬 4. 更改密碼 5. 顯示賬戶信息 0.退出
5
請輸入賬戶wed的密碼:
123qwe
賬戶信息如下:
賬戶名 賬戶密碼 賬戶余額 姓名
wed 123qwe 897 s

1. 存錢 2. 取錢 3. 轉賬 4. 更改密碼 5. 顯示賬戶信息 0.退出
0
Press any key to continue

*/

㈣ 用C語言編程ATM的簡單取款過程,越簡單越好



#include<stdio.h>
intmain(void)
{
inti,g,q=10000,qq=0,z;
charmm[6];
constcharMM[6]="123456";
printf(" 請輸入密碼以登入賬戶:");
while(1)
{
for(i=0;i<6;i++)
{
mm[i]=getch();
if(mm[i]!='')
{
putchar('*');
}
else
{
printf("");
i--;
i--;
}
if(mm[i]==' ')
{
printf("");
break;
}
}
if(strcmp(mm,MM)==0)
{
printf(" 密碼正確!登入銀行賬戶! ");
printf(" [1]查詢余額 [2]取錢 選項:");
scanf("%d",&g);
switch(g)
{
case1:printf(" 你的余額剩餘%d元 ",q-qq);break;
case2:printf("請輸入提取金額:");scanf("%d",&qq);printf(" 提取現金%d元 ",qq);break;
default:printf(" 選項錯誤! ");break;
}
break;
}
else
{
printf(" 密碼錯誤! ");
printf("請重新輸入密碼:");
}
}
}

本來是想來個簡單的結果看到樓下說要登入這些功能。。。

這是簡單的

#include<stdio.h>
intmain(void)
{
doublea=10000;
inti;
printf("請輸入你要提取的金額:");
scanf("%d",&i);
printf("您的賬戶余額:%g元",a-i);
return0;
}

再來個稍難得吧。。。

#include<stdio.h>
intmain(void)
{
charmm[6];
doublea=10000;
inti=0,g;
printf("[1]取款[2]查詢余額:");
scanf("%d",&g);
switch(g)
{
case1:printf("請輸入提取金額:");scanf("%d",&i);printf("賬戶余額%g",a-i);break;
case2:printf("賬戶余額%g",a-i);break;
default:printf("選項錯誤! ");break
}
return0;
}

編譯器復制下來的代碼中文都要亂碼。。。

㈤ C語言或C++ 銀行卡管理系統

#include<iostream>
#include<cstring>
using namespace std;
class count
{
public:
friend class ATM;
count (char Name[],char Num[],float Money,char Password[]); //初始化
protected:
char * get_name(); //返回姓名
char * get_num(); //返回卡號
char * get_password(); //返回密碼
float get_money(); //返回金額
void set_password(char pwd[]); //設置密碼
void set_money(float m); //取錢
private:
char password[6]; //用戶密碼
char name[20]; //用戶姓名
char num[20];
float money;
};

class ATM
{
public:
ATM(count & cn):ctm(cn){}
void welcome(); //登陸界面
bool check_password(char p[],char pwd[]); //核對密碼
void change_password(); //修改密碼
void get_money(); //取錢
void get_information(); //查詢信息
void exit_ATM(); //退出ATM
void show_function(); //功能界面
void push_card(); //吞卡
private:
int times; //記錄輸入密碼的次數
count & ctm;
};
//構造ATM的函數
void ATM::welcome() //構造welcome
{
times=0;
cout<<"歡迎使用ATM模擬自動取款機"<<endl;
cout<<"-------------------------"<<endl;
cout<<"請選擇:\n1.新開帳戶\t2.客戶服務\t3.退出系統"<<endl; //輸出主菜單
char pwd[7],num[20]; //6位密碼19位卡號
int i=0;
do
{
cout<<"請輸入卡號";
cin>>num;
cout<<"請輸入密碼:";
cin>>pwd;
if(!check_password(num,pwd))
{
cout<<"你輸入的密碼有錯誤,請重新輸入"<<endl;
times++;
}
else
{
show_function();
}
}while(times<3);
push_card();

}
bool ATM::check_password(char num[],char pwd[]) //構造核對密碼
{
if(strcmp(num,ctm.get_num())==0&&strcmp(pwd,ctm.get_password())==0)
return true;
else
return false;
exit(0);
}

void ATM::show_function() //構造功能界面
{
int n;
do
{
cout<<"1)修改密碼"<<endl;
cout<<"2)取款"<<endl;
cout<<"3)查詢余額"<<endl;
cout<<"4)退出系統"<<endl;
cout<<"請選擇相關功能的代號:";
cin>>n;
while(n<1&&n>>4)
{
cout<<"請輸入正確的操作序號!"<<endl;
cout<<"請選擇相關功能的代號:";
cin>>n;
}
switch(n)
{
case 1:change_password(); break;
case 2:get_money(); break;
case 3:get_information(); break;
case 4:exit_ATM(); break;
}
}while(true);
}
void ATM::change_password() //構造修改密碼
{
char pwd[7],repwd[7];
times=0;
do
{
cout<<"請輸入原密碼:";
cin>>pwd;
//if(!check_password(ctm.get_password(),pwd))
if(!check_password(ctm.get_num(),pwd))
times++;
else
break;
}while(times<2);

if(times==2)
push_card();
int m=0;
do
{
cout<<"請輸入新密碼:";
cin>>pwd;
cout<<"請再輸入一次新密碼:";
cin>>repwd;
if((m=strcmp(pwd,repwd))!=0)
cout<<"你輸入的兩次密碼不一樣,請重新輸入!";
}while(m!=0);
ctm.set_password(pwd);
cout<<"密碼修改成功,請牢記新密碼!"<<endl;
}
void ATM::get_money() //構造取錢
{
float m;
char ch;
do
{
cout<<"請輸入所取金額:";
cin>>m;
while(m<=0)
{
cout<<"請輸入正確的數字!"<<endl;
cin>>m;
}
if(ctm.get_money()-m<0)
{
cout<<"對不起,你的余額不足!"<<endl;
}
else
{
ctm.set_money(m);
cout<<"是否要繼續(Y/N):";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y')
{
cout<<"請根據提示輸入正確命令!"<<endl;
cout<<"是否要取出所選金額(Y/N)";
cin>>ch;
}
}
}while(ch=='y'||ch=='Y');
}
void ATM::get_information() //構造查詢信息
{
cout<<"********************"<<endl;
cout<<"用戶姓名:"<<ctm.get_name()<<endl;
cout<<"卡號:"<<ctm.get_num()<<endl;
cout<<"余額:"<<ctm.get_money()<<endl;
cout<<"********************"<<endl;
}

void ATM::push_card() //構造吞卡
{
cout<<"由於你的不當操作,你的的卡已經被沒收。"<<endl;
cout<<"請您持相關證件到當地營業廳辦理相關手續。"<<endl;
exit(1);
}
void ATM::exit_ATM() //構造退出ATM
{
cout<<"歡迎下次光臨!"<<endl;
cout<<"請取卡... ..."<<endl;
exit(0);
}

count ::count (char Name[],char Num[],float Money,char Password[]) //構造初始化
{
strcpy(name,Name);
strcpy(num,Num);
money=Money;
strcpy(password,Password);
}

float count ::get_money() //構造返回金額
{
return money;
}
char *count ::get_name() //構造返回用戶名
{
return name;
}
char *count ::get_num() //構造返回卡號
{
return num;
}

char *count ::get_password() //構造返密碼
{
return password;
}

void count ::set_password(char pwd[]) //構造修改密碼
{
strcpy(password,pwd);
}

void count ::set_money(float m)
{
money-=m;
}

int main() //主函數
{
count ctm("mianchuang","0001",1000000,"123"); //創建對象 調用初始化
ATM atm(ctm);
atm.welcome(); //主程序調用開始
}
不知道能不能滿足你的要求

熱點內容
tp超長存儲 發布:2025-10-05 13:34:13 瀏覽:304
伺服器ip查得出來 發布:2025-10-05 13:34:00 瀏覽:617
慧編程鏈表 發布:2025-10-05 13:22:08 瀏覽:891
linux輸入法配置 發布:2025-10-05 13:20:38 瀏覽:929
抖音有哪些推薦電腦配置的博主 發布:2025-10-05 13:10:59 瀏覽:645
地暖溫控編程 發布:2025-10-05 12:40:47 瀏覽:880
wamp怎麼配置php伺服器 發布:2025-10-05 12:37:33 瀏覽:983
如何建php 發布:2025-10-05 12:31:49 瀏覽:794
c語言漢字字元串 發布:2025-10-05 12:30:53 瀏覽:692
傳大壓縮包 發布:2025-10-05 12:24:32 瀏覽:892