2012年上半年项目实训“银行储蓄综合业务平台”C++版

项目名称: 银行储蓄综合业务平台
编写语言: 面向对象的C++语言

--先建一个空项目
--添加一个头文件名为“Record.h”
  代码为:
#ifndef HEADER_RECORD    //#是预处理命令 
#define HEADER_RECORD
#include <string>
using namespace std;

class Record
{
private:
	int number;
	string userName;
	string passWord;
	double balance;
	int flag;
public:
	Record();

	void set_number(int number);
	void set_userName(string userName);
	void set_passWord(string passWord);
	void set_balance(double balance);
	void set_flag(int flag);

	int get_number();
	string get_userName();
	string get_passWord();
	double get_balance();
	int get_flag();

	void display_Record();
};
#endif




--再添加一个源文件“Record.cpp”
  代码为:
#include "Record.h"
#include <iostream>
using namespace std;

Record:: Record()
{
	this->number = 0;
	this->userName = "";
	this->passWord = "";
	this->balance = 0;
	this->flag = -1;
}

void Record::set_number(int number)
{
	this ->number = number;
}

void Record::set_userName(string userName)
{
	this ->userName = userName;
}

void Record::set_passWord(string passWord)
{
	this ->passWord = passWord;
}

void Record::set_balance(double balance)
{
	this ->balance = balance;
}

void Record::set_flag(int flag)
{
	this ->flag = flag;
}

int Record::get_number()
{
	return this -> number;
}

string Record::get_userName()
{
	return this->userName;
}

string Record::get_passWord()
{
	return this -> passWord;
}

double Record::get_balance()
{
	return this->balance;
}

int Record::get_flag()
{
	return this -> flag;
}

void Record::display_Record()
{
	cout << "+-----------------------------------------------------+" << endl;
	cout << "+  帐号  |  用户名     |  密码     |    余额     |  状态 +" << endl;
	cout << "+-----------------------------------------------------+" << endl;
	cout << "+  " << this->get_number() << " |  " << this->get_userName() << "     |  "
		 << "    " << this->get_passWord() << "  |      " << this->get_balance() << "    |  ";
		 if(this->get_flag() == 1)
	{
			 cout <<  "正常" ;
	}
		 else 
		 {
			 cout << "异常" ;
		 }
		cout << " +" << endl;
	cout << "+-----------------------------------------------------+" << endl;
}
 

---为了验证一下 Record 是否有错误,建一个源文件名为“TestRecord”
   代码为:
#include "Record.h"

int main()
{
	Record * record = new Record();
	record->display_Record();

	record->set_number(10001);
	record->set_userName("zhangsan");
	record->set_passWord("1023");
	record->set_balance(56);
	record->set_flag(1);
	record->display_Record();

	return 0;
}
***//用Record显示基本账户信息



--再建一个头文件名为“Node.h”
  代码为:
#ifndef HEADER_NODE
#define HEADER_NODE
#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();
};
#endif



--再建一个源文件名为“Node.cpp”
  代码为:
#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()
{
	cout << "Print Node elements..." << endl;
	//cout << "Record: " << this->record <<endl;
	if(this->record == NULL)
	{
		cout << "Elements of Record is NULL..." << endl;
	}
	else 
	{
	Record * r = this->record;
	r->display_Record();
	}
	cout << "Next: " << this->next << endl;
	cout << "End of Node..." << endl;
	cout << endl;
}



---为了验证一下Node可不可以运行,建立一个源文件名为“TestNode.cpp”
  代码为:
#include "Node.h"
#include <iostream>
using namespace std;


int main()
{
	Node * node = new Node();
	node->display_Node();

	Record * r = new Record();
	r->set_number(10001);
	r->set_userName("zhangsan");
	r->set_passWord("123");
	r->set_balance(10000);
	r->set_flag(1);

	node->set_record(r);
	node->display_Node();

	return 0;
}



--建立一个头文件名为“LinkList.h”
   代码为:
#ifndef HEADER_LINKLIST
#define HEADER_LINKLIST
#include "Node.h"

class LinkList
{
private:
	Node * head;
	int len;
public:
	LinkList();
	~LinkList();

	void set_head(Node * head);
	void set_len(int len);
	Node * get_head();
	int get_len();

	Node * make_node(Record * record);
	void insert_node(Node * node);
	Node * find_node(int number);
	void display_LinkList();
};
#endif



--建一个源文件名为“LinkList.cpp”
   代码为:
#include "LinkList.h"
#include <iostream>
#include <string>
using namespace std;

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;
}
void LinkList::set_len(int len)
{
	this->len = len;
}
Node * LinkList::get_head()
{
	return this->head;
}

int LinkList::get_len()
{
	return this->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;
		return;
	}

	while (p->get_next() != NULL)
	{
		 p =p->get_next();
	}
	p->set_next(node);
	this->len++;
}

Node * LinkList::find_node(int number)
{
	Node * p = this->head;
	while(p != NULL)
	{
		Record * r = p->get_record();
		if (r->get_number() == number)
		{
			return p;
		}
		else 
		{
			p = p->get_next();
		}
	}

	return p;
}

void LinkList::display_LinkList()
{
	cout << "Print LinkList elements ..." << endl;
	Node * p = this->head;
	if(p == NULL)
	{
		cout << "LinkList is NULL..." << endl;
		cout << "Len: " << this->len <<endl;
		cout << "head: " << this->head <<endl;
		cout << " End of LinkList..." << endl;

		
	}

	while (p != NULL)
	{
		p->display_Node();
		p = p->get_next();
	}
	
	cout << "Head " << this->head << endl;
	cout << "Len: " << this->len << endl;
	cout << " End of LinkList..." << endl;
}



--为了验证LinkList,建立一个头文件名为“TestLinkList.cpp”
 代码为:
#include "LinkList.h"
#include <iostream>
using namespace std;

int main()
{
	
	Record *r1 = new Record();
	r1->set_number(10001);
	r1->set_userName("zhangsan");
	r1->set_passWord("123");
	r1->set_balance(10000);
	r1->set_flag(1);
	LinkList *list = new LinkList();
	Node *n1 = list->make_node(r1);
	list->insert_node(n1);
	list->display_LinkList();

	Record * r2 = new Record();
	r2->set_number(10002);
	r2->set_userName("lisi");
	r2->set_passWord("456");
	r2->set_balance(20000);
	r2->set_flag(1);

	Node *n2 = list->make_node(r2);
	list->insert_node(n2);
	list->display_LinkList();

	Node *n3 = list->find_node(10001);
	if(n3 != NULL)
	{
	n3->display_Node();
	}
	else
	{
		cout << "not find" << endl;
	}

	return 0;
}



--建立一个头文件名为“Bank.h”
  代码为:
#ifndef HEADER_BANK
#define HEADER_BANK
#include "LinkList.h"

class Bank
{
private:
	LinkList * list;
	int account_number;  
	//没有get set 函数因为帐号的号码按一定顺序排列的不需要设定。


	void set_list(LinkList * list);
	LinkList * get_list();
	LinkList * make_list();
	Record * make_record(string username,string password,double balance);
	int create_number();
	int get_number();
	string get_username();
	string get_password();
	double get_balance();
	Record * find_record(int number);

public:	
	Bank();
	~Bank();
	void open_account();
	void find_account();
	void close_account();
	void deposit();
	void withdraw();
	void transfer_account();

	void welcome();
};
#endif



--再建一个源文件名为“Bank.cpp”
代码为:
#include "Bank.h"
#include <iostream>
#include <string>
using namespace std;


void Bank::welcome()
{
	cout << "+---------------------------------------------+" << endl;
	cout << "+                                             +" << endl;
	cout << "+            欢迎使用银行系统                 +" << endl;
	cout << "+                                             +" << endl;
	cout << "+                                             +" << endl;
	cout << "+---------------------------------------------+" << endl;
}
Bank::Bank()
{
	this->list = this->make_list();
	this->account_number = 10000;
}
Bank::~Bank()
{
	delete this->list;
	this->list = NULL;
}

void Bank::set_list(LinkList * list)
{
	this->list = list;
}
LinkList * Bank::get_list()
{
	return this->list;
}
LinkList * Bank::make_list()
{
	LinkList * l = new LinkList();
	return l;
	
}
Record * Bank::make_record(string username,string password,double balance)
{
	Record * r = new Record();
	int number = this->create_number();
	r->set_number(number);
	r->set_userName(username);
	r->set_passWord(password);
	r->set_balance(balance);
	r->set_flag(1);
	
	return r;
}
int Bank::create_number()
{
	this->account_number = this->account_number+1;
	return this->account_number;
}
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 password;
	cout << "请输入密码: ..." << endl;
	cin >> password;
	cout << "密码为: " << password << endl;
	return password;
	
}
double Bank::get_balance()
{
	double balance;
	cout << "请输入金额: ..." << endl;
	cin >> balance;
	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_account()              //开户
{
	//1 : 通过get函数获取用户输入的帐户信息
	string userName = this->get_username();
	string passWord = this->get_password();
	double balance = 0;
	
	//2 : 根据帐户的信息创建record帐户
	Record * r = this->make_record(userName,passWord, balance);
	
	//3 : 根据record帐户创建node节点
	Node * n = this->list->make_node(r); 
	
	//4 : 将node节点插入Linklist链表
	this->list->insert_node(n);
	
	cout << "开户成功: " << endl;
	
	
	cout << "您账户的信息为: " << endl;
	
	r->display_Record();
	
}

void Bank::find_account()          //查找账号
{
	//输入要注销帐户的信息
	int number = this->get_number();
	Record * r = this->find_record(number);
	
	if (r != NULL)
	{
		//获取用户输入的密码
		string passWord = this->get_password();
		if(passWord == r->get_passWord())
		{//判断用户状态
			if(r->get_flag()!=0)
			{
				r->display_Record();
			}
			else 
				cout << "账户状态异常: " << endl;
		}
		else
		{
			cout << "对不起,没有找到." << endl;
		}
		
	}
}

void Bank::close_account()         //销户
{
	//1 用户输入帐号
	int number = this->get_number();
	
	//2 根据帐号查找帐户 
	Record * r = this->find_record(number);
	
	//3 用户输入密码
	//4 根据密码进行判断
	//5 修改记录的状态
	//6 显示记录
	//输入要注销帐户的信息
	
	
	
	if (r != NULL)
	{
		//获取用户输入的密码
		string passWord = this->get_password();
		if(passWord == r->get_passWord())
		{//判断用户状态
			if(r->get_flag()!=0)
			{
				//修改帐户状态
				r->set_flag(0);
				r->display_Record();
			}
			else 
			{
				cout << "账户状态异常: " << endl;
			}
		}
		else
		{
			cout << "密码错误." << endl;
		}
	}
	else
	{
		cout << "对不起,没有找到..." << endl;
	}
}
void Bank::deposit()      //存款
{
	//获取用户输入的帐户号码
	int number = this->get_number();
	//查找该帐户
	Record * record = this->find_record(number);
	
	if (record != NULL)
	{
		//获取用户输入的密码
		string password = this->get_password();
		if(password == record->get_passWord())
		{
			//判断用户的状态
			if(record->get_flag() != 0)
			{
				//修改帐户的金额
				double balance = this->get_balance();
				record->set_balance(record->get_balance()+balance);
				record->display_Record();
			}
			else
			{
				cout << "您输入的金额错误 ...";
			}
			
		}
		else
		{
			cout << "密码错误..." << endl;
		}
	}
	else
	{
		cout << "对不起,没有找到..." << endl;
	}
	
}
void Bank::withdraw()        //取款
{
	//获取用户输入的帐户号码
	int number = this->get_number();
	//查找该帐户
	Record * record = this->find_record(number);
	
	if (record != NULL)
	{
		//获取用户输入的密码
		string password = this->get_password();
		if(password == record->get_passWord())
		{
			//判断用户的状态
			if(record->get_flag() != 0)
			{
				//修改帐户的金额
				double balance = this->get_balance();
				if(record->get_balance() >= balance)
				{
					record->set_balance(record->get_balance()-balance);
					record->display_Record();
				}
				else
				{
					cout << "您输入的金额错误 ..." << endl;
				}
			}
			else
			{
				cout << "账户状态异常";
			}
			
		}
		else
		{
			cout << "密码错误 ..." << endl;
		}
	}
	else
	{
		cout << "对不起,没有找到 ..." << endl;
	}
}

void Bank::transfer_account()
{
	
	//获取用户输入的帐户号码
	int number = this->get_number();
	//查找该帐户
	Record * record = this->find_record(number);
	
	if (record != NULL)
	{
		//获取用户输入的密码
		string password = this->get_password();
		if(password == record->get_passWord())
		{
			//判断用户的状态
			if(record->get_flag() != 0)
			{
				//修改帐户的金额
				double balance = this->get_balance();
				if(record->get_balance() >= balance)
				{
					record->set_balance(record->get_balance()-balance);
					cout << "转账服务开始。请输入对方的账号..." << endl;
					int a_number = this->get_number();
					Record * r = this->find_record(a_number);
					
					if (r != NULL)
					{
						//判断用户的状态
						if(r->get_flag() != 0)
						{
							//修改帐户的金额
							r->set_balance(balance);
							record->display_Record();
						}
						else
						{
							cout << "账户状态异常";
						}
					}
					else
					{
						cout << "对不起,没有找到 ..." << endl;
					}
					
				}
				else
				{
					cout << "您输入的金额错误 ..." << endl;
				}
			}
			else
			{
				cout << "账户状态异常";
			}
			
		}
		else
		{
			cout << "密码错误 ..." << endl;
		}
	}
	else
	{
		cout << "对不起,没有找到 ..." << endl;
	}
}



---验证Bank,建一个源文件名为“TestBank.cpp”
代码为:
#include <iostream>
#include "Bank.h"
using namespace std;

int main()
{
	Bank * bank = new Bank();
	cout << "欢迎使用银行系统 测试版... " << endl;
	cout << "开户" << endl;
	bank->open_account();

	cout << "存款" << endl;
	bank->deposit();

	cout << "取款" << endl;
	bank->withdraw();
	
	cout << "销户" <<endl;
	bank->close_account();

	cout << "查找账户" << endl;
	bank->find_account();
	cout << "谢谢使用... " << endl;
	return 0;
}
	



--建立一个源文件编写main函数,名为“main.cpp”
代码为:
#include "Bank.h"
#include <iostream>
using namespace std;

void login(Bank * bank);
void mainmenu(Bank * bank);

void mainmenu(Bank * bank)
{
	int choice = -1;
	do{
		
		cout << "+---------------------------------+" << endl;
		cout << "+                                 +" << endl;
		cout << "+          请选择服务项目         +" << endl;
		cout << "+                                 +" << endl;
		cout << "+  开户:请按 1   存款:请按 2      +" << endl;
		cout << "+  取款:请按 3   销户:请按 4      +" << endl;
		cout << "+  查询:请按 5   转帐:请按 6      +" << endl;
		cout << "+          离开:请按 0            +" << endl;
		cout << "+---------------------------------+" << endl;
		cin >> choice ;
		switch (choice)
		{
		case 1:
			{
				bank->open_account();
				break;
			}
		case 2:
			{
				bank->deposit();
				break;
			}
		case 3:
			{
				bank->withdraw();
				break;
			}
		case 5:
			{
				bank->find_account();
				break;
			}
		case 4:
			{
				bank->close_account();
				break;
			}
		case 0:
			{
				exit(0);
			}
		case 6:
			{
				bank->transfer_account();
				break;
			}
		default:
			cout << "出现错误" << endl;
		}
	}while(choice != 0);
}

void login(Bank * bank)
{
	string admin_userName;
	string admin_passWord;
	
	cout << "请输入用户名" << endl;
	cin >> admin_userName;
	cout << "请输入密码" << endl;
	cin >> admin_passWord;
	
	for (int i = 1; i <= 3; i++)
	{
		if(admin_userName == "admin" && admin_passWord == "admin")
		{
			mainmenu(bank);
		}
		else
		{
			if(i <= 2)
			{
				cout << "请再次输入" << endl;
				cout << "请输入用户名" << endl;
				cin >> admin_userName;
				cout << "请输入密码" << endl;
				cin >> admin_passWord;

				continue;
			}
			else
			{
				cout << "对不起,拜拜!" << endl;
				break;
			}
		}
	}
}

int main()
{
	Bank * bank = new Bank();

	bank ->welcome();
	login(bank);

	return 0;
}
				



----关闭“TestRecord”“TestNode”“TestLinkList”“TestBank”,运行main函数

运行结果为:
+---------------------------------------------+
+                                             +
+            欢迎使用银行系统                 +
+                                             +
+                                             +
+---------------------------------------------+
请输入用户名
admin
请输入密码
admin
+---------------------------------+
+                                 +
+          请选择服务项目         +
+                                 +
+  开户:请按 1   存款:请按 2      +
+  取款:请按 3   销户:请按 4      +
+  查询:请按 5   转帐:请按 6      +
+          离开:请按 0            +
+---------------------------------+
1
请输入用户名: ...
li
用户名为: li
请输入密码: ...
123
密码为: 123
开户成功:
您账户的信息为:
+-----------------------------------------------------+
+  帐号  |  用户名     |  密码     |    余额     |  状态 +
+-----------------------------------------------------+
+  10001 |  li     |      123  |      0    |  正常 +
+-----------------------------------------------------+
+---------------------------------+
+                                 +
+          请选择服务项目         +
+                                 +
+  开户:请按 1   存款:请按 2      +
+  取款:请按 3   销户:请按 4      +
+  查询:请按 5   转帐:请按 6      +
+          离开:请按 0            +
+---------------------------------+
2
请输入账户号码: ...
10001
号码为: 10001
请输入密码: ...
123
密码为: 123
请输入金额: ...
10000
+-----------------------------------------------------+
+  帐号  |  用户名     |  密码     |    余额     |  状态 +
+-----------------------------------------------------+
+  10001 |  li     |      123  |      10000    |  正常 +
+-----------------------------------------------------+
+---------------------------------+
+                                 +
+          请选择服务项目         +
+                                 +
+  开户:请按 1   存款:请按 2      +
+  取款:请按 3   销户:请按 4      +
+  查询:请按 5   转帐:请按 6      +
+          离开:请按 0            +
+---------------------------------+
3
请输入账户号码: ...
10001
号码为: 10001
请输入密码: ...
123
密码为: 123
请输入金额: ...
200
+-----------------------------------------------------+
+  帐号  |  用户名     |  密码     |    余额     |  状态 +
+-----------------------------------------------------+
+  10001 |  li     |      123  |      9800    |  正常 +
+-----------------------------------------------------+
+---------------------------------+
+                                 +
+          请选择服务项目         +
+                                 +
+  开户:请按 1   存款:请按 2      +
+  取款:请按 3   销户:请按 4      +
+  查询:请按 5   转帐:请按 6      +
+          离开:请按 0            +
+---------------------------------+
5
请输入账户号码: ...
10001
号码为: 10001
请输入密码: ...
123
密码为: 123
+-----------------------------------------------------+
+  帐号  |  用户名     |  密码     |    余额     |  状态 +
+-----------------------------------------------------+
+  10001 |  li     |      123  |      9800    |  正常 +
+-----------------------------------------------------+
+---------------------------------+
+                                 +
+          请选择服务项目         +
+                                 +
+  开户:请按 1   存款:请按 2      +
+  取款:请按 3   销户:请按 4      +
+  查询:请按 5   转帐:请按 6      +
+          离开:请按 0            +
+---------------------------------+
4
请输入账户号码: ...
10001
号码为: 10001
请输入密码: ...
123
密码为: 123
+-----------------------------------------------------+
+  帐号  |  用户名     |  密码     |    余额     |  状态 +
+-----------------------------------------------------+
+  10001 |  li     |      123  |      9800    |  异常 +
+-----------------------------------------------------+





























  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值