ATM基础功能模拟

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<iostream>

void read();
void kaihu();
int s(int id);
int n(int id,char password[20]);
void denglu();
int tuichu();
void zhuye();
void cunkuan();
void qukuan();
void xiugaimima();
void chaxunyu_e();
void chenggong();
void yemian();
void write();
void zhuanzhang();
void xiaohu();
void chuangli();

int i;
int j=0;
struct member
{
int id;
char password[20];
int yu_e;
};
struct member men[100];
void main()//主函数
{
chuangli();
yemian();
}
void yemian()//主页函数
{
int x;
system("color 8F");
printf("请选择您要办理的业务:\n");
printf("=====================\n");
printf("|1:开户     2:登录|\n");
printf("|3:退出            |\n");
printf("=====================\n");
scanf("%d",&x);
switch(x)
{
    case 1:kaihu();break;
    case 2:denglu();break;
    case 3:tuichu();break;
}
}

void denglu()//登录函数
{
    
    read();
    int id;
    char password[20];
    printf("请输入账号:\n");
    scanf("%d",&id);
    
    int c=s(id);

    if(c==1)
    {
        printf("请输入密码:\n");
        scanf("%s",&password);
        int m=n(id,password);
        int t=3;
        while(m==0)
        {
        t--;
        system("cls");
        printf("密码错误,请重新输入密码\n");
        printf("您还有%d次机会:",t);
        scanf("%s",&password);
        m=n(id,password);
        if(m==1)
        {
            zhuye();
        }
        if(t==1)
            {
                printf("您已经输入密码错误三次!\n");
                printf("系统即将退回主页!\n");
                yemian();
            }
        }
        zhuye();
    }
    else if(c==0)
    {
    printf("账号不存在!\n");
    }
}
int s(int id)//账号验证函数
{

for(i=0;i<100;i++)
{
    if(men[i].id==id)
    {
        return 1;
    }
}
return 0;
}
int n(int id,char password[20])//密码验证函数
{    
for(i=0;i<100;i++)
{
    if(men[i].id==id && strcmp(men[i].password,password)==0)
    {
        return 1;
    }
}
return 0;
}
void kaihu()//开户函数
{

    read();
    srand(time(NULL));
    int id=rand()%1000000+100000;//随机生成六位数的账号
    printf("账号:\n%d\n",id);
    int c=s(id);
    if(c==1)
        {
            printf("账号已存在!\n");
            _sleep(2000);
            yemian();
            
        }
    else 
    {
        men[j].id=id;
        printf("请输入密码:\n");
        scanf("%s",men[j].password);
        printf("请输入存款金额:\n");
        scanf("%d",&men[j].yu_e);
        printf("恭喜您开户成功!\n");
        j++;
        write();
        _sleep(2000);
        system("cls");
        yemian();
    }
    
}

void write()//文件写入函数
{
FILE *fp;
    fp=fopen("ATM.txt","w");
    fprintf(fp,"%d\n",j);
for(i=0;i<j+1;i++)
{    
    fprintf(fp,"%-10d",men[i].id);
    fprintf(fp,"%-10s",men[i].password);
    fprintf(fp,"%-10d\n",men[i].yu_e);
}
    fclose(fp);    
}

void read()//读取文件函数
{
FILE *fp;
    fp=fopen("ATM.txt","r");
    fscanf(fp,"%d",&j);
    for(i=0;i<j+1;i++)
    {    
    fscanf(fp,"%d",&men[i].id);
    fscanf(fp,"%s",men[i].password);
    fscanf(fp,"%d\n",&men[i].yu_e);
    }
    fclose(fp);    
}
int tuichu()//退出函数
{
    system("cls");
printf("欢迎下次光临!\n");
return 0;
}
void zhuye()//操作界面函数
{
int x;
system("cls");
printf("请选择您需要的操作:\n");
printf("===============================\n");
printf("|1:存款           2:取款    |\n");
printf("|3:修改密码       4:查询余额|\n");
printf("|5:转账           6:销户    |\n");
printf("|7:退出                      |\n");
printf("===============================\n");
scanf("%d",&x);
switch(x)
{
    case 1:cunkuan();break;
    case 2:qukuan();break;
    case 3:xiugaimima();break;
    case 4:chaxunyu_e();break;
    case 5:zhuanzhang();
    case 6:xiaohu();break;
    case 7:tuichu();break;
}
}
void cunkuan()//存款函数
{
system("cls");
int n;
printf("请输入您的存款金额:\n");
scanf("%d",&n);
(men[i].yu_e)=(men[i].yu_e)+n;
write();
chenggong();

}
void qukuan()//取款函数
{
system("cls");
int n;
printf("请输入取款金额:\n");
scanf("%d",&n);
if(n>men[i].yu_e)
{
    printf("余额不足!\n");
    _sleep(2000);
    zhuye();
    
}
else
{
    (men[i].yu_e)=(men[i].yu_e)-n;
    write();
    chenggong();
}
}
void xiugaimima()//修改密码函数
{
system("cls");
char mima[100];
printf("请输入新密码:\n");
scanf("%s",mima);
strcpy(men[i].password,mima);
write();
chenggong();
}
void chaxunyu_e()//查询余额函数
{
system("cls");
int x;
printf("您的余额:%d\n",men[i].yu_e);
printf("====================\n");
printf("|1:取款     2:存款|\n");
printf("|3退出             |\n");
printf("====================\n");
scanf("%d",&x);
switch(x)
{
    case 1:qukuan();break;
    case 2:cunkuan();break;
    case 3:zhuye();break;
}

}
void chenggong()//操作成功函数
{
    int x;
    system("cls");
printf("操作成功!\n");
printf("1:继续   2:退出\n");
scanf("%d",&x);
switch(x)
{
    case 1:cunkuan();break;
    case 2:zhuye();break;
}
}
void zhuanzhang()//转账函数
{
    int tid,a,g=0,h;
    printf("请输入您需要转账的卡号:\n");
    scanf("%d",&tid);
    for(a=0;a<j+1;a++)
    {
    if(tid==men[a].id && tid!=men[i].id)
    {
        g=2;
        break;
    }
    else if(tid==men[i].id)
    {
        printf("错误转账!\n");
        break;
    }
    if(a==j)
    {
        printf("用户不存在!\n");
        zhuanzhang();
    }
    }
while(g==2)
{
    printf("请输入转账金额:\n");
    scanf("%d",&h);
    if(h<=men[i].yu_e)
    {
        men[i].yu_e-=h;
        men[a].yu_e+=h;
        write();
        chenggong();
        g=0;
    }
    else
    {
        printf("余额不足!");
        g=0;
    }
}
}
void xiaohu()//销户函数
{
    int d;
    system("cls");
printf("是否需要销户\n");
printf("======================\n");
printf("|1:确定      2:取消|\n");
printf("======================\n");
scanf("%d",&d);
if(d==1)
{
for(;i<j+1;i++)
{
men[i].id=men[i+1].id;
strcpy(men[i].password,men[i+1].password);
men[i].yu_e=men[i+1].yu_e;
}
j--;
write();
printf("销户成功!\n");
_sleep(2*1000);
system("cls");
yemian();
}
else if(d==2)
{
zhuye();
}
}
void chuangli()
{
FILE *fp;
fp=fopen("ATM.txt","a");
fclose(fp);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正负一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值