/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 《对C语言编写的银行系统用C++进行重构——4》
* 作 者: 刘江波
* 完成日期: 2012 年 8 月 24 日
* 版 本 号: v.3.0
* 对任务及求解方法的描述部分
* 问题描述:
* 程序头部的注释结束
*/
Bank.h
#ifndef HEADER_BANK
#define HEADER_BANK
#include "LinkList.h"
#include"Record.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 create_number();
int get_number();
string get_userName();
string get_passWord();
double get_balance();
Record *find_record(int number);
void open_account();
void find_account();
void close_account();
void deposit();
void withdraw();
void transfer_account();
};
#endif
Bank.cpp
#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、Node、Record的析构函数
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(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()
{
return this->account_number = this->account_number + 1;
}
int Bank::get_number()
{
int number;//定义局部变量,用于记录用户键盘输入;
cout << "Please input number...." << endl;
cin >> number;
cout << "Number:" << number << endl;
return number;
}
string Bank::get_userName()
{
string userName;//定义局部变量,用于记录用户键盘输入;
cout << "Please input userName...." << endl;
cin >> userName;
cout << "userName:" << userName << endl;
return userName;
}
string Bank::get_passWord()
{
string passWord;//定义局部变量,用于记录用户键盘输入;
cout << "Please input passWord...." << endl;
cin >> passWord;
cout << "passWord:" << passWord << endl;
return passWord;
}
double Bank::get_balance()
{
double balance;//定义局部变量,用于记录用户键盘输入;
cout << "Please input balance...." << endl;
cin >> balance;
cout << "balance:" << 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_account()
{
/*
开户步骤:
1.获取用户输入的账户信息;
2.使用输入数据创建record记录;
3.创建node结点,封装record记录;
4.将结点插入到LinkList链表
*/
cout << "欢迎加入本行,请你输入注册账户信息:"<< endl;
string userName = this->get_userName();
string passWord = this->get_passWord();
double balance = this->get_balance();
Record *r = this->make_record( userName, passWord, balance);
Node *n = this->list->make_node(r);
this->list->insert_node(n);
cout << "open account...." <<endl;
r->display_Record();
cout <<"恭喜你,开户成功!" << endl;
}
void Bank::find_account()
{
/*
查询步骤:
1、获取用户输入的账户信息;
2、验证账户信息;
3、显示查询结果;
*/
cout << "欢迎使用用户查询功能,请你输入要查询账户的信息:"<< endl;
int number = this->get_number();
string passWord = this->get_passWord();
Record *r = this->find_record(number);
if(r != NULL)
{
cout << "Found the account...." << endl;
}
else
{
cout << "NotFound the account...." << endl;
return;
}
if(passWord == r->get_passWord())
{
r->display_Record();
return;
}
else
{
cout << "密码输入有误" << endl;
return;
}
}
void Bank::close_account()
{
/*
销户步骤:
1、获取用户输入的账户信息;
2、验证账户信息;
3、显示账户信息;
4、销户;
*/
cout << "欢迎使用用户销户功能,请你输入要销户的账户信息:"<< endl;
int number = this->get_number();
string passWord = this->get_passWord();
Record *r = this->find_record(number);
if(r != NULL)
{
cout << "Found the account...." << endl;
}
else
{
cout << "NotFound the account...." << endl;
return;
}
if(passWord == r->get_passWord())
{
r->display_Record();
}
else
{
cout << "密码输入有误" << endl;
return;
}
if(r->get_flag() != -1)
{
char a;
cout << "【确定要销户吗? Y 确定、N 取消】" <<endl;
cin >> a;
if(a == 'Y'||a =='y')
{
r->set_flag(-1);
r->set_balance(0);
cout << "销户成功" <<endl;
return;
}
else
{
cout << "销户不成功" <<endl;
return;
}
}
else
{
cout << "【很抱歉,此账户已销户】" << endl;
return;
}
}
void Bank::deposit()
{
/*
存款步骤:
1、获取用户输入的账户信息;
2、验证账户信息(账号,状态);
3、获取存款金额;
*/
cout << "欢迎使用用户存款功能,请你输入要存款账户的信息:"<< endl;
int number = this->get_number();
Record *r = this->find_record(number);
if(r != NULL)
{
cout << "Found the account...." << endl;
r->display_Record();
}
else
{
cout << "NotFound the account...." << endl;
return;
}
if(1 == r->get_flag())
{
cout << "请输入存款金额:" << endl;
double cash = this->get_balance();
r->set_balance(r->get_balance() + cash);
cout <<"存款成功" <<endl;
r->display_Record();
return;
}
else
{
cout << "【很抱歉,此账户已销户,无法存款】" << endl;
return;
}
}
void Bank::withdraw()
{
/*
取款步骤:
1、获取用户输入的账户信息;
2、验证账户信息;
3、获取取款金额;
*/
cout << "欢迎使用用户取款功能,请你输入要取款账户的信息:"<< endl;
int number = this->get_number();
string passWord = this->get_passWord();
Record *r = this->find_record(number);
if(r != NULL)
{
cout << "Found the account...." << endl;
}
else
{
cout << "NotFound the account...." << endl;
return;
}
if(passWord == r->get_passWord())
{
r->display_Record();
}
else
{
cout << "密码输入有误" << endl;
return;
}
if(1 == r->get_flag())
{
cout << "请输入取款金额:" << endl;
double cash = this->get_balance();
if(cash <= r->get_balance())
{
r->set_balance(r->get_balance() - cash);
cout <<"取款成功" <<endl;
r->display_Record();
return;
}
else
{
cout << "【很抱歉,账户余额不足】" << endl;
return;
}
}
else
{
cout << "【很抱歉,此账户已销户,无法取款】" << endl;
return;
}
}
void Bank::transfer_account()
{
/*
转账步骤:
1、登录自己的账户;
2、验证自己的账户信息;
3、获取转入账户的信息;
4、转账;
*/
cout << "欢迎使用用户转账功能,请输入你的账户信息:"<< endl;
int number1 = this->get_number();
string passWord1 = this->get_passWord();
Record *r1 = this->find_record(number1);
if(r1 != NULL)
{
cout << "Found the account...." << endl;
}
else
{
cout << "NotFound the account...." << endl;
return;
}
if(passWord1 == r1->get_passWord())
{
r1->display_Record();
}
else
{
cout << "密码输入有误" << endl;
return;
}
if(1 == r1->get_flag())
{
cout << "请输入要转账的账户号:" << endl;
}
else
{
cout << "【很抱歉,此账户已销户,无法转账】" << endl;
return;
}
int number2 = this->get_number();
Record *r2 = this->find_record(number2);
if(r2 != NULL)
{
cout << "Found the account...." << endl;
}
else
{
cout << "NotFound the account...." << endl;
return;
}
if(1 == r2->get_flag())
{
cout << "请输入要转账的金额:" << endl;
}
else
{
cout << "【很抱歉,此账户已销户,无法转账】" << endl;
return;
}
double cash = this->get_balance();
if(cash <= r1->get_balance())
{
r1->set_balance(r1->get_balance() - cash);
r2->set_balance(r2->get_balance() + cash);
cout <<"转账成功" <<endl;
r1->display_Record();
return;
}
else
{
cout << "【很抱歉,账户余额不足】" << endl;
return;
}
}
TestBank.cpp
#include"Bank.h"
#include<iostream>
using namespace std;
int main()
{
Bank *bank = new Bank();
cout << endl;
bank->open_account();
cout << endl;
bank->find_account();
cout << endl;
bank->deposit();
cout << endl;
bank->withdraw();
cout << endl;
bank->transfer_account();
cout<< endl;
bank->close_account();
cout << endl;
system("PAUSE");
return 0;
}