ATM的功能主要包括:现金取款、现金存款、现金存取款、余额查询、本行或异行转账、修改密码等基本功能;有些多功能ATM还提供诸如存折打印、对账单打印、信封存款、缴费、充值等一系列便捷服务。这个程序利用c语言对ATM机的主要功能进行了模拟。
/*程序名称:模拟ATM存取款机 程序功能:通过程序来实现ATM所具有的一般功能 作者Smile So Luck 版本号:2014.4.15.03 程序使用说明:使用这个程序时应先进行开户,只有开户成功时才能进行其他操作, 存取款时钱数都应该为100的整数倍,程序将每打开一次默认为一天,以此来限制每 天的最大取款数*/ #include#include #include int mingyan(); //用户名验证 int guayan(int); //挂失验证 int miyan(int); //密码函数 float T=0; 定义全局变量T,记录用户一天取款数的总和 void Debit(); //取款函数 void Credit(); //存款函数 void Quary(); //查询函数 void logout(); //销户函数 void Openbit(); //开户函数 void account(); //转账函数 void lose(); //挂失函数 void tuichu(); //退出函数 void chaall(); //查询所有用户信息 char gUser[100][30]; //用户名 char gMima[100][30]; //密码 char Ggua[100][30]; //挂失用户名 float YuE[100]; //存款余额 int UserShu=0; //用户数 int guashu=0; //挂失用户数 void main() { int order; //命令 while(order) { printf(" ================================================================ \n"); printf("|| 欢迎使用模拟ATM自助存取款 ||\n"); printf("|| ||\n"); printf("|| <1> 开户 <4> 取款 <8> 挂失 ||\n"); printf("|| <2> 存款 <5> 销户 ||\n"); printf("|| <3> 查询 <6> 转账 <0> 退出 ||\n"); printf("|| <7> 查询所有用户信息 ||\n"); printf("|| ||\n"); printf(" ================================================================ \n"); printf("请输入您的指令: "); scanf("%d",&order); printf("\n"); switch(order) { case 1: //开户 Openbit(); break; case 2: //存款 Credit(); break; case 3: //查询 Quary(); break; case 4: //取款 Debit(); break; case 5: //销户 logout(); break; case 6: //转账 account(); break; case 7: //查询所有用户信息 chaall(); break; case 8: //挂失 lose(); break; case 0: printf("欢迎您再次使用!\n"); exit(0); break; } } } void Debit() //取款 { int i,m; float n; i=mingyan(); m=guayan(i); if(m==1) m=miyan(i); while(m==1) { printf("请输入您的取款金额: "); scanf("%f",&n); if(n>2000) { printf("每笔取款不得超过2000\n"); Debit(); break; } T=n+T; if(T>20000) { printf("每天取款总数不能超过20000,请您改天再进行取款"); break; } if(n<=YuE[i]) { printf("请取走您的钞票。\n"); YuE[i]=YuE[i]-n; break; } else printf("您的余额不足,请重新输入。\n"); } } void Credit() //存款 { int i,m; float n; i=mingyan(); m=guayan(i); if(m==1) m=miyan(i); while(m==1) { printf("请输入您的存款金额: "); scanf("%f",&n); YuE[i]=YuE[i]+n; printf("存款成功!"); printf("您的当前余额为: %.2f\n",YuE[i]); m=0; } m=1; main(); } void Quary() //查询 { int i,m; i=mingyan(); m=guayan(i); if(m==1) m=miyan(i); } void Openbit() //开户 { int i,n=UserShu,j=0; float m; char User[32],mima1[32],mima2[32]; printf("请输入您的用户名: "); getchar(); scanf("%s",User); for(i=0;i { if(strcmp(User,gUser[i])==0) { printf("该用户名已存在\n"); break; } else { strcpy(gUser[UserShu],User); while(j!=1) { printf("请输入您的密码: "); scanf("%s",mima1); printf("请再次输入您的密码: "); scanf("%s",mima2); if(strcmp(mima1,mima2)==0) { printf("密码设置成功\n"); printf("请输入您的存款金额: "); scanf("%f",&m); printf("恭喜您,开户成功\n"); strcpy(gMima[UserShu],mima1); YuE[UserShu]=m; j=1; } else printf("两次输入不相同,请重新输入。\n "); } UserShu++; break; } } } void logout() //销户 { int i,n,m; i=mingyan(); m=guayan(i); if(m==1) m=miyan(i); while(m==1) { printf("您确定要注销您的账户?\n <1>确认 <2>取消 \n"); scanf("%d",&n); if(n==1) { for(;i { strcpy(gUser[i],gUser[i+1]); strcpy(gMima[i],gMima[i+1]); YuE[i]=YuE[i+1]; } } UserShu--; printf("销户成功!\n"); m=0; } } void account() //转账 { int i,n,j,s=1; float k; char User[32]; i=mingyan(); n=guayan(i); if(n==1) n=miyan(i); while(n==1) { printf("请输入目标账户:"); scanf("%s",User); for(j=0;j { if(strcmp(gUser[j],User)==0) { n=2; break; } } if(j==UserShu) printf("目标账户不存在,请重新输入。\n"); } while(n==2) { printf("请输入转账金额:"); scanf("%f",&k); if(k<=YuE[i]) { YuE[i]=YuE[i]-k; YuE[j]=YuE[j]+k; printf("转账成功!\n您的当前余额为: %.2f\n",YuE[i]); break; } else printf("余额不足,请重新输入。\n"); } } void lose() //挂失 { int n,i,m; i=mingyan(); m=guayan(i); if(m==1) m=miyan(i); if(m==1) { printf("您确定要挂失您的账户?\n <1>确认 <2>取消 \n"); scanf("%d",&n); if(n==1) { strcpy(Ggua[guashu],gUser[i]); guashu++; printf("%s 账户挂失成功!\n",gUser[i]); } } } void tuichu() { } void chaall() //查询所有用户信息 { int i; for(i=0;i printf("用户名:%15s 余额:%.2f\n",gUser[i],YuE[i]); } int mingyan() //用户名验证 { int m=1,i; char User[32]; while(m==1) { printf("请输入您的用户名: "); scanf("%s",User); for(i=0;i if(strcmp(gUser[i],User)==0) { m=0; break; } if(i==UserShu) printf("该用户不存在,请确认后再输入。 \n"); } return i; } int guayan(int i) //挂失验证 { int j,n; for(j=0;j { if(strcmp(gUser[i],Ggua[j])==0) { printf("此用户已经挂失,请解挂后再进行操作!\n"); n=0; break; } } if(j==guashu) n=1; return n; } int miyan(int i) //密码验证 { char mima[32]; while(1) { printf("请输入您的密码: "); scanf("%s",mima); if(strcmp(gMima[i],mima)==0) { printf("登陆成功!\n"); printf("用户名:%s 余额: %.2f \n",gUser[i],YuE[i]); break; } else printf("您输入的密码不正确,请重新输入。\n"); } return 1; }
程序截图: