16_5.cpp
资源名称:c.rar [点击查看]
上传用户:puke2000
上传日期:2022-07-25
资源大小:912k
文件大小:6k
源码类别:

C#编程

开发平台:

Visual C++

  1. //16_5
  2. #include <iostream.h>
  3. #include "i:c++答案ch16account.h"
  4. #include "i:c++答案ch16savings.h"
  5. #include "i:c++答案ch16checking.h"
  6. #include "i:c++答案ch1616_4credit.h"
  7. #include "fixed.h"
  8. void DoSavings(int access);
  9. void DoChecking(int access);
  10. void DoAccess(int type);
  11. void DoCredit(int access);
  12. void DoFixed(int access);
  13. void main()
  14. {
  15.   int sele=1;
  16.   while(sele){
  17.     cout <<"nbank managementnn"
  18.          <<"0. Returnn"
  19.          <<"1. Savings businessn"
  20.          <<"2. Checking businessn"
  21.      <<"3. Credit businessn"
  22.  <<"4. Fixed businessnn"
  23.          <<"select : ";
  24.     cin >>sele;
  25.     if(sele>=1 && sele <=4)  DoAccess(sele);
  26.   }
  27.   Account* p=Account::First();   //以下善后
  28.   while(p){
  29.     Account* t=p;
  30.     p=p->Next();
  31.     delete t;
  32.   }
  33.   Account::First()=NULL;
  34. }
  35. void DoAccess(int type)
  36. {
  37.   int sele=1;
  38.   while(sele){
  39.     cout <<"nFetching or savingnn"
  40.          <<"0. Returnn"
  41.          <<"1. Fetchingn"
  42.          <<"2. Savingnn"
  43.          <<"select : ";
  44.     cin >>sele;
  45.     if(sele!=1 && sele!=2) continue;
  46.   switch(type){
  47.     case 1: DoSavings(sele); break;
  48.     case 2: DoChecking(sele); break;
  49.     case 3: DoCredit(sele); break;
  50. case 4: DoFixed(sele);
  51. }
  52.   }
  53. }
  54. void DoSavings(int access)
  55. {
  56.   unsigned aN;
  57.   float val;
  58.   if(access==2){  //saving
  59.     cout <<"nplease input some account and amount for saving(input 0 for end):n";
  60.     cin >>aN >>val;
  61. while(aN && val>0){
  62.       Account* p;
  63. for(p=Account::First(); p; p=p->Next())  //finding
  64.         if(p->AccountNo()==aN && dynamic_cast<Savings*>(p)){
  65.           p->Deposit(val);
  66. break;
  67. }
  68. if(!p)  //not found
  69.   new Savings(aN,val);
  70.       cout <<"nplease input some account and amount for saving(input 0 for end):n";
  71.       cin >>aN >>val;
  72.     }
  73.   }else{  //fetching
  74.     cout <<"please input a account number and amount for fetching(input 0 for end):n";
  75.     cin >>aN >>val;
  76.     while(aN && val>0){
  77. Account* p;
  78.     for(p=Account::First(); p; p=p->Next())  //finding
  79.         if(p->AccountNo()==aN && dynamic_cast<Savings*>(p)){
  80.           p->Withdrawal(val);
  81. break;
  82. }
  83. if(!p)
  84. cout <<"error: the account number isn't found.n"; 
  85. cout <<"nplease input a account number and amount for fetching(input 0 for end):n";
  86.       cin >>aN >>val;
  87.     }
  88.   }
  89. }
  90. void DoChecking(int access)
  91. {
  92.   unsigned aN;
  93.   float val;
  94.   if(access==2){  //saving
  95.     cout <<"nplease input some account and amount for saving(input 0 for end):n";
  96.     cin >>aN >>val;
  97. while(aN && val>0){
  98.       Account* p;
  99. for(p=Account::First(); p; p=p->Next())  //finding
  100.         if(p->AccountNo()==aN && dynamic_cast<Checking*>(p)){
  101.           p->Deposit(val);
  102.           break;
  103. }
  104. if(!p)  //not found
  105.   new Checking(aN,val);
  106.       cout <<"nplease input some account and amount for saving(input 0 for end):n";
  107.       cin >>aN >>val;
  108.     }
  109.   }else{  //fetching
  110.     cout <<"nplease input a account number and amount for fetching(input 0 for end):n";
  111.     cin >>aN >>val;
  112.     while(aN && val>0){
  113. Account* p;
  114.     for(p=Account::First(); p; p=p->Next())  //finding
  115.         if(p->AccountNo()==aN && dynamic_cast<Checking*>(p)){
  116.           p->Withdrawal(val);
  117. break;
  118. }
  119. if(!p)
  120. cout <<"error: the account number isn't found.n"; 
  121. cout <<"nplease input a account number and amount for fetching(input 0 for end):n";
  122.       cin >>aN >>val;
  123.     }
  124.   }
  125. }
  126. void DoCredit(int access)
  127. {
  128.   unsigned aN;
  129.   float val;
  130.   if(access==2){  //saving
  131.     cout <<"please input some account and amount for saving(input 0 for end):n";
  132.     cin >>aN >>val;
  133. while(aN && val>0){
  134.       Account* p;
  135. for(p=Account::First(); p; p=p->Next())  //finding
  136.         if(p->AccountNo()==aN && dynamic_cast<Creditcard*>(p)){
  137.           p->Deposit(val);
  138.           break;
  139. }
  140. if(!p)  //not found
  141.   new Creditcard(aN,val);
  142.       cout <<"nplease input some account and amount for saving(input 0 for end):n";
  143.       cin >>aN >>val;
  144.     }
  145.   }else{  //fetching
  146.     cout <<"nplease input a account number and amount for fetching(input 0 for end):n";
  147.     cin >>aN >>val;
  148.     while(aN && val>0){
  149. Account* p;
  150.     for(p=Account::First(); p; p=p->Next())  //finding
  151.         if(p->AccountNo()==aN && dynamic_cast<Creditcard*>(p)){
  152.           p->Withdrawal(val);
  153. break;
  154. }
  155. if(!p)
  156. cout <<"error: the account number isn't found.n"; 
  157. cout <<"nplease input a account number and amount for fetching(input 0 for end):n";
  158.       cin >>aN >>val;
  159.     }
  160.   }
  161. }
  162. void DoFixed(int access)
  163. {
  164.   unsigned aN;
  165.   float val;
  166.   if(access==2){  //saving
  167.     cout <<"nplease input some account and amount for saving(input 0 for end):n";
  168.     cin >>aN >>val;
  169. while(aN && val>0){
  170.       Account* p;
  171. for(p=Account::First(); p; p=p->Next())  //finding
  172.         if(p->AccountNo()==aN && dynamic_cast<Fixed*>(p)){
  173.           p->Deposit(val);
  174. break;
  175. }
  176. if(!p)  //not found
  177.   new Fixed(aN,val);
  178.       cout <<"nplease input some account and amount for saving(input 0 for end):n";
  179.       cin >>aN >>val;
  180.     }
  181.   }else{  //fetching
  182.     cout <<"please input a account number and amount for fetching(input 0 for end):n";
  183.     cin >>aN >>val;
  184.     while(aN && val>0){
  185. Account* p;
  186.     for(p=Account::First(); p; p=p->Next())  //finding
  187.         if(p->AccountNo()==aN && dynamic_cast<Fixed*>(p)){
  188.           p->Withdrawal(val);
  189. break;
  190. }
  191. if(!p)
  192. cout <<"error: the account number isn't found.n"; 
  193. cout <<"nplease input a account number and amount for fetching(input 0 for end):n";
  194.       cin >>aN >>val;
  195.     }
  196.   }
  197. }