问题描述:
任务 2——引入函数改善程序结构
1、数据
仍然只支持一位用户,所以用户帐号不必存储。
要用全局变量存储:(1)用户密码(由于支持改密码功能,所以用变量,暂时用整型,要在声
明时赋初值);(2)帐户余额(用浮点数表示,声明时赋初值)
2、在输入密码环节,实现有限次密码输入的限制,如果三次都没有输入正确,程序将直接退出,
不允许用户继续操作。
查验密码功能做成一个函数。例如:
<pre name="code" class="cpp">bool pass()
{
int 次数=0;
bool 是否密码正确=false; //先假设密码不正确,以便能进入 do-while 循环
do{
输入密码;
次数++;
if(相符)是否密码正确=true;
}while(密码不正确且尝试次数不足 3次);
return 是否密码正确; //上面密码正确为 true,反之……
}
3、main()函数的结构将如下所示,work 函数用于处理业务。
main()
{
……
if(pass())
work();
else
输出“请到柜台办理密码查询后再来”。
return 0;
}
4、办理业务的函数 work 的结构如下:
void work()
{
//循环显示功能菜单:1.查询、2.取款、3.存款、4.转帐、5.改密、0.退出
//选择后办理各种业务,再显示菜单,直到选择了0。
}
其中,各项业务分别编制一个函数完成。提示功能菜单(1.查询、2.取款、3.存款、4.转帐、5.改密、0.退出)后,由用户输入功能选择,用 switch 多分支完成对应的功能(有的功能依然只输出
一句话提示即可)。下页图示给出建议(鼓励在合理范围内别出心裁):
输入 1(查询),调用函数 showbalance(),显示“您的余额是 xxxx.xx 元。”
输入 2(取款),调用 drawmoney(),完成取款。要求输入取款金额,若余额不够,提示不能取
款,否则,帐户余额减少。取款后给出提示:“你的余额还有 XXX.XX 元”。
在实际业务中,还涉及到计算的问题。本题暂不考虑,作为拓展建议,可以在此处考虑计息。
输入 3(存款):调用 deposit(),完成存款,余额增加(过瘾吧,想存多少存多少)。存款后
给出提示:“你的余额是 XXX.XX 元”。
输入 4(转帐):调用 transferAccounts(),完成转帐,只支持转出功能。要求输入对方帐号和转
帐金额,若金额充足,完成转帐,当前帐户的余额减少,对方帐户余额增加。由于本题只有一
个帐号,故对方帐户增加的操作先不做了。
输 入 5 ( 改 密 ) : 调 用updatePassword()改变密码。要求先输入旧密码,对了以后才能改密。新密码要输入两次,只有两次完全相同时才可以完成修改。
输入0,显示“谢谢,欢迎下次再来!”退出循环,返回调用函数。
输入不是 0-5,提示“输错了,不要急!”以后我们再做支持多个帐户的银行系统。
代码:
main.cpp
#include <iostream>
using namespace std;
int iPASSWORD=961013;
bool pass();
int work();
int main()
{
cout<<" 欢迎使用星耀银行自助系统!"<< endl;
cout<<"请输入您的密码:";
if (pass())
{
work();
}
return 0;
}
password.cpp
#include <iostream>
using namespace std;
extern int iPASSWORD;
bool pass()
{
int iKey;
cin>>iKey;
if (iKey!=iPASSWORD)
{
cout<<"输入错误,亲不要着急。"<<'\n';
cout<<"请重新输入密码:";
cin>>iKey;
if (iKey!=iPASSWORD)
{
cout<<"又错了你还有一次机会。"<<'\n';
cout<<"请重新输入密码:";
cin>>iKey;
}
if (iKey!=iPASSWORD)
{
cout<<"您的银行卡已被冻结,请持有效证件到银行解冻!";
return false;
}
}
return true;
}
int updatePassword()
{
int password,a,b;
cout<<"请输入旧密码:";
cin>>password;
while (password!=iPASSWORD)
{
cout<<"输入错误,请重新输入:";
cin>>password;
}
cout<<"请输入新密码:";
cin>>a;
cout<<"请再输入一次新密码:";
cin>>b;
if (a==b)
cout<<"恭喜您修改密码成功!"<<'\n';
else
{
cout<<"两次密码不同!"<<'\n';
updatePassword();
}
return 0;
}
word.cpp
#include <iostream>
using namespace std;
int deposit();
int transfer();
int showbalance();
int drawmoeny();
int updatePassword();
static long double a=7592.26;
int work()
{
int iSelect;
cout<<"-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-"<<endl;
cout<<"* 星耀银行自助系统提供以下业务:"<<'\n';
cout<<"* 1.查询"<<'\n';
cout<<"* 2.取款"<<'\n';
cout<<"* 3.存款"<<'\n';
cout<<"* 4.转账"<<'\n';
cout<<"* 5.改密"<<'\n';
cout<<"* 0.退出"<<'\n';
cout<<"* 请输入(0-5):";
while (cin>>iSelect)
{
while (iSelect>5||iSelect<0)
{
cout<<"输入错误,无法提供服务。"<<'\n';
cout<<"请重新输入:";
cin>>iSelect;
}
switch (iSelect)
{
case 0:
break;
case 1:
showbalance();
break;
case 2:
drawmoeny();
break;
case 3:
deposit();
break;
case 4:
transfer();
break;
case 5:
updatePassword();
}
if (iSelect==0)
{
cout<<"谢谢使用,欢迎下次再来!";
return 0;
}
cout<<"继续操作请输入操作序号:";
}
return 0;
}
int showbalance()
{
cout<<"您的余额为"<<a<<"元"<<'\n';
return 0;
}
int drawmoeny()
{
int iChoice;
double iMoney;
cout<<"请选择取款金额:"<<'\n';
cout<<"* 1.100元"<<'\n';
cout<<"* 2.200元"<<'\n';
cout<<"* 3.500元"<<'\n';
cout<<"* 4.1000元"<<'\n';
cout<<"* 5.其他"<<'\n';
cout<<"请输入(1-5):";
cin>>iChoice;
while (iChoice>5||iChoice<0)
{
cout<<"输入错误,无法提供服务。"<<'\n';
cout<<"请重新输入:";
cin>>iChoice;
}
switch (iChoice)
{
case 1:
iMoney=100;
cout<<"请提取现金!"<<'\n';
cout<<"您的余额是:"<<a-iMoney<<'\n';
break;
case 2:
iMoney=200;
cout<<"请提取现金!"<<'\n';
cout<<"您的余额是:"<<a-iMoney<<'\n';
break;
case 3:
iMoney=500;
cout<<"请提取现金!"<<'\n';
cout<<"您的余额是:"<<a-iMoney<<'\n';
break;
case 4:
iMoney=1000;
cout<<"请提取现金!"<<'\n';
cout<<"您的余额是:"<<a-iMoney<<'\n';
break;
case 5:
cout<<"请输入金额:";
cin>>iMoney;
if(iMoney>a)
{
cout<<"余额不足!无法操作!"<<'\n';
break;
}
cout<<"请提取现金!"<<'\n';
cout<<"您的余额是:"<<a-iMoney<<'\n'<<"元";
break;
}
return 0;
}
int deposit()
{
int iChoice;
double iMoney;
cout<<"请选择存款金额:"<<'\n';
cout<<"* 1.100元"<<'\n';
cout<<"* 2.200元"<<'\n';
cout<<"* 3.500元"<<'\n';
cout<<"* 4.1000元"<<'\n';
cout<<"* 5.其他"<<'\n';
cout<<"请输入(1-5):";
cin>>iChoice;
while (iChoice>5||iChoice<0)
{
cout<<"输入错误,无法提供服务。"<<'\n';
cout<<"请重新输入:";
cin>>iChoice;
}
switch (iChoice)
{
case 1:
iMoney=100;
cout<<"汇款成功!!"<<'\n';
cout<<"您的余额是:"<<a+iMoney<<'\n';
break;
case 2:
iMoney=200;
cout<<"汇款成功!!"<<'\n';
cout<<"您的余额是:"<<a+iMoney<<'\n';
break;
case 3:
iMoney=500;
cout<<"汇款成功!!"<<'\n';
cout<<"您的余额是:"<<a+iMoney<<'\n';
break;
case 4:
iMoney=1000;
cout<<"汇款成功!!"<<'\n';
cout<<"您的余额是:"<<a+iMoney<<'\n';
break;
cout<<"汇款成功!"<<'\n';
cout<<"您的余额为:"<<a+iMoney<<"元"<<'\n';
break;
case 5:
cout<<"请输入金额:";
cin>>iMoney;
cout<<"汇款成功!"<<'\n';
cout<<"您的余额为:"<<a+iMoney<<"元"<<'\n';
break;
}
return 0;
}
int transfer()
{
int iAccount,iChoice;
double iMoney;
cout<<"请输入转账账号:";
cin>>iAccount;
cout<<"请选择转账金额:"<<'\n';
cout<<"* 1.100元"<<'\n';
cout<<"* 2.200元"<<'\n';
cout<<"* 3.500元"<<'\n';
cout<<"* 4.1000元"<<'\n';
cout<<"* 5.其他"<<'\n';
cout<<"请输入(1-5):";
cin>>iChoice;
while (iChoice>5||iChoice<0)
{
cout<<"输入错误,无法提供服务。"<<'\n';
cout<<"请重新输入:";
cin>>iChoice;
}
switch (iChoice)
{
case 1:
iMoney=100;
cout<<"汇款成功!!"<<'\n';
cout<<"您的余额是:"<<a-iMoney<<'\n';
break;
case 2:
iMoney=200;
cout<<"汇款成功!!"<<'\n';
cout<<"您的余额是:"<<a-iMoney<<'\n';
break;
case 3:
iMoney=500;
cout<<"汇款成功!!"<<'\n';
cout<<"您的余额是:"<<a-iMoney<<'\n';
break;
case 4:
iMoney=1000;
cout<<"汇款成功!!"<<'\n';
cout<<"您的余额是:"<<a-iMoney<<'\n';
break;
cout<<"汇款成功!"<<'\n';
cout<<"您的余额是:"<<a-iMoney<<'\n';
break;
case 5:
cout<<"请输入金额:";
cin>>iMoney;
if(iMoney>a)
{
cout<<"余额不足!无法操作!"<<'\n';
break;
}
cout<<"汇款成功!"<<'\n';
cout<<"您的余额是:"<<a-iMoney<<'\n'<<"元";
break;
}
return 0;
}
运行结果:
做了一个下午终于做完了,很开森。就是把学过的嵌套在一块应用。