关于微信账单分析报表程序

使用Qt编写的微信账单分析程序,包含注册、登录、数据导入和图表展示功能。通过对微信账单数据的处理,生成饼状图和柱形图进行消费分析。


                                                  关于微信账单分析报表程序
          摘要:学习了一个月左右的Qt,想实际编写一个小程序,偶然产生一个想法,根据记账APP,可以分析各类消费数据,但是微信账单不存在分析类功能,所以编写这样一个程序,套用了网上的一些模板代码,以及Qt自带典例,进行修改,本程序仍存在一些小问题,没有想到解决办法,待日后更深刻理解后,重新拾起再行修改。
          创作思路:
        1.编写界面框架:添加注册、登陆、忘记密码、退出等基础模块
        2.编写数据库模型框架:文档信息、注册人员信息表、所导入微信账单数据、以及数据修改查找功能
        3.加载数据图表功能:根据所导入数据,进行简单运算,绘制成图表,饼状图、以及柱形图

在加载数据的时候,通过读取文本文件,提取所需信息,从而创建表,插入数据以及对数据的处理

 

 

                                                                           主界面框架界面


      

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
//主界面
#include <QMainWindow>
#include <QCloseEvent>
#include <QSqlQuery>
namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
     static MainWindow* getIntance();
   // explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
     QString name;//注册者姓名
     QString passward;注册者密码
     QString identify;注册者编号
     QSqlQuery *query;

  //   void closeEvent(QCloseEvent *event);

private slots:
    void on_pushButton_clicked();//注册按键

    void on_pushButton_2_clicked();//登陆按键

    void on_pushButton_3_clicked();//忘记密码按键

    void on_pushButton_4_clicked();//退出按键

private:
    explicit MainWindow(QWidget *parent = 0);
    static MainWindow* MW;
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"register.h"
#include"logging.h"
#include <QInputDialog>
#include "mysql.h"
#include <QSqlQuery>
#include<QDebug>
#include "sqlmodel.h"

//主窗口
MainWindow * MainWindow::MW=NULL;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QFont labelFont,buttonFont;//设置字体
    labelFont.setFamily("华文行楷");
    ui->label->setFont(labelFont);
    buttonFont.setPointSize(18);
    buttonFont.setBold(true);
    ui->pushButton->setFont(buttonFont);
    ui->pushButton_2->setFont(buttonFont);
    ui->pushButton_3->setFont(buttonFont);
    ui->pushButton_4->setFont(buttonFont);
}


MainWindow *MainWindow::getIntance()
{
    if(MW == NULL)
    {
        MW = new MainWindow();
    }
    return MW;
}
MainWindow::~MainWindow()
{
    MySql* mysql = new MySql;
    mysql->deleteDatas();
    delete mysql;

    qDebug()<<"delete";
    delete ui;


}


void MainWindow::on_pushButton_clicked()//注册
{
      Register *reg = new Register(this);//弹出注册窗口
      reg->resize(390,300);
      reg->setWindowModality(Qt::WindowModal);
      reg->setWindowTitle("注册");
      reg->show();

}

void MainWindow::on_pushButton_2_clicked()//登陆
{
    logging *log = new logging(this);//弹出登陆窗口
    log->resize(300,190);
    log->setWindowModality(Qt::WindowModal);
    log->setWindowTitle("登陆");
    log->show();
}

void MainWindow::on_pushButton_3_clicked()//忘记密码
{
    bool ok;
    QInputDialog ecf;
    name = ecf.getText(this,tr("忘记密码"),tr("请输入用户名:"),QLineEdit::Normal,NULL,&ok);
    identify=ecf.getText(this,tr("忘记密码"),tr("请输入证件号:"),QLineEdit::Normal,NULL,&ok);
    MySql mysql;
    bool ret=mysql.forgetpassward(name,identify);
    if(!ret)
        {
            QMessageBox::information(this,tr("消息"),tr("消息不匹配!"),QMessageBox::Ok);
            return;
        }
    QMessageBox::information(this,tr("消息"),tr("请妥善保管您的密码:%1").arg(passward),QMessageBox::Ok);
    return;
}

void MainWindow::on_pushButton_4_clicked()//退出
{


   //这里是想退出的时候删除掉之前创建的表,却保证每一次都产生唯一的表,保证数据的唯一性
   //如果不删除表,会造成再登陆账户使用原来的表,新添加的数据会产生冲突
    MySql* mysql = new MySql;
    mysql->closedb();
    mysql->deleteDatas();
    mysql->deleteProcessTables(sqlmodel::minMonth,sqlmodel::maxMonth,sqlmodel::Months);
    delete mysql;

    query=new QSqlQuery;
    while(query->next()){
        static QString deletestrnumberall = QString("drop table MonthTradeTypeNumberall%1").arg(sqlmodel::Months);
        static QString deletestrAmountOfMoneyall = QString("drop table MonthTradeTypeAmountOfMoneyall%1").arg(sqlmodel::Months);
        static QString deletestrIncomeall = QString("drop table MonthIncomeall%1").arg(sqlmodel::Months);
        static QString deletestrSpendingall = QString("drop table MonthSpendingall%1").arg(sqlmodel::Months);

        query->exec(deletestrnumberall);
        query->exec(deletestrAmountOfMoneyall);
        query->exec(deletestrIncomeall);
        query->exec(deletestrSpendingall);
    }
    close();
}



                                                                                    注册界面

 

#ifndef REGISTER_H
#define REGISTER_H

#include <QMainWindow>
#include<QPushButton>
#include<QMessageBox>
#include"mysql.h"
#include <QProgressDialog>

//注册界面


namespace Ui {
class Register;
}

class Register : public QMainWindow
{
    Q_OBJECT

public:
    explicit Register(QWidget *parent = 0);
    ~Register();

private slots:
    void on_yesOrNoBox_clicked(QAbstractButton *button);//只有一组按钮

private:
    Ui::Register *ui;
};

#endif // REGISTER_H
#include "register.h"
#include "ui_register.h"

Register::Register(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Register)
{
    ui->setupUi(this);
    ui->passwd->setEchoMode(QLineEdit::Password);//设置为密码模式不可见
    ui->passwd2->setEchoMode(QLineEdit::Password);
}

Register::~Register()
{
    delete ui;
}


//检测是否为空,以及密码两行是否正确
void Register::on_yesOrNoBox_clicked(QAbstractButton *button)//注册
{
    if(ui->yesOrNoBox->button(QDialogButtonBox::Ok) == button)
    {
        if((ui->name->text() == "") || (ui->ID->text() == "") || (ui->passwd->text() == "") || (ui->passwd2->text() == ""))
        {
            QMessageBox::information(this, tr("警告"), tr("输入不能为空!!"), QMessageBox::Ok);
            return;
        }
        if(ui->passwd->text() != ui->passwd2->text())
        {
            QMessageBox::information(this, tr("警告"), tr("输入密码错误!!"), QMessageBox::Ok);
            return;
        }

        QString name = ui->name->text();
        QString ids = ui->ID->text();
        int id = ids.toInt();
        QString teacher = ui->passwd->text();

        QProgressDialog dialog(tr("正在注册"),tr("取消"), 0, 3000, this);
        dialog.setWindowTitle(tr("进度"));
        dialog.setWindowModality(Qt::WindowModal);
        dialog.show();
        for(int k = 0; k < 3000; k++)
        {
            dialog.setValue(k);
            QCoreApplication::processEvents();
            if(dialog.wasCanceled())
            {
                break;
            }
        }
        dialog.setValue(3000);



//检查用户信息表中是否存在,如存在不能注册,不存在可以正常注册
//并会弹出提示框
        MySql* mysql = new MySql;
        bool ret = mysql->initcourses(id,name,teacher);
        if(ret == false)
        {
            QMessageBox::information(this, tr("消息"), tr("用户已被注册!"), QMessageBox::Ok);
            this->close();
            return;
        }
        QMessageBox::information(this, tr("消息"), tr("注册成功!"), QMessageBox::Ok);
        this->close();
    }
    else if(ui->yesOrNoBox->button(QDialogButtonBox::Cancel) == button)
    {
        this->close();
        QProgressDialog dialog(tr("正在返回主界面"),tr("取消"), 0, 3000, this);
        dialog.setWindowTitle(tr("进度"));
        dialog.setWindowModality(Qt::WindowModal);
        dialog.show();
        for(int k = 0; k < 3000; k++)
        {
            dialog.setValue(k);
            QCoreApplication::processEvents();
            if(dialog.wasCanceled())
            {
                break;
            }
        }
        dialog.setValue(3000);
    }
}


                                                 登陆界面

 

#ifndef LOGGING_H
#define LOGGING_H
#include <QMainWindow>
#include <QPushButton>
#include <QMessageBox>
#include <QProgressDialog>
#include "mysql.h"


//登陆界面


#include <QAbstractButton>
namespace Ui {
class logging;
}

class logging : public QMainWindow
{
    Q_OBJECT

public:
    explicit logging(QWidget *parent = 0);
    ~logging();

private slots:
    void on_yesOrNoBox_clicked(QAbstractButton *button);


private:
    Ui::logging *ui;
};

#endif // LOGGING_H
#include "logging.h"
#include "ui_logging.h"
#include <QCompleter>
#include <QMessageBox>
#include"sqlmodel.h"
//登陆界面
logging::logging(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::logging)
{


//这里原本添加了一个自动补全功能,后来没有用上
    ui->setupUi(this);
    QStringList wordlist;
    wordlist<<"数学"<<"英语"<<"计算机";
    QCompleter *completer = new QCompleter(wordlist,this);
    completer->setCaseSensitivity(Qt::CaseInsensitive);
    ui->lineinput->setCompleter(completer);
    ui->passward->setEchoMode(QLineEdit::Password);  //密码方式显示文本
}

logging::~logging()
{
    delete ui;
}


//如果账号密码相同则可以登陆弹出数据模型界面
//如不匹配则返回上一个窗口
void logging::on_yesOrNoBox_clicked(QAbstractButton *button)
{
    if(ui->yesOrNoBox->button(QDialogButtonBox::Ok)==button)
        {
            if((ui->lineinput->text()=="")||(ui->passward->text()==""))
                {
                    QMessageBox::information(this,tr("警告"),tr("输入不能为空!"),QMessageBox::Ok);
                    return;
                }
            QString name= ui->lineinput->text();
            QString password=ui->passward->text();

            QProgressDialog dialog(tr("正在登录"),tr("取消"),0,3000,this);
            dialog.setWindowTitle(tr("进度"));
            dialog.setWindowModality(Qt::WindowModal);
            dialog.show();
            for(int k=0;k<3000;k++)
                {
                    dialog.setValue(k);
                    QCoreApplication::processEvents();
                    if(dialog.wasCanceled())
                        {
                            break;
                        }
                }
            dialog.setValue(3000);

            MySql *mysql=new MySql;
            bool ret=mysql->loguser(name,password);
            if(!ret)
                {
                    QMessageBox::information(this,tr("消息"),tr("帐号密码不匹配!"),QMessageBox::Ok);
                    this->close();
                  //  Mparent->show();   //回到上一个窗口
                    return;
                }
            QMessageBox::information(this,tr("消息"),tr("登录成功!"),QMessageBox::Ok);
            this->close();
            sqlmodel *sql=new sqlmodel(this);

//            sql->setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint);

            sql->show();
            return;
           }
    else if(ui->yesOrNoBox->button(QDialogButtonBox::Cancel)==button)
        {
            this->close();
            QProgressDialog dialog(tr("正在返回主界面"),tr("取消"),0,3000,this);
            dialog.setWindowTitle(tr("进度"));
            dialog.setWindowModality(Qt::WindowModal);
            dialog.show();
            for(int k=0;k<3000;k++)
                {
                    dialog.setValue(k);
                    QCoreApplication::processEvents();
                    if(dialog.wasCanceled())
                        {
                            break;
                        }
                }
            dialog.setValue(3000);
        }
}




这里忘记密码和退出就不介绍了,代码再mainWindow里面

下面介绍数据库的使用

#ifndef MYSQL_H
#define MYSQL_H
#include<QSqlTableModel>
#include <QSql>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlQuery>
#include <QMessageBox>
#include "mainwindow.h"
class QSqlTableModel;
class MySql
{
public:
    MySql();
    void initsql();//配置数据库
    bool loguser(QString name,QString passward);//检验账号密码
    void createtable();            //建用户信息密码表
    void createnewtable();         //创建数据表微信账单所包含的信息
    bool forgetpassward(QString name,QString identify);//忘记密码处理
    void dataProcessingTable(int minMonth,int maxMonth,int Months);//删除所有数据表
    void theDataProcess(int minMonth,int maxMonth,int Months);//数据计算

//bool inituser(int id,QString name,QString teacher);
bool initcourses(int id,QString name,QString teacher);//添加注册信息
void initdatas(int id,QString TradingHours ,QString TradeType ,QString CounterParty,QString Goods ,
                       QString IncomeAndExpenses ,QString Sum ,QString MethodOfPayment ,
                       QString TheCurrentState ,QString TransactionNumber,
                       QString GoodsNumber ,QString Note );//添加微信账单所包含的信息
void deleteDatas();//清除数据表(微信账单的所有数据)
//void deleteProcessTable(int months);
void deleteProcessTables(int minMonth,int maxMonth,int Months );//清除所产生的分析数据
void closedb();//关闭数据库



private:
    QSqlQuery *query;
    QSqlTableModel *model;
    QSqlDatabase db;

};

#endif // MYSQL_H
#include "mysql.h"
//数据库
MySql::MySql()
{

}

void MySql::initsql()
{

//由于Qt自带数据库驱动支持QSQLITE,所以选择这个数据库,基本连接方式,翻书参考教程
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setHostName("127.0.0.1");//本地主机
    db.setUserName("root");
    db.setPassword("123456");
    db.setDatabaseName("Stu.db");//数据库名称”Stu“

//数据库打开,则控制台输出"Database connected successfully!"否则弹出警告窗口

    if(db.open())
    {
        qDebug()<<"Database connected successfully!";

        return;
    }
    else
    {
        QMessageBox::critical(0,"Cannot open database","Unable to establish a database connection.",QMessageBox::Cancel);
    }

}

bool MySql::loguser(QString name,QString passward)
{

//检测账号密码是否正确
//运用查找语句以及数据表的数据对比,有的地方需要格式转换如toInt(),toString()需要什么种类的数据
//自行筛选转换
    bool check = false;
    query=new QSqlQuery;
    query->exec("select * from courses");

    while(query->next()){
        qDebug()<<query->value(0).toInt()<<query->value(1).toString()<<query->value(2).toString();
        if((name==query->value(1).toString())&&(passward==query->value(2).toString()))
        {
                  check =true;
        }
    }
    if(check==true){
        return true;
    }
    else
        return false;
}

void MySql::createtable()
{

    QSqlQuery query;

     //创建表,这张表用来储存用户信息
     // 创建courses表
    query.exec("create table courses (id int primary key, "
                       "name varchar, teacher varchar)");



}

void MySql::createnewtable()
{
    QSqlQuery query;
    //创建数据表datas
    //这张表用来储存从微信账单中读出的每一条数据,
  bool ret =    query.exec("create table datas (id int primary key, "
                       "TradingHours varchar, TradeType varchar,CounterParty varchar,Goods varchar,"
               "IncomeAndExpenses varchar,Sum varchar,MethodOfPayment varchar,"
               "TheCurrentState varchar,TransactionNumber varchar,"
               "GoodsNumber varchar,Note varchar)");
  qDebug()<<ret<<"datas";

}

bool MySql::forgetpassward(QString name, QString identify)
{

//这里是密码找回功能,如忘记密码,提供账号以及编号可获取密码
    bool check = false;
    query=new QSqlQuery;
    query->exec("select * from courses");
    QString ids = identify;
    int id = ids.toInt();

    while(query->next()){
        qDebug()<<query->value(0).toInt()<<query->value(1).toString()<<query->value(2).toString();
        if((name==query->value(1).toString())||(id==query->value(0).toInt()))
        {
                  check =true;
                  MainWindow *MW=MainWindow::getIntance();
                  MW->passward=query->value(2).toString();
        }
    }
    if(check==true){
        return true;
    }
    else
        return false;
}

void MySql::dataProcessingTable(int minMonth, int maxMonth, int Months)//创建数据处理表
{
    QSqlQuery query;
//这里是创建数据处理表,每一份微信账单可能有1-4个月份,因此根据月份不同自动识别创建表
//有类型数据表,类型价格表,收入价格表,支出价格表
//创建表都是重复过程代码量有些长,看第一个case(1)就好了
    switch(Months){
    case (1):{
       static QString strnumber1 = QString("create table MonthTradeTypeNumber%1(id int primary key,consumption int,"
                              "transfer int,other int,transferTheRefund int,"
                              "changeWithDraeal int,scanningQrCodeToPay int,"
                              "weChatLuckyMoney int,ChangeToPrepaidPhone int)").arg(minMonth);
       static QString strAmountOfMoney1 = QString("create table MonthTradeTypeAmountOfMoney%1(id int primary key,consumption double,"
                              "transfer double,other double,transferTheRefund double,"
                              "changeWithDraeal double,scanningQrCodeToPay double,"
                              "weChatLuckyMoney double,ChangeToPrepaidPhone double)").arg(minMonth);
       static QString strIncome1 = QString("create table MonthIncome%1(id int primary key,IncomeNumber double)").arg(minMonth);
       static QString strSpending1 = QString("create table MonthSpending%1(id int primary key,IncomeNumber double)").arg(minMonth);


    bool strn1 =    query.exec(strnumber1);
    bool stra1 =    query.exec(strAmountOfMoney1);
    bool stri1 =    query.exec(strIncome1);
    bool strs1 =    query.exec(strSpending1);
        qDebug()<<strn1<<stra1<<stri1<<strs1<<"成功创建四个处理数据表单";

    } break;
    case(2):{

        //总表
        static QString strnumberall = QString("create table MonthTradeTypeNumberall%1(id int primary key,consumption int,"
                               "transfer int,other int,transferTheRefund int,"
                               "changeWithDraeal int,scanningQrCodeToPay int,"
                               "weChatLuckyMoney int,ChangeToPrepaidPhone int)").arg(Months);
        static QString strAmountOfMoneyall = QString("create table MonthTradeTypeAmountOfMoneyall%1(id int primary key,consumption double,"
                               "transfer double,other double,transferTheRefund double,"
                               "changeWithDraeal double,scanningQrCodeToPay double,"
                               "weChatLuckyMoney double,ChangeToPrepaidPhone double)").arg(Months);
        static QString strIncomeall = QString("create table MonthIncomeall%1(id int primary key,IncomeNumber double)").arg(Months);
        static QString strSpendingall = QString("create table MonthSpendingall%1(id int primary key,IncomeNumber double)").arg(Months);




        //小月份
        static QString strnumber1 = QString("create table MonthTradeTypeNumber%1(id int primary key,consumption int,"
                               "transfer int,other int,transferTheRefund int,"
                               "changeWithDraeal int,scanningQrCodeToPay int,"
                               "weChatLuckyMoney int,ChangeToPrepaidPhone int)").arg(minMonth);
        static QString strAmountOfMoney1 = QString("create table MonthTradeTypeAmountOfMoney%1(id int primary key,consumption double,"
                               "transfer double,other double,transferTheRefund double,"
                               "changeWithDraeal double,scanningQrCodeToPay double,"
                               "weChatLuckyMoney double,ChangeToPrepaidPhone double)").arg(minMonth);
        static QString strIncome1 = QString("create table MonthIncome%1(id int primary key,IncomeNumber double)").arg(minMonth);
        static QString strSpending1 = QString("create table MonthSpending%1(id int primary key,IncomeNumber double)").arg(minMonth);



        //大月份
        static QString strnumber2 = QString("create table MonthTradeTypeNumber%1(id int primary key,consumption int,"
                               "transfer int,other int,transferTheRefund int,"
                               "changeWithDraeal int,scanningQrCodeToPay int,"
                               "weChatLuckyMoney int,ChangeToPrepaidPhone int)").arg(maxMonth);
        static QString strAmountOfMoney2 = QString("create table MonthTradeTypeAmountOfMoney%1(id int primary key,consumption double,"
                               "transfer double,other double,transferTheRefund double,"
                               "changeWithDraeal double,scanningQrCodeToPay double,"
                               "weChatLuckyMoney double,ChangeToPrepaidPhone double)").arg(maxMonth);
        static QString strIncome2 = QString("create table MonthIncome%1(id int primary key,IncomeNumber double)").arg(maxMonth);
        static QString strSpending2 = QString("create table MonthSpending%1(id int primary key,IncomeNumber double)").arg(maxMonth);

        query.exec(strnumberall);
        query.exec(strAmountOfMoneyall);
        query.exec(strIncomeall);
        query.exec(strSpendingall);




        query.exec(strnumber1);
        query.exec(strAmountOfMoney1);
        query.exec(strIncome1);
        query.exec(strSpending1);
        query.exec(strnumber2);
        query.exec(strAmountOfMoney2);
        query.exec(strIncome2);
        query.exec(strSpending2);

    }break;
    case(3):{

        //总表
        static QString strnumberall = QString("create table MonthTradeTypeNumberall%1(id int primary key,consumption int,"
                               "transfer int,other int,transferTheRefund int,"
                               "changeWithDraeal int,scanningQrCodeToPay int,"
                               "weChatLuckyMoney int,ChangeToPrepaidPhone int)").arg(Months);
        static QString strAmountOfMoneyall = QString("create table MonthTradeTypeAmountOfMoneyall%1(id int primary key,consumption double,"
                               "transfer double,other double,transferTheRefund double,"
                               "changeWithDraeal double,scanningQrCodeToPay double,"
                               "weChatLuckyMoney double,ChangeToPrepaidPhone double)").arg(Months);
        static QString strIncomeall = QString("create table MonthIncomeall%1(id int primary key,IncomeNumber double)").arg(Months);
        static QString strSpendingall = QString("create table MonthSpendingall%1(id int primary key,IncomeNumber double)").arg(Months);


        //小月份
        static QString strnumber1 = QString("create table MonthTradeTypeNumber%1(id int primary key,consumption int,"
                               "transfer int,other int,transferTheRefund int,"
                               "changeWithDraeal int,scanningQrCodeToPay int,"
                               "weChatLuckyMoney int,ChangeToPrepaidPhone int)").arg(minMonth);
        static QString strAmountOfMoney1 = QString("create table MonthTradeTypeAmountOfMoney%1(id int primary key,consumption double,"
                               "transfer double,other double,transferTheRefund double,"
                               "changeWithDraeal double,scanningQrCodeToPay double,"
                               "weChatLuckyMoney double,ChangeToPrepaidPhone double)").arg(minMonth);
        static QString strIncome1 = QString("create table MonthIncome%1(id int primary key,IncomeNumber double)").arg(minMonth);
        static QString strSpending1 = QString("create table MonthSpending%1(id int primary key,IncomeNumber double)").arg(minMonth);



        //中月份
        static QString strnumber2 = QString("create table MonthTradeTypeNumber%1(id int primary key,consumption int,"
                               "transfer int,other int,transferTheRefund int,"
                               "changeWithDraeal int,scanningQrCodeToPay int,"
                               "weChatLuckyMoney int,ChangeToPrepaidPhone int)").arg(minMonth+1);
        static QString strAmountOfMoney2 = QString("create table MonthTradeTypeAmountOfMoney%1(id int primary key,consumption double,"
                               "transfer double,other double,transferTheRefund double,"
                               "changeWithDraeal double,scanningQrCodeToPay double,"
                               "weChatLuckyMoney double,ChangeToPrepaidPhone double)").arg(minMonth+1);
        static QString strIncome2 = QString("create table MonthIncome%1(id int primary key,IncomeNumber double)").arg(minMonth+1);
        static QString strSpending2 = QString("create table MonthSpending%1(id int primary key,IncomeNumber double)").arg(minMonth+1);




        //大月份
        static QString strnumber3 = QString("create table MonthTradeTypeNumber%1(id int primary key,consumption int,"
                               "transfer int,other int,transferTheRefund int,"
                               "changeWithDraeal int,scanningQrCodeToPay int,"
                               "weChatLuckyMoney int,ChangeToPrepaidPhone int)").arg(maxMonth);
        static QString strAmountOfMoney3 = QString("create table MonthTradeTypeAmountOfMoney%1(id int primary key,consumption double,"
                               "transfer double,other double,transferTheRefund double,"
                               "changeWithDraeal double,scanningQrCodeToPay double,"
                               "weChatLuckyMoney double,ChangeToPrepaidPhone double)").arg(maxMonth);
        static QString strIncome3 = QString("create table MonthIncome%1(id int primary key,IncomeNumber double)").arg(maxMonth);
        static QString strSpending3 = QString("create table MonthSpending%1(id int primary key,IncomeNumber double)").arg(maxMonth);

        query.exec(strnumberall);
        query.exec(strAmountOfMoneyall);
        query.exec(strIncomeall);
        query.exec(strSpendingall);


        query.exec(strnumber1);
        query.exec(strAmountOfMoney1);
        query.exec(strIncome1);
        query.exec(strSpending1);
        query.exec(strnumber2);
        query.exec(strAmountOfMoney2);
        query.exec(strIncome2);
        query.exec(strSpending2);
        query.exec(strnumber3);
        query.exec(strAmountOfMoney3);
        query.exec(strIncome3);
        query.exec(strSpending3);



    } break;
    case(4):{



        //总表
        static QString strnumberall = QString("create table MonthTradeTypeNumberall%1(id int primary key,consumption int,"
                               "transfer int,other int,transferTheRefund int,"
                               "changeWithDraeal int,scanningQrCodeToPay int,"
                               "weChatLuckyMoney int,ChangeToPrepaidPhone int)").arg(Months);
        static QString strAmountOfMoneyall = QString("create table MonthTradeTypeAmountOfMoneyall%1(id int primary key,consumption double,"
                               "transfer double,other double,transferTheRefund double,"
                               "changeWithDraeal double,scanningQrCodeToPay double,"
                               "weChatLuckyMoney double,ChangeToPrepaidPhone double)").arg(Months);
        static QString strIncomeall = QString("create table MonthIncomeall%1(id int primary key,IncomeNumber double)").arg(Months);
        static QString strSpendingall = QString("create table MonthSpendingall%1(id int primary key,IncomeNumber double)").arg(Months);


        //小1月
        static QString strnumber1 = QString("create table MonthTradeTypeNumber%1(id int primary key,consumption int,"
                               "transfer int,other int,transferTheRefund int,"
                               "changeWithDraeal int,scanningQrCodeToPay int,"
                               "weChatLuckyMoney int,ChangeToPrepaidPhone int)").arg(minMonth);
        static QString strAmountOfMoney1 = QString("create table MonthTradeTypeAmountOfMoney%1(id int primary key,consumption double,"
                               "transfer double,other double,transferTheRefund double,"
                               "changeWithDraeal double,scanningQrCodeToPay double,"
                               "weChatLuckyMoney double,ChangeToPrepaidPhone double)").arg(minMonth);
        static QString strIncome1 = QString("create table MonthIncome%1(id int primary key,IncomeNumber double)").arg(minMonth);
        static QString strSpending1 = QString("create table MonthSpending%1(id int primary key,IncomeNumber double)").arg(minMonth);




        //小2月
        static QString strnumber2 = QString("create table MonthTradeTypeNumber%1(id int primary key,consumption int,"
                               "transfer int,other int,transferTheRefund int,"
                               "changeWithDraeal int,scanningQrCodeToPay int,"
                               "weChatLuckyMoney int,ChangeToPrepaidPhone int)").arg(minMonth+1);
        static QString strAmountOfMoney2 = QString("create table MonthTradeTypeAmountOfMoney%1(id int primary key,consumption double,"
                               "transfer double,other double,transferTheRefund double,"
                               "changeWithDraeal double,scanningQrCodeToPay double,"
                               "weChatLuckyMoney double,ChangeToPrepaidPhone double)").arg(minMonth+1);
        static QString strIncome2 = QString("create table MonthIncome%1(id int primary key,IncomeNumber double)").arg(minMonth+1);
        static QString strSpending2 = QString("create table MonthSpending%1(id int primary key,IncomeNumber double)").arg(minMonth+1);




        //大3月
        static QString strnumber3 = QString("create table MonthTradeTypeNumber%1(id int primary key,consumption int,"
                               "transfer int,other int,transferTheRefund int,"
                            
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值