QT 票据打印系统

做~自己de王妃 提交于 2019-12-16 02:01:16

#include "charge.h"
#include "ui_charge.h"
#include<QMenuBar>
#include <QMainWindow>
#include<QWidget>
#include <QPrintDialog>
#include <QPrinter>
#include <QPainter>
#include <QStackedWidget>
#include <QSqlQuery>
#include<QMessageBox>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlError>
#include <QVariantList>
#include <QSqlTableModel>
#include<QDebug>
#include <QFile>
#include <QPdfWriter>
#include <QFileDialog>
#include <QSqlRecord>
#include<QProcess>
#include<iostream>
#include <fstream>
#include <windows.h>
#include<QInputDialog>
#include <QFileDevice>

Charge::Charge(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Charge)
{
    ui->setupUi(this);
    QFile file("C:/Users/14771/Documents/A-0/main.qss");
       file.open(QFile::ReadOnly);
       QTextStream filetext(&file);
       QString stylesheet = filetext.readAll();
       this->setStyleSheet(stylesheet);
      file.close();
    connect(ui->actionNew,&QAction::triggered,[=] (){
    });
    //连接数据库
    primkey = 1;
    createConnection();

        //下拉选项框可编辑
        ui->comboBox->setEditable(true);
        ui->comboBox_pay->setEditable(true);
        ui->comboBox_classSum->setEditable(true);
        ui->comboBox_students->setEditable(true);
        ui->comboBox_receiver1->setEditable(true);;
        ui->comboBox_receiver2->setEditable(true);
        ui->comboBox_className_1->setEditable(true);
        ui->comboBox_className_2->setEditable(true);;
        ui->comboBox_className_3->setEditable(true);
        ui->comboBox_className_4->setEditable(true);
        ui->comboBox_className_7->setEditable(true);
        ui->comboBox_className_8->setEditable(true);
        ui->comboBox_className_9->setEditable(true);
        ui->comboBox_className_12->setEditable(true);
        ui->comboBox_className_14->setEditable(true);
        ui->comboBox_className_15->setEditable(true);


        //在tableview中创建一个model
        model = new QSqlTableModel(ui->tableView_search);
        ui->tableView_search->setModel(model);//绑定
        model->setTable("user_information");
        //添加列
        model->setHeaderData(0,Qt::Horizontal,"报名时间");

        model->setHeaderData(1,Qt::Horizontal,"票据编号");

        model->setHeaderData(2,Qt::Horizontal,"姓名");

        model->setHeaderData(3,Qt::Horizontal,"性别");

        model->setHeaderData(4,Qt::Horizontal,"电话");

        model->setHeaderData(5,Qt::Horizontal,"学生类型");

        model->setHeaderData(6,Qt::Horizontal,"课程名称");

        model->setHeaderData(7,Qt::Horizontal,"金额");

        model->setHeaderData(8,Qt::Horizontal,"收款单位");

        model->setHeaderData(9,Qt::Horizontal,"付款方式");

        model->setHeaderData(10,Qt::Horizontal,"收款人");

        model->setHeaderData(11,Qt::Horizontal,"课程总数");

        model->setHeaderData(12,Qt::Horizontal,"次序");

        model->select();

        //设置表格的单元为只读属性,即不能编辑
//        ui->tableView_search->setEditTriggers(QAbstractItemView::NoEditTriggers);
//        ui->tableView_search->setSelectionBehavior(QAbstractItemView::SelectRows);//设置选中模式为选中行
        model->setEditStrategy(QSqlTableModel::OnManualSubmit);
//备份数据库

}

void Charge::createConnection(){
    db = QSqlDatabase::addDatabase("QSQLITE");
   //设置数据库
   db.setDatabaseName("C:/sqlite/education.db");
   //打开数据库
   if( !db.open() ) //数据库打开失败
   {
       QMessageBox::warning(this, "erro", db.lastError().text());
       return;
   }
}
bool Charge::backupDB(){//数据库备份
    QString sourceFileName = QDir::currentPath()+"/temp/ICEMS.db";

        //创建备份文件夹
       QDir dir(QDir::currentPath()+"/backup");
       if(!dir.exists()){
           dir.mkdir(QDir::currentPath()+"/backup");
       }
        //检查源数据库文件是否存在
       bool isExist = QFile::exists(QDir::currentPath()+"/temp/ICEMS.db");
       if(!isExist){
            QMessageBox::about(this,QString::fromLocal8Bit("备份数据库"),
                               QString::fromLocal8Bit("备份失败,源数据库文件不存在!"));
            return false;
       }
       else
       {
                //获取当前时间
               QDateTime current_date_time = QDateTime::currentDateTime();
               QString date = current_date_time.toString("yyyy-MM-dd hh-mm-ss");
                //重构当前备份目录及文件名,加入时间字段
               QString destFileName = QDir::currentPath()+"/backup/"+ QString("ICMES_backup%1.db").arg(date);

                //info = QFileInfo(destFileName);
                // destFileName = info.fileName();
               //调用备份命令copy
               if(QFile::copy(sourceFileName,destFileName))
               {
                   return true ;
               }
               else
               {
                   return false ;
               }
        }
}
void Charge::receiveLogin(){
    this->show();
}

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

void Charge::on_settings_button_clicked()
{

    emit showSettings();
}

void Charge::on_pushButton_clicked()//清空按钮cliked;
{
    ui->dateTimeEdit1->clear();
    ui->lineEdit_No->clear();
    ui->lineEdit_name->clear();
    ui->comboBox->clearEditText();
    ui->lineEdit_phoneNumber->clear();
    ui->comboBox_students->clearEditText();
    ui->comboBox_classSum->clearEditText();
    ui->comboBox_className_8->clear();
    ui->lineEdit_pay1_2->clear();
    ui->lineEdit_receive1_8->clear();
    ui->lineEdit_sum->clear();
    ui->lineEdit_sum_Big->clear();
    ui->comboBox_className_9->clearEditText();
    ui->lineEdit_receive1_3->clear();
    ui->lineEdit_pay1_3->clear();
    ui->comboBox_className_7->clearEditText();
    ui->lineEdit_receive2_2->clear();
    ui->lineEdit_pay2_2->clear();
    ui->lineEdit_sum_3->clear();
    ui->lineEdit_sum_Big_3->clear();
    ui->comboBox_className_15->clearEditText();
    ui->lineEdit_receive1_5->clear();
    ui->lineEdit_pay1_5->clear();
    ui->comboBox_className_14->clearEditText();
    ui->lineEdit_receive2_4->clear();
    ui->lineEdit_pay2_4->clear();
    ui->comboBox_className_12->clearEditText();
    ui->lineEdit_receive3_3->clear();
    ui->lineEdit_pay3_3->clear();
    ui->lineEdit_sum_4->clear();
    ui->lineEdit_sum_Big_4->clear();
    ui->comboBox_className_1->clearEditText();
    ui->lineEdit_receive4->clear();
    ui->lineEdit_pay1->clear();
    ui->lineEdit_pay4->clear();
    ui->comboBox_className_4->clearEditText();
    ui->lineEdit_pay2->clear();
    ui->lineEdit_receive1->clear();
    ui->lineEdit_receive2->clear();
    ui->comboBox_className_2->clearEditText();
    ui->lineEdit_pay3->clear();
    ui->comboBox_className_3->clear();
    ui->lineEdit_receive3->clear();
    ui->lineEdit_sum_5->clear();
    ui->lineEdit_sum_Big_5->clear();
    ui->comboBox_receiver1->clearEditText();
    ui->comboBox_pay->clearEditText();
    ui->comboBox_receiver2->clearEditText();
    ui->lineEdit_signal->clear();
    ui->lineEdit_name_2->clear();
    ui->lineEdit_phone->clear();
    ui->dateTimeEdit->clear();
    ui->lineEdit_sum_Big->clear();
    ui->lineEdit_sum->clear();
    ui->comboBox_receiver1->clearEditText();
    ui->comboBox_pay->clearEditText();
    ui->comboBox_receiver2->clearEditText();
    ui->lineEdit_signal->clear();

}
void Charge::receiveCharge3(){
    Charge::on_pushButton_save_clicked();
}

void Charge::on_pushButton_save_clicked()
{


    QString s1 =ui->dateTimeEdit1->text();//报名时间s1
    QString s2 =ui->lineEdit_No->text();//票据编号2
    QString s3 =ui->lineEdit_name->text();//姓名3
    QString s4 =ui->comboBox->currentText();//性别4
    QString s5 =ui->lineEdit_phoneNumber->text();//电话5
    QString s6 =ui->comboBox_students->currentText();//学生类型6
    int     s7 =ui->comboBox_classSum->currentIndex();//课程数目7
    QString s54 =ui->comboBox_receiver1->currentText();//收款单位54
    QString s55 =ui->comboBox_pay->currentText();//收款方式55
    QString s56 =ui->comboBox_receiver2->currentText();//收款人56

    //page1
    QString s8 =ui->comboBox_className_8->currentText();
    QString s12 =ui->lineEdit_sum->text();

   //page2
    QString s13 =ui->comboBox_className_9->currentText();
    QString s16 =ui->lineEdit_receive1_3->text();
    QString s17 =ui->lineEdit_pay1_3->text();
    QString s18 =ui->comboBox_className_7->currentText();
    QString s20 =ui->lineEdit_receive2_2->text();
    QString s21 =ui->lineEdit_pay2_2->text();
    QString s22 =ui->lineEdit_sum_3->text();

   //page3
    QString s23 =ui->comboBox_className_15->currentText();
    QString s25 =ui->lineEdit_receive1_5->text();
    QString s26 =ui->lineEdit_pay1_5->text();
    QString s27 =ui->comboBox_className_14->currentText();
    QString s29 =ui->lineEdit_receive2_4->text();
    QString s30 =ui->lineEdit_pay2_4->text();
    QString s31 =ui->comboBox_className_12->currentText();
    QString s33 =ui->lineEdit_receive3_3->text();
    QString s34 =ui->lineEdit_pay3_3->text();
    QString s35 =ui->lineEdit_sum_4->text();
    //page4
    QString s36 =ui->comboBox_className_1->currentText();
    QString s38 =ui->lineEdit_receive1->text();
    QString s39 =ui->lineEdit_pay1->text();
    QString s40 =ui->comboBox_className_2->currentText();
    QString s42 =ui->lineEdit_receive2->text();
    QString s43 =ui->lineEdit_pay2->text();
    QString s44 =ui->comboBox_className_3->currentText();
    QString s46 =ui->lineEdit_receive3->text();
    QString s47 =ui->dateTimeEdit1->text();
    QString s48 =ui->lineEdit_pay3->text();
    QString s49 =ui->comboBox_className_4->currentText();
    QString s51 =ui->lineEdit_receive4->text();
    QString s52 =ui->lineEdit_pay4->text();
    QString s53 =ui->lineEdit_sum_5->text();

    QSqlQuery sql_query;
    QVariantList date,No,name,sexual,phonenumber,studenttype,classname,money,payee1,payment,payee2,classsum,prim;
    QString insert_sql =  "INSERT INTO  user_information VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,?)";
        //没有设定prime key
    s7 += 1;

    if(s7 ==1){

        sql_query.prepare(insert_sql); 
        sql_query.addBindValue(s1);
        sql_query.addBindValue(s2);
        sql_query.addBindValue(s3);
        sql_query.addBindValue(s4);
        sql_query.addBindValue(s5);
        sql_query.addBindValue(s6);


        sql_query.addBindValue(s8);//classname
        sql_query.addBindValue(s12);//总金额
        sql_query.addBindValue(s54);//收款单位
        sql_query.addBindValue(s55);//收款方式
        sql_query.addBindValue(s56);//收款人
        sql_query.addBindValue(s7);
        sql_query.addBindValue(primkey);
        primkey++;
       sql_query.exec();


    }
    else if (s7==2) {


        date<<s1<<s1;
        No <<s2<<s2;
        name<<s3<<s3;
        sexual<<s4<<s4;
        phonenumber <<s5<<s5;
        studenttype<<s6<<s6;
        classname<<s13<<s18;
        money <<s16<<s20;
        payee1<<s54<<s54;
        payment<<s55<<s55;
        payee2 <<s56<<s56;
        classsum<<s7<<s7;
        prim<<primkey<<primkey+1;
        sql_query.prepare(insert_sql);
        sql_query.addBindValue(date);
        sql_query.addBindValue(No);
        sql_query.addBindValue(name);
        sql_query.addBindValue(sexual);
        sql_query.addBindValue(phonenumber);
        sql_query.addBindValue(studenttype);
        sql_query.addBindValue(classname);
        sql_query.addBindValue(money);//金额
        sql_query.addBindValue(payee1);
        sql_query.addBindValue(payment);
        sql_query.addBindValue(payee2);
        sql_query.addBindValue(classsum);
        sql_query.addBindValue(prim);

        if(!sql_query.execBatch())
        {
            qDebug()<<sql_query.lastError();
        }
        else {
            primkey += 2;
        }

    }

    else if (s7==3) {

        date<<s1<<s1<<s1;
        No <<s2<<s2<<s2;
        name<<s3<<s3<<s3;
        sexual<<s4<<s4<<s4;
        phonenumber <<s5<<s5<<s5;
        studenttype<<s6<<s6<<s6;
        classname<<s23<<s27<<s31;
        money <<s25<<s29<<s33;
        payee1<<s54<<s54<<s54;
        payment<<s55<<s55<<s55;
        payee2 <<s56<<s56<<s56;
        classsum<<s7<<s7<<s7;
        prim<<primkey<<primkey+1<<primkey+2;

        sql_query.prepare(insert_sql);
        sql_query.addBindValue(date);
        sql_query.addBindValue(No);
        sql_query.addBindValue(name);
        sql_query.addBindValue(sexual);
        sql_query.addBindValue(phonenumber);
        sql_query.addBindValue(studenttype);
        sql_query.addBindValue(classname);
        sql_query.addBindValue(money);//金额
        sql_query.addBindValue(payee1);
        sql_query.addBindValue(payment);
        sql_query.addBindValue(payee2);
        sql_query.addBindValue(classsum);
        sql_query.addBindValue(prim);

        if(!sql_query.execBatch())
        {
            qDebug()<<sql_query.lastError();
        }
        else {
            primkey += 3;
        }

    }
    else if (s7==4) {
        date<<s1<<s1<<s1<<s1;
        No <<s2<<s2<<s2<<s2;
        name<<s3<<s3<<s3<<s3;
        sexual<<s4<<s4<<s4<<s4;
        phonenumber <<s5<<s5<<s5<<s5;
        studenttype<<s6<<s6<<s6<<s6;
        classname<<s36<<s40<<s44<<s49;
        money <<s38<<s42<<s46<<s51;
        payee1<<s54<<s54<<s54<<s54;
        payment<<s55<<s55<<s55<<s55;
        payee2 <<s56<<s56<<s56<<s56;
         classsum<<s7<<s7<<s7<<s7;
         prim<<primkey<<primkey+1<<primkey+2<<primkey+3;

        sql_query.prepare(insert_sql);
        sql_query.addBindValue(date);
        sql_query.addBindValue(No);
        sql_query.addBindValue(name);
        sql_query.addBindValue(sexual);
        sql_query.addBindValue(phonenumber);
        sql_query.addBindValue(studenttype);
        sql_query.addBindValue(classname);
        sql_query.addBindValue(money);//金额
        sql_query.addBindValue(payee1);
        sql_query.addBindValue(payment);
        sql_query.addBindValue(payee2);
        sql_query.addBindValue(classsum);
        sql_query.addBindValue(prim);

        if(!sql_query.execBatch())
        {
            qDebug()<<sql_query.lastError();
        }
        else {
            primkey += 4;

        }
    }

    else {
        qDebug()<<sql_query.lastError();
    }
}

const QString numToChinese(const double & Fnumber){


    if(qAbs(Fnumber)<0.01)   //保留2位小数时,近似看作零的情况
        return "零";
    QString numberSign;//存储符号

    QString number = QString::number(Fnumber,'f',2);//qAbs绝对值 ,保留两位小数
    QString Left_of_Point;//整数部分
    int length =number.length()-3;//整数部分的长度,(精确度为2,去除小数和小数点)
    if(length>12)
    {
        //qDebug()<<"输入的数值超过范围!"
        return "输入的数值超过范围!";
    }

    QStringList numerical_unit   =   {"","拾","佰","仟","万","拾", "佰", "仟", "亿", "拾", "佰", "仟"};
    QStringList numerical_value  =   {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};

    //数数整数低位多少个连零
    int counter_0=0;
    for(int i =length-1;i>=0;i--)
    {
        if((number[i].toLatin1()-'0' )==0) //从个位开始,向高位走
               counter_0++;
           else
               break;

       }
       if(length==1 && counter_0==1) //0.x
           counter_0=0; //不进行过滤

       //1400  0.2

       for(int i=0,flag=1;i<length-counter_0;i++)
       {
            //5     8       1    2   3
            //伍 拾 捌       壹佰 贰拾 叁
           if((number[i].toLatin1()-'0')==0)
           {
               if((flag!=0 && (length-1-i)%4 != 0) || length ==1) //flag!=0  表示前一个数值 不为0
               Left_of_Point+="零"; //后面不用添加 单位
               if((length-1-i)%4 == 0) //如果0处于分段处,后面需添加单位
               Left_of_Point+=numerical_unit[length-1-i];//添加数值单位

               flag =0; //标记

           }
           else
           {
            flag =1;
            Left_of_Point+=numerical_value[number[i].toLatin1()-'0']; //'5'-'0'==5
            Left_of_Point+=numerical_unit[length-1-i];//添加数值单位

           }
       }
        //QString Right_of_Point;//小数点右侧,小数部分(保留两位)  xxxx.yy
        int totalLength = number.length();
        if(number[totalLength-2]=='0'&&number[totalLength-1]=='0')
        {
            QString Bigcn=numberSign+Left_of_Point+"圆";
            return Bigcn;
        }
        else if(number[totalLength-2]!='0'&&number[totalLength-1]=='0')
        {
            QString Bigcn=numberSign+Left_of_Point+"点"+numerical_value[number[totalLength-2].toLatin1()-'0']+"圆";
            return Bigcn;
        }
        else
        {
            QString Bigcn=numberSign+Left_of_Point+"点"+numerical_value[number[totalLength-2].toLatin1()-'0']+numerical_value[number[totalLength-1].toLatin1()-'0']+"吨";
            return Bigcn;
        }


//        return "异常情况";

}

void Charge::on_comboBox_classSum_activated(int index)
{
    index = ui->comboBox_classSum->currentIndex();//根据课程数目的不同,不同的票据内容
    ui->stackedWidget->setCurrentIndex(index);//stackwidget根据下拉框的选项显示不同的界面

}

void Charge::on_pushButton_sum1_clicked()
{
    QString sum;
    double sumint;
    sum = ui->lineEdit_receive1_8->text();
    sumint = sum.toDouble();
    //自动生成总金额
    sum = QString::number(sumint, 10,2);

    ui->lineEdit_sum->setText(sum);

    //自动生成大写金额
    sum =numToChinese( sumint);
    ui->lineEdit_sum_Big->setText(sum);

}

void Charge::on_pushButton_sum2_clicked()
{
    QString sum;
    double sumint;
    sum = ui->lineEdit_receive1_3->text();
    sumint = sum.toDouble();
    sum = ui->lineEdit_receive2_2->text();
    sumint += sum.toDouble();
    sum = QString::number(sumint, 10,2);

    ui->lineEdit_sum_3->setText(sum);

    //自动生成大写金额
    sum =numToChinese( sumint);
    ui->lineEdit_sum_Big_3->setText(sum);

}

void Charge::on_pushButton_sum3_clicked()
{
    QString sum;
    double sumint;
    sum = ui->lineEdit_receive1_5->text();
    sumint = sum.toDouble();
    sum = ui->lineEdit_receive2_4->text();
    sumint += sum.toDouble();
    sum = ui->lineEdit_receive3_3->text();
    sumint += sum.toDouble();
    //自动生成总金额
    sum = QString::number(sumint, 10,2);

    ui->lineEdit_sum_4->setText(sum);

    //自动生成大写金额
    sum =numToChinese( sumint);
    ui->lineEdit_sum_Big_4->setText(sum);
}

void Charge::on_pushButton_sum4_clicked()
{
    QString sum;
    double sumint;
    sum = ui->lineEdit_receive1->text();
    sumint = sum.toDouble();
    sum = ui->lineEdit_receive2->text();
    sumint += sum.toDouble();
    sum = ui->lineEdit_receive3->text();
    sumint += sum.toDouble();
    sum = ui->lineEdit_receive4->text();
    sumint += sum.toDouble();
    //自动生成总金额
    sum = QString::number(sumint, 10,2);

    ui->lineEdit_sum_5->setText(sum);

    //自动生成大写金额
    sum =numToChinese( sumint);
    ui->lineEdit_sum_Big_5->setText(sum);
}


void Charge::on_btnPreview_clicked()
{
        emit Save();


//        QDialog *printCofig = new QDialog(this);
//        printCofig->setGeometry(200,300,300,150);

//         printCofig->setWindowTitle("打印选项");
//         QLabel * text = new QLabel(printCofig);
//             text->setText("打印纸张大小");
//             text->setGeometry(20,20,100,40);
//             text->show();
//         QComboBox * combobox = new QComboBox(printCofig);
//             QStringList s ;
//             s<<"A4"<<"B5";
//             combobox->addItems(s);
//             combobox->setGeometry(20,200,100,40);
//             combobox->show();


//             // 按钮
//         QPushButton * pBtn = new QPushButton(printCofig);
//         QRect rc(200,200,100,40);
//         pBtn->setGeometry(rc);     // 设置按钮位置
//         pBtn->setText("确定"); // 设置按钮文字
//         pBtn->show();
//         printCofig->exec();
//         if(combobox->currentText()=="A4") flag=1;
//         else if (combobox->currentText() =="B5")  flag =2;

        QString fileName = QFileDialog::getSaveFileName(this, tr("保存PDF文件"), QString(), "*.pdf");
        if (!fileName.isEmpty())
        {
            // 如果文件后缀为空,则默认使用.pdf
            if (QFileInfo(fileName).suffix().isEmpty())
            {
                fileName.append(".pdf");
            }
            QPrinter printerPixmap(QPrinter::HighResolution);
            if(flag==1)
                printerPixmap.setPageSize(QPrinter::A4);
            else if(flag ==2)
                printerPixmap.setPageSize(QPrinter::B5);
            //横向打印
            printerPixmap.setOrientation(QPrinter::Landscape);
            //设置输出格式为pdf
            printerPixmap.setOutputFormat(QPrinter::PdfFormat);
            //设置输出路径
            printerPixmap.setOutputFileName(fileName);
            QString filepath = QFileInfo(fileName).absolutePath();//获取当前路径
            QString s1 =ui->dateTimeEdit1->text();//报名时间s1
            QString s2 =ui->lineEdit_No->text();//票据编号2
            QString s3 =ui->lineEdit_name->text();//姓名3
            QString s4 =ui->comboBox->currentText();//性别4
            QString s5 =ui->lineEdit_phoneNumber->text();//电话5
            QString s6 =ui->comboBox_students->currentText();//学生类型6
            int     s7 =ui->comboBox_classSum->currentIndex();//课程数目7
            QString s54 =ui->comboBox_receiver1->currentText();//收款单位54
            QString s55 =ui->comboBox_pay->currentText();//收款方式55
            QString s56 =ui->comboBox_receiver2->currentText();//收款人56

            //page1
            QString s8 =ui->comboBox_className_8->currentText();
            QString s10 =ui->lineEdit_receive1_8->text();
            QString s11 =ui-> lineEdit_pay1_2->text();
            QString s12 =ui->lineEdit_sum->text();
            QString s57 =ui->lineEdit_sum_Big->text();

           //page2
            QString s13 =ui->comboBox_className_9->currentText();
            QString s16 =ui->lineEdit_receive1_3->text();
            QString s17 =ui->lineEdit_pay1_3->text();
            QString s18 =ui->comboBox_className_7->currentText();
            QString s20 =ui->lineEdit_receive2_2->text();
            QString s21 =ui->lineEdit_pay2_2->text();
            QString s22 =ui->lineEdit_sum_3->text();
            QString s58 =ui->lineEdit_sum_Big_3->text();

           //page3
            QString s23 =ui->comboBox_className_15->currentText();
            QString s25 =ui->lineEdit_receive1_5->text();
            QString s26 =ui->lineEdit_pay1_5->text();
            QString s27 =ui->comboBox_className_14->currentText();
            QString s29 =ui->lineEdit_receive2_4->text();
            QString s30 =ui->lineEdit_pay2_4->text();
            QString s31 =ui->comboBox_className_12->currentText();
            QString s33 =ui->lineEdit_receive3_3->text();
            QString s34 =ui->lineEdit_pay3_3->text();
            QString s35 =ui->lineEdit_sum_4->text();
            QString s59 =ui->lineEdit_sum_Big_4->text();


            //page4
            QString s36 =ui->comboBox_className_1->currentText();
            QString s38 =ui->lineEdit_receive1->text();
            QString s39 =ui->lineEdit_pay1->text();
            QString s40 =ui->comboBox_className_2->currentText();
            QString s42 =ui->lineEdit_receive2->text();
            QString s43 =ui->lineEdit_pay2->text();
            QString s44 =ui->comboBox_className_3->currentText();
            QString s46 =ui->lineEdit_receive3->text();

            QString s48 =ui->lineEdit_pay3->text();
            QString s49 =ui->comboBox_className_4->currentText();
            QString s51 =ui->lineEdit_receive4->text();
            QString s52 =ui->lineEdit_pay4->text();
            QString s53 =ui->lineEdit_sum_5->text();
            QString s60 =ui->lineEdit_sum_Big_5->text();
//            QString fileName = "E:/a.pdf";
            QFile pdfFile(fileName);
            pdfFile.open(QIODevice::WriteOnly);                 // 打开要写入的pdf文件
            QPdfWriter* pPdfWriter = new QPdfWriter(&pdfFile);  // 创建pdf写入器
            pPdfWriter->setPageSize(QPagedPaintDevice::A4);     // 设置纸张为A4
            pPdfWriter->setResolution(300);                     // 设置纸张的分辨率为300,因此其像素为3508X2479

            int iMargin = 60; // 页边距
            pPdfWriter->setPageMargins(QMarginsF(iMargin, iMargin, iMargin, iMargin));

            QPainter* pPdfPainter = new QPainter(pPdfWriter);   // qt绘制工具

            QTextOption option(Qt::AlignHCenter | Qt::AlignVCenter);  // 标题,居中
            option.setWrapMode(QTextOption::WordWrap);

            // 标题上边留白
            int iTop = 10;

            // 文本宽度2100
            int iContentWidth = 2100;

            // 标题,16号字
            QFont font;
            font.setFamily("simhei.ttf");
            int fontSize =16 ;
            font.setPointSize(fontSize);
            pPdfPainter->setFont(font);  // 为绘制工具设置字体
            pPdfPainter->drawText(QRect(0, 30, iContentWidth, 80), tr("322程序媛培训资金结算票据"), option);
            fontSize =10 ;
            font.setPointSize(fontSize);
            pPdfPainter->setFont(font);
            option.setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
            iTop += 180;
            pPdfPainter->drawText(QRect(300, iTop, iContentWidth, 60), tr("报名时间:"));
            pPdfPainter->drawText(QRect(500, iTop, iContentWidth, 60), s1);
            pPdfPainter->drawText(QRect(1300, iTop, iContentWidth, 60), "No:");
            pPdfPainter->drawText(QRect(1500, iTop, iContentWidth, 60), s2);

            pPdfPainter->drawRect(100,260,2000,1050);
            pPdfPainter->drawLine(100,410,2100,410);

            fontSize = 10;
            font.setPointSize(fontSize);
            pPdfPainter->setFont(font);
            option.setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
            iTop += 140;
            pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), tr("姓名:"));
            pPdfPainter->drawText(QRect(300, iTop, iContentWidth, 60), s3);
            pPdfPainter->drawText(QRect(500, iTop, iContentWidth, 60), tr("性别:"));
            pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60), s4);
            pPdfPainter->drawText(QRect(800, iTop, iContentWidth, 60), tr("电话:"));
            pPdfPainter->drawText(QRect(900, iTop, iContentWidth, 60), s5);
            pPdfPainter->drawText(QRect(1250, iTop, iContentWidth, 60), tr("学生类型:"));
            pPdfPainter->drawText(QRect(1450, iTop, iContentWidth, 60), s6);
            pPdfPainter->drawText(QRect(1600, iTop, iContentWidth, 60), tr("课程数目:"));
            QString a;
            a =QString::number(s7,10,0);//QString::number(a,基底,精度)
            pPdfPainter->drawText(QRect(1810, iTop, iContentWidth, 60), a);
            iTop += 120;
            pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), tr("课程名称"));
            pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60), tr("课时"));
            pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), tr("应收"));
            pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), tr("实收"));

            pPdfPainter->drawText(QRect(200, 1000, iContentWidth, 60), tr("备注信息:"));

            iTop += 120;
            QString s9= "";
            if(s7==0){
                pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s8);
                pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
                pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s10);
                pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s11);

                iTop += 480;
                //填入内容

            }

            else if(s7 == 1){
                pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s13);
                pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
                pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s16);
                pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s17);
                iTop += 120;
                pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s18);
                pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
                pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s20);
                pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s21);
                iTop += 360;

            }
            else if(s7==2) {
                pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s23);
                pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9);
                pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s25);
                pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s26);
                iTop += 120;
                pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s27);
                pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
                pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s29);
                pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s30);
                iTop += 120;
                pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s31);
                pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
                pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s33);
                pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s34);
                iTop += 240;


            }
            else if(s7==3) {
                pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s36);
                pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
                pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s38);
                pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s39);
                iTop += 120;
                pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s40);
                pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9);
                pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s42);
                pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s43);
                iTop += 120;
                pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s44);
                pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
                pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s46);
                pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s48);
                iTop += 120;
                pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s49);
                pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
                pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s51);
                pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s52);
            }

            iTop += 120;
            pPdfPainter->drawLine(100,1120,2100,1120);
            pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), tr("合计金额:"));
            if(s7==0){
                pPdfPainter->drawText(QRect(400, iTop, iContentWidth, 60), s12);
                 pPdfPainter->drawText(QRect(900, iTop, iContentWidth, 60), tr("合计大写:"));
                pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), s57);
            }
            else if (s7 ==1) {
                pPdfPainter->drawText(QRect(400, iTop, iContentWidth, 60), s22);
                 pPdfPainter->drawText(QRect(900, iTop, iContentWidth, 60), tr("合计大写"));
                 pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), s58);
            }
            else if (s7 ==2) {
                pPdfPainter->drawText(QRect(400, iTop, iContentWidth, 60), s35);
                 pPdfPainter->drawText(QRect(900, iTop, iContentWidth, 60), tr("合计大写:"));
                 pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), s59);
            }
            else {
                pPdfPainter->drawText(QRect(400, iTop, iContentWidth, 60), s53);
                 pPdfPainter->drawText(QRect(900, iTop, iContentWidth, 60), tr("合计大写:"));
                 pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), s60);
            }

            pPdfPainter->drawLine(100,1220,2100,1220);
            iTop += 90;
            pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), tr("收款单位:"));
            pPdfPainter->drawText(QRect(400, iTop, iContentWidth, 60), s54);
            pPdfPainter->drawText(QRect(650, iTop, iContentWidth, 60), tr("收款方式:"));
            pPdfPainter->drawText(QRect(850, iTop, iContentWidth, 60), s55);
            pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), tr("收款人:"));
            pPdfPainter->drawText(QRect(1350, iTop, iContentWidth, 60), s56);
            pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), tr("缴费人签字:"));


            delete pPdfPainter;
            delete pPdfWriter;
            pdfFile.close();


        }


    }

void Charge::on_pushButton_search_clicked()
{
    model->select();
    QString name,phone,date,name1,phone1,date1;
    int user_exist =0;
    name  = ui->lineEdit_name_2->text();
    phone = ui->lineEdit_phone->text();
    date  = ui->dateTimeEdit->text();
    QSqlQuery query;
    query.exec("select * from user_information");
    while(query.next()){
        name1      =  query.value(2).toString();
        phone1     = query.value(4).toString();
        date1      = query.value(0).toString();
        //qDebug()<<classname<<classname1<<name<<name1<<phone<<phone1<<date<<date1;
        if( !QString::compare(name, name1)&&!QString::compare(phone,phone1))
        {
            model->setFilter(QObject::tr("name = '%1'").arg(name)); //根据姓名进行筛选
            model->select(); //显示结果
            user_exist =1;
            break;
        }


    }

        if (user_exist==0) {
            QMessageBox::about(nullptr, "提示", "账号或密码错误");
        }

}

void Charge::on_pushButton_showAll_clicked()//tableview 设置
{
    model->setTable("user_information");
    //添加列号

    model->select();

    model->setHeaderData(0,Qt::Horizontal,"报名时间");

    model->setHeaderData(1,Qt::Horizontal,"票据编号");

    model->setHeaderData(2,Qt::Horizontal,"姓名");

    model->setHeaderData(3,Qt::Horizontal,"性别");

    model->setHeaderData(4,Qt::Horizontal,"电话");

    model->setHeaderData(5,Qt::Horizontal,"学生类型");

    model->setHeaderData(6,Qt::Horizontal,"课程名称");

    model->setHeaderData(7,Qt::Horizontal,"金额");

    model->setHeaderData(8,Qt::Horizontal,"收款单位");

    model->setHeaderData(9,Qt::Horizontal,"付款方式");

    model->setHeaderData(10,Qt::Horizontal,"收款人");

    model->setHeaderData(11,Qt::Horizontal,"课程数目");

    model->setHeaderData(12,Qt::Horizontal,"订单码");
    ui->tableView_search->setEditTriggers(QAbstractItemView::NoEditTriggers);
    ui->tableView_search->setSelectionBehavior(QAbstractItemView::SelectRows);
}


void Charge::on_pushButton_7_clicked()//删除按钮
{
    int row = ui->tableView_search->currentIndex ().row ();
    model->removeRow(row);
    model->submitAll();
}

void Charge::on_tableView_search_clicked(const QModelIndex &index)//单击表格自动填充数据
{
    int curRow=ui->tableView_search->currentIndex().row();//选中行

    QAbstractItemModel *modessl = ui->tableView_search->model();

    QModelIndex indextemp = modessl->index(curRow,11);//课程总数
    QVariant datatemp = modessl->data(indextemp);
    int classnum = datatemp.toInt();
    //qDebug()<<classnum;
    indextemp = modessl->index(curRow,0);//报名时间
    datatemp = modessl->data(indextemp);
    QDateTime datatime = datatemp.toDateTime();
    QString date = datatemp.toString();
    ui->dateTimeEdit1->setDateTime(datatime);

    indextemp = modessl->index(curRow,1);//发票编号
    datatemp = modessl->data(indextemp);
    QString No =datatemp.toString();
    ui->lineEdit_No->setText(No);

    indextemp = modessl->index(curRow,2);//学生姓名
    datatemp = modessl->data(indextemp);
    QString stuname =datatemp.toString();
    ui->lineEdit_name->setText(stuname);

    indextemp = modessl->index(curRow,3);//性别
    datatemp = modessl->data(indextemp);
    QString sexual =datatemp.toString();
    ui->comboBox->setCurrentText(sexual);

    indextemp = modessl->index(curRow,4);//电话
    datatemp = modessl->data(indextemp);
    QString phone =datatemp.toString();
    ui->lineEdit_phoneNumber->setText(phone);

    indextemp = modessl->index(curRow,5);//学生类型
    datatemp = modessl->data(indextemp);
    QString stu =datatemp.toString();
    ui->comboBox_students->setCurrentText(stu);


    ui->comboBox_classSum->setCurrentIndex(classnum-1);//课程数目

    indextemp = modessl->index(curRow,8);//收款单位
    datatemp = modessl->data(indextemp);
    QString payee1 =datatemp.toString();
    ui->comboBox_receiver1->setCurrentText(payee1);

    indextemp = modessl->index(curRow,9);//付款方式
    datatemp = modessl->data(indextemp);
    QString pay =datatemp.toString();
    ui->comboBox_pay->setCurrentText(pay);


    indextemp = modessl->index(curRow,10);//收款人
    datatemp = modessl->data(indextemp);
    QString payee2 =datatemp.toString();
    ui->comboBox_receiver1->setCurrentText(payee2);

    if (classnum == 1)
    {   ui->stackedWidget->setCurrentIndex(0);
        //课程名称
        indextemp = modessl->index(curRow,6);
        datatemp = modessl->data(indextemp);
        QString classname =datatemp.toString();
        ui->comboBox_className_8->setCurrentText(classname);

        indextemp = modessl->index(curRow,7);//应收金额
        datatemp = modessl->data(indextemp);
        QString money =datatemp.toString();
        ui->lineEdit_receive1_8->setText(money);

        ui->lineEdit_pay1_2->setText(money);
        ui->lineEdit_sum->setText(money);//金额总数目

        QString sum =numToChinese( classnum);
        ui->lineEdit_sum_Big->setText(sum);//大写
    }
    else if (classnum ==2) {
        ui->stackedWidget->setCurrentIndex(1);
        QSqlQuery query;
        QString money;
        double money2=0;
        double money3=0;
        double money1=0;
        QString name1,name2,phone1,phone2,date1,date2;
        QString SqlStr = QString("select * from user_information where name ='%1'and date = '%2'").arg(stuname).arg(date);
        query.exec(SqlStr);

                if (query.next()) {
                    name1      =  query.value(2).toString();
                    phone1     = query.value(4).toString();
                    date1      = query.value(0).toString();
                    int curRow=ui->tableView_search->currentIndex().row();
                    //qDebug()<<curRow<<"current row";
                    indextemp = modessl->index(curRow,6);
                    datatemp = modessl->data(indextemp);
                    QString classname =datatemp.toString();
                    ui->comboBox_className_9->setCurrentText(classname);
                    //qDebug()<<classname<<"1";

                    indextemp = modessl->index(curRow,7);
                    datatemp = modessl->data(indextemp);
                    money =datatemp.toString();
                    money1 = datatemp.toDouble();
                    //qDebug()<<money1<<"money1";
                    ui->lineEdit_receive1_3->setText(money);
                        if(query.next())
                        {
                            query.next();
                             //qDebug()<<curRow<<"current row";
                            indextemp = modessl->index(curRow+1,6);
                            datatemp = modessl->data(indextemp);
                            QString classname1 =datatemp.toString();
                            if (classname1=="")
                                curRow -=1;
                            else {
                                curRow += 1;
                            }
                            indextemp = modessl->index(curRow,6);
                            datatemp = modessl->data(indextemp);
                            classname1 =datatemp.toString();
                            ui->comboBox_className_7->setCurrentText(classname1);

                            indextemp = modessl->index(curRow,7);
                            datatemp = modessl->data(indextemp);
                            QString money =datatemp.toString();

                            ui->lineEdit_receive2_2->setText(money);
                            money2 = datatemp.toDouble();
                            //qDebug()<<money2<<"money2";
                        }
                }
                QString mon1= ui->lineEdit_receive1_3->text();//qDebug()<<mon1<<"1";
                double mon11 =mon1.toDouble();
                //qDebug()<<mon11<<"1";
                QString mon2= ui->lineEdit_receive2_2->text();//qDebug()<<mon2<<"1";
                double mon22 =mon2.toDouble();
                    money3 = mon11+mon22;
                    money = QString::number(money3,10,2);

                    ui->lineEdit_sum_3->setText(money);

                    QString sum =numToChinese( money3);
                    ui->lineEdit_sum_Big_3->setText(sum);
    }//classnum ==2
    else if (classnum ==3) {
        ui->stackedWidget->setCurrentIndex(2);
        QSqlQuery query;
        QString money;
        double money1=0;
        QString name1,name2,phone1,phone2,date1,date2;
        QString SqlStr = QString("select * from user_information where name ='%1'and date = '%2'").arg(stuname).arg(date);
        query.exec(SqlStr);

                if (query.next()) {
                    int curRow=ui->tableView_search->currentIndex().row();
                    //qDebug()<<curRow<<"current row";
                    indextemp = modessl->index(curRow,6);
                    datatemp = modessl->data(indextemp);
                    QString classname =datatemp.toString();
                    ui->comboBox_className_15->setCurrentText(classname);
                    //qDebug()<<classname<<"1";

                    indextemp = modessl->index(curRow,7);
                    datatemp = modessl->data(indextemp);
                    money =datatemp.toString();
                    money1 = datatemp.toDouble();
                    //qDebug()<<money1<<"money1";
                    ui->lineEdit_receive1_5->setText(money);
                        if(query.next())
                        {
                            query.next();
                            //qDebug()<<curRow<<"current row";
                            indextemp = modessl->index(curRow+1,6);
                            datatemp = modessl->data(indextemp);
                            QString classname1 =datatemp.toString();
                            if (classname1=="")
                              {  curRow -=1;
                            indextemp = modessl->index(curRow,6);
                            datatemp = modessl->data(indextemp);
                            classname1 =datatemp.toString();
                            ui->comboBox_className_14->setCurrentText(classname1);

                            indextemp = modessl->index(curRow,7);
                            datatemp = modessl->data(indextemp);
                            QString money =datatemp.toString();
                            ui->lineEdit_receive2_4->setText(money);

                            indextemp = modessl->index(curRow-1,6);
                            datatemp = modessl->data(indextemp);
                            classname1 =datatemp.toString();
                            ui->comboBox_className_12->setCurrentText(classname1);

                            indextemp = modessl->index(curRow-1,7);
                            datatemp = modessl->data(indextemp);
                            money =datatemp.toString();
                            ui->lineEdit_receive3_3->setText(money);
                            }
                            else {
                                query.next();
                               // qDebug()<<curRow<<"current row";
                                indextemp = modessl->index(curRow+2,6);
                                datatemp = modessl->data(indextemp);
                                QString classname1 =datatemp.toString();
                                if(classname1=="")
                                {
                                    indextemp = modessl->index(curRow+1,6);
                                    datatemp = modessl->data(indextemp);
                                    classname1 =datatemp.toString();
                                    ui->comboBox_className_14->setCurrentText(classname1);

                                    indextemp = modessl->index(curRow+1,7);
                                    datatemp = modessl->data(indextemp);
                                    QString money =datatemp.toString();
                                    ui->lineEdit_receive2_4->setText(money);

                                    indextemp = modessl->index(curRow-1,6);
                                    datatemp = modessl->data(indextemp);
                                    classname1 =datatemp.toString();
                                    ui->comboBox_className_12->setCurrentText(classname1);

                                    indextemp = modessl->index(curRow-1,7);
                                    datatemp = modessl->data(indextemp);
                                    money =datatemp.toString();
                                    ui->lineEdit_receive3_3->setText(money);
                                }
                                else {
                                    indextemp = modessl->index(curRow+1,6);
                                    datatemp = modessl->data(indextemp);
                                    classname1 =datatemp.toString();
                                    ui->comboBox_className_14->setCurrentText(classname1);

                                    indextemp = modessl->index(curRow+1,7);
                                    datatemp = modessl->data(indextemp);
                                    QString money =datatemp.toString();
                                    ui->lineEdit_receive2_4->setText(money);


                                    indextemp = modessl->index(curRow+2,6);
                                    datatemp = modessl->data(indextemp);
                                    classname1 =datatemp.toString();
                                    ui->comboBox_className_12->setCurrentText(classname1);

                                    indextemp = modessl->index(curRow+2,7);
                                    datatemp = modessl->data(indextemp);
                                    money =datatemp.toString();
                                    ui->lineEdit_receive3_3->setText(money);

                                }
                            }
                        }
                }
                    QString mon1= ui->lineEdit_receive1_5->text();//qDebug()<<mon1<<"1";
                    double mon11 =mon1.toDouble();
                    //qDebug()<<mon11<<"1";
                    QString mon2= ui->lineEdit_receive2_4->text();//qDebug()<<mon2<<"1";
                    double mon22 =mon2.toDouble();
                    // qDebug()<<mon22<<"2";
                    QString mon3= ui->lineEdit_receive3_3->text();//qDebug()<<mon3<<"1";
                    double mon33 =mon3.toDouble();
                    // qDebug()<<mon33<<"3";
                    double moneyy = mon11+mon22+mon33;
                    // qDebug()<<moneyy<<"4";
                    money = QString::number(moneyy,10,2);
                    ui->lineEdit_sum_4->setText(money);

                    QString sum =numToChinese( moneyy);
                    ui->lineEdit_sum_Big_4->setText(sum);
        }
        else if (classnum ==4) {
        ui->stackedWidget->setCurrentIndex(3);
        QSqlQuery query;
        QString money;
        double money1=0;
        QString name1,name2,phone1,phone2,date1,date2;
        QString SqlStr = QString("select * from user_information where name ='%1'and date = '%2'").arg(stuname).arg(date);
        query.exec(SqlStr);

                if (query.next()) {
                    name1      =  query.value(2).toString();
                    phone1     = query.value(4).toString();
                    date1      = query.value(0).toString();
                    int curRow=ui->tableView_search->currentIndex().row();
                    //qDebug()<<curRow<<"current row";
                    indextemp = modessl->index(curRow,6);
                    datatemp = modessl->data(indextemp);
                    QString classname =datatemp.toString();
                    ui->comboBox_className_1->setCurrentText(classname);
                    //qDebug()<<classname<<"1";

                    indextemp = modessl->index(curRow,7);
                    datatemp = modessl->data(indextemp);
                    money =datatemp.toString();
                    money1 = datatemp.toDouble();
                    //qDebug()<<money1<<"money1";
                    ui->lineEdit_receive1->setText(money);
                        if(query.next())
                        {
                            query.next();
                            //qDebug()<<curRow<<"current row";
                            indextemp = modessl->index(curRow+1,6);
                            datatemp = modessl->data(indextemp);
                            QString classname1 =datatemp.toString();
                            if (classname1=="")//点击最后一行
                              {
                                curRow -=1;
                                //第三行
                                indextemp = modessl->index(curRow,6);
                                datatemp = modessl->data(indextemp);
                                classname1 =datatemp.toString();
                                ui->comboBox_className_3->setCurrentText(classname1);

                                indextemp = modessl->index(curRow,7);
                                datatemp = modessl->data(indextemp);
                                QString money =datatemp.toString();
                                ui->lineEdit_receive3->setText(money);
                                //第二行
                                indextemp = modessl->index(curRow-1,6);
                                datatemp = modessl->data(indextemp);
                                classname1 =datatemp.toString();
                                ui->comboBox_className_2->setCurrentText(classname1);

                                indextemp = modessl->index(curRow-1,7);
                                datatemp = modessl->data(indextemp);
                                money =datatemp.toString();
                                ui->lineEdit_receive2->setText(money);
                               // 第一行
                                indextemp = modessl->index(curRow-2,6);
                                datatemp = modessl->data(indextemp);
                                classname1 =datatemp.toString();
                                ui->comboBox_className_4->setCurrentText(classname1);

                                indextemp = modessl->index(curRow-2,7);
                                datatemp = modessl->data(indextemp);
                                money =datatemp.toString();
                                ui->lineEdit_receive4->setText(money);
                            }
                            else {
                                query.next();
                                //qDebug()<<curRow<<"current row";
                                indextemp = modessl->index(curRow+2,6);
                                datatemp = modessl->data(indextemp);
                                QString classname1 =datatemp.toString();
                                if(classname1=="")//点击第三行
                                {
                                    //第四行数据
                                    indextemp = modessl->index(curRow+1,6);
                                    datatemp = modessl->data(indextemp);
                                    classname1 =datatemp.toString();
                                    ui->comboBox_className_4->setCurrentText(classname1);

                                    indextemp = modessl->index(curRow+1,7);
                                    datatemp = modessl->data(indextemp);
                                    QString money =datatemp.toString();
                                    ui->lineEdit_receive4->setText(money);
                                    //第二行数据
                                    indextemp = modessl->index(curRow-1,6);
                                    datatemp = modessl->data(indextemp);
                                    classname1 =datatemp.toString();
                                    ui->comboBox_className_3->setCurrentText(classname1);

                                    indextemp = modessl->index(curRow-1,7);
                                    datatemp = modessl->data(indextemp);
                                    money =datatemp.toString();
                                    ui->lineEdit_receive3->setText(money);
                                    //第一行数据
                                    indextemp = modessl->index(curRow-2,6);
                                    datatemp = modessl->data(indextemp);
                                    classname1 =datatemp.toString();
                                    ui->comboBox_className_2->setCurrentText(classname1);

                                    indextemp = modessl->index(curRow-2,7);
                                    datatemp = modessl->data(indextemp);
                                    money =datatemp.toString();
                                    ui->lineEdit_receive2->setText(money);
                                }
                                else {

                                    query.next();
                                    //qDebug()<<curRow<<"current row";
                                    indextemp = modessl->index(curRow+3,6);
                                    datatemp = modessl->data(indextemp);
                                    QString classname1 =datatemp.toString();
                                    if(classname1==""){//点击的是第二行
                                        //第三行
                                        indextemp = modessl->index(curRow+1,6);
                                        datatemp = modessl->data(indextemp);
                                        classname1 =datatemp.toString();
                                        ui->comboBox_className_4->setCurrentText(classname1);

                                        indextemp = modessl->index(curRow+1,7);
                                        datatemp = modessl->data(indextemp);
                                        QString money =datatemp.toString();
                                        ui->lineEdit_receive4->setText(money);

                                        //第四行
                                        indextemp = modessl->index(curRow+2,6);
                                        datatemp = modessl->data(indextemp);
                                        classname1 =datatemp.toString();
                                        ui->comboBox_className_3->setCurrentText(classname1);

                                        indextemp = modessl->index(curRow+2,7);
                                        datatemp = modessl->data(indextemp);
                                        money =datatemp.toString();
                                        ui->lineEdit_receive3->setText(money);

                                        //第一行
                                        indextemp = modessl->index(curRow-1,6);
                                        datatemp = modessl->data(indextemp);
                                        classname1 =datatemp.toString();
                                        ui->comboBox_className_2->setCurrentText(classname1);

                                        indextemp = modessl->index(curRow-1,7);
                                        datatemp = modessl->data(indextemp);
                                        money =datatemp.toString();
                                        ui->lineEdit_receive2->setText(money);
                                        }
                                    else{//点击的是第一行
                                        //第二行
                                        indextemp = modessl->index(curRow+1,6);
                                        datatemp = modessl->data(indextemp);
                                        classname1 =datatemp.toString();
                                        ui->comboBox_className_4->setCurrentText(classname1);

                                        indextemp = modessl->index(curRow+1,7);
                                        datatemp = modessl->data(indextemp);
                                        QString money =datatemp.toString();
                                        ui->lineEdit_receive4->setText(money);

                                        //第三行
                                        indextemp = modessl->index(curRow+2,6);
                                        datatemp = modessl->data(indextemp);
                                        classname1 =datatemp.toString();
                                        ui->comboBox_className_3->setCurrentText(classname1);

                                        indextemp = modessl->index(curRow+2,7);
                                        datatemp = modessl->data(indextemp);
                                        money =datatemp.toString();
                                        ui->lineEdit_receive3->setText(money);

                                        //第四行
                                        indextemp = modessl->index(curRow+3,6);
                                        datatemp = modessl->data(indextemp);
                                        classname1 =datatemp.toString();
                                        ui->comboBox_className_2->setCurrentText(classname1);

                                        indextemp = modessl->index(curRow+3,7);
                                        datatemp = modessl->data(indextemp);
                                        money =datatemp.toString();
                                        ui->lineEdit_receive2->setText(money);
                                    }
                                }
                            }
                        }
                }
                    QString mon1= ui->lineEdit_receive1->text();
                    double mon11 =mon1.toDouble();
                     //qDebug()<<mon11<<"5";
                    QString mon2= ui->lineEdit_receive2->text();
                    double mon22 =mon2.toDouble(); //qDebug()<<mon22<<"6";
                    QString mon3= ui->lineEdit_receive3->text();
                    double mon33 =mon3.toDouble(); //qDebug()<<mon33<<"7";
                    QString mon4= ui->lineEdit_receive3->text();
                    double mon44 =mon4.toDouble(); //qDebug()<<mon44<<"8";
                    double moneyy = mon11+mon22+mon33+mon44;
                    money = QString::number(moneyy,10,2);
                    ui->lineEdit_sum_5->setText(money);

                    QString sum =numToChinese( moneyy);
                    ui->lineEdit_sum_Big_5->setText(sum);
    }
}

void Charge::on_pushButton_3_clicked()//导出数据库
{
    //获取创建的csv文件名

          QString fileName = QFileDialog::getSaveFileName(this, tr("Excel file"), qApp->applicationDirPath (), tr("Files (*.csv)"));

          if (fileName.isEmpty())

          return;

          //打开.csv文件

          QFile file(fileName);

          if(!file.open(QIODevice::WriteOnly | QIODevice::Text))

          {

              std::cerr << "Cannot open file for writing: "

                        << qPrintable(file.errorString()) << std::endl;

              return;

          }

          QTextStream out(&file);

          //获取数据
          QSqlQuery sql_query;
          QString select_sql = "select * from user_information";
          if(!sql_query.exec(select_sql))
          {
              qDebug()<<sql_query.lastError();
          }
          else
          {
              while(sql_query.next())
              {
                  QString s;
                   for(int i =0;i<12;i++){
                   s = sql_query.value(i).toString();
                   out <<s << ",";// 写入文件
                    }
                   out << "\n";
              }
          }
          QMessageBox::information(this, tr("导出数据成功"), tr("信息已保存在%1!").arg(fileName), tr("确定"));

          file.close();
}

void Charge::on_pushButton_2_clicked()//导入数据
{

     QString fileName = QFileDialog::getOpenFileName(this, tr("Excel file"), qApp->applicationDirPath (),

                                                tr("Files (*.csv)"));

     QFile file(fileName);

     if(!file.open(QIODevice::ReadOnly | QIODevice::Text))

     {

        std::cerr << "Cannot open file for reading: "

                  << qPrintable(file.errorString()) << std::endl;

        return;

     }

     QStringList list;
     QSqlQuery sql_query;

     list.clear();

     QTextStream in(&file);
     while(!in.atEnd())

     {


         QString fileLine = in.readLine();
         list = fileLine.split(",", QString::SkipEmptyParts);
         qDebug()<<"list"<<list;

          QString insert_sql =  "INSERT INTO  user_information VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,? ,? )";
                 sql_query.prepare(insert_sql);
                 QString s[13];
                 for(int i = 0;i<12;i++){
                     s[i]= list.at(i);
                     qDebug()<<s[i];
                 }
                 sql_query.addBindValue(list.at(0));
                  sql_query.addBindValue(list.at(1));
                  sql_query.addBindValue(list.at(2));
                  sql_query.addBindValue(list.at(3));
                  sql_query.addBindValue(list.at(4));
                  sql_query.addBindValue(list.at(5));
                  sql_query.addBindValue(list.at(6));
                  sql_query.addBindValue(list.at(7));//classname
                  sql_query.addBindValue(list.at(8));//总金额
                  sql_query.addBindValue(list.at(9));//收款单位
                  sql_query.addBindValue(list.at(10));//收款方式
                  sql_query.addBindValue(list.at(11));//收款人
                  sql_query.addBindValue("default");//主码

                  sql_query.exec();

        file.close();
}
}

void Charge::on_lineEdit_receive1_8_textChanged(const QString &arg1)
{
   ui->lineEdit_pay1_2->setText(arg1);
}

void Charge::on_lineEdit_receive1_3_textChanged(const QString &arg1)
{
    ui->lineEdit_pay1_3->setText(arg1);
}

void Charge::on_lineEdit_receive2_2_textChanged(const QString &arg1)
{
    ui->lineEdit_pay2_2->setText(arg1);
}

void Charge::on_lineEdit_receive1_5_textChanged(const QString &arg1)
{
    ui->lineEdit_pay1_5->setText(arg1);
}

void Charge::on_lineEdit_receive2_4_textChanged(const QString &arg1)
{
    ui->lineEdit_pay2_4->setText(arg1);
}

void Charge::on_lineEdit_receive3_3_textChanged(const QString &arg1)
{
    ui->lineEdit_pay3_3->setText(arg1);
}

void Charge::on_lineEdit_receive1_textChanged(const QString &arg1)
{
    ui->lineEdit_pay1->setText(arg1);
}

void Charge::on_lineEdit_receive2_textChanged(const QString &arg1)
{
    ui->lineEdit_pay2->setText(arg1);
}

void Charge::on_lineEdit_receive3_textChanged(const QString &arg1)
{
    ui->lineEdit_pay3->setText(arg1);
}

void Charge::on_lineEdit_receive4_textChanged(const QString &arg1)
{
    ui->lineEdit_pay4->setText(arg1);
}
 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!