ATM模拟机续作

ATM2.0


继上次的ATM1.0之后,ATM2.0又出现了,这次的程序设计在我伟大的巧姐老师帮助下,完善了许多,我觉得还算比较成功的,但仍然存在许多bug(我觉得),不过没有关系,现在我正学文件操作,等彻底掌握后,就可以实现更多的功能了

/*
**程序说明:模拟ATM机 (这个初步的还不能建立用户个人档案)
**设计时间:2016.12.7—2016.12.9 
**设计者:LAN7 
*/
#include<stdio.h>
#include<stdlib.h>
/*************************************************************************
                            定义一个取款的函数  
*************************************************************************/
int qukuan(int money)
{
    printf("请输入您的取款金额(友情提示:本机取款金额为100的整数倍):");
    int m;//定义变量m,来判断money值是否有变动 
    scanf("%d",&m);
    if(m<=0)//存款金额为负,非法操作,退出 
    {
        printf("警告!小熊孩子不要作\n"); 
        return money;
    }
    else if(m>money)//所取金额大于存款,非法操作,退出
    {
        printf("对不起,你太穷了,没那么多钱!\n");
        return money;
    }
    else if(m%100!=0)//存入金额格式不对,非法操作,退出
    {
        printf("你个智障,会数钱吗!\n");
        return money;
    }
    else //正确操作,返回值改变 
    {
        money = money - m;
        return money;//取款后的金额 
    }
}
/*************************************************************************
                            定义一个存款的函数  
*************************************************************************/
int cunkuan()
{
    int money;//存款金额 
    printf("请输入您的存款金额(友情提示:本机存款金额低于100000,且存款金额为100的整数倍):");
    scanf("%d",&money);
    if(money<=0)//输入的存款金额非法 
    {
        printf("警告!小熊孩子不要作\n");
        return 0;
    }
    else if(money>100000)//输入金额过大 
    {
        printf("您存入的金额过大。。。本机。。本机操作有些吃力。。。\n");//需改一下,这个不属于非法操作。。!!!!!!!!!!!!!!!!!!!!!!! 
        return 0;
    }
    else if(money%100!=0)//输入金额格式不对 
    {
        printf("你会数钱吗,RMB有这样的嘛!!\n");
        return 0; 
    } 
    else if(money>0&&money<100000)//正确合法的金钱值 
    {
        return money;//返回金钱值 
    }
    else//用户操作非法 
    {
        printf("不要输入其他什么鬼画符,本机拒绝识别!\n");
        return 0;
    }
}
/*************************************************************************
                           定义一个显示主页面的函数  
*************************************************************************/
void show()
{
    system("cls");//清屏,将上次操作记录清除 
    int i;
    char c,b;
    c=21;
    b=1;
    for(i=1;i<=40;i++)//主界面边框的构建,VC和DevC不太一样,DevC的21的Ascii码的字符显示不出来。。。。 
    {
        printf("%c ",c);
    }
    printf("\n\n");
    for(i=1;i<=15;i++)//使字体居中, 
    {
        printf("  ");
    }
    printf("欢迎使用用ATM存款机\n\n");//标题 
    for(i=1;i<=18;i++)
    {
        printf("  ");
    }
    printf("1.存款\n\n");//选项一 
    for(i=1;i<=18;i++)
    {
        printf("  ");
    }
    printf("2.取款\n\n");//选项二 
    for(i=1;i<=18;i++)
    {
        printf("  ");
    }
    printf("3.查询\n\n");//选项三 
    for(i=1;i<=18;i++)
    {
        printf("  ");
    }
    printf("0.退出\n\n");//选项四 
    for(i=1;i<=27;i++)
    {
        printf(" ");
    }
    printf("请根据您的需要选出功能号%c\n\n",b);
    printf("\n");
    for(i=1;i<=40;i++)//打印出格式底线 
    {
        printf("%c ",c);
    }
    printf("\n"); 
}
/*************************************************************************
                      定义一个对下一步操作判断的函数  
*************************************************************************/
int choose()
{
    int v;
    printf("请选择您的下一步操作   1->继续 0->退出\n");
    scanf("%d",&v);//用户的选择 
    if(v==1)
    {
        show();//选1为继续,重新加载主页面 
        return 0;
    }
    if(v==0)
    {
        printf("欢迎您的再次使用!");//选0直接退出程序 
        return 0;
    }
    else
    {
        show();
        return 0;
    }

}
/*************************************************************************
                            定义条例说明函数  
*************************************************************************/
void tl()
{
    system("cls");//清屏,重新加载页面 
    long long i,time;
    int k,m,j,v,l,t=0,p;
    char b[130]={"故本机将你的账户余额清零!!"};//14个字符
    char a[300]="警告由于您对于本机太不尊重了!!!";//17个字符 
    for(i=1;i<=40;i++)//条例阅读界面显示 
    {
        printf("**");
    }
    printf("\n\n");
    for(i=1;i<=20;i++)//使字体居中, 
    {
        printf("  ");
    }
    printf("条     例\n\n\n"); 
    for(i=1;i<=40;i++)//条例阅读界面显示 
    {
        printf("**");
    }
    printf("\n\n\n");
    for(i=1;i<=9;i++)//使字体居中, 
    {
        printf("  ");
    }
    printf("1:本机知道你是有智慧的人,请不要多次戏弄本机!\n\n");//条例一 
    for(i=1;i<=9;i++)//使字体居中, 
    {
        printf("  ");
    }
    printf("2:除上述1、2、3选项,请不要输入其他违法指令\n\n");//条例二 
    for(i=1;i<=9;i++)//使字体居中, 
    {
        printf("  ");
    }
    printf("3:存取款时请不要输入非法金额,不然会让他人觉的你很智障!!!\n\n");//条例三 
    for(i=1;i<=9;i++)//使字体居中, 
    {
        printf("  ");
    }
    printf("4:你的钱在我手里!!在我手里!!在我手里!!\n\n\n\n\n"); //条例四 
    for(i=1;i<=40;i++)//条例阅读界面显示 
    {
        printf("**");
    }
    printf("\n\n");  
    for(i=1;i<=3;i++)//三次,使用户确定选择三次 
    { 
        t = 0;
        for(j=1;j<=12;j++)//使字体居中, 
        {
            printf("  ");
        }
        printf("你确定看仔细了!!!   1->确定 0->不确定\n");
        scanf("%d",&k);//用户的选择 
        if(k==1)//选择1,继续执行,直到满三次 
        {
            continue;
        } 
        else if(k==0)//选择0,打印警告 
        {
            for(j=1;j<=12;j++)//使字体居中, 
            {
                printf("  ");
            }
            printf("不确定也没用!!!继续给我看!!\n"); 
        }
        else//用户输入非提示操作,由t来标志 
        {
            t = 1;
            break;
        }
    }
    if(t==1)//t值为1,表示如果用户在阅读条例时输入违法操作 
    {
        printf("\n\n\n\n\n\n\n\n\n\n\n\n");
        system("cls");//先清屏,留以空间警告 
        printf("\n\n\n\n\n\n\n\n");
        for(i=1;i<=15;i++)//使字体居中, 
        {
            printf("  ");
        }
        printf("搁这你也不老实是吧!\n");
        for(i=1;i<=1500000000;i++);//时间延迟 
        {
        }
        for(v=1;v<=5;v++)//警告显示,闪烁5次 
        {
            system("cls");//每次闪烁后都需要清屏 
            for(i=1;i<=300000000;i++);//时间延迟 
            printf("\n\n\n\n\n\n\n\n");
            for(i=1;i<=20;i++)//使字体居中, 
            {
                printf("  ");
            }
            printf("警告!!\n"); 
            for(i=1;i<=15;i++)//使字体居中, 
            {
                printf("  ");
            }
            printf("本机将你的账户余额清零!!\n");
            for(i=1;i<=15;i++)//使字体居中, 
            {
                printf("  ");
            }
            printf("本机将你的账户余额清零!!\n");
            for(i=1;i<=15;i++)//使字体居中, 
            {
                printf("  ");
            }
            printf("本机将你的账户余额清零!!\n");
            for(i=1;i<=300000000;i++);
        }
        system("cls");
        printf("\n\n\n\n\n\n\n\n\n");
        for(i=1;i<=16;i++)//使字体居中, 
        {
            printf("  ");
        }
        printf("怕了吧,怕就不要那么作了!\n\n\n\n\n");
        for(i=1;i<=2000000000;i++)
        {
        }
    }   
/****************************************************
说明,本段代码本想使汉字一个一个出来。。可是汉字在
数组中的存储好像是两个空间存一个字。。。出不来效果
**************************************************** 
for(v=0;v<34;v=v+2)//变量V每增加一次,便多输一个字 
    {
        system("cls");//每次多输一个字便清屏 
        printf("\n\n\n\n\n\n\n\n\n\n\n\n");
        for(i=1;i<=10;i++)//使字体居中, 
        {
            printf("  ");
        }
        for(i=0;i<v;i++)//变量v与i相结合,达到每次多输出一个字的效果 
        {
            printf("%c ",a[i]);
            for(time=1;time<=500000000;time++);// 
            {
            }
        }
    }
    for(v=0;v<28;v=v+2)//这个for循环的效果和上一个一样,只不过输出的句子不一样 
    {
        system("cls");
        printf("\n\n\n\n\n\n\n\n\n\n\n\n");
        for(i=1;i<=10;i++)//使字体居中, 
        {
            printf("  ");
        }
        for(i=0;i<v;i++)
        {
            printf("%c ",b[i]);
            for(time=1;time<=500000000;time++);
            {
            }
        }
    }
*/
}  
/*************************************************************************
                            正式的主函数来了 
*************************************************************************/
int main()
{
    long long q;
    char n1; 
    //freopen("data.in", "r", stdin);
    //freopen("data.out", "w", stdout);
    int money,n,sum,change;//变量sum用来存储非法操作次数 
    money = 0;//记录存储用户的存款金额 
    sum = 0;//记录存储用户非法操作的次数 
    show();//初次打印主界面 
    while(1)
    { 
        scanf("%s",&n1);
        if(n1>='0'&&n1<='3')
        {
            n=n1-'0';
        }
        else
        {
            printf("请输入正确操作!!!小熊孩子不要作!!!\n");
            sum++;
            choose();
        } 
        if(n==1)//客户选择服务一 
        {
            change = money;//change该变量把钱数保存下来 
            money = money+cunkuan();
            if(change==money)//如果操作前后money值未改变,表明该用户进行非法操作 
            {
                sum++; //非法操作次数增加一次 
            }
            else
            {
                printf("存款成功!您的账户余额为:%d\n\n\n",money);
            }
            choose();//进行完本次操作后进行选择 
        }
        else if(n==2)//客户选择服务二 
        {
            change = money;
            money = qukuan(money);
            if(change==money)//如果操作前后money值未改变,表明该用户进行非法操作 
            {
                sum++;//非法操作次数增加一次
            }
            else
            {
                printf("取款成功!您的账户余额为:%d\n\n\n",money);
            }
            choose();//进行完本次操作后进行选择 

        }
        else if(n==3)//客户选择服务三 
        {
            printf("您的余额为:%d\n",money);
            choose();//非法操作次数增加一次
        }
        else if(n==0)//客户服务选择四 
        {
            printf("欢迎您的再次使用!\n");
            return 0;
        }
        /*else if(n<0||n>3)
        {
            printf("请输入正确操作!!!小熊孩子不要作!!!\n");
            sum++;
            choose();
        }*/ 
        if(sum>=3)//用户非法输入达到三次后,就退出本系统。。。。。。额,其实还是可以改改,改个弹出个使用说明 
        {
            printf("因为您的多次智障操作,本机不开心,本机有情绪!本机拒绝为你服务!!\n");
            printf("请阅读本条例后再次使用本机\n");
            for(q=1;q<=3000000000;q++)//时间延迟 
            {
            }
            tl();//用户违法操作达到三次后就出现条例阅读页面 
            sum = 0; 
            show();
        }//当触发该条件后,执行完相应函数后,并没有跳出那个页面,也就是说这个while的循环并没有进行,为什么! 
        if(sum>0)//有非法操作的时候,自动记录打印 
        {
            printf("警告:您已进行%d次非法操作,请注意您的操作\n",sum);
        } 
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值