项目名称: 银行储蓄综合业务平台
编写语言: 面向对象的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 | 异常 +
+-----------------------------------------------------+