QT——学生信息管理系统

学生信息管理系统

这是我的一个实训小项目,包含学生系统的基本操作,比如增删改查,用图表显示学生信息情况。所有的控件都是用代码写的,没有用qt拖拽功能。

主界面

上图给大家瞅瞅
请添加图片描述
上图就是一些主要功能概括。本系统是用多个子窗口实现的,点击就会弹出新的界面。

现在展示主界面代码

// An highlighted block
this->setWindowTitle("学生信息管理界面");
        this->resize(1200,750);
        //        QVBoxLayout1->addStretch();
        QVBoxLayout1->addLayout(QHBoxLayout1);
        QVBoxLayout1->addLayout(QHBoxLayout2);
        //        QVBoxLayout1->addStretch();


        //        QHBoxLayout1->addStretch();
        QHBoxLayout1->addWidget(QPushButtonkkk);
        QHBoxLayout1->addWidget(QPushButton2);
        QHBoxLayout1->addWidget(QPushButton3);
        //        QHBoxLayout1->addStretch();


        //        QHBoxLayout2->addStretch();
        QHBoxLayout2->addWidget(QPushButton4);
        QHBoxLayout2->addWidget(QPushButton5);
        QHBoxLayout2->addWidget(QPushButton6);
        //        QHBoxLayout2->addStretch();
        this->setLayout(QVBoxLayout1);

        QPalette patlette;
        patlette.setColor(QPalette::ButtonText, Qt::white);
        QPalette patlettes;
        patlettes.setColor(QPalette::ButtonText, Qt::black);
        QFont font;
        QPushButtonkkk->setFont(QFont(tr("楷体"),25));
        QPushButtonkkk->setIconSize(QSize(300,250));
        QPushButtonkkk->setIcon(QIcon(":/back/images/ycu.png"));
   //     QPushButtonkkk->setFlat(true);
        QPushButtonkkk->setText("学生管理系统");
        QPushButtonkkk->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
        QPushButtonkkk->setStyleSheet("background-color:cornflowerblue;border-radius:10px;padding:2px 4px;");
        QPushButtonkkk->setPalette(patlettes);



        QPushButton2->setFont(QFont(tr("宋体"),25));
        QPushButton2->setIconSize(QSize(300,250));
        QPushButton2->setIcon(QIcon(":/back/images/search.png"));
        QPushButton2->setText("信息查找修改");
        QPushButton2->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
        QPushButton2->setStyleSheet("background-color:blue;");
        QPushButton2->setStyleSheet("background-color:darkcyan;border-radius:10px;padding:2px 4px;");
        QPushButton2->setPalette(patlette);

        QPushButton3->setFont(QFont(tr("宋体"),25));
        QPushButton3->setIconSize(QSize(300,250));
        QPushButton3->setIcon(QIcon(":/back/images/add.png"));
        QPushButton3->setText("信息添加");
        QPushButton3->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
        QPushButton3->setStyleSheet("background-color:blue;");
        QPushButton3->setStyleSheet("background-color:indianred;border-radius:10px;padding:2px 4px;");
        QPushButton3->setPalette(patlette);

        QPushButton4->setFont(QFont(tr("圆体"),25));
        QPushButton4->setIconSize(QSize(300,250));
        QPushButton4->setIcon(QIcon(":/back/images/search.png"));
        QPushButton4->setText("信息显示");
        QPushButton4->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
        QPushButton4->setStyleSheet("background-color:blue;");
        QPushButton4->setStyleSheet("background-color:forestgreen;border-radius:10px;padding:2px 4px;");
        QPushButton4->setPalette(patlette);

        QPushButton5->setFont(QFont(tr("圆体"),25));
        QPushButton5->setIconSize(QSize(300,250));
        QPushButton5->setIcon(QIcon(":/back/images/change.png"));
        QPushButton5->setText("图表显示");
        QPushButton5->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
        QPushButton5->setStyleSheet("background-color:blue;");
        QPushButton5->setStyleSheet("background-color:mediumorchid;border-radius:10px;padding:2px 4px;");
        QPushButton5->setPalette(patlette);

        QPushButton6->setFont(QFont(tr("圆体"),25));
        QPushButton6->setIconSize(QSize(300,250));
        QPushButton6->setIcon(QIcon(":/back/images/settings.png"));
        QPushButton6->setText("系统设置");
        QPushButton6->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
        QPushButton6->setStyleSheet("background-color:blue;");
        QPushButton6->setStyleSheet("background-color:midnightblue;border-radius:10px;padding:2px 4px;");
        QPushButton6->setPalette(patlette);

        QImage _image;
        _image.load(":/back/images/background.png");
        setAutoFillBackground(true);   // 这个属性一定要设置
        QPalette pal(palette());
        pal.setBrush(QPalette::Window, QBrush(_image.scaled(size(), Qt::IgnoreAspectRatio,
                                                            Qt::SmoothTransformation)));
        setPalette(pal);
        //信号
        connect(QPushButton2,&QPushButton::pressed,this,&Widgetko::press22);
        connect(QPushButton3,&QPushButton::pressed,this,&Widgetko::press33);
        connect(QPushButton4,&QPushButton::pressed,this,&Widgetko::press44);
        connect(QPushButton5,&QPushButton::pressed,this,&Widgetko::press55);
        connect(QPushButton6,&QPushButton::pressed,this,&Widgetko::press66);


    }



    void press22(){
        Widget3 *widget2= new Widget3();
        widget2->show();

    }

    void press33(){
        Widgetpo *widget2= new Widgetpo();
        widget2->show();


    }

    void press44(){
        qDebug("显示信息!");
        showinfo *fffkkk= new showinfo();

        fffkkk->show();


    }

    void press55(){


        mapwidget *fffkkk= new mapwidget();
        fffkkk->show();
    }

    void press66(){
        Widgetshe *shezhi=new Widgetshe();
        shezhi->show();
    }

主界面代码简单,而且易懂。就不作过多的介绍。

功能界面

本系统用的是自己手写的链表文件,使操作更加方便。可以直接创建一个链表存储学生的信息,包括一些增加删除链表的方法。让实现更加的方便。

联系人添加界面

// An highlighted block
private:
QPalette palette1;
    QIcon icon2;
    //垂直布局
    QVBoxLayout *vBoxLayout2=new QVBoxLayout();
    //水平布局
      QHBoxLayout *hBoxLayout=new QHBoxLayout();
    //网格布局
    QGridLayout *qgridlayout2=new QGridLayout();

    //编辑框
    QLineEdit *lineEditid=new QLineEdit();
    QLineEdit *lineEditphone=new QLineEdit();
    QLineEdit *lineEditname=new QLineEdit();
    QLineEdit *lineEditadress=new QLineEdit();
    QLineEdit *lineEditsex=new QLineEdit();
    QLineEdit *lineEditquality=new QLineEdit();
    QLineEdit *lineEditclass=new QLineEdit();

    //按钮
    QPushButton *pushButtonadd=new QPushButton("确认添加");

    //标签
    QLabel *qlabelid=new QLabel("编号");
    QLabel *qlabelphone=new QLabel("电话");
    QLabel *qlabelname=new QLabel("姓名");
    QLabel *qlabeladdress=new QLabel("地址");
    QLabel *qlabelsex=new QLabel("性别");
    QLabel *qlabelquality=new QLabel("综合素质");
    QLabel *qlabelclass=new QLabel("班级");



public:



    Widgetpo(){
        this->setWindowTitle("添加页面");
        //this->resize(400,600);
        this->setGeometry(70,300,400,600);
        qgridlayout2->setRowStretch(7,2);

        //字体
              QFont ft;
              ft.setPointSize(14);
        // 添加布局

        qgridlayout2->addWidget(lineEditid,0,1);
        qgridlayout2->addWidget(qlabelid,0,0);
        qlabelid->setFont(ft);
        qlabelid->setAlignment(Qt::AlignCenter);

        qgridlayout2->addWidget(lineEditname,1,1);
        qgridlayout2->addWidget(qlabelname,1,0);
        qlabelname->setFont(ft);
        qlabelname->setAlignment(Qt::AlignCenter);


        qgridlayout2->addWidget(lineEditsex,2,1);
        qgridlayout2->addWidget(qlabelsex,2,0);
        qlabelsex->setFont(ft);
        qlabelsex->setAlignment(Qt::AlignCenter);

        qgridlayout2->addWidget(lineEditclass,3,1);
        qgridlayout2->addWidget(qlabelclass,3,0);
        qlabelclass->setFont(ft);
        qlabelclass->setAlignment(Qt::AlignCenter);

        qgridlayout2->addWidget(lineEditphone,4,1);
        qgridlayout2->addWidget(qlabelphone,4,0);
        qlabelphone->setFont(ft);
        qlabelphone->setAlignment(Qt::AlignCenter);

        qgridlayout2->addWidget(lineEditquality,5,1);
        qgridlayout2->addWidget(qlabelquality,5,0);
        qlabelquality->setFont(ft);
        qlabelquality->setAlignment(Qt::AlignCenter);

        qgridlayout2->addWidget(lineEditadress,6,1);
        qgridlayout2->addWidget(qlabeladdress,6,0);
        qlabeladdress->setFont(ft);
        qlabeladdress->setAlignment(Qt::AlignCenter);
        //修改布局垂直间距
        qgridlayout2->setVerticalSpacing(30);
        //添加布局
        icon2.addFile(tr(":/back/images/add1.png"));
                // this->pushButtonadd->setFlat(true);
                 this->pushButtonadd->setIcon(icon2);
                 this->pushButtonadd->setIconSize(QSize(40,40));

        pushButtonadd->setFont(ft);

        vBoxLayout2->addLayout(qgridlayout2);
           vBoxLayout2->addLayout(hBoxLayout);

                hBoxLayout->addStretch();
                hBoxLayout->addWidget(pushButtonadd);
                hBoxLayout->addStretch();
        this->setLayout(vBoxLayout2);
                QImage _image;
                _image.load(":/back/images/red.jpg");
                setAutoFillBackground(true);   // 这个属性一定要设置
                QPalette pal(palette());
                pal.setBrush(QPalette::Window, QBrush(_image.scaled(size(), Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
                setPalette(pal);


        //发送信号
        connect(pushButtonadd,&QPushButton::pressed,this,&Widgetpo::addInfor);

    }
    //    void pepel(){

    //        peopleList->add(People((lineEditid->text()).toStdString(),(lineEditname->text()).toStdString(),(lineEditphone->text()).toStdString(),(lineEditsex->text()).toStdString(),(lineEditadress->text()).toStdString()));
    //    }


    //响应事件
    void addInfor(){

        peopleList->add(People((lineEditid->text()).toStdString(),(lineEditname->text()).toStdString(),(lineEditsex->text()).toStdString(),(lineEditclass->text()).toStdString(),(lineEditphone->text()).toStdString(),(lineEditquality->text()).toStdString(),(lineEditadress->text()).toStdString()));

        this->update();
        QMessageBox::information(NULL, "Title", "添加成功!");

    }

主要代码就是直接调用自己链表中的添加函数,完成对数据的添加。

学生信息查看修改页面

此页面可以按照学号特定的查看某个学生的信息,并且可以直接在输入框中修改。

private:

    QIcon icon3,icon4;
    //垂直布局
        QVBoxLayout *vBoxLayout2=new QVBoxLayout();
        QVBoxLayout *vBoxLayout3=new QVBoxLayout();
        //水平布局
        QHBoxLayout *hBoxLayout1=new QHBoxLayout();
        QHBoxLayout *hBoxLayout2=new QHBoxLayout();
    //网格布局
    QGridLayout *qgridlayout2=new QGridLayout();

    //输入框
    QLineEdit *qlineeditid=new QLineEdit();

    //显示
    QLineEdit *lineEditid=new QLineEdit();
    QLineEdit *lineEditphone=new QLineEdit();
    QLineEdit *lineEditname=new QLineEdit();
    QLineEdit *lineEditadress=new QLineEdit();
    QLineEdit *lineEditsex=new QLineEdit();
    QLineEdit *lineEditclass=new QLineEdit();
    QLineEdit *lineEditquality=new QLineEdit();

    //标签
    QLabel *qlabelid=new QLabel("编号");
    QLabel *qlabelphone=new QLabel("电话");
    QLabel *qlabelname=new QLabel("姓名");
    QLabel *qlabeladdress=new QLabel("地址");
    QLabel *qlabelsex=new QLabel("性别");
    QLabel *qlabelclass=new QLabel("班级");
    QLabel *qlabelquality=new QLabel("综合素质");


    QLabel *qlabelshu=new QLabel("输入查询ID");

    //按钮
    QPushButton *pushButtonadd=new QPushButton("查找");

    QPushButton *pushButtonfix=new QPushButton("修改");



public:



    Widget3(){
        this->setWindowTitle("查找修改页面");
this->setGeometry(70,300,400,600);
        //this->resize(400,600);
        qgridlayout2->setRowStretch(8,2);
        //字体
               QFont ft;
               ft.setPointSize(14);
        // 添加布局

        hBoxLayout1->addWidget(qlabelshu);
        hBoxLayout1->addWidget(qlineeditid);
        qlabelshu->setContentsMargins(0, 0, 0, 0);
        lineEditid->setContentsMargins(0, 0, 0, 0);
        qlabelshu->setFont(ft);
        hBoxLayout1->addWidget(pushButtonadd);

             //名字
              qgridlayout2->addWidget(lineEditname,2,1);
              qgridlayout2->addWidget(qlabelname,2,0);
              qlabelname->setFont(ft);
              qlabelname->setAlignment(Qt::AlignCenter);

              //性别
              qgridlayout2->addWidget(lineEditsex,3,1);
              qgridlayout2->addWidget(qlabelsex,3,0);
              qlabelsex->setFont(ft);
              qlabelsex->setAlignment(Qt::AlignCenter);

              //学号
              qgridlayout2->addWidget(lineEditid,4,1);
              qgridlayout2->addWidget(qlabelid,4,0);
              qlabelid->setFont(ft);
              qlabelid->setAlignment(Qt::AlignCenter);

              //班级
              qgridlayout2->addWidget(lineEditclass,5,1);
              qgridlayout2->addWidget(qlabelclass,5,0);
              qlabelclass->setFont(ft);
              qlabelclass->setAlignment(Qt::AlignCenter);

              //综合素质
              qgridlayout2->addWidget(lineEditquality,6,1);
              qgridlayout2->addWidget(qlabelquality,6,0);
              qlabelquality->setFont(ft);
              qlabelquality->setAlignment(Qt::AlignCenter);

              //地址
              qgridlayout2->addWidget(lineEditadress,7,1);
              qgridlayout2->addWidget(qlabeladdress,7,0);
              qlabeladdress->setFont(ft);
              qlabeladdress->setAlignment(Qt::AlignCenter);

              //电话
              qgridlayout2->addWidget(lineEditphone,8,1);
              qgridlayout2->addWidget(qlabelphone,8,0);
              qlabelphone->setFont(ft);
              qlabelphone->setAlignment(Qt::AlignCenter);

        //图片按钮
        icon3.addFile(tr(":/back/images/serch.png"));
                 this->pushButtonadd->setFlat(true);
                 this->pushButtonadd->setIcon(icon3);
                 this->pushButtonadd->setIconSize(QSize(40,40));
        pushButtonadd->setFont(ft);
        icon4.addFile(tr(":/back/images/sx.png"));
                // this->pushButtonfix->setFlat(true);
                 this->pushButtonfix->setIcon(icon4);
                 this->pushButtonfix->setIconSize(QSize(40,40));
        pushButtonfix->setFont(ft);



        //添加布局
        hBoxLayout2->addStretch();
        hBoxLayout2->addWidget(pushButtonfix);
        hBoxLayout2->addStretch();
        vBoxLayout2->addStretch();
              vBoxLayout2->addLayout(qgridlayout2);
              vBoxLayout2->addStretch();
              vBoxLayout2->addLayout(hBoxLayout2);
              vBoxLayout2->addStretch();
              vBoxLayout3->addLayout(hBoxLayout1);
              vBoxLayout3->addLayout(vBoxLayout2);
              vBoxLayout3->setStretchFactor(hBoxLayout1, 1);
              vBoxLayout3->setStretchFactor(vBoxLayout2, 3);
              this->setLayout(vBoxLayout3);
              //背景
              QImage _image;
              _image.load(":/back/images/qing.jpg");
              setAutoFillBackground(true);   // 这个属性一定要设置
              QPalette pal(palette());
              pal.setBrush(QPalette::Window, QBrush(_image.scaled(size(), Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
              setPalette(pal);


        connect(pushButtonadd,&QPushButton::pressed,this,&Widget3::findid);
        connect(pushButtonfix,&QPushButton::pressed,this,&Widget3::fixid);

    }

    void findids(){
        peopleList->returnIterator();
        while(peopleList->hasNext()){

            People people =peopleList->next();
            if((qlineeditid->text()).toStdString()==people.id){
                lineEditname->setText(QString::fromStdString(people.name));
                lineEditadress->setText(QString::fromStdString(people.address));
                lineEditid->setText(QString::fromStdString(people.id));
                lineEditsex->setText(QString::fromStdString(people.sex));
                lineEditphone->setText(QString::fromStdString(people.phone));
                lineEditclass->setText(QString::fromStdString(people.classstu));
                lineEditquality->setText(QString::fromStdString(people.quality));

            }



        }
    }

    void fixid(){
        peopleList->returnIterator();
        while(peopleList->hasNext()){

            People people =peopleList->next();
            if((qlineeditid->text()).toStdString()==people.id){
                people.sex = (lineEditsex->text()).toStdString();
                people.name = (lineEditname->text()).toStdString();
                people.address = (lineEditadress->text()).toStdString();
                people.id = (lineEditid->text()).toStdString();
                people.phone = (lineEditphone->text()).toStdString();
                people.classstu = (lineEditclass->text()).toStdString();
                people.quality = (lineEditquality->text()).toStdString();


                peopleList->update(peopleList->returnindex(),people);





            }



        }
    }

    void findid(){

        findids();
    }

学生信息列表

本窗口是显示学生信息,方便快速查看的界面。

private:

    //图片
    QIcon icon1;
    //垂直布局
    QVBoxLayout *vBoxLayout=new QVBoxLayout();
    QVBoxLayout *peopleBoxLayout=new QVBoxLayout();

    //新增联系人
    QPushButton *pushButtonnew=new QPushButton("刷新");

    //调色板
    QPalette pa;
    //子界面
    QLayoutItem *childss;


public:

    showinfo(){

        //背景
        //字体
              QFont ft;
              ft.setPointSize(14);
       // this->resize(400,600);
        this->setGeometry(70,300,400,600);



        peopleList->returnIterator();

        //上色
        pa.setColor(QPalette::Background,Qt::white);
        pa.setColor(QPalette::WindowText,Qt::black);

        while(peopleList->hasNext()){

            People people =peopleList->next();

            //标签
            QLabel *ql;


            //显示

            peopleBoxLayout->addWidget(ql=new QLabel(QString::fromStdString(people.name+"  "+people.sex+"  "+people.quality+"  "+people.phone)));
            ql->setPalette(pa);
            ql->setStyleSheet("QLabel{background-color:rgb(255,255,255);}");
            this->vBoxLayout->addLayout(peopleBoxLayout);

        }
        peopleList->returnIterator();
        //增加新增按钮

        icon1.addFile(tr(":/back/images/sx.png"));
                 this->pushButtonnew->setFlat(true);
                 this->pushButtonnew->setIcon(icon1);
                 this->pushButtonnew->setIconSize(QSize(40,40));
        pushButtonnew->setFont(ft);
        this->vBoxLayout->addWidget(pushButtonnew);

        //增加新增按钮

        connect(pushButtonnew,&QPushButton::pressed,this,&showinfo::pressnew);

        //添加布局到窗口
        this->setLayout(vBoxLayout);
        QImage _image;
        _image.load(":/back/images/green.jpg");
        setAutoFillBackground(true);   // 这个属性一定要设置
        QPalette pal(palette());
        pal.setBrush(QPalette::Window, QBrush(_image.scaled(size(), Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));
        setPalette(pal);

    }


    //布局初始化
    void newlayout(){
        peopleList->returnIterator();


        while(peopleList->hasNext()){


            People people =peopleList->next();

            //标签
            QLabel *ql;


            //显示

            peopleBoxLayout->addWidget(ql=new QLabel(QString::fromStdString(people.name+"  "+people.sex+"  "+people.quality+"  "+people.phone)));
            ql->setPalette(pa);
            ql->setStyleSheet("QLabel{background-color:rgb(255,255,255);}");
            this->vBoxLayout->addLayout(peopleBoxLayout);

        }
    }




    void pressnew(){

        while ((childss = peopleBoxLayout->takeAt(0)) != 0)
        {
            //setParent为NULL,防止删除之后界面不消失
            if(childss->widget())
            {
                childss->widget()->setParent(NULL);
            }

            delete childss;
        }

        newlayout();
    }

这里要注意数据的刷新,每一次都要从新在链表中读取学生信息。

最后就是定义实体
class People{
public:
    //学号
    std::string id;
    //名字
    std::string name;
    //电话
    std::string phone;
    //性别
    std::string sex;
    //地址
    std::string address;
    //综合素质
    std::string quality;
    //班级
    std::string classstu;


    //默认构造方法
    People(){}

    //有参数构造方法
    People(std::string id,std::string name,std::string sex,std::string classstu, std::string phone,std::string quality,
           std::string address){
        this->id=id;
        this->name=name;
        this->phone=phone;
        this->sex=sex;
        this->address=address;
        this->classstu=classstu;
        this->quality=quality;

    }
};

LinkedList<People> *peopleList=new LinkedList<People>;

在文件的最开头定义学生的相关信息,并创建学生信息链表。在这里可以添加或者删除一些属性。

以上就是对整个系统的代码。感谢您的阅读。

  • 5
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
学生信息管理系统是一种用于管理学生信息的软件,利用Qt和SQLite数据库可以很方便地编写出一个简易的学生信息管理系统。 首先,我们需要创建一个Qt项目,并引入SQLite数据库的支持。在Qt Creator中,可以通过点击“文件”菜单,然后选择“新建文件或项目”来创建一个新的Qt项目。在项目创建向导中选择适当的项目类型和目标平台,然后在项目中的.pro文件中添加以下语句来引入SQLite库: ``` QT += sql ``` 接下来,我们需要设计学生信息的数据库表结构。一般来说,学生信息包括学号、姓名、性别、年龄等字段。我们可以使用Qt的QSqlDatabase类来连接数据库,并通过QSqlQuery类来执行SQL语句进行数据库操作。 在主窗口界面中,可以设计一个表格控件用于显示学生信息,通过SQL查询语句从数据库中读取学生信息并显示在表格中。同时,可以设计添加、修改和删除学生信息的功能按钮,并在对应的按钮点击事件中执行相应的SQL语句来实现对数据库的增删改操作。 另外,可以设计一个搜索框来实现根据学号或姓名等关键字进行学生信息的模糊查询。 对于学生信息的保存和加载,可以使用SQLite数据库的文件功能来实现。通过QSqlDatabase类的静态函数addDatabase()来进行数据库的连接,并指定数据库文件的路径。 在编写完业务逻辑之后,要记得在程序退出的时候,调用QSqlDatabase类的静态函数removeDatabase()来关闭数据库连接,以避免内存泄漏。 综上所述,利用Qt和SQLite数据库编写一个简易的学生信息管理系统可以通过设计数据库表结构、使用QSqlDatabase和QSqlQuery类进行数据库操作,以及设计主窗口界面来显示和操作学生信息。通过合理的设计和代码实现,可以使得学生信息管理系统更加方便、高效和易用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值