標籤: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取款機功能.