2 no goddess No_goddess 于 2016.09.10 19:56 提问

c++面性对象程序设计,谢谢

声明一个银行账户类Account,该类有账号(id),余额(balance)两个数据成员,有获取账号,获取余额,存款和取款的函数,以及必要的构造函数。请按上述要求声明该银行账户类并在main函数中定义该类的多个对象,然后对它们进行存取款和查询余额的操作。

4个回答

FrankLi101000100
FrankLi101000100   2016.09.10 21:29

class Account {
string id;
int balance;
public:
Account(string ID) {
id = ID;
}
int deposit(int amount) { balance += amount; return amount; }
int withdraw(int amount) { balance -= amount; return amount; }
string ID() { return id; }
int balance() { return balance; }
};

FrankLi101000100
FrankLi101000100   2016.09.10 21:31

可以写一颗以id为键值的查找树

FrankLi101000100
FrankLi101000100   2016.09.10 21:43

#include
using namespace std;
template
class Size_Balanced_Tree {
struct node {
int Size;//important!!!
//cnt the number of child nodes
KeyType key;
ValType val;

    node *lchild, *rchild;
    node(KeyType k, ValType v) {
        lchild = 0, rchild = 0; Size = 0;
        val = v; key = k;
    }
};
node *root;
inline int SizeOf(node *&target) {
    return target ? target->Size : 0;
}
void Lrotate(node *&target) {
    node *temp = target->lchild;
    target->lchild = temp->rchild;
    temp->rchild = target;
    temp->Size = target->Size;
    target->Size = SizeOf(target->lchild) + SizeOf(target->rchild) + 1;
    target = temp;
}
void Rrotate(node *&target) {
    node *temp = target->rchild;
    target->rchild = temp->lchild;
    temp->lchild = target;
    temp->Size = target->Size;
    target->Size = SizeOf(target->lchild) + SizeOf(target->rchild) + 1;
    target = temp;
}
void Maintain(node *& target) {
    if (target->lchild != NULL) {
        if (SizeOf(target->rchild) < SizeOf(target->lchild->lchild))
            Lrotate(target);
        else if (SizeOf(target->rchild) < SizeOf(target->lchild->rchild)) {
            Rrotate(target->lchild);
            Lrotate(target);
        }Maintain(target->lchild);
    }
    if (target->rchild != NULL) {
        if (SizeOf(target->lchild) < SizeOf(target->rchild->rchild))
            Rrotate(target);
        else if (SizeOf(target->lchild) < SizeOf(target->rchild->lchild)) {
            Lrotate(target->rchild);
            Rrotate(target);
        }Maintain(target->rchild);
    }
    return;
}
void insert(node *&target, KeyType &key, ValType &val) {
    if (!target) {
        target = new node(key, val);
        return;
    }
    target->Size++;
    if (key > target->key)insert(target->rchild, key, val);
    else if (key != target->key)insert(target->lchild, key, val);
    else return;
    Maintain(target);
}
ValType& query(node *&target, KeyType key) {
    if (target == NULL) {
        int r = 0;
        return r;
    }
    if (target->key == key)return target->val;
    else if (target->key < key)return query(target->rchild, key);
    else return query(target->lchild, key);
}

public:
Size_Balanced_Tree() {
root = 0;
}
void Create_Account(string id) {
int init = 0;
insert(root, id, init);
}
ValType deposit(KeyType id, int amount) {
return query(root, id)+=amount;
}
ValType withdraw(KeyType id, int amount) {
return query(root, id) -= amount;
}
ValType amount(KeyType id) {
return query(root, id);
}
};
Size_Balanced_Treeacmngr;
int main() {
acmngr.Create_Account("尼玛");
acmngr.Create_Account("泥煤");
acmngr.deposit("尼玛", 3);
cout << acmngr.amount("尼玛") << endl << acmngr.amount("泥煤");
}

FrankLi101000100
FrankLi101000100   2016.09.10 21:50
#include<iostream>
using namespace std;
template<typename KeyType, typename ValType>
class Size_Balanced_Tree {
    struct node {
        int Size;//important!!!
                 //cnt the number of child nodes
        KeyType key;
        ValType val;

        node *lchild, *rchild;
        node(KeyType k, ValType v) {
            lchild = 0, rchild = 0; Size = 0;
            val = v; key = k;
        }
    };
    node *root;
    inline int SizeOf(node *&target) {
        return target ? target->Size : 0;
    }
    void Lrotate(node *&target) {
        node *temp = target->lchild;
        target->lchild = temp->rchild;
        temp->rchild = target;
        temp->Size = target->Size;
        target->Size = SizeOf(target->lchild) + SizeOf(target->rchild) + 1;
        target = temp;
    }
    void Rrotate(node *&target) {
        node *temp = target->rchild;
        target->rchild = temp->lchild;
        temp->lchild = target;
        temp->Size = target->Size;
        target->Size = SizeOf(target->lchild) + SizeOf(target->rchild) + 1;
        target = temp;
    }
    void Maintain(node *& target) {
        if (target->lchild != NULL) {
            if (SizeOf(target->rchild) < SizeOf(target->lchild->lchild))
                Lrotate(target);
            else if (SizeOf(target->rchild) < SizeOf(target->lchild->rchild)) {
                Rrotate(target->lchild);
                Lrotate(target);
            }Maintain(target->lchild);
        }
        if (target->rchild != NULL) {
            if (SizeOf(target->lchild) < SizeOf(target->rchild->rchild))
                Rrotate(target);
            else if (SizeOf(target->lchild) < SizeOf(target->rchild->lchild)) {
                Lrotate(target->rchild);
                Rrotate(target);
            }Maintain(target->rchild);
        }
        return;
    }
    void insert(node *&target, KeyType &key, ValType &val) {
        if (!target) {
            target = new node(key, val);
            return;
        }
        target->Size++;
        if (key > target->key)insert(target->rchild, key, val);
        else if (key != target->key)insert(target->lchild, key, val);
        else return;
        Maintain(target);
    }
    ValType& query(node *&target, KeyType key) {
        if (target == NULL) {
            int r = 0;
            return r;
        }
        if (target->key == key)return target->val;
        else if (target->key < key)return query(target->rchild, key);
        else return query(target->lchild, key);
    }
public:
    Size_Balanced_Tree() {
        root = 0;
    }
    void Create_Account(string id) {
        int init = 0;
        insert(root, id, init);
    }
    ValType deposit(KeyType id, int amount) {
        return query(root, id)+=amount;
    }
    ValType withdraw(KeyType id, int amount) {
        return query(root, id) -= amount;
    }
    ValType amount(KeyType id) {
        return query(root, id);
    }
};
Size_Balanced_Tree<string, int>acmngr;
int main() {
    acmngr.Create_Account("尼玛");
    acmngr.Create_Account("泥煤");
    acmngr.deposit("尼玛", 3);
    acmngr.withdraw("尼玛", 2);
    cout << acmngr.amount("尼玛") << endl << acmngr.amount("泥煤");
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
面向对象程序设计实验报告-JAVA
实验报告 问题回答 程序代码和截图都有 都可运行 造福后辈 嘿嘿 实验一 Java的运行环境和运行一个Java程序 实验二 Java语言基础——数据类型、运算符、表达式和控制结构 实验三 类、对象和包 实验四、异常处理  1.运行下面的程序,理解异常的抛出、捕捉与处理。 实验五、 GUI标准组件及事件处理  1.编程包含一个标签和一个按钮,单击按钮时,标签的内容在"你好"和"再见"之间切换。 实验六、数据库应用实验
面性对象定义
面向对象定义,应用java基础开发与学习,所进行的事例代码以及注解,便于学习,
PHP的类、对象、构造方法。
PHP的类、对象、构造方法。看懂了这个就懂了面和对象的程序设计想法。跨越各种语言的障碍。
java面向对象核心
java面性对象总结,核心:封装,继承,多态,抽象,接口,继承,重写,重载,构造。
C#面象对象的小游戏
C#面象对象的小游戏C#面象对象的小游戏C#面象对象的小游戏C#面象对象的小游戏
VC界面类编程
很不错的VC界面类编程,是学习Visual C++ 面象对象与可视化程序设计很好的资料。
osg绘制带洞面 环形面 半透明面
osg绘制 带洞面 环形面 多子面对象 半透明面 osg绘制 带洞面 环形面 多子面对象 半透明面
C++语言和面向对象有限元程序设计.pdf
C++语言和面向对象有限元程序设计.pdfC++语言和面向对象有限元程序设计.pdfC++语言和面向对象有限元程序设计.pdfC++语言和面向对象有限元程序设计.pdfC++语言和面向对象有限元程序设计.pdfC++语言和面向对象有限元程序设计.pdfC++语言和面向对象有限元程序设计.pdfC++语言和面向对象有限元程序设计.pdf
Cocos2d-x手游开发必备视频教程 之C++视频课程(学习此课程需要C语言基础)
掌握C++面象对象的设计方法,C++面象对象的基本语法,深刻理解C++内存管理 本课程适合有一定的C语言或基它语言的开发基础的童鞋
C++程序设计教程--面向对象分册(郑秋生)完整答案
C++程序设计教程--面向对象分册(郑秋生)完整答案