InfoDialog::InfoDialog(QWidget *parent, int user_id, int num) :
    QDialog(parent),
    ui(new Ui::InfoDialog)
{
    ui->setupUi(this);
    setWindowTitle("我的借阅信息");

    currentUserId = user_id;
    num_can_borrow = num;

    model = new QSqlRelationalTableModel(ui->tableView);
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    model->setTable("borrowed_books");

    model->setRelation(model->fieldIndex("book_id"), QSqlRelation("books", "id", "title"));

    model->setHeaderData(model->fieldIndex("book_id"), Qt::Horizontal, tr("名称"));
    model->setHeaderData(model->fieldIndex("start_time"), Qt::Horizontal, tr("借阅起始时间"));
    model->setHeaderData(model->fieldIndex("end_time"), Qt::Horizontal, tr("借阅到期时间"));

    ui->tableView->setModel(model);
    ui->tableView->setColumnHidden(model->fieldIndex("id"), true);
    ui->tableView->setColumnHidden(model->fieldIndex("user_id"), true);
    ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
    ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);

    idHiddenWidget = new QLineEdit(this);
    idHiddenWidget->setVisible(false);

    QDataWidgetMapper *mapper = new QDataWidgetMapper(this);
    mapper->setModel(model);
    mapper->addMapping(idHiddenWidget, model->fieldIndex("id"));

    connect(ui->tableView->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)),
            mapper, SLOT(setCurrentModelIndex(QModelIndex)));

    model->setFilter("user_id='" + QString::number(currentUserId) + "'");
    model->select();

    connect(ui->getbackButton, SIGNAL(clicked()), this, SLOT(getback()));
    connect(ui->confirmButton, SIGNAL(clicked()), this, SLOT(confirm()));
}
Пример #2
0
void verifier(void* arg){
    int i;
    int size;
    int res;
    int queue_index =0 ;

    while(!die_flag){
        
        //Race of threads
        if(pthread_mutex_lock(&threadrace_lock) < 0){
            perror("threadrace_lock");
            exit(EXIT_FAILURE);
        }
        
        if(exit_status){
            if(pthread_mutex_unlock(&threadrace_lock) < 0){
                perror("threadrace_lock");
                exit(EXIT_FAILURE);
            }
            break;
        }
        // for(i = 0; i < MATRIX_SIZE; ++i){
        //     memset(matrixA[i], 0, sizeof(float)*40*40);
        //     memset(inversedA[i], 0, sizeof(float)*40*40);
        // }

        if(DEBUG)
            printf("thread: %u in critical section in verifier module \n", (unsigned int) pthread_self());
        // printf("size: %d\n", size);
        /*
            receive matrix  A and A^ from 
        */
        size = get_from_module1();
        
        ++queue_index;

        if(DEBUG)
            printf("queue index: %d\n", queue_index);

        /*  send A and A^ to multiplier    */    
        if(!exit_status){
           send_to_multiplier(size); 
           getback(size);
           res = isIden(size);

           if(res == 1){
               printf("This is an invertable matrix\n\n");
           }else if(res == -1){
                printf("This is NOT invertable\n\n");
           }
        }
        

        /*
            receive multiplied matrix and check whether unit matrix or not
        */    
            

        //Race of threads
        if(pthread_mutex_unlock(&threadrace_lock) < 0){
            perror("threadrace_unlock");
            exit(EXIT_FAILURE);
        }   

        // for(i = 0; i < MATRIX_SIZE; ++i){
        //     memset(matrixA[i], 0, sizeof(float)*40*40);
        //     memset(inversedA[i], 0, sizeof(float)*40*40);
        // }
        if(exit_status){
            break;
        }
    }  
    printf("d thread: %u out of critical section \n", (unsigned int) pthread_self());

}