資料結構課程設計《銀行存取款系統》
阿新 • • 發佈:2019-01-25
/*********標頭檔案**********/ #include <iostream.h> #include <Cstring> #include <string.h> #include <stdio.h> #include <windows.h> #include <iomanip.h> #include <conio.h> /************************/ #define rs 120 //總人數 /*********公共變數**********/ int n, z; int a[3]; /*a[0]是選擇存款方式,a[1]是要存的總錢數,a[2]是存錢選的期限*/ float m; /***************************/ /********結構體********/ struct xinxi { char zhao[13]; //賬號 char name[20]; //姓名 char ID[14]; //身份證號碼 float jine; //金額 char code[6]; //密碼 } xin[rs]; /*********************/ /***********函式宣告區*************/ void account(); //賬戶開戶 void savemoney(); //存款 void drawmoney(); //取款 void query(); //查詢 void submenu(); //子選單 void mainmenu(); //主選單 void loading(); //檔案讀寫 void quit(); //退出 void save(); //儲存 void prompt(); //提示 void revise(); //修改資訊 void title(); //標題 void landing(); //登入 void code(char *code2); //密碼加密 /**********************************/ /*****主函式****/ void main() { system("color e"); //改變字型顏色 loading(); mainmenu(); } /*********賬戶登入*****/ void landing() { int i = n, pag = 0; cout << "請輸入你的賬號:"; for (int a = 1; a < 3; i++) { cin >> xin[i].zhao; for (int j = 0; j < i; j++) { if (strcmp(xin[j].zhao, xin[i].zhao) == 0) { system("cls"); submenu(); pag = 1; break; } } if (pag == 0) cout << "該使用者不存在!請重新輸入!" << "你還有" << 3-a << "次機會!" << endl; } } /********提示檔案儲存與否**********/ void prompt() { int i = MessageBox(NULL, "是否儲存?", "notice!", MB_OKCANCEL); if (i == 1) { save(); cout << "儲存中........." << endl; Sleep(500); cout << "儲存成功,系統進入主選單!" << endl; Sleep(500); system("cls"); submenu(); } else quit(); } /*********修改密碼部分********/ void revise() { int i = n, ji = 0; char s2[6]; char *a; a = new char[7]; for (int c = 1; c < 4; c++) { code(a); for (int j = 0; j < i; j++) { if (strcmp(xin[j].code, a) == 0) { cout << endl; cout << " ┌┄┄┄┄┄┄┐" << endl; cout << " │密碼修改模組│" << endl; cout << " └┄┄┄┄┄┄┘" << endl; cout << endl; ji = 1; cout << "請輸入新的密碼:" << endl; cout << endl; code(s2); strcpy(xin[j].code, s2); MessageBox(NULL, "請記住你的新密碼。", "NOTICE", 0); //提示框 prompt(); break; } } if (c == 3) { MessageBox(NULL, "您操作的次數過多!", "NOTICE", 0); //提示框 quit(); } if (ji == 0) cout << setw(10) << "你輸入的賬號或者密碼有誤!請重新輸入!" << "還有" << 3-c << "次機會!" << endl; } } /*********主選單**********/ void mainmenu() { title(); int h; cout << setw(37) << "真誠為您服務" << endl; cout<<" ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉"<<endl; cout<<"┋ ┋" << endl; cout<<"┋ (1)賬號開戶 ┋" << endl; cout<<"┋ (2)使用者登入 ┋" << endl; cout<<"┋ ┋" << endl; cout<<" ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉"<<endl; printf("-->請選擇你的操作:"); cin >> h; if (h == 1) account(); else landing(); } /*********子選單部分*****/ void submenu() { title(); cout << endl; cout<<" ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉"<<endl; cout<<"┋ ┋" << endl; cout<<"┋ (1)帳戶查詢 ┋" << endl; cout<<"┋ (2)使用者存款 ┋" << endl; cout<<"┋ (3)使用者取款 ┋" << endl; cout<<"┋ (4)密碼修改 ┋" << endl; cout<<"┋ (5)系統退出 ┋" << endl; cout<<"┋ ┋" << endl; cout<<" ┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉"<<endl; cout << endl; printf("-->請選擇你的操作:"); int b; cin >> b; switch (b) { case 1: query(); case 2: savemoney(); case 3: drawmoney(); case 4: revise(); case 5: quit(); default: cout << "輸入錯誤!" << endl; } } /***********檔案讀寫部分***********/ void loading() { char *p = "bankdate.txt"; FILE *fp; int i = 0; if ((fp = fopen("bankdate.txt", "r+")) == NULL) //如果檔案不存在就退出 { cout << "本地目錄下找不到" << p << "檔案!"; system("pause"); exit(0); } while (fscanf(fp, " %s %s %s %f %s ", xin[i].zhao, xin[i].name, xin[i].ID, &xin[i].jine, xin[i].code) == 5) { i++; i = i; } fclose(fp); //關閉檔案 n = i; } /************檔案儲存部分********/ void save() { int i; FILE *fp; fp = fopen("bankdate.txt", "w"); for (i = 0; i < n + 1; i++) { fprintf(fp, " %s %s %s %f %s \n", xin[i].zhao, xin[i].name, xin[i].ID, xin[i].jine, xin[i].code); } fclose(fp); n = n + 1; } /***************賬戶開戶**********/ void account() { char k; int i = n; system("cls"); title(); cout << endl; cout << "請輸入賬號(11位):"; cin >> xin[i].zhao; code(xin[i].code); k = strlen(xin[i].zhao); //求字串的長度 if (k == 11) //確保賬號為11位 { for (int j = 0; j < i; j++) { if (strcmp(xin[j].zhao, xin[i].zhao) == 0) { MessageBox(NULL, "該使用者已存在!", "error", 0); //提示框 system("cls"); mainmenu(); break; } } cout << "請輸入你的姓名:"; cin >> xin[i].name; cout << "請輸入你的身份證號碼:"; cin >> xin[i].ID; xin[i].jine = 0.000000; cout<<endl; cout << "你的賬戶金額為:" << "0.00" << "元" << endl; cout << "你的賬號是:" << xin[i].zhao << endl; MessageBox(NULL, "請記住你的賬號和密碼!", "NOTICE!", 0); //提示框 prompt(); } else { MessageBox(NULL, "你輸入的賬號或密碼有誤!", "提示框", 0); // } } /**********存款*********/ void savemoney() { int i = n, ji = 0, b, e, p = 0; float d; char *h; h = new char[7]; system("cls"); title(); cout << endl; for (int c = 1; c < 4; c++) { code(h); for (int j = 0; j < i; j++) { if (strcmp(xin[j].code, h) == 0) { system("cls"); //重新整理視窗,dos命令 title(); cout<<"--------------------------------------------------------------"<<endl; cout<<" "<< xin[j].zhao <<" "<< xin[j].name <<" " << xin[j].ID << "****" <<" "<< "賬戶金額:" << xin[j].jine << "元" << endl; //輸出賬戶資訊 cout<<"--------------------------------------------------------------"<<endl; m = xin[j].jine; //保留賬號上餘額 e = j; //保留j的值,以便儲存資訊 ji = 1; goto cun; break; } } if (c == 3) { quit(); } if (ji == 0) cout << "該使用者不存在!請重新輸入!" << "還有" << 3-c << "次機會!" << endl; } system("cls"); //重新整理視窗,dos命令 cun:cout << endl; cout << "存款方式如下所示:" << endl; cout << endl; cout <<" "<< "(1)活定期存款"<<endl; cout <<" "<< "(2)協定存款 " <<endl; cout << endl; cout << setw(20) << "請選擇你要進行的操作:"; cout << endl; cun2: cin >> a[0]; p++; if (p > 3) { cout << "操作次數過多..." << endl; Sleep(1000); system("cls"); //重新整理視窗,dos命令 mainmenu(); } else switch (a[0]) { case 1: { cout << endl; cout << "你選擇了活定期存款" << endl; cout << " "<< "(1)活期存款 (2)定期存款" << endl; cout << "請選擇你要進行的操作:" << endl; cin >> b; if (b == 1) { cout << endl; cout << "你選擇了活期存款年利率為:" << "0.72%" << endl; cout << "請輸入你要存入的金額和期限(年):"; cin >> a[1] >> a[2]; d = a[1] + m; cout << "你要存的總現金為:" << a[1] << "元" <<endl; cout << "期限為:" << a[2] << "年"<<endl; cout << "到期後本金加利息為:" << a[1] + a[1] *0.0072 * a[2] << endl; cout << "賬號上的總餘額為:" << d << endl; //賬戶總金額 xin[e].jine = d; prompt(); } else { { cout << endl; cout <<"(1)整存整取 (2)零存整取,整存零取,存本取息 (3)定活兩便" << endl; cout<<endl; cout << "請選擇你要進行的操作:"; } cin >> b; switch (b) { case 1: { cout << endl; cout << "您選擇了整存整取方式" << endl; cout << "請輸入你要存入的金額和期限(年):"; } cin >> a[1] >> a[2]; d = a[1] + m; if (a[2] < 1) { if (a[2] == 0.25) { cout << "年利率為:" << "1.71%" <<endl; cout << "到期後本金加利息為:" << a[1] + a[1]*(1.71/ 100) *a[2] << endl; cout << "賬號上的總餘額為:" << d << endl; //賬戶總金額 xin[e].jine = d; prompt(); } else cout << "年利率為:" << "1.89%" <<endl; cout << "到期後本金加利息為:" << a[1] + a[1]*(1.89 / 100) *a[2] << endl; cout << "賬號上的總餘額為:" << d <<endl; //賬戶總金額 xin[e].jine = d; prompt(); } else { switch (a[2]) { case 1: cout << "年利率為:" << "1.98%" <<endl; cout << "到期後本金加利息為:" << a[1] + a[1]* (1.98 / 100) *a[2] << endl; cout << "賬號上的總餘額為:" << d<< endl; //賬戶總金額 xin[e].jine = d; prompt(); break; case 2: cout << "年利率為:" << "2.25%" <<endl; cout << "到期後本金加利息為:" << a[1] + a[1]*(2.25 / 100) *a[2] << endl; cout << "賬號上的總餘額為:" << d<< endl; //賬戶總金額 xin[e].jine = d; prompt(); break; case 3: cout << "利率為:" << "2.52%" <<endl; cout << "到期後本金加利息為:" << a[1] + a[1]* (2.52 / 100) *a[2] << endl; cout << "賬號上的總餘額為:" << d << endl; //賬戶總金額 xin[e].jine = d; prompt(); break; default: cout<<endl; cout << "年利率為:" << "2.79%" <<endl; cout << "到期後本金加利息為:" << a[1] + a[1]*(2.79 / 100) *a[2] << endl; cout << "賬號上的總餘額為:" << d<< endl; //賬戶總金額 xin[e].jine = d; prompt(); } } case 2: { cout << endl; cout <<"您選擇了零存整取,整存零取,存本取息方式" <<endl; cout <<"請輸入你要存入的金額和期限(年):"; cin >> a[1] >> a[2]; d = a[1] + m; switch (a[2]) { case 1: cout << "年利率為:" << "1.71%" <<endl; cout << "到期後本金加利息為:" << a[1] + a[1]*(1.71 / 100) *a[2] << endl; cout << "賬號上的總餘額為:" << d<< endl; //賬戶總金額 xin[e].jine = d; prompt(); break; case 3: cout << "年利率為:" << "1.89%" <<endl; cout << "到期後本金加利息為:" << a[1] + a[1]*(1.89 / 100) *a[2] << endl; cout << "賬號上的總餘額為:" << d<< endl; //賬戶總金額 xin[e].jine = d; prompt(); break; default: cout << "年利率為:" << "1.98%" <<endl; cout << "到期後本金加利息為:" << a[1] + a[1]* (1.98 / 100) *a[2] << endl; cout << "賬號上的總餘額為:" << d<< endl; //賬戶總金額 xin[e].jine = d; prompt(); } } break; case 3: { cout << endl; cout << "您選擇了定活兩便方式" << endl; cout << "請輸入你要存入的金額:" << endl; cin >> a[1]; d = a[1] + m; cout << "年利率為:" << "1.98*0.6%" <<endl; cout << "到期後本金加利息為:" << a[1] + a[1]*(1.98*0.6 / 100) *a[2] << endl; cout << "賬號上的總餘額為:" << d <<endl; //賬戶總金額 xin[e].jine = d; prompt(); } break; } } } case 2: cout << " 你選擇了協定存款" << endl; cout << "請輸入你要存入的金額和期限(年):"; cin >> a[1] >> a[2]; d = a[1] + m; cout << "年利率為:" << "1.44%" <<endl; cout << "到期後本金加利息為:" << a[1] + a[1]*(1.44 / 100) *a[2] << endl; cout << "賬號上的總餘額為:" << d << endl; //賬戶總金額 xin[e].jine = d; prompt(); break; } } /******取款********/ void drawmoney() { system("cls"); title(); cout << endl; cout << "簡易銀行取款模組" << endl; cout << endl; int qin = 0, i = n, a, e; for (int c = 1; c < 4; c++) { code(xin[i].code); cout<<endl; for (int j = 0; j < i; j++) { if (strcmp(xin[j].code, xin[i].code) == 0) { cout<<"---------------------------------------------------------------"<<endl; cout <<setw(20)<< xin[j].zhao << '\t' << xin[j].name << '\t' <<"賬戶金額為:" << xin[j].jine << "元" << endl; //輸出賬號、客戶名字和賬戶餘額 cout<<"---------------------------------------------------------------"<<endl; e = j; //保留j的值,以便儲存資訊 m = xin[j].jine; qin = 1; goto qu; break; } } if (c == 3) { quit(); } if (qin == 0) cout << "你輸入的賬號或密碼錯誤!請重新輸入!" << "還有" << 4-c << "次機會!" << endl; } qu: cout << "請輸入取款金額!" << endl; cin >> a; if (a > m) cout << "餘額不足,本賬戶不支援透支!" << endl; else { cout << "取款金額為:" << a << '\t' << "賬戶餘額為:" << m - a << "元" << endl; xin[e].jine = m - a; prompt(); } } /**************查詢**********/ void query() { system("cls"); title(); cout << endl; int i = n, bqin = 0; printf("-->請輸入要查詢的賬號:"); for (int c = 1; c < 4; c++) { cin >> xin[i].zhao; for (int j = 0; j < i; j++) { if (strcmp(xin[j].zhao, xin[i].zhao) == 0) { cout<<"---------------------------------------------------------------"<<endl; cout<<" "<< xin[j].zhao <<" "<< xin[j].name <<" "<< xin[j].ID << "****" <<" "<< "賬號餘額為:" << xin[j].jine << "元"<< endl; cout<<"---------------------------------------------------------------"<<endl; bqin = 1; Sleep(500); int c = MessageBox(NULL, "是否進入子選單!", "NOTICE!", MB_OKCANCEL); if (c == 1) { system("cls"); submenu(); break; } else { quit(); } } } if (c == 3) { quit(); } if (bqin == 0) cout << "該使用者不存在!請重新輸入!" << "還有" << 3-c << "次機會!" << endl; } } /******系統退出********/ void quit() { system("cls"); title(); cout<<endl; cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl; cout<<" ◇◇◇◇◇ 謝謝使用 ◇◇◇◇◇ "<<endl; cout<<endl; cout<<" 再 見 "<<endl; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl; exit(0); } /***********密碼加密***********/ void code(char *code2) { int m = 0; printf("請您輸入密碼(6位):"); while (m <= 6) { char a; a = getch(); if (a == 8) { if (m != 0) m--; } else if (a == 13) //回車鍵 { code2[m] = '\0'; cout << endl; break; } else { printf("*"); code2[m++] = a; } } } /**********系統標題***********/ void title() { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"<<endl; cout << setw(40) << "簡易銀行存取款系統" << endl; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl; }
程式截圖
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.