第13章 Qt项目实战之信息管理系统


***【在线视频教程】***

好文章,来自【福优学苑@音视频+流媒体】

第13章 Qt项目实战之信息管理系统

13.1 CRM简介

概念

CRM软件全名是客户关系管理软件(Customer Relationship Management),同时这个软件也可以处理一些数据,包括:客户、产品、关系、销售、财务、等等。

  好文章,来自【福优学苑@音视频+流媒体】

企业客户业务 CRM 的中心是实时客户信息库,它具有先进强大的预构建结构可帮助用户捕获、存储不同类型的信息,然后根据用户的需求进行过滤,实时展示用户所需的信息。 客户信息库的任何数据更新,与其相关的其它信息也会相应地实时自动更新。

image.png


企业客户生命周期管理

  • 企业客户的基本信息

  • 企业客户的联系信息

  • 企业客户的兴趣与偏好

  • 企业客户的财务与信用信息

  • 企业客户的交互、问题和行动

  • 企业客户的交易历史与价值

好文章,来自【福优学苑@音视频+流媒体】

image.png


企业客户的营销管理

  • 内容营销

  • 关系营销

  • 社交媒体营销

  • 一对一个性化营销

  • 电子问卷调查

  • 电子邮件营销

  • 搜索引擎营销

image.png


企业客户的财务与信用

企业客户业务 CRM 支持记录每个企业客户的财务报告,信用评级以及应收账款信息等。这些信息能帮助您的团队更好地确定报价与选择适当的收款方式,以降低回款风险。

  好文章,来自【福优学苑@音视频+流媒体】

有良好财务状况的客户是价值更高的客户,您可以根据客户的财务信息更准确地识别高价值的客户并寻求长期的合作关系。


image.png





好文章,来自【福优学苑@音视频+流媒体】

13.2 UI设计:巧妙使用Layout

总共两个界面,主界面信息添加界面


主界面结构:

左侧:数组件,QTreeWidget

右侧:

右上:按钮(添加、删除)

右下:表格组件,QTableWidget


布局:

主布局: 水平结构,QHorizontalLayout

右侧布局: 垂直结构,QVerticalLayout

  image.png

好文章,来自【福优学苑@音视频+流媒体】



信息添加界面:

主布局: QGridLayout

字段结构: QFormLayout

image.png

  好文章,来自【福优学苑@音视频+流媒体】

13.3 运行效果

image.png


好文章,来自【福优学苑@音视频+流媒体】

13.4 代码分析

实体model类

class Model

{

public:

    Model();

// 成员变量:private

// 成员函数:public

// 参考java的实体类方式:getter、setter

private:

    // 定义几个主要字段:客户、产品、单价、数量、备注

    QString customer;

    QString product;

    double  unit;

    int     number;

    QString memo;

public://getter,setter

    QString getCustomer() {

        return customer;

    }

    void setCustomer(QString customer) {

        this->customer = customer;

    }

    QString getProduct() {

        return product;

    }

    void setProduct(QString product) {

        this->product = product;

    }

    double getUnit() {

        return unit;

    }

    void setUnit(double unit) {

        this->unit = unit;

    }

    int getNumber() {

        return number;

    }

    void setNumber(int number) {

        this->number = number;

    }

    QString getMemo() {

        return memo;

    }

    void setMemo(QString memo) {

        this->memo = memo;

    }

  

};


好文章,来自【福优学苑@音视频+流媒体】



widget.h头文件

class Widget : public QWidget

{

    Q_OBJECT


public:

    explicit Widget(QWidget *parent = nullptr);

    ~Widget();


private slots:

    void on_pushButton_add_clicked();

    void on_pushButton_del_clicked();

    void on_tableWidget_InfoList_itemDoubleClicked(QTableWidgetItem *item);


protected:

    //将窗口大小变化事件

    virtual void resizeEvent(QResizeEvent *event) override;


private:

    Ui::Widget *ui;

    void InitPage();//界面初始化

};

  好文章,来自【福优学苑@音视频+流媒体】



界面初始化代码

// 初始化

void Widget::InitPage()

{

    int rowCount = ui->tableWidget_InfoList->rowCount();

    ui->tableWidget_InfoList->insertRow(rowCount);

    ui->tableWidget_InfoList->setItem(rowCount,0, new QTableWidgetItem( "蜡笔小新" ));

    ui->tableWidget_InfoList->setItem(rowCount,1, new QTableWidgetItem( "QT5零基础" ));

    ui->tableWidget_InfoList->setItem(rowCount,2, new QTableWidgetItem( QString::number(69.88) ));

    ui->tableWidget_InfoList->setItem(rowCount,3, new QTableWidgetItem( QString::number(2 ) ));


    rowCount = ui->tableWidget_InfoList->rowCount();

    ui->tableWidget_InfoList->insertRow(rowCount);

    ui->tableWidget_InfoList->setItem(rowCount,0, new QTableWidgetItem( "黑猫警长" ));

    ui->tableWidget_InfoList->setItem(rowCount,1, new QTableWidgetItem( "音视频小白入门宝典" ));

    ui->tableWidget_InfoList->setItem(rowCount,2, new QTableWidgetItem( QString::number(99.88) ));

    ui->tableWidget_InfoList->setItem(rowCount,3, new QTableWidgetItem( QString::number(2 ) ));


}





好文章,来自【福优学苑@音视频+流媒体】
***【在线视频教程】***