假设某储户在工行,建行,中行都有可能有存款,请设计并实现如下功能:1)储户可以在上述三家银行中的任意一家进行存款或者取款的操作2)按月或年统计储户在三家银行的存款数3)按月或年显示储户在三家银行的存款数
//vc++6.0下调试通过 #include<iostream> #include<cstdlib> using namespace std; class Bank{ private: double timeMoney[30][12];//二维数组,最多三十年 public: Bank(){ for(int i=0;i<30;i++) for(int j=0;j<12;j++) timeMoney[i][j]=0.0; } void getMoney(double money,int year,int month); void inputMoney(double money,int year,int month); void sumitMoney(char choice); void main_menu(); }; void Bank::getMoney(double money,int y,int m) { --y;--m; if(timeMoney[y][m]-money>=0.0) { timeMoney[y][m]-=money; cout<<"操作成功!"<<endl; } else cout<<"余额不足!"<<endl; } void Bank::inputMoney(double money,int y,int m) { --y;--m; timeMoney[y][m]+=money; cout<<"操作成功!\n"<<endl; } void Bank::sumitMoney(char choice) { if(choice=='y') { cout<<"按年统计:"<<endl; for(int i=0;i<30;i++) { double sum=0.0; for(int j=0;j<12;j++) sum+=timeMoney[i][j]; cout<<"第"<<i+1<<"年:"<<sum<<"元"<<endl; } } else if(choice=='m') { cout<<"按月统计:\n请输入一个需要统计的年份(1--30)"; int yy; cin>>yy; yy-=1; for(int i=0;i<12;i++) cout<<i+1<<"月:"<<timeMoney[yy][i]<<"元"<<endl; } } void Bank::main_menu() { int choice; int y,m,ch; double money; cout<<"1、取款\t2、存款\t3、统计\t4、返回\n请选择:"; cin>>choice; switch(choice) { case 1: cout<<"\n请输入年份(1-30)月份(1-12)及钱数:\n"; cin>>y>>m>>money; getMoney(money,y,m); break; case 2: cout<<"\n请输入年份(1-30)月份(1-12)及钱数:\n"; cin>>y>>m>>money; inputMoney(money,y,m); break; case 3: cout<<"\n1、按年统计\t2、按月统计\n请选择:"; cin>>ch; if(ch==1) sumitMoney('y'); else if(ch==2) sumitMoney('m'); else cout<<"非法操作!!\n"; break; case 4: break; default: cout<<"非法操作!!\n"; break; } } int main() { Bank zhong,jian,gong; int choice=0; while(1) { cout<<"请选择要操作的银行"<<endl; cout<<"1、工行\t2、建行\t3、中行\t4、退出\n请选择:"; cin>>choice; switch(choice) { case 1: gong.main_menu(); break; case 2: jian.main_menu(); break; case 3: zhong.main_menu(); break; case 4: exit(0); break; default: cout<<"非法操作!\n"; break; } } return 0; }
我看了一下你可以用一个虚基类,包含三个纯虚函数:存款,取款,统计(月份或年份的存取款数)下设三个继承类,工行,建行,中行,分别重写三个虚函数可用数组按月保存存款数 ,最好用文件处理我就不写了,只提示一下,这种东西需要自己多练