c语言atm系统
㈠ 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(); //主程序调用开始
}
不知道能不能满足你的要求