《对C语言编纂的银行系统用C++进行重构——4》
《对C语言编写的银行系统用C++进行重构——4》
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* 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; }