C++第13周项目5——银行系统多文件组织+包含文件(v0.32)

来源:互联网 发布:linux清空arp缓存 编辑:程序博客网 时间:2024/04/29 08:59

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565


说明:此项目是为未学习数组的同学拟出的,目的是让他们对“工程”有所体验。一些实现并不是最佳的,请参考后续的题目


【项目5-银行系统】

(4)将程序用多文件组织
  涉及密码、帐户的函数放在一个文件中,完成各项功能的函数放在另一个文件中,main函放也单独一个文件。这种结构就是实际项目要用的了。


下面的参考解答中使用了包含文件

//bank1.h 用于mian函数中#ifndef _MYHEADER#define _MYHEADER//全局变量int account1=123;int pwd1=123456;double balance1=1000;//用全局变量保存当前登录的帐户int currentAccount;//声明自定义函数int checkStatus();void work();void showbalance();void drawmoney();void deposit();void transferAccounts();void updatePassword();#endif  /* _MYHEADER */ 

//bank2.h  用于其他函数中,全局变量均是extern型的#ifndef _MYHEADER2#define _MYHEADER2//全局变量extern int account1;extern int pwd1;extern double balance1;//用全局变量保存当前登录的帐户extern int currentAccount;//声明自定义函数int checkStatus();void work();void showbalance();void drawmoney();void deposit();void transferAccounts();void updatePassword();#endif  

//文件:bank.cpp#include<iostream>  #include"bank1.h" using namespace std; int main()  {  int status;char ch;cout<<"贺家银行欢迎您光临……(本系统目前只有一个用户,帐号123,初始密码123456)"<<endl;while(1)  //支持用户多次登录办理业务{status=checkStatus();if(1==status)work();else if(2==status)cout<<"欢迎下次光临……"<<endl;elsecout<<"吞卡,请联系就近网点解决……"<<endl;cout<<"=====要退出系统,请按键Q,其他键继续下一位用户登录======"<<endl;fflush( stdin );  //清空输入缓冲区,否则getchar()自动获得ch=getchar();if(ch=='q'||ch=='Q')break;}return 0;}

//文件 password.cpp,有关密码的功能#include<iostream>   #include"bank2.h" using namespace std; /*检验密码*在很多的应用程序中,需要涉及到运行实体的“状态”*相比上一个版密码校验的函数pass(),其返回值:通过-true; 不通过-false*这个方案用checkStatus()可以返回更多的信息(状态)*返回值约定:1 - 用户名、密码正确,可以进一步工作2 - 用户名放弃登录正常退出3 - 三次登录失败吞卡后退出*/int checkStatus(){int iStatus=3;//默认吞卡的结局int iPass;int num=1;char goOn;cout<<"请输入帐户";cin>>currentAccount;  //currentAccount是全局变量do{if(num==1)cout<<"请输入密码";else{cout<<"温情提示:这是您第"<<num<<"次输入密码,三次不对将吞卡。"<<endl;cout<<"还要继续尝试吗(继续输入Y,退出输入N,之后回车):";cin>>goOn;if('Y'==goOn||'y'==goOn)cout<<"请再次输入密码";else{iStatus=2; //用户放弃登录break;}}cin>>iPass;num++;if(currentAccount==account1&&iPass==pwd1)   //帐户{iStatus=1;  //密码对了break;}}while(num<4);  //密码不正确且次数在允许范围内循环//如果在循环因为num==4为真而退出,iStatus的值还保持初始3,代表吞卡return iStatus; //返回状态}void updatePassword(){int p1,p2;if(currentAccount==account1)   //确定帐户,目前只有一个帐户,真银行不这样,待改进{cout << "请输入新密码:";cin >> p1;  cout << "请确认新密码:";cin >> p2;  if(p1==p2)//两次输入相符{pwd1=p1;   cout<<"密码修改成功!"<<endl;}else{cout<<"两次输入不一致,密码修改失败。"<<endl;}}}

//文件 money.cpp,有关存、取、转款的函数定义#include<iostream> #include"bank2.h"   using namespace std; //处理业务void work(){char cChoice;bool bExit = false;do  {  cout<<endl<<"*  您可以办理下面的业务:"<<endl;  cout<<"*  1.查询"<<endl;  cout<<"*  2.取款"<<endl;  cout<<"*  3.存款"<<endl;cout<<"*  4.转账"<<endl;cout<<"*  5.修改密码"<<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 '5':updatePassword();break;  case '0':cout<<"欢迎您下次来存款. "<<endl;bExit=true;}}while(!bExit);  return;}//查询余额void showbalance(){if(currentAccount==account1)   //确定帐户,目前只有一个帐户,真银行不这样,待改进cout<<"您的当前余额是:"<<balance1<<"元"<<endl;}//取款void drawmoney(){  double money;  if(currentAccount==account1)   //确定帐户,目前只有一个帐户,真银行不这样,待改进{cout << "请输入取款金额:";  cin >> money;  //下面不计利息了,从现在起,我们的银行只提供银行卡业务,是定期统一计息的if(money<=balance1){balance1-=money; //取款成功cout<<"取款后,您的余额是:"<<balance1<<"元。"<<endl;}else{cout<<"您的余额不足,取款失败。"<<endl;}}}//存款void deposit(){double money;  if(currentAccount==account1)   //确定帐户,目前只有一个帐户,真银行不这样,待改进{cout << "请输入存款金额:";  cin >> money;  //下面不计利息了,从现在起,我们的银行只提供银行卡业务,是定期统一计息的balance1+=money; //取款成功cout<<"存款后,您的余额是:"<<balance1<<"元。"<<endl;}}//转帐void transferAccounts(){double money;  int iAccount2;if(currentAccount==account1)   //确定帐户,目前只有一个帐户,真银行不这样,待改进{cout << "请输入转帐金额:";cin >> money;  cout << "请输入对方帐户:";cin >> iAccount2; //应该判断对方帐户的有效性再转账,暂时不做,待以后改进  if(money<=balance1){balance1-=money; //取款成功//此处应该为对方帐户增加余额,暂时略cout<<"转账后,您的余额是:"<<balance1<<"元。"<<endl;}else{cout<<"您的余额不足,转账失败。"<<endl;}}}


原创粉丝点击