C语言实验报告

 

 

 

题目名称:C语言模拟ATM自动取款机系统

C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能;

代码实现的功能:

  1. 账号及密码输入:用户输入密码,才能进入。
  2. 登陆成功界面:共有六个选项,查询余额、取款、存款、转账,修改密码,退出分别对应1,2,3,4,5,6选项,若序号输入不正确会予以提示。
  3. 选定1后,进入查询余额界面; 选定2后,进入取款界面; 选定3后,进入存款界面; 选定4后,修改密码,选定5,进入转账;选定6,退出界面;
  4. 如果过程中操作有误,提醒是否继续操作。

二:分析问题

一:问题描述:

(1)

在main()函数用switch语句现实菜单功能,根据用户选择,进入不同功能区;

(2)

模拟ATM自动取款机功能的实现,需要用自定义函数实现板块化。

所用的自定义函数如下:

登录界面:void enter();

登录成功后的界面:void jiemian();

实现密码输入:void land();

实现余额查

询:void inquiry();

实现取款功能:void withdraw();

实现存款功能:void deposit();

实现转账:void zhuangzhang();

实现修改密码:void correctscrect();

结束:void out();

输入有误,提示是否继续:int keep();

(3)

库函数:strcmp();system();

(4)

用户信息

结构体存储个人信息;

结构体数组存储的存储设计数据库知识,本实验模拟ATM机,简化处理,已经注册用户数据信息存储在结构体数组中;

三:解决问题

1. 用户信息

用结构体来描述用户的姓名、卡号、密码以及金额。

假设用户信息在结构体数组中;

2. 主函数函数

Switch语句实现菜单话;

(3)Void  land();

  需要解决的问题:1.密码输入2.检查密码是否输入正确3.密码输入次数不能超过3次。(if语句)    

(4)void jiemian();

提示用户进行操作printf(); 

(5)void withdraw();

1.取款时,输入的金额不能为被100整除;

2.取款的金额不能大于余额;

3.修改余额;

(6)void deposit();

1.存款金额不能不被100整除

(7)void correctscrect();

1.修改密码,需要重复输入二遍来确定密码是否修改成功;

(8)void zhuangzhang();

1.转账金额不能不被100整除

2.输入对方账号

3.转账金额是否足够,不能不被100整除

(9)int keep();

1.当输入有误时,提醒是否继续操作;

(8)void out();

 1.调用main(),下一个用户操作;

 

 #include <stdio.h>
 #include <stdlib.h>
 #include<string.h>
 #include <unistd.h>
 void enter();//进入界面
 void jiemian();//登录成功界面
 void land();//登录
 void inquiry();//查询余额
 void withdraw();//取款
 void deposit();//存款
 void correctscrect();//修改密码
 void out();//退出
 void zhuangzhang();//转账
 int keep();//当输入有误是否继续

 /*
 **用户信息
 */
 struct essage
 {
     ];
     long int acountion;
     long int  keyword;
     float money;
 };
 ]= {{,,},{,,},{,,}};

 int X;
 int main()
 {
     int i;

     land();
     jiemian();
 /**
 菜单
 **/
     )
     {

         printf("请输入编号:\n");
         scanf("%d",&i);
         switch  (i)
         {
          :
         {
             system("cls");
             inquiry();
             printf("按任意键继续!\n");
             system("pause");
             jiemian();
             break;
         }
         :
         {
             system("cls");
             withdraw();
             printf("按任意键继续!\n");

             system("pause");
             jiemian();
             break;
         }
         :
         {
             system("cls");
             deposit();
             printf("按任意键继续!\n");

             system("pause");
             jiemian();
             break;
         }

         :
         {
             system("cls");
             correctscrect();
             printf("按任意键继续!\n");

             system("pause");
             jiemian();
             break;
         }

         :
         {
             system("cls");
             zhuangzhang();
             system("pause");
             jiemian();
             break;
         }
         :
         {
             printf("欢迎下次!\n");
             system("cls");
             main();

         }
         default :
         {
             break;

         }

         }
     }
     ;
 }

 void enter()
 {
     printf("******************************\n");
     printf("********welcome to ATM!*******\n");
     printf("******************************\n");
 }
 int  keep()
 {
     char a;
     printf("是否继续?\n");
     )
     {

         printf("继续请输入:y   退出按n\n");
         getchar();

         //a= getchar();
         //getchar();
         scanf("%c",&a);
         if(a =='y')
         {
             ;
         }
         else if(a=='n')
             ;
         else
         {
             printf("输入有误!\n");
             continue;
         }
     }
 }

 void land()
 {
     long int   keyword;
     int i;
     ;
     )
     {
         printf("请输入密码:\n");
         count++;
         scanf("%ld",&keyword);
         ; i<; i++)
         {

             if(keyword==a[i].keyword)
             {
                 X = i;
                 return;
             }
         }
         )
         {
             printf("你输入的密码次数超过3次!\n");
             exit();

         }
         else
         {

             printf("你输入密码有误!请重新输入!\n");

         }
     }
 }

 void inquiry()
 {
     printf("你当前余额为:%f\n",a[X].money);
 }
 void  jiemian()
 {
     printf("**************1.查询余额           2.取款*************\n");
     printf("**************3.存款               4.修改密码*********\n");
     printf("**************5.转账               6.退出**************\n");

 }
 void deposit()
 {
     int  n;
     int j;
     )
     {
         printf("请输入存储金额:\n");
         scanf("%d",&n);

         ==)
         {
             a[X].money+=n;
             printf("存款成功!\n");
             printf("当前余额:%f",a[X].money);
             return;
         }
         else
         {
             printf("输入金额有错!\n");
             j = keep();
             )
             {
                 system("cls");
                 continue;
             }
             else
                 return ;

         }
     }
 }
 void withdraw()
 {
     int  n;
     int m;
     )
     {
         printf("余额不足!\n");
         return;

     }

     )
     {

         printf("请输入取款金额!\n");
         scanf("%d",&n);

         if(n>a[X].money)
         {
             printf("余额不足!\n");
             m = keep();
             )
                 continue;
             else
                 return;
         }
         !=)
         {
             printf("输入有误!请重新输入取款金额!\n");

             //  system("pause");
             m = keep();
             )
                 continue;
             else
                 return;
         }
         else
         {
             printf("成功!");
             a[X].money=a[X].money-n;
             return ;

         }
     }

 }
 void correctscrect()
 {
     int b;
     long int n;
     long int m;
     long int  q;
     )
     {
         printf("请输入旧密码:\n");
         scanf("%ld",&q);
         if((q!=a[X].keyword))
         {
             printf("输入有误!\n");
             b =keep();
             )
                 continue;
             else
                 return;
         }
         else
             break;
     }
     )
     {
         printf("请输入新密码:\n");
         scanf("%ld",&n);
         printf("请在一次输入新密码:\n");
         scanf("%ld",&m);
         if(n!=m)
         {
             printf("二次密码不一样!\n");
             b = keep();
             )
                 continue;
             else
                 return ;
         }
         else
         {
             printf("修改密码成功!\n");
             a[X].keyword = n;
             break;
         }
     }
 }

 void zhuangzhang()
 {
     long int  n;
     int   m;
     int i;
     int j;
     ;

     printf("转账!\n");
     )
     {
         printf("输入转账账号!\n");
         scanf("%ld",&n);

         ; i<; i++)
         {
             if(a[i].acountion==n)
             {
                 leap=;
                 break;
             }

         }
         )
         {

             printf("你输入的账号不存在!\n");
             j = keep();
             )
             {
                 system("cls");
                 continue;
             }
             else
                 return ;
         }
     }

     )
     {
         printf("输入转账金额;\n");
         scanf("%d",&m);
         )
         {
             printf("余额不足!\n");
             j= keep();
             )
                 continue;
             else
                 return;

         }

         if(m>a[X].money)
         {
             printf("余额不足!\n");
             j= keep();
             )
                 continue;
             else
                 return;
         }
         !=)
         {
             printf("输入有误!请重新输入取款金额!\n");
             j = keep();
             )
                 continue;
             else
                 return;
         }
         else
         {
             printf("转账成功!");
             a[X].money=a[X].money-m;
             a[i].money = a[i].money+m;

             return ;

         }
     }

 

语言模拟ATM自动取款机系统的更多相关文章

  1. C#实现ATM自动取款机

    本篇用C#实现ATM自动取款机的一些功能.面临的第一个问题是:如何把与自动取款机相关的有形的.无形的方面抽象出来.大致如下: (1)关于用户帐号的类:Account(2)关于银行数据库的类:BankD ...

  2. MySQL银行ATM存取款机系统(需求分析)

    银行ATM需求文档 一.E-R图形文 二.开发步骤 1.明确需求--数据库设计--编码实现功能--测试 2.绘制e-r图--绘制数据库模型图--使用三大方式规范数据库结构 三.开发思路 1. 模型图综 ...

  3. 数据库期末作业之银行ATM存取款机系统

    --一.建库.建表.建约束 --1.使用SQL创建表 --客户信息表userinfo --字段名称 说明 备注 --customerID 顾客编号 自动编号(标识列),从1开始,主键 --用序列seq ...

  4. mysql的ATM存取款机系统

    ##建库 CREATE DATABASE bankDB; ##客户信息表 CREATE TABLE userInfo ( customerID INT PRIMARY KEY AUTO_INCREME ...

  5. ATM自动取款机程序感想

    上周四的Java考试,老师并没有我们考暑假给我们布置的样卷的java程序,而是让我们做一个设计ATM的程序,然而这个对于我们来说好难,因为暑假没有学好java,首先基础知识还没有掌握,输入数据一开始都 ...

  6. C语言模拟ATM机界面

    虽然是满屏的printf.printf.printf.printf......尴尬 但是一个小项目做下来还是能学习到很多的,有很多小的问题,不是亲自来敲一遍代码,是不会发现的.他的框架,每一个小函数功 ...

  7. linux 下用C实现 ATM 自动取款机功能 (进程间通信)

    直接先上图: 项目需求: 主要分为两人大模块: 客户端 .进入时的功能开户.销户.登录.解锁 开户:输入姓名.身份证号.设置密码,如果开户成功,则服务器上保存一个账号信号(一个账号存一个文件,文件名建 ...

  8. 5、原生jdbc链接数据库实例-自动取款机

    ATM自动取款机需求 一.登陆 1.界面要求:服务选择 1.老用户登陆:进入后输入卡号密码登陆 2.新用户开户:开户需要输入身份证号,记录姓名,开户时间.然后机器给出卡号,原始密码:111111. 卡 ...

  9. 银行ATM存取款系统(C语言实现)

    这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...

随机推荐

  1. 生产/消费 发送和接收消息---基于kombu和redis交互

    from kombu import Connection, Exchange, Queue media_exchange = Exchange('media', 'direct', durable=T ...

  2. Leetcode: Heaters

    Winter is coming! Your first job during the contest is to design a standard heater with fixed warm r ...

  3. ubuntu 安装transmission最新版

    访问 www.transmissionbt.com   下载最新版 1)下载transmission:#  wget https://transmission.cachefly.net/transmi ...

  4. codeforce 121E - Lucky Array

    10^4以内只由4和7构成的数字只有31种,那么做法就很简单了,求出每个数字与其最接近的幸运数的差值,然后建立线段树,线段树维护区间最小值和最小值个数,如果操作过程中最小值<0,那么就去对差值进 ...

  5. linux系统无法启动解决方案

    windows和linux双系统一般先安装Windows,分两个主分区,把Linux安装在另外的主分区上.Linux编译内核,添加NTFS分区支持,然后Mount NTFS 分区即可访问Windows ...

  6. Bug修正

    名称:nice! 项目名称:约跑app 组长:李权 成员:韩媛媛 刘芳芳 宫丽君 于淼 Bug修正: 1.我看到的现象:退出当前的账号后,按返回键可以再次进入登录界面. 期待的现象:能够安全登陆和退出 ...

  7. ASP.NET MVC 异步获取和刷新ExtJS6 TreeStore

    从数据库获取构造树结构是ExtJS TreePanel的核心技术,常用方法是TreeStroe里配置proxy,这种方式的root成了一个不受控制的节点. TreeStroe的root实际是一个层叠j ...

  8. 多Web服务器之间共享Session的解决方案

    一.提出问题: 为了满足足够大的应用,满足更多的客户,于是我们架设了N台Web服务器(N>=2),在多台Web服务器的情况下,我们会涉及到一个问题:用户登陆一台服务器以后,如果在跨越到另一台服务 ...

  9. Qt:QObject translate

    qobject类是qt所有对象的基类. QObject是Qt的核心对象模型.中心在这个模型是一个非常强大的无缝沟通对象称为信号与槽机制.你可以连接一个信号槽连接()和破坏的连接与断开连接().为了避免 ...

  10. 字符转换(C、C++)

    标准C和C++库提供了一些转换工具.但是它们在易用性.扩展型和安全型上各有不同. 例如,以atoi为代表的一系列标准C函数就有一些限制: * 只支持单向转换:从文本到内部数据类型.要用C库函数实现另一 ...