模拟ATM柜员机界面

<span style="font-size:18px;">/*文件名:test.c
 *完成日期:2016.4.4
 *目的:模拟ATM柜员机的操作
 *初始账号及密码都是123456
 */
#include<stdio.h>
void chaxun(int a3)            //查询账户余额函数
{
    int b;                     //使用临时变量b,亦可修改原始数据a3
    b=a3;                      //给存放临时金额的变量赋值
    printf("您的账户余额为:%d\n",b);  //输出当前账户余额
}
int qukuan(int a3)                  //取款函数
{
    int a,b;                         //定义取款数据及余额的临时变量
    printf("请输入您提取的金额:\n");
    scanf("%d",&a);                     //输入取款金额
    b=a3-a;                 //计算余额,a是取款后剩余的金额
    if(b<0)                   //判断金额是否小于0,若是则提示不能取款
    printf("您的余额不足\n");
    else                      //a>0,即取款后卡里还有剩余
    {
        printf("请收好你的%d元现金\n",a);//取款成功
        a3=a3-a;                      //取款后更新账户余额
    }
    return a3;               //返回余额
}
int xiugai(int a2)                                //修改账户密码
{
    int b,c=1,d,e=1;
    while(e)                                          //while循环,判断密码输入的密码是否正确
    {
        printf("请输入您的旧密码:");
        scanf("%d",&d);                             //输入旧密码
        if(d==a2)
            e=0;                                   //密码正确,跳出循环
        else
        {
            e=1;                                //密码有误,循环继续
            printf("你输入的密码有错误,请重新输入:");
        }
    }
    while(c)
    {
        printf("请输入您的六位数新密码\n");
        scanf("%d",&a2);
        printf("请确认您的六位数新密码\n");
        scanf("%d",&b);
        if(a2==b)
        {
            if(b>100000&&b<999999&&b/(b/100000)!=111111)  //判断输入的密码是否在限制的范围之内
            {
                c=0;                             //条件正确时,跳出循环
                    printf("密码修改成功\n");
            }
            else                                 //if语句的条件不成立,输入的密码超出保存的范围
            {
                printf("您输入的密码不符合要求,请重新输入\n");
                c=1;                              //c=1,修改不成功,循环继续
            }
        }
        else                     //两次输入的密码不一致
        {
            c=1;                     //循环继续,重新开始第二个while函数
            printf("您两次输入的密码不一致,请重新输入:\n");
        }
    }
    return a2;         //结束while函数,返回修改后的密码
}
int cunkuan(int a3)         //取款函数
{
    int k;
    printf("请输入您要存入的金额\n");
    scanf("%d",&k);              //输入存入的金额
    if(k<0)
    {
        printf("对不起,您输入的金额数值有误\n");
    }
    else
    {
        printf("\n您好,您已经存进了%d元\n",k);         //存进k元
        a3=a3+k;                           //更新余额值
    }
    return a3;                            //返回更新后的金额余额
}
int quka()
{
    printf("\n提醒您\n");
    printf("请收好您的卡,\n谢谢\n再见\n");
}
int main()
{
    int b=1,c,j,k;                    //临时变量
    int a1=123456,a2=123456,a3=1000;   //a1:账户,a2:密码,a3:金额
    printf("欢迎使用自动柜员机: \n\n\n");
    while (b==1)                            //一直循环,直到用户输入退出操作,即,b=1时,进行循环,b不等于1时跳出循环
    {
        printf("请输入您的账号:\n");
        scanf("%d",&j);                    //输入账号
        printf("请输入您的密码:\n");
        scanf("%d",&k);                    //输入密码
        if (j==a1&&k==a2)                    //判断账号密码是否正确,若正确
        {
            b=0;                          //正确,账户允许操作标志0
            printf("您的账户余额为:%d\n",a3); //输出当前账户金额
        }
        else
        {
            b=1;                             //账号密码错误,不允许操作权限1
            printf("对不起,您的账号或密码输入错误,请重新输入\n");
        }
    }
do                                               //输出菜单,等待用户按键操作
{
    printf("\n请输入您要操作的服务项目:\n");
    printf("1.查询余额\n");
    printf("2.取款\n");
    printf("3.修改密码\n");
    printf("4.存款\n");
    printf("5.取卡\n");
    scanf("%d",&c);                         //按键输入选择哪项操作
    switch (c)                               //对用户的按键操作做出相应的程序调用
    {
        case 1: chaxun(a3);break;
        case 2: a3=qukuan(a3);break;
        case 3: a2=xiugai(a2);break;
        case 4: a3=cunkuan(a3);break;
        case 5: quka();break;
    }
}
while (c!=4);                  //循环条件,c不等于4
   //先执行循环体中语句,再判断while语句中的条件是否为真,为真则执行
   return 0;
}
</span>
<span style="font-size:18px;">后记:第7—12行实现了银行卡的查询余额功能,直接在主函数中调用(即输入参数)即可。</span>
<span style="font-size:18px;">      第13—27行实现了取款功能;等待用户输入金额,并对取款金额与余额进行计算,判断是否满足取款条件。如果满足则取款,并计算取款后余额,更新余额值;否则提示余额不足。</span>
<span style="font-size:18px;">      第28—69行实现了修改密码的功能。首先,检测旧密码的正确性,其次,检查两次输入的密码是否一致及是否在保存的范围内。</span>
<span style="font-size:18px;">      第70—85行实现的是银行卡的存款功能,直接输入存款金额,判断是否为负,若否则更新账户余额并返回。</span>
<span style="font-size:18px;">      第86—90行实现银行卡的取卡函数,直接输入参数调用函数即可。</span>
<span style="font-size:18px;">      程序第91—135行是程序的主函数,通过两个循环实现了该ATM模拟程序,分成两个部分:</span>
<span style="font-size:18px;">     (1)对当前账户的正确性进行判断,使用的是if语句,并嵌套在while...do...函数里。</span>
<span style="font-size:18px;">     (2)等待该用户根据菜单操作并进行相应的程序调用,使用while..do...函数,判断账户是否正确,并进入菜单;根据菜单使用switch语句进行函数的调用。</span>

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值