c++编写银行管理系统

4个头文件

#include "LinkList.h"
class Bank
{
private:
	LinkList * list;
	int account_number;
public:
	Bank();
	~Bank();

	void set_list(LinkList *list);
	LinkList *get_list();

	LinkList *make_list();
	Record *make_record(string userName,string passWord,double balance);
	int creat_number();
	int get_number();
	string get_userName();
	string get_passWord();
	double get_balance();
	Record *find_record(int number);

	void open_acount();
	void close_acount();//销户
	void find_acount();
	void deposit();//存款
	void withdraw();//取款
};
#include "Node.h"
class LinkList
{
private:
	Node *head;
	int len;
public:
	LinkList();
	~LinkList();
	void set_head(Node *head);
	Node *get_head();//获得头节点
	int get_len();
	Node *make_node(Record *record);//制作一个节点,目的是插入record
	void insert_node(Node *node);//插入一个节点
	Node *find_node(int number);//找到一个节点,通过账户(number)查找
	void display_LinkList();
};

#include "Record.h"
class Node
{
private:
	Record *record;
	Node *next;
public:
	Node();
	~Node();
	void set_record(Record *record);
	void set_next(Node *next);
	Record *get_record();
	Node *get_next();
	void display_Node();
};

#include <iostream>
#include <string>
using namespace std;
class Record
{
private:
	int number;
	double salary;
	string userName;
	string passWord;
	int flag;
public:
	 Record();
	void set_number(int number);
	void set_salary(double salary);
	void set_userName(string userName);
	void set_passWord(string passWord);
	void set_flag(int flag);

	int get_number();
	double get_salary();
	string get_userName();
	string get_passWord();
	int get_flag();
	void display();
	
};


4个资源文件文件

#include "bank.h"
#include <iostream>
using namespace std;


Bank::Bank()
{
	this->list=this->make_list();
	this->account_number = 10000;
}
Bank::~Bank()
{
	delete this->list;//自动调用~LinkList()
	this->list=NULL;
}
void Bank::set_list(LinkList *list)
{
	this->list=list;
}

LinkList *Bank::get_list()
{
	return this->list;
}
LinkList *Bank::make_list()
{
	return new LinkList();
}
Record *Bank::make_record(std::string userName, std::string passWord, double balance)
{
	Record * r = new Record();
	int number = this->creat_number();
	r->set_number(number);
	r->set_userName(userName);
	r->set_passWord(passWord);
	r->set_salary(balance);
	r->set_flag(1);

	return r;
}

int Bank::creat_number()
{
	return this->account_number = this->account_number+1;
}
int Bank::get_number()
{
	int number;
	cout<<"请输入账号....."<<endl;
	cin>>number;
	cout<<"账号:"<<number<<endl;

	return number;
}
string Bank::get_userName()
{
	string userName;
	cout<<"请输入用户名....."<<endl;
	cin>>userName;
	cout<<"用户名:"<<userName<<endl;

	return userName;


}
string Bank::get_passWord()
{
	string paseWord;
	cout<<"请输入密码....."<<endl;
	cin>>paseWord;
	// cout<<"paseWord:"<<paseWord<<endl;
	return paseWord;
}
double Bank::get_balance()
{
	double balance;
	cout<<"请输入金额....."<<endl;
	cin>>balance;
	cout<<"金额:"<<balance<<endl;
	return balance;
}
Record *Bank::find_record(int number)
{
	Node *n=this->list->find_node(number);
	if(n != NULL)
	{
		return n->get_record();
	}
	return NULL;
}
void Bank::open_acount()
{
	//1获取账户输入的信息
	string userName=this->get_userName();
	string passWord=this->get_passWord();
	double balance = this->get_balance();

	//2 使用输入数据创建record 记录
	Record *r = this->make_record(userName,passWord,balance);

	//3 创建node节点,封装record记录
	Node *n=this->list->make_node(r);
	//4将node节点插入到linkliast
	this->list->insert_node(n);
	cout<<"您的账号是"<<this->account_number<<endl;
}
void Bank::close_acount()
{
	int i=3;
		int flag;
	// 1 获取账户信息
	int number = this->get_number();
	string passWord = this->get_passWord();

	// 2 在链表中找到账节点,找到账户信息
	Node *node=this->list->find_node(number);
	if(node == NULL)
	{
		cout<<"账户不存在"<<endl;
		return ;
	}
	Record *record =node ->get_record();
	// 3 密码验证
	for(i=3;i>=1;i--)
	{
		if(record->get_passWord() == passWord)
			// 4 用户状态改变
		{
			do
			{
				cout<<"确定要销户?(0 销户,1 不销户)"<<endl;
				cin>>flag;
				if(flag == 1)
				{
					record->set_flag(flag);
					return ;
				}
				else if(flag == 0)
				{
					record->set_flag(flag);
					record->set_salary(0);
					return ;
				}
				else
				{
					cout<<"输入错误,请重新输入"<<endl;
				}
			}
			while(1);
			cout<<"还有"<<i<<"次机会"<<endl;
		}
		
		
		
	}
}




void Bank::deposit()
{
	int balance=0;
	//1 获取账户账号以及密码
	int number = this->get_number();
	string passWord = this->get_passWord();

	//2 从链表中找到账户信息
	Node *node=this->list->find_node(number);
	if(node == NULL)
	{
		cout<<"账户不存在"<<endl;
		return ;
	}
	Record *record =node ->get_record();
	//3 密码验证,存款
	if(record->get_passWord() == passWord)
	{
		double balance=this->get_balance()+record->get_salary();
		record->set_salary(balance);
		cout<<"存款成功"<<endl;
		return ;
	}
}
void Bank::withdraw()
{
	int balance=0;
	//1 获取账户账号以及密码
	int number = this->get_number();
	string passWord = this->get_passWord();

	//2 从链表中找到账户信息
	Node *node=this->list->find_node(number);
	if(node == NULL)
	{
		cout<<"账户不存在"<<endl;

		return ;
	}
	Record *record =node ->get_record();
	//3 密码验证,取款
	if(record->get_passWord() == passWord)
	{
		double balance=record->get_salary()-this->get_balance();
		if(balance>=0)
		{
			record->set_salary(balance);
			cout<<"取款成功"<<endl;
			return ;
		}
		else
		{
			cout<<"您的余额不足"<<endl;
			return ;
		}

	}
}
void Bank::find_acount()
{
	int number = this->get_number();
	string passWord = this->get_passWord();
	//2 从链表中找到账户信息
	Node *node=this->list->find_node(number);
	if(node == NULL)
	{
		cout<<"账户不存在"<<endl;
		return ;
	}
	Record *record =node ->get_record();
	if(record->get_passWord() == passWord)
	{
		record->display();
		return ;
	}
	else
	{ 
		cout<<"密码输入错误"<<endl;
	}
}


#include "LinkList.h"
LinkList::LinkList()//构造函数
{
	this->head=NULL;
	this->len=0;
}
LinkList::~LinkList()
{
	Node *p,*q;//声明两个节点,第一个作为传递使用,第二个作为删除使用

	p=this->head;
	while(p != NULL)
	{
		q=p;
		p=p->get_next();
		delete q;

	}
	this->head=NULL;
	this->len=0;
}
void LinkList::set_head(Node *head)
{
	this->head=head;
}
Node *LinkList::get_head()
{
	return this->head;
}
int LinkList::get_len()
{
	return len;
}
Node *LinkList::make_node(Record *record)
{
	Node *node=new Node();
	node->set_record(record);
	node->set_next(NULL);
	return node;
}
void LinkList::insert_node(Node *node)
{
	Node *p = this->head;
	if (p==NULL)
	{
		this->head=node;
		this->len++;
		return ;//必须有return,否则执行while,与p->set_next(node)冲突报告异常

	}
	while(p->get_next() != NULL)
	{
		p  = p->get_next();
	}
	

	p->set_next(node);
	this->len++;

	return ;
}
Node *LinkList::find_node(int number)
{
	Node *p;//要查找的节点
	Record *r;//因该是按照账户信息查找(number)
	p=this->head;
	while(p != NULL)//如果在节点内找到信息,则返回节点,否则,指向下一个节点
	{
		r=p->get_record();
		if (r->get_number()==number)
		{
			return p;
		}
		else 
		{
			p=p->get_next();
		}
	}
	return NULL;
}
void LinkList::display_LinkList()
{
	Node *p;
	p=this->head;
	cout<<"Print LinkList.."<<endl;
	if(p == NULL)
	{
		cout<<"The LinkList is Null"<<endl;
		cout<<this->len<<endl;
	}
	else
	{
		while(p != NULL)
		{
			p->display_Node();
			p=p->get_next();
		}
	}
	cout<<"The len is"<<this->len<<endl;
	cout<<"End of linkList.."<<endl;

}



#include "Node.h"
#include <iostream>
using namespace std;

Node::Node()
{
	this->record=NULL;
	this->next=NULL;
}
Node::~Node()
{
	delete this->record;
	this->record=NULL;
	this->next=NULL;

}
void Node::set_record(Record *record)
{
	this->record=record;
	
}
void Node::set_next(Node *next)
{
	this->next=next;
}
Record *Node::get_record()
{
	return this->record;
}
Node *Node::get_next()
{
	return this->next;
}
void Node::display_Node()
{
	Record *p;
	if(this->record != NULL)
	{
		p=this->record;
		p->display();
	}
	else
	{
		cout<<"Rcord is null"<<endl;
	}
	cout<<this->next<<endl;
}

#include "Record.h"
#include <string>
#include <iostream>
using namespace std;
Record::Record()
{
	this->flag=0;
	this->number=0000;
	this->passWord="";
	this->salary=0.0;
	this->userName="";
}
void Record::set_number(int number)
{
	this->number=number;
}
void Record::set_passWord(string passWord)
{
	this->passWord=passWord;
}
void Record::set_salary(double salary)
{
	this->salary=salary;
}
void Record::set_userName(string userName)
{
	this->userName=userName;
}
void Record::set_flag(int flag)
{
	this->flag=flag;
}
int Record::get_flag()
{
	return flag;
}
int Record::get_number()
{
	return number;
}
double Record::get_salary()
{
	return salary;
}
string Record::get_userName()
{
	return userName;
}
string Record::get_passWord()
{
	return passWord;
}
void Record::display()
{
	
	cout<<"**************************************************************************"<<endl;
	cout<<"**用户名:"<<get_userName()<<"  **账号:"<<get_number()<<"   **余额:" <<get_salary()<< "  ||账户状态(1正常0销户):"<<get_flag()<<"**"<<endl;
	cout<<"**************************************************************************"<<endl;

}

main

#include "Bank.h"
#include "iostream"
using namespace std;
int flag;
void meanu()
{
	cout<<"Welcome to the bank"<<endl;
	cout<<"***********************************************"<<endl;
	cout<<"**   1 开户    **   2   取款   **   3 存款   **"<<endl;
	cout<<"***********************************************"<<endl;
	cout<<"**   4 销户    **   5 账户信息 **   6 退出   **"<<endl;
	cout<<"***********************************************"<<endl;
	cout<<"请选择:"<<endl;
}
int main()
{
	Bank *bank = new Bank();
	//LinkList *list = bank->get_list();
	do
	{
		meanu();
		cin>>flag;
		switch(flag)
		{
		case 1:bank->open_acount();break;
		case 2:bank->withdraw();break;
		case 3:bank->deposit();break;
		case 4:bank->close_acount();break;
		case 5:bank->find_acount();break;
		case 6:exit(1);break;
		default:cout<<"错误选择"<<endl;
		}
	}while (1);
	system("pause");
	return 0;
}







  • 6
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值