模拟ATM(C语言)
Posted Aspirantlu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟ATM(C语言)相关的知识,希望对你有一定的参考价值。
//****************模拟ATM****************
//作者:马露露
//版本:v1.0
//创建时间:2017.04.10
//主要功能:
// 1.模拟ATM(自动柜员机)主界面。
// 2.模拟ATM(自动柜员机)查询功能(Quary)。
// 3.模拟ATM(自动柜员机)存款功能(Credit)。
// 4.模拟ATM(自动柜员机)取款功能(Debit)。
// 5.退出功能(即返回主界面)。
//要求:
// 1.用文件保存用户卡号和密码,用以进行身份验证。
// 2.完成打印凭条功能。
//****************************************
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define N 200
void enterATM(); //ATM账号输入函数
void inputMima(); //密码输入函数
void menu(); //基本操作界面
void Debit(); //取款函数
void success(); //操作成功函数
void delay(); //延时函数
void Quary(); //余额查询函数
void Credit(); //存款函数
void panDuan(double z); //判断取款是否合法函数
void exit(); //退出界面函数
void miMa(); //密码修改
void read(); //文件写入函数
void write(); //文件读取函数
typedef struct
int zhanghao;
int mima;
double yu_e;
atm;
atm ATM[N];
int k;
//ATM账号输入函数
void enterATM()
delay();
system("cls");
read();
printf("*******************************\\n");
printf("* 欢迎使用 ATM 柜台机 *\\n");
printf("* 请输入卡号 *\\n");
int user;
scanf("%d",&user);
if(user==0)
printf("* 账号错误 *\\n");
enterATM();
else if(user!=(ATM[k].zhanghao))
for(k=1;k<N;k++)
if(user==(ATM[k].zhanghao))
inputMima( );
system("cls");
printf("* 账户不存在,请从新输入 *\\n");
enterATM();
else
inputMima( );
//密码输入函数
void inputMima( )
int code;
int temp=3;
read();
system("cls");
printf("* 请输入密码 *\\n");
scanf("%d",&code);
while(code!=ATM[k].mima)
temp--;
system("cls");
printf("* 密码错误,请重新输入 *\\n");
printf("* 您还有 ");
printf("%d",temp);
printf(" 次机会 *\\n");
scanf("%d",&code);
if(temp==1)
system("cls");
printf("* 您已经 3 次输入密码 *\\n");
printf("* 系统将退出操作 *\\n");
delay();
enterATM();
menu();
//取款函数
void Debit()
double temp;
system("cls");
printf(" 请选择您要取款的金额 \\n");
printf(" 1.100 2.200 \\n");
printf(" 3.500 4.800 \\n");
printf(" 5.1000 6.其它 \\n");
printf(" 7.返回 8.退出 \\n");
switch(getch())
case '1': panDuan(100);
break;
case '2': panDuan(200);
break;
case '3': panDuan(500);
break;
case '4': panDuan(800);
break;
case '5': panDuan(1000);
break;
case '6':
system("cls");
printf("请输入您要取款的金额:");
scanf("%lf",&temp);
panDuan(temp);
break;
case '7':menu();
break;
case '8':exit();
break;
//余额查询函数
void Quary()
read();
system("cls");
printf("你的余额为:%lf\\n",(ATM[k].yu_e));
printf("1.返回 2.退出 \\n");
switch(getch())
case '1': menu();
break;
case '2': exit();
break;
//判断取款是否合法函数
void panDuan(double z)
int beishu;
if(z>(ATM[k].yu_e))
system("cls");
printf(" 余额不足! \\n");
printf(" 请重新操作 \\n");
printf(" 1.返回 2.退出 \\n");
switch(getch())
case '1': Debit();
case '2': exit();
beishu=(int)z%100;
if(beishu!=0)
system("cls");
delay( );
printf(" 本ATM机只支持 100 的人民币 \\n");
printf(" 请重新操作 \\n");
printf(" \\n");
printf(" 1.返回 2.退出 \\n");
switch(getch())
case '1': Debit();
case '2': exit();
if(z==5000.00||z>5000.00)
system("cls");
printf(" 每次取款不能超过 5000 元 \\n");
printf(" 请重新操作 \\n");
printf(" \\n");
printf(" 1.返回 2.退出 \\n");
switch(getch())
case '1': Debit();
case '2': exit();
(ATM[k].yu_e)-=z;
write();
success();
//存款函数
void Credit( )
double cun;
system("cls");
printf(" 请放入人民币:");
scanf("%lf",&cun);
while(cun<0)
system("cls");
printf(" 非法存款 \\n");
printf(" 请重新放入人民币 \\n");
scanf("%lf",&cun);
(ATM[k].yu_e)+=cun;
write();
success();
//密码修改函数
void miMa()
int mm1,mm2,mm3;
int temp;
system("cls");
printf("旧密码:");
scanf("%d",&mm1);
printf("\\n");
if(mm1!=ATM[k].mima)
system("cls");
printf("旧密码错误,请重新输入\\n");
delay();
miMa();
printf("新密码:");
scanf("%d",&mm2);
if(mm2<100000||mm2>999999)
system("cls");
printf(" 密码必须等于6位数 \\n");
printf(" 请重新输入! \\n");
delay();
miMa();
temp=mm2%111111;
if(temp==0)
system("cls");
printf(" 密码过于简单 \\n");
printf(" 请重新输入! \\n");
delay( );
miMa( );
printf("\\n");
printf("确认新密码:");
scanf("%d",&mm3);
if(mm2!=mm3)
system("cls");
printf("确认密码不一致,请重新输入\\n");
delay( );
miMa();
if(mm3=mm2)
ATM[k].mima=mm3;
write();
success();
//延时函数
void delay( )
long int bl1;
int bl2;
for(bl1=600000;bl1>0;bl1--)
for(bl2=300;bl2>0;bl2--);
//操作成功函数
void success( )
system("cls");
printf(" 操作已成功 \\n");
printf(" \\n");
printf(" 1.返回 2.退出 \\n");
switch(getch())
case '1':menu();
break;
case '2':exit();
break;
//系统退出函数
void exit()
system("cls");
printf("* 欢迎您的再次使用 *\\n");
printf("* 系统正在退出... *\\n");
delay();
enterATM();
//文件读取函数
void read()
int i;
FILE *fp;
fp=fopen("xinxi.txt","r");
if(fp==NULL)
printf("打开文件失败\\n");
return;
for(i=0;i<N;i++)
fscanf(fp,"%d",&(ATM[i].zhanghao));
fscanf(fp,"%d",&(ATM[i].mima));
fscanf(fp,"%lf\\n",&(ATM[i].yu_e));
fclose(fp);
//文件写入函数
void write()
int i;
FILE *fp;
fp=fopen("xinxi.txt","w");
if(fp==NULL)
printf("打开文件失败\\n");
return;
for(i=0;i<N;i++)
fprintf(fp,"%d",ATM[i].zhanghao);
fprintf(fp,"%d",ATM[i].mima);
fprintf(fp,"%lf\\n",ATM[i].yu_e);
fclose(fp);
//主操作界面函数
void menu( )
system("cls");
printf("********************************\\n");
printf("* 请选择一下业务 *\\n");
printf("* 1.修改密码 *\\n");
printf("* 2.余额查询 *\\n");
printf("* 3.取款 *\\n");
printf("* 4.存款 *\\n");
printf("* 5.退出 *\\n");
printf("********************************\\n");
switch(getch())
case '1': miMa();
break;
case '2': Quary();
break;
case '3': Debit();
break;
case '4': Credit();
break;
case '5': exit();
break;
default:
printf("\\a非法操作\\n");
menu();
;
//主函数
void main()
enterATM();
以上是关于模拟ATM(C语言)的主要内容,如果未能解决你的问题,请参考以下文章