⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bookclass.cpp

📁 个人电子图书管理系统.提供电子书的书名和其他信息.检查电子书信息的合法性(E-1) .为这本电子书生成 id.使用分类id
💻 CPP
字号:
// 静态模型
#include "BookClass.h"
namespace Library
{
    using std::string;

    
    /// <summary>BookClass的默认构造函数</summary>
    /// <returns></returns>
    /// <exception>不抛出异常</exception>
    BookClass::BookClass()
    //    :BookObject()
    {}
    
    /// <summary>使用一个uuid创建BookClass</summary>
    /// <param name="id">[IN]用字符串表示的一个全球唯一标识符</param>
    /// <remarks></remarks>
    BookClass::BookClass(const std::string& id)
        :BookObject(id)
    {}

    
    /// <summary>拷贝构造函数</summary>
    /// <param name="r">[In]右操作数</param>
    /// <remarks></remarks>
    BookClass::BookClass(const BookClass& r)
        :BookObject(r.id),
        name(r.name),descripton(r.descripton)
    {}

    
    /// <summary>使用类别名和描述构造BookClass</summary>
    /// <param name="className">[IN]类别名</param>
    /// <param name="desc">[IN]类别的描述</param>
    /// <remarks></remarks>
    BookClass::BookClass(const std::string& className, const std::string& desc)
        :name(className), descripton(desc)
    {    }

    
    /// <summary>赋值构造函数</summary>
    /// <param name="r">[IN]右操作数</param>
    /// <returns>返回当前对象的引用</returns>
    /// <remarks></remarks>
    BookClass& BookClass::operator = (const BookClass& r)
    {
        if(this == &r)
        {
            return *this;
        }

        this->id = r.id;
        this->name = r.name;
        this->descripton = r.descripton;
        return *this;
    }
    
    
    /// <summary>设置种类名</summary>
    /// <param name="className">[IN]种类名</param>
    /// <remarks></remarks>
    void BookClass::SetName(const std::string& className)
    {
        this->name = className;
    }
    
    
    /// <summary>设置种类的描述</summary>
    /// <param name="desc">[IN]种类的描述</param>
    /// <remarks></remarks>
    void BookClass::SetDescription(const std::string& desc)
    {
        this->descripton = desc;
    }

    
    /// <summary>从一个XML节点加载BookClass的信息</summary>
    /// <param name="classElem">[IN]一个XML节点的指针, 这个节点应当拥有一定的结构(&lt;BookClass&gt;&lt;/BookClass&gt;)。</param>
    /// <returns> 成功返回:0    失败返回: 其它值
    /// </returns>
    /// <exception cref="KException">没有找到图书种类的id.缺乏必须的信息.</exception>
    /// <remarks>classElem指针为空时, 函数返回 1 (失败),但是BookClass的所有属性均没有变化。
    /// 如果classElem没有(&lt;BookClass&gt;&lt;/BookClass&gt;)结构, 函数 1 (失败),但是classElem的所有属性均没有变化.
    /// 如果classElem有(&lt;BookClass&gt;&lt;/BookClass&gt;)结构可以不提供构造一个classElem的所有信息,但是必须提供classElem::id信息,否则函数执行失败, 抛出异常.
    /// </remarks>
    int BookClass::LoadFromXml(TiXmlElement* classElem)
    {
        if(NULL == classElem)
            return 1;
        if(string(classElem->Value()) != "BookClass")
            return 1;

        const char*   pAttu = NULL;
        pAttu = classElem->Attribute("id");
        if(NULL != pAttu)
            this->id = pAttu;
        else
        {
            throw KException("没有找到图书种类的id.缺乏必须的信息.");
        }

        pAttu = classElem->Attribute("name");
        if(NULL != pAttu)
            this->name = pAttu;

        pAttu = classElem->Attribute("desc");
        if(NULL != pAttu)
            this->descripton = pAttu;

        return 0;
    }

    
    /// <summary>把BookClass的信息保存到一个XML节点</summary>
    /// <param name="classElem">[IN]一个XML节点的指针,将清空classElem的所有内容, 然后根据信息的内容,重新构造节点的结构.不能为空</param>
    /// <returns> 成功返回:0    失败返回: 其它值
    /// </returns>
    /// <remarks>classElem不能为NULL</remarks>
    int BookClass::SaveToXml(TiXmlElement* classElem) const 
    {
        if(NULL == classElem)
            return 1;

        // 清空
        //DONE:13>> 重大问题: 修改分类的信息又错误。
        //classElem->Clear();

        // 节点名
        classElem->SetValue("BookClass");

        // 设置attribute
        classElem->SetAttribute("id", this->id);
        classElem->SetAttribute("name", this->name);
        classElem->SetAttribute("desc", this->descripton);

        return 0;        
    }
    



} // Library

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -