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

课程首页地址: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;
		else
			cout<<"吞卡,请联系就近网点解决……"<<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;
		}
	}
}
时间: 2024-10-01 11:04:37

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

C++第13周项目5——银行系统用函数组织(v0.2)

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 说明:此项目是为未学习数组的同学拟出的,目的是让他们对"工程"有所体验.一些实现并不是最佳的,请参考后续的题目 [项目5任务2]引入函数改善程序结构 1.在输入密码环节,实现有限次密码输入的限制,如果三次都没有输入正确,程序将直接退出,不允许用户继续操作. 查验密码功能做成一个函数.例如: bool pass() { bool 密码不正确=true; //先假设

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

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 说明:此项目是为未学习数组的同学拟出的,目的是让他们对"工程"有所体验.一些实现并不是最佳的,请参考后续的题目 [项目5-银行系统] (4)将程序用多文件组织 涉及密码.帐户的函数放在一个文件中,完成各项功能的函数放在另一个文件中,main函放也单独一个文件.这种结构就是实际项目要用的了. 参考解答: //文件:bank.cpp #include<iost

C++第13周项目5——银行系统支持多用户(v0.3)

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 说明:此项目是为未学习数组的同学拟出的,目的是让他们对"工程"有所体验.一些实现并不是最佳的,请参考后续的题目 [项目5任务3]补充功能,使银行更职业一些 1.支持多个用户 用变量account1以及pwd1分别表示客户和他的密码,balance1表示这两个用户的余额(开始靠近真的银行了,得为多个用户服务,此任务完成后,将来改造成多个用户的.学习了数组,我们会有

C++第13周项目5——银行系统(v0.1)

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 说明:此项目是为未学习数组的同学拟出的,目的是让他们对"工程"有所体验.一些实现并不是最佳的,请参考后续的题目 [项目5-银行系统] 这是我们要做的一个真正的项目!涉及到的技术都用过了,只不过,程序真的要长得多了. 在学习中,总是想要些成就感的.当你没有做过一些事情的时候,总是不能知道所学知识究竟能干些什么.在学习过程中,完成一个像样的项目,那是一件很酷的事情,

C++程序设计-第13周递归函数及银行系统程序设计上机实践项目

回到课程主页,链接:C++程序设计课程主页-2012级 本次上机对应的教学内容:第4章   递归函数.变量的作用域.存储类型 第一部分 练习+上机验证(不必提交上机报告) 阅读下列程序,写出程序的运行结果.上机时运行程序,与你的预期进行对照.理解. 提示:如果对运行结果不理解,请通过单步执行的手段跟踪理解. 1. 两个有递归函数的程序,要求按课堂演示,画出调用过程(1) #include <iostream> using namespace std; void f(int); int main

C++第14周项目6——银行系统,真正多用户

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目6 - 银行系统]我们可以实现真正的多用户银行系统了.在具体业务上,不作多的改变,主要改变在用户管理上: (1)存储用户信息用三个全局数组,并用一个整型全局变量表示当前登录的帐户 const int NUM=5; //暂时支持5个用户,其实,可以很多 int account[NUM]={37001,37002, 37020, 37245,37888}; //帐户 i

C++第14周项目6——银行系统,用文件永久存储

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目6 - 银行系统]我们可以实现真正的多用户银行系统了.在具体业务上,不作多的改变,主要改变在用户管理上: (1)存储用户信息用三个全局数组,并用一个整型全局变量表示当前登录的帐户 const int NUM=5; //暂时支持5个用户,其实,可以很多 int account[NUM]={37001,37002, 37020, 37245,37888}; //帐户 i

C++第13周项目4——多文件组织回文、素数

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目4-多文件程序组织] 按<C++程序设计题解与上机指导>P226第15.4节的提示,建立一个包含多个文件的项目,将第12周"项目4-回文.素数"中所做工作用多文件组织起来.其中,main()函数保存在一个文件中,所有自定义函数保存到另外一个文件中,运行程序并得到正确的结果,体会在实际的工程项目中(有很多的函数)这样组织程序的好处. 参考解答 (

2014秋C++第13周项目1参考-数组大折腾

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目1 - 数组大折腾](1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后(从第0个到第19个)输出数组中元素的值,每5个元素换一行. 参考解答: #include <iostream> using nam