您的位置:首页 > 其它

第十二周项目四银行系统任务二---引入函数改善程序结构

2014-11-18 20:06 330 查看
问题及代码:

/*
* Copyright (c) 2014, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作    者:郝俊宇
* 完成日期:2014年 11 月 18 日
* 版 本 号:v1.0
*
* 问题描述:1、数据仍然只支持一位用户,所以用户帐号不必存储。要用全局变量存储:(1)用户密码(由于支持改密码功能,所以用变量,暂先用整型,声明时赋初值);(2)帐户余额(用浮点数表示,声明时赋初值)
           2、在输入密码环节,实现有限次密码输入的限制,如果三次都没有输入正确,程序将直接退出,不允许用户继续操作。查验密码功能做成一个函数。
3、main()函数的结构将如下所示,work函数用于处理业务。
4、办理业务的函数work的结构如下:其中,各项业务分别编制一个函数完成。提示功能菜单(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,提示“输错了,不要急!”
* 输入描述:n个数
* 程序输出: 对应的情况
*/
#include <iostream>

using namespace std;
bool pass();
void work();
void showbalance();
void drawmoney();
void deposit();
void transferaccounts();
void updatepassword();
int password=123456;
double balance=1234.56;
int main()
{
cout<<"贺家银行欢迎您光临....."<<endl;
cout<<"请输入密码:";
if(pass())
work();
else
cout<<"请到柜台办理密码查询后再来。"<<endl;
return 0;
}
bool pass()
{
bool pass=false;
int n=0,i;
do
{
cin>>i;
n++;
if(i==password)
pass=true;
else
cout<<"请输入密码(这是第"<<n+1<<"次输入密码,三次不对将吞卡!):";
}
while(i!=password&&n<3);
return (pass);
}
void work()
{
cout<<"您可以办理下面的业务:"<<endl;
cout<<"* 1.查询     2.取款     3.存款    4.转账    5.改密    0.退出"<<endl;
cout<<"请输入(0--5):";
int i;
while(cin>>i&&i!=0)
{
switch(i)
{
case 1:
showbalance();
break;
case 2:
drawmoney();
break;
case 3:
deposit();
break;
case 4:
transferaccounts();
break;
case 5:
updatepassword();
break;
case 0:
cout<<"谢谢,欢迎下次再来!";
break;
default:
{
cout<<"输错了,不要着急!"<<endl;
cout<<"如需继续办理业务,请按1-5,结束请按0"<<endl;
break;
}
}
}
return ;
}
void showbalance()
{

cout<<"您的余额是"<<balance<<"元。"<<endl;
cout<<"如需继续办理业务,请按1-5,结束请按0"<<endl;
}
void drawmoney()
{
double e,d;
d=balance;
cout<<"请输入取款金额:";
cin>>e;
if(e>d)
cout<<"余额不够,不能取款!"<<endl;
else
balance=d-e;
cout<<"你的余额还有"<<balance<<"元。"<<endl;
cout<<"如需继续办理业务,请按1-5,结束请按0"<<endl;
}
void deposit()
{
double g,q;
q=balance;
cout<<"请输入存款金额:";
cin>>g;
balance=q+g;
cout<<"你的余额是"<<balance<<"元。"<<endl;
cout<<"如需继续办理业务,请按1-5,结束请按0"<<endl;
}
void transferaccounts()
{
double i,j,k;
k=balance;
cout<<"请输入对方账号:";
cin>>i;
cout<<"请输入转账金额:";
cin>>j;
if(j>k)
cout<<"转账失败!"<<endl;
else
{
cout<<"转账成功!"<<endl;
balance=k-j;
cout<<"当前账户的余额减少,还剩"<<balance<<"元。"<<endl;
cout<<"如需继续办理业务,请按1-5,结束请按0"<<endl;
}
}
void updatepassword()
{
double h,i,j;
cout<<"请输入旧密码:";
cin>>h;
if(h==password)
{
cout<<"请输入新密码:";
cin>>i;
cout<<"请确认新密码:";
cin>>j;
if(i==j)
{
cout<<"密码修改成功!"<<endl;
cout<<"如需继续办理业务,请按1-5,结束请按0"<<endl;
}
else
{
cout<<"密码修改失败!"<<endl;
cout<<"如需继续办理业务,请按1-5,结束请按0"<<endl;
}
}
else
cout<<"旧密码不正确!请重新输入旧密码:";
}


运行结果:







知识点总结:

自定义函数的应用,switch语句的应用。

学习心得:

当我刚看到这道题的时候,很头疼,觉着这个程序肯定很难写,我坐在电脑前犯愁了半个多小时,后来一想早晚都得写,然后就按照老师给的步骤一点一点的写,写了一个多小时,然后运行还都是错误,改了好长时间,直到现在,还是有我不满意的地方,就是在密码输错三次后,他先输出一句别的话,才输出“请到柜台办理密码查询后再来”这句话。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: