c++ 银行储蓄管理系统

 

/* Note:Your choice is C IDE */
#include "stdio.h"
#include "string.h"
#define N 50
//银行的结构体
struct Bank
{
	char name[20]; //姓名
	char password[20];//登录密码
	int cardno; //卡号
	double money; //帐上余额
}bank[N];
//记录系统中已经开户的用户数
int count=0;

//开户
void kaihu();
//存款
void cunkuan();
//取款
void qukuan();
//登录
int login();
//查询
void find();
//转账
void transfer();

void main()
{
	int num;
	do{
		printf("\t\t\t*******************************************************\n");
		printf("\t\t\t*                                                     *\n");
		printf("\t\t\t*                 欢迎进入中国银行系统                *\n");
		printf("\t\t\t*                                                     *\n");
		printf("\t\t\t*******************************************************\n");
		printf("\t\t\t请选择您要办理的业务:\n");
		printf("\t\t\t\t1.开户:\n");
		printf("\t\t\t\t2.存款:\n");
		printf("\t\t\t\t3.取款:\n");
		printf("\t\t\t\t4.查询余额:\n");
		printf("\t\t\t\t5.转账:\n");
		printf("\t\t\t\t6.退出:\n");
		scanf("%d",&num);
		switch(num)
		{
			case 1://开户
				kaihu();
				break;
			case 2://存款
				cunkuan();
				break;
			case 3: //取款
				qukuan();
				break;
			case 4://查询
				find();
				break;
			case 5://转账	
				transfer();
				break;
			case 6:
				
				break;
		}
		printf("按任意键继续......\n");
		getch();//暂停
		system("cls");
	}while(num!=6);
    
}
//开户
void kaihu()
{
	printf("请输入您的姓名:");
	scanf("%s",bank[count].name);//字符数组赋值   字符数组,数组传址,所以可以不写 &.
	printf("请输入卡号:");
	scanf("%d",&bank[count].cardno);
	printf("请输入密码:");
	scanf("%s",bank[count].password);
	printf("请输入开户金额:");
	scanf("%lf",&bank[count].money);
	printf("恭喜你开户成功!请妥善保管您的个人信息,详细信息如下:\n");
	printf("您的姓名是:%s,您的卡号是:%d,您的密码是:%s,您的账上余额是:%0.2lf\n",bank[count].name,bank[count].cardno,bank[count].password,bank[count].money);	
	count++;
}
//登录,返回数组的下标
int login()
{
	int m_cardno;
	int i;
	int index=-1;//登录成功的用户下标
	char m_password[20];
	printf("请输入卡号和密码");
	scanf("%d,%s",&m_cardno,m_password);
	
	for(i=0;i<count;i++)
	{
		if(m_cardno==bank[i].cardno && strcmp(m_password,bank[i].password)==0)	//字符串比较要加头文件 "string.h"
		{
			index = i;
			break; //找到以后立即终止循环
		}
	}
	return index;
}
//存款
void cunkuan()
{
	double m_money;
	int currentIdx;
	//返回的下标大于等于0时,表示登录成功
	currentIdx=login();
	if(currentIdx>=0)
	{
		printf("请输入你要存款的金额:");
		scanf("%lf",&m_money);
		printf("存款之前您的账上余额是:%0.2lf\n",bank[currentIdx].money);
		bank[currentIdx].money += m_money;
		printf("存款%0.2lf元,您的账上余额是:%0.2lf\n",m_money,bank[currentIdx].money);
		
	}else{
		printf("您输入的卡号或密码错误\n");
	}
}
//取款
void qukuan()
{
	double m_money;
	int currentIdx;
	//返回的下标大于等于0时,表示登录成功
	currentIdx=login();
	if(currentIdx>=0)
	{
		printf("请输入你要取款的金额:");
		scanf("%lf",&m_money);
		if(bank[currentIdx].money-m_money>=0)
		{
			printf("取款之前您的账上余额是:%0.2lf\n",bank[currentIdx].money);
			bank[currentIdx].money -= m_money;
			printf("取款%0.2lf元,您的账上余额是:%0.2lf\n",m_money,bank[currentIdx].money);
		}else{
			printf("余额不足!\n");
		}
	}else{
		printf("您输入的卡号或密码错误\n");
	}
}
//查询
void find()
{
	int currentIdx;
	//返回的下标大于等于0时,表示登录成功
	currentIdx=login();
	if(currentIdx>=0)
	{
		printf("您的账上余额是:%0.2lf\n",bank[currentIdx].money);
	}else{
		printf("您输入的卡号或密码错误\n");
	}	
	
}
//转账
void transfer()
{
	double m_money;
	int currentIdx;
	int parnetcardno;
	int i,parentIdx=-1;
	//返回的下标大于等于0时,表示登录成功
	currentIdx=login();
	if(currentIdx>=0)
	{
		printf("请输入对方卡号:");
		scanf("%d",&parnetcardno);	
		for(i=0;i<count;i++)
		{
			if(bank[i].cardno==parnetcardno){
				parentIdx=i; //表示对方的账号信息对应的下标
				printf("请输入转出金额:");
				scanf("%lf",&m_money);
				if(bank[currentIdx].money-m_money>=0)
				{
					//自己的账号减掉转出的钱
					bank[currentIdx].money-=m_money;
					//对方的账号加上转入的钱
					bank[parentIdx].money+=m_money;
					printf("转账成功:转出%0.2lf元,账上余额是:%0.2lf\n",m_money,bank[currentIdx].money);
				}else{
					printf("转账失败:余额不足\n");
				}
				break;
			}	
		}
		if(parentIdx==-1){
			printf("转账失败:对方卡号不存在\n");
		}
	}else{
		printf("您输入的卡号或密码错误\n");
	}
}

 

银行存储管理系统

 

如有帮助,请采纳。点击我回答右上角【采纳】按钮。

#include<iostream>>
#include <string>
using namespace std;
class Bank;
void menu(Bank &);
 
class Account {
	private:
		string name; //户名
		string ID;  //账号
		string mima;  //密码
		double yue;  //余额
		bool isLost=false;//挂失功能
 
	public:
		string record="";
		Account(string i,string n,double y,string m) {
			ID =i;
			name =n;
			yue =y;
			mima =m;
		}
		string getID() {
			return ID;
		}
		string getMi() {
			return mima;
		} 
		//挂失
		void setLost(bool state) {
			isLost=state;
		}
		bool getLost() {
			return isLost;
		}
		void showInfo() {
			cout << "储户账号:" << ID << endl;
			cout << "储户姓名:" << name << endl;
			cout << "储户余额" << yue << endl;
			cout<<"历史交易记录:"<<endl;
			cout<<record;
		}
 
		void saving(double a) {
			yue =yue +a;
			record=record+"save:\n";
		}
 
		bool qukuan(double a) {
			if(yue <a) {
				cout<<"余额不足"<<endl;
				return 0;
			} else {
				yue -= a;
				cout << "取款成功" << endl;
				record=record+"get:\n";
				return 1;
			}
		}
 
};
class Bank {
	private:
		int accountNumber;
		Account *account[100];  //用户个数上限
 
	public:
		Bank() {
			accountNumber =0;
		}
 
		void createaccount() {    //实现开户功能
			string ID,name,mima;
			double yue;
			char choice;
here:
			cout<<"请输入您的账号"<<endl;
			cin>>ID;
			cout<<endl;
 
			//检查账户是否已存在
			for(int i = 0; i<accountNumber; i++) {
 
				if(account[i]->getID()==ID) {
					cout<<"该账户已存在,请重新输入!"<<endl;
					goto here;
				}
 
			}
			cout<<"请输入您的用户名"<<endl;
			cin>>name;
 
			cout<<"请输入您的密码"<<endl;
			cin>>mima;
 
			cout<<"您是否要预存款?(Y/N)"<<endl;
			cin>>choice;
			if(choice=='Y'||choice=='y') {
				cout<<"- 存入金额 : ";
				cin>>yue;
			} else
				yue=0;
 
			Account *a=new Account(ID,name,yue,mima);  //传送用户数据
			account[accountNumber++]=a;
			cout <<"当前已有储户"<<accountNumber<< endl;
			cout<<"创建成功"<<endl;
		}
 
		void deleteaccount() { //实现销户功能
			int i;
			string id,m;
			cout<<"请输入您的账号\n";
			cin>>id;
			cout<<"请输入您的密码\n";
			cin>>m;
			cout<<"请问您是否确认销户?(Y/N)";
			char thisChoice;
			cin>> thisChoice;
			if(thisChoice!='Y' && thisChoice!='y')
				return;
			cout <<"您要注销的账户为:"<<id<< endl;
			for(i = 0; i<accountNumber; i++) {
				//删除用户
				if(account[i]->getID()==id&&account[i]->getMi()==m) {
					Account * temp= account[i];
					account[i]=account[accountNumber-1];
					account[accountNumber-1]=temp;
					delete account[--accountNumber];
					cout<<"删除成功"<<endl;
					return;
				}
 
			}
			cout<<"不存在该用户或密码错误!"<<endl;
		}
 
		void guashi() {//实现挂失功能
			int i;
			string id,m;
			cout<<"请输入您的账号\n";
			cin>>id;
			cout<<"请输入您的密码\n";
			cin>>m;
			cout<<"请问您是否确认挂失?(Y/N)";
			char thisChoice;
			cin>> thisChoice;
			if(thisChoice!='Y' && thisChoice!='y')
				return;
			cout <<"您要挂失的账户为:"<<id<< endl;
			for(i = 0; i<accountNumber; i++) {
				//删除用户
				if(account[i]->getID()==id&&account[i]->getMi()==m) {
					account[i]->setLost(true);
					cout<<"挂失成功"<<endl;
					return;
				}
			}
			cout<<"不存在该用户或密码错误!"<<endl;
		}
 
		void cunkuan() { //实现存款功能
			double money;
			double yue;
			string id,m;
			int i;
			cout<<"请输入您要存入的账户";
			cin>>id;
 
			cout<<"请输入您的密码\n";
			cin>>m;
 
			cout<<"请输入您要存入的金额";
			cin>>money;
			for(i =0; i<accountNumber; i++) {
				if(account[i]->getID()==id&&account[i]->getMi()==m) {
					//调用存款函数存款
					account[i]->saving(money);
					cout<<"存款成功";
					cout<<endl;
					account[i]->showInfo();
					return;
				}
			}
			cout << "存款失败" << endl;
		}
 
		void quqian() { //实现取款功能
			int i;
			string id,m;
			double money;
 
			cout<<"请输入您的账户"<<endl;
			cin>>id;
			cout<<"请输入您的密码"<<endl;
			cin>>m;
			cout<<"请输入取款金额"<<endl;
			cin>>money;
 
			for(i =0; i<accountNumber; i++) {
				//如果挂失了,是无法取款的
				if(account[i]->getID() ==id&&account[i]->getMi()==m&&!account[i]->getLost()) {
					bool rs=account[i]->qukuan(money);
					//如果取款成功
					if(rs) {
						account[i]->showInfo();
						return;
					} else {
						cout<<"账户余额不足"<<endl;
						return;
					}
				}
			}
			cout<<"失败"<<endl;
		}
 
		void check() { //查询 
			int i;
			string id,m;
			double money;
			cout<<"请输入您的账户"<<endl;
			cin>>id;
			cout<<"请输入您的密码"<<endl;
			cin>>m;
			for(i=0; i<accountNumber; i++) {
				if(account[i]->getID()==id&&account[i]->getMi()==m) {
					account[i]->showInfo();
					return;
				}
			}
			if(i ==accountNumber) {
				cout<<"没找到"<<endl;
			}
		}
 
};
void menu() {
	int m;
	Bank b;
	while(1) {
		system("cls");
		cout<<"----------欢迎来到此银行-----------"<<endl;
		cout<<"----------请选择您的业务-------------"<<endl;
		cout<<"-----------1、开户-------------------"<<endl;
		cout<<"-----------2、销户-------------------"<<endl;
		cout<<"-----------3、存款-------------------"<<endl;
		cout<<"-----------4、取钱-------------------"<<endl;
		cout<<"-----------5、查询-------------------"<<endl;
		cout<<"-----------6、挂失-------------------"<<endl;
		cout<<"-----------7、退出-------------------"<<endl;
		cin>>m;
 
		switch(m) {
			case 1:
				b.createaccount();
				system("pause");
				break;
			case 2:
				b.deleteaccount();
				system("pause");
				break;
			case 3:
				b.cunkuan();
				system("pause");
				break;
			case 4:
				b.quqian();
				system("pause");
				break;
			case 5:
				b.check();
				system("pause");
				break;
			case 6:
				b.guashi(); 
				return;
			case 7:
				return;	
			default:
				cout << "输入有误,请重新输入" << endl;
				break;
		}
	}
}
 
int main() {
	menu();
	return 0;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632