c++编写银行管理系统

来源:岁月联盟 编辑:exp 时间:2012-08-25

4个头文件
[cpp] 
#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();//取款 
}; 
[html] 
#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(); 
}; 

[html] 
#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(); 
}; 

[cpp] 
#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个资源文件文件
[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() 
    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; 
    } 

[cpp]
#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; 
 

[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() 

    Record *p; 
    if(this->record != NULL) 
    { 
        p=this->record; 
        p->display(); 
    } 
    else 
    { 
        cout<<"Rcord is null"<<endl; 
    } 
    cout<<this->next<<endl; 

[cpp] 
#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
[cpp] 
#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; 
} www.2cto.com
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;