真正的ATM系统不可能只是用C语言编写的,它应该是一套完整独立的系统,核心代码更机密,不会轻易的泄露。
C语言可以写一个类似于ATM系统的框架,用以模拟ATM机上的各种操作。
框架代码如下:
#include
#include
int main()
{
int choice =- 1;
while(1) {
printf("请选择\n1.login\t2.regist\n");
scanf("%d", &choice);
switch(choice) {
case 1:
login();
break;
case 2:
regist();
break;
default:
printf("输入有误,重新输入\n");
break;
}
}
return 0;
}
void login() {
printf("IN LOGIN\n");
int flag = -1;
int X = -1;
printf("输入账户和密码\n");
flag = search();
if(falg == 1) {
printf("存在,进入主页面\n");
X = menu();
if(X == 1)
return;
}
else if(flag == 0) {
printf("账户或密码错误\n");
return;
}
}
int regist() {
printf("IN REGIST\n");
return 1;
}
int menu() {
printf("IN MENU\n");
int key = -1;
int N = -1;
while(1) {
printf("请选择业务:1.refer\t2.deposit\t3.withdraw\t4.transfer\t5.resetPW\t6.退出\n");
scanf("%d", &key);
switch(key) {
case 1:
N = refer();
break;
case 2:
N = deposit();
break;
case 3:
N = withdraw();
break;
case 4:
N = transfer();
break;
case 5:
N = resetPW();
break;
case 6:
N = 6;
return 1;
break;
default:
printf("输入有误,重新选择:\n");
break;
}
if(N%2 == 0) {
printf("Error!\n");
}
}
}
int refer() {
printf("IN REFER\n");
//输出余额
return 1;
}
int deposit() {
printf("IN DEPOSIT\n");
//存钱
return 3;
}
int withdraw() {
printf("IN WITHDRAW\n");
//取钱
return 5;
}
int transfer() {
ptintf("IN TRANSFER\n");
//转账
return 7;
}
int resetPW() {
prtintf("IN RESETPW\n");
//重设密码
return 9;
}
#include
#include
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");
}
////////////////////////////////////////////////
根据下面的框加,完成ATM选择菜单循环
do{
一级菜单
请选择
switch(一级选择)
case 2:
do{
二级菜单
请选择
switch(二级){
}
}while(!='f' && !='F');
break;
}while(退出一级)
1.开户---->1......完成...
2.服务---->
3.退卡
请选择1-3:
2服务子菜单
A查询--->...... 暂停
B取款--->......
C存款
D转帐
E修改密码
F返回
请选择...A-F
-------------------------------------------------
typedef struct{
int cid;
char name[32];
char pwd[32];
int money;
};
根据以上要求,结合文件操作:
写一个函数,从 id.dat中读到最后一个客户的id号,为新帐户自加编卡号.如果第一次注册,id.dat文件不存在,则卡号初始值为 1001,以后就自动增加。
写一个函数,把注册帐号的信息存放在 XXXX.dat文件中,XXXX以卡号命名。
每注册一个新用户,重写 id.dat文件, 存放最近一个客户的 id号;
写一个密码输入函数,进行注册时,用户输入密码
实现查询,取款,存款,转帐和修改密码的功能
难度系数比较小