怎样用c语言编写ATM系统

2024-11-26 20:31:54
推荐回答(4个)
回答1:

真正的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;  
    }

回答2:

#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");
}

回答3:

////////////////////////////////////////////////
根据下面的框加,完成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号;

写一个密码输入函数,进行注册时,用户输入密码

实现查询,取款,存款,转帐和修改密码的功能

回答4:

难度系数比较小