美文网首页
ATM模拟编程

ATM模拟编程

作者: 26小瑜儿 | 来源:发表于2019-07-30 23:00 被阅读0次

ATM模拟项目:

1.目的 : 熟练掌握while语句、if else语句、函数调用等知识,培养自己的逻辑思维,养成良好的逻辑思维。

2.技术知识:

(1)主函数代码的结构:只搭框架,不做具体的事情,具体的事情交由每一个函数去实现(降低耦合性)

(2)exit(...)的用法

(3)代码块:代码块就是{}  {}

(4)函数返回值;可以有,可以没有,可以

(5)函数的应用:解决代码结构复杂,不利于阅读,不利于移植的问题

怎么用

返回值函数名称(参数,参数){

}

3.

exit(EXIT_SUCCESS);           //正常退出

exit(EXIT_FAILURE);             //错误退出

也可自行编写exit函数:

void exitATM(int status){

    exit(status);

}

关于函数返回值的知识:

int add(int a,int b){

int result =a+b;

//返回相应数据

//break for while

//return返回值    提前终止某个函数

return result;

}

//没有返回值

 void test(void){

If(2>3){

    return;  //提前终止

}

}

实战项目:ATM模拟:

不用函数实现:

#include <stdlib.h>

#include "stdafx.h"

#include"iostream"

int main(int argc, const char * argv[]) {

    //保存原始密码

    int password = 123;

    int inputPwd = 0;

    int totalTime = 4;

    int totalMoney = 1000;

    printf("**************\n");

    printf("  欢迎使用\n");

    printf("**************\n");

    //一个模块完成一个功能 耦合性降低

    printf("请输入密码:");

    while (1) {

        scanf("%d", &inputPwd);

        if (inputPwd == password) {

            //密码正确

            break;

        }else{

            totalTime--;

            if (totalTime == 0) {

                printf("此卡已冻结 请联系客服!\n");

                //退出

                exit(EXIT_FAILURE);

            }else{

                printf("密码不正确 请重新输入:");

            }

        }

    }

    //密码正确

    int  choice;

    while(1){

        printf("**************\n");

        printf("1.取款\n");

        printf("2.存款\n");

        printf("3.设置密码\n");

        printf("4.退出\n");

        printf("**************\n");

        //判断输入是否合法

        int temp;

        while (1) {

            //去掉上一次输入的回车符 \n

            printf("请选择操作:");

            scanf("%d", &temp);

            printf("%d\n",temp);

if(temp<1||temp>4){

printf("输入不合法\n");

}else {

choice=temp;

break;

}

        }

        //检测到底选择的是什么操作

        char choice2;

        int newPassword1 = 0;

        int newPassword2 = 0;

        switch (choice) {

            case 1:

                //取款

                while(1){

                    int outMoney = 0;

                    printf("请输入取款金额:");

                    scanf("%d", &outMoney);

                    if (outMoney > totalMoney) {

                      //金额不足

                        printf("余额不足是否继续(y/n):");

                        getchar();

                        choice2 = getchar();

                        if (choice2 == 'n') {

                            break;

                        }

                    }else{

                        totalMoney -= outMoney;

                        printf("取款成功 余额为:%d\n", totalMoney);

                        break;

                    }

                }

                break;

            case 2:

                printf("请输入存款金额:");

                int inputMoney = 0;

                scanf("%d", &inputMoney);

                totalMoney += inputMoney;

                printf("存款成功 余额为:%d\n", totalMoney);

                break;

            case 3:

                while (1) {

                    printf("请输入新密码:");

                    scanf("%d", &newPassword1);

                    printf("请确认密码:");

                    scanf("%d", &newPassword2);

                    if (newPassword1 == newPassword2){

                        password = newPassword1;

                        printf("更改密码成功\n");

                        break;

                    }else{

                        printf("两次密码不一致 ");

                    }

                }

                break;

            default:

                printf("感谢你的使用 再见!!!\n");

                exit(EXIT_SUCCESS);

                break;

        }

    }

    return 0;

}

用函数实现:

#include 

#include  

#include 

bool loginATM();

void welcome();

void exitATM(int status);

void showMenu();

int getChoice();

void withdraw();//取款

bool isContinue();

void deposit();//存款

void setPassword();

//定义一个全局变量

int orgPassword = 123;

int totalMoney = 1000;


int main() {

//欢迎界面

welcome();

//登录

bool result = loginATM();

if (result == false) {

//密码错误次数过多

exitATM(EXIT_FAILURE);

}

//主要操作

while (1) {

//提示操作

showMenu();

//接收用户的选择

int choice = getChoice();

//判断用户的选择

switch(choice){

case 1:

//取款

withdraw();

break;

case 2:

//存款

deposit();

break;

case 3:

//设置密码

setPassword();

break;

default:

exitATM(EXIT_SUCCESS);

break;

}

}

return 0;

}

bool loginATM(void){

int password = 0;

int wrongTime = 0;

while(1){

printf("   请输入密码:");

scanf("%d", &password);

if (password == orgPassword) {

return true;

}else{

wrongTime++;

if (wrongTime == 4) {

return false;

}else{

printf("   密码错误,");

}

}

}

}

void welcome(){

printf("******************\n");

printf("   欢迎使用ATM\n");

printf("******************\n");

}

void exitATM(int status){

printf("****************************\n");

printf("   感谢你的使用 再见!!!\n");

printf("****************************\n");

exit(status);

}

void showMenu(){

printf("*****************\n");

printf("   1.取款\n");

printf("   2.存款\n");

printf("   3.设置密码\n");

printf("   4.退出\n");

printf("*****************\n");

}

int getChoice( )

{

//将输入的所有字符串全部从缓存里面读取出来

int temp;

int ch;

while (1) {

printf("   请选择操作:");

scanf("%d", &temp);

//确保值输入一个字符

if (temp<1||temp>4) {

printf("   输入不合法,");

} else{

//获取输入的字符

ch=temp;

//虽然输入一个字符 也可能不正确

return ch;

}

}

}

//取款

void withdraw(){

int outMoney = 0;

while (1) {

printf("   请输入取款金额:");

scanf("%d", &outMoney);

if(outMoney > 0 && outMoney <= totalMoney){

totalMoney = totalMoney - outMoney;

printf("   取款成功 余额为:%d\n", totalMoney);

//提示是否继续

bool ch = isContinue();

if (ch == false) {

return; //break

;

}

}else{

printf("   余额不足,");

}

}

}

bool isContinue(){

printf("   是否继续?(y/n):");

getchar();

char ch = getchar();

if (ch == 'n') {

return false;

}else{

return true;

}

}

void deposit(){

int intputMoney = 0;

while (1) {

printf("   请输入存款金额:");

scanf("%d", &intputMoney);

totalMoney = totalMoney + intputMoney;

printf("   存款成功,余额为:%d\n", totalMoney);

bool ch = isContinue();

if (ch == false) {

return; //break

;

}

}

}

void setPassword(){

int newPwd1 = 0;

int newPwd2 = 0;

while (1) {

//输入原始密码

bool result = loginATM();

if (result == true) {

while (1) {

printf("   请输入新密码:");

scanf("%d", &newPwd1);

printf("   请确认密码:");

scanf("%d", &newPwd2);

if (newPwd1 == newPwd2) {

printf("   设置密码成功!\n");

return;

} else{

printf("   两次密码不一致,");

}

}

}

}

}

可见 运用函数实现后主程序轻松易读,结构清晰,还可以自己创建一个 头文件.h

 .h文件用于函数的声明

.c 实现文件 封装操作( .c文件用于实现某个头文件里面的函数)

使结构更加清晰明了。

一天的学习感悟:

     今天理会了函数的定义,用法,功能,并通过ATM项目实例学习并练习了while、if、等语句,锻炼了写代码的逻辑思维,发现了之前写代码的很多不良习惯,如不喜欢用函数,没有做到使一个代码块只写一个功能,使代码繁杂紊乱,可移植性差,写代码很多时候思考过少,有些时候甚至照搬照抄,没有培养自己的逻辑思维能力,今后会多加注意,多学习老师、同学写代码的好习惯,主要还是要大量的练习,敲代码!敲代码!敲代码!今天虽然进度不太明显,但经过一天的学习和练习 ,故余虽愚,终有所获。

相关文章

  • ATM模拟编程

    ATM模拟项目: 1.目的 : 熟练掌握while语句、if else语句、函数调用等知识,培养自己的逻辑思维,养...

  • 模拟ATM系统

  • Day05 - 作业

    作业:ATM 一、作业要求:模拟实现一个ATM + 购物商城程序 额度15000或自定义实现购物商城,买东西加入购...

  • ATM简易模拟(C语言)

    简易的实现了ATM的工作流程 代码逻辑并不多,主要是对循环的使用,而且做的比较简易,任然有些bug未去解决 代码如...

  • Day12_09

    面向对象案例综合案例 ATM机的模拟程序 package Day12_09_01; public class AT...

  • C-ATM实战

    目的 通过模拟实现ATM相关功能,达到训练条件语句,循环语句,函数的作用 技术 switch语句,while循环与...

  • java笔记——模拟ATM机例子

    模拟ATM机,实现用户登录、查询、取款、存款和退出。 假定一个银行卡账户,程序执行的时候提示用户输入账号,然后输入...

  • 关于链式编程的理解:常看牢记

    模拟Masonry的链式编程,形式如: 思想(简单理解):

  • 编程模拟自然系统,程序1:bouncing ball

    《代码本色:用编程模拟自然系统》是一本好书,一定要读一读。用编程模拟自然,是我一直以来都想做的事,也是我编程的热情...

  • 2017年校招全国统一模拟笔试(第五场)编程题集合

    2017年校招全国统一模拟笔试(第五场)编程题集合 地址:2017年校招全国统一模拟笔试(第五场)编程题集合 偶串...

网友评论

      本文标题:ATM模拟编程

      本文链接:https://www.haomeiwen.com/subject/zuborctx.html