课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565
说明:此项目是为未学习数组的同学拟出的,目的是让他们对“工程”有所体验。一些实现并不是最佳的,请参考后续的题目
【项目5任务2】引入函数改善程序结构
1、在输入密码环节,实现有限次密码输入的限制,如果三次都没有输入正确,程序将直接退出,不允许用户继续操作。
查验密码功能做成一个函数。例如:
bool pass() { bool 密码不正确=true; //先假设不正确,以便能进入do-while循环 do{ 输入密码; 次数++; if(相符)密码不正确=false; }while(密码不正确且尝试次数不足3次); return !密码不正确; //密码不正确为true,表示通不过,反之…… }办理业务也做成一个函数。例如:
void work() { //循环显示功能菜单,直至选择了退出 //用户选择后提示选结果 }相应地,对于main()函数,其结构为:
main() { …… if(pass()) work() else 输出“请到柜台办理密码查询后再来”。 return 0; }
2、各项业务分别编制一个函数完成
用户输入功能选择,根据给出的答复,用switch多分支完成对应的功能:
用户选择1-4功能(1.查询、2.取款、3.存款、4.转帐、0.退出)后,分别调用一个自定义函数,完成对应的功能。定义的函数可以只输出一句话提示即可。——我们的项目已经越来越大了,需要在程序结构上有所注意了。
输入1,调用函数showbalance(),显示“您的余额是xxxx.xx元。”(想过瘾,用你觉得足够大的数当余额) 输入2,调用drawmoney(),完成取款 要求输入金额、存期,然后计算利息(税就不扣了),输出应该取出多少钱,在屏幕上显示本金xxxx.xx元,利息xx.xx元。此处说取多少就多少,且认为当天正好到期,不考虑超期。利息使用2011年7月7日公布的最新年利率: 活期 0.50% 3个月 3.10% 6个月 3.30% 一年 3.50% 二年 4.40% 三年 5.00% 五年 5.50% 另外,咱家银行卡在这个任务中还支持定期哩,这又是一个例外。 提示:做不来,找以前做过的程序。抄自己以前的不算抄。 输入3-4,自己编写函数,显示提示语; 输入0,显示“谢谢,欢迎下次再来!”退出循环,返回调用函数。 输入不是0-4,提示“输错了,不要急!”
#include<iostream> using namespace std; const int password = 123456; bool pass(); void work(); void showbalance(); void drawmoney(); void deposit(); void transferAccounts(); int main() { cout<<"贺家银行欢迎您光临……"<<endl; if(pass()) work(); else cout<<"不要着急,想好了再输入……"<<endl; return 0; } //检验密码 //返回值:通过-true; 不通过-false bool pass() { bool bPass=false; //先假设不正确,直至正确后赋值为true int iPass; int num=1; do{ cout<<"请输入密码"; if(num>1) cout<<"(提示:这是第"<<num<<"次输入密码,三次不对将吞卡)"; cin>>iPass; num++; if(iPass==123456) bPass=true; }while(!bPass&&num<4); //密码不正确且次数在允许范围内 return bPass; //密码正确为true,表示通过,反之…… } //处理业务 void work() { char cChoice; bool bExit = false; do { cout<<endl<<"* 您可以办理下面的业务:"<<endl; cout<<"* 1.查询"<<endl; cout<<"* 2.取款"<<endl; cout<<"* 3.存款"<<endl; cout<<"* 4.转账"<<endl; cout<<"* 0.退出"<<endl; cout<<"* 请输入(0-4):"; cin>>cChoice; switch(cChoice) { case '1': showbalance(); break; case '2': drawmoney(); break; case '3': deposit(); break; case '4': transferAccounts(); break; case '0': cout<<"欢迎您下次来存款. "<<endl; bExit=true; } }while(!bExit); return; } //查询余额 void showbalance() { cout<<"余额有问题,请拨打110. "<<endl; } //取款 void drawmoney() { int type, days; double money, period, rate, interest; cout << "请输入取款金额:"; cin >> money; cout << "======存款期限======" << endl; cout << "1. 活期存款" << endl; cout << "2. 3个月 " << endl; cout << "3. 6个月" << endl; cout << "4. 一年 " << endl; cout << "5. 二年" << endl; cout << "6. 三年" << endl; cout << "7. 五年" << endl; cout << "请输入存款期限的代号:"; cin >> type; if (type>=1 && type <=7) { switch(type) //在if中嵌入了switch分情况处理 { case 1: cout<<"请输入存款天数:"; cin >> days; period = days/360.0; rate = 0.005; break; case 2: period = 0.25; rate = 0.031; break; case 3: period = 0.5; rate = 0.033; break; case 4: period = 1; rate = 0.035; break; case 5: period = 2; rate = 0.044; break; case 6: period = 3; rate = 0.05; break; case 7: period = 5; rate = 0.055; break; } interest = money * period * rate; cout << "到期利息为:" << interest << "元,本息合计共"<< interest + money <<"元。"<<endl; } else cout << "选择存款类型错误!"<<endl; cout << "感谢您的使用,欢迎下次光临!"<<endl; } //存款 void deposit() { cout<<"勤俭持家,老一套,要保持. "<<endl; } //转帐 void transferAccounts() { cout<<"加快流通,繁荣经济. "<<endl; }