名稱 | 內容 |
---|---|
課程班級 | 班級連接 |
做業要求 | 做業連接 |
本人學號 | 3180405308 |
編寫一個ATM管理系統,語言不限,要求應包括如下主要功能:
(1)開戶,銷戶
(2)查詢帳戶餘額
(3)存款
(4)取款
(5)轉帳(一個帳戶轉到另外一個帳戶)等...ios
typedef struct{ int uid;//卡號 int password;//密碼 float balance; //餘額 bool flag; //該帳戶是否存在,存在爲true }account; vector<account> base;
檢查帳戶是否存在,true爲存在函數
//檢查帳戶是否存在,true爲存在 bool check(account N){ bool flag = true; if (N.uid-first > base.size() || !N.flag) { printf("抱歉您所尋找的帳戶並不存在,請從新輸入:\n"); flag = false; } // if (!N.flag) { // printf("抱歉您所尋找的帳戶已註銷,請從新輸入:\n"); // flag = false; // } return flag; }
//初始化 void init(account &N){ //設置卡號 int id = int(base.size()); N.uid = first+id; //六位卡號 printf("您的卡號爲: %d \n",N.uid); //設置密碼 printf("請設置您的密碼:\n"); int psw = 0; scanf("%d",&psw); N.password = psw; //帳戶密碼 //初始化餘額 N.balance = 0; //帳戶餘額 //將帳戶標記爲存在,沒有被註銷 N.flag = true; }
//開戶 void create(){ account N; init(N); base.push_back(N); }
//銷戶 void cancel(){ printf("請輸入您須要刪除的帳號卡號:\n"); int id = 0; scanf("%d",&id); while (check(base[id-first]) == false) { scanf("%d",&id); } printf("請輸入該 %d 帳號的密碼:\n",id); int psw = 0; scanf("%d",&psw); while (psw != base[id-first].password) { printf("抱歉,您輸入的密碼並不正確,請從新輸入:\n"); scanf("%d",&psw); } printf("您是否確認註銷該帳戶?\t 輸入1爲確認註銷,輸入0爲不註銷\n"); int choice = 0; cin>>choice; if (choice == 1) { base[id-first].flag = false; //flag標記爲帳戶不存在 } else { printf("您已取消本次註銷行爲\n"); } }
//查詢餘額 void enquire(){ printf("請輸入您的帳戶卡號:\n"); int id = 0; scanf("%d",&id); while (check(base[id-first]) == false) { scanf("%d",&id); } if (base[id-first].balance == 0) { printf("很抱歉,您當前並未有任何存款\n"); } else { printf("您的餘額爲: %f ¥\n",base[id-first].balance); } }
//存款 void deposit(){ printf("請輸入您的帳戶卡號:\n"); int id = 0; scanf("%d",&id); while (check(base[id-first]) == false) { scanf("%d",&id); } float input = 0; printf("請輸入您要存入的金額數目\n"); scanf("%f",&input); base[id-first].balance += input; printf("您的餘額爲: %f ¥\n",base[id-first].balance); }
//取款 void withdraw(){ printf("請輸入您的帳戶卡號:\n"); int id = 0; scanf("%d",&id); while (check(base[id-first]) == false) { scanf("%d",&id); } float input = 0; printf("請輸入您要取出的金額數目\n"); scanf("%f",&input); if (base[id-first].balance < input) { printf("抱歉,您的存款不足,不能取出\n"); } else { base[id-first].balance -= input; printf("您的餘額爲: %f ¥\n",base[id-first].balance); } }
//轉帳 void transfer(){ printf("請輸入您的帳戶卡號:\n"); int oid = 0; scanf("%d",&oid); while (check(base[oid-first]) == false) { scanf("%d",&oid); } printf("請輸入您所要轉入的帳戶卡號:\n"); int iid = 0; scanf("%d",&iid); while (check(base[oid-first]) == false) { scanf("%d",&oid); } float input = 0; printf("請輸入您要轉出的金額數目\n"); scanf("%f",&input); if (base[oid-first].balance < input) { printf("抱歉,您的存款不足,不能轉出\n"); } else { base[oid-first].balance -= input; base[iid-first].balance += input; printf("您的餘額爲: %f ¥\n",base[oid-first].balance); printf("對方餘額爲: %f ¥\n",base[iid-first].balance); } }
//菜單 void menu(){ int end = 0; //是否結束,0記爲不結束 do { printf("請選擇您須要進行的操做:\n1.開戶\t2.銷戶\n3.查詢當前餘額\n4.存款\t5.取款\n6.轉帳\t0.退出\n"); int choose = 0; scanf("%d",&choose); switch (choose) { case 0: printf("Bye~\n"); exit(0); case 1: create(); break; case 2: cancel(); break; case 3: enquire(); break; case 4: deposit(); break; case 5: withdraw(); break; case 6: transfer(); break; default: break; } printf("請問您是否須要繼續進行其餘操做?輸入1繼續進行其餘操做,輸入0則退出\n"); scanf("%d",&end); } while (end); }
psp | 任務內容 | 計劃完成須要的時間(min) | 實際完成須要的時間(min) |
---|---|---|---|
Planning | 計劃 | 5 | 3 |
Estimate | 估計這個任務須要多少時間,並規劃大體工做步驟 | 5 | 5 |
Development | 開發 | 300 | 300 |
Analysis | 需求分析(包括學習新技術) | 15 | 45 |
Design Spec | 生成設計文檔 | 5 | 20 |
Design Review | 設計複審 | 5 | 5 |
Coding Standard | 代碼規範 | 3 | 3 |
Design | 具體設計 | 10 | 12 |
Coding | 具體編碼 | 200 | 200 |
Code Review | 代碼複審 | 10 | 20 |
Test | 測試(自我測試,修改代碼,提交修改) | 10 | 60 |
Reporting | 報告 | 5 | 5 |
Test Report | 測試報告 | 5 | 5 |
Size Measurement | 計算工做量 | 20 | 30 |
Postmortem & Process Improvement Plan | 過後總結,並提出過程改進計劃 | 20 | 20 |
// // main.cpp // ATM管理系統 // // Created by Chen on 2020/11/8. // Copyright © 2020 xxc. All rights reserved. // //編寫一個ATM管理系統,語言不限,要求應包括如下主要功能: //(1)開戶,銷戶 //(2)查詢帳戶餘額 //(3)存款 //(4)取款 //(5)轉帳(一個帳戶轉到另外一個帳戶)等... #include <iostream> #include <vector> #define first 100000 using namespace std; typedef struct{ int uid;//卡號 int password;//密碼 float balance; //餘額 bool flag; //該帳戶是否存在,存在爲true }account; vector<account> base; //檢查帳戶是否存在,true爲存在 bool check(account N){ bool flag = true; if (N.uid-first > base.size() || !N.flag) { printf("抱歉您所尋找的帳戶並不存在,請從新輸入:\n"); flag = false; } // if (!N.flag) { // printf("抱歉您所尋找的帳戶已註銷,請從新輸入:\n"); // flag = false; // } return flag; } //初始化 void init(account &N){ //設置卡號 int id = int(base.size()); N.uid = first+id; //六位卡號 printf("您的卡號爲: %d \n",N.uid); //設置密碼 printf("請設置您的密碼:\n"); int psw = 0; scanf("%d",&psw); N.password = psw; //帳戶密碼 //初始化餘額 N.balance = 0; //帳戶餘額 //將帳戶標記爲存在,沒有被註銷 N.flag = true; } //開戶 void create(){ account N; init(N); base.push_back(N); } //銷戶 void cancel(){ printf("請輸入您須要刪除的帳號卡號:\n"); int id = 0; scanf("%d",&id); while (check(base[id-first]) == false) { scanf("%d",&id); } printf("請輸入該 %d 帳號的密碼:\n",id); int psw = 0; scanf("%d",&psw); while (psw != base[id-first].password) { printf("抱歉,您輸入的密碼並不正確,請從新輸入:\n"); scanf("%d",&psw); } printf("您是否確認註銷該帳戶?\t 輸入1爲確認註銷,輸入0爲不註銷\n"); int choice = 0; cin>>choice; if (choice == 1) { base[id-first].flag = false; //flag標記爲帳戶不存在 } else { printf("您已取消本次註銷行爲\n"); } } //查詢餘額 void enquire(){ printf("請輸入您的帳戶卡號:\n"); int id = 0; scanf("%d",&id); while (check(base[id-first]) == false) { scanf("%d",&id); } if (base[id-first].balance == 0) { printf("很抱歉,您當前並未有任何存款\n"); } else { printf("您的餘額爲: %f ¥\n",base[id-first].balance); } } //存款 void deposit(){ printf("請輸入您的帳戶卡號:\n"); int id = 0; scanf("%d",&id); while (check(base[id-first]) == false) { scanf("%d",&id); } float input = 0; printf("請輸入您要存入的金額數目\n"); scanf("%f",&input); base[id-first].balance += input; printf("您的餘額爲: %f ¥\n",base[id-first].balance); } //取款 void withdraw(){ printf("請輸入您的帳戶卡號:\n"); int id = 0; scanf("%d",&id); while (check(base[id-first]) == false) { scanf("%d",&id); } float input = 0; printf("請輸入您要取出的金額數目\n"); scanf("%f",&input); if (base[id-first].balance < input) { printf("抱歉,您的存款不足,不能取出\n"); } else { base[id-first].balance -= input; printf("您的餘額爲: %f ¥\n",base[id-first].balance); } } //轉帳 void transfer(){ printf("請輸入您的帳戶卡號:\n"); int oid = 0; scanf("%d",&oid); while (check(base[oid-first]) == false) { scanf("%d",&oid); } printf("請輸入您所要轉入的帳戶卡號:\n"); int iid = 0; scanf("%d",&iid); while (check(base[oid-first]) == false) { scanf("%d",&oid); } float input = 0; printf("請輸入您要轉出的金額數目\n"); scanf("%f",&input); if (base[oid-first].balance < input) { printf("抱歉,您的存款不足,不能轉出\n"); } else { base[oid-first].balance -= input; base[iid-first].balance += input; printf("您的餘額爲: %f ¥\n",base[oid-first].balance); printf("對方餘額爲: %f ¥\n",base[iid-first].balance); } } //菜單 void menu(){ int end = 0; //是否結束,0記爲不結束 do { printf("請選擇您須要進行的操做:\n1.開戶\t2.銷戶\n3.查詢當前餘額\n4.存款\t5.取款\n6.轉帳\t0.退出\n"); int choose = 0; scanf("%d",&choose); switch (choose) { case 0: printf("Bye~\n"); exit(0); case 1: create(); break; case 2: cancel(); break; case 3: enquire(); break; case 4: deposit(); break; case 5: withdraw(); break; case 6: transfer(); break; default: break; } printf("請問您是否須要繼續進行其餘操做?輸入1繼續進行其餘操做,輸入0則退出\n"); scanf("%d",&end); } while (end); } int main(int argc, const char * argv[]) { menu(); return 0; }