【學習ios之路:C語言】小程式:實作類別似ATM取款機功能.

來源:互聯網
上載者:User

標籤:style   blog   io   ar   color   os   sp   for   on   

     小程式:類比ATM機取款的過程
     1).定義兩個能儲存5個整形數的數組,一個用於儲存5個人的卡號,一個用於儲存對應卡號的密碼
     2).判斷輸入的卡號是否在數組中。
     3).如果在數組中就讓輸入密碼,判斷是否和卡號對應的密碼匹配。
     4).判斷密碼,24小時內只允許輸入3次錯誤的密碼。輸入錯誤應該提示還剩下的輸入次數,3次都輸入錯誤提示24小時內不允許操作該卡。
     
     5).密碼正確就讓使用者對該賬戶進行相應的操作。
     6).注意取款的限制。
     7).述功能對於一個ATM機是迴圈的過程,也就是說每個客戶都會按照上面的操作進行操作,一個使用者操作完成,下一個使用者來了還可以進行相應的操作.

  1.函式宣告部分:

<span style="font-size:14px;">//隨機產生卡號void InputCard(int m[],int count);//隨機產生密碼void InputPwd(int m[],int count);//隨機產生moneyvoid InputMoney(int m[], int count);//判斷卡號是否正確BOOL isCard(int m[],int count,int username);//輸出卡號和密碼void OutputCard_Pd(int m[], int count);//判斷密碼是否正確BOOL isPwd(int password, int pwd);//根據帳號擷取密碼int requestPwd(int username, int m[], int count);//取款操作int OutputMoney(int a, int b);//轉賬操作BOOL tranMoney(int a, int m[], int count);//存款操作int  cunMoney(int a , int b);</span>
2.對應方法實現

<span style="font-size:14px;">#import <Foundation/Foundation.h>//隨機輸入void InputValue(float a[], int count){    for (int i = 0; i < count; i++) {        a[i] = arc4random() % (40 - 20 + 1) + 20.5;    }}//升序方法void tempSort(float a[], int x, int y) {    if (a[x] > a[y]) {        float temp = a[x];        a[x] = a[y];        a[y] = temp;    }}//排序函數void sort(float a[], int count) {    for (int i = 0; i < count - 1; i++) {        for (int j = 0 ; j < count - 1 - i; j++) {            //換位方法            tempSort(a, j, j+1);        }    }}//輸出void OutputValue(float a[], int count) {    printf("\n");    for (int i = 0; i < count; i++) {        printf("%.1f ",a[i]);    }}//隨機產生卡號void InputCard(int m[],int count) {    for (int i = 0; i < count ; i++) {        m[i] = arc4random() % (9000 - 1000 + 1) + 1000;    }}//隨機產生密碼void InputPwd(int m[],int count) {    for (int i = 0; i < count ; i++) {        m[i] = arc4random() % (200 - 100 + 1) + 100;    }}//隨機產生moneyvoid InputMoney(int m[],int count) {    for (int i = 0; i < count ; i++) {        m[i] = arc4random() % (10000 - 10 + 1) + 10;    }}//判斷卡號是否正確BOOL isCard(int m[],int count ,int username) {    BOOL flag = NO;    for (int i = 0; i < count; i++) {        if (username == m[i]) {            flag = YES;        }    }    return flag;}//判斷密碼是否正確BOOL  isPwd(int password, int pwd){    BOOL flag = NO;        if (password == pwd) {            flag = YES;        }    return flag;}//輸出卡號和密碼void OutputCard_Pd(int m[], int count) {    for (int i = 0; i < count; i++) {        printf("%4d ", m[i]);    }    printf("\n");}//通過帳號擷取密碼下標.int requestPwd(int username,int m[],int count) {    int index = 0;    for (int i = 0; i < count; i++) {        if (username == m[i]) {            index = i;        }    }    return index;}//取款操作int OutputMoney(int a, int b) {    int x = a - b;        a = x;    return x;}//存款操作int  cunMoney(int a , int b) {    int x = a + b;    a = x;    return x ;}</span> 

3.功能實現
 <span style="font-size:14px;">#import <Foundation/Foundation.h>int main(int argc, const char * argv[]){        //定義2個整形數組    int username[5] = {0};//定義數組,並初始化為0    int password[5] = {0};    int money[5] = {0};//賬戶餘額        InputCard(username, 5);     //隨機卡號    InputPwd(password, 5);      //隨機密碼    InputMoney(money, 5);       //隨機money    OutputCard_Pd(username, 5); //取出卡號    OutputCard_Pd(password, 5); //取出密碼    OutputCard_Pd(money, 5);    //隨機money            int card_jie[5] = {0, 0, 0, 0, 0};//存放被凍結的卡號.        while(1){ //死迴圈.                int user = 0; //定義卡號初始化,        int s = 0;//如果s為1,凍結,如果為0,繼續執行        while (1) {            printf("請輸入銀行卡號:\n");            scanf("%d",&user); //輸入卡號            if (isCard(username, 5, user)) { //判斷卡號是否存在                printf("卡號正確!\n");                break; //結束迴圈            }else{                printf("該卡不存在,請重新輸入\n");            }        }                int j = requestPwd(user, username, 5); //擷取對應使用者名稱的下標        int pwd = 0; //定義變數密碼,初始化為0                //判斷卡是否凍結        for (int i = 0; i < 5; i++) {            if (card_jie[i] == username[j]) { //判斷密碼是否存在                s  = 1;  //如果儲存凍結卡號的數組中有這個卡號  s = 1;                printf("你的卡已經被凍結,24小時之內不能操作\n");                break;            }        }                //使用者名稱正確,操作.        if (isCard(username, 5, user)) {                        if (s == 0) {  //沒有被凍結.                                //帳號正確                for (int i = 3; i >= 0; i--) {                    printf("請輸入密碼:\n");                    scanf("%d",&pwd);                    if (isPwd(password[j], pwd)) { //判斷密碼                        printf("你輸入的密碼正確\n");                        break;                    } else {                        if (i == 1) { //第三次的時候                            printf("密碼錯誤,你已經輸入3次,24小時之內不能操作.\n");                            //卡凍結時把凍結卡號存放在數組中                            for (int i = 0; i < 5; i++) {                                if (card_jie[i] == 0) {                                    card_jie[i] = username[j]; //如果為0,將卡號儲存在數組中                                    //printf("asdasd = %d\n",card_jie[i]);                                    break;//迴圈結束,挨個儲存.                                }                            }                            break;                        }                        printf("你輸入的密碼不正確,你還有%d 次機會,請重新輸入\n",i - 1);                    }                }            }        }        //當帳號密碼正確        int x = money[j]; //定義變數x,將money操作後的值,賦值給x.        if(isCard(username, 5, user)){            if (isPwd(password[j], pwd)) {//使用者名稱密碼正確後,進行操作.                while(1){                    int num = 0;                    printf("請選擇你要進行的操作: 1.查詢餘額 2.取款 3.轉賬 4.存款 5.退出\n");                    scanf("%d",&num);                    if (num == 1) {                        //查詢餘額操作                        printf("你的賬戶餘額為:%d\n",x);                    } else if(num == 2) {                        //取款                        int mon = 0;                        printf("請輸入你要取款的金額:\n");                        scanf("%d",&mon);                        if (x < mon) {                            printf("你的餘額不足!");                        } else {                            x = OutputMoney(x, mon);//取款                            printf("取款成功,卡上餘額為:%d\n", x);                        }                    } else if(num == 3) {                        //轉賬                        printf("請輸入你要轉的賬戶卡號:\n");                        int phone = 0;                        scanf("%d",&phone);                        if (isCard(username, 5, phone)) {                            int c = requestPwd(phone, username, 5); //通過卡號,擷取卡號的下標.                            printf("請輸入你要轉賬的金額:\n");                            int m = 0;                            scanf("%d",&m);                            if (m > x) {                                printf("餘額不足,你不能轉賬\n");                            } else {                                x = x - m ;                                money[c] = money[c] + m; //把對方賬戶錢數加上轉賬錢數.                                printf("轉賬成功!,你所剩餘額為:%d\n",x);                            }                        } else {                            printf("你輸入的卡號不正確\n");                        }                    } else if(num == 4) {                        //存款                        printf("請輸入你要存的錢數:\n");                        int y = 0;                        scanf("%d",&y);                        x = cunMoney(x, y);//存款操作                        printf("存款成功,你的餘額為:%d\n", x);                    } else if(num == 5) {                        //退出                        money[j] = x; //推出時,把原來的餘額替換成操作後的.                        break;                    }                                    }                            }        }            }        return 0;}</span>


【學習ios之路:C語言】小程式:實作類別似ATM取款機功能.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.